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();
 
  }
 
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM