java联系人管理系统简单设计
程序员文章站
2024-03-13 08:52:03
本文实例为大家分享了java联系人管理系统毕业设计,供大家参考,具体内容如下
要求:
请使...
本文实例为大家分享了java联系人管理系统毕业设计,供大家参考,具体内容如下
要求:
请使用xml保存数据,完成一个联系人管理系统。
用户必须经过认证登录后方可以使用系统。
注册、增加、删除、查看联系人功能。
分模块进行设计。
两层框架-用户交互层,dao层。
其他支持层-数据封装层。
工具类-加密,工厂bean。
开发步骤:
第一步:设计数据结构-xml。
第一步:设计数据结构-xml。
第三步:准备资源并编码实现。
第四步:运行测试。
<?xml version="1.0" encoding="utf-8" standalone="no"?><contacts> <user name="jack" pwd="1234"> <contact id="707dede609dd4a2990f7cfa4cd5233f9"> <name>xiaoming</name> <sex>male</sex> <tel>123456</tel></contact> <contact id="80983802eaa6402d8bac8bb39e71c48f"> <name>12</name> <sex>12</sex> <tel>12</tel> </contact></user> <user name="rose" pwd="4321"> <contact id="eedb795b97194c3aaa9bacda7e2948e9"> <name>xiaoming</name> <sex>female</sex> <tel>123</tel> </contact></user> </contacts>
util
package cn.hncu.contact.util; import java.util.uuid; public class idgenerate { private idgenerate(){ } public static string getid(){ // return uuid.randomuuid().tostring(); return uuid.randomuuid().tostring().replace("-", ""); } }
package cn.hncu.contact.util; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import javax.xml.transform.transformer; import javax.xml.transform.transformerfactory; import javax.xml.transform.dom.domsource; import javax.xml.transform.stream.streamresult; import org.w3c.dom.document; public class mydocumentfactory { private static final string file_name="./xml/users.xml"; private static document dom=null; static{ documentbuilder db; try { db=documentbuilderfactory.newinstance().newdocumentbuilder(); dom=db.parse(file_name); } catch (exception e) { throw new runtimeexception("xml文档解析失败...",e); } } public static document getdocument(){ return dom; } public static void save(){ try { transformer tf=transformerfactory.newinstance().newtransformer(); tf.transform(new domsource(dom), new streamresult(file_name)); } catch (exception e) { throw new runtimeexception("xml文档存储失败...", e); } // configurationerror:配置异常 } }
dao
package cn.hncu.contact.dao; import java.util.list; import java.util.map; import org.w3c.dom.element; public interface contactdao { public abstract boolean login(string name,string pwd); public abstract list<map<string, string>> queryall(); public abstract element add(string name,string sex,string tel); public abstract void reg(string name,string pwd); public element delete(string id);//默认abstract public abstract element change(string id, string name, string sex, string tel); }
package cn.hncu.contact.dao; import java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; import org.w3c.dom.document; import org.w3c.dom.element; import org.w3c.dom.nodelist; import cn.hncu.contact.util.idgenerate; import cn.hncu.contact.util.mydocumentfactory; public class contactimpl implements contactdao{ private element currentuser; document dom=null; public contactimpl(){ } // private static string name=null; // private static string pwd=null; @override // public boolean login(string name2, string pwd2) { public boolean login(string name, string pwd) { // name=name2; // pwd=pwd2; dom=mydocumentfactory.getdocument(); element root=(element) dom.getfirstchild(); nodelist nodelist=root.getelementsbytagname("user"); for(int i=0;i<nodelist.getlength();i++){ element e=(element) nodelist.item(i); if(e.getattribute("name").equalsignorecase(name)&&e.getattribute("pwd").equalsignorecase(pwd)){ currentuser=e; return true; } } return false; } @override public list<map<string, string>> queryall() { list<map<string, string>> list=new arraylist<map<string,string>>(); if(currentuser==null){ return list ; } nodelist nodelist=currentuser.getelementsbytagname("contact"); for(int i=0;i<nodelist.getlength();i++){ map<string, string> map= new hashmap<string, string>(); element e=(element) nodelist.item(i); string id=e.getattribute("id"); map.put("id", id); string name=e.getelementsbytagname("name").item(0).gettextcontent(); map.put("name", name); string sex=e.getelementsbytagname("sex").item(0).gettextcontent(); map.put("sex", sex); string tel=e.getelementsbytagname("tel").item(0).gettextcontent(); map.put("tel", tel); list.add(map); } return list; } @override public element add(string name,string sex,string tel) { document dom=mydocumentfactory.getdocument(); element enewcontact=dom.createelement("contact"); enewcontact.setattribute("id", idgenerate.getid()); element namenew=dom.createelement("name"); namenew.settextcontent(name); enewcontact.appendchild(namenew); element sexnew=dom.createelement("sex"); sexnew.settextcontent(sex); enewcontact.appendchild(sexnew); element telnew=dom.createelement("tel"); telnew.settextcontent(tel); enewcontact.appendchild(telnew); currentuser.appendchild(enewcontact); mydocumentfactory.save(); // login(name, pwd); return enewcontact; } public element delete(string id) { nodelist nodelist=currentuser.getelementsbytagname("contact"); for(int i=0;i<nodelist.getlength();i++){ element e=(element) nodelist.item(i); if(e.getattribute("id").equals(id)){ currentuser.removechild(e);//把节点从树中移除 mydocumentfactory.save(); // login(name, pwd); return e; } } return null; } @override public void reg(string name, string pwd) { document dom=mydocumentfactory.getdocument(); element usernew=dom.createelement("user"); usernew.setattribute("name", name); usernew.setattribute("pwd", pwd); dom.getfirstchild().appendchild(usernew); mydocumentfactory.save(); } @override public element change(string id, string name, string sex, string tel) { nodelist nodelist=currentuser.getelementsbytagname("contact"); for(int i=0;i<nodelist.getlength();i++){ element e=(element) nodelist.item(i); if(e.getattribute("id").equals(id)){ e.getelementsbytagname("name").item(0).settextcontent(name); e.getelementsbytagname("sex").item(0).settextcontent(sex); e.getelementsbytagname("tel").item(0).settextcontent(tel); mydocumentfactory.save(); // login(name, pwd); return e; } } return null; } }
package cn.hncu.contact.dao; public class contactdaofactory { private contactdaofactory(){ } public static contactdao getcontactdao(){ return new contactimpl(); } }
cmd
package cn.hncu.contact.cmd; import java.util.list; import java.util.map; import java.util.scanner; import org.w3c.dom.element; import cn.hncu.contact.dao.contactdao; import cn.hncu.contact.dao.contactdaofactory; public class contanctaction { private contactdao dao=contactdaofactory.getcontactdao(); private scanner sc=null; private string delids[]; public contanctaction(){ sc=new scanner(system.in); while (true) { system.out.println("1:登录"); system.out.println("2:注册"); system.out.println("0:退出"); string op=sc.nextline(); if ("1".equals(op)) { login(); } else if ("2".equals(op)) { reg(); } else { // system.exit(0); break; } } } private void reg() { system.out.println("请输入用户名:"); string name=sc.nextline(); system.out.println("请输入用户密码:"); string pwd=sc.nextline(); system.out.println("请确认用户密码:"); string pwd2=sc.nextline(); if(pwd.equals(pwd2)){ dao.reg(name,pwd); }else{ system.out.println("两次密码输入不一致,请重新注册"); } } private void login() { system.out.println("请输入用户名:"); string name=sc.nextline(); system.out.println("请输入用户密码:"); string pwd=sc.nextline(); boolean boo=dao.login(name, pwd); if(boo){ system.out.println("登录成功..."); operation(); }else{ system.out.println("denglushibai"); } } private void operation() { list<map<string, string>> list = dao.queryall(); delids=new string[list.size()]; int i=0; for (map<string, string> map : list) { string id=map.get("id"); delids[i++]=id; } // while (true) { //因为共用同一棵dom树,所以每次增删改查之后,还是原来那棵dom树. //而while内的操作都是对之前的操作,所以要退出到上一阶段重新登陆,获取更新之后的dom树 system.out.println("1:显示联系人"); system.out.println("2:添加联系人"); system.out.println("3:删除联系人"); system.out.println("4:修改联系人"); system.out.println("0:退出"); string sel = sc.nextline(); if ("1".equals(sel)) { system.out.println("序号\t姓名\t性别\t电话"); system.out.println("------------------------------"); int j = 1; for (map<string, string> map : list) { string name = map.get("name"); string sex = map.get("sex"); string tel = map.get("tel"); system.out.println((j++) + "\t" + name + "\t" + sex + "\t" + tel); } } else if ("2".equals(sel)) { addcontact(); } else if ("3".equals(sel)) { delcontact(); } else if ("4".equals(sel)) { changecontact(); } else if ("0".equals(sel)) { return; // break; } // } operation(); } private void changecontact() { system.out.println("请输入要修改的联系人的序号:"); int num=sc.nextint(); sc.nextline();//吸掉换行符1 system.out.println("请输入要修改的联系人的姓名:"); string name=sc.nextline(); system.out.println("请输入要修改的联系人的姓别:"); string sex=sc.nextline(); system.out.println("请输入要修改的联系人的电话:"); string tel=sc.nextline(); element e=dao.change(delids[num-1],name,sex,tel); if(e!=null){ system.out.println(num+"号联系人更新之后:姓名:"+e.getelementsbytagname("name").item(0).gettextcontent() +"性别:"+e.getelementsbytagname("sex").item(0).gettextcontent() +"电话号码:"+e.getelementsbytagname("tel").item(0).gettextcontent()); }else{ system.out.println("修改失败..."); } } private void delcontact() { system.out.println("请输入删除的联系人序号:"); int num=sc.nextint(); sc.nextline();//吸掉换行符 element e=dao.delete(delids[num-1]); if(e==null){ system.out.println("删除失败,无此联系人"); }else{ system.out.println("删除联系人:"+e.getelementsbytagname("name").item(0).gettextcontent()+"成功..."); } } private void addcontact() { system.out.println("请输入联系人信息:"); system.out.println("姓名:"); string name=sc.nextline(); system.out.println("姓别:"); string sex=sc.nextline(); system.out.println("电话:"); string tel=sc.nextline(); element e=dao.add( name,sex, tel); system.out.println("添加联系人"+e.getelementsbytagname("name").item(0).gettextcontent()+"成功..."); } public static void main(string[] args) { new contanctaction(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。