メインメニューは、各レベルでサブメニューを制御し、レコードの追加、レコードの検索、レコードの削除、レコードの変更、レコードの並べ替え、システム機能の終了の実装を実現します。合計6つの機能モジュール。
上記の図は、各モジュールの機能を示しており、また、定期式を使用して、入力がルールに準拠しているかどうかを判断します。このシステムはMVCの設計パターンを反映しており、分業は非常に明確です。
主に次のカテゴリが含まれています。
アプリクラス:プログラムのメイン関数クラス、プログラムの開始
メニュークラス:シンプルなページに表示されるすべての効果であり、機能の実装はありません。
TelnotereGexクラス:入力が適格かどうかを決定する正規表現は、すべてこの方法にあります。
操作クラス:ビジネスロジッククラス、すべての機能は基本的にこのクラスに集中しています。
個人クラス:データをカプセル化します。
特定の実装コード:
アプリクラスのコード:
パッケージcom.bjsxt.iphone; public class app {public static void main(string [] args){new App()。start(); } public void start(){メニュー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();壊す;ケース2:O.SearchLogic();壊す;ケース3:O.ModifyLogicLogic();壊す;ケース4:O.DELETELOGIC();壊す;ケース5:O.OrderLogic();壊す;ケース6:System.Exit(0);壊す; }}}}個人クラスの特定の実装コード:
パッケージcom.bjsxt.iphone; public class person {private int id; //ユーザーID属性プライベート文字列名; //ユーザー名属性プライベート文字列年齢; //ユーザー年齢属性プライベートストリングセックス; //ユーザー電話番号プライベート文字列属性属性属性アドレス; 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アドレス){this.address = address; }}TelnotereGexクラスの特定のコード:
パッケージcom.bjsxt.iphone; Import java.util.scanner; public class telnoteregex {//メニュー項目@suppresswarnings( "resource")public int mentregex(int min、int max){string regex = "[0-9] {1}";スキャナーSC =新しいスキャナー(System.in); while(true){string input = sc.nextline(); //合法性に基づいてチェックIF(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 name){string pattern = "[// u4e00- // u9fa5]+";文字列str = name;スキャナーSC =新しいスキャナー(System.in); while(true){if(str.matches(pattern)){return str; } else {system.out.println( "違法文字を入力して、漢字を再入力してください"); str = sc.nextline();続く; }}} //ユーザー入力の検証@suppresswarnings( "resource")public string ageregex(string age){string pattern = "^([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();続く; }}} //ユーザーgender @suppresswarningsの検証( "resource")public string sexregex(string sex){string pattern = "[men and female mmff]"; string str = sex;スキャナー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(stringアドレス){string pattern = "[a-za-z [0-9]] {1,15}";文字列str = address;スキャナーSC =新しいスキャナー(System.in); while(true){if(str.matches(pattern)){return str; } else {system.out.println( "違法文字を入力して、1〜15の英語のケースまたは番号を再入力してください"); str = sc.nextline();続く; }}}}メニュークラスコードの特定の実装:
パッケージcom.bjsxt.iphone; public classメニュー{// mainインターフェイスpublic void mainmenu(){system.out.println( "***************************"); system.out.println( "** 1 Record **"); system.out.println( "** 2 record **"); system.out.println( "** 3レコードを変更**"); system.out.println( "** 4 delete record **"); system.out.println( "** 5 sort records **"); System.out.println( "** 6 System **"); 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 name by name"); System.out.println( "** 2年齢別の検索"); System.out.println( "** 3性別による検索"); system.out.println( "** 4 by number"); 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 sort by name **"); system.out.println( "** 2 sort by age **"); system.out.println( "** 3 sort by gender **"); system.out.println( "** 4すべてのレコードを表示**"); System.out.println( "** 5前のレベルに戻る**"); System.out.println( "************************"); }}操作クラスの特定の実装:
パッケージcom.bjsxt.iphone; Import java.util.arraylist; import java.util.collections; import java.util.comparator; import java.util.util.list; Import java.util.scanner; private class {private list> list> light <person> light <person operati //ユーザーの追加情報ビジネスロジック制御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();壊す;ケース2:showall();壊す;ケース3:戻ります。 }}} //ユーザークエリ情報ビジネスロジック制御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();壊す;ケース2:SearchByage();壊す;ケース3:SearchBySex();壊す;ケース4:SearchBytelNum();壊す;ケース5:SearchByAdd();壊す;ケース6:showall();壊す;ケース7:返品; }}} //情報を変更するビジネスロジック制御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();壊す;ケース2:ModifyLogicLogic1();壊す;ケース3:戻ります。 }}} // 3層ジャンプを変更します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();壊す;ケース2:agemodify();壊す;ケース3:sexModify();壊す;ケース4:telnummodify();壊す;ケース5:addressModify();壊す;ケース6:返品; }}} //削除情報ビジネスロジック制御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();壊す;ケース2:delete();壊す;ケース3:deleteall();壊す;ケース4:返品; }}} //情報のソートビジネスロジック制御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();壊す;ケース2:Orderage();壊す;ケース3:Ordersex();壊す;ケース4:showall();壊す;ケース5:返品; }}} //新しいユーザー情報の追加@suppresswarnings( "resource")public void addoperation(){telnoteregex reg = new TelnotereGex();スキャナーSC =新しいスキャナー(System.in); system.out.println( "連絡先ID:");文字列id = sc.nextline(); System.out.println( "追加する名前を入力してください:");文字列名= 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( "追加するアドレスを入力してください:");文字列アドレス= sc.nextline(); address = reg.addressregex(address); int personid = integer.parseint(id); Person P = new Person(personid、name、age、sex、telnum、住所); list.add(p); } // // //シリアル番号が既に存在し、挿入が正常に失敗したかどうかを判断// @suppresswarnings( "resource")// public string judgerid(string id){// scanner sc = new scanner(system.in); // iterator <sense <person> it = list.iterator(); // string newid = id; // p =(person)it.next(); // if(newid.equals(p.getid())){// system.out.println( "このシリアル番号は既に存在します。ユーザー情報public void showall(){system.out.println( "serial number/t/t"+"name/t/t"+"age/t/t"+"gender/t/t"+"携帯電話番号/t/t"+"アドレス"); iterator <serson> 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"+p.getsex()+"/t/t"+p.gettelnum()+"/t/t"+p.getadress()); }} // queryユーザー情報@suppresswarnings( "resource")public void searchbyname(){telnoteregex reg = new TelnotereGex(); system.out.println( "QUERY:");スキャナーSC =新しいスキャナー(System.in);文字列名= sc.nextline(); name = reg.nameRegex(name); iterator <serson> 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 }}} //クエリ@suppresswarnings( "resource")public void searchbyage(){telnoteregex reg = new TelnotereGex(); system.out.println( "クエリしたい年齢を入力:");スキャナーSC =新しいスキャナー(System.in); string age = sc.nextline(); age = reg.ageregex(age); iterator <serson> 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 }}} // gender @suppresswarnings( "resource")Public void searchbysex(){telnoteregex reg = new TelnotereGex(); system.out.println( "クエリしたい性別を入力:");スキャナーSC =新しいスキャナー(System.in); string sex = sc.nextline(); sex = reg.sexregex(sex); iterator <serson> 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.getaddiss(); }}} //電話番号でユーザー情報をチェックします@suppresswarnings( "resource")public void searchbytelnum(){telnoteregex reg = new TelnotereGex(); system.out.println( "クエリする電話番号を入力:");スキャナーSC =新しいスキャナー(System.in); string telnum = sc.nextline(); telnum = reg.telnumregex(telnum); iterator <serson> 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/t"+p.getsex()+"/t/t"+p.gettelnum }}} // address @suppresswarnings( "resource")public void searchbyadd(){telnoteregex reg = new TelnotereGex(); system.out.println( "クエリするアドレスを入力:");スキャナーSC =新しいスキャナー(System.in);文字列アドレス= sc.nextline(); address = reg.addressregex(address); iterator <serson> 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/t/t/t/t/t/t/t/t/t/t/t/t/t }}} // //指定されたレコード情報の変更// public void modify(){// System.out.println( "変更する情報を入力してください:"); // //} //名前情報@suppresswarnings( "resource")public void namodify(){telnoterexex reg = new telnotex(); system.out.println( "変更するシリアル番号を入力してください:");スキャナーSC =新しいスキャナー(System.in);文字列num = sc.nextline(); int id = integer.parseint(num); system.out.println( "変更する名前を入力してください:");文字列名= sc.nextline(); name = reg.nameRegex(name); iterator <serson> 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"+p.getsex()+"/t/t"+p.gettelnum()+"/t/t"+p.getadress()); } else {system.out.println( "修正に失敗した、もう一度やり直してください!"); }}} //年齢情報@suppresswarnings( "resource")public void agemodify(){telnoteregex reg = new TelnotereGex(); system.out.println( "変更するシリアル番号を入力してください:");スキャナーSC =新しいスキャナー(System.in);文字列num = sc.nextline(); int id = integer.parseint(num); system.out.println( "変更する年齢を入力してください:"); string age = sc.nextline(); age = reg.ageregex(age); iterator <serson> 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"+p.getsex()+"/t/t"+p.gettelnum()+"/t/t"+p.getadress()); } else {system.out.println( "修正に失敗した、もう一度やり直してください!"); }}} //性別情報を変更@suppresswarnings( "resource")public void sexmodify(){telnoteregex reg = new TelnotereGex(); system.out.println( "変更するシリアル番号を入力してください:");スキャナーSC =新しいスキャナー(System.in);文字列num = sc.nextline(); int id = integer.parseint(num); System.out.println( "変更する性別を入力してください:"); string sex = sc.nextline(); sex = reg.sexregex(sex); iterator <serson> 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"+p.getsex()+"/t/t"+p.gettelnum()+"/t/t"+p.getadress()); } 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( "変更する電話番号を入力してください:"); string telnum = sc.nextline(); iterator <serson> 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"+p.getsex()+"/t/t"+p.gettelnum()+"/t/t"+p.getadress()); } else {system.out.println( "修正に失敗した、もう一度やり直してください!"); }}} //アドレス情報を変更@suppresswarnings( "resource")public void addressModify(){telnotereGex reg = new TelnotereGex(); system.out.println( "変更するシリアル番号を入力してください:");スキャナーSC =新しいスキャナー(System.in);文字列num = sc.nextline(); int id = integer.parseint(num); system.out.println( "変更するアドレスを入力してください:");文字列アドレス= sc.nextline(); address = reg.addressregex(address); iterator <serson> 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"+p.getsex()+"/t/t"+p.gettelnum()+"/t/t"+p.getadress()); } else {system.out.println( "修正に失敗した、もう一度やり直してください!"); }}} //指定されたユーザー情報@suppresswarnings( "resource")public void delete(){system.out.println( "delete:");スキャナーSC =新しいスキャナー(System.in);文字列num = sc.nextline(); int id = integer.parseint(num); iterator <serson> 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( "delete failed"); }}} //すべてのユーザー情報public void deleteall(){list.clear(); system.out.println( "delete ressuly"); } //ユーザー名で情報を並べ替えるpublic void ordername(){comparator <serson> comparator = new Comparator <serson>(){@Override public int Compare(person o1、person o2){return o1.getname()。比較(o2.getName()); }}; collections.sort(list、Comparator); showall(); } //ユーザーAge by User Age By Public void Orderage(){Comparator <serson> Comparator = new Comparator <serson>(){@Override public int Compare(person o1、person o2){return o1.getage()。比較(o2.getage()); }}; collections.sort(list、Comparator); showall(); } //ユーザーによる情報を並べ替えて、ゼンダーパブリックボイドオーダーセックス(){comparator <person> comparator = new comparator <person>(){@override public int compare(person o1、person o2){return o1.getsex()。比較(o2.getsex()); }}; collections.sort(list、Comparator); showall(); }}概要:このプロジェクトにより、オブジェクト指向のものと、Javaがオブジェクト指向のプログラミング言語である理由について非常に明確になりました。プログラムのコードはオブジェクトによって呼び出され、プロジェクトを明確に書く方法も理解しました。関数とビューを分離する必要があります。各クラスには独自の特定の機能があります。各クラスの関数を一緒にアンインストールしないでください。このようなコードは基本的に再利用できません。それらが分離されていて明確な場合、将来機能するモジュールを追加する場合、以前のコードを変更せずに関数のみを追加する必要があります。これは、開閉の原則をよく反映しています。関数開発と変更のコンテンツの場合、このプロジェクトはMVCの設計パターンも反映しています。私にとって、このプロジェクトは私に大きな恩恵をもたらしました。