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.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...
随机推荐
- Object.assign()的使用
一.Object.assign()对象的拷贝 1 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 2 Object.assign(ta ...
- 「DevOps 转型与实践」沙龙回顾第二讲
背景介绍 本期分享内容为<平台化 DevOps-云计算与云原生模式下 DevOps 的建设实践>.目前,DevOps 越来越成为大家当前建设的热点,伴随着基础设施的转型和应用框架的转型,更 ...
- PyCharm 上安装 Package(以 pandas 为例)
一.使用 PyCharm 软件安装 pandas 包 1.打开 PyCharm 2.点击右上角 "Files" →"Settings..." 3.弹出" ...
- axio跨域请求,vue中的config的配置项。
这是我用 vue cli 脚手架搭建的跨域.以上是可以请求到的.
- CSS的元素显示模式与转换
CSS的元素显示模式与转换 1. CSS的元素显示模式 1.1 块元素 <div>标签是最典型的块元素.另外常见的块元素有h1~h6.p.ul.ol.li等. 特点: 独占一行 高度.宽度 ...
- Git之多人协同开发
一.获取远程库信息 1 2 3 $ git remote -v origin https://github.com/xxxxx/node.git (fetch) origin https://gi ...
- 多层级makefile
多层级makefile 当项目变大之后,需要多层级的makefile来编译,每个makefile的具体功能实现参考单源文件目录makefile.然后再在顶层目录写一个总的makefile来实现编译逻辑 ...
- MySQL数据库规范 (设计规范+设计规范+操作规范)
I 文档定义 1.1 编写目的 为了在软件生命周期内规范数据库相关的需求分析.设计.开发.测试.运维工作,便于不同团队之间的沟通协调,以及在相关规范上达成共识,提升相关环节的工作效率和系统的可维护性. ...
- pytest文档43-元数据使用(pytest-metadata)
前言 什么是元数据?元数据是关于数据的描述,存储着关于数据的信息,为人们更方便地检索信息提供了帮助. pytest 框架里面的元数据可以使用 pytest-metadata 插件实现.文档地址http ...
- rabbitmq与erlang版本
来源自https://www.rabbitmq.com/which-erlang.html erlang安装包下载地址 https://packages.erlang-solutions.com/er ...