团队作业二
小组队长:徐建磊
小组成员:李强胜、孙玉、张书逸、王香友
开发环境:Eclipse
1概述
1.1 开发背景
日常生活中人们接触越来越多的英文单词,英文句子,英文文章等等。一旦遇到某个无法理解或者无法翻译的单词,一般情况下人们都会查阅书籍,但是这样的做法往往费时费力,所以为了方便人们翻译某些单词,摆脱沉重的书籍,就有必要开发一款可以为人们翻译单词的某种软件或者工具。
1.2 开发目标
将人们学习工作中所遇到的不易理解的英文单词、短语、句子,翻译成为容易理解的汉语单词、短语、句子。作为便携工具存在于人们的电子产品中,从而替代某些沉重的书籍。当人们需要时可以随时随地的进行翻译。此系统功能分为:英汉互译功能、用户注册及系统登录功能、用户单词库。
1.3 参考资料
网易有道词典。该软件是开源的,源代码可被使用。有道词典支持多语种翻译,囊括海量词汇又有权威书籍词典做支撑,功能强大。
1.4 设计原则
(1)界面简约、操作简单。
(2)翻译具有一定的准确性,所翻译地单词能给出相应的使用例子,翻译功能可在英译汉与汉译英之间选择。
(3)系统各功能之间联系不紧密,数据依赖关系小。系统各功能位系统拓展保留一定量的接口,用户数据库、用户单词库、系统数据库,单独隔开,各自存放于不同的区域。
2 需求分析
2.1 需求陈述
(1)系统会为用户创建自己的常用单词库,记录用户的近期查询历史,方便用户再次查找。
(2)用户使用翻译功能时,可以英译汉,汉译英中选择。
2.2 操作用例
(1)用户使用翻译功能时,输入只能是单一的汉字或者英文单词,其他输入均为非法。输入完成点击翻译,将只会出现输入错误!请输入单一的汉字或英文单词。
(2)用户在查询自己的词库时,无法添加、修改,只能删除。
2.3 功能分析划分
(1)翻译。翻译功能可以在英语与汉语之间进行,用的输入只能是有意义的英语单词、词组,或者汉语字、词、词组,当输入的为无意义的字符后,点击翻译时,系统将显示无法翻译无意义的词。
(2)词库查询,历史查看。拥有账户的用户可以在自己的词库中查看自己经常翻译的词,没有账户的用户可以在翻译历史中查看自己最近几天的翻译记录。当用户无任何翻译记录或翻译历史时,系统将显示无任何翻译记录。
2.3.1 用户使用
此界面为用户使用界面分为语音输入、在线查询、线下查询,和生词本这几部分。
2.3.2 用户管理
用户管理这部分主要是对生词本的管理,实现对生词本的三个基本操作。
在用户查询完成后,可以提供两个选项,加入生词本或直接关闭。
2.4 运行环境
系统能在Android环境中运行。
3 总体设计
3.1 系统建模
3.1.1 层次方框图
3.1.2 ER图(实体-联系图)
3.1.3 类图设计
3.2 接口设计
3.2.1 内部接口设计
对数据库进行一系列的操作,使用数据库实现单词的线下查询。
线上查询使用Uri类中的方法,将数据以字符串的形式传入到方法中解析,在此界面点击按钮就可以看到打开了http链接。
3.2.2 登录界面设计
//登陆界面布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/welcome"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
3.2.3 用户管理界面设计
//生词本界面布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<TextView
android:id="@+id/book"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/header"
android:paddingTop="15dp"
android:text="@string/back"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
4 详细设计
4.1 程序流程图
4.2 伪代码编写
部分伪代码的展示:
//定义单词类
public class Word {
private String ID;
private String meanning;
private String spelling;
private String phonetic_alphabet;
private String list;
public Word(){
//构建一个默认的单词对象
}
//构建一个带指定参数的单词对象
public Word(String ID,String meanning,String spelling,String phonetic_alphabet,String list){
this.ID=ID;
this.meanning=meanning;
this.spelling=spelling;
this.phonetic_alphabet=phonetic_alphabet;
this.list=list;
}
public void setID(String ID){
this.ID=ID;//设置这个单词的id
}
public String getID(){
return ID;//返回这个单词的id
}
public void setMeanning(String meanning){
this.meanning=meanning;//设置单词的意思
}
public String getMeanning(){
return meanning;//返回单词的意思
}
public void setSpelling(String spelling){
this.spelling=spelling;//设置单词的发音
}
public String getSpelling(){
return spelling;//返回单词的发音
}
public void setPhonetic_alphabet(String phonetic_alphabet){
this.phonetic_alphabet=phonetic_alphabet;
//设置语音字母
}
public String getPhonetic_alphabet(){
return phonetic_alphabet;//返回语音字母
}
public void setList(String list){
this.list=list;
}
public String getList(){
return list;
}
}
//线下查询单词的功能实现
package com.example.dictionary;
//import 各种所需的类
//定义OfflineQuery类继承自Activity类
public class OfflineQuery extends Activity implements OnClickListener,
TextWatcher {
public;
private;
static;
//定义各种所需变量和变量类型
}
//下面是各种具体的方法去实现OfflineQuery类
{…….}
//在线单词查询功能的实现
package com.example.dictionary;
import 各种所需的类
//定义OnlineQuery类继承自Activity类
public class OnlineQuery extends Activity{
//定义类中数据域
//标明变量和变量类型
public void onCreate(Bundle savedInstanceState)
{
//onCreate创建活动
setContentView();//添加布局;
button.setOnClickListener();//设置按钮监听;
//Toast提示设置;
// String strURL = "http://dict.youdao.com/m/search?keyfrom=dict.mindex&q="+strURI;
//语音部分
/*
* 设置引擎目前支持五种 ”sms”:普通文本转写 “poi”:地名搜索 ”vsearch”:热词搜索 ”video”:视频音乐搜索
* ”asr”:命令词识别
*/
// 语言识别监听器,
// 完成后就把结果显示
//生词本功能的实现
public class NoteBook extends Activity {
定义变量和类型
listView1 = (ListView) findViewById(R.id.listView1);
//
}
//一系列的文件操作
...
//为listView1视图添加setOnItemClickListener监听
listView1.setOnItemClickListener(){
// 对于选中的项进行处理
builder.setIcon(R.drawable.);
builder.setMessage("确认操作");
builder.setTitle("提示");
builder.setPositiveButton("删除")
builder.setNeutralButton("编辑")
builder.setNegativeButton("取消", null).show();
}
public boolean onCreateOptionsMenu(Menu menu) {
//设置菜单提示
menu.add(0, MENU_ADD, 0, "添加新单词");
menu.add(0, MENU_TUICHU, 1, "退出");
return super.onCreateOptionsMenu(menu);
}
5 实现
5.1 编码
5.1.1 代码约定与代码编写原则
目录的命名以模块名称的英文缩写或汉语拼音首字母缩写命名,如模块名称为工具,则目录名称为tools或gj(同一工程中只可采用一种命名规则)。
1) 使用自定义变量(包括全局变量、局部变量)之前必须先声明变量,并用注释语句标明变量的类型、用途、含义。
2) 自定义函数必须用注释语句标明函数的用途、参数的数据类型、意义,返回值的类型。
3) 程序中重要的过程或代码较长的过程应使用注释语句标明该过程的起始行和结束行,并注明该过程的功能。
5.2 测试要点
5.2.1 主界面测试要点
(1)数据输入时,分别使用汉字、英语和标点字符进行搜索测试。然后用混合输入进行测试。
(2)观察日志表进行检测。
(3)对接口数据进行测试。
5.3 测试结果和总结
通过对日志的查看来明确数据的流向,从而来检测数据的正确性。当然这一检测方法的实现需要检测人员对日志表很熟悉,水平要求很高,做的不是很到位。
接口数据测试。当两个系统之间有接口时,接口传输中数据的正确性非常重要。将系统1中与接口有关的数据提取出来形成临时表;将系统2中与接口有关的数据提取出来形成临时表。对比两个表的接口数据的一致性。
6 维护
6.1 维护方法
关于维护的方法,我们会设计一个用户反馈i系统和我们自己工作人员和其他人员的使用的情况来进行判断,从而发现这款手机词典的不足之处,所以我们会在后期陆续的推出不一样更新来进行手机词典维护。具体的见下面:
1、制作维护日志来保存每次维护的数据
2、工作人员和市场人员的随机抽查访问来调查自己的手机词典的不足之处
3、提前做准备,进行编程来应对突然出现的问题
4、程序内的各个函数写成一个文件,更好的进行管理
5、提前预留出更多的接口,为以后的更新进行准备
6.2 维护文档
本款手机词典的维护文档分为三个方向:使用手册、维护方向,用户反馈
使用手册:
1、在手机词典的本地查询,我们使用的是我们自己的数据库,所以只需要输入单词进行查询即可
2、在手机词典的网络查询,我们使用的是跳转到有道的网络查询界面进行查询
3、生词本的添加,注意在我们的生词本不是添加你在本地查询查不到的单词,是添加你在本地查询查询到的单词,此生词本的目的在于当你使用某一个单词过多的时候可以将其添加到生词本当中,这样就不用继续去查询,可以在生词本当中找到,方便你去记忆
维护方向:
1、本地数据库的维护:我们会在规定的时间内去维护我们自己的数据库,防止他崩溃,用户使用不了本地查询,方法是:推出更新
2、在线查询维护:我们也会在固定的时间内进行网络查询的抽查,防止用户进行网络查询时跳转不到查询界面,方法是:与1的更新同时更新
3、生词本维护:我们会固定时间内推出更新(与1同时推出),目的在于防止生词本的崩溃,用户存储的生词消失
用户反馈:
我们会在后续的更新当中推出新的功能,用户反馈功能,旨在可以让用户在发现问题的时候可以进行及时的反馈,我们进行及时维修,遇到个别的问题如:个人的本地查询,网络查询和生词本中生词的消失,我们会一一解决
6.3 功能拓展方法
我们会在后续进行推出新的功能,通过更新的方式,(由于当前的技术问题只能做到以上的功能)具体如下:
1、用户进行本地数据库的添加:在之前我们不能在生词本当中添加数据库中没有的单词,在以后在生词本中添加数据库中没有的单词同时会在个人的数据库当中添加此单词
2、更多的网络查询网址:当前我们只有有道词典的查询网址,以后会添加更多的查询网址,为用户添加更多的选择
3、添加更多的有趣新闻:我们会在查询界面添加更多的有趣英文新闻,提高用户兴趣
4、查询时添加汉子注释:当前查询是没有汉字注释
5、添加形近单词的提供:在查询单词的时候我们会添加形近单词在下方
6、添加用户反馈界面
7、界面的优化美观
8、声音输入查询单词
9、完善数据库
10、可以用户自己下载词典进行添加个人的数据库