Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers from a file (directory.txt) that contains the numbers in random order. Handle lookups by name and also reverse lookups by phone number. Use a binary search for both lookups. A driver program and templates have been created for you.

Respuesta :

Answer:

Here is the JAVA program:

Items.java

public class Item {  // Item class

private String name, ph_num;  // class data members name to hold the name and ph_num stores the telephone numbers

public Item(String fullName, String PhoneNo){  //constructor of Item class , so fields full name and ph_num can be initialized when the object is created

name = fullName;  // holds the name field

ph_num = PhoneNo;}  //holds the telephone number

public String getFullName(){  // accessor method to get access to the name field

return name;}  //returns the name from directory

public String getPhoneNo(){  //accessor method to get access to the ph_nujm field

return ph_num; } } //returns the telephone number

Explanation:

LookupTable.java

public class LookupTable{  //class name

private ArrayList<Item> data;  // dynamic array list named data of Item class. This array list stores the names and telephone numbers from file

public LookupTable(){  //default constructor

data = new ArrayList<Item>();}  // creates an array list of Item type which holds the names and phone numbers

public void read(Scanner in){  // Scanner class object is created and this class is used to read input and the method reads the names and phone numbers

while(in.hasNext()){  // the loop moves through each line of the file. scanner class method hasNext checks for the tokens in the input

String name = in.nextLine();  // scans for the name in the input

String ph_num = in.nextLine();  //scans for the phone numbers in the input

data.add(new Item(name, ph_num));}}  // adds the names and phone number in to the Array list

public String lookup(String k){  //method looks up for an item in the table.  param k is the key to find . returns the value with the given key, or null if no       such item was found

String result = null;  //result initialized to to null

for(Item item: data){  //creates Item object and traverses the array list for each item i.e. name or phone numbers

if(k.equals(item.getFullName())){  //access the getFullName method through object item and checks if that name matches the key to find.

result = item.getPhoneNo();}}  //gets the corresponding phone number and assigns it to result variable

return result;}  //returns the result containing the phone number

public String reverseLookup(String v){  //Looks up an item in the table. param v is the value to find . returns the key with the given value, or null if no  such item was found. This method performs the lookup through phone number

String result = null;  //result is set to null to start

for(Item item: data){  //Traversing list through the for each item in data  

if(v.equals(item.getPhoneNo())){  //if the value of v is equal to the phone number accessed by using accessor method and object item

result = item.getFullName();}}  //accesses the corresponding name of that phone number and assigns it to the result

return result;}}  //returns the result                                

The data from directory file which contains the number and names. The LookupTable class has a method lookup which handles the lookups by names and the method reverseLookup that handles the lookups by phone number.  

Ver imagen mahamnasir
Ver imagen mahamnasir
Ver imagen mahamnasir
Ver imagen mahamnasir
Ver imagen mahamnasir