Le menu principal contrôle le sous-menu à chaque niveau et réalise la mise en œuvre de l'ajout d'enregistrements, de la recherche d'enregistrements, de la suppression d'enregistrements, de la modification des enregistrements, du tri des enregistrements et de la sortie des fonctions du système. Un total de six modules fonctionnels.
Le diagramme ci-dessus montre les fonctions de chaque module, et il utilise également des expressions régulières pour déterminer si l'entrée est conforme aux règles. Ce système reflète le modèle de conception de MVC, et la division du travail est très claire.
Il comprend principalement les catégories suivantes:
Classe d'application: la classe de fonction principale du programme, l'entrée du programme commence
Classe de menu: Ce sont tous les effets affichés sur des pages simples, et il n'y a pas d'implémentation de fonction.
Classe de TelnoteGex: l'expression régulière, qui détermine si l'entrée est qualifiée, est tout dans cette méthode.
Classe de fonctionnement: classe Business Logic, toutes les fonctions sont essentiellement concentrées dans cette classe.
Classe de personne: encapsuler les données.
Code d'implémentation spécifique:
Le code de la classe d'application:
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 (); tandis que (true) {M.MainMenu (); int key = Reg.MenureGex (1, 6); switch (key) {cas 1: o.addlogic (); casser; Cas 2: O.SearchLogic (); casser; Cas 3: O.ModifyLogicLogic (); casser; Cas 4: O.DeleteLogic (); casser; Cas 5: O.OrderLogic (); casser; Cas 6: System.exit (0); casser; }}}}Le code d'implémentation spécifique de la classe de personne:
Package com.bjsxx.iphone; Public Class Person {private int id; // user id Attribut name de chaîne privée; // nom d'utilisateur attribut de chaîne privilégiée Âge; // Attribut d'âge utilisateur Adresse de chaîne privée; // Attribut de genre utilisateur this.id = id; this.name = name; this.age = âge; this.sex = sexe; this.telnum = telnum; this.address = adresse; } public int getID () {return id; } public void setid (int id) {this.id = id; } public String getName () {Nom de retour; } 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 sexe; } public void setSex (String Sex) {this.sex = sexe; } public String gettelnum () {return telnum; } public void Settelnum (String telnum) {this.telnum = telnum; } public String getAddress () {return adresse; } public void setAddress (adresse de chaîne) {this.address = adresse; }}Code spécifique de la classe TelnoteRegex:
package com.bjsxt.iphone; Importer java.util.scanner; classe publique telnoteRegex {// vérifiez les éléments de menu @SuppressWarnings ("Resource") public int menuregex (int min, int max) {String regex = "[0-9] {1}"; Scanner SC = nouveau scanner (System.in); while (true) {String input = sc.nextline (); // Vérifiez en fonction de la légalité if (input.matches (regex)) {int key = Integer.ParseInt (entrée); if (key> = min && key <= max) {return key; } else {System.out.println ("L'élément de menu entré ne répond pas aux exigences!"); }} else {System.out.println ("Le contenu d'entrée est incorrect!"); }}}} // Vérification du nom d'entrée de l'utilisateur @SuppressWarnings ("Resource") public String nameRegex (String Name) {String Pattern = "[// u4e00 - // u9fa5] +"; String str = name; Scanner SC = nouveau scanner (System.in); while (true) {if (str.matches (motif)) {return str; } else {System.out.println ("Entrez des caractères illégaux, veuillez rentrer en caractères chinois"); str = sc.nextline (); continuer; }}} // Vérification de l'âge d'entrée utilisateur @SuppressWarnings ("Resource") public String Ageregex (String Age) {String Pattern = "^ ([0-9] | [0-9] {2} | 100) $"; String str = âge; Scanner SC = nouveau scanner (System.in); while (true) {if (str.matches (motif)) {return str; } else {System.out.println ("Entrez des caractères illégaux, veuillez réintégrer les nombres"); str = sc.nextline (); continuer; }}} // Vérification du genre utilisateur @SuppressWarnings ("Resource") public String SexRegex (String Sex) {String Pattern = "[Men and Female MMFF]"; String str = sexe; Scanner SC = nouveau scanner (System.in); while (true) {if (str.matches (motif)) {return str; } else {System.out.println ("Entrez des caractères illégaux, veuillez rentrer dans le MMFF masculin et féminin"); str = sc.nextline (); continuer; }}} // Vérification du numéro de téléphone de l'entrée utilisateur @SuppressWarnings ("Resource") public String telnumregex (String telnum) {String Pattern = "[0-9] {11}"; String str = telnum; Scanner SC = nouveau scanner (System.in); while (true) {if (str.matches (motif)) {return str; } else {System.out.println ("Entrée des caractères illégaux, veuillez rentrer au numéro de téléphone mobile à 11 chiffres"); str = sc.nextline (); continuer; }}}} // Vérification de l'utilisateur Adresse d'entrée @SuppressWarnings ("Resource") Public String AddressRegex (String Address) {String Pattern = "[A-ZA-Z [0-9]] {1,15}"; String str = adresse; Scanner SC = nouveau scanner (System.in); while (true) {if (str.matches (motif)) {return str; } else {System.out.println ("Entrée des caractères illégaux, veuillez rentrer 1 à 15 cas ou nombres d'anglais"); str = sc.nextline (); continuer; }}}}Implémentation spécifique du code de classe de menu:
package com.bjsxt.iphone; menu de classe publique {// Interface principale publique void MainMenu () {System.out.println ("***************************"); System.out.println ("** 1 Ajouter un enregistrement **"); System.out.println ("** 2 Find Record **"); System.out.println ("** 3 Modifier l'enregistrement **"); System.out.println ("** 4 Delete Record **"); System.out.println ("** 5 Tri Records **"); System.out.println ("** 6 Quittez le système **"); System.out.println ("*****************************"); } // Ajouter l'interface public void addMenu () {System.out.println ("*********************"); System.out.println ("** 1 Ajouter un nouvel enregistrement **"); System.out.println ("** 2 Voir tous les enregistrements **"); System.out.println ("** 3 Retour au niveau précédent **"); System.out.println ("**************************"); } // Interface de recherche public void SearchMenu () {System.out.println ("*********************"); System.out.println ("** 1 Recherche par nom"); System.out.println ("** 2 Recherche par âge"); System.out.println ("** 3 Search by Gender"); System.out.println ("** 4 Search by Number"); System.out.println ("** 5. Cliquez sur l'adresse pour trouver **"); System.out.println ("** 6. Voir les enregistrements complets **"); System.out.println ("** 7. Retour au niveau précédent **"); System.out.println ("**************************"); } // Modifier l'interface public void modifyMenu () {System.out.println ("**************************"); System.out.println ("** 1. Voir les enregistrements complets **"); System.out.println ("** 2 Modifier l'enregistrement spécifié **"); System.out.println ("** 3 Retour au niveau précédent **"); System.out.println ("**************************"); } // Modifiez le sous-interface public void submodifyMenu () {System.out.println ("************************"); System.out.println ("** 1 modifie le nom **"); System.out.println ("** 2 Modifier l'âge **"); System.out.println ("** 3 Modifier le genre **"); System.out.println ("** 4 modifier le numéro **"); System.out.println ("** 5 Modifier l'adresse **"); System.out.println ("** 6 Retour au niveau précédent **"); System.out.println ("**************************"); } // Supprimer l'interface public void DeletemeMu () {System.out.println ("********************************"); System.out.println ("** 1 Voir tous les enregistrements **"); System.out.println ("** 2 Supprimer les enregistrements spécifiés **"); System.out.println ("** 3 Supprimer tous les enregistrements **"); System.out.println ("** 4 Retour au niveau précédent **"); System.out.println ("*****************************"); } // Tri Interface public void orderMenu () {System.out.println ("*****************************"); System.out.println ("** 1 tri par nom **"); System.out.println ("** 2 Toi par âge **"); System.out.println ("** 3 tri par genre **"); System.out.println ("** 4 Voir tous les enregistrements **"); System.out.println ("** 5 Retour au niveau précédent **"); System.out.println ("**************************"); }}Implémentation spécifique de la classe d'exploitation:
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 list <onon> list = new arraylist <softans> ();); // utilisateur Ajouter des informations Contrôle logique commercial public void addLogic () {menu m = new menu (); TelnoteRegex reg = new TelNoteRegex (); tandis que (true) {M.AddMenu (); int key = Reg.MenureGex (1, 3); switch (key) {cas 1: addOperation (); casser; Cas 2: showall (); casser; Cas 3: retour; }}} // Informations de requête utilisateur Contrôle de logique commerciale public void searchLogic () {menu m = new menu (); TelnoteRegex reg = new TelNoteRegex (); tandis que (true) {M.SearchMenu (); int key = reg.meureGex (1, 7); switch (key) {cas 1: searchByName (); casser; Cas 2: SearchByage (); casser; Cas 3: SearchBySex (); casser; Cas 4: SearchBytelnum (); casser; Cas 5: SearchByAdd (); casser; Cas 6: Showall (); casser; Cas 7: retour; }}} // Modifier les informations Contrôle de la logique commerciale public Void modifyLogicLogic () {menu m = new menu (); TelnoteRegex reg = new TelNoteRegex (); tandis que (true) {M.ModifyMenu (); int key = Reg.MenureGex (1, 3); switch (key) {cas 1: showall (); casser; Cas 2: ModifyLogicLogic1 (); casser; Cas 3: retour; }}} // Modifier les sauts à trois couches publics modifyLogicLogic1 () {menu m = new menu (); TelnoteRegex reg = new TelNoteRegex (); tandis que (true) {M.SubModifyMenu (); int key = Reg.MenureGex (1, 6); switch (key) {cas 1: nameModify (); casser; Cas 2: Agemodify (); casser; Cas 3: sexModify (); casser; Cas 4: telnummodify (); casser; Cas 5: AdresseModify (); casser; Cas 6: retour; }}} // Supprimer des informations Contrôle logique commercial public void deletelogic () {menu m = new menu (); TelnoteRegex reg = new TelNoteRegex (); tandis que (true) {M.deleteMenu (); int key = Reg.MenureGex (1, 4); switch (key) {cas 1: showall (); casser; Cas 2: Delete (); casser; Cas 3: DeleteALL (); casser; Cas 4: retour; }}} // Tri Informations Business Logic Control public void orderLogic () {menu m = new menu (); TelnoteRegex reg = new TelNoteRegex (); tandis que (true) {M.OrderMenu (); int key = Reg.MenureGex (1, 5); switch (key) {cas 1: orderName (); casser; Cas 2: Orderage (); casser; Cas 3: ORDERSEX (); casser; Cas 4: showall (); casser; Cas 5: retour; }}} // Ajouter de nouvelles informations utilisateur @SuppressWarnings ("Resource") public void addOperation () {telnoteRegex reg = new TelNoteRegex (); Scanner SC = nouveau scanner (System.in); System.out.println ("Veuillez saisir l'ID de contact:"); String id = sc.nextline (); System.out.println ("Veuillez saisir le nom à ajouter:"); String name = sc.nextline (); name = reg.NameRegex (name); System.out.println ("Veuillez saisir l'âge à ajouter:"); String Age = SC.NextLine (); Âge = reg.agegex (âge); System.out.println ("Veuillez saisir le sexe que vous souhaitez ajouter:"); String Sex = sc.nextline (); sexe = reg.sexregex (sexe); System.out.println ("Veuillez saisir le numéro de mobile que vous souhaitez ajouter:"); String telnum = sc.nextline (); telnum = reg.telnumregex (telnum); System.out.println ("Veuillez saisir l'adresse que vous souhaitez ajouter:"); String Address = SC.NextLine (); adresse = reg.addressregex (adresse); int personId = Integer.ParseInt (id); Personne P = nouvelle personne (Personid, nom, âge, sexe, telnum, adresse); list.add (p); } // // // juger si le numéro de série a déjà existé et que l'insertion a échoué avec succès // @SuppressWarnings ("Resource") // Public String jugeId (String id) {// Scanner Sc = New Scanner (System.in); // Iterator <Person> it = list.iterator (); // string newid = id; // while (it.hasnext () {// personne p = (personne) it.next (); // if (newid.equals (p.getId ())) {// system.out.println ("ce numéro de série existe déjà, veuillez réintégrer le numéro de série"); // newId = sc.nextline (); // continue; //} else {// return; //} // // Informations utilisateur public void showall () {System.out.println ("Numéro de série / T / T" + "Name / T / T" + "Age / T / T" + "Gender / T / T" + "Numéro mobile / T / T" + "Adresse"); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) it.next (); System.out.println (p.getId () + "#" + "/ t / t" + p.getName () + "/ t / t" + p.getage () + "/ t / t" + p.getSex () + "/ t / t" + p.getTelnum () + "/ t" + p.getAddress ()); }} // requête les informations utilisateur par nom @SuppressWarnings ("Resource") public void searchByName () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Entrez le nom que vous souhaitez interroger:"); Scanner SC = nouveau scanner (System.in); String name = sc.nextline (); name = reg.NameRegex (name); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) 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.gettelnu () + "/ t / t" + p.getadress ()); }}} // Informations utilisateur de requête par âge @SuppressWarnings ("Resource") public void SearchByage () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Entrez l'âge que vous souhaitez interroger:"); Scanner SC = nouveau scanner (System.in); String Age = SC.NextLine (); Âge = reg.agegex (âge); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) 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.gettelnu () + "/ t" + p.getaddress ();); }}} // Informations utilisateur de requête par sexe @SuppressWarnings ("Resource") public void searchBySex () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Entrez le genre que vous souhaitez interroger:"); Scanner SC = nouveau scanner (System.in); String Sex = sc.nextline (); sexe = reg.sexregex (sexe); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) it.next (); if (sexe.equals (p.getSEx ())) {System.out.println (p.getId () + "#" + "/ t / t" + p.getName () + "/ t / t" + p.getage () + "/ t / t" + p.getSex () + "/ t / t" + p.gettelnu () + "/ t / t" + p.getaddress ()); }}} // Vérifiez les informations de l'utilisateur par numéro de téléphone @SuppressWarnings ("Resource") public void searchBytelnum () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Entrez le numéro de téléphone que vous souhaitez interroger:"); Scanner SC = nouveau scanner (System.in); String telnum = sc.nextline (); telnum = reg.telnumregex (telnum); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) 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.getadrsh ()); }}} // Vérifiez les informations de l'utilisateur par adresse @SuppressWarnings ("Resource") public void SearchByAdd () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Entrez l'adresse que vous souhaitez interroger:"); Scanner SC = nouveau scanner (System.in); String Address = SC.NextLine (); adresse = reg.addressregex (adresse); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) it.next (); if (adresse.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.getadress ()); }}} // // Modifier les informations d'enregistrement spécifiées // public void modify () {// system.out.println ("Veuillez saisir les informations que vous souhaitez modifier:"); // //} // modifier les informations du nom @SuppressWarnings ("Resource") public void nameModify () {telnotegex reg = new TelNotegex (); System.out.println ("Veuillez saisir le numéro de série que vous souhaitez modifier:"); Scanner SC = nouveau scanner (System.in); String num = sc.nextline (); int id = Integer.ParseInt (num); System.out.println ("Veuillez saisir le nom que vous souhaitez modifier:"); String name = sc.nextline (); name = reg.NameRegex (name); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) 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" + p.getAddress ()); } else {System.out.println ("Modification a échoué, veuillez réessayer!"); }}} // Modifier les informations d'âge @SuppressWarnings ("Resource") public void Agemodify () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Veuillez saisir le numéro de série que vous souhaitez modifier:"); Scanner SC = nouveau scanner (System.in); String num = sc.nextline (); int id = Integer.ParseInt (num); System.out.println ("Veuillez saisir l'âge que vous souhaitez modifier:"); String Age = SC.NextLine (); Âge = reg.agegex (âge); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) it.next (); if (id == p.getId ()) {p.Setage (âge); System.out.println (p.getId () + "#" + "/ t / t" + p.getName () + "/ t / t" + p.getage () + "/ t / t" + p.getSex () + "/ t / t" + p.getTelnum () + "/ t" + p.getAddress ()); } else {System.out.println ("Modification a échoué, veuillez réessayer!"); }}} // Modifier les informations de genre @SuppressWarnings ("Resource") public void sexModify () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Veuillez saisir le numéro de série que vous souhaitez modifier:"); Scanner SC = nouveau scanner (System.in); String num = sc.nextline (); int id = Integer.ParseInt (num); System.out.println ("Veuillez saisir le sexe que vous souhaitez modifier:"); String Sex = sc.nextline (); sexe = reg.sexregex (sexe); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) it.next (); if (id == p.getId ()) {p.SetSEx (sexe); System.out.println (p.getId () + "#" + "/ t / t" + p.getName () + "/ t / t" + p.getage () + "/ t / t" + p.getSex () + "/ t / t" + p.getTelnum () + "/ t" + p.getAddress ()); } else {System.out.println ("Modification a échoué, veuillez réessayer!"); }}} // modifier les informations du nombre @SuppressWarnings ("Resource") public void telnummodify () {System.out.println ("Veuillez saisir le numéro de série que vous souhaitez modifier:"); Scanner SC = nouveau scanner (System.in); String num = sc.nextline (); int id = Integer.ParseInt (num); System.out.println ("Veuillez saisir le numéro de téléphone que vous souhaitez modifier:"); String telnum = sc.nextline (); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) 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" + p.getAddress ()); } else {System.out.println ("Modification a échoué, veuillez réessayer!"); }}} // Modifier les informations d'adresse @SuppressWarnings ("Resource") public void AddressModify () {telnoteRegex reg = new TelNoteRegex (); System.out.println ("Veuillez saisir le numéro de série que vous souhaitez modifier:"); Scanner SC = nouveau scanner (System.in); String num = sc.nextline (); int id = Integer.ParseInt (num); System.out.println ("Veuillez saisir l'adresse que vous souhaitez modifier:"); String Address = SC.NextLine (); adresse = reg.addressregex (adresse); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) 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" + p.getAddress ()); } else {System.out.println ("Modification a échoué, veuillez réessayer!"); }}} // Supprimer les informations utilisateur spécifiées @SuppressWarnings ("Resource") public void delete () {System.out.println ("Veuillez saisir l'ID que vous souhaitez supprimer:"); Scanner SC = nouveau scanner (System.in); String num = sc.nextline (); int id = Integer.ParseInt (num); Iterator <onom> it = list.iterator (); while (it.hasnext ()) {personne p = (personne) it.next (); if (id == p.getId ()) {list.Remove (id); System.out.println ("supprimer réussi"); } else {System.out.println ("Delete a échoué"); }}} // Supprimer toutes les informations utilisateur public void Deleteall () {list.clear (); System.out.println ("Supprimer avec succès"); } // Trier les informations par le nom d'utilisateur public void orderName () {Comparator <onon> Comparator = new Comparator <som> () {@Override public int compare (Person o1, personne o2) {return o1.getName (). Compare (o2.getName ()); }}; Collection.Sort (liste, comparateur); showall (); } // Trier les informations par l'utilisateur public public void orderage () {Comparator <onon> Comparator = new Comparator <som> () {@Override public int compare (personne o1, personne o2) {return o1.getage (). Compareto (o2.getage ()); }}; Collection.Sort (liste, comparateur); showall (); } // Trier les informations par l'utilisateur Sexe public void ordersEx () {Comparator <onon> Comparator = new Comparator <som> () {@Override public int compare (personne o1, personne o2) {return o1.getSEx (). Compare (o2.getSex ()); }}; Collection.Sort (liste, comparateur); showall (); }}Résumé: Ce projet m'a expliqué très clairement ce qu'est l'objet et pourquoi Java est un langage de programmation orienté objet. Le code du programme est appelé par des objets, et j'ai également compris comment un projet doit être écrit clairement. Les fonctions et les vues doivent être séparées. Chaque classe a ses propres fonctions spécifiques. Les fonctions de chaque classe ne doivent pas être désinstallées ensemble. Ces codes ne sont essentiellement pas réutilisables. S'ils sont séparés et clairs, lors de l'ajout de modules fonctionnels à l'avenir, seules les fonctions doivent être ajoutées sans modifier le code précédent. Cela reflète bien le principe de l'ouverture et de la fermeture. Pour le développement de fonctions et le contenu de modification, ce projet reflète également le modèle de conception de MVC. Pour moi, ce projet m'a beaucoup profité.