GUI Prototype Design
Professor Program Version 1
Main Form
Professor Dialog Form
Main Classes
Professor
class Professor
{
public:
Professor(const String &last ="", const String &first ="",
const String &init ="", const String &office ="",
const String &phone="", int rank =0);
int operator == (const String &)const; // used to find a given professor in array
int operator == (const Professor & p)const;
String completeList(); //complete listing of prof
//The following are needed to fill in entries in dialog box
// They are implemented as inline for speed. It is unlikely they will change
String name()const {return _firstName + " "+ _initial + " "+ _lastName;}
String first()const{return _firstName;} //return first name
String last()const{return _lastName;} // return last name
String initial()const {return _initial;} //return middle initial
String phone()const{return _phone;} //return phone number
String office()const{return _office;} //return office number as a String
int rank()const{return _rank;} // return rank as an int for combo box
// I/0 functions
void read(istream &);
void write(ostream &);
private:
String _lastName;
String _firstName;
String _initial;
String _office;
String _phone;
int _rank;
};
ProfList
class ProfList : public vector< Professor >
{
public:
String getDescription();
// I/O functions
void read(istream&);
void write(ostream&);
};
Main Functions
Professor Class Functions
Professor::Professor(const String &last,const String &first,
const String &init, const String & office,
const String &phone,int rank)
:_lastName(last),_firstName(first),_initial(init),_office(office),
_phone(phone),_rank(rank){}
int Professor::operator == (const String &name)const // used to find a given professor in array
{
return (name == _lastName) || // last name only
(name == _firstName +" "+ _lastName) || // John Smith
(name == _lastName +", "+_firstName) || //Smith, John
(name == _firstName + " "+ _initial+". "+_lastName) || // John Q. Smith
(name == _lastName +", "+_firstName + " " + _initial + "."); //Smith, John Q.
}
int Professor::operator == (const Professor & p)const
{
return (p._lastName == _lastName) && (p._firstName == _firstName)&&
(p._initial == _initial);
}
String Professor::completeList()
{
char* rank[] = {"Lecturer","Assistant","Associate","Full"};
return _firstName+" " + _initial + " " + _lastName
+"\t\t" + _phone + "\t\t" + _office + "\t\t" + rank[_rank];
}
void Professor::read(istream &in)
{
_lastName = myReadLine(in);
_firstName = myReadLine(in);
_initial = myReadLine(in);
_office = myReadLine(in);
_phone = myReadLine(in);
in >>_rank;
}
void Professor::write(ostream &out)
{
out < <_lastName.c_str() < < endl;
out < < _firstName.c_str() << endl;
out < < _initial.c_str() < < endl;
out < < _office.c_str() < < endl;
out < < _phone.c_str() < < endl;
out < < _rank < < endl;
}
ProfessorList Class Functions
void ProfList::read(istream &in)
{
erase(begin(), end());
int size;
in >> size;
for(int i = 0;i< size ;i++)
{
Professor p;
p.read(in);
push_back(p);
}
}
void ProfList::write(ostream &out)
{
out < < size() < < endl;
vector< Professor >::iterator itr = begin();
vector< Professor>::iterator eor = end();
while (itr != eor)
{
itr->write(out);
itr++;
}
}
String ProfList::getDescription()
{
String result="";
vector< Professor >::iterator itr = begin();
vector< Professor >::iterator eor = end();
while (itr != eor)
{
result = result + itr->completeList()+'\n';
itr++;
}
return result;
}