一、简介 
软件名称:开源密码管理软件 开发语言: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;   }             } }  
 
  |