Phone book application
Description In this assignment (HW4), you will implement a program that verifies the format of a list of phone numbers and prints the list in alphabetical order.
Phone book program specification The phone book program will read a list of names and phone numbers from a phone list file. The name of the phone list file will be given as a command line argument. The program will read entries from the phone list file and check that they conform to the format described below. It will print error messages and exit if the entries do not follow the expected format. If no format errors are found, it will print the phone list on standard output in alphabetical order by last name and first name, i.e. in such a way that entries are sorted by first name if last names are the same.
Phone list format A phone list file consists of one record per line. Each line consists of three tokens: a last name followed by a first name, followed by a phone number written in the format ddd-ddd-dddd where d is a digit in [0-9]. These three tokens are separated by one or more white spaces. The first name and last name tokens should consist of characters in the set [a-zA-Z]. It can be assumed that each line in the phone list file will contain three tokens. However, first names, last names and numbers may be incorrectly formatted.
Error conditions The following error conditions must be detected and reported by the phone book program: Missing phone list file If the file given as a command line argument is missing, the program should print file not found and exit. Invalid characters in the last name If the last name contains characters that are not in [a-zA-Z], the program should print invalid characters in last name and exit. Invalid characters in the first name If the first name contains characters that are not in [a-zA-Z], the program should print invalid characters in first name
and exit. Invalid number format If the phone number does not conform to the format “ddd-ddd-dddd” where d is a digit in [0,9], the program should print invalid number format and exit. Duplicate entries If an entry in the phone list has the same first name and last name as a previous entry, it should be ignored (even if the phone number is different). The above error messages should be printed on stdout. Do not use stderr.
Implementation The program must use a class Person that encapsulates the last name, first name and phone number of a person. The file Person.h is provided and should not be modified. Use the isalpha and isdigit functions in the implementation of the constructor of the Person class to check that the first and last names consist of characters in [a-zA-Z] and that the number contains digits and the character ’-’ in the appropriate places. The program should use the STL set container to store instances of persons. Use the property of the set container that elements are automatically sorted as they are inserted. You will have to define operator< for the Person class so as to properly order two persons who have the same last name but different first names. You can rely on lexicographical order as defined in the STL string class when comparing strings. Do not use C++11 or C++14 features in your source files.
HW4 Assignment You task is to implement the files Person.cpp and phonebook.cpp. The file phonebook.cpp should contain the main function. The Makefile is provided and should not be modified. The phonebook executable should be built using the command $ make You will use the phonebook executable and the phone list files and output test files provided on the web site http://web.cs.ucdavis.edu/~fgygi/ecs40/homework/hw4 to check the functionality of your program and verify that your program reproduces the test output exactly. Use the diff command to compare your output files with the reference test output files. Note that other test files may also be used when grading your implementation. The phonebook program takes a command line argument and writes to stdout. It can be used e.g. as $ ./phonebook list1.txt > list1.out
Submission Create a tar file named hw4.tar containing the files Person.h Person.cpp phonebook.cpp and Makefile . Submit your project using: $ handin cs40 hw4 hw4.tar
Applied Sciences
Architecture and Design
Biology
Business & Finance
Chemistry
Computer Science
Geography
Geology
Education
Engineering
English
Environmental science
Spanish
Government
History
Human Resource Management
Information Systems
Law
Literature
Mathematics
Nursing
Physics
Political Science
Psychology
Reading
Science
Social Science
Home