// ------- assign.h #ifndef ASSIGN_H #define ASSIGN_H #include "parody.h" #include "personel.h" // ===================================== // AssignmentNo class // concatenated primary key // ===================================== class AssignmentKey : public Key { EmployeeNo emplno; ProjectNo projno; int operator> (Key &key); int operator== (Key &key); Key& operator= (Key &key); void Write(fstream& ndx); void Read(fstream& ndx); Key *Make() { return new AssignmentKey(); } Bool isNullValue() { return (Bool) (EmplNo() == 0 && ProjNo() == 0); } friend class Assignment; public: AssignmentKey(int en = 0, int pn = 0) : emplno(en), projno(pn) { /* null */} int EmplNo() { return emplno.EmplNo(); } int ProjNo() { return projno.ProjNo(); } void SetEmplNo(int en) { emplno.SetEmplNo(en); } void SetProjNo(int pn) { projno.SetProjNo(pn); } }; // ===================================== // Assignment class // employee/project assignment // ===================================== class Assignment : public Persistent { AssignmentKey assignment; int hours_expended; void Read(); void Write(); public: Assignment(int en = 0, int pn = 0); ~Assignment(); int ProjNo() { return assignment.projno.ProjNo(); } int EmplNo() { return assignment.emplno.EmplNo(); } ProjectNo& ProjKey() { return assignment.projno; } EmployeeNo& EmplKey() { return assignment.emplno; } int Hours() { return hours_expended; } void SetHours(int hrs); void AddHours(int hrs); void SetEmplNo(int en) { assignment.SetEmplNo(en); } void SetProjNo(int pn) { assignment.SetProjNo(pn); } // ----- user interface functions void Display(); void DetailDisplay(); void Input(); static Assignment *Get(); static Assignment *GetExisting(); static void Header(); }; inline void Assignment::SetHours(int hrs) { hours_expended = hrs; ChangeObject(); } inline void Assignment::AddHours(int hrs) { hours_expended += hrs; ChangeObject(); } #endif