diff --git a/tp/src/main/java/org/example/Contact.java b/tp/src/main/java/org/example/Contact.java index 15b12ef02297955d58f1f44f7dc78fa4dad89cc9..590b07c3f556f13bf006470bde5c0e0ca94908ee 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 0000000000000000000000000000000000000000..b5266bc4e56a2f52b0ce2e422a2eabf07186c6c6 --- /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 0000000000000000000000000000000000000000..16e8c74067b4f18447310337e8126feecc154f22 --- /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 d82ac5a22153c8eba43c4edb1e5455effac746c7..65e89b86a253954d1242d88e377e84e5d5ceba2c 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 0000000000000000000000000000000000000000..bdb6496fc2f3647a43c0e41db510f52f71404647 --- /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 Binary files a/tp/target/classes/org/example/Contact.class and b/tp/target/classes/org/example/Contact.class differ 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 Binary files /dev/null and b/tp/target/classes/org/example/Family.class differ 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 Binary files /dev/null and b/tp/target/classes/org/example/Friend.class differ diff --git a/tp/target/classes/org/example/Main.class b/tp/target/classes/org/example/Main.class index 611c4014bad05fc0a784690238cdc1e343376535..26c69ecfe8a389705cae4a52d07bc900fb788bde 100644 Binary files a/tp/target/classes/org/example/Main.class and b/tp/target/classes/org/example/Main.class differ 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 Binary files /dev/null and b/tp/target/classes/org/example/Professional.class differ