使用xml实现的增删改查功能
实体类:
package vo;
public class Contact {
private String id;
private String name;
private String gender;
private int age;
private String phone;
private String email;
private String qq;
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 int getAge() {
return age;
}
public void setAge(int 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 getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String toString() {
return "Contact [id=" + id + ", name=" + name + ", gender=" + gender
+ ", age=" + age + ", phone=" + phone + ", email=" + email
+ ", qq=" + qq + "]";
}
}
接口类:
package service;
import java.util.List;
import vo.Contact;
public interface ContactOperator {
public void addContact(Contact contact);
public void updateContact(Contact contact);
public void deleteContact(String id);
public List<Contact> findAll();
}
接口的实现类:
package serviceImp;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import service.ContactOperator;
import util.XMLUtil;
import vo.Contact;
public class IContactOperator implements ContactOperator {
@Override
public void addContact(Contact contact) {
try {
File file = new File("d:\\contact.xml");
Document doc = null;
Element rootElem = null;
if(!file.exists()) { //如果没有xml文件,则创建xml文件
doc = DocumentHelper.createDocument();
//创建根标签
rootElem = doc.addElement("contactList");
} else { //如果有xml文件,则读取xml文件
doc = XMLUtil.getDocument();
//如果有xml文件,读取根标签
rootElem = doc.getRootElement();
}
//添加contact标签
/*
* <contact id="1">
<name>eric</name>
<gender>男</gender>
<age>20</age>
<phone>1343333</phone>
<email>eric@qq.com</email>
<qq>554444</qq>
</contact>
*/
Element contactElem = rootElem.addElement("contact");
contactElem.addAttribute("id", contact.getId());
contactElem.addElement("name").setText(contact.getName());
contactElem.addElement("gender").setText(contact.getGender());
contactElem.addElement("age").setText(contact.getAge()+"");
contactElem.addElement("phone").setText(contact.getPhone());
contactElem.addElement("email").setText(contact.getEmail());
contactElem.addElement("qq").setText(contact.getQq());
//把Document写出到xml文件
XMLUtil.write2xml(doc);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Override
public void updateContact(Contact contact) {
/**
* 需求: 修改id值为2的联系人
* 1)查询id值为2的contact标签
* 2)修改contact标签的内容
*/
try {
//1.读取xml文件
Document doc = XMLUtil.getDocument();
Element contactElem = (Element) doc.selectSingleNode("//contact[@id='" + contact.getId() + "']");
//2.修改contact标签内容
contactElem.element("name").setText(contact.getName());
contactElem.element("gender").setText(contact.getGender());
contactElem.element("age").setText(contact.getAge()+"");
contactElem.element("phone").setText(contact.getPhone());
contactElem.element("email").setText(contact.getEmail());
contactElem.element("qq").setText(contact.getQq());
//3.把Document写出到xml文件
XMLUtil.write2xml(doc);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 根据id删除节点
*/
@Override
public void deleteContact(String id) {
try {
// 1.读取xml文件
Document doc = XMLUtil.getDocument();
Element contactElem = (Element) doc.selectSingleNode("//contact[@id='" + id + "']");
//删除标签
contactElem.detach();
//3.把Document写出到xml文件
XMLUtil.write2xml(doc);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Override
public List<Contact> findAll() {
// 1. 读取xml文件
Document doc = XMLUtil.getDocument();
//2.创建List对象
List<Contact> list = new ArrayList<Contact>();
//3.读取contact标签
List<Element> conList = (List<Element>)doc.selectNodes("//contact");
for(Element e : conList) {
//创建Contact对象
Contact c = new Contact();
c.setId(e.attributeValue("id"));
c.setName(e.elementText("name"));
c.setGender(e.elementText("gender"));
c.setAge(Integer.parseInt(e.elementText("age")));
c.setPhone(e.elementText("phone"));
c.setEmail(e.elementText("email"));
c.setQq(e.elementText("qq"));
//把Contact放入list中
list.add(c);
}
return list;
}
}
xml操作的工具类:
package util;
import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* xml操作的工具类
* @author Administrator
*
*/
public class XMLUtil {
/*
* 用于读取xml文件
*/
public static Document getDocument() {
try {
Document doc = new SAXReader().read(new File("d:/contact.xml"));
return doc;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}
/*
* 写入xml文件
*/
public static void write2xml(Document doc) {
try {
FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
测试类:
package test;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import service.ContactOperator;
import serviceImp.IContactOperator;
import vo.Contact;
public class ContactTest {
ContactOperator operator = null;
@Before
public void init() {
operator = new IContactOperator();
}
@Test
public void testAddContact(){
Contact contact = new Contact();
contact.setId("1");
contact.setName("rose");
contact.setGender("男");
contact.setAge(20);
contact.setPhone("134222233333");
contact.setEmail("eric@qq.com");
contact.setQq("33334444");
operator.addContact(contact);
}
@Test
public void testUploadContact() {
Contact contact = new Contact();
contact.setId("1"); //修改的ID
contact.setName("zhangsan");
contact.setGender("女");
contact.setAge(30);
contact.setPhone("135222233333");
contact.setEmail("zhangsan@qq.com");
contact.setQq("33334444");
operator.updateContact(contact);
}
@Test
public void testDelete() {
Contact contact = new Contact();
contact.setId("1"); //修改的ID
operator.updateContact(contact);
}
@Test
public void testFindAll() {
List<Contact> list = operator.findAll();
for (Contact c : list) {
System.out.println(c);
}
}
}
main方法:
package main;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import service.ContactOperator;
import serviceImp.IContactOperator;
import vo.Contact;
public class MainProgram {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ContactOperator operator = new IContactOperator();
// 不断接收输入
while(true) {
//1.看到菜单
printMenu();
//2.接收用户输入的命令
String command = br.readLine();
//3.根据用户的输入执行不同的操作
if("1".equals(command)){
//添加联系人
//获取用输入的数据
Contact contact = new Contact();
//获取ID
System.out.println("请输入编号:");
String id = br.readLine();
//获取姓名
System.out.println("请输入姓名:");
String name = br.readLine();
//获取性别
System.out.println("请输入性别:");
String gender = br.readLine();
//获取年龄
System.out.println("请输入年龄:");
String age = br.readLine();
//获取电话
System.out.println("请输入电话:");
String phone = br.readLine();
//获取邮箱
System.out.println("请输入邮箱:");
String email = br.readLine();
//获取QQ
System.out.println("请输入QQ:");
String qq = br.readLine();
contact.setId(id);
contact.setName(name);
contact.setGender(gender);
contact.setAge(Integer.parseInt(age));
contact.setPhone(phone);
contact.setEmail(email);
contact.setQq(qq);
operator.addContact(contact);
} else if ("2".equals(command)) {
//修改联系人
//获取用输入的数据
Contact contact = new Contact();
//获取ID
System.out.println("请输入需要修改的编号:");
String id = br.readLine();
//获取姓名
System.out.println("请输入修改后的姓名:");
String name = br.readLine();
//获取性别
System.out.println("请输入修改后的性别:");
String gender = br.readLine();
//获取年龄
System.out.println("请输入修改后的年龄:");
String age = br.readLine();
//获取电话
System.out.println("请输入修改后的电话:");
String phone = br.readLine();
//获取邮箱
System.out.println("请输入修改后的邮箱:");
String email = br.readLine();
//获取QQ
System.out.println("请输入修改后的QQ:");
String qq = br.readLine();
contact.setId(id);
contact.setName(name);
contact.setGender(gender);
contact.setAge(Integer.parseInt(age));
contact.setPhone(phone);
contact.setEmail(email);
contact.setQq(qq);
operator.updateContact(contact);
} else if ("3".equals(command)){
//删除联系人
//获取需要删除的ID
System.out.println("请输入删除的编号:");
String id = br.readLine();
operator.deleteContact(id);
} else if ("4".equals(command)){
//查询所有联系人
List<Contact> list = operator.findAll();
//打印输出
for (Contact con : list) {
System.out.println(con.toString());
}
} else if ("Q".equals(command)){
break;
} else {
System.out.println("输入的命令有误!");
}
}
} catch (Exception e) {
}
}
public static void printMenu() {
System.out.println("====================");
System.out.println("[1]添加联系人");
System.out.println("[2]修改联系人");
System.out.println("[3]删除联系人");
System.out.println("[4]查看所有联系人");
System.out.println("[Q]退出系统");
System.out.println("====================");
}
}
使用xml实现的增删改查功能的更多相关文章
- IDEA搭建SSM实现登录、注册,数据增删改查功能
本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式 (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...
- 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能
此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...
- BootstrapTable与KnockoutJS相结合实现增删改查功能
http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...
- JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能
JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...
- 使用Bootstrap模态框实现增删改查功能
模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 本文实现的是使用模态框实现简单的增删改查的功能. ...
- jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)
jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...
随机推荐
- TCP/IP协议1
1.分层 应用层 telent 远程登录,ftp 文件传输协议,smtp 简单邮件传送协议 snmp 简单网络管理协议 email 运输层 tcp(提供可靠的数据通信)和udp(数据报的分组从一台主 ...
- nyoj_518_取球游戏_201404161738
取球游戏 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个 ...
- 武大OJ 613. Count in Sama’s triangle
Description Today, the math teacher taught Alice Hui Yang’s triangle. However, the teacher came up w ...
- 混合图(dizzy.pas/cpp/c)
混合图(dizzy.pas/cpp/c) [题目描述] Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家.他一 ...
- 演练:使用VS2010 C# 创作简单的多线程组件
BackgroundWorker 组件取代了 System.Threading 命名空间并添加了功能:但是,可以选择保留 System.Threading 命名空间以实现向后兼容并供将来使用.有关更多 ...
- spring项目启动需要的几个注解
1.@ComponentScan注解,spring context包下,可以理解嘛,扫描srping bean放在ioc容器中的. ApplicationContext是接口,就是IOC容器嘛,也在这 ...
- C语言的数组初始化
http://blog.csdn.net/sibylle/article/details/2026915 一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={1 ...
- Solidworks如何另存为和打开OBJ文件
1 点击工具-插件,勾选ScanTo3D(最好后面的启动也勾选上,否则下次启动将不会默认自动启动这个插件,还需要再做一次才能打开或者另存为OBJ) 2 注意打开零件图的方式,你不能直接打开Soli ...
- 三问JavaBean
曾经觉得javabenan是一些java类.后来查看了一些百科 .javabean是java组件技术,又是遵循一些约定.不是非常理解. 什么是javabean? 在jsp程序中用来封装业务逻辑,数据 ...
- 放大的X(杭电2565)
/*放大的X 请你编程画一个放大的'X'. Input 输入数据第一行是一个整数T,表示有T组測试数据: 接下来有T行,每行有一个正奇数n(3 <= n <= 79).表示放大的规格. O ...