Das Hauptmenü steuert das Untermenü auf jeder Ebene und realisiert die Implementierung von Hinzufügen, Aufzeichnungen, Löschen von Datensätzen, das Ändern von Datensätzen, das Sortieren von Datensätzen und das Verlassen der Systemfunktionen. Insgesamt sechs Funktionsmodule.
Das obige Diagramm zeigt die Funktionen jedes Moduls und verwendet auch regelmäßige Ausdrücke, um festzustellen, ob die Eingabe den Regeln entspricht. Dieses System spiegelt das Entwurfsmuster von MVC wider, und die Arbeitsteilung ist sehr klar.
Es enthält hauptsächlich die folgenden Kategorien:
App -Klasse: Die Hauptfunktionsklasse des Programms, der Eintrag zum Programmstart
Menüklasse: Es sind alle Effekte, die auf einfachen Seiten angezeigt werden, und es gibt keine Funktionsimplementierung.
TVOTEREGEX -Klasse: Regelmäßiger Ausdruck, der feststellt, ob die Eingabe qualifiziert ist, ist in dieser Methode.
Betriebsklasse: Business Logic Class, alle Funktionen sind im Grunde genommen in dieser Klasse konzentriert.
Personklasse: Daten zusammenfassen.
Spezifischer Implementierungscode:
Der Code der App -Klasse:
Paket com.bjsxt.iphone; public class App {public static void main (string [] args) {new App (). start (); } public void start () {Menü m = neues Menü (); O = new operation (); TellnotereGex reg = neuer tellnotereGex (); während (wahr) {m.mainmenu (); int key = reg.menureGex (1, 6); Switch (Schlüssel) {Fall 1: O.Addlogic (); brechen; Fall 2: O.Searchlogic (); brechen; Fall 3: O.ModifyLogicLogic (); brechen; Fall 4: O.Deletelogic (); brechen; Fall 5: O.OrderLogic (); brechen; Fall 6: System.exit (0); brechen; }}}}Der spezifische Implementierungscode der Personklasse:
package com.bjsxt.iphone;public class Person { private int id;//user ID attribute private String name;//user name attribute private String age;//user age attribute private String sex;//user gender attribute private String telNum;//user phone number attribute private String address;//user address attribute public Person(){} public Person(int id,String name,String age,String sex,String telNum,String address){ this.id = id; this.name = name; this.age = Alter; this.sex = sex; this.telnum = telnum; this.address = Adresse; } 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 () {tolnum return; } public void settelnum (String tellnum) {this.telnum = telnum; } public String getAddress () {Rückgabeadresse; } public void setAddress (String -Adresse) {this.address = address; }}Spezifischer Code der TernotereGex -Klasse:
Paket com.bjsxt.iphone; import Java.util.scanner; öffentliche Klasse tellnoterEx {// prüfen Sie, wie Menus items @Suppresswarnings ("Ressource") public in in MenureEx (int min, int max) {String regex = "[0-9] {1}"; Scanner SC = neuer Scanner (System.in); while (true) {string input = sc.nextline (); // prüft basierend auf der Legalität if (input.matches (regex)) {int key = integer.parseInt (input); if (key> = min && key <= max) {return key; } else {system.out.println ("Der eingebrachte Menüelement entspricht nicht den Anforderungen!"); }} else {System.out.println ("Der Inhalt der Eingabe ist falsch!"); }}}} // Überprüfung des Benutzereingabennamens @SuppressWarnings ("Ressource") public String namereGex (String-Name) {String muster = "[// u4e00-// u9fa5]+"; String str = Name; Scanner SC = neuer Scanner (System.in); while (true) {if (str.matches (muster)) {return str; } else {System.out.println ("Illegale Zeichen eingeben, bitte wieder in chinesische Zeichen eingeben"); str = sc.Nextline (); weitermachen; }}} // Überprüfung des Benutzers eingeben Alter @SuppressWarnings ("Ressource") public String ageregex (String-Alter) {String muster = "^([0-9] | [0-9] {2} | 100) $"; String str = Alter; Scanner SC = neuer Scanner (System.in); while (true) {if (str.matches (muster)) {return str; } else {System.out.println ("Illegale Zeichen eingeben, bitte treten Sie die Zahlen wieder ein"); str = sc.Nextline (); weitermachen; }}} // Überprüfung des Benutzergeschlechts @SuppressWarnings ("Ressource") public String sexRegex (String Sex) {String muster = "[Männer und weibliche MMFF]"; String str = Sex; Scanner SC = neuer Scanner (System.in); while (true) {if (str.matches (muster)) {return str; } else {system.out.println ("Illegale Zeichen eingeben, bitte treten Sie männliche und weibliche MMFF ein); str = sc.Nextline (); weitermachen; }}} // Überprüfung der Benutzernummer @SuppressWarnings ("Ressource") public String tellnumReGex (String tellnum) {String muster = "[0-9] {11}"; String str = telnum; Scanner SC = neuer Scanner (System.in); while (true) {if (str.matches (muster)) {return str; } else {system.out.println ("Illegale Zeichen eingeben, bitte treten Sie die 11-stellige Handynummer erneut ein“); str = sc.Nextline (); weitermachen; }}}} // Überprüfung der Benutzereingabeadresse @SuppressWarnings ("Ressource") public String adressRex (String-Adresse) {String muster = "[A-Za-Z [0-9]] {1,15}"; String str = Adresse; Scanner SC = neuer Scanner (System.in); while (true) {if (str.matches (muster)) {return str; } else {System.out.println ("Illegale Zeichen eingeben, bitte nehmen Sie 1 bis 15 englische Fälle oder Zahlen ein"); str = sc.Nextline (); weitermachen; }}}}Spezifische Implementierung des Menüklassencode:
Paket com.bjsxt.iphone; public class -Menü {// Hauptschnittstelle public void mainmenu () {System.out.println ("**********************); System.out.println ("** 1 add record **"); System.out.println ("** 2 find record **"); System.out.println ("** 3 modifizieren Sie den Datensatz **"); System.out.println ("** 4 delete record **"); System.out.println ("** 5 sortieren records **"); System.out.println ("** 6 Beenden Sie das System **"); System.out.println("***************************"); } // Schnittstelle public void addMenu () {System.out.println ("********************); System.out.println ("** 1 fügen Sie einen neuen Datensatz hinzu **"); System.out.println ("** 2 Alle Datensätze anzeigen **"); System.out.println ("** 3 kehren in die vorherige Ebene zurück **"); System.out.println ("************************); } // Suchschnittstelle public void searchMenu () {System.out.println ("*******************"); System.out.println ("** 1 suche nach Namen"); System.out.println ("** 2 Suche nach Alter"); System.out.println ("** 3 Suche nach Geschlecht"); System.out.println ("** 4 Suche nach Nummer"); System.out.println ("** 5. Klicken Sie auf die Adresse, um **"); System.out.println ("** 6. volle Datensätze anzeigen **"); System.out.println ("** 7. Rückkehr auf die vorherige Ebene **"); System.out.println ("************************); } // Die Schnittstelle public void modifyMenu () {System.out.println ("********************"); System.out.println ("** 1. volle Datensätze anzeigen **"); System.out.println ("** 2 ändern den angegebenen Datensatz **"); System.out.println ("** 3 kehren zur vorherigen Ebene zurück **"); System.out.println ("************************); } // das subinterface public void submodifyMenu () {System.out.println ("******************") ändern; System.out.println ("** 1 ändern den Namen **"); System.out.println ("** 2 modifizieren Sie das Alter **"); System.out.println ("** 3 modifizieren Geschlecht **"); System.out.println ("** 4 modifizieren Sie die Nummer **"); System.out.println ("** 5 modifizieren Sie die Adresse **"); System.out.println ("** 6 kehren in die vorherige Ebene zurück **"); System.out.println ("************************); } // Schnittstelle öffentliche void deletemenu () {System.out.println ("**************************"); System.out.println ("** 1 Alle Datensätze anzeigen **"); System.out.println ("** 2 die angegebenen Datensätze **"); System.out.println ("** 3 Alle Datensätze löschen **"); System.out.println ("** 4 kehren zur vorherigen Ebene zurück **"); System.out.println("***************************"); } // Sortieren der Schnittstelle public void orderMenu () {System.out.println ("*************************"); System.out.println ("** 1 sortieren nach Namen **"); System.out.println ("** 2 sortieren nach Alter **"); System.out.println ("** 3 sortieren nach Geschlecht **"); System.out.println ("** 4 Alle Datensätze anzeigen **"); System.out.println ("** 5 kehren in die vorherige Ebene zurück **"); System.out.println ("************************); }}Spezifische Implementierung der Betriebsklasse:
Paket com.bjsxt.iphone; import Java.util.ArrayList; Import Java.util.Collections; Import Java.util.comParator; Import Java.util.iterator; Import Java.util.List ;list importieren java.util.scanner; öffentliche Klasse operation {private list <Person> liste = new Arraylist <neue. // Benutzer Hinzufügen von Information Business Logic Control public void addlogic () {Menü m = neues Menü (); TellnotereGex reg = neuer tellnotereGex (); während (wahr) {m.addmenu (); int key = reg.menureGex (1, 3); Switch (Schlüssel) {Fall 1: addOperation (); brechen; Fall 2: showall (); brechen; Fall 3: Rückkehr; }}} // Benutzerabfrage Information Business Logic Control public void SearchLogic () {Menü m = neues Menü (); TellnotereGex reg = neuer tellnotereGex (); while (wahr) {m.searchmenu (); int key = reg.menureGex (1, 7); Switch (Schlüssel) {Fall 1: SearchByName (); brechen; Fall 2: SearchByage (); brechen; Fall 3: SearchbySex (); brechen; Fall 4: SearchByTelnum (); brechen; Fall 5: SearchByAdd (); brechen; Fall 6: showall (); brechen; Fall 7: Rückkehr; }}} // Information Business Logic Control public void modifyLogiclogic () {Menü m = neues Menü (); TellnotereGex reg = neuer tellnotereGex (); während (wahr) {m.modifyMenu (); int key = reg.menureGex (1, 3); Switch (Schlüssel) {Fall 1: showAll (); brechen; Fall 2: ModifyLogicLogic1 (); brechen; Fall 3: Rückkehr; }}} // Drei-Layer-Springe public void modifyLogicLogic1 () {Menü m = neues Menü (); TellnotereGex reg = neuer tellnotereGex (); während (wahr) {m.subModifyMenu (); int key = reg.menureGex (1, 6); Switch (Schlüssel) {Fall 1: namemodify (); brechen; Fall 2: agemodify (); brechen; Fall 3: sexmodify (); brechen; Fall 4: tellnummodify (); brechen; Fall 5: adressModify (); brechen; Fall 6: Rückkehr; }}} // Information Logic Control Public void deletelogic () {Menü m = neues Menü (); TellnotereGex reg = neuer tellnotereGex (); während (wahr) {M.Deletemenu (); int key = reg.menureGex (1, 4); Switch (Schlüssel) {Fall 1: showAll (); brechen; Fall 2: delete (); brechen; Fall 3: DeleteAll (); brechen; Fall 4: Rückkehr; }}} // Informationen sortieren. TellnotereGex reg = neuer tellnotereGex (); while (wahr) {M. OrderMenu (); int key = reg.menureGex (1, 5); Switch (Schlüssel) {Fall 1: orderName (); brechen; Fall 2: Ordnung (); brechen; Fall 3: ordnersex (); brechen; Fall 4: showall (); brechen; Fall 5: Rückkehr; }}} // neue Benutzerinformationen hinzufügen @SuppressWarnings ("Ressource") public void addOperation () {tellnotereGex reg = new tolnoTereGex (); Scanner SC = neuer Scanner (System.in); System.out.println ("Bitte geben Sie die Kontakt -ID ein:"); String id = sc.Nextline (); System.out.println ("Bitte geben Sie den zu fügigen Namen ein:"); String name = sc.Nextline (); name = reg.nameregex (name); System.out.println ("Bitte geben Sie das Alter ein, um hinzugefügt zu werden:"); String ay = sc.Nextline (); Alter = Reg.AGEREGEX (Alter); System.out.println ("Bitte geben Sie das Geschlecht ein, das Sie hinzufügen möchten:"); String sex = sc.Nextline (); sex = reg.sexregex (Sex); System.out.println ("Bitte geben Sie die Handynummer ein, die Sie hinzufügen möchten:"); String tellnum = sc.Nextline (); tellnum = reg.telnumregex (tellnum); System.out.println ("Bitte geben Sie die Adresse ein, die Sie hinzufügen möchten:"); String address = sc.Nextline (); Adresse = reg.addressregex (Adresse); int personid = Integer.ParseInt (id); Person p = neue Person (Personid, Name, Alter, Geschlecht, Ternum, Adresse); list.add (p); } // // // beurteilen Sie, ob die Seriennummer bereits existiert und die Einfügung erfolgreich fehlgeschlagen ist // @Suppresswarnings ("Ressource") // public String RichterId (String -ID) {// scanner sc = new scanner (System.in); // iterator <person> it = list.iterator (); // // string new; p = (Person) iT.Next (); // if (new.equals (p.getId ()) {// system.out.println ("Diese Seriennummer existiert bereits, bitte gehen Sie wieder in die Seriennummer. Benutzerinformationen public void showAll () {System.out.println ("Seriennummer/T/T"+"Name/T/T"+"Alter/T/T"+"Geschlecht/T/T"+"Handynummer/T/T"+"Adresse"); 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/t"+P.GetDress ()); }} // Benutzerinformationen nach Namen @Suppresswarnings ("Ressource") public void searchbyName () {telnoTereGex reg = new tolnoTereGex (); System.out.println ("Geben Sie den Namen ein, den Sie abfragen möchten:"); Scanner SC = neuer Scanner (System.in); String name = sc.Nextline (); name = reg.nameregex (name); 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.getTelNum()+"/t/t"+p.getAddress()); }}} // Benutzerinformationen nach Alter @SuppressWarnings ("Ressource") public void searchByage () {tellnotereGex reg = new telnoTereGex (); System.out.println ("Geben Sie das Alter ein, das Sie abfragen möchten:"); Scanner SC = neuer Scanner (System.in); String ay = sc.Nextline (); Alter = Reg.AGEREGEX (Alter); 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.getTelNum()+"/t/t"+p.getAddress()); }}} // Benutzerinformationen nach Geschlecht @SuppressWarnings ("Ressource") public voidBySex () {tellnoTereGex reg = new tolnoTereGex (); System.out.println ("Geben Sie das Geschlecht ein, das Sie abfragen möchten:"); Scanner SC = neuer Scanner (System.in); String sex = sc.Nextline (); sex = reg.sexregex (Sex); 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"+p.getAddress()); }}} // Benutzerinformationen nach Telefonnummer @SuppressWarnings ("Ressource") public void searchByTelnum () {tellnoTereGex reg = new tolnoTereGex (); System.out.println ("Geben Sie die Telefonnummer ein, die Sie abfragen möchten:"); Scanner SC = neuer Scanner (System.in); String tellnum = sc.Nextline (); tellnum = reg.telnumregex (tellnum); Iterator <Person> iT = list.Iterator (); while (it.hasnext ()) {Person p = (Person) it.next (); if (tellnum.equals (p.GetTelnum ()) {System.out.println (p.getId ()+"#"+"/t/t"+p.getName ()+"/t/t"+p.getage ()+"/t/t"+P.GetSex ()+"/t/t/t"+P.Getelnum ()); }}} // Benutzerinformationen nach Adresse @SuppressWarnings ("Ressource") public void searchByAdd () {tellnotereGex reg = new telnoTereGex (); System.out.println ("Geben Sie die Adresse ein, die Sie abfragen möchten:"); Scanner SC = neuer Scanner (System.in); String address = sc.Nextline (); Adresse = reg.addressregex (Adresse); 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"+p.getSex()+"/t/t"+p.getTelNum()+"/t/t"+p.getAddress()); }}} // // Die angegebenen Datensatzinformationen // public void modify () {// system.out.println ("Bitte geben Sie die Informationen ein, die Sie ändern möchten:"); // //} // Die Namensinformationen @Suppresswarnings ("Ressource") public void namemodify () {) tellnoterex (tellnoterex) () tellnoterex (telnoterEx) () tellnoterex (telnoterEx) () {) tellnoterex (tellnoterEx = new tellNotereGeX (); System.out.println ("Bitte geben Sie die Seriennummer ein, die Sie ändern möchten:"); Scanner SC = neuer Scanner (System.in); String num = sc.Nextline (); int id = Integer.ParseInt (num); System.out.println ("Bitte geben Sie den Namen ein, den Sie ändern möchten:"); String name = sc.Nextline (); name = reg.nameregex (name); Iterator <Person> 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/t"+P.GetDress ()); } else {System.out.println ("Änderung fehlgeschlagen, bitte versuchen Sie es noch einmal!"); }}} // Altersinformationen @SuppressWarnings ("Ressource") public void agemodify () {telnoTereGex reg = new telnoTereGex (); System.out.println ("Bitte geben Sie die Seriennummer ein, die Sie ändern möchten:"); Scanner SC = neuer Scanner (System.in); String num = sc.Nextline (); int id = Integer.ParseInt (num); System.out.println ("Bitte geben Sie das Alter ein, das Sie ändern möchten:"); String ay = sc.Nextline (); Alter = Reg.AGEREGEX (Alter); Iterator <Person> iT = list.Iterator (); while (it.hasnext ()) {Person p = (Person) it.next (); if (id == p.getId ()) {P.Setage (Alter); System.out.println (p.getId ()+"#"+"/t/t"+p.getName ()+"/t/t"+p.getage ()+"/t/t"+p.getSex ()+"/t/t"+P.Gettelnum ()+"/t/t/t"+P.GetDress ()); } else {System.out.println ("Änderung fehlgeschlagen, bitte versuchen Sie es noch einmal!"); }}} // Geschlechtsinformationen @SuppressWarnings ("Ressource") public void sexmodify () {telnoTereGex reg = new telnoTereGex (); System.out.println ("Bitte geben Sie die Seriennummer ein, die Sie ändern möchten:"); Scanner SC = neuer Scanner (System.in); String num = sc.Nextline (); int id = Integer.ParseInt (num); System.out.println ("Bitte geben Sie das Geschlecht ein, das Sie ändern möchten:"); String sex = sc.Nextline (); sex = reg.sexregex (Sex); Iterator <Person> 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/t"+P.GetDress ()); } else {System.out.println ("Änderung fehlgeschlagen, bitte versuchen Sie es noch einmal!"); }}} // Zahleninformationen @SuppressWarnings ("Ressource") public void tellnummodify () {System.out.println ("Bitte geben Sie die serielle Nummer ein, die Sie ändern möchten:"); Scanner SC = neuer Scanner (System.in); String num = sc.Nextline (); int id = Integer.ParseInt (num); System.out.println ("Bitte geben Sie die Telefonnummer ein, die Sie ändern möchten:"); String tellnum = sc.Nextline (); Iterator <Person> iT = list.Iterator (); while (it.hasnext ()) {Person p = (Person) it.next (); if (id == p.getId ()) {P.Settelnum (tellnum); System.out.println (p.getId ()+"#"+"/t/t"+p.getName ()+"/t/t"+p.getage ()+"/t/t"+p.getSex ()+"/t/t"+P.Gettelnum ()+"/t/t/t"+P.GetDress ()); } else {System.out.println ("Änderung fehlgeschlagen, bitte versuchen Sie es noch einmal!"); }}} // Adressinformationen ändern @SuppressWarnings ("Ressource") public void adressModify () {tellnotereGex reg = new tolnotereGex (); System.out.println ("Bitte geben Sie die Seriennummer ein, die Sie ändern möchten:"); Scanner SC = neuer Scanner (System.in); String num = sc.Nextline (); int id = Integer.ParseInt (num); System.out.println ("Bitte geben Sie die Adresse ein, die Sie ändern möchten:"); String address = sc.Nextline (); Adresse = reg.addressregex (Adresse); Iterator <Person> iT = list.Iterator (); while (it.hasnext ()) {Person p = (Person) it.next (); if (id == p.getId ()) {P.SetAddress (Adresse); System.out.println (p.getId ()+"#"+"/t/t"+p.getName ()+"/t/t"+p.getage ()+"/t/t"+p.getSex ()+"/t/t"+P.Gettelnum ()+"/t/t/t"+P.GetDress ()); } else {System.out.println ("Änderung fehlgeschlagen, bitte versuchen Sie es noch einmal!"); }}} // Löschen Sie die angegebenen Benutzerinformationen @SuppressWarnings ("Ressource") public void delete () {System.out.println ("Bitte geben Sie die ID ein, die Sie löschen möchten:"); Scanner SC = neuer Scanner (System.in); String 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 ("erfolgreich löschen"); } else {System.out.println ("Delete fehlgeschlagen"); }}} // Alle Benutzerinformationen public void deleteAll () {list.clear () löschen; System.out.println ("erfolgreich löschen"); } // Informationen nach Benutzername public void orderName () {Comparator <Person> vergleicher = new Comparator <Person> () {@Override public int compare (Person O1, Person O2) {return o1.getName (). Vergleiche (o2.getName ()); }}; Sammelns.sort (Liste, Vergleicher); showAll (); } // Informationen nach Benutzer Alter public void orderage () {vergleicher <person> vergleicher = neuer vergleicher <person> () {@Override public int compare (Person O1, Person O2) {return o1.getage (). Vergleicheto (o2.getage ()); }}; Sammelns.sort (Liste, Vergleicher); showAll (); } // Informationen nach dem Benutzer Geschlecht public void ordersex () {vergleicher <person> vergleicher = new Comparator <Person> () {@Override public int compare (Person O1, Person O2) {return o1.getSex (). Vergleiche (O2.GetSex ()); }}; Sammelns.sort (Liste, Vergleicher); showAll (); }}Zusammenfassung: Dieses Projekt hat mich sehr klar darüber gemacht, was objektorientiert ist und warum Java eine objektorientierte Programmiersprache ist. Der Code des Programms wird von Objekten aufgerufen, und ich habe auch verstanden, wie ein Projekt klar geschrieben werden sollte. Die Funktionen und Ansichten sollten getrennt werden. Jede Klasse hat ihre eigenen spezifischen Funktionen. Die Funktionen jeder Klasse sollten nicht zusammen deinstalliert werden. Solche Codes sind im Grunde nicht wiederverwendbar. Wenn sie getrennt und klar sind, müssen beim Hinzufügen von Funktionsmodulen in Zukunft nur Funktionen hinzugefügt werden, ohne den vorherigen Code zu ändern. Dies spiegelt das Prinzip des Öffnens und Schließens wider. Für die Funktionsentwicklung und Änderungsinhalte spiegelt dieses Projekt auch das Entwurfsmuster von MVC wider. Für mich hat mir dieses Projekt sehr zugute gekommen.