/* * Author: Bradford Fisher * Date: April 11, 2007 * Project: CS 241 (Project 1) - AddressBook Class * Description: This class stores and manipulates an array of persons and their addresses. */ // -- Import Statements import java.io.*; import java.util.ArrayList; import java.util.Scanner; public class AddressBook { // -- Fields private ArrayList addrList; // -- Constructors public AddressBook() { addrList = new ArrayList(); } public AddressBook(String inputFile) throws IOException { addrList = new ArrayList(); File file = new File(inputFile); Person quickPerson; Scanner bookFile = new Scanner(file); String line; String[] splitLine = new String[3]; while (bookFile.hasNext()) { line = bookFile.nextLine(); splitLine = line.split("~"); quickPerson = new Person(); quickPerson.setFirstName(splitLine[0]); quickPerson.setLastName(splitLine[1]); quickPerson.setAddress(splitLine[2]); addrList.add(quickPerson); } } // -- Accessor Methods private int locate(String fName, String lName) { boolean exists = false; int i = 0; if (addrList.size() != 0) { while (!exists && i < addrList.size()) { if (addrList.get(i).getFirstName().equals(fName) && addrList.get(i).getLastName().equals(lName)) exists = true; else { exists = false; i++; } } } if (!exists) return -1; else return i; } public String findAddress(String fName, String lName) { if (locate(fName, lName) == -1) return "No address available!"; else return addrList.get(locate(fName, lName)).getAddress(); } public void printBook() { int i = 0; if (addrList.size() != 0) { do { System.out.println(addrList.get(i).toString()); i++; } while (i < addrList.size()); } else System.out.println("No entries available for printing!"); } // -- Mutator Methods public boolean addPerson(Person per) { if (locate(per.getFirstName(), per.getLastName()) == -1) { addrList.add(per); return true; } else return false; } public boolean removePerson(String fName, String lName) { if (locate(fName, lName) == -1) return false; else { addrList.remove(locate(fName, lName)); return true; } } public void sortBook() { Person tempPer; for (int i = 0; i < addrList.size()-1; i++) { if (addrList.get(i+1).getLastName().compareTo(addrList.get(i).getLastName()) < 0) { tempPer = addrList.get(i+1); addrList.set(i+1, addrList.get(i)); addrList.set(i, tempPer); } if (addrList.get(i+1).getLastName().compareTo(addrList.get(i).getLastName()) == 0) { for (int j = 0; j < addrList.size()-1; j++) { if (addrList.get(j+1).getFirstName().compareTo(addrList.get(j).getFirstName()) < 0) { tempPer = addrList.get(j+1); addrList.set(j+1, addrList.get(j)); addrList.set(j, tempPer); } } } } } // -- General Methods public void printInfo() { System.out.println(); System.out.println("Author: Bradford Fisher"); System.out.println("Date: April 11, 2007"); System.out.println("Project: CS 241 (Project) - AddressBook Class"); System.out.println("Description: This class interacts with the Person class to maintain an array"); System.out.println(" of persons and their associated addresses."); } public void printMenu() { System.out.println(); System.out.println("Menu (Choose from one of the following options)"); System.out.println("Usage statements follow each item's description"); System.out.println("-----------------------------------------------"); System.out.println("a - add a new person (a firstname lastname address)"); System.out.println("f - find an address (f firstname lastname)"); System.out.println("p - print the address book (p)"); System.out.println("r - remove a person (r firstname lastname)"); System.out.println("s - sort the address book by name (s)"); System.out.println("q - quit (q)"); System.out.println(); System.out.print("Please enter your choice here: "); } public static void main(String[] args) throws IOException { AddressBook book = new AddressBook(); char charChoice; Person userPer; Scanner keyboard = new Scanner(System.in); String userChoice; String[] splitChoice = new String[4]; book.printInfo(); do { book.printMenu(); userChoice = keyboard.nextLine(); splitChoice = userChoice.split(" ", 4); charChoice = splitChoice[0].charAt(0); switch (charChoice) { case 'a': userPer = new Person(splitChoice[1], splitChoice[2], splitChoice[3]); book.addPerson(userPer); break; case 'f': System.out.println(book.findAddress(splitChoice[1], splitChoice[2])); break; case 'p': book.printBook(); break; case 'r': book.removePerson(splitChoice[1], splitChoice[2]); break; case 's': book.sortBook(); break; default: System.out.println("The choice you have entered is not available!"); } } while (charChoice != 'q'); } }