javaweb学习笔记_通讯录小程序实现

Posted Yoriskkk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb学习笔记_通讯录小程序实现相关的知识,希望对你有一定的参考价值。

1.通讯录需求

  • 增删改查联系人
  • 数据保存在xml文档中

2.使用到的知识点

  • 使用dom4j读取,创建和写出xml文件
  • 使用xPath快速获取所需节点对象

3.代码实现

主界面的实现

  1 public class MainProgram {
  2     public static void main(String[] args) {
  3         
  4         try {
  5             /*
  6              * Scanner scanner = new Scanner(System.in); String command =
  7              * scanner.next();
  8              */
  9             BufferedReader br = new BufferedReader(new InputStreamReader(
 10                     System.in));
 11             ContactOperator operator = new ContactOperatorImpl();
 12             //不断的接受输入
 13             while(true){
 14                 // 1.看到菜单
 15                 printMenu();
 16                 // 2.接受用户输入的命令
 17                 String command = br.readLine();
 18                 //3.根据用户的输入不同执行不通的操作
 19                 if(command.equals("1")){
 20                     //添加联系人功能
 21                     //获取用户输入的数据
 22                     Contact contact = new Contact();
 23                     System.out.println("请输入编号:");
 24                     String id = br.readLine();
 25                     System.out.println("请输入姓名:");
 26                     String name = br.readLine();
 27                     System.out.println("请输入性别:");
 28                     String gender = br.readLine();
 29                     System.out.println("请输入年龄:");
 30                     String age = br.readLine();
 31                     System.out.println("请输入电话:");
 32                     String phone = br.readLine();
 33                     System.out.println("请输入邮箱:");
 34                     String email = br.readLine();
 35                     System.out.println("请输入qq:");
 36                     String qq = br.readLine();
 37                     
 38                     contact.setAge(Integer.parseInt(age));
 39                     contact.setEmail(email);
 40                     contact.setGender(gender);
 41                     contact.setId(id);
 42                     contact.setName(name);
 43                     contact.setPhone(phone);
 44                     contact.setQq(qq);
 45                     operator.addContact(contact);
 46                     System.out.println("添加成功!");
 47                 }else if(command.equals("2")){
 48                     //修改联系人功能
 49                     //获取用户输入的数据
 50                     Contact contact = new Contact();
 51                     System.out.println("请输入需要修改的编号:");
 52                     String id = br.readLine();
 53                     System.out.println("请输入需要修改的姓名:");
 54                     String name = br.readLine();
 55                     System.out.println("请输入需要修改的性别:");
 56                     String gender = br.readLine();
 57                     System.out.println("请输入需要修改的年龄:");
 58                     String age = br.readLine();
 59                     System.out.println("请输入需要修改的电话:");
 60                     String phone = br.readLine();
 61                     System.out.println("请输入需要修改的邮箱:");
 62                     String email = br.readLine();
 63                     System.out.println("请输入需要修改的qq:");
 64                     String qq = br.readLine();
 65                     
 66                     contact.setAge(Integer.parseInt(age));
 67                     contact.setEmail(email);
 68                     contact.setGender(gender);
 69                     contact.setId(id);
 70                     contact.setName(name);
 71                     contact.setPhone(phone);
 72                     contact.setQq(qq);
 73                     operator.updateContact(contact);
 74                     System.out.println("修改成功!");
 75                 }else if(command.equals("3")){
 76                     //删除联系人功能
 77                     //获取需要删除的ID
 78                     System.out.println("请输入需要删除的联系人ID:");
 79                     String id = br.readLine();
 80                     operator.deleteContact(id);    
 81                     System.out.println("删除成功");
 82                 }else if(command.equals("4")){
 83                     //查看联系人功能
 84                     List<Contact> list = operator.findAll();                
 85                     //打印输出
 86                     for (Contact contact : list) {
 87                         System.out.println(contact);
 88                     }
 89                 }else if(command.equals("q")){
 90                     break;                            
 91                 }else if(command.equals("Q")){
 92                     break;                            
 93                 }else{
 94                     System.out.println("输入的命令有误");
 95                 }
 96             }
 97         } catch (IOException e) {
 98             e.printStackTrace();
 99             throw new RuntimeException(e); 
100         }
101     }
102 
103     private static void printMenu() {
104         System.out.println("=========================");
105         System.out.println("[1]添加联系人");
106         System.out.println("[2]修改联系人");
107         System.out.println("[3]删除联系人");
108         System.out.println("[4]查看所有联系人");
109         System.out.println("[Q]退出系统");
110         System.out.println("=========================");
111     }
112 }
 1 /**
 2  * 该接口用于存放联系人相关操作的方法
 3  * @author Yoriskkk
 4  *
 5  */
 6 public interface ContactOperator {
 7     public void addContact(Contact contact);//增加联系人
 8     public void updateContact(Contact contact);//修改联系人
 9     public void deleteContact(String id);//删除联系人
10     public List<Contact> findAll();//查询联系人
11 }
  1 /**
  2  * 实现联系人接口
  3  * @author Yoriskkk
  4  *
  5  */
  6 public class ContactOperatorImpl implements ContactOperator{
  7     /**
  8      * 添加联系人
  9      */
 10     @Override
 11     public void addContact(Contact contact) {
 12         try {
 13             File file = new File("e:/contact.xml");
 14             Document doc = null;
 15             Element rootElement = null;
 16             Element contactElement = null;
 17             if(!file.exists()){
 18                 //如果没有xml文件,则创建xml文件
 19                 doc = DocumentHelper.createDocument();
 20                 //创建根标签
 21                 rootElement = doc.addElement("ContacList");
 22                 contactElement= rootElement.addElement("Contact");
 23             }else{
 24                 //如果有xml文件,则读取xml文件
 25                 doc = new SAXReader().read(file);
 26                 //读取根标签
 27                 Element rootElement2 = doc.getRootElement();
 28                 contactElement= rootElement2.addElement("Contact");
 29             }
 30             /**
 31              * 需求:把contact对象保存到xml文件中
 32              */
 33             
 34             //添加contact标签
 35             /**
 36              * <contact id="1">
 37              *         <name>eric</name>
 38              *         <gender>男</gender>
 39              *         <age>20</age>
 40              *         <phone>21312312312</phone>
 41              *         <email>[email protected]</email>
 42              *         <qq>465465432</qq>
 43              * </contact>
 44              */
 45             
 46             contactElement.addAttribute("id", contact.getId());
 47             contactElement.addElement("name").setText(contact.getName());
 48             contactElement.addElement("gender").setText(contact.getGender());
 49             contactElement.addElement("age").setText(contact.getAge()+"");
 50             contactElement.addElement("phone").setText(contact.getPhone());
 51             contactElement.addElement("email").setText(contact.getEmail());
 52             contactElement.addElement("qq").setText(contact.getQq());
 53             
 54             //把Document写出到xml文件
 55             XMLUtil.write2xml(doc);
 56         } catch (Exception e) {
 57             e.printStackTrace();
 58             throw new RuntimeException(e);
 59         }
 60     }
 61     
 62     /**
 63      * 修改联系人
 64      */
 65     @Override
 66     public void updateContact(Contact contact) {
 67         /**
 68          * 需求:修改id值为2的联系人
 69          * 1)查询id值为2的contact标签
 70          * 2)修改contact标签的内容
 71          */
 72         
 73         try {
 74             //1.读取xml文件
 75             Document doc = XMLUtil.getDocument();
 76             Element contactElem = (Element)doc.selectSingleNode("//Contact[@id=‘"+contact.getId()+"‘]");
 77             //2.修改contact标签内容
 78             contactElem.element("name").setText(contact.getName());
 79             contactElem.element("gender").setText(contact.getGender());
 80             contactElem.element("age").setText(contact.getAge()+"");
 81             contactElem.element("phone").setText(contact.getPhone());
 82             contactElem.element("email").setText(contact.getEmail());
 83             contactElem.element("qq").setText(contact.getQq());
 84             //把Document写出到xml文件
 85             XMLUtil.write2xml(doc);
 86         
 87         } catch (Exception e) {
 88             // TODO Auto-generated catch block
 89             e.printStackTrace();
 90             throw new RuntimeException(e);
 91         }
 92     }
 93     /**
 94      * 删除联系人
 95      */
 96     @Override
 97     public void deleteContact(String id) {
 98         try {
 99             //1.读取xml文件
100             Document doc = XMLUtil.getDocument();
101             Element contactElem = (Element)doc.selectSingleNode("//Contact[@id=‘"+id+"‘]");
102             //2.修改contact标签内容
103             contactElem.detach();
104             //把Document写出到xml文件
105             XMLUtil.write2xml(doc);
106         
107         } catch (Exception e) {
108             // TODO Auto-generated catch block
109             e.printStackTrace();
110             throw new RuntimeException(e);
111         }
112     }
113     /**
114      * 查看联系人
115      */
116     @Override
117     public List<Contact> findAll() {
118         //1.读取xml文件
119         Document doc = XMLUtil.getDocument();
120         //2.创建List对象
121         List<Contact> list = new ArrayList<Contact>();
122         //3.读取contact标签
123         List<Element> conList = (List<Element>)doc.selectNodes("//Contact");
124         for (Element e : conList) {
125             //创建contact对象
126             Contact c = new Contact();
127             c.setAge(Integer.parseInt(e.elementText("age")));
128             c.setEmail(e.elementText("email"));
129             c.setGender(e.elementText("gender"));
130             c.setId(e.attributeValue("id"));
131             c.setName(e.elementText("name"));
132             c.setPhone(e.elementText("phone"));
133             c.setQq(e.elementText("qq"));
134             //把contact放入list中
135             list.add(c);
136         }
137         return list;
138     }
139 }

将共性代码抽取出来,放在XMLUtil类中

 1 /**
 2  * xml工具类
 3  * @author Yoriskkk
 4  *
 5  */
 6 public class XMLUtil {
 7     
 8     /**
 9      * 写出到xml文件中
10      */
11     public static void write2xml(Document doc){
12         try {
13             FileOutputStream out = new FileOutputStream("e:/contact.xml");
14             OutputFormat format = OutputFormat.createPrettyPrint();
15             format.setEncoding("utf-8");
16             XMLWriter writer = new XMLWriter(out,format);
17             writer.write(doc);
18             writer.close();
19         } catch (Exception e) {
20             // TODO Auto-generated catch block
21             e.printStackTrace();
22             throw new RuntimeException(e);
23         }
24     }
25     
26     /**
27      * 获得文件
28      */
29     public static Document getDocument(){
30         //Document doc = null;
31         try {
32             Document doc = new SAXReader().read(new File("e:/contact.xml"));
33             return doc;
34         } catch (Exception e) {
35             e.printStackTrace();
36             throw new RuntimeException(e);
37         }
38         
39     }
40 }

 


以上是关于javaweb学习笔记_通讯录小程序实现的主要内容,如果未能解决你的问题,请参考以下文章

JAVAWEB学习笔记25_Linux基础

JAVAWEB学习笔记24_filter实现自动登录和解决全局的编码问题

JAVAWEB学习笔记21_多条件查询attr和prop的区别和分页的实现

JavaWeb学习笔记六 JSP

JAVAWEB学习笔记16_session&cookie

JAVAWEB学习笔记10_JDBC连接池&DBUtils