From 45c9feefd1ee8cafa7783ea9c72231d495237b00 Mon Sep 17 00:00:00 2001 From: "vincent.steinman" <vincent.steinmann@etu.hesge.ch> Date: Tue, 15 Nov 2022 10:52:22 +0100 Subject: [PATCH] s2 without ordering --- tp/src/main/java/org/example/Contact.java | 14 +- tp/src/main/java/org/example/Family.java | 30 ++++ tp/src/main/java/org/example/Friend.java | 9 + tp/src/main/java/org/example/Main.java | 162 +++++++++++++----- .../main/java/org/example/Professional.java | 30 ++++ tp/target/classes/org/example/Contact.class | Bin 3693 -> 3693 bytes tp/target/classes/org/example/Family.class | Bin 0 -> 2004 bytes tp/target/classes/org/example/Friend.class | Bin 0 -> 567 bytes tp/target/classes/org/example/Main.class | Bin 6301 -> 8586 bytes .../classes/org/example/Professional.class | Bin 0 -> 2024 bytes 10 files changed, 199 insertions(+), 46 deletions(-) create mode 100644 tp/src/main/java/org/example/Family.java create mode 100644 tp/src/main/java/org/example/Friend.java create mode 100644 tp/src/main/java/org/example/Professional.java create mode 100644 tp/target/classes/org/example/Family.class create mode 100644 tp/target/classes/org/example/Friend.class create mode 100644 tp/target/classes/org/example/Professional.class diff --git a/tp/src/main/java/org/example/Contact.java b/tp/src/main/java/org/example/Contact.java index 15b12ef..590b07c 100644 --- a/tp/src/main/java/org/example/Contact.java +++ b/tp/src/main/java/org/example/Contact.java @@ -1,13 +1,13 @@ package org.example; -public class Contact { +public abstract class Contact { //Fields - private Person pers; - private String addr; - private String[] phone; - private String[] email; - private String[] social; - private String job; + protected Person pers; + protected String addr; + protected String[] phone; + protected String[] email; + protected String[] social; + protected String job; //Ctor public Contact(Person pers, String addr, String[] phone, String[] email, diff --git a/tp/src/main/java/org/example/Family.java b/tp/src/main/java/org/example/Family.java new file mode 100644 index 0000000..b5266bc --- /dev/null +++ b/tp/src/main/java/org/example/Family.java @@ -0,0 +1,30 @@ +package org.example; + +public class Family extends Contact{ + private String relation; + public Family(Person pers, String addr, String[] phone, String[] email, + String[] social, String job, String relation){ + super(pers, addr, phone, email, social, job); + this.relation = relation; + } + + @Override + public String toString(){ + String w_phone = ""; + String w_email = ""; + String w_social = ""; + + for(String elem: this.phone){ + w_phone += elem + " "; + } + for(String elem: this.email){ + w_email += elem + " "; + } + for(String elem: this.social){ + w_social += elem + " "; + } + + return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + + w_social + "\n" + this.job + "\n" + this.relation; + } +} diff --git a/tp/src/main/java/org/example/Friend.java b/tp/src/main/java/org/example/Friend.java new file mode 100644 index 0000000..16e8c74 --- /dev/null +++ b/tp/src/main/java/org/example/Friend.java @@ -0,0 +1,9 @@ +package org.example; + +public class Friend extends Contact{ + + public Friend(Person pers, String addr, String[] phone, String[] email, + String[] social, String job){ + super(pers, addr, phone, email, social, job); + } +} diff --git a/tp/src/main/java/org/example/Main.java b/tp/src/main/java/org/example/Main.java index d82ac5a..65e89b8 100644 --- a/tp/src/main/java/org/example/Main.java +++ b/tp/src/main/java/org/example/Main.java @@ -1,9 +1,10 @@ package org.example; +import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { - static Contact[] contactArray = {}; + static ArrayList<Contact> contactArray = new ArrayList<Contact>(); public static void main(String[] args) { while(true){ System.out.println(""); @@ -11,13 +12,14 @@ public class Main { System.out.println("[1] Edit Contact"); System.out.println("[2] Delete Contact"); System.out.println("[3] Show Contact"); + System.out.println("[4] Search Contact"); Scanner myObj = new Scanner(System.in); String usrInput = myObj.nextLine(); switch (usrInput){ case "0": - Add(); + Pick(); break; case "1": Edit(); @@ -28,15 +30,42 @@ public class Main { case "3": Show(); break; + case "4": + Search(); + break; default: System.out.println("Please enter valid input"); break; } } } - public static void Add(){ - int size_array = contactArray.length; - Contact[] newContactArray = new Contact[size_array + 1]; + public static void Pick(){ + int size_array = contactArray.size(); + + System.out.println(""); + System.out.println("[0] Friend"); + System.out.println("[1] Family"); + System.out.println("[2] Professional"); + + Scanner myObj = new Scanner(System.in); + String usrInput = myObj.nextLine(); + + switch (usrInput){ + case "0": + AddPal(); + break; + case "1": + AddFam(); + break; + case "2": + AddPro(); + break; + default: + System.out.println("Please enter valid input"); + break; + } + } + public static void AddPal(){ System.out.println("Enter first names"); Scanner myObj = new Scanner(System.in); String firstName = myObj.nextLine(); @@ -59,15 +88,71 @@ public class Main { String[] emailList = phone.split(" "); String[] socialList = phone.split(" "); - Contact c = new Contact(p, address, phoneList, emailList, socialList, job); - System.arraycopy(contactArray,0,newContactArray, 0,size_array); - newContactArray[size_array] = c; - contactArray = newContactArray; - OrderArray(); + Friend pal = new Friend(p, address, phoneList, emailList, socialList, job); + Add(pal); + } + public static void AddFam(){ + System.out.println("Enter first names"); + Scanner myObj = new Scanner(System.in); + String firstName = myObj.nextLine(); + System.out.println("Enter last names"); + String lastName = myObj.nextLine(); + Person p = new Person(lastName, firstName); + + System.out.println("Enter Address"); + String address = myObj.nextLine(); + System.out.println("Enter Phone"); + String phone = myObj.nextLine(); + System.out.println("Enter Emails"); + String emails = myObj.nextLine(); + System.out.println("Enter Socials"); + String social = myObj.nextLine(); + System.out.println("Enter Job"); + String job = myObj.nextLine(); + System.out.println("Enter relation"); + String relation = myObj.nextLine(); + + String[] phoneList = phone.split(" "); + String[] emailList = phone.split(" "); + String[] socialList = phone.split(" "); + Family fam = new Family(p, address, phoneList, emailList, socialList, job, relation); + Add(fam); + } + public static void AddPro(){ + System.out.println("Enter first names"); + Scanner myObj = new Scanner(System.in); + String firstName = myObj.nextLine(); + System.out.println("Enter last names"); + String lastName = myObj.nextLine(); + Person p = new Person(lastName, firstName); + + System.out.println("Enter Address"); + String address = myObj.nextLine(); + System.out.println("Enter Phone"); + String phone = myObj.nextLine(); + System.out.println("Enter Emails"); + String emails = myObj.nextLine(); + System.out.println("Enter Socials"); + String social = myObj.nextLine(); + System.out.println("Enter Job"); + String job = myObj.nextLine(); + System.out.println("Enter Work Place"); + String wp = myObj.nextLine(); + + String[] phoneList = phone.split(" "); + String[] emailList = phone.split(" "); + String[] socialList = phone.split(" "); + + Professional pro = new Professional(p, address, phoneList, emailList, socialList, job, wp); + Add(pro); + } + public static void Add(Contact c){ + contactArray.add(c); + OrderArray(); } public static void Edit(){ - int size_array = contactArray.length; + int size_array = contactArray.size(); if(size_array == 0){ System.out.println("List is empty"); } @@ -89,40 +174,40 @@ public class Main { case "0": System.out.println("Enter new first names"); String editFirst = myObj.nextLine(); - contactArray[Integer.parseInt(contactNb)].EditFirstName(editFirst); + contactArray.get(Integer.parseInt(contactNb)).EditFirstName(editFirst); break; case "1": System.out.println("Enter new last names"); String editLast = myObj.nextLine(); - contactArray[Integer.parseInt(contactNb)].EditLastName(editLast); + contactArray.get(Integer.parseInt(contactNb)).EditLastName(editLast); break; case "2": System.out.println("Enter new first address"); String editAddr = myObj.nextLine(); - contactArray[Integer.parseInt(contactNb)].EditFirstName(editAddr); + contactArray.get(Integer.parseInt(contactNb)).EditFirstName(editAddr); break; case "3": System.out.println("Enter new phone numbers (use / as separator)"); String editPhone = myObj.nextLine(); String[] editPhoneList = editPhone.split("/"); - contactArray[Integer.parseInt(contactNb)].EditPhone(editPhoneList); + contactArray.get(Integer.parseInt(contactNb)).EditPhone(editPhoneList); break; case "4": System.out.println("Enter new Emails (use / as separator)"); String editEmail = myObj.nextLine(); String[] editEmailList = editEmail.split("/"); - contactArray[Integer.parseInt(contactNb)].EditEmail(editEmailList); + contactArray.get(Integer.parseInt(contactNb)).EditEmail(editEmailList); break; case "5": System.out.println("Enter new Socials (use / as separator)"); String editSocial = myObj.nextLine(); String[] editSocialList = editSocial.split("/"); - contactArray[Integer.parseInt(contactNb)].EditEmail(editSocialList); + contactArray.get(Integer.parseInt(contactNb)).EditEmail(editSocialList); break; case "6": System.out.println("Enter new Job"); String editJob = myObj.nextLine(); - contactArray[Integer.parseInt(contactNb)].EditLastName(editJob); + contactArray.get(Integer.parseInt(contactNb)).EditLastName(editJob); break; default: System.out.println("Please enter correct value"); @@ -136,25 +221,16 @@ public class Main { } } public static void Delete(){ - int size_array = contactArray.length; + int size_array = contactArray.size(); if(size_array == 0){ System.out.println("List is empty"); } else{ - Contact[] newContactArray = new Contact[size_array -1]; System.out.println("Which Contact?"); Scanner myObj = new Scanner(System.in); String usrInput = myObj.nextLine(); if(TryNumber(usrInput)){ - for(int i = 0; i < size_array -1; i++){ - if(i >= Integer.parseInt(usrInput)){ - newContactArray[i] = contactArray[i+1]; - } - else{ - newContactArray[i] = contactArray[i]; - } - } - contactArray = newContactArray; + contactArray.remove(usrInput); } else{ System.out.println("Please enter valid input"); @@ -168,9 +244,16 @@ public class Main { System.out.println(); } } + public static void Search(){ + for(Contact c: contactArray){ + if(c.getPers().getFirst_name() == ""){ + + } + } + } //Test if the value is a number or not and if it's withing the range of the array public static boolean TryNumber(String nb){ - int size_array = contactArray.length; + int size_array = contactArray.size(); int nbInt = 0; try{ nbInt = Integer.parseInt(nb); @@ -181,21 +264,22 @@ public class Main { return (nbInt < size_array); } public static void OrderArray(){ - int size_array = contactArray.length; + int size_array = contactArray.size(); if(size_array > 1){ - Contact[] newContactArray = new Contact[size_array]; - for(int i = 0; i < size_array - 1; i++){ //-1 as we check +1 later - String nameP1 = contactArray[i].getPers().getFirst_name(); - String nameP2 = contactArray[i+1].getPers().getFirst_name(); + ArrayList<Contact> newContactArray = new ArrayList<Contact>(); + for(int i = 0; i < size_array - 1; i++){ //-1 as we check +1 later (< as lst starts at 0) + String nameP1 = contactArray.get(i).getPers().getFirst_name(); + String nameP2 = contactArray.get(i+1).getPers().getFirst_name(); int test = nameP1.compareTo(nameP2); //Return distance between 2 letter (f and a = -5 / a and b = 1) if(test > 0){ - newContactArray[i] = contactArray[i+1]; - newContactArray[i+1] = contactArray[i]; + newContactArray.add(contactArray.get(i+1)); + newContactArray.add(contactArray.get(i)); } else{ - newContactArray[i] = contactArray[i]; + newContactArray.add(contactArray.get(i)); } - if(i == size_array - 2){ //-2 to take last iteration only (as we do "i < size -1") + if(i == size_array - 1){ //-2 to take last iteration only (as we do "i < size -1") + newContactArray.add(contactArray.get(i+1)); contactArray = newContactArray; } } diff --git a/tp/src/main/java/org/example/Professional.java b/tp/src/main/java/org/example/Professional.java new file mode 100644 index 0000000..bdb6496 --- /dev/null +++ b/tp/src/main/java/org/example/Professional.java @@ -0,0 +1,30 @@ +package org.example; + +public class Professional extends Contact{ + private String work_place; + public Professional(Person pers, String addr, String[] phone, String[] email, + String[] social, String job, String work_place){ + super(pers, addr, phone, email, social, job); + this.work_place = work_place; + } + + @Override + public String toString(){ + String w_phone = ""; + String w_email = ""; + String w_social = ""; + + for(String elem: this.phone){ + w_phone += elem + " "; + } + for(String elem: this.email){ + w_email += elem + " "; + } + for(String elem: this.social){ + w_social += elem + " "; + } + + return pers.toString() + "\n" + this.addr + "\n" + w_phone + "\n" + w_email + "\n" + + w_social + "\n" + this.job + "\n" + this.work_place; + } +} diff --git a/tp/target/classes/org/example/Contact.class b/tp/target/classes/org/example/Contact.class index 90149e1f5120b89e0d5dc82f9bf65d6683aca544..90a523062b11ba0b0f791d92073dc5d969add585 100644 GIT binary patch delta 65 zcmaDW^Hyd<9h(V@A_E5l69WSS8v_diHv<m?0|N^KKZ5|67G@9u)8bHC3PNw*#I~Cq E002A&s{jB1 delta 65 zcmaDW^Hyd<9h(V*A_E5l69WSS8v_#qHv<m?0|OHSKZ5|67G@9u)8bHC3PNw*#I~Cq E0R9mMn*aa+ diff --git a/tp/target/classes/org/example/Family.class b/tp/target/classes/org/example/Family.class new file mode 100644 index 0000000000000000000000000000000000000000..a80639b27961d303be0f4113fc674724e8c9f1b8 GIT binary patch literal 2004 zcmX^0Z`VEs1_nEZKrRL*24;2!79Ivx1~x_p;rya>{nU!Y+=84`edqkVlEmZ^Mg}&U z%)HDJJ4S{Q4Ig9$0jWjB`FYkpS&3zd`Z<Yt>H5JXMVWc&*3sk&Vd~Qi<7D7q;ACgu z;$h%s;9+DCLUw^$Vs2(mB_jhzQEE<NNoIZ?BZCm885|6Jj0_AQa|C!81Q~=F8CVN4 z^7B#|8HBO8REU9rL4=1vltGM<K|D7xJJmTqFFCO!JhLRjIX|zsBr&g~n32Ik1JfQ% z5lu`XkTWEB7$m{YNX<>m%mIl=^DxMOMA(Y+lQR>+LUKF|@(c=$3@inyMa7H^BG`hS zi$RG&nVms}he4G=4J~XSvBSu~QIZdd7DfgU4IB>A;9<}N1ujcsN=gyPJ=#1BIv@e& zto$S)21W)wP=M$&GE5@M+nBzlmIxO2GcvT%KUre>M>C9(fyFsLC6$qZ-zPIK)vq)+ zDYYmhF)1e%lqmC)6LZ26i!wocs31#8MkYqYLQ=FfBLhonPHHYA1ABQqG_A6i$Agm# zBLhcyJS3SgGVlhMBqnG3CKiCrWM{BpWDr2lj_ja>#TA@iT9lmXmI-nWH^de_kV-}d z0jK=@lH!u0!~);cl8pS6VtzITCoTqO1{Zb)S5UmWF*2xtltS`&W?or-b}BThL-K}O zVsc4-Q6(e84CLeiRR}TEBQY-}C$(6`CqF;Cv;a$)ffS-B8bc}zQn4sU&ba<bS*gh- z*2rlCYJ_uQPEK%UNvbsmg9jr6Gb5t{2ZI+Q11}>N5@clH@yyFhEppCDEG|whW@qqa zWKhNMFE($mGx#$y$l+JY$iN2iGlL=n2LlrW0|O%i6R0R-U|?WkU}RurFkoP0Fl1n0 z=wV=I-~bgqTG~3gk}Q&}l5E=<7_}tXw=%GA1gkb;U|`^5U}j)oU}xZE;9wAD;AAjn zU|<M>=wmQpFl7J%5m3p&zz8x6l&`_IihxQ!uwD^R;lscJmX%=;VqgWcbQpLT*uX4q z1|9}>21Zbk0&y8*Db!`lgm`^~czuO<{j|0)@LRD+vg|WsWj13IWfNsx#2_ijBFbiD z#jY*MzKcPafx)MRjdA(^XIfhr#BnLrfhzTdE0w~fR2Qn$53W>p8-t?O76x@~9bK(0 z3|d-S7}$3)=rS;DU|?WiW&nki83Qi^0|PGuGXoz38v{QBCxak^DuWP%9)lo*34;hj z0D~w)B!dV;JcBqxHG>303xhaA7lSl7Og$Lb8B`fK8O*?;5dddZ!&wXr%b+37%&?fj zoPmddk%5h20fPkt4+9eeC&OF@O9mbWW(F$;1_omWw*L&`4D9R-9PA9%Fl5Wf$iVP} zLFOL=FFS)RBO@x4ftkS$9PRcD4&aDqVsK<&WN-(Qo($d$3=CWhj0`>uehdK&k^p(` B>IVP- literal 0 HcmV?d00001 diff --git a/tp/target/classes/org/example/Friend.class b/tp/target/classes/org/example/Friend.class new file mode 100644 index 0000000000000000000000000000000000000000..7502894edd022967e3f0e47ff76321052ab7666a GIT binary patch literal 567 zcmX^0Z`VEs1_nC@NiGH^24;2!79Ivx1~x_p;rya>{nU!Y+=84`edqkVlEmZ^Mg}&U z%)HDJJ4S{Q4Ig9$0jWjB`FYkpS&3zd`Z<Yt>H5JXMVWc&*3sk&Vd~QiV`t!CWDr8O z*R3csH7|vcfyFsLC6$qZ-zPIK)vq)+DYYmhF)1gNkwM5OKRGccEU_pP#D@y9lw@QU zGct&vcmZORH6sH{L240(EYyRH3@nK$DMcW2F}%viz*>-zpO?zWAdJP=j0~))xrv!M zj0|kW`N^4yIgAX<S@}tf3|ztarA5i9ZkZtGazk992Qr*Nk%66oi2(!{85lva!obMD z$-ux+!NAVI&cMLHr=_i<E6F0sD#^B;fpH@P0|OHS7Xt$WC?**g*co^kI2gDY7#KVt zsu_3~ctM6S@G<Z)@G~%iOkfaT5Cq%7#~{QY%)ks56JZc$U;(p48H5>F!7MQbK?XJk KMh0=PEfN4F1%+h* literal 0 HcmV?d00001 diff --git a/tp/target/classes/org/example/Main.class b/tp/target/classes/org/example/Main.class index 611c4014bad05fc0a784690238cdc1e343376535..26c69ecfe8a389705cae4a52d07bc900fb788bde 100644 GIT binary patch literal 8586 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 A`v3p{ delta 4319 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 M<YnY%6l9PD0A+Hm-2eap diff --git a/tp/target/classes/org/example/Professional.class b/tp/target/classes/org/example/Professional.class new file mode 100644 index 0000000000000000000000000000000000000000..b23347c22668ebf646f715c6f737764224ccf42e GIT binary patch literal 2024 zcmX^0Z`VEs1_nEZKrRL*24;2!79Ivx1~x_p;rya>{nU!Y+=84`edqkVlEmZ^Mg}&U z%)HDJJ4S{Q4Ig9$0jWjB`FYkpS&3zd`Z<Yt>H5JXMVWc&*3sk&Vd~Qi<7D7q;ACgu z;$h%s;9+EtKyg7)ep+gAab|vAVh$q%S9yL>c6>ojVsa`YgAk@!91MJn3=AOi1b7$( z8H5-aSPL@p^HLcZgt53-h=GAYgoi<tL5z_>JU1~r)j2;eIk6->vn0bgKd-nXF|VYU zk-<U((;iF_O-vz>GbDHzB*D%|%}vbA0f|WSFvx&J*oyO$GZVo=ay$(33<``4ECs1W z#f%Ih*rI@oL5V?`ok4|%L6t#`kwFM0jKHzP$iPvO4~ZT|1`!P$4$|OZ&;$iCOJYh& z5y(B-JPbM@0p_gyBq0Vy20c)K=rb}*BFfvCzNVH47WXqUw9!9#V){ojjFExGIX@+p zk%8YQGcVPzG&d==C?qi{2b?JLlM{2o5{oiHe5fExNk(QdBZCxb#3H3^Yeoi^)ST2@ zMh5oscxZ}cFOLT&8b$_=@_0yMVPxP9E=f$z_Dw7Ro6OE&!^j|jo;le;$%`vEzqBYh z)h!d`D8T?EyYxWn85sne^7BiIONtT;d{av@@>7cW*%+L-7@Qeg*cn_wX~2z<K?S4~ zlJ7I~%JQ>Qq1hjjPuvodOY(~<85w3ECl#ndh@l>dc_}%m#VS7e`ProfSjrKk&_&T0 zQdy9SMLBXN_D{-6O)jxUPA5<!oD*|$f-_4}tvMJx7#Wxu85KAfycijH8M%-kBLk0T zUS4XEb53G$acVI;gD)e4Du#ctd4rw7pOHZhzfwj9Hi(}Y6d5=em>3us7#WyA#Tx?y z0}}%y11p0810#bW0|P@313Lo;s36kP*3p$@kz|!*+s?qKCCR>(fqf%bwGjgY10Mr3 z0|Ns)11|#ygD?XpgE0dGLl8tCg9(Ev0|<zKN)ZM|kXfKS4z^VUR0@Liihv3t1{Sca z41*8@E10Fjz{9`>W^ps{Ft9T)f{GW2%NR?cE?XwV>m$VLE5z%kwS|G-ibaxTpBXE& z8Jj4ZDC;5yNl6w_HX|!`ZAtcB48jZyJ}qpF%l|*q+QJ}?OQ{Z2sV`iq6fUK@P^Erw zrLx-?6t%W6sB7!!YHeZA(%QnnzKcPZfnfs!0|PSyD6GsFco`TNco~=(_!!t2_!&4E z1Q}Ergc$S~1Q|>iL>K}XL>VF(L>S^3#2Km?Bp6y4#2LC6q`_h8!NAU-%D~BB1`dq? zII9}YVqjPX4RL0M#SG>QJPeEsYzzw+EEsqgm>4)2<}z3^@GvklSTQg#7&EZ_XAoy# zXJ_DGXRwALTSi6(h93+v{}_1L8EhFDQJD<P40hmXw`XtwM?4dQBLgFYJDBuj@Md6O Q;9_88@L}*{2w;!|04s#@od5s; literal 0 HcmV?d00001 -- GitLab