java联系人管理系统简单设计
本文实例为大家分享了java联系人管理系统毕业设计,供大家参考,具体内容如下
要求:
请使用XML保存数据,完成一个联系人管理系统。
用户必须经过认证登录后方可以使用系统。
注册、增加、删除、查看联系人功能。
分模块进行设计。
两层框架-用户交互层,Dao层。
其他支持层-数据封装层。
工具类-加密,工厂Bean。
开发步骤:
第一步:设计数据结构-XML。
第一步:设计数据结构-XML。
第三步:准备资源并编码实现。
第四步:运行测试。

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?><contacts> <user name="Jack" pwd="1234"> <contact id="707dede609dd4a2990f7cfa4cd5233f9"> <name>xiaoming</name> <sex>male</sex> <tel>123456</tel></contact> <contact id="80983802eaa6402d8bac8bb39e71c48f"> <name>12</name> <sex>12</sex> <tel>12</tel> </contact></user> <user name="Rose" pwd="4321"> <contact id="eedb795b97194c3aaa9bacda7e2948e9"> <name>xiaoming</name> <sex>female</sex> <tel>123</tel> </contact></user></contacts> |
util
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package cn.hncu.contact.util;import java.util.UUID;public class IDGenerate { private IDGenerate(){ } public static String getID(){// return UUID.randomUUID().toString(); return UUID.randomUUID().toString().replace("-", ""); }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package cn.hncu.contact.util;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;public class myDocumentFactory { private static final String FILE_NAME="./xml/users.xml"; private static Document dom=null; static{ DocumentBuilder db; try { db=DocumentBuilderFactory.newInstance().newDocumentBuilder(); dom=db.parse(FILE_NAME); } catch (Exception e) { throw new RuntimeException("xml文档解析失败...",e); } } public static Document getDocument(){ return dom; } public static void save(){ try { Transformer tf=TransformerFactory.newInstance().newTransformer(); tf.transform(new DOMSource(dom), new StreamResult(FILE_NAME)); } catch (Exception e) { throw new RuntimeException("xml文档存储失败...", e); } // ConfigurationError:配置异常 }} |
dao
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package cn.hncu.contact.dao;import java.util.List;import java.util.Map;import org.w3c.dom.Element;public interface contactDAO { public abstract boolean login(String name,String pwd); public abstract List<Map<String, String>> queryAll(); public abstract Element add(String name,String sex,String tel); public abstract void reg(String name,String pwd); public Element delete(String id);//默认abstract public abstract Element change(String id, String name, String sex, String tel);} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
package cn.hncu.contact.dao;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import cn.hncu.contact.util.IDGenerate;import cn.hncu.contact.util.myDocumentFactory;public class contactImpl implements contactDAO{ private Element currentUser; Document dom=null; public contactImpl(){ }// private static String name=null;// private static String pwd=null; @Override// public boolean login(String name2, String pwd2) { public boolean login(String name, String pwd) {// name=name2;// pwd=pwd2; dom=myDocumentFactory.getDocument(); Element root=(Element) dom.getFirstChild(); NodeList nodelist=root.getElementsByTagName("user"); for(int i=0;i<nodelist.getLength();i++){ Element e=(Element) nodelist.item(i); if(e.getAttribute("name").equalsIgnoreCase(name)&&e.getAttribute("pwd").equalsIgnoreCase(pwd)){ currentUser=e; return true; } } return false; } @Override public List<Map<String, String>> queryAll() { List<Map<String, String>> list=new ArrayList<Map<String,String>>(); if(currentUser==null){ return list ; } NodeList nodeList=currentUser.getElementsByTagName("contact"); for(int i=0;i<nodeList.getLength();i++){ Map<String, String> map= new HashMap<String, String>(); Element e=(Element) nodeList.item(i); String id=e.getAttribute("id"); map.put("id", id); String name=e.getElementsByTagName("name").item(0).getTextContent(); map.put("name", name); String sex=e.getElementsByTagName("sex").item(0).getTextContent(); map.put("sex", sex); String tel=e.getElementsByTagName("tel").item(0).getTextContent(); map.put("tel", tel); list.add(map); } return list; } @Override public Element add(String name,String sex,String tel) { Document dom=myDocumentFactory.getDocument(); Element eNewContact=dom.createElement("contact"); eNewContact.setAttribute("id", IDGenerate.getID()); Element nameNew=dom.createElement("name"); nameNew.setTextContent(name); eNewContact.appendChild(nameNew); Element sexNew=dom.createElement("sex"); sexNew.setTextContent(sex); eNewContact.appendChild(sexNew); Element telNew=dom.createElement("tel"); telNew.setTextContent(tel); eNewContact.appendChild(telNew); currentUser.appendChild(eNewContact); myDocumentFactory.save();// login(name, pwd); return eNewContact; } public Element delete(String id) { NodeList nodeList=currentUser.getElementsByTagName("contact"); for(int i=0;i<nodeList.getLength();i++){ Element e=(Element) nodeList.item(i); if(e.getAttribute("id").equals(id)){ currentUser.removeChild(e);//把节点从树中移除 myDocumentFactory.save();// login(name, pwd); return e; } } return null; } @Override public void reg(String name, String pwd) { Document dom=myDocumentFactory.getDocument(); Element userNew=dom.createElement("user"); userNew.setAttribute("name", name); userNew.setAttribute("pwd", pwd); dom.getFirstChild().appendChild(userNew); myDocumentFactory.save(); } @Override public Element change(String id, String name, String sex, String tel) { NodeList nodeList=currentUser.getElementsByTagName("contact"); for(int i=0;i<nodeList.getLength();i++){ Element e=(Element) nodeList.item(i); if(e.getAttribute("id").equals(id)){ e.getElementsByTagName("name").item(0).setTextContent(name); e.getElementsByTagName("sex").item(0).setTextContent(sex); e.getElementsByTagName("tel").item(0).setTextContent(tel); myDocumentFactory.save();// login(name, pwd); return e; } } return null; }} |
|
1
2
3
4
5
6
7
8
9
10
|
package cn.hncu.contact.dao;public class contactDAOFactory { private contactDAOFactory(){ } public static contactDAO getContactDAO(){ return new contactImpl(); }} |
cmd
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
package cn.hncu.contact.cmd;import java.util.List;import java.util.Map;import java.util.Scanner;import org.w3c.dom.Element;import cn.hncu.contact.dao.contactDAO;import cn.hncu.contact.dao.contactDAOFactory;public class contanctAction { private contactDAO dao=contactDAOFactory.getContactDAO(); private Scanner sc=null; private String delIds[]; public contanctAction(){ sc=new Scanner(System.in); while (true) { System.out.println("1:登录"); System.out.println("2:注册"); System.out.println("0:退出"); String op=sc.nextLine(); if ("1".equals(op)) { Login(); } else if ("2".equals(op)) { Reg(); } else {// System.exit(0); break; } } } private void Reg() { System.out.println("请输入用户名:"); String name=sc.nextLine(); System.out.println("请输入用户密码:"); String pwd=sc.nextLine(); System.out.println("请确认用户密码:"); String pwd2=sc.nextLine(); if(pwd.equals(pwd2)){ dao.reg(name,pwd); }else{ System.out.println("两次密码输入不一致,请重新注册"); } } private void Login() { System.out.println("请输入用户名:"); String name=sc.nextLine(); System.out.println("请输入用户密码:"); String pwd=sc.nextLine(); boolean boo=dao.login(name, pwd); if(boo){ System.out.println("登录成功..."); operation(); }else{ System.out.println("denglushibai"); } } private void operation() { List<Map<String, String>> list = dao.queryAll(); delIds=new String[list.size()]; int i=0; for (Map<String, String> map : list) { String id=map.get("id"); delIds[i++]=id; }// while (true) { //因为共用同一棵dom树,所以每次增删改查之后,还是原来那棵dom树. //而while内的操作都是对之前的操作,所以要退出到上一阶段重新登陆,获取更新之后的dom树 System.out.println("1:显示联系人"); System.out.println("2:添加联系人"); System.out.println("3:删除联系人"); System.out.println("4:修改联系人"); System.out.println("0:退出"); String sel = sc.nextLine(); if ("1".equals(sel)) { System.out.println("序号\t姓名\t性别\t电话"); System.out.println("------------------------------"); int j = 1; for (Map<String, String> map : list) { String name = map.get("name"); String sex = map.get("sex"); String tel = map.get("tel"); System.out.println((j++) + "\t" + name + "\t" + sex + "\t" + tel); } } else if ("2".equals(sel)) { addContact(); } else if ("3".equals(sel)) { delContact(); } else if ("4".equals(sel)) { changeContact(); } else if ("0".equals(sel)) { return;// break; }// } operation(); } private void changeContact() { System.out.println("请输入要修改的联系人的序号:"); int num=sc.nextInt(); sc.nextLine();//吸掉换行符1 System.out.println("请输入要修改的联系人的姓名:"); String name=sc.nextLine(); System.out.println("请输入要修改的联系人的姓别:"); String sex=sc.nextLine(); System.out.println("请输入要修改的联系人的电话:"); String tel=sc.nextLine(); Element e=dao.change(delIds[num-1],name,sex,tel); if(e!=null){ System.out.println(num+"号联系人更新之后:姓名:"+e.getElementsByTagName("name").item(0).getTextContent() +"性别:"+e.getElementsByTagName("sex").item(0).getTextContent() +"电话号码:"+e.getElementsByTagName("tel").item(0).getTextContent()); }else{ System.out.println("修改失败..."); } } private void delContact() { System.out.println("请输入删除的联系人序号:"); int num=sc.nextInt(); sc.nextLine();//吸掉换行符 Element e=dao.delete(delIds[num-1]); if(e==null){ System.out.println("删除失败,无此联系人"); }else{ System.out.println("删除联系人:"+e.getElementsByTagName("name").item(0).getTextContent()+"成功..."); } } private void addContact() { System.out.println("请输入联系人信息:"); System.out.println("姓名:"); String name=sc.nextLine(); System.out.println("姓别:"); String sex=sc.nextLine(); System.out.println("电话:"); String tel=sc.nextLine(); Element e=dao.add( name,sex, tel); System.out.println("添加联系人"+e.getElementsByTagName("name").item(0).getTextContent()+"成功..."); } public static void main(String[] args) { new contanctAction(); }} |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我。
java联系人管理系统简单设计的更多相关文章
- Java消息系统简单设计与实现
前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...
- JAVA车票管理系统(简单GUI)
一. 需求分析 1.设计题目:车票管理系统 用JAVA语言和数据结构知识设计设计车票管理系统.要求如下所述: 一车站每天有n个发车班次,每个班次都有一个班次号(1.2.3…n),固定的发车时间, ...
- Java登录界面简单设计
package cn.com.view; import java.awt.Color; import java.awt.Font; import java.awt.SystemColor; impor ...
- java web 项目 图书管理系统的设计与实现
java web 项目 图书管理系统的设计与实现
- Java秒杀简单设计二:数据库表和Dao层设计
Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表 https://www.cnblogs.com/taiguyiba/p/9791431.html ...
- 学员管理系统(简单的Django设计)
学员管理系统(简单的Django设计) 学员管理系统 项目规划阶段 项目背景 近年来老男孩教育的入学学员数量稳步快速增长,传统的excel统计管理学员信息的方式已经无法满足日渐增长的业务需求.因此公司 ...
- 毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行
毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行 注意:该项目只展示部分功能,如需了解,评论区咨 ...
- JAVA图书管理系统汇总共27个
好多人都在搜索图书管理系统,感觉这个挺受欢迎的,所以整理了一系列的图书管理系统,让大家选择.java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/683 ...
- 基于Android平台的会议室管理系统具体设计说明书
会议室管理系统具体设计说明书 第一部分 引言 1.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...
随机推荐
- Tensorflow学习笔记No.4.2
使用CNN卷积神经网络(2) 使用Tensorflow搭建简单的CNN卷积神经网络对fashion_mnist数据集进行分类 不了解是那么是CNN卷积神经网络的小伙伴可以参考上一篇博客(Tensorf ...
- git 上传文件到 gitee 码云远程仓库(强制上传)
1.先git init 会出现一个.git的文件夹,有些人可能是隐藏了,工具哪里打开就行了 2.将当前的数据上传到码云,看清楚奥,是当前.git add ./ 这是代表当前的意思 3.将上传的数据备注 ...
- idea如何新建一个springmvc 工程
java 版本 1.8.0_261 idea 版本2020.1 Tomcat 9 maven 3.6 新建工程 File->new->project 默认会下载springframewo ...
- VS2019 配置opencv4.4
安装VS2019 参考:链接 下载opencv 链接 下载此时的最新版4.4.0 最后"上墙"下,不然很慢! 安装opencv 我的安装位置是:D:\soft\opencv\ins ...
- 【模拟】CF 796C Bank Hacking
题目大意 洛谷链接 给定一棵带点权树,选出一个最佳的根节点,使得根节点的点权不变,它的儿子点权加1,其余点点权加2,并使最大点权最小,输出这个最小的最大点权. 其他见链接(懒). PS:原题面很不好总 ...
- Linux系统编程—信号捕捉
前面我们学习了信号产生的几种方式,而对于信号的处理有如下几种方式: 默认处理方式: 忽略: 捕捉. 信号的捕捉,说白了就是抓到一个信号后,执行我们指定的函数,或者执行我们指定的动作.下面详细介绍两个信 ...
- centos8用firewalld搭建防火墙
一,firewalld的systemd管理命令 启动:systemctl start firewalld 关闭:systemctl stop firewalld 查看状态:systemctl stat ...
- sql 存储过程 输出参数 输入参数
1.简单的存储过程 create procedure porc_name as select * from 表 go 调用时: exec proc_name 2. 带参数的存储过程 create pr ...
- Activiti的流程实例【ProcessInstance】与执行实例【Execution】
最近,我在做流程引擎Activiti相关的东西,刚开始时的一个知识点困扰了我许久,那就是Activiti的ProcessInstance与Execution的区别,这是一个Activiti的难点,能够 ...
- 如何在construct3上开发游戏&游戏展示
前言 为了更快体验做出游戏的快乐,我们可以直接采用construct3 提供的游戏模板.这里我用的是基础模板中的塔防游戏.我们在这个的基础上加进来"植物大战僵尸"的一些元素,包括内 ...