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: }