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.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...
随机推荐
- ESP8266 玩板记
一.前言 esp8266的玩板记,后面应该会去更一些其他东西,这一块内容,这算是收官之战了. IoT,江湖有缘再相会 二.ESP8266实现WiFi杀手/钓鱼 这次的博客做的是一个娱乐性较强的项目. ...
- PowerShell 语法
PowerShell 之 教程 PowerShell 中变量.函数命名等不区分大小写,但字符串区分大小写 powershell 脚本文件 扩展名为 .ps1 调用操作符 & + Cmd Cmd ...
- js产生任意2个区间内的随机整数
var code = myRound(30,100); function myRound(begin,end){ var num = Math.round(Math.random()*(end-beg ...
- Android HandlerThread 详解
概述 HandlerThread 相信大家都比较熟悉了,从名字上看是一个带有 Handler 消息循环机制的一个线程,比一般的线程多了消息循环的机制,可以说是Handler + Thread 的结合, ...
- 自定义常用input表单元素一:纯css 实现自定义checkbox复选框
最下面那个是之前写的 今天在做项目的时候发现,之前写的貌似还是有点多,起码增加的span标签可以去掉,这样保持和原生相同的结构最好的,仅仅是样式上的变化.今天把项目中的这个给更新上来.下面就直接还是 ...
- VS code开发工具的使用教程
前言 工欲善其事必先利其器,提高程序员的开发效率必须要有一个好的开发工具,当前最好的前端开发工具主要有VS code.sublime Text.Atom.Webstorm.Notepad++. VS ...
- 如何快速在vscode配置C/C++环境
目录 1.卸载重装vscode 2.下载vscode 3.下载MinGW 4.配置环境变量 5.配置c/c++环境 6.超完整的配置文件 7.常用扩展推荐 8.注意 9.后记 相信许多刚开始使用vsc ...
- Linux文件系统和管理-2文件操作命令(上)
文件操作命令 文件 文件也包括目录 目录是一种特殊的文件 目录 一个目录名分成两部分 所在目录 dirname 父目录的路径 文件名 basename 本身就是两个命令 [root@C8-1 misc ...
- C++学习笔记---引用的本质
本质:引用本质上是C++内部实现的一个指针常量 发现是引用的话,自动帮我们转换成指针常量 运行后,发现修改ref的值那么a的值也会一起改变,这就说明了引用的本质就是指针
- uvalive6468,51cthink1419 Strange Antennas (离散化)
题意: 在一个 n x n 的平面上,给定 m 个等腰直角三角形(各点均为整数),问该平面上被三角形覆盖奇数次的点有多少个. 思路: 由于 n 较大,不能模拟解决,故使用离散化思想. 考虑每一行有多少 ...