您的位置:首页 > 其它

小型学校人事管理系统

2006-10-06 00:36 531 查看



/**//*头文件 StuTeach.h */


//Y:


#ifndef STUTEACH_H


#define STUTEACH_H


#include <string>


#include <vector>






class People...{


public:


People(std::string name="" , bool sex=0)


:m_name(name),m_sex(sex)




...{}


virtual ~People();




virtual void input();


virtual void print();


virtual void edit();


virtual int getNo() const;


protected:


std::string m_name;


bool m_sex;


};






class Teacher:public People...{


public:


Teacher(std::string name="", bool sex=0, int no=0, int depart=0, std::string title="")


:People(name,sex),m_no(no),m_depart(depart),m_title(title)




...{}


virtual ~Teacher();




virtual void input();


virtual void print();


virtual void edit();


virtual int getNo() const;


private:


int m_no;


int m_depart;


std::string m_title;


};






class Student:public People...{


public:


Student(std::string name="", bool sex=0, int no=0, int depart=0, int grade=0)


:People(name,sex),m_no(no),m_depart(depart),m_grade(grade)




...{}


virtual ~Student();




virtual void input();


virtual void print();


virtual void edit();


virtual int getNo() const;


private:


int m_no;


int m_depart;


int m_grade;


};






class FindFunObj...{//函数对象,


public:




FindFunObj(People* pt=NULL):p(pt)...{}


bool operator()(const People* pp)




...{


return (pp->getNo() == p->getNo());


}


private:


const People* p;


};






enum OP...{ADD=1, EDIT, DEL, FIND, PRINT, BACK};




enum OBJ...{TEACH=1, STU, QUIT};




//全局函数声明


void printMess(const char* m);


bool checkNo(const std::vector<People*>& vv, People* p);


bool ascByNo(People* p1, People* p2);


void addIn(std::vector<People*>& v, int obj);


int who(int obj);


std::vector<People*>::iterator geti(std::vector<People* >& v, int obj);


void edit(std::vector<People* >& v, int obj);


void del(std::vector<People* >& v, int obj);


void myfind(std::vector<People* >& v, int obj);


void myprint(std::vector<People* >& v);


void manage(std::vector<People*>& vp, int obj);




#endif






/**/////////////////////////////////////////////////////






/**//*函数实现文件 StuTeach.cpp */


//Y:


#include "StuTeach.h"


#include <string>


#include <iostream>


#include <algorithm>


using namespace std;






/**///// Member Functions of People


People::~People()




...{}


void People::input()




...{


cout << "输入姓名:";


cin >> m_name;


cout << "输入性别(0-男,1-女):";


cin >> m_sex;


}


void People::print()




...{


cout << "姓名:" << m_name <<endl;


cout << "性别:" << (m_sex == 0 ? "男" : "女") <<endl;


}


void People::edit()




...{


cout << "修改姓名为:";


cin >> m_name;


cout << "修改性别(0-男,1-女)为:";


cin >> m_sex;


}


int People::getNo() const




...{


return 0;


}




/**///// Member Functions of Teacher


Teacher::~Teacher()




...{}


void Teacher::input()




...{


cout << "输入职工号:";


cin >> m_no;


People::input();


cout << "输入系号:" ;


cin >> m_depart;


cout << "输入职称:";


cin >> m_title;


}


void Teacher::print()




...{


cout << "职工号:" << m_no <<endl;


People::print();


cout << "系号:" << m_depart <<endl;


cout << "职称:" << m_title << endl;


}


void Teacher::edit()




...{


cout << "修改职工号为:";


cin >> m_no;


People::edit();


cout << "修改系号为:" ;


cin >> m_depart;


cout << "修改职称为:";


cin >> m_title;


}


int Teacher::getNo() const




...{


return m_no;


}




/**///// Member Functions of Student


Student::~Student()




...{}


void Student::input()




...{


cout << "输入学号:";


cin >> m_no;


People::input();


cout << "输入系号:" ;


cin >> m_depart;


cout << "输入年级:";


cin >> m_grade;


}


void Student::print()




...{


cout << "学号:" << m_no <<endl;


People::print();


cout << "系号:" << m_depart <<endl;


cout << "年级:" << m_grade << endl;


}


void Student::edit()




...{


cout << "修改学号为:";


cin >> m_no;


People::edit();


cout << "修改系号为:" ;


cin >> m_depart;


cout << "修改年级为:";


cin >> m_grade;


}


int Student::getNo() const




...{


return m_no;


}






/**/////全局函数定义




void printMess(const char* m)




...{cout << m;}




bool checkNo(const vector<People*>& vv, People* p)




...{


vector<People*>::const_iterator i


= find_if(vv.begin(), vv.end(), FindFunObj(p));


return i != vv.end();


}




bool ascByNo(People* p1, People* p2)//按号码递增排序的函数对象




...{


return (p1->getNo() < p2->getNo());


}


void addIn(vector<People*>& v, int obj)




...{


People* pnew=NULL;


if(obj == TEACH)


pnew = new Teacher();


else if(obj == STU)


pnew = new Student();


else




...{


printMess("对象错误 ");


return;


}




pnew->input();


if(!checkNo(v, pnew))




...{


v.push_back(pnew);


sort(v.begin(), v.end(), ascByNo);


}


else




...{


printMess("号码冲突,添加失败 ");


delete pnew;


}


}


int who(int obj)




...{


if(obj == TEACH)


printMess("输入职工号:");


else if(obj == STU)


printMess("输入学号:");


else




...{


printMess("对象错误 ");


return -1;


}


int w;


cin >> w;




return w;


}


vector<People*>::iterator geti(vector<People* >& v, int obj)




...{


int w = who(obj);


vector<People*>::iterator i;


for(i= v.begin(); i != v.end(); ++i)




...{


if((*i)->getNo() == w)


break;


}


return i;


}


void edit(vector<People* >& v, int obj)




...{


vector<People*>::iterator i = geti(v, obj);




if(i != v.end())


(*i)->edit();


else


printMess("查无此人 ");


}




void del(vector<People* >& v, int obj)




...{


vector<People*>::iterator i = geti(v, obj);




if(i != v.end())




...{


v.erase(i);


}


else


printMess("查无此人 ");


}


void myfind(vector<People* >& v, int obj)




...{


vector<People*>::iterator i = geti(v, obj);




if(i != v.end())


(*i)->print();


else


printMess("查无此人 ");


}


void myprint(vector<People* >& v)




...{


for(vector<People*>::const_iterator ci = v.begin(); ci != v.end(); ++ci)




...{


(*ci)->print();


printMess("---------- ");


}


}


void manage(vector<People*>& vp, int obj)




...{


printMess("1.添加 ");


printMess("2.修改 ");


printMess("3.删除 ");


printMess("4.查询 ");


printMess("5.打印 ");


printMess("6.返回 ");


printMess("请选择:");


int op;


while(cin >> op)




...{


if(op == BACK)


break;


switch(op)




...{


case ADD:


addIn(vp, obj);


break;


case EDIT:


edit(vp, obj);


break;


case DEL:


del(vp, obj);


break;


case FIND:


myfind(vp, obj);


break;


case PRINT:


myprint(vp);


break;


default:


printMess("无此操作 ");


break;


}


printMess("请选择:");


}


}






/**////////////////////////////////////////////////////////////////////






/**//*测试文件 main.cpp*/


//Y:


#include "StuTeach.h"


#include <iostream>


#include <vector>




using namespace std;




int main()




...{


vector<People*> vpTeach, vpStu;


printMess("1.处理教师信息 ");


printMess("2.处理学生信息 ");


printMess("3.退出程序 ");


printMess("请选择:");


int obj;


while(cin >> obj)




...{


if(obj == QUIT)


break;


switch(obj)




...{


case TEACH:


manage(vpTeach, obj);


break;


case STU:


manage(vpStu, obj);


break;


default:


printMess("无此操作对象 ");


break;


}


printMess("请选择:");


}


return 0;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: