1.目录部分
仅供参考
【友情提示】需要在lib导入dom4j-1.1.jar和jaxen-1.1.1.jar两个jar包
2.创建一个content.xml的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<contacts>
<user name="1234" pwd="1234">
<contact id="2eaa2dbb32064cf0afd6a5e1013a6cbf">
<name>simons</name>
<tel>88888</tel>
<sex>0</sex>
</contact>
<contact id="7fe2cf73804645f0abbca1303b78ec9a">
<name>james</name>
<tel>99999</tel>
<sex>0</sex>
</contact>
<contact id="fa5fbeb691b240e0be4abd7e7eac23fc">
<name>gou</name>
<tel>1234556</tel>
<sex>0</sex>
</contact>
</user>
<user name="tom" pwd="1111">
<contact id="688f0e262e5841ba8d6ceceffa9f9f4d">
<name>lx</name>
<tel>12333</tel>
<sex>1</sex>
</contact>
</user>
<user name="123" pwd="123">
<contact id="a82df186d91b409f899dfb24e41b76ed">
<name>猫</name>
<tel>123654</tel>
<sex>1</sex>
</contact>
</user>
</contacts>
注:该XML内容是博主随机输入的,大家可以凭借自己喜好书写。
*3.源代码部分
package test;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Scanner;
import java.util.UUID;
public class test {
//扫描输入的文本
public static Scanner input = new Scanner(System.in);
//主函数
public static void main(String[] args) throws Exception {
while (true) {
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("0.退出");
int number = input.nextInt();
switch (number) {
case 1:
//调用登录方法
doEnter();
break;
case 2:
//调用注册方法
login();
break;
case 0:
System.out.println("谢谢您的使用,再见!!!");
return;
default:
System.out.println("输入形式不正确");
break;
}
}
}
//读取XML并返回一个集合
public static List<Element> getUser() throws DocumentException {
SAXReader reader = new SAXReader();
Document doc = reader.read("./src/content.xml");
List<Element> list = doc.selectNodes("//user");
return list;
}
//登录方法
public static void doEnter() throws Exception {
System.out.println("**********************");
System.out.println("*\t\t用户登录\t\t*");
System.out.println("**********************");
System.out.println("请输入用户名");
String username = input.next();
System.out.println("请输入密码");
String password = input.next();
//调用判断密码是否正确的方法
boolean judge = judge(username, password);
if (judge == true) {
System.out.println("恭喜,登录成功,请选择下一步操作!");
//调用登录成功后进入子菜单方法
Next(username);
} else {
System.out.println("您的账号或者密码错误,请重新登陆");
}
}
//登录成功后进入子菜单
private static void Next(String username) throws Exception {
while (true) {
System.out.println("1:显示所有联系人");
System.out.println("2:添加联系人");
System.out.println("3:删除联系人");
System.out.println("4:修改联系人");
System.out.println("0:返回到软件主界面");
int number = input.nextInt();
switch (number) {
case 1:
//调用显示所有联系人方法
ShowAllContacts(username);
break;
case 2:
//调用添加联系人方法
AddContacts(username);
break;
case 3:
//调用删除联系人方法
DeleteContacts(username);
break;
case 4:
//调用修改联系人方法
AlterContacts(username);
break;
case 0:
return;
default:
System.out.println("您的操作不当,请重新登录");
break;
}
}
}
//修改联系人
private static void AlterContacts(String username) throws Exception {
System.out.println("请输入你要修改的联系人姓名");
String aName = input.next();
List<Element> list = getUser();
for (Element ele : list) {
if (ele.attributeValue("name").equals(username)){
List<Element> con = ele.selectNodes("contact");
for (Element el : con) {
if (el.elementText("name").equals(aName)){
System.out.println("请输入修改后的名字");
String iName = input.next();
System.out.println("请输入修改后的电话");
String iTel = input.next();
System.out.println("请输入修改后的性别");
String iSex = input.next();
el.element("name").setText(iName);
el.element("tel").setText(iTel);
if (iSex.equals("男")){
el.element("sex").setText("0");
}else if (iSex.equals("女")){
el.element("sex").setText("1");
}
System.out.println("修改成功");
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(new FileOutputStream("./src/content.xml"),of);
Document doc = el.getDocument();
xw.write(doc);
xw.close();
}
}
}
}
}
//删除联系人
private static void DeleteContacts(String username) throws Exception {
System.out.println("请输入你要删除的联系人姓名");
String cname = input.next();
List<Element> list = getUser();
for (Element ele : list) {
if (ele.attributeValue("name").equals(username)) {
List<Element> con = ele.selectNodes("contact");
for (Element el : con) {
if (el.elementText("name").equals(cname)) {
el.getParent().remove(el);
System.out.println("删除成功");
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(new FileOutputStream("./src/content.xml"),of);
Document doc = ele.getDocument();
xw.write(doc);
xw.close();
}
}
}
}
}
//添加联系人
private static void AddContacts(String username) {
System.out.println("请输入你的名字");
String wName = input.next();
System.out.println("请输入你的电话号码");
String wTel = input.next();
System.out.println("请输入你的性别");
String wSex = input.next();
XMLWriter xw = null;
//UUID方法,随机生成一个32位的id
String id = UUID.randomUUID().toString().replace("-", "");
try {
List<Element> list = getUser();
for (Element ele : list) {
if (ele.attributeValue("name").equals(username)) {
Element con = ele.addElement("contact").addAttribute("id", id);
con.addElement("name").setText(wName);
con.addElement("tel").setText(wTel);
if (wSex.equals("男")) {
con.addElement("sex").setText("0");
} else if (wSex.equals("女")) {
con.addElement("sex").setText("1");
}
System.out.println("添加成功");
OutputFormat of = OutputFormat.createPrettyPrint();
xw = new XMLWriter(new FileOutputStream("./src/content.xml"), of);
Document doc = ele.getDocument();
xw.write(doc);
xw.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//显示所有联系人
private static void ShowAllContacts(String username) throws DocumentException {
List<Element> list = getUser();
String sex = null;
for (Element ele : list) {
if (ele.attributeValue("name").equals(username)) {
List<Element> conList = ele.selectNodes("contact");
for (Element el : conList) {
String name = el.elementText("name");
String tel = el.elementText("tel");
String sex1 = el.elementText("sex");
System.out.println("联系人:姓名为" + name + ",电话为" + tel + ",性别为" + (sex1.equals("0") ? "男" : "女"));
}
}
}
}
//判断密码是否正确 并返回判断值
public static boolean judge(String username, String password) throws DocumentException {
List<Element> list = getUser();
for (Element ele : list) {
String name = ele.attribute("name").getValue();
String pwd1 = ele.attribute("pwd").getValue();
if (username.equals(name) && password.equals(pwd1))
return true;
}
return false;
}
//注册方法
public static void login() throws DocumentException, IOException {
System.out.println("**********************");
System.out.println("*\t\t注册页面\t\t*");
System.out.println("**********************");
//读取XML文件
SAXReader reader = new SAXReader();
Document doc = reader.read("./src/content.xml");
//获取根节点contacts
Element root = doc.getRootElement();
System.out.println("请输入账号");
String username = input.next();
System.out.println("请输入密码");
String password = input.next();
//添加user
Element ele = root.addElement("user").addAttribute("name", username).addAttribute("pwd", password);
doc = ele.getDocument();
//格式化输出 为的是更加美观
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(new FileOutputStream("./src/content.xml"),of);
xw.write(doc);
xw.close();
System.out.println("注册成功!!!");
}
}
4.用到的知识点
【友情提示】这个是给博主自己记忆用的可能并不全面
(1)读取XML
(2)获取属性的属性值
(3)用于比较的方法
(4)获取元素集合
(5)获取元素中间的文本内容
(6)获取元素并书写元素中间的文本内容
(7)格式化书写的文本形式,为了更加美观,强迫党狂喜
(8)写XML
(9)获取当前文本对象
*(10)关闭流
(11)生成一个随机id
(12)增加元素,并增加其属性
(13)获取父节点,并删除自身
5.成果展示
至于效果展示,博主就不一一截图了,嘿嘿嘿,感兴趣的可以自己运行一下看一下,感谢大家的观看!!三克油!!!