이 기사의 예는 참조를 위해 Java Contact Management System의 졸업 설계를 공유합니다. 특정 내용은 다음과 같습니다
필요하다:
XML을 사용하여 데이터를 저장하고 연락처 관리 시스템을 완료하십시오.
시스템을 사용하기 전에 사용자를 인증하고 로그인해야합니다.
연락처 기능을 등록, 추가, 삭제, 뷰.
모듈로 설계되었습니다.
2 층 프레임 워크 사용자 상호 작용 층, DAO 층.
기타지지 계층 - 데이터 캡슐화 계층.
도구 - 암호화, 공장 콩.
개발 단계 :
1 단계 : 데이터 구조 설계 -xml.
1 단계 : 데이터 구조 설계 -xml.
3 단계 : 리소스를 준비하고이를 구현하도록 인코딩하십시오.
4 단계 : 테스트를 실행하십시오.
<? xml version = "1.0"alcoding = "utf-8"독립형 = "no"?> <contacts> <사용자 이름 = "jack"pwd = "1234"> <contact id = "707ddd4a2990f7cfa4cd5233f9 "> xiaoming </name> <tel> 123456 </tel> </contact> <contact id = "80983802EAA6402D8BAC8BB39E71C48F"> <name> </name> <sex> 12 </sex> <tel> 12 </tel> </contact> </user name = "pwd ="4321 "> contact. id = "EEDB795B97194C3AAA9BACDA7E2948E9"> <name> Xiaoming </name> <sex> 여성 </sex> <tel> 123 </tel> </contact> </user> </contacts>
유도
패키지 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 ( "-", ""); }} 패키지 cn.hncu.contact.util; import javax.xml.xml.xml.xml.xml.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import javax.xml.transform.transformer; import javax.xml.transform.transformorceC; javax.xml.transform.stream.streamresult; import org.w3c.dom.document; public class myDocumentFactory {private static final String file_name = "./ xml/users.xml"; 개인 정적 문서 dom = null; 정적 {DocumentBuilder DB; {db = documentBuilDerfactory.newinstance (). newDocumentBuilder (); dom = db.parse (file_name); } catch (예외 e) {새로운 runtimeexception 던지기 ( "XML 문서 구문 분석 실패 ...", e); }} 공개 정적 문서 getDocument () {return dom; } public static void save () {try {transformer tf = transformerFactory.newInstance (). newTransformer (); tf.transform (new domsource (dom), New StreamResult (file_name)); } catch (예외 e) {throw new runtimeexception ( "XML 문서 저장 실패 ...", e); } // configurationError : configuration Exception}}다오
패키지 cn.hncu.contact.dao; import java.util.list; import java.util.map; import org.w3c.dom. Element; public interface contactdao {public boolean login (문자열 이름, 문자열 pwd); 공개 초록 목록 <map <String, String >> QueryAll (); 공개 초록 요소 추가 (문자열 이름, 문자열 섹스, 문자열 tel); 공개 초록 void reg (문자열 이름, 문자열 pwd); 공개 요소 삭제 (문자열 ID); // 기본값 추상 공개 초록 요소 변경 (문자열 ID, 문자열 이름, 문자열 섹스, 문자열 tel);} 패키지 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.dom; import org.w3c.dom.nodelist; cn.hncu.contact.util.idgenerate; import cn.hncu.contact.util.mydocumentFactory; public class contactimpl emplactDao {private element currentUser; 문서 dom = null; public contactimpl () {} // 개인 정적 문자열 이름 = null; // private static string pwd = null; @override // public boolean login (String name2, String pwd2) {public boolean login (문자열 이름, 문자열 pwd) {// name = name2; // pwd = pwd2; dom = myDocumentFactory.getDocument (); 요소 루트 = (요소) dom.getFirstChild (); NODELIST NODELIST = ROOT.GETELEMENTSBYTAGNAME ( "사용자"); for (int i = 0; i <nodelist.getLength (); i ++) {element e = (요소) nodelist.Item (i); if (e.getAttribute ( "name"). equalsignorecase (name) && e.getattribute ( "pwd"). equalsignorecase (pwd)) {currentuser = e; 진실을 반환하십시오. }} 거짓을 반환합니다. } @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> (); 요소 e = (요소) nodelist.item (i); 문자열 id = e.getAttribute ( "id"); map.put ( "id", id); 문자열 이름 = e.getElementsByTagName ( "name"). item (0) .getTextContent (); map.put ( "이름", 이름); 문자열 sex = e.getElementsByTagName ( "sex"). item (0) .getTextContent (); map.put ( "섹스", 섹스); 문자열 tel = e.getElementsByTagName ( "tel"). item (0) .getTextContent (); map.put ( "전화", 전화); list.add (지도); } 반환 목록; } @override public Element Add (문자열 이름, 문자열 섹스, 문자열 tel) {document dom = myDocumentFactory.getDocument (); 요소 enewContact = dom.createElement ( "Contact"); enewcontact.setattribute ( "id", idgenerate.getid ()); 요소 namenew = dom.createElement ( "name"); namenew.settextContent (이름); EnewContact.appendChild (Namenew); 요소 sexNew = dom.createElement ( "섹스"); sexnew.settextContent (sex); EnewContact.appendChild (Sexnew); 요소 telnew = dom.createElement ( "tel"); Telnew.settextContent (Tel); EnewContact.AppendChild (Telnew); currentuser.appendChild (enewContact); myDocumentFactory.save (); // 로그인 (이름, pwd); enewContact 리턴; } public Element Delete (String id) {Nodelist Nodelist = currentUser.getElementsByTagName ( "Contact"); for (int i = 0; i <nodelist.getLength (); i ++) {element e = (요소) nodelist.Item (i); if (e.getAttribute ( "id"). equals (id)) {currentUser.RemoveChild (e); // 트리에서 노드를 제거 myDocumentFactory.save (); // 로그인 (이름, pwd); 반환 e; }} return null; } @override public void reg (문자열 이름, 문자열 pwd) {document dom = myDocumentFactory.getDocument (); 요소 usernew = dom.createElement ( "사용자"); usernew.setattribute ( "이름", 이름); usernew.setattribute ( "pwd", pwd); dom.getfirstchild (). AppendChild (Usernew); myDocumentFactory.save (); } @override public Element Change (문자열 ID, 문자열 이름, 문자열 섹스, 문자열 tel) {Nodelist nodelist = currentUser.getElementsByTagName ( "contact"); for (int i = 0; i <nodelist.getLength (); i ++) {element e = (요소) nodelist.Item (i); if (e.getAttribute ( "id"). Equals (id)) {e.getElementsByTagName ( "name"). item (0) .settextContent (name); e.getElementsByTagName ( "섹스"). 항목 (0) .settextContent (섹스); e.getElementsByTagName ( "tel"). item (0) .settextContent (tel); myDocumentFactory.save (); // 로그인 (이름, pwd); 반환 e; }} return null; }} 패키지 cn.hncu.contact.dao; public class contactdaofactory {private contactdaofactory () {} public static contactdao getContactDao () {return new contactimpl (); }}CMD
패키지 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.contactdao; cn.hncu.contact.dao.contactdaofactory; public class contactaction {private contactdao dao = contactdaofactory.getContactDao (); 개인 스캐너 sc = null; 개인 문자열은 []; public contactaction () {sc = 새 스캐너 (System.In); while (true) {system.out.println ( "1 : login"); System.out.println ( "2 : register"); System.out.println ( "0 : Exit"); 문자열 op = sc.nextline (); if ( "1".equals (op)) {login (); } else if ( "2".equals (op)) {reg (); } else {// system.exit (0); 부서지다; }}} private void reg () {system.out.println ( "사용자 이름을 입력하십시오 :"); 문자열 이름 = sc.nextline (); System.out.println ( "사용자 비밀번호를 입력하십시오 :"); 문자열 pwd = sc.nextline (); System.out.println ( "사용자 비밀번호 확인 :"); 문자열 pwd2 = sc.nextline (); if (pwd.equals (pwd2)) {dao.reg (이름, pwd); } else {System.out.println ( "비밀번호 입력은 일관성이없고 다시 등록하십시오"); }} private void login () {system.out.println ( "사용자 이름을 입력하십시오 :"); 문자열 이름 = sc.nextline (); System.out.println ( "사용자 비밀번호를 입력하십시오 :"); 문자열 pwd = sc.nextline (); 부울 부 = dao.login (이름, pwd); if (boo) {system.out.println ( "성공적으로 로그인 ..."); 작업(); } else {System.out.println ( "Denglushibai"); }} private void operation () {list <map <string, string >> list = dao.queryall (); DELIDS = 새 문자열 [list.size ()]; int i = 0; for (map <string, string> map : list) {String id = map.get ( "id"); [i ++] = ID를 틀립니다. } // while (true) {// 동일한 DOM 트리가 공유되기 때문에 각 추가, 삭제, 수정 및 확인 후에도 여전히 원래 DOM 트리입니다. // while의 작업은 이전 작업이므로 이전 단계로 종료하고 다시 로그인하여 업데이트 된 dom tree system.out.println ( "1 : show contact")을 가져와야합니다. System.out.println ( "2 : 연락처 추가"); System.out.println ( "3 : 삭제 Contact"); System.out.println ( "4 : contact를 수정"); System.out.println ( "0 : Exit"); 문자열 sel = sc.nextline (); if ( "1".equals (sel)) {System.out.println ( "일련 번호/tname/tgender/ttel"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ map.get.out.out.println ((J ++) + "/t"/t " + sex +" + tel); changectact ( "0" System.out.println (수정할 연락처 이름을 입력하십시오. "); System.out.println ( "수정할 연락처의 성을 입력하십시오 :"); 문자열 sex = sc.nextline (); System.out.println ( "수정할 연락처의 전화 번호를 입력하십시오 :"); 문자열 tel = sc.nextline (); 요소 e = dao.change (Depals [num-1], 이름, 섹스, 전화); if (e! = null) {system.out.println (num+"연락처가 업데이트 된 후 표시 : 이름 :"+e.getElementsByTagName ( "name"). item (0) .getTextContent ()+"젠더 :"+e.getElementsByTagName ( "sex"). item (0). getTextContent (). getTextContent () getTextContent (). 번호 : "+e.getElementsByTagName ("tel "). item (0) .getTextContent ()); } else {System.out.println ( "수정 실패 ..."); }} private void delcontact () {System.out.println ( "삭제 된 연락처 번호를 입력하십시오 :"); int num = sc.nextint (); sc.nextline (); // newline 문자 요소 e = dao.delete를 빨아 넣습니다 (DeDids [num-1]); if (e == null) {system.out.println ( "삭제 실패, 연락처 없음"); } else {system.out.println ( "삭제 연락처 :"+e.getElementsByTagName ( "name"). item (0) .getTextContent ()+"success ..."); }} private void addContact () {system.out.println ( "연락처 정보를 입력하십시오 :"); System.out.println ( "이름 :"); 문자열 이름 = sc.nextline (); System.out.println ( "이름 :"); 문자열 sex = sc.nextline (); System.out.println ( "전화 :"); 문자열 tel = sc.nextline (); 요소 e = dao.add (이름, 섹스, 전화); System.out.println ( "연락처 추가"+e.getElementsByTagName ( "name"). item (0) .getTextContent ()+"success ..."); } public static void main (String [] args) {new ContactAction (); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.