158k views
3 votes
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.

User Maralbjo
by
7.3k points

1 Answer

2 votes

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

Step-by-step 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.

Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers-example-1
Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers-example-2
Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers-example-3
Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers-example-4
Write a telephone lookup program. Read a data set of 1,000 names and telephone numbers-example-5
User Greg Elin
by
7.2k points