【Java练习】利用xml做一个简易的通讯录
来源:互联网 发布:php 读取cer证书公钥 编辑:程序博客网 时间:2024/05/22 17:39
对contact.xml文件里边的内容进行增,删,改,查
1)增加联系人
2)修改联系人
3)删除联系人
4)查询所有联系人(全部)
要求:
1)交互使用控制台进行交互
2)联系人的数据存储到xml文件中(contact.xml) (dom4j的操作)
思路:
创建一个工具类TelTool,将所有功能封装进去,再使用 测试类进行功能调用。
工具类:
package Tel;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class TelTool { //添加联系人 public void addNum(String name,String num) throws DocumentException, IOException{ //创建解析器对象 SAXReader reader =new SAXReader(); Document doc = reader.read(new FileInputStream("contact.xml")); //获取根标签 Element roele = doc.getRootElement(); //添加子标签 Element p = roele.addElement("person"); p.addAttribute("id", name); Element na = p.addElement("name"); na.addText(name); Element number = p.addElement("num"); number.addText(num); System.out.println("添加成功"); //写入文件 OutputFormat prettyPrint =OutputFormat.createPrettyPrint(); XMLWriter w=new XMLWriter(new FileOutputStream("contact.xml"),prettyPrint); w.write(doc); w.close(); } //编辑联系人 public void setNum(String name,String num) throws DocumentException, IOException{ SAXReader reader=new SAXReader(); Document doc=reader.read(new FileInputStream("contact.xml")); //找到指定person子标签 Element ele = (Element)doc.selectSingleNode("//person[@id='"+name+"']"); Element number =ele.element("num"); number.setText(num); System.out.println("修改成功"); //写入文件 OutputFormat prettyPrint =OutputFormat.createPrettyPrint(); XMLWriter w=new XMLWriter(new FileOutputStream("contact.xml"),prettyPrint); w.write(doc); w.close(); } //删除联系人 public void delNum(String name) throws DocumentException, IOException{ SAXReader reader=new SAXReader(); Document doc=reader.read(new FileInputStream("contact.xml")); //找到指定person子标签 Element ele = (Element)doc.selectSingleNode("//person[@id='"+name+"']"); //删除 ele.detach(); System.out.println("删除成功"); //写入文件 OutputFormat prettyPrint =OutputFormat.createPrettyPrint(); XMLWriter w=new XMLWriter(new FileOutputStream("contact.xml"),prettyPrint); w.write(doc); w.close(); } //查询所有联系人 public void queryAll() throws IOException, DocumentException{ SAXReader reader=new SAXReader(); Document doc=reader.read(new FileInputStream("contact.xml")); //通过迭代器获取所有子标签 Iterator<Element> iterator = doc.getRootElement().elementIterator("person"); while(iterator.hasNext()){ Element next = iterator.next(); String name = next.element("name").getText(); String num = next.element("num").getText(); System.out.println("姓名:"+name+"--"+"电话:"+num); } } }
测试类:
package Tel;import java.io.IOException;import java.util.Scanner;import org.dom4j.DocumentException;public class TelDemo { public static void main(String[] args) throws DocumentException, IOException { while(true){ System.out.println("欢迎使用通讯录,请输入相应数字选择功能:"); System.out.println("1.添加联系人"); System.out.println("2.编辑联系人"); System.out.println("3.删除联系人"); System.out.println("4.查找联系人"); Scanner sc=new Scanner(System.in); int i=sc.nextInt(); //创建工具类对象 TelTool tt=new TelTool(); switch(i){ case 1: System.out.println("请输入联系人姓名"); String name=sc.next(); System.out.println("请输入电话号码"); String num=sc.next(); tt.addNum(name, num); break; case 2: System.out.println("请输入要修改的联系人姓名"); String name2=sc.next(); System.out.println("请输入要修改的电话号码"); String num2=sc.next(); tt.setNum(name2, num2); break; case 3: System.out.println("请输入要删除的联系人姓名"); String name3=sc.next(); tt.delNum(name3); break; case 4: System.out.println("查询结果如下:"); tt.queryAll(); break; default: System.out.println("输入错误"); } } }}
contanct.xml:
<?xml version="1.0" encoding="UTF-8"?><Person> <person id="zhangsan"> <name>zhangsan</name> <num>7777777</num> </person> <person id="lisi"> <name>lisi</name> <num>99999</num> </person></Person>
上述程序还存在一个小的bug,在添加联系人时,如果已经有同名的联系人则会直接覆盖,在删除联系人时,如果输入不存在的联系人姓名,则会出现空指针异常,由于时间问题,这里就不再完善了。
阅读全文
0 0
- 【Java练习】利用xml做一个简易的通讯录
- 做了一个xml通讯录
- 【练习】制作简易通讯录
- 利用map的特性做一个简易的投票程序
- 利用javaScript做一个简易的图片展示
- 用java 做一个通讯录的代码及心得
- 实现一个简易通讯录
- Java利用dom4j读写xml文件的简易实现
- 利用java做一个简单的计算器
- 利用java做一个简单的计算器
- 利用java做一个简单的计算器
- 利用Java GUI 实现一个简易的用户管理系统
- 使用XML布局文件和java代码共同控制UI界面做一个简易图片浏览器
- 自制的简易通讯录
- Java做的简易计算器
- 简易通讯录——C语言的一个小成果
- 分享一个JAVA做面试题练习方面的网站
- php做的一个简易日历
- OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
- left jion中的on和where条件中的区别
- Android中进程间通讯常见的几种方式以及使用场景
- 《Objective-C基础教程》第9章 内存管理
- 简简单单搞掂恼人的Laravel 5安装
- 【Java练习】利用xml做一个简易的通讯录
- illegal attempt to dereference collection(转载的)
- 004_跨平台开发_MUI_操作表(actionsheet)
- 学生成绩转换
- 一个合格数字IC设计工程师的知识结构
- JAVA知识_7
- 排序算法之归并排序
- MySQL
- IT维护对企业竞争力的影响