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