联系人的增删改查的简单实现

要求分析

设计一个通讯录程序

联系人的属性要求 : 编号 姓名 性别 年龄 电话 邮箱

要求 : 

1) 交互使用控制台

2) 数据存储到xml文件

思路

启动程序后 , 在控制台上显示选项菜单

1 添加联系人

2 修改联系人

3 删除联系人

4 查询所有联系人

Q 退出程序  

用户根据需求选择对应的功能 .

程序编写

package cn.softbreezee.Case;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
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 ContactDemo {

	public static void main(String[] args) throws Exception {
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File("./src/contact/cc.xml"));
		Element rootEle = doc.getRootElement();
		BufferedReader bufr = new BufferedReader(new InputStreamReader(
				System.in));

		System.out.println("【1】添加联系人");
		System.out.println("【2】修改联系人");
		System.out.println("【3】删除联系人");
		System.out.println("【4】查询所有联系人");
		System.out.println("【Q】退出程序");
		System.out.println("-----------------------------------------");
		String line = null;
		while ((line = bufr.readLine()) != null) {
			if ("Q".equals(line)) {
				break;
			} else if ("1".equals(line)) {
				addContact(rootEle);
			} else if ("2".equals(line)) {
				changeContact(rootEle);
			} else if ("3".equals(line)) {
				delContact(rootEle);
			} else if ("4".equals(line)) {
				StringBuilder sb = new StringBuilder();
				checkContact(rootEle,sb);
				System.out.println(sb);
			} else {
				System.out.println("输入格式错误,请重新输入!!!");
			}
		}

		FileOutputStream fos = new FileOutputStream("./src/contact/cc.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");

		XMLWriter writer = new XMLWriter(fos, format);
		writer.write(doc);
		writer.flush();
		writer.close();
	}

	private static void delContact(Element rootEle) throws Exception {
		BufferedReader bufr = new BufferedReader(new InputStreamReader(
				System.in));
		System.out.println("请输入要删除的编号");
		String id = bufr.readLine();
		Node node = rootEle.selectSingleNode("Contact[@id='"+id+"']");
		node.detach();
		System.out.println("删除成功!!");
	}

	private static void changeContact(Element rootEle) throws Exception {
		BufferedReader bufr = new BufferedReader(new InputStreamReader(
				System.in));
		System.out.println("请输入要修改的编号");
		String id = bufr.readLine();
		Node node = rootEle.selectSingleNode("Contact[@id='"+id+"']");
		System.out.println("请输入姓名");
		String name = bufr.readLine();
		node.selectSingleNode("name").setText(name);
		System.out.println("请输入性别");
		String gender = bufr.readLine();
		node.selectSingleNode("gender").setText(gender);
		System.out.println("请输入年龄");
		String age = bufr.readLine();
		node.selectSingleNode("age").setText(age);
		System.out.println("请输入电话");
		String del = bufr.readLine();
		node.selectSingleNode("del").setText(del);
		System.out.println("请输入QQ邮箱");
		String email = bufr.readLine();
		node.selectSingleNode("email").setText(email);
		System.out.println("修改完毕!!!");
	}

	private static void checkContact(Element rootEle,StringBuilder sb) {
		List list = rootEle.elements();
		for(Element ele:list){
			if("Contact".equals(ele.getName()))
				sb.append("编号"+":"+ele.attributeValue("id")+"\t");
			else
				sb.append(ele.getName()+":"+ele.getText()+"\t");
			checkContact(ele,sb);
		}
	}

	private static void addContact(Element ele) throws Exception {
		BufferedReader bufr = new BufferedReader(new InputStreamReader(
				System.in));
		System.out.println("请输入编号");
		String id = bufr.readLine();
		System.out.println("请输入姓名");
		String name = bufr.readLine();
		System.out.println("请输入性别");
		String gender = bufr.readLine();
		System.out.println("请输入年龄");
		String age = bufr.readLine();
		System.out.println("请输入电话");
		String del = bufr.readLine();
		System.out.println("请输入QQ邮箱");
		String email = bufr.readLine();

		Element contact = ele.addElement("Contact");
		contact.addAttribute("id", id);
		contact.addElement("name").addText(name);
		contact.addElement("gender").addText(gender);
		contact.addElement("age").addText(age);
		contact.addElement("del").addText(del);
		contact.addElement("email").addText(email);

		System.out.println("添加完成!");
	}

}


总结

该程序以熟练xml文件语法, Xpath语法, DOM解析方式以及工具包dom4j操作为主 , 简单实现联系人的增删改查 . 代码复用性低 , 查询所有联系人后没有换行 , 删除以及修改都是通过id的方法等不少地方需要改进 !











你可能感兴趣的:(java学习,xml,文件流)