메인 메뉴는 각 레벨에서 하위 메뉴를 제어하고 레코드 추가, 레코드 찾기, 레코드 삭제, 레코드 수정, 레코드 정렬 및 시스템 기능의 구현을 인식합니다. 총 6 개의 기능 모듈.
위의 다이어그램은 각 모듈의 함수를 보여주고 정규식을 사용하여 입력이 규칙을 준수하는지 여부를 결정합니다. 이 시스템은 MVC의 설계 패턴을 반영하며 노동 부서는 매우 분명합니다.
주로 다음 범주가 포함됩니다.
앱 클래스 : 프로그램의 주요 기능 클래스, 프로그램 입력 시작
메뉴 클래스 : 간단한 페이지에 표시되는 모든 효과이며 기능 구현이 없습니다.
TelNoteERGEX 클래스 : 입력 자격이 있는지 여부를 결정하는 정규 표현식은이 방법에 있습니다.
운영 클래스 : 비즈니스 로직 클래스, 모든 기능은 기본적 으로이 클래스에 집중됩니다.
개인 수업 : 데이터 캡슐화.
특정 구현 코드 :
앱 클래스의 코드 :
package com.bjsxt.iphone; public class app {public static void main (String [] args) {new app (). start (); } public void start () {메뉴 M = 새 메뉴 (); OPORTATE O = New Operate (); TelnoteEgex reg = 새로운 TelNoteEgex (); while (true) {m.mainmenu (); int key = reg.menuregex (1, 6); 스위치 (키) {case 1 : O.addlogic (); 부서지다; 사례 2 : O.SearchLogic (); 부서지다; 사례 3 : O.ModifyLogicLogic (); 부서지다; 사례 4 : O.deleteLogic (); 부서지다; 사례 5 : O.OrderLogic (); 부서지다; 사례 6 : System.Exit (0); 부서지다; }}}}개인 클래스의 특정 구현 코드 :
package com.bjsxt.iphone; public class person {private int id; // 사용자 ID 속성 개인 문자열 이름; // 사용자 이름 속성 개인 문자열 연령; // 사용자 연령 속성 개인 문자열 섹스; // 사용자 성별 속성 개인 문자열 telnum; // 사용자 전화 번호 속성 개인 문자열 주소; // 사용자 주소 속성 공용 인사 ()} 공공 인사 (ind id, string age, string, String, String, String, String, String, String, String Agend) this.id = id; this.name = 이름; this.age = age; this.sex = 섹스; this.telnum = telnum; address = 주소; } public int getId () {return id; } public void setid (int id) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public String getage () {반환 연령; } public void setage (String Age) {this.age = age; } public String getSex () {return sex; } public void setsex (String sex) {this.sex = sex; } public String getTelnum () {return telnum; } public void settelnum (String telnum) {this.telnum = telnum; } public String getAddress () {return address; } public void setAddress (문자열 주소) {this.address = 주소; }}TelnoteeGex 클래스의 특정 코드 :
package com.bjsxt.iphone; import java.util.scanner; public class telnoteergex {// 메뉴 항목 @suppresswarnings ( "resource") public int menuregex (int min, int max) {String regex = "[0-9] {1}"; 스캐너 sc = 새 스캐너 (System.In); while (true) {String input = sc.nextline (); // 합법성을 기준으로 (input.matches (regex)) {int key = integer.parseint (input); if (key> = min && key <= max) {return key; } else {system.out.println ( "입력 된 메뉴 항목은 요구 사항을 충족하지 않습니다!"); }} else {System.out.println ( "입력 내용이 잘못되었습니다!"); }}}} // 사용자 입력 이름 확인 @SuppressWarnings ( "resource") public String nameRegex (문자열 이름) {String Pattern = "[// u4e00-// u9fa5]+"; 문자열 str = 이름; 스캐너 sc = 새 스캐너 (System.In); while (true) {if (str.matches (Pattern)) {return str; } else {System.out.println ( "불법 문자 입력, 한자를 다시 입력하십시오"); str = sc.nextline (); 계속하다; }}} // 사용자 입력 age @suppresswarnings ( "resource") public string ageeregex (String age) {문자열 패턴 = "^([0-9] | [0-9] {2} | 100) $"; 문자열 str = age; 스캐너 sc = 새 스캐너 (System.In); while (true) {if (str.matches (Pattern)) {return str; } else {system.out.println ( "불법 문자 입력, 숫자를 다시 입력하십시오"); str = sc.nextline (); 계속하다; }}} // 사용자 성별 검증 @SuppressWarnings ( "Resource") public String SexRegex (String Sex) {String Pattern = "[남성 및 여성 MMFF]"; 문자열 str = 섹스; 스캐너 sc = 새 스캐너 (System.In); while (true) {if (str.matches (Pattern)) {return str; } else {System.out.println ( "불법 문자 입력, 남성과 여성 MMFF를 재입치하십시오"); str = sc.nextline (); 계속하다; }}} // 사용자 입력 전화 번호 확인 @SuppressWarnings ( "Resource") public String TelnumRegex (String Telnum) {String Pattern = "[0-9] {11}"; 문자열 str = telnum; 스캐너 sc = 새 스캐너 (System.In); while (true) {if (str.matches (Pattern)) {return str; } else {System.out.println ( "불법 문자 입력, 11 자리 휴대 전화 번호를 다시 입력하십시오"); str = sc.nextline (); 계속하다; }}}} // 사용자 입력 주소 확인 @SuppressWarnings ( "resource") public String addressRegex (문자열 주소) {문자열 패턴 = "[a-za-z [0-9]] {1,15}"; 문자열 str = 주소; 스캐너 sc = 새 스캐너 (System.In); while (true) {if (str.matches (Pattern)) {return str; } else {System.out.println ( "불법 문자 입력, 1 ~ 15 개의 영어 케이스 또는 숫자를 다시 입력하십시오"); str = sc.nextline (); 계속하다; }}}}메뉴 클래스 코드의 특정 구현 :
package com.bjsxt.iphone; 공개 클래스 메뉴 {// 메인 인터페이스 public void mainmenu () {System.out.println ( "***********************************************************************************************"; System.out.println ( "** 1 add acde **"); System.out.println ( "** 2 찾기 레코드 **"); System.out.println ( "** 3 레코드 수정 **"); System.out.println ( "** 4 삭제 레코드 **"); System.out.println ( "** 5 정렬 레코드 **"); System.out.println ( "** 6 시스템 종료 **"); System.out.println ( "********************************"); } // 인터페이스 추가 public void addmenu () {System.out.println ( "**************************"); System.out.println ( "** 1 새로운 레코드 추가 **"); System.out.println ( "** 2 모든 레코드보기 **"); System.out.println ( "** 3 이전 레벨로 돌아 가기 **"); System.out.println ( "****************************"); } // 검색 인터페이스 public void searchMenu () {System.out.println ( "*********************************"); System.out.println ( "** 1 이름으로 검색"); System.out.println ( "** 2 연령별 검색"); System.out.println ( "** 3 성별 검색"); System.out.println ( "** 4 번호 별 검색"); System.out.println ( "** 5. 주소를 클릭하여 **"); System.out.println ( "** 6. 전체 레코드보기 **"); System.out.println ( "** 7. 이전 레벨로 돌아 가기 **"); System.out.println ( "****************************"); } // 인터페이스 수정 공개 void modifyMenu () {System.out.println ( "****************************"); System.out.println ( "** 1. 전체 레코드보기 **"); System.out.println ( "** 2 지정된 레코드 수정 **"); System.out.println ( "** 3 이전 레벨로 돌아 가기 **"); System.out.println ( "****************************"); } // 하위 인터페이스 수정 공개 void submodifymenu () {System.out.println ( "*********************************"); System.out.println ( "** 1 이름을 수정 **"); System.out.println ( "** 2 연령 수정 **"); System.out.println ( "** 3 성별 수정 **"); System.out.println ( "** 4 수정 번호 **"); System.out.println ( "** 5 주소를 수정 **"); System.out.println ( "** 6 이전 레벨로 돌아 가기 **"); System.out.println ( "****************************"); } // 인터페이스 삭제 public void deletemenu () {system.out.println ( "*******************************"); System.out.println ( "** 1 모든 레코드보기 **"); System.out.println ( "** 2 지정된 레코드 삭제 **"); System.out.println ( "** 3 모든 레코드 삭제 **"); System.out.println ( "** 4 이전 레벨로 돌아갑니다 **"); System.out.println ( "********************************"); } // 인터페이스 정렬 public void ordermenu () {System.out.println ( "******************************"); System.out.println ( "** 1 이름별로 정렬 **"); System.out.println ( "** 2 Sort y Age **"); System.out.println ( "** 3 성별별로 정렬 **"); System.out.println ( "** 4 모든 레코드보기 **"); System.out.println ( "** 5 이전 레벨로 돌아 가기 **"); System.out.println ( "*****************************"); }}운영 클래스의 특정 구현 :
package com.bjsxt.iphone; import java.util.arraylist; import java.util.collections; import java.util.comparator; import java.util.iterator; import java.util.iterator; import java.util.list; import java.util.scanner; public class {private list <person> list = new arraylist <person> (); // 사용자 추가 정보 비즈니스 로직 제어 공개 void addLogic () {메뉴 M = 새 메뉴 (); TelnoteEgex reg = 새로운 TelNoteEgex (); while (true) {m.addmenu (); int key = reg.menuregex (1, 3); 스위치 (키) {case 1 : addOperation (); 부서지다; 사례 2 : showall (); 부서지다; 사례 3 : 반환; }}} // 사용자 쿼리 정보 정보 비즈니스 로직 제어 public void searchLogic () {메뉴 M = 새 메뉴 (); TelnoteEgex reg = 새로운 TelNoteEgex (); while (true) {m.searchmenu (); int key = reg.menuregex (1, 7); 스위치 (키) {case 1 : searchByName (); 부서지다; 사례 2 : SearchByage (); 부서지다; 사례 3 : SearchBySex (); 부서지다; 사례 4 : SearchByTelnum (); 부서지다; 사례 5 : searchByAdd (); 부서지다; 사례 6 : showall (); 부서지다; 사례 7 : 반환; }}} // 정보 수정 정보 비즈니스 로직 제어 공개 void modifyLogicLogic () {메뉴 M = 새 메뉴 (); TelnoteEgex reg = 새로운 TelNoteEgex (); while (true) {m.modifymenu (); int key = reg.menuregex (1, 3); 스위치 (키) {case 1 : showall (); 부서지다; 사례 2 : modifyLogicLogic1 (); 부서지다; 사례 3 : 반환; }}} // 3 계층 점프 수정 공개 void modifyLogicLogic1 () {menu m = new Menu (); TelnoteEgex reg = 새로운 TelNoteEgex (); while (true) {m.submodifymenu (); int key = reg.menuregex (1, 6); 스위치 (키) {case 1 : namemodify (); 부서지다; 사례 2 : agemodify (); 부서지다; 사례 3 : sexModify (); 부서지다; 사례 4 : telnumModify (); 부서지다; 사례 5 : 주소 modify (); 부서지다; 사례 6 : 반환; }}} // 정보 삭제 정보 비즈니스 로직 제어 공개 void deleteLogic () {menu m = new Menu (); TelnoteEgex reg = 새로운 TelNoteEgex (); while (true) {m.deletemenu (); int key = reg.menuregex (1, 4); 스위치 (키) {case 1 : showall (); 부서지다; 사례 2 : delete (); 부서지다; 사례 3 : deleteall (); 부서지다; 사례 4 : 반환; }}} // 정보 정렬 정보 비즈니스 로직 제어 public void orderLogic () {menu m = new Menu (); TelnoteEgex reg = 새로운 TelNoteEgex (); while (true) {m.orderMenu (); int key = reg.menuregex (1, 5); 스위치 (키) {case 1 : OrderName (); 부서지다; 사례 2 : ORDERAGE (); 부서지다; 사례 3 : OrdersEx (); 부서지다; 사례 4 : showall (); 부서지다; 사례 5 : 반환; }}} // 새 사용자 정보 추가 @suppresswarnings ( "resource") public void addoperation () {telnoteergex reg = new telnoteergex (); 스캐너 sc = 새 스캐너 (System.In); System.out.println ( "연락처 ID를 입력하십시오 :"); 문자열 id = sc.nextline (); System.out.println ( "추가 할 이름을 입력하십시오 :"); 문자열 이름 = sc.nextline (); 이름 = reg.nameergex (이름); System.out.println ( "추가 할 연령을 입력하십시오 :"); 문자열 age = sc.nextline (); age = reg.agegex (연령); System.out.println ( "추가하려는 성별을 입력하십시오 :"); 문자열 sex = sc.nextline (); 섹스 = reg.sexregex (섹스); System.out.println ( "추가 할 휴대폰 번호를 입력하십시오 :"); 문자열 telnum = sc.nextline (); telnum = reg.telnumregex (telnum); System.out.println ( "추가 할 주소를 입력하십시오 :"); 문자열 주소 = sc.nextline (); 주소 = reg.addressRegex (주소); int personid = integer.parseint (id); Person P = 새로운 사람 (Personid, 이름, 연령, 성별, Telnum, 주소); list.add (p); } // // // 일련 번호가 이미 존재했는지 판단하고 삽입이 성공적으로 실패했는지 판단 // @suppresswarnings ( "resource") // public string judgeid (string id) {// scanner sc = new Scanner (System.In); // iterator <person> it = list.terator (); // string newid = id; p = (person) it.next (); // if (newId.equals (p.getId ())) {// system.out.println ( "이 일련 번호가 이미 존재하고, 일련 번호를 다시 입력하십시오. 사용자 정보 공개 void showall () {System.out.println ( "일련 번호/t/t"+"name/t/t"+"age/t/t"+"gender/t/t"+"mobile 번호/t/t"+"주소"); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); System.out.println (p.getId ()+"#"#"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.getTelnum ()+"/t/t "+p.getAddress ()); }} // 이름 @SuppressWarnings ( "resource") public void searchByName () {TelnoteEgex reg = new TelnoteEgex (); System.out.println ( "쿼리하려는 이름을 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 이름 = sc.nextline (); 이름 = reg.nameergex (이름); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (name.equals (p.getName ())) {System.out.println (p.getId ()#"#"+"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t/p.p.gettelnum ()+p.getaddress ()); }}} // age @suppresswarnings ( "resource") public void searchByage () {telnoteergex reg = new TelnoteerGex (); System.out.println ( "쿼리하려는 연령을 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 age = sc.nextline (); age = reg.agegex (연령); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (age.equals (p.getage ())) {System.out.println (p.getId ()#"#"+"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t/p.p.gettelnum ()+"/t/t"); }}} // gender @suppresswarnings ( "resource") public void searchBeysex () {telnoteergex reg = new TelnoteEgex (); System.out.println ( "쿼리하려는 성별을 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 sex = sc.nextline (); 섹스 = reg.sexregex (섹스); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (sex.equals (p.getSex ())) {System.out.println (p.getId ()#"#"+"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.gettelnum ()+t/t"); }}} // 전화 번호 @suppresswarnings ( "resource") 공개 void searchBytelnum () {telnoteergex reg = new TelnoteerGex (); System.out.println ( "쿼리하려는 전화 번호를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 telnum = sc.nextline (); telnum = reg.telnumregex (telnum); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (telnum.equals (p.gettelnum ())) {System.out.println (p.getId ()+"#"+"/t/"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.P.P.P.P.P.P.P.P.P.P.P.P.GgetDress (); }}} // 주소별로 사용자 정보 확인 @SuppressWarnings ( "Resource") public void searchByAdd () {telnoteergex reg = new TelnoteerGex (); System.out.println ( "쿼리하려는 주소를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 주소 = sc.nextline (); 주소 = reg.addressRegex (주소); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (address.equals (p.getAddress ())) {system.out.println (p.getId ()#"#"+"/"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t/t "+p.getSex ()+"/t/t "+p.P.GETTELNUM ()+t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t/t. }}} // // 지정된 레코드 정보 수정 // public void modify () {// system.out.println ( "수정하려는 정보를 입력하십시오 :"); // //} // 이름 정보를 수정 @suppresswarnings ( "Resource") public void namemodify () {Telnoteergex Reg = New Telogex (); System.out.println ( "수정하려는 일련 번호를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 num = sc.nextline (); int id = integer.parseint (num); System.out.println ( "수정하려는 이름을 입력하십시오 :"); 문자열 이름 = sc.nextline (); 이름 = reg.nameergex (이름); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (id == p.getId ()) {p.setName (이름); System.out.println (p.getId ()+"#"#"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.getTelnum ()+"/t/t "+p.getAddress ()); } else {System.out.println ( "수정 실패, 다시 시도하십시오!"); }}} // 연령 정보 수정 @SuppressWarnings ( "Resource") public void agemodify () {telnoteergex reg = new TelnoteerGex (); System.out.println ( "수정하려는 일련 번호를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 num = sc.nextline (); int id = integer.parseint (num); System.out.println ( "수정하려는 연령을 입력하십시오 :"); 문자열 age = sc.nextline (); age = reg.agegex (연령); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (id == p.getId ()) {p.setage (age); System.out.println (p.getId ()+"#"#"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.getTelnum ()+"/t/t "+p.getAddress ()); } else {System.out.println ( "수정 실패, 다시 시도하십시오!"); }}} // 성별 정보 수정 @SuppressWarnings ( "Resource") public void sexModify () {TelNOTEREGEX reg = new TelnoteERGEX (); System.out.println ( "수정하려는 일련 번호를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 num = sc.nextline (); int id = integer.parseint (num); System.out.println ( "수정하려는 성별을 입력하십시오 :"); 문자열 sex = sc.nextline (); 섹스 = reg.sexregex (섹스); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (id == p.getId ()) {p.setSex (섹스); System.out.println (p.getId ()+"#"#"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.getTelnum ()+"/t/t "+p.getAddress ()); } else {System.out.println ( "수정 실패, 다시 시도하십시오!"); }}} // 번호 정보 수정 @SuppressWarnings ( "Resource") public void telnumModify () {System.out.println ( "수정하려는 일련 번호를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 num = sc.nextline (); int id = integer.parseint (num); System.out.println ( "수정할 전화 번호를 입력하십시오 :"); 문자열 telnum = sc.nextline (); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (id == p.getId ()) {p.settelnum (telnum); System.out.println (p.getId ()+"#"#"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.getTelnum ()+"/t/t "+p.getAddress ()); } else {System.out.println ( "수정 실패, 다시 시도하십시오!"); }}} // 주소 정보 수정 @suppresswarnings ( "resource") public void addressModify () {telNOTEREGEX reg = new TelNoteEgex (); System.out.println ( "수정하려는 일련 번호를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 num = sc.nextline (); int id = integer.parseint (num); System.out.println ( "수정하려는 주소를 입력하십시오 :"); 문자열 주소 = sc.nextline (); 주소 = reg.addressRegex (주소); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (id == p.getId ()) {p.setAddress (주소); System.out.println (p.getId ()+"#"#"+"/t/t "+p.getName ()+"/t/t "+p.getage ()+"/t/t "+p.getSex ()+"/t/t "+p.getTelnum ()+"/t/t "+p.getAddress ()); } else {System.out.println ( "수정 실패, 다시 시도하십시오!"); }}} // 지정된 사용자 정보 삭제 @suppresswarnings ( "resource") public void delete () {system.out.println ( "삭제하려는 ID를 입력하십시오 :"); 스캐너 sc = 새 스캐너 (System.In); 문자열 num = sc.nextline (); int id = integer.parseint (num); iterator <person> it = list.iterator (); while (it.hasnext ()) {person p = (person) it.next (); if (id == p.getId ()) {list.remove (id); System.out.println ( "성공적인 삭제"); } else {system.out.println ( "삭제 실패"); }}} // 모든 사용자 정보 삭제 public void deleteall () {list.clear (); System.out.println ( "성공적으로 삭제"); } // 사용자 이름별로 정렬 공개 void ordername () {비교기 <person> 비교기 = new 비교기 <person> () {@override public int compart (person o1, person o2) {return o1.getname (). 비교 (o2.getName ()); }}; collections.sort (목록, 비교기); showall (); } // 사용자 연령별 정보 정렬 공개 void Orderage () {비교기 <person> 비교기 = new 비교기 <person> () {@override public int compart (person o1, person o2) {return o1.getage (). compareto (o2.getage ()); }}; collections.sort (목록, 비교기); showall (); } // 사용자 성별 void ordersex () {비교기 <person> 비교기 = 새로운 비교기 <person> () {@override public int compart (person o1, person o2) {return o1.getSex (). 비교 (o2.getSex ()); }}; collections.sort (목록, 비교기); showall (); }}요약 : 이 프로젝트는 객체 지향이 무엇인지, Java가 객체 지향 프로그래밍 언어 인 이유에 대해 매우 명확하게했습니다. 프로그램 코드는 객체에 의해 호출되며 프로젝트를 명확하게 작성하는 방법도 이해했습니다. 기능과 견해는 분리되어야합니다. 각 클래스에는 고유 한 기능이 있습니다. 각 클래스의 기능을 함께 제거해서는 안됩니다. 이러한 코드는 기본적으로 재사용 할 수 없습니다. 분리되고 명확한 경우, 향후 기능 모듈을 추가 할 때는 이전 코드를 수정하지 않고 기능 만 추가해야합니다. 이것은 개방 및 폐쇄의 원리를 잘 반영합니다. 기능 개발 및 수정 컨텐츠의 경우이 프로젝트는 MVC의 설계 패턴도 반영합니다. 저에게 있어이 프로젝트는 저에게 많은 도움이되었습니다.