java--联系人管理系统

来源:互联网 发布:幽灵行动荒野优化如何 编辑:程序博客网 时间:2024/05/21 09:22

要求:
      请使用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();    }}
0 0
原创粉丝点击