一、简介
软件名称:开源密码管理软件 开发语言:Java MIDP版本:1.0 开发环境:CodeWarrior+J2ME WTK1.03 测试环境:J2ME WTK1.04+中文补充包
简介: 随着社会的发展和进步,每个人需要记忆的密码信息很多,如银行卡密码、邮箱密码、论坛密码等等,记忆这些种类繁多的密码,给人们带来了很大的不便。 本软件实现在用户手机中,存储和管理用户的各类密码信息。主要功能: 1、增加密码。存储新的密码,在新的密码中,用户可以存储密码ID,即密码用途,密码和备注信息等。 2、查看密码。查看、修改和删除已有的密码休息。 3、设置密码。可以为该软件设置进入密码。即在手机中使用该软件时,用户需要输入该密码方可进入。已提供删除该密码功能。
如果您有什么好的建议,请与我联系,[email protected]
二、使用J2ME WTK编译和运行该源代码 1、在Ktoolbar中新建一个项目: 项目名称:任意(例如pm) MIDlet类名:pm.core.PasswordManagerMidlet 2、将该源代码拷贝到您的J2ME WTK安装目录下的apps中, 路径为:项目名称\src\\pm\core\目录下 例如您的J2ME WTK安装在C:\J2mewtk目录,项目名称为pm,则完整路径为: C:\J2mewtk\apps\pm\src\pm\core 3、使用KToolbar编译和运行该项目。
备注:如果需要在模拟器中显示中文名称,可以在打开该项目的情况下,在KToolBar的setting(设置)\MIDlets下修改name为“开源密码管理软件”即可。
三、源代码 /** * 版权所有,2004- * 作者:陈跃峰 * email:[email protected] * 该代码,您可以任意使用,转贴,但是请在任何时候都不要删除该信息 * 若以商业方式使用,请于作者联系 * 版本号:0.90 * 完成时间:2004-7-07 * 修改时间:2004-8-17 */ package pm.core;
import java.io.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.io.*; import javax.microedition.rms.*;
/** * 密码管理软件 * 实现将常用的密码信息都保存在手机中。如银行密码、邮箱密码等等,该软件不访问网络,所以绝对不会泄漏您的个人隐私。 */ public class PasswordManagerMidlet extends MIDlet implements CommandListener { //显示对象 Display display; //主题 String title = "开源密码管理软件"; //软件主界面 List lstMain; //主界面确定按钮 Command cmdEnterMain; //退出按钮 Command cmdExit; //增加密码界面 Form frmAddPassword; //密码ID TextField tfId; //密码 TextField tfPsswordAdd; //确认密码 TextField tfConfirmPasswordAdd; //备注信息 TextField tfRemark; //确定按钮 Command cmdEnterAdd; //返回按钮 Command cmdBackAdd; //查看密码主界面 List lstView; //查看详细信息按钮 Command cmdInfo; //返回按钮 Command cmdBackViewMain; //查看密码中的显示详细信息窗口 TextBox tbViewInfo; //删除按钮 Command cmdDelView; //修改按钮 Command cmdModify; //返回按钮 Command cmdBackViewInfo; //查看密码中的修改密码窗口 Form frmViewModifyPassword; //密码文本框 TextField tfPasswordView; //确认密码文本框 TextField tfConfirmPasswordView; //修改按钮 Command cmdModifyView; //返回按钮 Command cmdBackViewModify; //设置密码界面 Form frmSetPassword; //密码 TextField tfPassword; //确认密码 TextField tfConfirmPassword; //确定按钮 Command cmdEnterSetPassword; //返回按钮 Command cmdBackSetPassword; //删除按钮 Command cmdDelSetPassword; //帮助界面 Form frmHelp; //帮助界面的返回按钮 Command cmdBackHelp; //关于界面 Form frmAbout; //关于界面的返回按钮 Command cmdBackAbout; //提示窗口 Alert alert; //启动时的输入密码界面 Form frmStartPassword; //密码输入文本框 TextField tfStartPassword; //密码界面中的确定按钮 Command cmdEnterStart; //密码 String password = ""; //记录对象 RecordStore rs; //存储密码ID内容 String[] id; //保存显示的密码ID对应的索引号,数组下标为0的代表第一个密码ID,1的代表第二个,依次类推 int[] idIndex; /** * 初始化界面元素 */ public PasswordManagerMidlet() { //初始化显示对象 display = Display.getDisplay(this); //初始化主窗体 lstMain = new List(title,List.IMPLICIT); lstMain.append("增加",null); lstMain.append("察看",null); lstMain.append("设置",null); lstMain.append("帮助",null); lstMain.append("关于",null); //初始化主界面确定按钮 cmdEnterMain = new Command("确定",Command.OK,1); //添加到主界面 lstMain.addCommand(cmdEnterMain); //初始化退出按钮 cmdExit = new Command("退出",Command.EXIT,1); //添加到主界面 lstMain.addCommand(cmdExit); //初始化增加密码界面 frmAddPassword = new Form(title); tfId = new TextField("密码ID:","",100,TextField.ANY); tfPsswordAdd = new TextField("密码:","",20,TextField.PASSWORD); tfConfirmPasswordAdd = new TextField("1确认密码:","",20,TextField.PASSWORD); tfRemark = new TextField("备注:","",100,TextField.ANY); cmdEnterAdd = new Command("确定",Command.OK,1); cmdBackAdd = new Command("返回",Command.BACK,1); //添加到增加密码界面 frmAddPassword.append(tfId); frmAddPassword.append(tfPsswordAdd); frmAddPassword.append(tfConfirmPasswordAdd); frmAddPassword.append(tfRemark); frmAddPassword.addCommand(cmdEnterAdd); frmAddPassword.addCommand(cmdBackAdd); //初始化查看密码主界面 lstView = new List(title,List.IMPLICIT); cmdInfo = new Command("查看",Command.SCREEN,1); cmdBackViewMain = new Command("返回",Command.BACK,1); //添加到查看密码主界面 lstView.addCommand(cmdInfo); lstView.addCommand(cmdBackViewMain); //初始化查看密码详细信息界面 tbViewInfo = new TextBox("详细信息","",200,TextField.ANY); cmdDelView =new Command("删除",Command.SCREEN,1); cmdModify = new Command("修改",Command.SCREEN,1); cmdBackViewInfo =new Command("返回",Command.BACK,1); //添加到查看密码详细信息界面中 tbViewInfo.addCommand(cmdDelView); tbViewInfo.addCommand(cmdModify); tbViewInfo.addCommand(cmdBackViewInfo); //初始化查看密码中的修改密码界面 frmViewModifyPassword = new Form("修改密码"); tfPasswordView = new TextField("密码:","",20,TextField.PASSWORD); tfConfirmPasswordView = new TextField("确认密码:","",20,TextField.PASSWORD); cmdModifyView = new Command("确定",Command.OK,1); cmdBackViewModify = new Command("返回",Command.BACK,1); //添加到修改密码界面 frmViewModifyPassword.append(tfPasswordView); frmViewModifyPassword.append(tfConfirmPasswordView); frmViewModifyPassword.addCommand(cmdModifyView); frmViewModifyPassword.addCommand(cmdBackViewModify); //初始化设置密码界面 frmSetPassword = new Form("设置密码"); tfPassword = new TextField("密码:","",20,TextField.PASSWORD); tfConfirmPassword = new TextField("确认密码:","",20,TextField.PASSWORD); cmdEnterSetPassword = new Command("确定",Command.OK,1); cmdBackSetPassword = new Command("返回",Command.BACK,1); cmdDelSetPassword = new Command("删除",Command.SCREEN,1); //添加到设置密码界面 frmSetPassword.append(tfPassword); frmSetPassword.append(tfConfirmPassword); frmSetPassword.addCommand(cmdEnterSetPassword); frmSetPassword.addCommand(cmdBackSetPassword); frmSetPassword.addCommand(cmdDelSetPassword); //初始化帮助界面 frmHelp = new Form("帮助"); frmHelp.append("开源密码管理软件是一款帮助您管理各种密码的软件,\"增加\"中可以增加新的密码,\"察看\"中可以查看、修改和删除已有的密码,\"设置\"中可以进行该软件的进入密码设置。"); //初始化返回按钮 cmdBackHelp = new Command("返回",Command.BACK,1); //添加到帮助界面 frmHelp.addCommand(cmdBackHelp); //初始化关于界面 frmAbout = new Form("关于..."); frmAbout.append("版权所有 2004- 作者:陈跃峰 email:[email protected] 欢迎您提出该版本的更新建议"); //初始化返回按钮 cmdBackAbout = new Command("返回",Command.BACK,1); //添加到关于界面 frmAbout.addCommand(cmdBackAbout); //初始化提示窗口 alert = new Alert(title); //初始化启动时的密码界面 frmStartPassword = new Form(title); //初始化启动时的密码输入文本框 tfStartPassword = new TextField("请输入密码","",20,TextField.PASSWORD); //初始化确定按钮 cmdEnterStart = new Command("确定",Command.OK,1); //添加到密码界面中 frmStartPassword.append(tfStartPassword); frmStartPassword.addCommand(cmdEnterStart); frmStartPassword.addCommand(cmdExit); //事件处理 lstMain.setCommandListener(this); frmHelp.setCommandListener(this); frmAbout.setCommandListener(this); frmStartPassword.setCommandListener(this); frmSetPassword.setCommandListener(this); frmAddPassword.setCommandListener(this); lstView.setCommandListener(this); tbViewInfo.setCommandListener(this); frmViewModifyPassword.setCommandListener(this); /* //测试代码,添加记录 try{ rs = RecordStore.openRecordStore("password",true); rs.setRecord(1,new String("123456").getBytes(),0,6); // System.out.println(i); rs.closeRecordStore(); }catch(Exception e){ System.out.println("测试代码--添加记录:" + e); } //测试代码,删除所有记录集 try{ RecordStore.deleteRecordStore("id"); RecordStore.deleteRecordStore("pwd"); RecordStore.deleteRecordStore("remark"); RecordStore.deleteRecordStore("flag"); //RecordStore.deleteRecordStore("password"); }catch(Exception e){ System.out.println(e); } */ } /** * 启动方法 */ public void startApp () { try{ //打开密码纪录 rs = RecordStore.openRecordStore("password",false); //读取密码 byte[] b = rs.getRecord(1); password = new String(b,"iso8859_1"); //关闭记录 rs.closeRecordStore(); //显示输入密码界面 display.setCurrent(frmStartPassword); }catch(Exception e){ //没有密码记录,则显示主界面 display.setCurrent(lstMain); } }
public void destroyApp(boolean unconditional) {}
public void pauseApp() {} /** * 事件处理 */ public void commandAction(Command c, Displayable s) { //处理启动时的密码窗口中的确定按钮事件 if(c == cmdEnterStart){ //用户输入的密码 String pwd = tfStartPassword.getString(); //判断用户输入是否为空 if(pwd == null || pwd.length() ==0){ //输入为空 //显示警告提示 displayAlert("请输入密码!"); }else{ //输入不为空 //比较密码 if(pwd.equals(password)){ //密码正确 //显示主界面 display.setCurrent(lstMain); }else{//密码错误 //显示警告提示 displayAlert("密码错误,请重新输入!"); } } } //处理退出事件 if(c == cmdExit){ destroyApp(false); notifyDestroyed(); } //处理主界面中的选择 if(c == cmdEnterMain){ int index = lstMain.getSelectedIndex(); //System.out.println(index); //选择“增加” if(index == 0){ //显示增加密码界面 display.setCurrent(frmAddPassword); } //选择“查看” if(index == 1){ //获得密码ID列表 try{ //打开flag记录集 RecordStore rsTemp = RecordStore.openRecordStore("flag",true); //打开ID记录集 rs = RecordStore.openRecordStore("id",true); //获得记录集中记录的个数 int num = rs.getNumRecords(); //初始化密码ID索引数组 idIndex = new int[num]; //创建存储ID的数组 id = new String[num]; //将ID信息读入ID数组中 int j = 0;//代表数组的下标 for(int i = 1;i <= num;i++){ //如果flag记录集中的值为0,则读,1代表删除,则不读 String flagTemp = new String(rsTemp.getRecord(i)); //System.out.println("" + i + ":" + flagTemp); if(flagTemp.equals("0")){ idIndex[j] = i; //获得显示的内容于记录集中的索引号的对应关系 id[j] = new String(rs.getRecord(i),"gb2312"); j++; } } //清空lstView中的显示 for(int i = lstView.size() - 1;i >= 0;i--){ lstView.delete(i); } //将ID信息显示在lstView中 for(int i = 0;i < j;i++){ lstView.append(id[i],null); } //显示lstView display.setCurrent(lstView); }catch(Exception e){ System.out.println("查看密码失败:" +e); //查看失败 displayAlert("查看密码失败!"); } } //选择“设置” if(index == 2){ //显示设置密码界面 display.setCurrent(frmSetPassword); } //选择“帮助” if(index == 3){ //显示帮助界面 display.setCurrent(frmHelp); } //选择“关于” if(index == 4){ //显示关于界面 display.setCurrent(frmAbout); } //未选择 if(index == -1){ displayAlert("请选择您要察看的项目"); } } //处理设置密码界面中的返回按钮 if(c == cmdBackSetPassword){ //显示主界面 display.setCurrent(lstMain); } //处理设置密码界面中的确定按钮 if(c == cmdEnterSetPassword){ //密码 String pwd1 = tfPassword.getString(); //确认密码 String pwd2 = tfConfirmPassword.getString(); //判断用户是否输入为空 if(pwd1.length() !=0 && pwd2.length() != 0){ //判断密码和确认密码是否相同 if(pwd1.equals(pwd2)){ //设置密码 try{ //打开密码纪录 rs = RecordStore.openRecordStore("password",true); //System.out.println("rs.getNumRecords():" + rs.getNumRecords()); //判断是否已设置密码 if(rs.getNumRecords() > 0){ //设置密码 rs.setRecord(1,pwd1.getBytes(),0,pwd1.length()); }else{ //未设置密码 rs.addRecord(pwd1.getBytes(),0,pwd1.length()); } //关闭记录 rs.closeRecordStore(); //提示修改成功 displayAlert("密码设置成功"); }catch(Exception e){ //System.out.println(e); //设置失败 displayAlert("密码设置失败!"); } }else{ //提示用户密码和确认密码必须相同 displayAlert("密码和确认密码不相同"); } }else{ //提示用户密码和确认密码不能为空 displayAlert("请检查密码和确认密码是否为空!"); } } //处理帮助界面中的返回按钮 if(c == cmdBackHelp){ //显示主界面 display.setCurrent(lstMain); } //处理关于界面中的返回按钮 if(c == cmdBackAbout){ //显示主界面 display.setCurrent(lstMain); } //处理增加密码界面中的返回按钮 if(c == cmdBackAdd){ //显示主界面 display.setCurrent(lstMain); } //处理增加密码界面中的确定按钮事件 if(c == cmdEnterAdd){ String idAdd = tfId.getString().toString(); //id String passwordAdd = tfPsswordAdd.getString();//密码 String confirmPasswordAdd = tfConfirmPasswordAdd.getString();//确认密码 String remarkAdd = tfRemark.getString();//备注 //判断是否完整输入,备注可以为空 if(idAdd.length() != 0 && passwordAdd.length() != 0 && confirmPasswordAdd.length() != 0){ //比较密码和确认密码是否相同 if(passwordAdd.equals(confirmPasswordAdd)){ //写入记录集中 try{ //写入ID rs = RecordStore.openRecordStore("id",true); rs.addRecord(idAdd.getBytes(),0,idAdd.getBytes().length); rs.closeRecordStore(); //写入密码 rs = RecordStore.openRecordStore("pwd",true); rs.addRecord(passwordAdd.getBytes(),0,passwordAdd.getBytes().length); rs.closeRecordStore(); //写入备注 rs = RecordStore.openRecordStore("remark",true); rs.addRecord(remarkAdd.getBytes(),0,remarkAdd.getBytes().length); rs.closeRecordStore(); //写入是否删除的标记,0代表正常,1代表删除 rs = RecordStore.openRecordStore("flag",true); rs.addRecord(new String("0").getBytes(),0,1); rs.closeRecordStore(); //提示密码增加成功 displayAlert("密码增加成功!"); }catch(Exception e){ //显示警告信息 displayAlert("增加密码失败!"); } }else{ //显示警告信息 displayAlert("密码和确认密码是否相同!"); } }else{ //显示警告信息 displayAlert("请检查输入是否完整!"); } } //处理查看密码主界面中的返回按钮 if(c == cmdBackViewMain){ //显示主界面 display.setCurrent(lstMain); } //处理查看密码主界面中的查看按钮事件 if(c == cmdInfo){ int index = lstView.getSelectedIndex(); //需要查看的信息id //如果没有记录,则直接返回 if(index == -1) return; //获得信息 String s1 = getInfoById(idIndex[index]); if(s != null){ //显示到tbViewInfo中 tbViewInfo.setString(s1); }else{ //显示提示信息,查看失败 displayAlert("无法获得详细信息"); } //显示密码详细信息界面 display.setCurrent(tbViewInfo); } //处理密码详细信息界面中的返回按钮事件 if(c == cmdBackViewInfo){ //显示查看密码主界面 display.setCurrent(lstView); } //处理密码详细信息界面中的修改按钮事件 if(c == cmdModify){ //显示修改密码界面 display.setCurrent(frmViewModifyPassword); } //处理密码详细信息界面中的删除按钮事件 if(c == cmdDelView){ //查看密码界面中被选中的索引号 int index = lstView.getSelectedIndex(); //删除纪录集中的内容 try{ //向记录集中的flag内容中写入删除标记 rs = RecordStore.openRecordStore("flag",true); rs.setRecord(idIndex[index],new String("1").getBytes(),0,1); rs.closeRecordStore(); //返回主界面 display.setCurrent(lstMain); }catch(Exception e){ System.out.println(e); //显示警告信息 displayAlert("删除密码失败,请重试!"); } } //处理修改密码界面中的返回按钮事件 if(c == cmdBackViewModify){ int index = lstView.getSelectedIndex(); //需要查看的信息id //获得信息 String s1 = getInfoById(idIndex[index]); if(s != null){ //显示到tbViewInfo中 tbViewInfo.setString(s1); }else{ //显示提示信息,查看失败 displayAlert("无法获得详细信息"); } //显示密码详细信息界面 display.setCurrent(tbViewInfo); } //处理修改密码界面中的修改按钮事件 if(c == cmdModifyView){ //密码框用户输入 String pwd1 = tfPasswordView.getString(); //确认密码框用户输入 String pwd2 = tfConfirmPasswordView.getString(); //判断用户的输入 if(pwd1.length() != 0 && pwd2.length() != 0){ //用户输入了密码和确认密码 //判断密码和确认密码是否相同 if(pwd1.equals(pwd2)){//相同 int index = lstView.getSelectedIndex(); //需要查看的信息id //修改密码 try{ //修改密码 rs = RecordStore.openRecordStore("pwd",true); rs.setRecord(idIndex[index],pwd1.getBytes(),0,pwd1.length()); rs.closeRecordStore(); //显示 //获得信息 String s1 = getInfoById(idIndex[index]); if(s != null){ //显示到tbViewInfo中 tbViewInfo.setString(s1); }else{ //显示提示信息,查看失败 displayAlert("无法获得详细信息"); } //显示密码详细信息界面 display.setCurrent(tbViewInfo); }catch(Exception e){ //显示修改失败 displayAlert("修改密码失败"); } }else{//不相同 //显示密码和确认密码不相同 displayAlert("密码和确认密码不同!"); } }else{ //密码或者确认密码,用户未输入 //提示用户输入 displayAlert("请检查输入是否完整,其中密码和确认密码均不能为空!"); } } //设置进入密码界面中的删除按钮事件 if(c == cmdDelSetPassword){ try{ //判断用户是否已设置密码 rs = RecordStore.openRecordStore("password",true); int numTemp = rs.getNumRecords(); //记录集中的纪录数量 rs.closeRecordStore(); //用户已设置密码 if(numTemp > 0){ //删除,彻底删除 RecordStore.deleteRecordStore("password"); //提示删除密码成功 displayAlert("删除密码成功,请返回!"); }else{//用户未设置密码 //提示尚未设置密码 displayAlert("您尚未设置密码,无法删除!"); } }catch(Exception e){ //显示删除失败 displayAlert("删除密码失败,请重试!"); } } } /** *显示提示或者警告信息 *@param msg 信息内容 */ public final void displayAlert(String msg){ //设置提示信息 alert.setString(msg); //显示3秒 alert.setTimeout(3000); display.setCurrent(alert); } /** * 获得指定id的纪录内容,包括密码id,密码和备注信息 * @param id 获得的记录的ID * @return 记录的内容 */ public final String getInfoById(int id){ try{ //密码ID rs = RecordStore.openRecordStore("id",false); String idView = new String(rs.getRecord(id)).toString(); rs.closeRecordStore(); //密码 rs = RecordStore.openRecordStore("pwd",false); String pwdView = new String(rs.getRecord(id)).toString(); rs.closeRecordStore(); //备注 rs = RecordStore.openRecordStore("remark",false); String remarkView = new String(rs.getRecord(id)).toString(); rs.closeRecordStore(); //返回 return "密码id:" + idView + " 密码:" + pwdView + " 备注:" + remarkView; }catch(Exception e){ System.out.println (e); return null; } } } 
|