Implement a PhoneBook using HashMap.
Hint: Create the following classes:
The user should be prompted with the following menu
Hint: Create the following classes:
- Person Class contains firstName and surName.
- PhoneNumber Class contains areaCode and number.
- BookEntry contains Person object and PhoneNumber object.
- PhoneBook contains a HashMap<Person,BookEntry>.
- TestPhoneBook Class contains main() to do the following:
The user should be prompted with the following menu
- Enter 1 to add a new phonebook entry
- Enter 2 to find the number for a name.
- Enter 3 to find name for a number
- Enter 9 to quit
SOLUTION:
import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; import java.util.Scanner; import java.util.Set; public class PhoneBook { public static void main(String[] args) { String fname,lname; Scanner input=new Scanner(System.in); PhoneBook ph=new PhoneBook(); int acode,number,ch=0; do{ System.out.println("Select a choice\n1:Add a new phonebook entry\n2:Find number\n3:Find name for a number\n4:Display phonebook\n5:Exit\n"); try{ ch=input.nextInt(); }catch (Exception e) { System.out.println("Sorry you entered string .....program is terminated..."); break; } switch(ch){ case 1 : System.out.println("Enter the first name: "); fname=input.next(); System.out.println("Enter the last name: "); lname=input.next(); System.out.println("Enter the areacode: "); acode=input.nextInt(); System.out.println("Enter phone number: "); number=input.nextInt(); if(ph.doEntry(fname, lname, acode, number)==true) System.out.println("Record successfully saved.\n"); else System.out.println("Phone number repeated.\n"); break; case 2: System.out.println("Enter the name"); fname=input.next(); boolean bb=true; int a[]=ph.findNumber(fname); for(int i : a){ if(i!=0){ System.out.println("Firstname :"+fname+"\nNumber: "+i+"\n"); bb=false; } } if(bb) System.out.println("No record found..."); break; case 3: System.out.println("Enter the number for name : "); number=input.nextInt(); String ss=ph.findName(number); if(ss.length()==0){ System.out.println("No record found"+"\n"); } else System.out.println("Name is : "+ph.findName(number)+"\n"); break; case 4: ph.display(); break; case 5 : break; default: System.out.println("Invalid input!!"); } }while(ch!=9); } } class Person{ String fname; String lname; Person(String fname,String lname){ this.fname=fname; this.lname=lname; } } class PhoneNumber{ int acode,number; public PhoneNumber(int acode,int number) { this.acode=acode; this.number=number; } } class BookEntry{ Person p; PhoneNumber pn; BookEntry(Person p,PhoneNumber pn){ this.p=p; this.pn=pn; } } class PhoneBook{ HashMap map=new HashMap(); Map.Entry map1; Collection c; Iterator it,it1; Person p; Set s; BookEntry b,b1; boolean check; PhoneNumber pn; public boolean doEntry(String fname,String lname,int acode,int number){ p=new Person(fname, lname); pn=new PhoneNumber(acode, number); b=new BookEntry(p, pn); check=true; s=map.entrySet(); it=s.iterator(); while (it.hasNext() ) { map1=(Map.Entry)it.next(); b1=(BookEntry)map1.getValue(); if(b1.pn.number==number){ check=false; break; } } if(check){ map.put(p,b); } return check; } public void display(){ s=map.entrySet(); it=s.iterator(); System.out.println("\n"); System.out.printf("%-15s%-15s%-15s%-15s\n","First name","Last name", "Areacode","Phone number"); while(it.hasNext()){ map1=(Map.Entry)it.next(); b=(BookEntry)map1.getValue(); System.out.printf("%-15s%-15s%-15s%-15s",b.p.fname,b.p.lname,b.pn.acode,b.pn.number); System.out.println(); } System.out.println("\n"); } public int[] findNumber(String fname) { int a[]=new int[map.size()]; int i=0; s=map.entrySet(); it=s.iterator(); while ( it.hasNext() ) { map1=(Map.Entry)it.next(); b=(BookEntry)map1.getValue(); if(b.p.fname.equals(fname)){ a[i]=b.pn.number; i++; } } return a; } public String findName(int number){ String st=""; s=map.entrySet(); it=s.iterator(); while ( it.hasNext() ) { map1=(Map.Entry)it.next(); b=(BookEntry)map1.getValue(); if(b.pn.number==number){ st=b.p.fname; } } return st; } public void sort(){ s=map.entrySet(); LinkedList lt=(LinkedList)s; Collections.sort(lt); } }
No comments:
Post a Comment