《密码保险箱的设计与实现嵌入式系统设计_毕业设计(34页).doc》由会员分享,可在线阅读,更多相关《密码保险箱的设计与实现嵌入式系统设计_毕业设计(34页).doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-密码保险箱的设计与实现嵌入式系统设计_毕业设计-第 31 页河北经贸大学课程设计报告嵌入式程序设计密码保险箱的设计与实现摘 要密码保险箱可使人们不必刻意去记住过多的密码,从而解决了容易忘记密码的问题。该软件具有两大模块,即用户登录模块和密码记录管理模块。其中用户登录模块实现了两个功能:用户登录和用户密码修改;密码记录管理模块主要实现了对密码记录进行添加、删除、查询及预览的功能。本论文针对该软件的设计与实现做出了详细解说。首先简要介绍了密码保险箱设计与实现的课题背景、研究的现状和研究的内容;接着按照软件工程的开发步骤重点介绍了密码保险箱设计与实现的过程:包括系统分析、系统概要设计、系统详细设计
2、与实现以及系统测试;最后对本次课题设计做出总结。关键字:Android、Java、密码保险箱、设计、实现目录密码保险箱的设计与实现11 绪论11,1 课题背景11,2 研究现状11,3 研究内容22 系统分析32.1 可行性分析32.2 需求分析32.2.1 功能分析32.2.2 数据分析53 系统概要设计63.1 结构设计63.2 数据设计64 系统详细设计与实现84.1 登录模块84.2 密码管理模块124.2.1 添加密码记录134.2.2 查询密码记录174.2.3 预览密码记录254.2.4 数据库的实现315 系统测试345.1 测试的定义及目的345.2 系统功能测试345.3
3、系统实施运行35结论36密码保险箱的设计与实现1 绪论1,1 课题背景当今社会,人们越来越注重个人隐私,因此,对于某些不希望让别人知道的东西,比如照片、日记、空间等都会设置密码;各种网站或者论坛都会要求创建一个用户名和密码来访问网站的特定内容;各个银行卡和银行账户也都要设置一个密码。但是,密码设置多了,经常会发生忘记密码的情况,带来诸多不便。因此,开发一个适和大众的、兼容性好的手机密码保险箱是很有必要的。根据开发要求,它主要应用于智能手机,完成对密码的添加、删除和查询等操作,实现密码的基本管理功能。1,2 研究现状随着我国经济的高速发展和人民生活水平的提高,基于android的智能手机在目前已
4、经得到广泛的发展和应用,身受很多大学生和社会人士的喜爱。同时作为它的附属产业,手机软件业这一项新型产业也得到了迅猛发展,作为高科技领军产业中的一员大将,移动软件行业以其多样化和多功能化吸引了越来越多关注的目光。目前的手机软件在客户端的应用极为广泛,密码保险箱就是其中之一。现在,越来越多的程序开发员基于各种各样的目的编写密码保险箱,使得各式各样密码保险箱层出不穷,也使得人们可以根据自己的实际情况选择自己喜欢的那一个。1,3 研究内容通过对Android的学习和对密码保险箱的了解,我决定自己设计开发一个功能简单但使用的密码保险箱。该密码保险箱会运用到嵌入式课本中讲到的相应的知识,如layout等来
5、实现用户对密码一些基本操作。本软件是一个非常方便快捷的密码管理软件,用户可以随心所欲地添加密码、查询密码、预览密码,删除密码等等,方便了密码管理,提高了管理效率,并且具有一定的安全性。2 系统分析2.1 可行性分析该密码保险箱软件的可行性分析主要从技术、经济、操作以及法律和社会等方面来研究。l 技术可行性:目前使用andriod系统和eclipse应用程序可以很容易的实现该软件。l 经济可行性:该软件的开发成本是很低的,但是却可以供多个用户同时使用,足见其经济效益。l 操作可行性:该软件的操作方式可以在任何基于andriod的智能手机上实现。l 法律和社会可行性:该软件开发过程中不仅没有涉及到
6、各种合同、侵权、责任等与法律、法规吻合或抵触的问题。2.2 需求分析2.2.1 功能分析本软件具有如下主要功能:l 用户登录功能l 用户修改登录密码功能l 修改密码记录功能:包括添加、删除功能l 查询密码记录功能l 预览密码记录功能l 查看开发人员信息功能该系统的数据流图:顶层:如图2-1所示。用户密码保险箱事物数据图 2-1 顶层数据流图1层:如图2-2所示。用户登录密码用户密码库修改登录密码新密码用户修改密码记录查询密码记录库密码记录密码记录请求查询查询结果预览密码记录请求预览预览结果图 2-2 1层数据流图2.2.2 数据分析该系统有两个实体,即用户和密码记录。用户的属性只有用户登录的密
7、码,密码记录的属性有关键字、账号、密码、备注,并且用户管理密码记录,具体E-R图如图2-3所示。用户管理密码记录密码账号密码备注关键字1N图 2-3 E-R图3 系统概要设计3.1 结构设计该密码保险箱系统主要有登录、修改登录密码、管理、查看开发人员信息和退出五部分组成,其中管理又分为密码记录查询、密码记录添加、密码记录预览和密码记录删除三部分,体系结构图如图3-1所示。密码保险箱登录退出密码记录查询密码记录添加密码记录预览密码记录删除查看开发人员信息修改登录密码密码记录查询图3-1 体系结构图3.2 数据设计本系统用到了eclipse应用程序中的数据库,其表结构如表3-1所示。表 3-1 密
8、码记录字段名称数据类型能否为空说明IDstring否记录号keywordstring否关键字accountstring否账号passwordstring否密码remindstring是备注4 系统详细设计与实现4.1 登录模块登录模块由两部分构成,即登录和密码修改。其相应界面如图4-1、4-2所示。图 4-1 登陆界面图 4-2 密码修改界面实现代码如下:package cn.riskycheng;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;i
9、mport android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class login extends Activity Sh
10、aredPreferences shared = null;Editor editor = null;private EditText password = null;/登陆密码private EditText twoedit = null;/旧密码private EditText threeedit = null;/新密码private EditText fouredit = null;/确认新密码String password01;/默认密码View DialogView = null;View dialogView = null;Override public void onCreate
11、(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.hint); shared = getSharedPreferences(passwordshared, Activity.MODE_PRIVATE); temp(); public void temp()/登陆页面editor = shared.edit();/打开指定shared文件,如果 不存在则创建他password01 = shared.getString(password, admin);LayoutInfl
12、ater factory = LayoutInflater.from(this);/得到自定义对话框 DialogView = factory.inflate(R.layout.login, null); password = (EditText)DialogView.findViewById(R.id.password);AlertDialog dlg = new AlertDialog.Builder(this) .setTitle(请输入密码) .setIcon(R.drawable.dl_icon) .setView(DialogView) .setPositiveButton(登陆,
13、 new DialogInterfaceOnClick2() .setNeutralButton(修改, new DialogInterfaceOnClick3() .setNegativeButton(退出, new DialogInterfaceOnClick6() .create();/设置取消按钮并创建 dlg.show();/显示public void alter()/修改页面LayoutInflater factory = LayoutInflater.from(login.this);/得到自定义对话框dialogView = factory.inflate(R.layout.l
14、ogin_changepwd, null);AlertDialog dlg = new AlertDialog.Builder(login.this).setTitle(请修改密码).setView(dialogView).setPositiveButton(确定, new DialogInterfaceOnClick5().setNegativeButton(取消, new DialogInterfaceOnClick4().create();/设置取消按钮并创建dlg.show();/显示 class DialogInterfaceOnClick2 implements DialogInt
15、erface.OnClickListener/登陆public void onClick(DialogInterface dialog, int whichButton) String pass = password.getText().toString();/拿到用户输入的值if(pass.equals(password01)Toast.makeText(login.this, 登陆成功, Toast.LENGTH_SHORT).show();Intent intent = new Intent();intent.setClass(login.this, AndroidcaseActivit
16、y.class);login.this.startActivity(intent);finish();elseToast.makeText(login.this, 密码错误!, Toast.LENGTH_SHORT).show();temp(); class DialogInterfaceOnClick3 implements DialogInterface.OnClickListener/修改public void onClick(DialogInterface dialog, int whicButton) alter();twoedit = (EditText)dialogView.fi
17、ndViewById(R.id.twoedit);threeedit = (EditText)dialogView.findViewById(R.id.threeedit);fouredit = (EditText)dialogView.findViewById(R.id.fouredit); class DialogInterfaceOnClick4 implements DialogInterface.OnClickListener/取消public void onClick(DialogInterface dialog, int whichButton) temp(); class Di
18、alogInterfaceOnClick6 implements DialogInterface.OnClickListener/退出public void onClick(DialogInterface dialog, int whichButton) login.this.finish();/点击退出按钮之后调用finish方法结束应用程序 class DialogInterfaceOnClick5 implements DialogInterface.OnClickListener/修改密码确定public void onClick(DialogInterface dialog, int
19、 whichButton) String two = twoedit.getText().toString();/旧密码String three = threeedit.getText().toString();/新密码String four = fouredit.getText().toString();/确认新密码if(two.equals(password01)&four.equals(three)/editor = shared.edit(); /打开指定shared文件,如果不存在则创建他editor.putString(password, three);mit();/提交temp(
20、);Toast.makeText(login.this, 修改成功, Toast.LENGTH_SHORT).show();else if(!two.equals(password01)Toast.makeText(login.this, 旧密码输入错误, Toast.LENGTH_SHORT).show();temp();else if(!four.equals(three)Toast.makeText(login.this, 两次新密码输入不一致, Toast.LENGTH_SHORT).show();temp();4.2 密码管理模块密码管理模块由四部分构成,即添加密码记录、查询密码记录
21、、预览密码记录和查看开发人员信息。主界面如图4-3所示。图 4-3 主界面4.2.1 添加密码记录(1)界面图 4-4 添加界面(2)实现代码package cn.riskycheng;import javax.security.auth.PrivateCredentialPermission;import android.R.string;import android.app.Activity;import android.content.ContentValues;import android.content.Context;import android.content.Intent;im
22、port android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListen
23、er;import android.widget.Button;import android.widget.EditText;import android.widget.ListAdapter;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import cn.riskycheng.base;public class add_record extends Activity private Button add_record_buttonadd
24、,add_record_buttonback; private EditText add_record_edittext01,add_record_edittext02,add_record_edittext03,add_record_edittext04; private Context context; private int back=0; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.add_reco
25、rd); add_record_buttonadd=(Button) findViewById(R.id.add_record_add); add_record_buttonback=(Button) findViewById(R.id.add_record_back); add_record_edittext01=(EditText) findViewById(R.id.add_record_edittext01); add_record_edittext02=(EditText) findViewById(R.id.add_record_edittext02); add_record_ed
26、ittext03=(EditText) findViewById(R.id.add_record_edittext03); add_record_edittext04=(EditText) findViewById(R.id.add_record_edittext04); base helperBase=new base(add_record.this, information.db); add_record_buttonadd.setOnClickListener(new OnClickListener()public void onClick(View arg0) AddData(); a
27、dd_record_buttonback.setOnClickListener(newOnClickListener()public void onClick(View v) Intent intent =new Intent();intent.setClass(add_record.this,AndroidcaseActivity.class);startActivity(intent);add_record.this.finish(); public void AddData() base base01=new base(this.getBaseContext(),information.
28、db); String user_keyword=add_record_edittext01.getText().toString(); String user_account=add_record_edittext02.getText().toString(); String user_password=add_record_edittext03.getText().toString(); String user_remind=add_record_edittext04.getText().toString(); if (user_keyword.equals()|user_account.
29、equals()|user_password.equals() Toast.makeText(this, input basic info!, Toast.LENGTH_SHORT).show();return; base01.add(user_keyword, user_account, user_password, user_remind); Toast.makeText(this, Add Successed!, Toast.LENGTH_SHORT).show(); Overridepublic boolean onKeyDown(int keyCode, KeyEvent event
30、) /back退出if(keyCode = KeyEvent.KEYCODE_BACK)back+;switch (back) case 1:Toast.makeText(add_record.this, 再按一次退出程序, Toast.LENGTH_LONG).show();break;case 2:back = 0;/初始化back值add_record.this.finish();android.os.Process.killProcess(android.os.Process.myPid();break;return true;/设置成false让back失效 ,true表示 不失效e
31、lsereturn super.onKeyDown(keyCode, event);package cn.riskycheng;import cn.riskycheng.AndroidcaseActivity;import cn.riskycheng.R;import android.R.integer;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.database.sqlite.SQLiteDatabase;import andro
32、id.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class update extends Activitypublic void onCreate(Bundle savedInstanceState)
33、super.onCreate(savedInstanceState); setContentView(R.layout.update);4.2.2 查询密码记录(1)界面图 4-5 查询界面图4-6 查询结果界面(2)实现代码package cn.riskycheng;import java.security.PublicKey;import android.R.integer;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEve
34、nt;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class search_record extends Activity private Button button_search,button_back;private int back=0;protected void onCreate(Bundle savedIns
35、tanceState) super.onCreate(savedInstanceState);setContentView(R.layout.query);button_search=(Button) findViewById(R.id.search_button01);button_back=(Button) findViewById(R.id.search_button02);final EditText searchText=(EditText) findViewById(R.id.search_edittext01);button_search.setOnClickListener(n
36、ew OnClickListener() public void onClick(View arg0) Intent intent=new Intent(); Bundle bundle=new Bundle(); bundle.putString(searchkey, searchText.getText().toString(); intent.setClass(search_record.this, search_result.class); intent.putExtras(bundle);startActivity(intent);search_record.this.finish(
37、);button_back.setOnClickListener(new OnClickListener() public void onClick(View arg0) Intent intent=new Intent();intent.setClass(search_record.this, AndroidcaseActivity.class);startActivity(intent);search_record.this.finish();Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) /back退出if(ke
38、yCode = KeyEvent.KEYCODE_BACK)back+;switch (back) case 1:Toast.makeText(search_record.this, 再按一次退出程序, Toast.LENGTH_LONG).show();break;case 2:back = 0;/初始化back值search_record.this.finish();android.os.Process.killProcess(android.os.Process.myPid();/关闭进程break;return true;/设置成false让back失效 ,true表示 不失效else
39、return super.onKeyDown(keyCode, event);package cn.riskycheng;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphi
40、cs.drawable.Drawable;import android.os.Bundle;import android.view.ContextMenu;import android.view.KeyEvent;import android.view.MenuItem;import android.view.View;import android.view.ContextMenu.ContextMenuInfo;import android.view.View.OnClickListener;import android.view.View.OnCreateContextMenuListen
41、er;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.ImageButton;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.SimpleCursorAdapter;import android.widget.Toast;import android.widget.AdapterVie
42、w.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;public class search_result extends Activity Intent intent;ListView list;String Id,Keyword,Account,Password,Remind;/查询到的字段Cursor cursor;String indexID;HashMap map;base helper;private Button backButton,indexbButton;ArrayLi
43、st idList = new ArrayList();private int back = 0;/判断按几次backOverrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.preview);list = (ListView)findViewById(R.id.preview_listview);/拿到ListView控件list.setOnItemClickListener(new ListOnItem();/ListView点击监听器list.setOnItemLongClickListener(new ListOnItemLong();list.setOnCreateContextMenuListener(new ListOnCreate();/ListView长按监听器backButton=(Button)findViewById(R.id.preview_item_back);backButton.setOnClickListener(new OnClickListener() pub