密码保险箱的设计与实现嵌入式系统设计设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北经贸大学课程设计报告——嵌入式程序设计
密码保险箱的设计与实现
摘要
密码保险箱可使人们不必刻意去记住过多的密码,从而解决了容易忘记密码的问题。

该软件具有两大模块,即用户登录模块和密码记录管理模块。

其中用户登录模块实现了两个功能:用户登录和用户密码修改;密码记录管理模块主要实现了对密码记录进行添加、删除、查询及预览的功能。

本论文针对该软件的设计与实现做出了详细解说。

首先简要介绍了密码保险箱设计与实现的课题背景、研究的现状和研究的内容;接着按照软件工程的开发步骤重点介绍了密码保险箱设计与实现的过程:包括系统分析、系统概要设计、系统详细设计与实现以及系统测试;最后对本次课题设计做出总结。

关键字:Android、Java、密码保险箱、设计、实现
目录
密码保险箱的设计与实现 (1)
1 绪论 (1)
1,1 课题背景 (1)
1,2 研究现状 (1)
1,3 研究内容 (2)
2 系统分析 (3)
2.1 可行性分析 (3)
2.2 需求分析 (3)
2.2.1 功能分析 (3)
2.2.2 数据分析 (5)
3 系统概要设计 (7)
3.1 结构设计 (7)
3.2 数据设计 (8)
4 系统详细设计与实现 (9)
4.1 登录模块 (9)
4.2 密码管理模块 (14)
4.2.1 添加密码记录 (14)
4.2.2 查询密码记录 (19)
4.2.3 预览密码记录 (27)
4.2.4 数据库的实现 (32)
5 系统测试 (35)
5.1 测试的定义及目的 (35)
5.2 系统功能测试 (35)
5.3 系统实施运行 (36)
结论 (37)
密码保险箱的设计与实现
1 绪论
1,1 课题背景
当今社会,人们越来越注重个人隐私,因此,对于某些不希望让别人知道的东西,比如照片、日记、空间等都会设置密码;各种网站或者论坛都会要求创建一个用户名和密码来访问网站的特定内容;各个银行卡和银行账户也都要设置一个密码。

但是,密码设置多了,经常会发生忘记密码的情况,带来诸多不便。

因此,开发一个适和大众的、兼容性好的手机密码保险箱是很有必要的。

根据开发要求,它主要应用于智能手机,完成对密码的添加、删除和查询等操作,实现密码的基本管理功能。

1,2 研究现状
随着我国经济的高速发展和人民生活水平的提高,基于android的智能手机在目前已经得到广泛的发展和应用,身受很多大学生和社会人士的喜爱。

同时作为它的附属产业,手机软件业这一项新型产业也得到了迅猛发展,作为高科技领军产业中的一员大将,移动软件行业以其多样化和多功能化吸引了越来越多关注的目光。

目前的手机软件在客户端的应用极为广泛,密码保险箱就是其中之一。

现在,越来越多的程序开发员基于各种各样的目的编写密码保险箱,使得各式各样密码保险箱层出不穷,也使得人们可以根据自己的实际情况选择自己喜欢的那一个。

1,3 研究内容
通过对Android的学习和对密码保险箱的了解,我决定自己设计开发一个功能简单但使用的密码保险箱。

该密码保险箱会运用到嵌入式课本中讲到的相应的知识,如layout等来实现用户对密码一些基本操作。

本软件是一个非常方便快捷的密码管理软件,用户可以随心所欲地添加密码、查询密码、预览密码,删除密码等等,方便了密码管理,提高了管理效率,并且具有一定的安全性。

2 系统分析
2.1 可行性分析
该密码保险箱软件的可行性分析主要从技术、经济、操作以及法律和社会等方面来研究。

●技术可行性:目前使用andriod系统和eclipse应用程序可以很容易
的实现该软件。

●经济可行性:该软件的开发成本是很低的,但是却可以供多个用户
同时使用,足见其经济效益。

●操作可行性:该软件的操作方式可以在任何基于andriod的智能手
机上实现。

●法律和社会可行性:该软件开发过程中不仅没有涉及到各种合同、
侵权、责任等与法律、法规吻合或抵触的问题。

2.2 需求分析
2.2.1 功能分析
本软件具有如下主要功能:
●用户登录功能
●用户修改登录密码功能
●修改密码记录功能:包括添加、删除功能
●查询密码记录功能
●预览密码记录功能
●查看开发人员信息功能
该系统的数据流图:
顶层:如图2-1所示。

事物
用户密码保险箱
数据
图2-1 顶层数据流图
1层:如图2-2所示。

图 2-2 1层数据流图
2.2.2 数据分析
该系统有两个实体,即用户和密码记录。

用户的属性只有用户登录的密码,密码记录的属性有关键字、账号、密码、备注,并且用户管理密码记录,具体E-R 图如图2-3所示。

用户
登录 密码
用户密码库
修改
登录密码 新密码 用户 修改
密码记录 查询
密码记录库
密码记录 密码记录 请求查询
查询结果 预览
密码记录
请求预览
预览结果
图 2-3 E-R 图
用户
管理
密码记录 密码
账号
密码
备注
关键字
1
N
3 系统概要设计
3.1 结构设计
该密码保险箱系统主要有登录、修改登录密码、管理、查看开发人员信息和退出五部分组成,其中管理又分为密码记录查询、密码记录添加、密码记录预览和密码记录删除三部分,体系结构图如图3-1所示。

密码保险箱
登录
退
出密































修改登录密码密码记录查询
图3-1 体系结构图
3.2 数据设计
本系统用到了eclipse应用程序中的数据库,其表结构如表3-1所示。

表3-1 密码记录
字段名称数据类型能否为空说明ID string 否记录号keyword string 否关键字
account string 否账号
password string 否密码
remind string 是备注
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;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import youtInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class login extends Activity {
SharedPreferences 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(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.hint);
shared = getSharedPreferences("passwordshared", Activity.MODE_PRIVATE);
temp();
}
public void temp(){//登陆页面
editor = shared.edit();//打开指定shared文件,如果不存在则创建他
password01 = shared.getString("password", "admin");
LayoutInflater factory = LayoutInflater.from(this);//得到自定义对话框
DialogView = factory.inflate(yout.login, null);
password = (EditText)DialogView.findViewById(R.id.password);
AlertDialog dlg = new AlertDialog.Builder(this)
.setTitle("请输入密码")
.setIcon(R.drawable.dl_icon)
.setView(DialogView)
.setPositiveButton("登陆", new DialogInterfaceOnClick2())
.setNeutralButton("修改", new DialogInterfaceOnClick3())
.setNegativeButton("退出", new DialogInterfaceOnClick6())
.create();//设置取消按钮并创建
dlg.show();//显示
}
public void alter(){//修改页面
LayoutInflater factory = LayoutInflater.from(login.this);//得到自定义对话框
dialogView = factory.inflate(yout.login_changepwd, null);
AlertDialog dlg = new AlertDialog.Builder(login.this)
.setTitle("请修改密码")
.setView(dialogView)
.setPositiveButton("确定", new DialogInterfaceOnClick5())
.setNegativeButton("取消", new DialogInterfaceOnClick4())
.create();//设置取消按钮并创建
dlg.show();//显示
}
class DialogInterfaceOnClick2 implements DialogInterface.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, AndroidcaseActivity.class);
login.this.startActivity(intent);
finish();
}else{
Toast.makeText(login.this, "密码错误!",
Toast.LENGTH_SHORT).show();
temp();
}
}
}
class DialogInterfaceOnClick3 implements DialogInterface.OnClickListener{//修改public void onClick(DialogInterface dialog, int whicButton) {
alter();
twoedit = (EditText)dialogView.findViewById(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 DialogInterfaceOnClick6 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 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();
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 密码管理模块
密码管理模块由四部分构成,即添加密码记录、查询密码记录、预览密码记录和查看开发人员信息。

主界面如图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;
import 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.OnClickListener;
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,add_record_buttonback;
private EditText
add_record_edittext01,add_record_edittext02,add_record_edittext03,add_recor d_edittext04;
private Context context;
private int back=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.add_record);
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_edittext03=(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();
}
});
add_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.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.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();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {//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表示不失效}
else{
return 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 android.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 Activity{
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(yout.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.KeyEvent;
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 savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.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(new 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();
}
});
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();
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {//back退出if(keyCode == 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{
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.graphics.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.OnCreateContextMenuListener; 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.AdapterView.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<String,Object> map;
base helper;
private Button backButton,indexbButton;
ArrayList<String> idList = new ArrayList<String>();
private int back = 0;//判断按几次back
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.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() {
public void onClick(View arg0) {
Intent intent=new Intent();
intent.setClass(search_result.this, search_record.class);
startActivity(intent);
search_result.this.finish();
}
});
indexbButton=(Button)findViewById(R.id.preview_item_index);
indexbButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(search_result.this, AndroidcaseActivity.class);
startActivity(intent);
search_result.this.finish();
}
});
helper = new base(search_result.this,"information.db");
SQLiteDatabase db = helper.getReadableDatabase();
String bundle = (String)getIntent().getExtras().get("searchkey");
cursor = db.query("information", new
String[]{"ID","keyword","account","password","remind"},base.TABLE_KEYWOR D+" like ?",new String[] { "%"+bundle+"%"}, null, null, "ID" );//查询数据ArrayList<HashMap<String,Object>> listItem = new
ArrayList<HashMap<String,Object>>();//创建ListView
while(cursor.moveToNext()){ //判断下一个下标是否有内容
Id = cursor.getString(cursor.getColumnIndex("ID"));//ID
Keyword = cursor.getString(cursor.getColumnIndex("keyword"));
Account = cursor.getString(cursor.getColumnIndex("account"));
Password =
cursor.getString(cursor.getColumnIndex("password"));
Remind = cursor.getString(cursor.getColumnIndex("remind"));
idList.add(Id);
map = new HashMap<String,Object>();
map.put("Itemkeyword", "检索关键字:"+Keyword);
map.put("Itemaccount", "账号:"+Account);
map.put("Itempassword","密码:"+ Password);
map.put("Itemremind","备注:"+ Remind);
listItem.add(map);
}
SimpleAdapter listAdapter = new
SimpleAdapter(search_result.this,listItem, yout.preview_item,new
String[]{"Itemkeyword","Itemaccount","Itempassword","Itemremind"},new
int[]{R.id.check_textview01,R.id.check_textview02,R.id.check_textview03,R.id. check_textview04}); list.setAdapter(listAdapter);//添加到适配器并且显示}
class appendButton implements OnClickListener{//添加按钮监听器public void onClick(View v) {//点击按钮后跳到输入页面(Append.java)intent = new Intent(search_result.this, add_record.class);
startActivity(intent);
search_result.this.finish();
}
}
class ListOnItem implements OnItemClickListener{//ListView点击监听器
public void onItemClick(AdapterView<?> adapterView, View v, int position,long arg3) {//index是list中被选中元素的下标,从0开始
indexID = idList.get(position);
//点击打开
}
}
class ListOnItemLong implements OnItemLongClickListener{//ListView长按监听器
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
indexID = idList.get(position);
return false;
}
}
class ListOnCreate implements OnCreateContextMenuListener{//ListView 长按监听器弹出菜单
public void onCreateContextMenu(ContextMenu menu, View
v,ContextMenuInfo menuInfo) {
menu.setHeaderTitle("操作");
//menu.add(0,0,0,"打开");
menu.add(0,1,0,"删除");
//menu.add(0,2,0,"编辑");
}
}
public boolean onContextItemSelected(MenuItem item) {//长按弹出菜单响应函数
switch (item.getItemId()) {
case 1://删除
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("delete from information where
ID="+"'"+indexID+"'"+";");
intent = new Intent();
intent.setClass(search_result.this, AndroidcaseActivity.class);
startActivity(intent);
}
return super.onContextItemSelected(item);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {//back退出if(keyCode == KeyEvent.KEYCODE_BACK){
back++;
switch (back) {
case 1:
Toast.makeText(search_result.this, "再按一次退出程序", Toast.LENGTH_LONG).show();
break;
case 2:
back = 0;//初始化back值
search_result.this.finish();
android.os.Process.killProcess(android.os.Process.myPid());//关闭进程break;
}
return true;//设置成false让back失效,true表示不失效}
else{
return super.onKeyDown(keyCode, event);
}
}
}
4.2.3 预览密码记录
(1)界面
图4-7 预览界面(2)实现代码
package cn.riskycheng;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.graphics.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.OnCreateContextMenuListener;
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.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
public class query extends Activity {
Intent intent;
ListView list;
String id,keyword,account,password,remind;//查询到的字段
Cursor cursor;
String indexID;
private Button backButton,indexbButton;
HashMap<String,Object> map;
base helper;
ArrayList<String> idList = new ArrayList<String>();
private int back = 0;//判断按几次back
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.preview);
list = (ListView)findViewById(R.id.preview_listview);//拿到ListView控件
list.setOnItemClickListener(new ListOnItem());//ListView点击监听器
list.setOnItemLongClickListener(new ListOnItemLong());
list.setOnCreateContextMenuListener(new ListOnCreate());//ListView 长按监听器
helper = new base(query.this,"information.db");
SQLiteDatabase db = helper.getReadableDatabase();
cursor = db.query("information", new
String[]{"ID","keyword","account","password","remind"}, null, null, null, null, "ID");//查询数据
ArrayList<HashMap<String,Object>> listItem = new
ArrayList<HashMap<String,Object>>();//创建ListView
while(cursor.moveToNext()){ //判断下一个下标是否有内容
id = cursor.getString(cursor.getColumnIndex("ID"));//ID
keyword = cursor.getString(cursor.getColumnIndex("keyword"));
account = cursor.getString(cursor.getColumnIndex("account"));
password =
cursor.getString(cursor.getColumnIndex("password"));
remind = cursor.getString(cursor.getColumnIndex("remind"));
idList.add(id);
backButton=(Button)findViewById(R.id.preview_item_back);
backButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent intent=new Intent();
intent.setClass(query.this, search_record.class);
startActivity(intent);
query.this.finish();
}
});
indexbButton=(Button)findViewById(R.id.preview_item_index);
indexbButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(query.this, AndroidcaseActivity.class);
startActivity(intent);
query.this.finish();
}
});
map = new HashMap<String,Object>();
map.put("Itemkeyword", "检索关键字:"+keyword);
map.put("Itemaccount", "账号:"+account);
map.put("Itempassword","密码:"+ password);
map.put("Itemremind","备注:"+ remind);
listItem.add(map);
}
SimpleAdapter listAdapter = new SimpleAdapter(query.this,listItem, yout.preview_item,new
String[]{"Itemkeyword","Itemaccount","Itempassword","Itemremind"},new
int[]{R.id.check_textview01,R.id.check_textview02,R.id.check_textview03,R.id. check_textview04});
list.setAdapter(listAdapter);//添加到适配器并且显示
}
class appendButton implements OnClickListener{//添加按钮监听器public void onClick(View v) {//点击按钮后跳到输入页面(Append.java)intent = new Intent(query.this, add_record.class);
startActivity(intent);
query.this.finish();
}
}
class ListOnItem implements OnItemClickListener{//ListView点击监听器public void onItemClick(AdapterView<?> adapterView, View v, int position,long arg3) {//index是list中被选中元素的下标,从0开始
indexID = idList.get(position);
// check();//点击打开
}
}
class ListOnItemLong implements OnItemLongClickListener{//ListView长按监听器
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
indexID = idList.get(position);
return false;
}
}
class ListOnCreate implements OnCreateContextMenuListener{//ListView 长按监听器弹出菜单
public void onCreateContextMenu(ContextMenu menu, View
v,ContextMenuInfo menuInfo) {
menu.setHeaderTitle("操作");
//menu.add(0,0,0,"打开");
menu.add(0,1,0,"删除");
//menu.add(0,2,0,"编辑");
}
}
public boolean onContextItemSelected(MenuItem item) {//长按弹出菜单响应函数
switch (item.getItemId()) {
case 1://删除
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("delete from information where
ID="+"'"+indexID+"'"+";");
intent = new Intent(query.this, query.class);
startActivity(intent);
query.this.finish();
}
return super.onContextItemSelected(item);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {//back退出if(keyCode == KeyEvent.KEYCODE_BACK){
back++;
switch (back) {
case 1:
Toast.makeText(query.this, "再按一次退出程序",
Toast.LENGTH_LONG).show();
break;
case 2:
back = 0;//初始化back值
query.this.finish();
android.os.Process.killProcess(android.os.Process.myPid());//关闭进程break;
}
return true;//设置成false让back失效,true表示不失效}
else{
return super.onKeyDown(keyCode, event);
}
}
}
4.2.4 数据库的实现
package cn.riskycheng;
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class base extends SQLiteOpenHelper {
static final String TABLENAME="information";
final static String TABLE_ID = "ID";
final static String TABLE_KEYWORD = "keyword";
final static String TABLE_ACCOUNT = "account";
final static String TABLE_PASSWORD = "password";
final static String TABLE_REMIND = "remind";
ArrayList<String> arrayList;
final String CREATETABLE="CREATE TABLE "+TABLENAME+" ( "+TABLE_ID +" integer primary key autoincrement, "+TABLE_KEYWORD+" char(40), "+TABLE_ACCOUNT +" char(20), "+TABLE_PASSWORD+" char(20), "+TABLE_REMIND+" vchar(50))";
static final String DBNAME="information.db";
static final int DBVERSION=1;
public base(Context context,String ver) {
super(context, DBNAME, null, DBVERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATETABLE);
Log.d("abc", "created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public Cursor select() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLENAME, null, null, null, null, null, null);
return cursor;
}
public long add(String keyword,String account,String password,String remind ) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(TABLE_KEYWORD,keyword);
contentValues.put(TABLE_ACCOUNT,account);
contentValues.put(TABLE_PASSWORD,password);
contentValues.put(TABLE_REMIND,remind);
return db.insert(TABLENAME, null, contentValues);
}
public Cursor search(String keyword_for_search){
final String SEARCH="select *
from"+TABLENAME+"( where"+TABLE_KEYWORD+"like %"+keyword_for_sea rch+"%)";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(SEARCH, null);//这边写上你的查询语句
return cursor;
}
}。

相关文档
最新文档