本文实例为大家分享了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联系人管理系统简单设计的更多相关文章

  1. Java消息系统简单设计与实现

    前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...

  2. JAVA车票管理系统(简单GUI)

    一.    需求分析 1.设计题目:车票管理系统 用JAVA语言和数据结构知识设计设计车票管理系统.要求如下所述: 一车站每天有n个发车班次,每个班次都有一个班次号(1.2.3…n),固定的发车时间, ...

  3. Java登录界面简单设计

    package cn.com.view; import java.awt.Color; import java.awt.Font; import java.awt.SystemColor; impor ...

  4. java web 项目 图书管理系统的设计与实现

     java web 项目 图书管理系统的设计与实现

  5. Java秒杀简单设计二:数据库表和Dao层设计

    Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表  https://www.cnblogs.com/taiguyiba/p/9791431.html ...

  6. 学员管理系统(简单的Django设计)

    学员管理系统(简单的Django设计) 学员管理系统 项目规划阶段 项目背景 近年来老男孩教育的入学学员数量稳步快速增长,传统的excel统计管理学员信息的方式已经无法满足日渐增长的业务需求.因此公司 ...

  7. 毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行

    毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行 注意:该项目只展示部分功能,如需了解,评论区咨 ...

  8. JAVA图书管理系统汇总共27个

    好多人都在搜索图书管理系统,感觉这个挺受欢迎的,所以整理了一系列的图书管理系统,让大家选择.java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/683 ...

  9. 基于Android平台的会议室管理系统具体设计说明书

    会议室管理系统具体设计说明书 第一部分  引言 1.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...

随机推荐

  1. 《穷查理年鉴》习惯 & 工作 & 自省 & 自律 (关于自己)

    习惯 001.在那充满古老年鉴的年代里,扔掉你的恶行,不管它们曾经给你带来多大的好处. 002.许多关于预言的争论都可以简化为:当你说是时,就有人说浊;当你认为不是时,一定有人说是. 003.坏习惯和 ...

  2. 深入浅出学Java-HashMap

    一.概要 HashMap在JDK1.8之前的实现方式 数组+链表,但是在JDK1.8后对HashMap进行了底层优化,改为了由 数组+链表+红黑树实现,主要的目的是提高查找效率. 如下图所示: JDK ...

  3. httpd之ab压力测试

    安装软件 yum install -y httpd 参数说明:用法Usage: ab [options] [http[s]://]hostname[:port]/path用法:ab [选项] 地址 选 ...

  4. 1-kubeadm部署1.18.0单master集群

    1.有了docker,为什么还用kubernetes? 访问工具层 帮助用户更高效的完成任务,包括web控制台.RESTfulAPI.CI/CD.监控管理.日志管理 PaaS服务层 为开发.测试和运维 ...

  5. 笔记本键盘按U键却变成了4

    解答 笔记本键盘U盘变成了4,是因为你开启了小键盘功能.出现该问题,只要关闭小键盘功能即可,操作如下: 按住键盘下方的Fn,同时按住键盘顶部的F键中标有Numlk的键. 电脑屏幕出现解锁标志,小键盘功 ...

  6. nginx完美支持thinkphp3.2.2(需配置URL_MODE=>3 rewrite兼容模式)

    来源:http://www.thinkphp.cn/topic/26637.html 环境:nginx 1.6,thinkphp3.2.2 第一步,修改server块 server { listen ...

  7. Fabric1.4.4 多机solo共识搭建

    简单记录一下fabric版本1.4.4的搭建部署,运行环境为CentOs7.8,如有错误欢迎批评指正.然后就是本编文章不对环境搭建做说明,基础环境搭建看这里. 1.总体设计 本案例部署一个排序(ord ...

  8. (OK) Android内核(4.9)集成最新版MPTCP---成功

    Android内核(4.9)集成最新版MPTCP---成功

  9. MeteoInfoLab脚本示例:subplot

    subplot命令可以自动等间距分配多个坐标系(Axes),命令中有三个参数,前两个定义了行数和列数,第三个指定了当前的坐标系(Axes),绘图命令是作用在当前坐标系中的. 脚本程序: def f(t ...

  10. BASH提示符颜色、显示返回值,终端标题显示当前目录与正在执行的命令

    BASH的PS1变量控制提示符相关的东西,善用它可以让BASH用起来舒服很多 提示符颜色 提示符显示上一个命令的返回值(exit code),并根据是否0调整颜色 提示符生成的时间(这样就知道上一条命 ...