Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Main.java
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- // Start your program here
- // ATTENTION: In your program, you can create only one instance of class Scanner!
- Scanner reader = new Scanner(System.in);
- Phonebook phoneBook = new Phonebook(reader);
- System.out.println("phone search");
- System.out.println("available operations: ");
- System.out.println(" 1 add a number");
- System.out.println(" 2 search for a number");
- System.out.println(" 3 search for a person by phone number");
- System.out.println(" 4 add an address");
- System.out.println(" 5 search for personal information");
- System.out.println(" 6 delete personal information");
- System.out.println(" 7 filtered listing");
- System.out.println(" x quit");
- while (true) {
- System.out.println(""); // helps formatting for testing
- System.out.print("command: ");
- String userCommand = reader.nextLine();
- if (userCommand.equalsIgnoreCase("1")) {
- phoneBook.addNumber();
- } else if (userCommand.equalsIgnoreCase("2")) {
- phoneBook.searchNumberByName();
- } else if (userCommand.equalsIgnoreCase("3")) {
- phoneBook.searchByPhoneNumber();
- } else if (userCommand.equalsIgnoreCase("4")) {
- phoneBook.addAddress();
- } else if (userCommand.equalsIgnoreCase("5")) {
- phoneBook.searchPersonalInfoByName();
- } else if (userCommand.equalsIgnoreCase("6")) {
- phoneBook.deletePersonInformation();
- } else if (userCommand.equalsIgnoreCase("7")) {
- phoneBook.searchByKeyword();
- } else if (userCommand.equalsIgnoreCase("x")) {
- break;
- }
- }
- }
- }
- Phonebook.java
- import java.util.Set;
- import java.util.HashSet;
- import java.util.Map;
- import java.util.HashMap;
- import java.util.Scanner;
- import java.util.Collection;
- import java.util.Collections;
- import java.util.ArrayList;
- import java.util.Comparator;
- public class Phonebook {
- private Map<String, Person> phoneBook = new HashMap<String, Person>();
- private Scanner reader;
- public Phonebook(Scanner reader) {
- this.reader = reader;
- }
- public void addNumber() {
- System.out.print("whose number: ");
- String name = reader.nextLine();
- if (phoneBook.containsKey(name)) { // Checks if 'phoneBook' already contains 'name'...
- Person toHaveAnotherNumberAdded = phoneBook.get(name); // if so, it retrieves the 'Person' object from 'phoneBook', and assigns it to a temporary variable.
- System.out.print("number: "); // Asks user for the new additional number...
- String number = reader.nextLine();
- toHaveAnotherNumberAdded.addPhoneNumber(number); // It then adds the number to 'Set<String> phoneNumbers' inside of 'toHaveAnotherNumberAdded'
- phoneBook.replace(name, toHaveAnotherNumberAdded);
- } else {
- 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'
- String number = reader.nextLine();
- Person newPerson = new Person(name);
- newPerson.addPhoneNumber(number);
- phoneBook.put(name, newPerson);
- }
- }
- public void addAddress() {
- System.out.print("whose address: "); // Asks for 'name';
- String name = reader.nextLine();
- System.out.print("street: ");
- String address = reader.nextLine(); // Combines street and city into one 'address' string.
- System.out.print("city: ");
- address += " " + reader.nextLine();
- if (phoneBook.containsKey(name)) { // If 'Person' object already exists, it updates the existing address.
- Person toHaveAddressAdded = phoneBook.get(name);
- toHaveAddressAdded.setAddress(address);
- phoneBook.replace(name, toHaveAddressAdded);
- System.out.println("");
- } else {
- Person toHaveAddressAdded = new Person(name); // If 'Person' object does not already exist, it creates a new 'Person' object, and then maps it to 'phoneBook'.
- toHaveAddressAdded.setAddress(address);
- phoneBook.put(name, toHaveAddressAdded);
- System.out.println("");
- }
- }
- public void deletePersonInformation() {
- System.out.print("whose information: ");
- String name = reader.nextLine();
- if (!phoneBook.containsKey(name)) {
- System.out.println(" no information found");
- } else {
- phoneBook.remove(name);
- }
- }
- public void searchPersonalInfoByName() {
- System.out.print("whose information: ");
- String name = reader.nextLine();
- if (!phoneBook.containsKey(name)) { // returns "no information found" if empty, otherwise retrieves the information using the toString method
- System.out.println(" not found");
- } else {
- System.out.print(phoneBook.get(name).toString());
- }
- }
- public void searchNumberByName() {
- System.out.print("whose number: ");
- String name = reader.nextLine();
- if (phoneBook.containsKey(name)) {
- Set<String> numbers = phoneBook.get(name).getPhoneNumbersSet();
- for (String number : numbers) {
- System.out.println(" " + number);
- }
- } else {
- System.out.println(" not found");
- }
- }
- public void searchByPhoneNumber() {
- System.out.print("number: ");
- String number = reader.nextLine();
- int returnOrNot = 0;
- for (Person person : phoneBook.values()) {
- Set<String> phoneNumbers = person.getPhoneNumbersSet();
- if (phoneNumbers.contains(number)) {
- System.out.println(" " + person.getName());
- returnOrNot = 1;
- }
- }
- if (returnOrNot == 1) {
- return;
- } else {
- System.out.println(" not found");
- }
- }
- public void searchByKeyword() {
- System.out.print("keyword (if empty, all listed): ");
- String keyword = reader.nextLine();
- ArrayList<Person> people = new ArrayList<Person>(phoneBook.values());
- ArrayList<Person> matchedPeople = new ArrayList<Person>();
- if (keyword.isEmpty()) {
- for (Person person : people) {
- System.out.println(" " + person.getName() + "/n" + person.toString());
- }
- return;
- }
- for (Person person : people) {
- if (person.getName().contains(keyword) || person.getAddress().contains(keyword)) {
- matchedPeople.add(person);
- }
- }
- Collections.sort(matchedPeople, new Comparator<Person>() {
- public int compare(Person p1, Person p2) {
- return p1.getName().compareTo(p2.getName());
- }
- });
- if (matchedPeople.isEmpty()) {
- System.out.println(" not found");
- return;
- }
- for (Person person : matchedPeople) {
- System.out.println(" " + person.getName() + "/n" + person.toString());
- }
- }
- }
- Person.java
- import java.util.Set;
- import java.util.HashSet;
- public class Person {
- private String address;
- private String name;
- private Set<String> phoneNumbers = new HashSet<String>();
- public Person(String name) {
- this.name = name;
- }
- public String getAddress() {
- if (address == null) {
- return " address unknown";
- }
- return " address: " + address;
- }
- public Set<String> getPhoneNumbersSet() {
- return phoneNumbers;
- }
- public String getName() {
- return name;
- }
- public String getPhoneNumbers() {
- String phoneNumbersString = "";
- if (phoneNumbers.isEmpty() || phoneNumbers == null) {
- phoneNumbers = new HashSet<String>();
- phoneNumbersString += " phone number not found";
- } else {
- phoneNumbersString += " phone numbers:\n";
- for (String phoneNumber : phoneNumbers) {
- phoneNumbersString += " " + phoneNumber + "\n";
- }
- }
- return phoneNumbersString;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public void setName(String name) {
- this.name = name;
- }
- public void addPhoneNumber(String phoneNumber) {
- phoneNumbers.add(phoneNumber);
- }
- public String toString() {
- String toString = getAddress() + "\n" + getPhoneNumbers();
- return toString;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement