XML“数据库”:简单的通讯录系统(用dom4j完成增删改查)
来源:互联网 发布:手机淘宝链接怎么复制 编辑:程序博客网 时间:2024/05/22 08:20
package hf.firstclass.dom4j;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.List;/** * 编写一个通讯录程序 * 功能需求: 1)增加联系人 2)修改联系人 3)删除联系人 4)查询所有联系人(全部) 5)退出系统 要求: 1)交互使用控制台进行交互 2)联系人的数据存储到xml文件中(contact.xml) (dom4j的操作) xml文件格式: <contact id="001" hobby="eat"> <name>张三</name> <gender>男</gender> <age>22</age> <phone>17728394033</phone> <email>101440122@qq.com</email> <address>130号</address> </contact> * @author LZK * */ //运行的主程序public class ContactSystem { public static void main(String[] args) throws Exception { //建立一个读取流,获取用户的输入 BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in)); //创建一个联系人操作对象 OperatContact oper=new OperatContact(); while(true){ System.out.println("==========通信录系统========="); System.out.println("[1]增加联系人"); System.out.println("[2]修改联系人"); System.out.println("[3]删除联系人"); System.out.println("[4]查询所有联系人"); System.out.println("[5]退出系统"); System.out.print("请输入需求数字:"); String command=bufr.readLine(); //添加联系人,并封装到Contact对象中。 if("1".equals(command)){ Contact con = new Contact(); System.out.print("请输入联系人的姓名:"); String name=bufr.readLine(); con.setName(name); System.out.print("请输入联系人的性别:"); String gender=bufr.readLine(); con.setGender(gender); System.out.print("请输入联系人的年龄:"); String age=bufr.readLine(); con.setAge(age); System.out.print("请输入联系人的电话:"); String phone=bufr.readLine(); con.setPhone(phone); System.out.print("请输入联系人的email:"); String email=bufr.readLine(); con.setEmail(email); System.out.print("请输入联系人的地址:"); String address=bufr.readLine(); con.setAddress(address); //向XML文件中添加联系人 oper.addContact(con); System.out.println("============添加成功!============="); } //修改联系人,并封装信息到对象 else if("2".equals(command)){ Contact con = new Contact(); System.out.print("请输入你想要修改的联系人的id:"); String id=bufr.readLine(); con.setId(id); System.out.print("请修改联系人的姓名:"); String name=bufr.readLine(); con.setName(name); System.out.print("请修改联系人的性别:"); String gender=bufr.readLine(); con.setGender(gender); System.out.print("请修改联系人的年龄:"); String age=bufr.readLine(); con.setAge(age); System.out.print("请修改联系人的电话:"); String phone=bufr.readLine(); con.setPhone(phone); System.out.print("请修改联系人的email:"); String email=bufr.readLine(); con.setEmail(email); System.out.print("请修改联系人的地址:"); String address=bufr.readLine(); con.setAddress(address); //更新XML文件的联系人 oper.updateContact(con); System.out.println("============修改成功!============="); } //删除联系人 else if("3".equals(command)){ System.out.print("请输入你要删除的联系人的id:"); String id=bufr.readLine(); oper.deleteContact(id); System.out.println("============删除成功!============="); } //查询联系人 else if("4".equals(command)){ List<Contact> conlist=oper.findAll(); for(Contact con:conlist){ System.out.println(con); } } //退出系统 else if("5".equals(command)){ System.exit(0); } } }}
//将增删改查功能封装在一个类中
package hf.firstclass.dom4j;import java.io.File;import java.util.ArrayList;import java.util.List;import java.util.UUID;import org.dom4j.Document;import org.dom4j.Element;public class OperatContact { /** * 添加联系人 要求id要唯一 * @param con */ public void addContact(Contact con) { //读取XML文件 File file=new File("./src/contact.xml"); Document doc=Dom4jUtil.getDocument(file); //添加信息 Element rootEle=doc.getRootElement(); //根据根节点添加contact节点 Element conEle=rootEle.addElement("contact"); //编号使用UUID算法生成一个随机且唯一的字符串 conEle.addAttribute("id", UUID.randomUUID().toString()); conEle.addElement("name").addText(con.getName()); conEle.addElement("gender").addText(con.getGender()); conEle.addElement("age").addText(con.getAge()); conEle.addElement("phone").addText(con.getPhone()); conEle.addElement("email").addText(con.getEmail()); conEle.addElement("address").addText(con.getAddress()); //将xml文件写入到磁盘中 Dom4jUtil.writeXML(file, doc); } /** * 修改联系人 * @param con */ public void updateContact(Contact con) { //读取XML文件 File file=new File("./src/contact.xml"); Document doc=Dom4jUtil.getDocument(file); String id=con.getId(); //XPath技术,快速找出联系人 Element conEle=(Element) doc.selectSingleNode("//contact[@id='"+id+"']"); conEle.element("name").setText(con.getName()); conEle.element("gender").setText(con.getGender()); conEle.element("age").setText(con.getAge()); conEle.element("phone").setText(con.getPhone()); conEle.element("email").setText(con.getEmail()); conEle.element("address").setText(con.getAddress()); //将xml文件写入到磁盘中 Dom4jUtil.writeXML(file, doc); } /** * 根据id删除联系人 * @param id */ public void deleteContact(String id) { //读取XML文件 File file=new File("./src/contact.xml"); Document doc=Dom4jUtil.getDocument(file); //Xpath技术,快速找出联系人 Element conEle=(Element) doc.selectSingleNode("//contact[@id='"+id+"']"); doc.getRootElement().remove(conEle); //将xml文件写入到磁盘中 Dom4jUtil.writeXML(file, doc); } /** * 查询联系人 * @return XML文件所有联系人的集合 */ public List<Contact> findAll() { //定义一个集合用于装所有的联系人信息 List<Contact> conList=new ArrayList<Contact>(); //读取XML文件 File file=new File("./src/contact.xml"); Document doc=Dom4jUtil.getDocument(file); //获得XML文件中联系人列表 List<Element> list=doc.getRootElement().elements("contact"); //遍历联系人列表 for(Element conEle:list){ Contact con=new Contact(); con.setId(conEle.attributeValue("id")); con.setName(conEle.elementText("name")); con.setGender(conEle.elementText("gender")); con.setAge(conEle.elementText("age")); con.setPhone(conEle.elementText("phone")); con.setEmail(conEle.elementText("email")); con.setAddress(conEle.elementText("address")); //每封装一个联系人信息,就添加到集合中 conList.add(con); } return conList; }}
//将重复用到的程序抽取出来,单独建工具类
public class Dom4jUtil { /** * 读取XML文件 * @param f 要读取的XML文件 * @return Document 文件 */ public static Document getDocument(File f){ try { Document doc=new SAXReader().read(f); return doc; } catch (DocumentException e) { //由于函数有返回值,需要进行处理,将其转换为运行时异常 throw new RuntimeException(); } } /** * 将修改好的文件写入到源文件中 * @param f 要写入的文件 * @param doc 写入的文档 */ public static void writeXML(File f,Document doc){ try { OutputStream ops=new FileOutputStream(f); OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(ops,format); writer.write(doc); writer.close(); } catch (IOException e) { e.printStackTrace(); } }/** * 定义一个联系人的类 * 用于存储联系人全部信息,id 姓名 性别 年龄 电话 邮件 地址 * @author Administrator * */package hf.firstclass.dom4j; public class Contact { private String id; private String name; private String gender; private String age; private String phone; private String email; private String address; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Contact [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + ", phone=" + phone + ", email=" + email + ", address=" + address + "]"; }
0 0
- XML“数据库”:简单的通讯录系统(用dom4j完成增删改查)
- DOM4j 解析xml文档,完成增删改查
- Dom4j的增删改查简单使用
- 用struts2 完成一个简单的通讯录,实现增删改查,分页,文件上传(头像),表单验证(两种方法)
- xml编写通讯录(xml的增删改查)
- 通讯录的增删改查
- Dom4j对XML文档的增删改查操作
- java(12)--xml之dom4j方式的增删改查
- Dom4j对xml增删改查的实例详解
- java操作xml之dom4j的增删改查
- dom4j对XML进行增删改查(详细)
- dom4j解析xml文档(增删查改)
- dom4j解析xml增删改查
- Dom4j 对XML增删改查
- XML(五)dom4j增删改查
- dom4j解析XML之【增删改查】
- ObjectC----实现简单的通讯录(增删改查)
- 简单的数据库 查询 增删改查 -----
- mybatis <![CDATA[ ]]>的作用、使用、注意事项。
- 容器集群管理平台的比较
- 设置Tomcat管理员用户名和密码
- idea junit4 单元测试
- gluPerspective
- XML“数据库”:简单的通讯录系统(用dom4j完成增删改查)
- HDU 4513 吉哥系列故事――完美队形II
- POI java 处理excel上传图片
- web前端之锋利的jQuery三:jQuery中的DOM操作
- 指针的使用
- SQL脚本来获取数据库中的所有表结构
- 图像缩放
- Cache简单类
- C#入门