    01: #include <string>
    02: #include <iostream>
    03:
    04: using namespace std;
    05:
    06: #include "ccc_empl.h"
    07:
    08: /**
    09:    A department in an organization.
    10: */
    11: class Department
    12: {
    13: public:
    14:    Department(string n);
    15:    void set_receptionist(Employee* e);
    16:    void set_secretary(Employee* e);
    17:    void print() const;
    18: private:
    19:    string name;
    20:    Employee* receptionist;
    21:    Employee* secretary;
    22: };
    23:
    24: /**
    25:    Constructs a department with a given name.
    26:    @param n the department name
    27: */
    28: Department::Department(string n)
    29: {
    30:    name = n;
    31:    receptionist = NULL;
    32:    secretary = NULL;
    33: }
    34:
    35: /**
    36:    Sets the receptionist for this department.
    37:    @param e the receptionist
    38: */
    39: void Department::set_receptionist(Employee* e)
    40: {
    41:    receptionist = e;
    42: }
    43:
    44: /**
    45:    Sets the secretary for this department.
    46:    @param e the secretary
    47: */
    48: void Department::set_secretary(Employee* e)
    49: {
    50:    secretary = e;
    51: }
    52:
    53: /**
    54:    Prints a description of this department.
    55: */
    56: void Department::print() const
    57: {
    58:    cout << "Name: " << name << "\n"
    59:         << "Receptionist: ";
    60:    if (receptionist == NULL)
    61:       cout << "None";
    62:    else
    63:       cout << receptionist->get_name() << " "
    64:            << receptionist->get_salary();
    65:    cout << "\nSecretary: ";
    66:    if (secretary == NULL)
    67:       cout << "None";
    68:    else if (secretary == receptionist)
    69:       cout << "Same";
    70:    else
    71:       cout << secretary->get_name() << " "
    72:            << secretary->get_salary();
    73:    cout << "\n";
    74: }
    75:
    76: int main()
    77: {
    78:    Department shipping("Shipping");
    79:    Department qc("Quality Control");
    80:    Employee* harry = new Employee("Hacker, Harry", 45000);
    81:    shipping.set_secretary(harry);
    82:    Employee* tina = new Employee("Tester, Tina", 50000);
    83:    qc.set_receptionist(tina);
    84:    qc.set_secretary(tina);
    85:    tina->set_salary(55000);
    86:    shipping.print();
    87:    qc.print();
    88:
    89:    return 0;
    90: }