1. 基于Android的背单词系统........................................ 3
1.1 系统需求分析.................................................................................................. 3
1.1.1 用例分析................................................................................................ 3
1.1.2 用例分析说明........................................................................................ 4
1.2 系统总体设计.................................................................................................. 5
1.2.1 主页面功能模块.................................................................................... 5
1.3 系统详细设计.................................................................................................. 6
1.3.1 修改计划模块........................................................................................ 6
1.3.2 查看单词库模块.................................................................................... 6
1.3.3 开始背单词模块.................................................................................... 7
1.4系统数据库设计............................................................................................... 7
1.4 系统实现.......................................................................................................... 7
1.4.1 查看单词库模块.................................................................................... 7
1.4.2 修改计划模块...................................................................................... 11
1.4.3 开始背单词模块.................................................................................. 12
1.5 系统测试........................................................................................................ 13
2. 总结........................................................... 17
1. 基于Android的背单词系统
1.1 系统需求分析
随着经济全球化,我们与外国人的接触越来越多,英语已经成为了中国与外面交流的主要工具,人们对学习英语越来越重视。而对于学习英语特别是英语单词的记忆方式也在不断的更新,而今移动互联网时代的到来,尤其智能手机的广泛应用,英语学习的平台已经逐渐向计算机或者手机等移动设备上转移,背单词的方式方法进入一个新的领域。背单词软件是当下比较流行且方便有效的辅助记忆工具,本文介绍的背单词软件是一款基于android平台的应用软件,其功能与其他背单词软件的不同之处在于用户需要自定义添加自己不会,需要背的单词,将已添加的单词全部练会后可以删除单词,接着添加新的单词。该系统有单词学习,添加单词,修改单词,删除单词等功能。
1.1.1 用例分析
1.1.2 用例分析说明
(1) 用例名称:增加单词
执行者是用户
说明:增加一个单词
先决条件是系统的用户
请求结果是增加一个单词
使用频率高
(2) 用例名称:修改单词
执行者是用户
说明:对一个单词进行修改
先决条件是系统的用户
请求结果是一个单词被修改
使用频率低
(3) 用例名称:查询单词
执行者是用户
说明:查询所有单词
先决条件是系统的用户
请求结果是返回该系统下所有的单词
使用频率高
(4) 用例名称:删除单词
执行者是用户
说明:删除一个单词
先决条件是系统的用户
请求结果是一个单词被删除
使用频率高
1.2 系统总体设计
1.2.1 主页面功能模块
主页面里有三个功能模块,分别为修改计划功能模块,查看单词库功能模块和练习背单词功能模块。
1.2.1.1 修改计划功能模块
在主页面点击“修改计划”,可以进入修改计划的页面,在该页面可以修改每日计划背单词的数量,然后返回主页面可以看到若把所有单词背完需要的天数。
1.2.1.2 练习背单词模块
在主页面点击“开始背单词吧”进入背单词页面,在该页面可以在左上方看到单词总数,每个单词的中文意思都被遮挡,当点击单词时,中文意思才会显示,这样方便用户练习。
1.2.1.3 查询/添加/修改/删除单词功能模块
用户在主页面点击“查看单词库”,即可查询所有已添加的单词,点击右下角的“添加”,会进入添加单词界面,可在文本框中填写需要背的新单词,点击保存即可。在查询单词页面点击已添加的单词即可进入修改和删除单词页面,在该页面中可以对单词进行修改和删除。
1.3 系统详细设计
1.3.1 修改计划模块
修改计划模块
编号 |
输入 |
处理 |
输出 |
1 |
点击主页面修改计划按钮,输入每天背单词个数 |
根据数据库中的单词总数,计算背完所有单词需要的天数。 |
跳转到主页面 |
1.3.2 查看单词库模块
查看单词库模块
编号 |
输入 |
处理 |
输出 |
1 |
点击主页面的查看单词库按钮 |
查询出数据库中所有已添加的单词 |
展示所有查询出来的单词列表,显示单词总数 |
2 |
点击添加按钮,输入一个单词信息 |
向数据库中插入一个新的单词 |
显示添加内容成功,跳转到查询单词页面 |
3 |
点击需要修改的单词,输入需要修改的部分信息 |
根据单词id对数据库中某个单词的信息进行更新 |
显示修改内容成功,停留在修改单词页面 |
4 |
点击需要删除的单词,点击删除按钮 |
根据单词id对数据库中某个单词进行删除 |
显示删除成功,跳转到查询单词页面 |
1.3.3 开始背单词模块
开始背单词模块
编号 |
输入 |
处理 |
输出 |
1 |
点击主页面开始背单词按钮 |
查询出数据库中的所有单词 |
跳转到练习单词界面,展示系统中的所有单词列表以及单词总数 |
1.4系统数据库设计
根据UML需求用例图设计出实现系统功能所需要的数据库表的结构,并以表格的形式列出每一个数据库表的表结构,即字段名、数据类型、长度、是否主键、是否允许为空、说明等。
字段名 |
数据类型 |
长度 |
主键 |
可空 |
说明 |
id |
int |
- |
是 |
否 |
单词id |
english |
Varchar |
20 |
否 |
否 |
英文 |
chinese |
Varchar |
20 |
否 |
否 |
中文 |
1.4 系统实现
1.4.1 查看单词库模块
查看单词库模块有四个主要的功能,查询单词、添加单词、修改单词和删除单词。
1.4.1.1 添加单词
相关代码:
public void onClick(View v) {
English = mEng.getText().toString();
Chinese = mChi.getText().toString();
DataUtil dataUtil = new DataUtil(this);
if (English.length() > 0 && "".equals(English) && Chinese.length() > 0 && "".equals(Chinese)) {
Toast.makeText(this, "填写内容不得为空", 0).show();
} else if (dataUtil.insert(English, Chinese)) {
Toast.makeText(this, "添加内容成功", 0).show();
finish();
}
}
1.4.1.2 查询单词
相关代码:
public void list() {
DataUtil dataUtil = new DataUtil(this);
mList = dataUtil.query();
mListIndex = mList.size();
EndAdapter adapter = new EndAdapter(mList);
mLw.setAdapter(adapter);
}
1.4.1.3 修改/删除单词
相关代码 :
public void onClick(View v) {
switch (v.getId()) {
case R.id.bu_add2:
mEnglish = mEng.getText().toString();
mChinese = mChi.getText().toString();
if (mEnglish.length() > 0 && "".equals(mEnglish) && mChinese.length() > 0 && "".equals(mChinese)) {
Toast.makeText(this, "填写内容不得为空", 0).show();
} else if (mDataUtil.upadta(mEnglish, mChinese, mId)) {
Toast.makeText(this, "修改内容成功", 0).show();
}
break;
default:
if(mDataUtil.delect(mId)) {
Toast.makeText(this, "删除成功", 0).show();
finish();
}else {
Toast.makeText(this, "删除失败", 0).show();
}
break;
}
}
1.4.2 修改计划模块
修改计划模块的功能是修改每天背单词的数量,计算背完单词需要的天数,在主页面显示。
1.4.2.1 我的计划
相关代码:
mNumber = Integer.parseInt(mNumbers.getText().toString());
Intent intents = new Intent();
intents.putExtra("number", mNumber);
setResult(2, intents);
finish();
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.plan);
Button confirm = (Button) findViewById(R.id.confirm);
confirm.setOnClickListener(this);
mNumbers = (EditText) findViewById(R.id.number);
TextView day = (TextView) findViewById(R.id.day);
mNumber = getnumber();
mDay = gettotal()/mNumber;
mNumbers.setText(mNumber+"");
day.setText(mDay+"");
}
1.4.3 开始背单词模块
开始背单词模块的功能是查询出系统中添加的所有单词以及单词总数,练习背诵。
1.4.3.1 单词列表
相关代码:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.study);
init();
}
public void init() {
ListView Lw =(ListView) findViewById(R.id.lws);
TextView tv = (TextView) findViewById(R.id.totals);
DataUtil dataUtil = new DataUtil(this);
List<EngBean> list =dataUtil.query();
EndAdapters adapter = new EndAdapters(list);
Lw.setAdapter(adapter);
int listIndex = list.size();
tv.setText(listIndex+"");
Lw.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView shadow = (TextView)view.findViewById(R.id.shadow);
switch (shadow.getVisibility()) {
case 0:
shadow.setVisibility(View.INVISIBLE);
break;
case 4:
shadow.setVisibility(View.VISIBLE);
break;
}
}
1.5 系统测试
本次课设所用的开发环境为
开发技术::android sqlite
数据库:SQLite3.5.83
开发工具:eclipse
1.5.1测试系统添加单词功能是否能正常使用
点击“查看单词库”中“添加”按钮,向系统中添加单词“plan”“计划”
测试结果:
1.5.2.测试系统中修改单词功能是否能正常使用
将系统中单词“plan”的中文意思修改为“计划;方案”
测试结果:
1.5.3.测试系统删除单词功能是否能正常使用
将系统中单词“plan”“计划;方案”删除
测试结果:
1.5.4.测试系统中修改计划功能是否能正常使用
点击主页面“修改计划”,将“每日背单词”由“1”个改为“2”个
测试结果:
1.5.5.测试系统中查询单词功能是否能正常使用
分别点击主页面“查看单词库”“开始背单词吧”进入查询单词页面
测试结果:
1.5.6.测试系统中开始背单词页面的中文隐藏功能是否能正常使用
点击任意单词,看是否会显示中文意思
测试结果:
2. 总结
通过这次课程设计,编程水平有了很大的提高。该单词斩系统使用Java语言,使用Eclipse进行编写,从最开始编写这个程序到程序运行,经过对程序的反复调试与修改,深刻感受到编写一个程序是一个漫长而辛苦的过程,需要编程人员具备足够的耐心与细心。与此同时也培养我查阅知识并通过自学掌握知识的能力。程序的入手阶段是困难的,首先要做一些准备工作。要了解这个程序是干什么的,它应具备怎样的功能。当明确了这些问题以后,就要针对不同的功能逐一的思考实现该功能的方法。编程时要先制定一个大的框架,用几个模块,什么模块,那些事件过程,那些通用过程,当大致的轮廓出来后再进行深一步的编写,考虑语句的语法、逻辑,各个通用过程的调用,事件过程的实现。当然在编程的过程中最重要的一点就是善于总结,这样可以避免重蹈覆辙。在程序编写结束后,更要进行总结,认真思考怎样编写一个过程是简便快捷的,在下次遇到同样问题时可以节省时间,提高效率。这次做课程设计,了解了程序的编制过程和基本的思维方法,同时也对编程产生了更加浓厚的兴趣,希望能在课余时间多编制一些这样的程序,可以学到更多的知识,同时提高编程的速度,锻炼思考方式,开拓思维空间,为我今后的学习打下一个良好的基础。
附件1:
基于Android的背单词系统
技术说明
1. 开发技术: UI设计、SQLite数据库、Activity组件的应用、ListView的使用、
控件的隐藏 。
UI设计:多个界面的嵌套与跳转
SQLite:数据库的增删改查
Activity:多Activity的切换
android中Visibility的应用:应用中单词意思的遮挡
ListView:单词库与练单词界面单词的显示
代码
清单文件:
布局文件:
1. 截图:
2. 原文件
Java原码:
类说明:
EndAdapter:该类继承自BaseAdapter,用于获取Item总数、对象、Id、视图。
EndBean:储存每条数据的基本信息。
DBInit:该类中定义数据库的名称、表名、数据库版本、数据库表中的列名
DateUtil:定义数据库的添加、删除、修改、查询、方法
EditActivty:调用DateUtil中query()方法并实现添加单词的点击事件
MainActivty:实现查看单词库和背单词的点击事件
PlanActivty:实现修改计划界面
StudyActivty:使用Visibility实现了练习背诵的事件
UpdataActivty:调用DateUtil中upadta()更新消息
WritingActivty:调用DateUtil中insert()添加消息