// // NAME // asgn3.cpp // // DESCRIPTION // This file contains the functions in the Main module. // This module contains the top-level functions of the program. // They display a menu, read the user input, and carry out the // user's request. // // // Include files. // #include <iostream.h> #include <ctype.h> #include "bool.h" #include "person.h" #include "plist.h" // // Function prototypes. // static void displayMenu(); static void doAdd(plist lists[]); static void doPrint(plist lists[]); static void doEmpty(plist lists[]); static void doCopy(plist lists[]); // // Constants. // const int NumOfLists = 2; // Number of lists. // // NAME // main // // DESCRIPTION // This function is the top-level function of the program. It // displays a menu, reads the user's input, then carries out the // user's request. // // PARAMETERS // (none) // // RETURNS // 0 // int main() { char choice = '1'; bool done = false; plist lists[NumOfLists]; while (!done) { displayMenu(); cin >> choice; switch (choice) { case '1': doAdd(lists); break; case '2': doPrint(lists); break; case '3': doEmpty(lists); break; case '4': doCopy(lists); break; case '5': done = true; break; } } return 0; } // // NAME // displayMenu // // DESCRIPTION // This function displays the menu to the standard output. // // PARAMETERS // (none) // // RETURNS // (none) // static void displayMenu() { cout << endl; cout << "1. Add person" << endl; cout << "2. Print list" << endl; cout << "3. Empty list" << endl; cout << "4. Copy list 1 to list 2" << endl; cout << "5. Quit" << endl; cout << endl; cout << "> "; return; } // // NAME // chooseList // // DESCRIPTION // This function prompts the user to choose a list, then // returns a reference to the chosen list. // // PARAMETERS // lists (in) - array of lists // // RETURNS // reference to the chosen list // static plist& chooseList(plist lists[]) { int choice; cout << endl; cout << "Which list (1 or 2): "; cin >> choice; return lists[choice-1]; } // // NAME // doAdd // // DESCRIPTION // This function reads a person from the standard input stream // then adds the person to a list of people selected from the // given array of lists. // // PARAMETERS // lists (in/out) - array of lists // // RETURNS // (none) // static void doAdd(plist lists[]) { int choice; person * p = NULL; cout << endl << "1) student, 2) instructor, or 3) programmer? "; cin >> choice; switch (choice) { case 1: p = new student(); break; case 2: p = new instructor(); break; case 3: p = new programmer(); break; } cout << endl; p->read(); chooseList(lists).addToEnd(p); delete p; return; } // // NAME // doPrint // // DESCRIPTION // This function outputs to the standard output stream a list // of people selected from the given array of lists. // // PARAMETERS // lists (in) - array of lists // // RETURNS // (none) // static void doPrint(plist lists[]) { cout << chooseList(lists); return; } // // NAME // doEmpty // // DESCRIPTION // This function empties a list of people selected from the // given array of lists. // // PARAMETERS // lists (in/out) - array of lists // // RETURNS // (none) // static void doEmpty(plist lists[]) { chooseList(lists).clearList(); return; } // // NAME // doCopy // // DESCRIPTION // This function copies the second list in the array to the // first array in the list. // // PARAMETERS // list (in/out) - array of lists // // RETURNS // (none) // static void doCopy(plist lists[]) { lists[1] = lists[0]; return; } // // End of file. //