Advertisement
Guest User

Untitled

a guest
Jan 5th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.11 KB | None | 0 0
  1. Main.java
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.  
  7.     public static void main(String[] args) {
  8.         // Start your program here
  9.         // ATTENTION: In your program, you can create only one instance of class Scanner!
  10.         Scanner reader = new Scanner(System.in);
  11.         Phonebook phoneBook = new Phonebook(reader);
  12.        
  13.         System.out.println("phone search");
  14.         System.out.println("available operations: ");
  15.         System.out.println(" 1 add a number");
  16.         System.out.println(" 2 search for a number");
  17.         System.out.println(" 3 search for a person by phone number");
  18.         System.out.println(" 4 add an address");
  19.         System.out.println(" 5 search for personal information");
  20.         System.out.println(" 6 delete personal information");
  21.         System.out.println(" 7 filtered listing");
  22.         System.out.println(" x quit");
  23.        
  24.         while (true) {
  25.             System.out.println(""); // helps formatting for testing
  26.             System.out.print("command: ");
  27.            
  28.             String userCommand = reader.nextLine();
  29.            
  30.             if (userCommand.equalsIgnoreCase("1")) {
  31.                 phoneBook.addNumber();
  32.             } else if (userCommand.equalsIgnoreCase("2")) {
  33.                 phoneBook.searchNumberByName();
  34.             } else if (userCommand.equalsIgnoreCase("3")) {
  35.                 phoneBook.searchByPhoneNumber();
  36.             } else if (userCommand.equalsIgnoreCase("4")) {
  37.                 phoneBook.addAddress();
  38.             } else if (userCommand.equalsIgnoreCase("5")) {
  39.                 phoneBook.searchPersonalInfoByName();
  40.             } else if (userCommand.equalsIgnoreCase("6")) {
  41.                 phoneBook.deletePersonInformation();
  42.             } else if (userCommand.equalsIgnoreCase("7")) {
  43.                 phoneBook.searchByKeyword();
  44.             } else if (userCommand.equalsIgnoreCase("x")) {
  45.                 break;
  46.             }
  47.         }
  48.     }
  49. }
  50.  
  51. Phonebook.java
  52.  
  53. import java.util.Set;
  54. import java.util.HashSet;
  55. import java.util.Map;
  56. import java.util.HashMap;
  57. import java.util.Scanner;
  58. import java.util.Collection;
  59. import java.util.Collections;
  60. import java.util.ArrayList;
  61. import java.util.Comparator;
  62.  
  63. public class Phonebook {
  64.  
  65.     private Map<String, Person> phoneBook = new HashMap<String, Person>();
  66.     private Scanner reader;
  67.  
  68.     public Phonebook(Scanner reader) {
  69.         this.reader = reader;
  70.     }
  71.  
  72.     public void addNumber() {
  73.  
  74.         System.out.print("whose number: ");
  75.         String name = reader.nextLine();
  76.  
  77.         if (phoneBook.containsKey(name)) { // Checks if 'phoneBook' already contains 'name'...
  78.             Person toHaveAnotherNumberAdded = phoneBook.get(name); // if so, it retrieves the 'Person' object from 'phoneBook', and assigns it to a temporary variable.    
  79.             System.out.print("number: "); // Asks user for the new additional number...
  80.             String number = reader.nextLine();
  81.  
  82.             toHaveAnotherNumberAdded.addPhoneNumber(number); // It then adds the number to 'Set<String> phoneNumbers' inside of 'toHaveAnotherNumberAdded'
  83.             phoneBook.replace(name, toHaveAnotherNumberAdded);
  84.  
  85.         } else {
  86.  
  87.             System.out.print("number: "); // If phoneBook does not already contain variable 'name', asks the user for a number and then greates a new 'Person' object with 'name'
  88.             String number = reader.nextLine();
  89.  
  90.             Person newPerson = new Person(name);
  91.             newPerson.addPhoneNumber(number);
  92.             phoneBook.put(name, newPerson);
  93.         }
  94.     }
  95.  
  96.     public void addAddress() {
  97.  
  98.         System.out.print("whose address: "); // Asks for 'name';
  99.         String name = reader.nextLine();
  100.  
  101.         System.out.print("street: ");
  102.         String address = reader.nextLine(); // Combines street and city into one 'address' string.
  103.         System.out.print("city: ");
  104.         address += " " + reader.nextLine();
  105.  
  106.         if (phoneBook.containsKey(name)) { // If 'Person' object already exists, it updates the existing address.
  107.  
  108.             Person toHaveAddressAdded = phoneBook.get(name);
  109.             toHaveAddressAdded.setAddress(address);
  110.             phoneBook.replace(name, toHaveAddressAdded);
  111.             System.out.println("");
  112.  
  113.         } else {
  114.             Person toHaveAddressAdded = new Person(name); // If 'Person' object does not already exist, it creates a new 'Person' object, and then maps it to 'phoneBook'.
  115.             toHaveAddressAdded.setAddress(address);
  116.             phoneBook.put(name, toHaveAddressAdded);
  117.             System.out.println("");
  118.         }
  119.     }
  120.  
  121.     public void deletePersonInformation() {
  122.  
  123.         System.out.print("whose information: ");
  124.         String name = reader.nextLine();
  125.  
  126.         if (!phoneBook.containsKey(name)) {
  127.             System.out.println("  no information found");
  128.         } else {
  129.             phoneBook.remove(name);
  130.         }
  131.  
  132.     }
  133.  
  134.     public void searchPersonalInfoByName() {
  135.         System.out.print("whose information: ");
  136.         String name = reader.nextLine();
  137.  
  138.         if (!phoneBook.containsKey(name)) { // returns "no information found" if empty, otherwise retrieves the information using the toString method
  139.             System.out.println("  not found");
  140.  
  141.         } else {
  142.             System.out.print(phoneBook.get(name).toString());
  143.         }
  144.  
  145.     }
  146.  
  147.     public void searchNumberByName() {
  148.  
  149.         System.out.print("whose number: ");
  150.         String name = reader.nextLine();
  151.  
  152.         if (phoneBook.containsKey(name)) {
  153.             Set<String> numbers = phoneBook.get(name).getPhoneNumbersSet();
  154.  
  155.             for (String number : numbers) {
  156.                 System.out.println(" " + number);
  157.             }
  158.         } else {
  159.             System.out.println("  not found");
  160.         }
  161.     }
  162.  
  163.     public void searchByPhoneNumber() {
  164.  
  165.         System.out.print("number: ");
  166.         String number = reader.nextLine();
  167.         int returnOrNot = 0;
  168.  
  169.         for (Person person : phoneBook.values()) {
  170.             Set<String> phoneNumbers = person.getPhoneNumbersSet();
  171.  
  172.             if (phoneNumbers.contains(number)) {
  173.                 System.out.println(" " + person.getName());
  174.                 returnOrNot = 1;
  175.             }
  176.         }
  177.  
  178.         if (returnOrNot == 1) {
  179.             return;
  180.         } else {
  181.             System.out.println(" not found");
  182.         }
  183.     }
  184.  
  185.     public void searchByKeyword() {
  186.         System.out.print("keyword (if empty, all listed): ");
  187.         String keyword = reader.nextLine();
  188.  
  189.         ArrayList<Person> people = new ArrayList<Person>(phoneBook.values());
  190.         ArrayList<Person> matchedPeople = new ArrayList<Person>();
  191.        
  192.         if (keyword.isEmpty()) {
  193.             for (Person person : people) {
  194.                 System.out.println(" " + person.getName() + "/n" + person.toString());
  195.             }
  196.             return;
  197.         }
  198.  
  199.         for (Person person : people) {
  200.             if (person.getName().contains(keyword) || person.getAddress().contains(keyword)) {
  201.                 matchedPeople.add(person);
  202.             }
  203.         }
  204.  
  205.         Collections.sort(matchedPeople, new Comparator<Person>() {
  206.             public int compare(Person p1, Person p2) {
  207.                 return p1.getName().compareTo(p2.getName());
  208.             }
  209.         });
  210.        
  211.         if (matchedPeople.isEmpty()) {
  212.             System.out.println(" not found");
  213.             return;
  214.         }
  215.        
  216.         for (Person person : matchedPeople) {
  217.             System.out.println(" " + person.getName() + "/n" + person.toString());
  218.         }
  219.     }
  220. }
  221.  
  222. Person.java
  223.  
  224. import java.util.Set;
  225. import java.util.HashSet;
  226.  
  227. public class Person {
  228.  
  229.     private String address;
  230.     private String name;
  231.     private Set<String> phoneNumbers = new HashSet<String>();
  232.  
  233.     public Person(String name) {
  234.         this.name = name;
  235.     }
  236.  
  237.     public String getAddress() {
  238.         if (address == null) {
  239.             return "  address unknown";
  240.         }
  241.         return "  address: " + address;
  242.     }
  243.  
  244.     public Set<String> getPhoneNumbersSet() {
  245.         return phoneNumbers;
  246.     }
  247.    
  248.     public String getName() {
  249.         return name;
  250.     }
  251.  
  252.     public String getPhoneNumbers() {
  253.         String phoneNumbersString = "";
  254.                                        
  255.         if (phoneNumbers.isEmpty() || phoneNumbers == null) {
  256.             phoneNumbers = new HashSet<String>();
  257.             phoneNumbersString += "  phone number not found";
  258.         } else {
  259.             phoneNumbersString += "  phone numbers:\n";
  260.             for (String phoneNumber : phoneNumbers) {
  261.                 phoneNumbersString += "   " + phoneNumber + "\n";
  262.             }
  263.         }
  264.         return phoneNumbersString;
  265.     }
  266.  
  267.     public void setAddress(String address) {
  268.         this.address = address;
  269.     }
  270.  
  271.     public void setName(String name) {
  272.         this.name = name;
  273.     }
  274.  
  275.     public void addPhoneNumber(String phoneNumber) {
  276.         phoneNumbers.add(phoneNumber);
  277.     }
  278.  
  279.     public String toString() {
  280.  
  281.         String toString = getAddress() + "\n" + getPhoneNumbers();
  282.  
  283.         return toString;
  284.     }
  285. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement