Topical Information

This project will help you show your mastery of strings, vectors (esp. list management), classes, and libraries (as well as other things which came before).

Program Information

Write a program to handle a user's rolodex files. (A rolodex is a system with tagged cards each representing a 'contact' person. It would contain a name, address, and phone number. In this day and age, it would probably have at least one email address as well and possibly multiple phone numbers.)

Typical operations people want to do to a rolodex entry are:

    1) Add entry
    2) Edit entry
    3) Delete entry
    4) Search for entry
    5) Print all entries
    6) Quit

You can decide what the maximum number of rolodex entries is and how long each part of an entry is (name, address, etc.).

When they choose to edit an entry, give them the option of selecting from the current list entries or returning to the main menu.

Similarly for deleting an entry. Also note that when deleting an entry, you must move all following entries down to fill in the gap.

When they choose to search for an entry, go to a sub-menu:

    1) search by Name
    2) search by Address
    3) search by Phone number
    4) search by Email address
    5) Return to Main Menu

All searches are to be content searches. (In other words, if the rolodex contains a person named Bob Jones, this person should be found by searches by name of: ob, ob J, Jones, etc. as well as of Bob Jones.) (And not just for names. This should apply to email searches, phone number searches, et al.)

Question: Should you print all matches to a search or just the first one?

All menus are to be choose-able by both number and capitalized letter(s).


Hint: You'll only have one class — most likely. It might look something like this:

    class RolodexEntry
    {
        string fname, lname;  // together or separate?
        string street, town, state;
        long zip;
        short zip_4;
        string phone,  // or 3 short's?  (area, exchange, line)
               email;
    public:
        // ...ctor's, accessors, mutators, i/o, equality, etc.
    };

(But see the options below...)

Hint: This class should have its own library. Other libraries may also be used for collections of functions (like searching a list, etc.).

This assignment is (Level 6).

Options


Total Level Possible

If you did all above options, this project could be worth as much as (Level 15.5).