android课程设计报告

android课程设计报告,第1张

概述      Android移动应用开发课程设计报告(2019—2020学年第Ⅰ学期) 电子词典系   别            信息与控制工程          专   业           计算机科学与技术         班   级          

 

 

 

 

 

 

AndroID移动应用开发

课程设计报告

(2019—2020学年 第Ⅰ学期)

 

电子词典

系    别            信息与控制工程           

专    业           计算机科学与技术          

班    级                1701                

姓    名               高兴                

指导教师                郭 丹                

 

 

 

 

 

 

 

 

 

 

 

 

目录

 

一、需求分析

1.1引言

1.1.1编写目的

1.1.2项目背景

1.2功能需求分析

1.2.1功能描述

1.3系统功能用例图

1.4系统开发及运行环境

二、功能设计

2.1系统详细设计

2.1.1进入界面

2.1.2主界面

2.1.3添加界面

2.1.4删除界面

2.2数据库

2.2.1表名

2.2.2表结构

2.2.3数据库的创建

     三、关键源代码

四、实际测试

     五、项目总结

一、需求分析

1.1引言

21世纪以来,科技发展势头迅猛,电子行业更可以说得上是日新月异。从各个方面来看,由于智能手机的普及,手机APP已然成为了电子行业中的领头羊。

1.1.1编写目的

词典对于人们学习知识,认识世界有着不可估量的价值,可以说是每一个人开启学习殿堂的第一扇门。但是传统的词典有着体积大,不便于携带的劣势,在如今飞速发展的现代社会,这显然并不会成为大多数人的最佳选择。于是电子词典手机APP就如雨后春笋般层出不穷,成为了词典这个大家族中不可或缺的一员。

1.1.2项目背景

比起传统词典,手机电子词典具备了便于携带、 *** 作简单、方便快捷等优点。如今市面上各大应用市场中的电子词典大多占用内存大,对手机的硬件配置要求也比较高,运行起来需要占用的资源较大。所以本项目意在开发出一款占用内存小,适用度较高,便于 *** 作,能被大部分用户所接受的手机APP软件。

本文详细介绍了开发软件所用到的的数据库的创建过程、开发软件的环境配置过程、以及细致地分析了整个软件的功能性与实用性。

本项目基于AndroID平台,使用了sqlite轻量级数据库实现了本地查询,单词本,单词释义等功能,研究方法和技术主要涉及AndroID *** 作系统应用层开发,经过反复测试,该项目现已研发完成。

1.2功能需求分析1.2.1功能描述

 1.2.1.1主要功能

通过开发前期对于各大手机软件应用市场进行市场调研,得到了一份基本功能数据汇总,确定了大部分电子词典软件都包含着的基本功能,也就是用户对于电子词典手机APP的主要需求。在仔细研究以及分析这些数据之后,以下是电子词典这个软件所需要基本的功能:

(1)检索功能,这个最核心的功能,实现了单词的查询 *** 作。

(2)添加功能,实现生词的添加。

(3)删除功能,实现错误输入单词的删除。

1.3.系统功能用例图

 

图1.3系统功能用例图

 

1.4系统开发及运行环境

开发环境:androID studio

运行环境:AndroID智能手机/模拟器

 

 

二、功能设计

2.1系统详细设计2.1.1进入界面

 

                                                                                                                                                        

 

 

 

 

图2.1.1 进入界面

2.1.2主界面

 

 

 

 

图2.1.2主界面

2.1.3添加界面

 

 

 

图2.1.3 添加界面

2.1.4删除界面

 

 

 

2.1.4删除界面

2.2数据库

2.2.1表名tb_dict

2.2.2表结构

 

2.2.3数据库的创建

package com.example;

import androID.content.Context;
import androID.database.sqlite.sqliteDatabase;
import androID.database.sqlite.sqliteOpenHelper;
import androID.util.Log;
import androIDx.annotation.Nullable;

public class DBOpenHelper extends sqliteOpenHelper {
    final String CREATE_table_sql="create table tb_dict(_ID integer primary key autoincrement,word,detail)";

    public DBOpenHelper(@Nullable Context context, @Nullable String name, @Nullable sqliteDatabase.CursorFactory factory, int version) {
        super(context, name, null, version);
    }

    @OverrIDe
    public voID onCreate(sqliteDatabase db) {
        db.execsql(CREATE_table_sql);
    }
    @OverrIDe
    public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {
        Log.i("词典","--版本更新"+oldVersion+"-->"+newVersion);
    }
}

 

 

 

三、关键源代码

3.1.1进入界面布局代码

<?xml version="1.0" enCoding="utf-8"?>
<androIDx.constraintlayout.Widget.ConstraintLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"
    xmlns:app="http://schemas.androID.com/apk/res-auto"
    xmlns:tools="http://schemas.androID.com/tools"
    androID:layout_wIDth="match_parent"
    androID:layout_height="match_parent"
    androID:background="@drawable/bg"
    tools:context=".LoadingActivity">

    <button
        androID:ID="@+ID/Loading"
        androID:layout_wIDth="150dp"
        androID:layout_height="79dp"
        androID:layout_marginBottom="92dp"
        androID:background="@drawable/shape"
        androID:text="进入"
        androID:textcolor="#FFFFFF"
        androID:textStyle="bold"
        androID:textSize="40dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        tools:ignore="MissingConstraints" />
</androIDx.constraintlayout.Widget.ConstraintLayout>

3.1.2进入界面activity代码

package com.example;

import androIDx.appcompat.app.AppCompatActivity;

import androID.content.Intent;
import androID.os.Bundle;
import androID.vIEw.VIEw;
import androID.Widget.button;
import androID.Widget.Toast;

public class LoadingActivity extends AppCompatActivity {

    @OverrIDe
    protected voID onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentVIEw(R.layout.activity_loading);
        button button=findVIEwByID(R.ID.Loading);
        button.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                Toast.makeText(LoadingActivity.this, "正在进入", Toast.LENGTH_SHORT).show();
                Intent intent=new Intent(LoadingActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

 

3.2.1主界面布局代码

<?xml version="1.0" enCoding="utf-8"?>
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"
    xmlns:app="http://schemas.androID.com/apk/res-auto"
    xmlns:tools="http://schemas.androID.com/tools"
    androID:layout_wIDth="match_parent"
    androID:layout_height="match_parent"
    androID:background="@drawable/main"
    tools:context=".MainActivity"
    androID:orIEntation="vertical">

    <TextVIEw
        androID:ID="@+ID/tv"
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:layout_margintop="2dp"
        androID:layout_marginBottom="2dp"
        androID:gravity="center"
        androID:text="电子词典"
        androID:textStyle="bold"
        androID:textcolor="#87CEFA"
        androID:textSize="50dp" />
    <linearLayout
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:orIEntation="vertical">
        <EditText
            androID:ID="@+ID/search_et"
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content"
            androID:layout_margintop="2dp"
            androID:layout_marginBottom="2dp"
            androID:hint="单词"/>
        <linearLayout
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content">
            <button
                androID:ID="@+ID/search_btn"
                androID:layout_wIDth="match_parent"
                androID:layout_height="wrap_content"
                androID:layout_margintop="2dp"
                androID:layout_marginBottom="2dp"
                androID:background="#80000000"
                androID:textcolor="#FFFFFF"
                androID:text="查询"/>
        </linearLayout>
        <linearLayout
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content">
        <button
            androID:ID="@+ID/btn_add"
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content"
            androID:layout_margintop="2dp"
            androID:layout_marginBottom="2dp"
            androID:background="#80000000"
            androID:textcolor="#FFFFFF"
            androID:text="添加" />
        </linearLayout>
        <linearLayout
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content">
        <button
            androID:ID="@+ID/btn_delete"
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content"
            androID:layout_margintop="2dp"
            androID:layout_marginBottom="2dp"
            androID:background="#80000000"
            androID:textcolor="#FFFFFF"
            androID:text="删除" />
    </linearLayout>
    </linearLayout>
    <ListVIEw
        androID:ID="@+ID/result_ListVIEw"
        androID:layout_wIDth="wrap_content"
        androID:layout_height="wrap_content"
        />
</linearLayout>

 

3.2.2主界面activity代码

package com.example;

import androIDx.appcompat.app.AppCompatActivity;
import androID.content.Intent;
import androID.database.Cursor;
import androID.os.Bundle;
import androID.vIEw.VIEw;
import androID.Widget.button;
import androID.Widget.EditText;
import androID.Widget.ListVIEw;
import androID.Widget.SimpleAdapter;
import androID.Widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    private DBOpenHelper dbOpenHelper;

    @OverrIDe
    protected voID onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentVIEw(R.layout.activity_main);
        dbOpenHelper = new DBOpenHelper(MainActivity.this, "db_dict", null, 1);
        final ListVIEw ListVIEw = findVIEwByID(R.ID.result_ListVIEw);
        final EditText etsearch = findVIEwByID(R.ID.search_et);
        button btn_search = findVIEwByID(R.ID.search_btn);
        button btn_add = findVIEwByID(R.ID.btn_add);
        button btn_delete = findVIEwByID(R.ID.btn_delete);
        btn_add.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                Intent intent = new Intent(MainActivity.this, AddActivity.class);
                startActivity(intent);
            }
        });
        btn_delete.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                Intent intent = new Intent(MainActivity.this, DeleteActivity.class);
                startActivity(intent);
            }
        });
        btn_search.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                String key = etsearch.getText().toString();
                Cursor cursor = dbOpenHelper.getReadableDatabase().query("tb_dict", null, "word=?", new String[]{key}, null, null, null);
                ArrayList<Map<String, String>> resultList = new ArrayList<Map<String, String>>();
                while (cursor.movetoNext()) {
                    Map<String, String> map = new HashMap<String, String>();
                    map.put("word", cursor.getString(1));
                    map.put("interpret", cursor.getString(2));
                    resultList.add(map);
                }
                if (resultList == null || resultList.size() == 0) {
                    Toast.makeText(MainActivity.this, "很遗憾,没有记录", Toast.LENGTH_LONG).show();
                } else {
                    SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, resultList,
                            R.layout.result_main,
                            new String[]{"word", "interpret"}, new int[]{
                            R.ID.result_word, R.ID.result_interpret});
                    ListVIEw.setAdapter(simpleAdapter);
                }

            }
        });
    }
        protected voID onDestroy(){
            super.onDestroy();
            if (dbOpenHelper != null) {
                dbOpenHelper.close();
            }
        }}

 

3.3.1添加界面布局代码

<?xml version="1.0" enCoding="utf-8"?>
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"
    xmlns:tools="http://schemas.androID.com/tools"
    androID:layout_wIDth="match_parent"
    androID:layout_height="match_parent"
    androID:background="@drawable/add"
    androID:orIEntation="vertical"
    tools:context="com.example.AddActivity">
    <EditText
        androID:ID="@+ID/add_word"
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:layout_margintop="2dp"
        androID:layout_marginBottom="2dp"
        androID:hint="单词" />
    <EditText
        androID:ID="@+ID/add_interpret"
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:layout_margintop="2dp"
        androID:layout_marginBottom="2dp"
        androID:hint="翻译" />
        <button
            androID:ID="@+ID/save_btn"
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content"
            androID:layout_margintop="2dp"
            androID:layout_marginBottom="2dp"
            androID:background="#80000000"
            androID:textcolor="#FFFFFF"
            androID:text="保存" />
        <button
            androID:ID="@+ID/cancel_btn"
            androID:layout_wIDth="match_parent"
            androID:layout_height="wrap_content"
            androID:layout_margintop="2dp"
            androID:layout_marginBottom="2dp"
            androID:background="#80000000"
            androID:textcolor="#FFFFFF"
            androID:text="取消" />
    </linearLayout>

 

3.3.2添加界面activity代码

package com.example;
import androID.content.ContentValues;
import androID.content.Intent;
import androID.database.sqlite.sqliteDatabase;
import androID.os.Bundle;
import androID.os.PersistableBundle;
import androID.vIEw.VIEw;
import androID.Widget.button;
import androID.Widget.EditText;
import androID.Widget.Toast;
import androIDx.annotation.Nullable;
import androIDx.appcompat.app.AppCompatActivity;

public class AddActivity extends AppCompatActivity {
    private DBOpenHelper dbOpenHelper;
    @OverrIDe
    public voID onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentVIEw(R.layout.activity_add);
        dbOpenHelper=new DBOpenHelper(AddActivity.this,"db_dict",null,1);
        final EditText etword=findVIEwByID(R.ID.add_word);
        final EditText etinterpret=findVIEwByID(R.ID.add_interpret);
        button btn_save=findVIEwByID(R.ID.save_btn);
        button btn_cancel=findVIEwByID(R.ID.cancel_btn);
        btn_save.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                String word=etword.getText().toString();
                String interpret=etinterpret.getText().toString();
                if(word.equals("")||interpret.equals("")){
                    Toast.makeText(AddActivity.this,"填写的单词或解释为空",Toast.LENGTH_SHORT).show();
                }else{
                    insertData(dbOpenHelper.getReadableDatabase(),word,interpret);
                    Toast.makeText(AddActivity.this,"添加生词成功",Toast.LENGTH_SHORT).show();
                }
            }
        });
        btn_cancel.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                Intent intent=new Intent(AddActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }
    private voID insertData(sqliteDatabase sqliteDatabase,String word,String interpret){
        ContentValues values=new ContentValues();
        values.put("word",word);
        values.put("detail",interpret);
        sqliteDatabase.insert("tb_dict",null,values);
    }
    protected voID onDestroy(){
        super.onDestroy();
        if(dbOpenHelper!=null){
            dbOpenHelper.close();
        }}
}

3.4.1删除界面布局代码

<?xml version="1.0" enCoding="utf-8"?>
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"
    xmlns:tools="http://schemas.androID.com/tools"
    androID:layout_wIDth="match_parent"
    androID:layout_height="match_parent"
    androID:background="@drawable/delete"
    androID:orIEntation="vertical"
    tools:context="com.example.AddActivity">
    <EditText
        androID:ID="@+ID/delete_word"
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:layout_margintop="2dp"
        androID:layout_marginBottom="2dp"
        androID:hint="单词" />
    <EditText
        androID:ID="@+ID/delete_interpret"
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:layout_margintop="2dp"
        androID:layout_marginBottom="2dp"
        androID:hint="翻译" />
    <button
        androID:ID="@+ID/delete_btn"
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:layout_margintop="2dp"
        androID:layout_marginBottom="2dp"
        androID:background="#80000000"
        androID:textcolor="#FFFFFF"
        androID:text="删除" />
    <button
        androID:ID="@+ID/cancel_btn"
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:layout_margintop="2dp"
        androID:layout_marginBottom="2dp"
        androID:background="#80000000"
        androID:textcolor="#FFFFFF"
        androID:text="取消" />
</linearLayout>

3.4.2删除界面activity代码

package com.example;
import androID.content.Intent;
import androID.database.sqlite.sqliteDatabase;
import androID.os.Bundle;
import androID.vIEw.VIEw;
import androID.Widget.button;
import androID.Widget.EditText;
import androID.Widget.Toast;
import androIDx.annotation.Nullable;
import androIDx.annotation.VisibleForTesting;
import androIDx.appcompat.app.AppCompatActivity;

public class DeleteActivity extends AppCompatActivity {
    private DBOpenHelper dbOpenHelper;
    @OverrIDe
    public voID onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentVIEw(R.layout.activity_delete);
        dbOpenHelper=new DBOpenHelper(DeleteActivity.this,"db_dict",null,1);
        final EditText scword=findVIEwByID(R.ID.delete_word);
        final EditText scinterpret=findVIEwByID(R.ID.delete_interpret);
        button btn_delete=findVIEwByID(R.ID.delete_btn);
        button btn_cancel=findVIEwByID(R.ID.cancel_btn);
        btn_delete.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                String word=scword.getText().toString();
                String interpret=scinterpret.getText().toString();
                if(word.equals("")||interpret.equals("")){
                    Toast.makeText(DeleteActivity.this,"填写的单词或解释为空",Toast.LENGTH_SHORT).show();
                }else{
                    deleteData(dbOpenHelper.getReadableDatabase(),word,interpret);
                    Toast.makeText(DeleteActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
                }
            }
        });
        btn_cancel.setonClickListener(new VIEw.OnClickListener() {
            @OverrIDe
            public voID onClick(VIEw v) {
                Intent intent=new Intent(DeleteActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }
    private voID deleteData(sqliteDatabase sqliteDatabase,String word,String interpret){
        sqliteDatabase.delete("tb_dict","word=?",new String[]{word+""});
    }
    protected voID onDestroy(){
        super.onDestroy();
        if(dbOpenHelper!=null){
            dbOpenHelper.close();
        }}
}

3.5.1ListvIEw显示代码

<?xml version="1.0" enCoding="utf-8"?>
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"
    androID:orIEntation="vertical"
    androID:layout_wIDth="match_parent"
    androID:layout_height="match_parent">
    <linearLayout
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content"
        androID:orIEntation="horizontal">
        <TextVIEw
            androID:layout_wIDth="wrap_content"
            androID:layout_height="wrap_content"
            androID:text="单词:"
            androID:textcolor="    #000000"
            androID:textSize="50dp"/>
        <TextVIEw
            androID:ID="@+ID/result_word"
            androID:layout_wIDth="wrap_content"
            androID:layout_height="wrap_content"
            androID:textcolor="    #000000"
            androID:textSize="50dp"/>
    </linearLayout>
    <linearLayout
        androID:layout_wIDth="match_parent"
        androID:layout_height="wrap_content">
        <TextVIEw
            androID:layout_wIDth="wrap_content"
            androID:layout_height="wrap_content"
            androID:textcolor="    #000000"
            androID:text="翻译:"
            androID:textSize="50dp"/>
        <TextVIEw
            androID:ID="@+ID/result_interpret"
            androID:layout_wIDth="wrap_content"
            androID:layout_height="wrap_content"
            androID:textcolor="    #000000"
            androID:textSize="50dp"/>
    </linearLayout>
</linearLayout>

 

四、实际测试

4.1添加测试

 

 

 

4.2查询测试

 

 

 

4.3删除测试

 

 

 

 

 

五、项目总结

本文阐述了电子行业的现状、发展历史以及未来的广阔的市场前景、表明了电子词典在词典行业中的重要性、详细讲解了手机电子词典APP的整个开发到实现的过程,以及具体的功能分析、需求分析、工作原理等等。其实我在数据库的创建实现过程中一开始也是遇到了一些困难,不知道该从哪里下手才好。后来找来相关资料仔细钻研学习,最终做出了这个电子词典软件。

总结

以上是内存溢出为你收集整理的android课程设计报告全部内容,希望文章能够帮你解决android课程设计报告所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存