密码保险箱的设计与实现嵌入式系统设计.docx
《密码保险箱的设计与实现嵌入式系统设计.docx》由会员分享,可在线阅读,更多相关《密码保险箱的设计与实现嵌入式系统设计.docx(17页珍藏版)》请在冰豆网上搜索。
密码保险箱的设计与实现嵌入式系统设计
河北经贸大学课程设计报告
——嵌入式程序设计
密码保险箱的设计与实现
专业名称:
软件工程
班级:
2010级01班
学号:
1326
学生姓名:
肖娇娇
指导教师:
赵彦霞
完成时刻:
2013年6月
摘要
密码保险箱可令人们没必要刻意去记住过量的密码,从而解决了容易忘记密码的问题。
该软件具有两大模块,即用户登录模块和密码记录治理模块。
其顶用户登录模块实现了两个功能:
用户登录和用户密码修改;密码记录治理模块要紧实现了对密码记录进行添加、删除、查询及预览的功能。
本论文针对该软件的设计与实现做出了详细讲解。
第一简要介绍了密码保险箱设计与实现的课题背景、研究的现状和研究的内容;接着依照软件工程的开发步骤重点介绍了密码保险箱设计与实现的进程:
包括系统分析、系统概要设计、系统详细设计与实现和系统测试;最后对本次课题设计做出总结。
关键字:
Android、Java、密码保险箱、设计、实现
密码保险箱的设计与实现
1绪论
1,1课题背景
现今社会,人们愈来愈注重个人隐私,因此,关于某些不希望让他人明白的东西,比如照片、日记、空间等都会设置密码;各类网站或论坛都会要求创建一个用户名和密码来访问网站的特定内容;各个银行卡和银行账户也都要设置一个密码。
可是,密码设置多了,常常会发生忘记密码的情形,带来诸多不便。
因此,开发一个适和公共的、兼容性好的电话密码保险箱是很有必要的。
依照开发要求,它要紧应用于智能电话,完成对密码的添加、删除和查询等操作,实现密码的大体治理功能。
1,2研究现状
随着我国经济的高速进展和人民生活水平的提高,基于android的智能电话在目前已经取得普遍的进展和应用,身受很多大学生和社会人士的喜爱。
同时作为它的附属产业,电话软件业这一项新型产业也取得了迅猛进展,作为高科技领军产业中的一员大将,移动软件行业以其多样化和多功能化吸引了愈来愈多关注的目光。
目前的电话软件在客户端的应用极为普遍,密码保险箱确实是其中之一。
此刻,愈来愈多的程序开发员基于各类各样的目的编写密码保险箱,使得各式各样密码保险箱层出不穷,也使得人们能够依照自己的实际情形选择自己喜爱的那一个。
1,3研究内容
通过对Android的学习和对密码保险箱的了解,我决定自己设计开发一个功能简单但利用的密码保险箱。
该密码保险箱会运用到嵌入式讲义中讲到的相应的知识,如layout等来实现用户对密码一些大体操作。
本软件是一个超级方便快捷的密码治理软件,用户能够为所欲为地添加密码、查询密码、预览密码,删除密码等等,方便了密码治理,提高了治理效率,而且具有必然的平安性。
2系统分析
可行性分析
该密码保险箱软件的可行性分析要紧从技术、经济、操作和法律和社会等方面来研究。
●技术可行性:
目前利用andriod系统和eclipse应用程序能够很容易的实现该软件。
●经济可行性:
该软件的开发本钱是很低的,可是却能够供多个用户同时利用,足见其经济效益。
●操作可行性:
该软件的操作方式能够在任何基于andriod的智能电话上实现。
●法律和社会可行性:
该软件开发进程中不仅没有涉及到各类合同、侵权、责任等与法律、法规吻合或抵触的问题。
需求分析
功能分析
本软件具有如下要紧功能:
●用户登录功能
●用户修改登录密码功能
●修改密码记录功能:
包括添加、删除功能
●查询密码记录功能
●预览密码记录功能
●查看开发人员信息功能
该系统的数据流图:
顶层:
如图2-1所示。
图2-1顶层数据流图
1层:
如图2-2所示。
图2-21层数据流图
数据分析
该系统有两个实体,即用户和密码记录。
用户的属性只有效户登录的密码,密码记录的属性有关键字、账号、密码、备注,而且用户治理密码记录,具体E-R图如图2-3所示。
图2-3E-R图
3系统概要设计
结构设计
该密码保险箱系统要紧有登录、修改登录密码、治理、查看开发人员信息和退出五部份组成,其中治理又分为密码记录查询、密码记录添加、密码记录预览和密码记录删除三部份,体系结构图如图3-1所示。
图3-1体系结构图
数据设计
本系统用到了eclipse应用程序中的数据库,其表结构如表3-1所示。
表3-1密码记录
字段名称
数据类型
能否为空
说明
ID
string
否
记录号
keyword
string
否
关键字
account
string
否
账号
password
string
否
密码
remind
string
是
备注
4系统详细设计与实现
登录模块
登录模块由两部份组成,即登录和密码修改。
其相应界面如图4-一、4-2所示。
图4-1登岸界面
图4-2密码修改界面
实现代码如下:
package;
importclassloginextendsActivity{
SharedPreferencesshared=null;
Editoreditor=null;
privateEditTextpassword=null;etTitle("请输入密码")
.setIcon.setView(DialogView)
.setPositiveButton("登岸",newDialogInterfaceOnClick2())
.setNeutralButton("修改",newDialogInterfaceOnClick3())
.setNegativeButton("退出",newDialogInterfaceOnClick6())
.create();etTitle("请修改密码")
.setView(dialogView)
.setPositiveButton("确信",newDialogInterfaceOnClick5()).setNegativeButton("取消",newDialogInterfaceOnClick4())
.create();oString();how();
Intentintent=newIntent();
;
finish();
}else{
"密码错误!
",.show();
temp();
}
}
}
classDialogInterfaceOnClick3implements{oString();oString();oString();how();
}elseif(!
(password01)){
"旧密码输入错误",.show();
temp();
}elseif(!
(three)){
"两次新密码输入不一致",.show();
temp();
}
}
}
}
密码治理模块
密码治理模块由四部份组成,即添加密码记录、查询密码记录、预览密码记录和查看开发人员信息。
主界面如图4-3所示。
图4-3主界面
添加密码记录
(1)界面
图4-4添加界面
(2)实现代码
package;
importclassadd_recordextendsActivity{
privateButtonadd_record_buttonadd,add_record_buttonback;
privateEditTextadd_record_edittext01,add_record_edittext02,add_record_edittext03,add_record_edittext04;
privateContextcontext;
privateintback=0;
@Override
publicvoidonCreate(BundlesavedInstanceState){
(savedInstanceState);
setContentViewadd_record_buttonadd=(Button)findViewByIdadd_record_buttonback=(Button)findViewByIdadd_record_edittext01=(EditText)findViewByIdadd_record_edittext02=(EditText)findViewByIdadd_record_edittext03=(EditText)findViewByIdadd_record_edittext04=(EditText)findViewByIdbasehelperBase=newbase,"");
(newOnClickListener(){
publicvoidonClick(Viewarg0){
AddData();
}
});
(newOnClickListener(){
publicvoidonClick(Viewv){
Intentintent=newIntent();,;
startActivity(intent);
}
});
}
publicvoidAddData(){
basebase01=newbase(),"");
Stringuser_keyword=().toString();
Stringuser_account=().toString();
Stringuser_password=().toString();
Stringuser_remind=().toString();
if("")||("")||("")){
(this,"inputbasicinfo!
",.show();
return;
}
(user_keyword,user_account,user_password,user_remind);
(this,"AddSuccessed!
",.show();
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){how();
break;
case2:
back=0;
oString());
;
(bundle);
startActivity(intent);
}
});
(newOnClickListener(){
publicvoidonClick(Viewarg0){
Intentintent=newIntent();
;
startActivity(intent);
}
});
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){how();
break;
case2:
back=0;etExtras().get("searchkey");
cursor=("information",newString[]{"ID","keyword","account","password","remind"},+"like?
",newString[]{"%"+bundle+"%"},null,null,"ID");how();
break;
case2:
back=0;
how();
break;
case2:
back=0;//初始化back值
关闭进程
break;
}
returntrue;//设置成false让back失效,true表示不失效
}
else{
return(keyCode,event);
}
}
}
数据库的实现
package;
importclassbaseextendsSQLiteOpenHelper{
staticfinalStringTABLENAME="information";
finalstaticStringTABLE_ID="ID";
finalstaticStringTABLE_KEYWORD="keyword";
finalstaticStringTABLE_ACCOUNT="account";
finalstaticStringTABLE_PASSWORD="password";
finalstaticStringTABLE_REMIND="remind";
ArrayListarrayList;
finalStringCREATETABLE="CREATETABLE"+TABLENAME+"("+TABLE_ID+"integerprimarykeyautoincrement,"+TABLE_KEYWORD+"char(40),"+TABLE_ACCOUNT+"char(20),"+TABLE_PASSWORD+"char(20),"+TABLE_REMIND+"vchar(50))";
staticfinalStringDBNAME="";
staticfinalintDBVERSION=1;
publicbase(Contextcontext,Stringver){
super(context,DBNAME,null,DBVERSION);
}
@Override
publicvoidonCreate(SQLiteDatabasedb){
(CREATETABLE);
("abc","created");
}
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
}
publicCursorselect(){
SQLiteDatabasedb=();
Cursorcursor=(TABLENAME,null,null,null,null,null,null);
returncursor;
}
publiclongadd(Stringkeyword,Stringaccount,Stringpassword,Stringremind){
SQLiteDatabasedb=();
ContentValuescontentValues=newContentValues();
(TABLE_KEYWORD,keyword);
(TABLE_ACCOUNT,account);
(TABLE_PASSWORD,password);
(TABLE_REMIND,remind);
return(TABLENAME,null,contentValues);
}
publicCursorsearch(Stringkeyword_for_search){
finalStringSEARCH="select*from"+TABLENAME+"(where"+TABLE_KEYWORD+"like%"+keyword_for_search+"%)";
SQLiteDatabasedatabase=();
Cursorcursor=(SEARCH,null);//这边写上你的查询语句
returncursor;
}
}
5系统测试
测试的概念及目的
测试是为了发觉程序中的错误而执行程序的进程,好的测试方案是极可能发觉迄今为止尚未发觉的错误的测试方案,成功的测试方案时发觉了至今为止尚未发觉的错误的测试。
系统功能测试
本文要紧从设计测试用例方面来对本系统进行测试。
测试用例1:
系统登录测试如下表所示:
表5-1登录测试用例
输入
输出
密码
123
正确---登录成功
1234
错误—密码错误
错误—密码错误
测试用例2:
修改登录密码测试如下表所示:
表5-2修改登录密码测试用例
输入
输出
旧密码
新密码
确定密码
123
111
111
正确—修改成功
111
111
错误—旧密码输入错误
1234
111
111
错误—旧密码输入错误
123
111
11
错误—两次新密码输入不一致
测试用例3:
添加密码记录测试如下表所示:
表5-3添加密码记录测试用例
输入
输出
关键字
账号
密码
备注
111
111
111
111
正确—添加成功
111
111
111
正确—添加成功
111
111
111
错误—添加失败
111
111
111
错误—添加失败
111
111
111
错误—添加失败
系统实施运行
通过相关测试证明该软件能够投入利用,因此能够将该软件装入电话实施运行。
运行结果说明,该软件功能大体实现了。
但仍需不断改良。
结论
本系统是一个基于andriod的简单的密码保险箱软件,功能比较单一,可是大体功能仍是实现了,能够登录该软件,修改登录密码并能够对密码记录进行添加,查询,预览和删除。
由于java程序对各变量的大小写要求比较严格,因此在程序调试时期花了很多时刻,而且程序的运行环境为,图形界面的输出要编写大量的代码实现。
另外,本软件尽管有数据库,可是只是借助于eclipse中的数据库,致使数据库设计不够精细,若是利用mysql或sqlserver等数据库,软件功能将会更壮大。