通過主菜單對各級子菜單進行控制,并實現(xiàn)添加記錄,查找記錄,刪除記錄,修改記錄,排序記錄,以及退出系統(tǒng)功能的實現(xiàn)。一共六部分的功能模塊。
10年的水富網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整水富建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“水富網(wǎng)站設(shè)計”,“水富網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
上面的圖就是每個模塊具有的功能,而且還用到了正則表達式判斷輸入的是否符合規(guī)則,這個系統(tǒng)體現(xiàn)了MVC的設(shè)計模式,分工調(diào)用很清晰。
主要包含了下面幾個類:
APP類:程序的主函數(shù)類,程序開始的入口
Menu類:里面都是簡單頁面顯示的效果,沒有功能的實現(xiàn)。
TelNoteRegex類:正則表達式,判斷是否輸入合格,都在這個方法中。
Operate類:業(yè)務(wù)邏輯類,全部功能的實現(xiàn)基本都集中在這個類中。
Person類:封裝數(shù)據(jù)。
具體的實現(xiàn)代碼:
App類的實現(xiàn)代碼:
package com.bjsxt.iphone; public class App { public static void main(String[] args) { new App().start(); } public void start(){ Menu m=new Menu(); Operate o=new Operate(); TelNoteRegex reg=new TelNoteRegex(); while(true){ m.mainMenu(); int key=reg.menuRegex(1, 6); switch(key){ case 1: o.addLogic(); break; case 2: o.searchLogic(); break; case 3: o.modifyLogicLogic(); break; case 4: o.deleteLogic(); break; case 5: o.orderLogic(); break; case 6: System.exit(0); break; } } } }
Person類具體的實現(xiàn)代碼:
package com.bjsxt.iphone; public class Person { private int id;//用戶ID屬性 private String name;//用戶姓名屬性 private String age;//用戶年齡屬性 private String sex;//用戶性別屬性 private String telNum;//用戶電話號碼屬性 private String address;//用戶地址屬性 public Person(){} public Person(int id,String name,String age,String sex,String telNum,String address){ this.id=id; this.name=name; this.age=age; this.sex=sex; this.telNum=telNum; this.address=address; } public int getId() { return id; } public void setId(int id) { this.id=id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } 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(String address) { this.address = address; } }
TelNoteRegex類具體代碼:
package com.bjsxt.iphone; import java.util.Scanner; public class TelNoteRegex { //對菜單項校驗 @SuppressWarnings("resource") public int menuRegex(int min,int max){ String regex="[0-9]{1}"; Scanner sc=new Scanner(System.in); while(true){ String input=sc.nextLine(); //根據(jù)合法性的校驗 if(input.matches(regex)){ int key=Integer.parseInt(input); if(key>=min && key<=max){ return key; }else{ System.out.println("輸入的菜單項不符合要求!"); } }else{ System.out.println("輸入內(nèi)容不正確!"); } } } //用戶輸入姓名的驗證 @SuppressWarnings("resource") public String nameRegex(String name){ String pattern ="[\\u4e00-\\u9fa5]+"; String str=name; Scanner sc=new Scanner(System.in); while(true){ if(str.matches(pattern)){ return str; }else{ System.out.println("輸入不合法字符,請重新輸入中文漢字"); str=sc.nextLine(); continue; } } } //用戶輸入年齡的驗證 @SuppressWarnings("resource") public String ageRegex(String age){ String pattern ="^([0-9]|[0-9]{2}|100)$"; String str=age; Scanner sc=new Scanner(System.in); while(true){ if(str.matches(pattern)){ return str; }else{ System.out.println("輸入不合法字符,請重新輸入數(shù)字"); str=sc.nextLine(); continue; } } } //用戶性別的驗證 @SuppressWarnings("resource") public String sexRegex(String sex){ String pattern ="[男女MmFf]"; String str=sex; Scanner sc=new Scanner(System.in); while(true){ if(str.matches(pattern)){ return str; }else{ System.out.println("輸入不合法字符,請重新輸入男女MmFf"); str=sc.nextLine(); continue; } } } //用戶輸入電話號碼的驗證 @SuppressWarnings("resource") public String telNumRegex(String telNum){ String pattern ="[0-9]{11}"; String str=telNum; Scanner sc=new Scanner(System.in); while(true){ if(str.matches(pattern)){ return str; }else{ System.out.println("輸入不合法字符,請重新輸入11位的手機號碼"); str=sc.nextLine(); continue; } } } //用戶輸入地址的驗證 @SuppressWarnings("resource") public String addressRegex(String address){ String pattern ="[a-zA-Z[0-9]]{1,15}"; String str=address; Scanner sc=new Scanner(System.in); while(true){ if(str.matches(pattern)){ return str; }else{ System.out.println("輸入不合法字符,請重新輸入1到15個英文大小寫或是數(shù)字"); str=sc.nextLine(); continue; } } } }
Menu類代碼的具體實現(xiàn):
package com.bjsxt.iphone; public class Menu { //主界面 public void mainMenu() { 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 退出系統(tǒng) **"); 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("*************************"); } //修改界面 public void modifyMenu () { System.out.println("*************************"); System.out.println("** 1 查看全記錄 **"); System.out.println("** 2 修改指定記錄 **"); System.out.println("** 3 返回上一級 **"); System.out.println("*************************"); } //修改子界面 public 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 按年齡排序 **"); System.out.println("** 3 按性別排序 **"); System.out.println("** 4 查看全部記錄 **"); System.out.println("** 5 返回上一級 **"); System.out.println("*************************"); } }
Operate類的具體實現(xiàn):
package com.bjsxt.iphone; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class Operate{ private Listlist=new ArrayList (); //用戶添加信息業(yè)務(wù)邏輯控制 public void addLogic(){ Menu m=new Menu(); TelNoteRegex reg=new TelNoteRegex(); while(true){ m.addMenu(); int key=reg.menuRegex(1, 3); switch(key){ case 1: addOperation (); break; case 2: showAll(); break; case 3: return; } } } //用戶查詢信息業(yè)務(wù)邏輯控 public void searchLogic(){ Menu m=new Menu(); TelNoteRegex reg=new TelNoteRegex(); while(true){ m.searchMenu(); int key=reg.menuRegex(1, 7); switch(key){ case 1: searchByName(); break; case 2: searchByAge(); break; case 3: searchBySex(); break; case 4: searchByTelNum(); break; case 5: searchByAdd(); break; case 6: showAll(); break; case 7: return; } } } //修改信息業(yè)務(wù)邏輯控制 public void modifyLogicLogic(){ Menu m=new Menu(); TelNoteRegex reg=new TelNoteRegex(); while(true){ m.modifyMenu(); int key=reg.menuRegex(1, 3); switch(key){ case 1: showAll(); break; case 2: modifyLogicLogic1(); break; case 3: return; } } } //修改有三層跳轉(zhuǎn) public void modifyLogicLogic1(){ Menu m=new Menu(); TelNoteRegex reg=new TelNoteRegex(); while(true){ m.subModifyMenu(); int key=reg.menuRegex(1, 6); switch(key){ case 1: nameModify(); break; case 2: ageModify(); break; case 3: sexModify(); break; case 4: telNumModify(); break; case 5: addressModify(); break; case 6: return; } } } //刪除信息業(yè)務(wù)邏輯控制 public void deleteLogic(){ Menu m=new Menu(); TelNoteRegex reg=new TelNoteRegex(); while(true){ m.deleteMenu(); int key=reg.menuRegex(1, 4); switch(key){ case 1: showAll(); break; case 2: delete(); break; case 3: deleteAll(); break; case 4: return; } } } //排序信息業(yè)務(wù)邏輯控制 public void orderLogic(){ Menu m=new Menu(); TelNoteRegex reg=new TelNoteRegex(); while(true){ m.orderMenu(); int key=reg.menuRegex(1, 5); switch(key){ case 1: orderName(); break; case 2: orderAge(); break; case 3: orderSex(); break; case 4: showAll(); break; case 5: return; } } } //添加新用戶信息 @SuppressWarnings("resource") public void addOperation (){ TelNoteRegex reg=new TelNoteRegex(); Scanner sc=new Scanner(System.in); System.out.println("請輸入聯(lián)系人id:"); String id=sc.nextLine(); System.out.println("請輸入要添加的姓名:"); String name=sc.nextLine(); name=reg.nameRegex(name); System.out.println("請輸入要添加的年齡:"); String age=sc.nextLine(); age=reg.ageRegex(age); System.out.println("請輸入要添加的性別:"); String sex=sc.nextLine(); sex=reg.sexRegex(sex); System.out.println("請輸入要添加的手機號碼:"); String telNum=sc.nextLine(); telNum=reg.telNumRegex(telNum); System.out.println("請輸入要添加的地址:"); String address=sc.nextLine(); address=reg.addressRegex(address); int personId=Integer.parseInt(id); Person p=new Person(personId,name,age,sex,telNum,address); list.add(p); } // //判斷序號是否已經(jīng)存在插入成功失敗 // @SuppressWarnings("resource") // public String judgeId(String id){ // Scanner sc=new Scanner(System.in); // Iterator it=list.iterator(); // String newId=id; // while(it.hasNext()){ // Person p=(Person)it.next(); // if(newId.equals(p.getId())){ // System.out.println("此序號已經(jīng)存在,請重新輸入序號"); // newId=sc.nextLine(); // continue; // }else{ // return newId; // } // } // return id; // } //查詢?nèi)坑脩粜畔? public void showAll(){ System.out.println("序號\t\t"+"姓名\t\t"+"年齡\t\t"+"性別\t\t"+"手機號\t\t"+"地址"); Iterator 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(){ TelNoteRegex reg=new TelNoteRegex(); System.out.println("輸入你要查詢的姓名:"); Scanner sc=new Scanner(System.in); String name=sc.nextLine(); name=reg.nameRegex(name); Iterator 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.getTelNum()+"\t\t"+p.getAddress()); } } } //按年齡查詢用戶信息 @SuppressWarnings("resource") public void searchByAge(){ TelNoteRegex reg=new TelNoteRegex(); System.out.println("輸入你要查詢的年齡:"); Scanner sc=new Scanner(System.in); String age=sc.nextLine(); age=reg.ageRegex(age); Iterator 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.getTelNum()+"\t\t"+p.getAddress()); } } } //按性別查詢用戶信息 @SuppressWarnings("resource") public void searchBySex(){ TelNoteRegex reg=new TelNoteRegex(); System.out.println("輸入你要查詢的性別:"); Scanner sc=new Scanner(System.in); String sex=sc.nextLine(); sex=reg.sexRegex(sex); Iterator 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"+p.getAddress()); } } } //按電話號碼查詢用戶信息 @SuppressWarnings("resource") public void searchByTelNum(){ TelNoteRegex reg=new TelNoteRegex(); System.out.println("輸入你要查詢的電話號碼:"); Scanner sc=new Scanner(System.in); String telNum=sc.nextLine(); telNum=reg.telNumRegex(telNum); Iterator it=list.iterator(); while(it.hasNext()){ Person p=(Person)it.next(); if(telNum.equals(p.getTelNum())){ 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 searchByAdd(){ TelNoteRegex reg=new TelNoteRegex(); System.out.println("輸入你要查詢的地址:"); Scanner sc=new Scanner(System.in); String address=sc.nextLine(); address=reg.addressRegex(address); Iterator 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"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress()); } } } // //修改指定記錄信息 // public void modify(){ // System.out.println("請輸入你要修改的信息:"); // // } //修改姓名信息 @SuppressWarnings("resource") public void nameModify(){ TelNoteRegex reg=new TelNoteRegex(); System.out.println("請輸入你要修改的序號:"); Scanner sc=new Scanner(System.in); String num=sc.nextLine(); int id=Integer.parseInt(num); System.out.println("請輸入你要修改的姓名:"); String name=sc.nextLine(); name=reg.nameRegex(name); Iterator it=list.iterator(); while(it.hasNext()){ Person p=(Person)it.next(); if(id==p.getId()){ p.setName(name); 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(){ TelNoteRegex reg=new TelNoteRegex(); System.out.println("請輸入你要修改的序號:"); Scanner sc=new Scanner(System.in); String num=sc.nextLine(); int id=Integer.parseInt(num); System.out.println("請輸入你要修改的年齡:"); String age=sc.nextLine(); age=reg.ageRegex(age); Iterator 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 TelNoteRegex(); System.out.println("請輸入你要修改的序號:"); Scanner sc=new Scanner(System.in); String num=sc.nextLine(); int id=Integer.parseInt(num); System.out.println("請輸入你要修改的性別:"); String sex=sc.nextLine(); sex=reg.sexRegex(sex); Iterator it=list.iterator(); while(it.hasNext()){ Person p=(Person)it.next(); if(id==p.getId()){ p.setSex(sex); 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("請輸入你要修改的序號:"); Scanner sc=new Scanner(System.in); String num=sc.nextLine(); int id=Integer.parseInt(num); System.out.println("請輸入你要修改的電話號碼:"); String telNum=sc.nextLine(); Iterator 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 TelNoteRegex(); System.out.println("請輸入你要修改的序號:"); Scanner sc=new Scanner(System.in); String num=sc.nextLine(); int id=Integer.parseInt(num); System.out.println("請輸入你要修改的地址:"); String address=sc.nextLine(); address=reg.addressRegex(address); Iterator it=list.iterator(); while(it.hasNext()){ Person p=(Person)it.next(); if(id==p.getId()){ p.setAddress(address); 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:"); Scanner sc=new Scanner(System.in); String num=sc.nextLine(); int id=Integer.parseInt(num); Iterator 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("刪除成功"); } //按用戶姓名排序信息 public void orderName(){ Comparator comparator=new Comparator (){ @Override public int compare(Person o1, Person o2) { return o1.getName().compareTo(o2.getName()); } }; Collections.sort(list,comparator); showAll(); } //按用戶年齡排序信息 public void orderAge(){ Comparator comparator=new Comparator (){ @Override public int compare(Person o1, Person o2) { return o1.getAge().compareTo(o2.getAge()); } }; Collections.sort(list,comparator); showAll(); } //按用戶性別排序信息 public void orderSex(){ Comparator comparator=new Comparator (){ @Override public int compare(Person o1, Person o2) { return o1.getSex().compareTo(o2.getSex()); } }; Collections.sort(list,comparator); showAll(); } }
總結(jié):這個項目讓我很清晰可以明白什么是面向?qū)ο?,為什么說是java是面向?qū)ο蟮木幊陶Z言,程序的代碼都是對象在調(diào)用,也明白一個項目應(yīng)該如何分工明確進行書寫,功能和視圖要分開,每個類都有自己特定的功能,各個類的功能不要相互卸載一起,這樣的代碼基本是復(fù)用不高的,如果分開明確,以后再添加功能模塊的時候,只需要增加功能,無需修改之前的代碼,很好的體現(xiàn)了開閉原則,對功能開發(fā),對修改內(nèi)容關(guān)閉,這個項目也體現(xiàn)了MVC的設(shè)計模式,對我而言,這個項目讓我受益匪淺。