通讯录系统(控制台+dom4j+xPath+xml)

来源:互联网 发布:仁和知柏地黄丸怎么样 编辑:程序博客网 时间:2024/06/09 21:38
设计一个通讯录程序
    联系人: 编号  姓名  性别  年龄  电话  QQ 邮箱
    功能要求:
        添加联系人
        修改联系人
        删除联系人
        查询所有联系人
                
    要求: 
    1)交互使用console(控制台)    
    2)数据存储到xml文件(作为“数据库”)(使用dom4j)  
Main:
  1. package com.contactSystem;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.io.UnsupportedEncodingException;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import org.dom4j.Document;
  12. import org.dom4j.Element;
  13. import org.dom4j.io.OutputFormat;
  14. import org.dom4j.io.SAXReader;
  15. import org.dom4j.io.XMLWriter;
  16. /**
  17. * Author:Liu Zhiyong(QQ:1012421396)
  18. * Version:Version_1
  19. * Date:2016年11月11日17:30:00
  20. * Desc:通讯录程序
  21. ================
  22. 【1】添加联系人
  23. 【2】修改联系人
  24. 【3】删除联系人
  25. 【4】查询所有联系人
  26. 【Q】退出程序
  27. ================
  28. */
  29. public class ContactMain {
  30. private static BufferedReader buffReader = null;
  31. public static void main(String[] args) throws Exception {
  32. init();
  33. }
  34. private static void init() throws IOException, Exception {
  35. while(true){
  36. System.out.println("==================");
  37. System.out.println("【1】添加联系人");
  38. System.out.println("【2】修改联系人");
  39. System.out.println("【3】删除联系人");
  40. System.out.println("【4】查询所有联系人");
  41. System.out.println("【Q】退出程序");
  42. System.out.println("==================");
  43. System.out.println("请选择功能:(1、2、3、4、Q)");
  44. //获取输入流
  45. buffReader = new BufferedReader(new InputStreamReader(System.in));
  46. //读取键盘输入选择的功能
  47. String option = buffReader.readLine();
  48. char opt = option.trim().charAt(0);//字符串两边去空格后,取第一个字符
  49. switch(opt){
  50. case '1':
  51. addContact();
  52. break;
  53. case '2':
  54. editContact();
  55. break;
  56. case '3':
  57. deleteContact();
  58. break;
  59. case '4':
  60. getAllContacts();
  61. break;
  62. case 'Q':
  63. case 'q':
  64. existSystem();
  65. break;
  66. }
  67. }
  68. }
  69. /**
  70. * 【1】添加联系人
  71. * @throws Exception
  72. */
  73. private static void addContact() throws Exception {
  74. System.out.print("请输入编号:");
  75. String id = buffReader.readLine();
  76. System.out.print("请输入姓名:");
  77. String name = buffReader.readLine();
  78. System.out.print("请输入性别:");
  79. String sex = buffReader.readLine();
  80. System.out.print("请输入年龄:");
  81. String age = buffReader.readLine();
  82. System.out.print("请输入电话:");
  83. String phone = buffReader.readLine();
  84. System.out.print("请输入QQ:");
  85. String qq = buffReader.readLine();
  86. System.out.print("请输入邮箱:");
  87. String email = buffReader.readLine();
  88. Contact contact = new Contact();
  89. contact.setId(id);
  90. contact.setName(name);
  91. contact.setSex(sex);
  92. contact.setAge(age);
  93. contact.setPhone(phone);
  94. contact.setQq(qq);
  95. contact.setEmail(email);
  96. //加载xml文件,获取Document对象
  97. Document document = new SAXReader().read(new File("./src/com/contactSystem/contacts.xml"));
  98. //获取到ContactList根标签
  99. Element root = document.getRootElement();
  100. //添加contact标签
  101. Element contactEle = root.addElement("contact");
  102. //contact下添加其它标签
  103. Element idEle = contactEle.addElement("id");
  104. idEle.setText(id);
  105. Element nameEle = contactEle.addElement("name");
  106. nameEle.setText(name);
  107. Element sexEle = contactEle.addElement("sex");
  108. sexEle.setText(sex);
  109. Element ageEle = contactEle.addElement("age");
  110. ageEle.setText(age);
  111. Element phoneEle = contactEle.addElement("phone");
  112. phoneEle.setText(phone);
  113. Element qqEle = contactEle.addElement("qq");
  114. qqEle.setText(qq);
  115. Element emailEle = contactEle.addElement("email");
  116. emailEle.setText(email);
  117. /*
  118. * 将document对象写入xml文件中
  119. */
  120. writeDoc(document);
  121. //提示信息
  122. System.out.println("添加成功!");
  123. //刷新显示联系人列表
  124. getAllContacts();
  125. }
  126. /**
  127. * 将document对象写入xml文件中
  128. */
  129. private static void writeDoc(Document document) throws FileNotFoundException,
  130. UnsupportedEncodingException, IOException {
  131. //指定文件输出的位置
  132. FileOutputStream out = new FileOutputStream("./src/com/contactSystem/contacts.xml", false);
  133. OutputFormat format = OutputFormat.createPrettyPrint();
  134. format.setEncoding("utf-8");
  135. //创建写出对象
  136. XMLWriter xmlWriter = new XMLWriter(out, format);
  137. xmlWriter.write(document);
  138. //关闭资源
  139. xmlWriter.close();
  140. }
  141. /**
  142. * 【2】修改联系人
  143. * @throws Exception
  144. */
  145. private static void editContact() throws Exception {
  146. //修改前先显示所有的联系人
  147. Document document = getAllContacts();
  148. System.out.println("请输入您要修改联系人的id:");
  149. while(true){
  150. //获取输入流
  151. buffReader = new BufferedReader(new InputStreamReader(System.in));
  152. //读取键盘输入的id值
  153. String idValue = buffReader.readLine().trim();
  154. //找到id标签,且其间的文本值为idValue
  155. Element idEle = (Element)document.selectSingleNode("//contact/id[text()='" + idValue + "']");
  156. if(idEle == null){
  157. System.out.println("对不起你输入的id不存在,请重新输入:");
  158. continue;
  159. }
  160. //获取找到文本值为idValue的id标签的父标签
  161. Element ele = idEle.getParent();
  162. //获取下面所有标签集合
  163. List<Element> eles = ele.elements();
  164. //接收键盘输入的修改信息
  165. System.out.println("请依次输入修改信息:");
  166. System.out.print("id:");
  167. String id = buffReader.readLine();
  168. System.out.print("name:");
  169. String name = buffReader.readLine();
  170. System.out.print("sex:");
  171. String sex = buffReader.readLine();
  172. System.out.print("age:");
  173. String age = buffReader.readLine();
  174. System.out.print("phone:");
  175. String phone = buffReader.readLine();
  176. System.out.print("qq:");
  177. String qq = buffReader.readLine();
  178. System.out.print("email:");
  179. String email = buffReader.readLine();
  180. //修改录入的信息
  181. eles.get(0).setText(id);
  182. eles.get(1).setText(name);
  183. eles.get(2).setText(sex);
  184. eles.get(3).setText(age);
  185. eles.get(4).setText(phone);
  186. eles.get(5).setText(qq);
  187. eles.get(6).setText(email);
  188. //将document写入xml
  189. writeDoc(document);
  190. //提示信息
  191. System.out.println("修改成功!");
  192. //刷新显示联系人列表
  193. getAllContacts();
  194. //退出循环
  195. break;
  196. }
  197. }
  198. /**
  199. * 【3】删除联系人
  200. * @throws Exception
  201. */
  202. private static void deleteContact() throws Exception {
  203. //删除前先显示所有的联系人
  204. Document document = getAllContacts();
  205. while(true){
  206. System.out.println("请输入您要删除联系人的id:");
  207. //获取输入流
  208. buffReader = new BufferedReader(new InputStreamReader(System.in));
  209. //读取键盘输入的id值
  210. String idValue = buffReader.readLine().trim();
  211. //找到id标签,且其间的文本值为idValue
  212. Element idEle = (Element)document.selectSingleNode("//contact/id[text()='" + idValue + "']");
  213. if(idEle == null){
  214. System.out.println("对不起你输入的id不存在!!任意键退出,继续请按0");
  215. String opt = buffReader.readLine();
  216. if(opt.equals("0")){
  217. continue;
  218. }else{
  219. //退出,回到主界面
  220. break;
  221. }
  222. }
  223. //获取找到文本值为idValue的id标签的父标签,删除
  224. idEle.getParent().detach();
  225. //将document写入xml
  226. writeDoc(document);
  227. //提示信息
  228. System.out.println("删除成功!");
  229. //刷新显示
  230. getAllContacts();
  231. //退出循环
  232. break;
  233. }
  234. }
  235. /**
  236. * 【4】查询所有联系人
  237. * @throws Exception
  238. */
  239. private static Document getAllContacts() throws Exception {
  240. //存放获取到的所有Contact对象
  241. List<Contact> list = new ArrayList<Contact>();
  242. //加载xml文件,获取Document对象
  243. Document document = new SAXReader().read(new File("./src/com/contactSystem/contacts.xml"));
  244. //获取到ContactList根标签
  245. Element root = document.getRootElement();
  246. List<Element> contactEles = root.elements("contact");
  247. for(Element ele : contactEles){
  248. //创建一个Contact对象
  249. Contact contact = new Contact();
  250. //将获取到的标签文本内容,存入Contact对象
  251. contact.setId(ele.elementText("id"));
  252. contact.setName(ele.elementText("name"));
  253. contact.setSex(ele.elementText("sex"));
  254. contact.setAge(ele.elementText("age"));
  255. contact.setPhone(ele.elementText("phone"));
  256. contact.setQq(ele.elementText("qq"));
  257. contact.setEmail(ele.elementText("email"));
  258. //将Contact对象存入list集合
  259. list.add(contact);
  260. }
  261. //遍历集合,打印输出
  262. System.out.print("*****************************************************");
  263. System.out.println("*****************************************************");
  264. int count = 1;
  265. for(Contact c : list){
  266. System.out.println("联系人" + (count++) + "->" + c);
  267. }
  268. System.out.print("*****************************************************");
  269. System.out.println("*****************************************************");
  270. return document;
  271. }
  272. /**
  273. * 退出系统
  274. */
  275. private static void existSystem() {
  276. System.exit(1);
  277. }
  278. }
Contact.java
  1. package com.contactSystem;
  2. public class Contact {
  3. private String id;
  4. private String name;
  5. private String sex;
  6. private String age;
  7. private String phone;
  8. private String qq;
  9. private String email;
  10. public String getId() {
  11. return id;
  12. }
  13. public void setId(String id) {
  14. this.id = id;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public String getSex() {
  23. return sex;
  24. }
  25. public void setSex(String sex) {
  26. this.sex = sex;
  27. }
  28. public String getAge() {
  29. return age;
  30. }
  31. public void setAge(String age) {
  32. this.age = age;
  33. }
  34. public String getPhone() {
  35. return phone;
  36. }
  37. public void setPhone(String phone) {
  38. this.phone = phone;
  39. }
  40. public String getQq() {
  41. return qq;
  42. }
  43. public void setQq(String qq) {
  44. this.qq = qq;
  45. }
  46. public String getEmail() {
  47. return email;
  48. }
  49. public void setEmail(String email) {
  50. this.email = email;
  51. }
  52. @Override
  53. public String toString() {
  54. return "【id=" + id + ",name=" + name + ",sex=" + sex
  55. + ",tage=" + age + ",phone=" + phone + ",qq=" + qq
  56. + ",email=" + email + "】";
  57. }
  58. }

xml通讯录:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ContactList>
  3. <contact>
  4. <id>001</id>
  5. <name>木丁西</name>
  6. <sex>男</sex>
  7. <age>18</age>
  8. <phone>18071897425</phone>
  9. <qq>1012421396</qq>
  10. <email>1012421396@qq.com</email>
  11. </contact>
  12. <contact>
  13. <id>002</id>
  14. <name>刘先森</name>
  15. <sex>男</sex>
  16. <age>37</age>
  17. <phone>18771897421</phone>
  18. <qq>6012421399</qq>
  19. <email>6012421399@google.com</email>
  20. </contact>
  21. <contact>
  22. <id>004</id>
  23. <name>小龙女</name>
  24. <sex>女</sex>
  25. <age>3</age>
  26. <phone>18071897425</phone>
  27. <qq>1012421396</qq>
  28. <email>1012421396@qq.com</email>
  29. </contact>
  30. </ContactList>
效果:
①开始界面
  
②添加联系人

 ③修改联系人
 
④删除联系人
 
⑤查询所有联系人 

 
0 0
原创粉丝点击