小型学校人事管理系统

/**//*头文件StuTeach.h*/
//Y:
#ifndefSTUTEACH_H
#defineSTUTEACH_H
#include
<string>
#include
<vector>

classPeople...{
public:
People(std::
stringname="",boolsex=0)
:m_name(name),m_sex(sex)
...{}
virtual~People();

virtualvoidinput();
virtualvoidprint();
virtualvoidedit();
virtualintgetNo()const;
protected:
std::
stringm_name;
boolm_sex;
}
;

classTeacher:publicPeople...{
public:
Teacher(std::
stringname="",boolsex=0,intno=0,intdepart=0,std::stringtitle="")
:People(name,sex),m_no(no),m_depart(depart),m_title(title)
...{}
virtual~Teacher();

virtualvoidinput();
virtualvoidprint();
virtualvoidedit();
virtualintgetNo()const;
private:
intm_no;
intm_depart;
std::
stringm_title;
}
;

classStudent:publicPeople...{
public:
Student(std::
stringname="",boolsex=0,intno=0,intdepart=0,intgrade=0)
:People(name,sex),m_no(no),m_depart(depart),m_grade(grade)
...{}
virtual~Student();

virtualvoidinput();
virtualvoidprint();
virtualvoidedit();
virtualintgetNo()const;
private:
intm_no;
intm_depart;
intm_grade;
}
;

classFindFunObj...{//函数对象,
public:
FindFunObj(People
*pt=NULL):p(pt)...{}
booloperator()(constPeople*pp)
...{
return(pp->getNo()==p->getNo());
}

private:
constPeople*p;
}
;

enumOP...{ADD=1,EDIT,DEL,FIND,PRINT,BACK};
enumOBJ...{TEACH=1,STU,QUIT};

//全局函数声明
voidprintMess(constchar*m);
boolcheckNo(conststd::vector<People*>&vv,People*p);
boolascByNo(People*p1,People*p2);
voidaddIn(std::vector<People*>&v,intobj);
intwho(intobj);
std::vector
<People*>::iteratorgeti(std::vector<People*>&v,intobj);
voidedit(std::vector<People*>&v,intobj);
voiddel(std::vector<People*>&v,intobj);
voidmyfind(std::vector<People*>&v,intobj);
voidmyprint(std::vector<People*>&v);
voidmanage(std::vector<People*>&vp,intobj);

#endif

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

/**//*函数实现文件StuTeach.cpp*/
//Y:
#include"StuTeach.h"
#include
<string>
#include
<iostream>
#include
<algorithm>
usingnamespacestd;

/**/////MemberFunctionsofPeople
People::~People()
...{}
voidPeople::input()
...{
cout
<<"输入姓名:";
cin
>>m_name;
cout
<<"输入性别(0-男,1-女):";
cin
>>m_sex;
}

voidPeople::print()
...{
cout
<<"姓名:"<<m_name<<endl;
cout
<<"性别:"<<(m_sex==0?"":"")<<endl;
}

voidPeople::edit()
...{
cout
<<"修改姓名为:";
cin
>>m_name;
cout
<<"修改性别(0-男,1-女)为:";
cin
>>m_sex;
}

intPeople::getNo()const
...{
return0;
}

/**/////MemberFunctionsofTeacher
Teacher::~Teacher()
...{}
voidTeacher::input()
...{
cout
<<"输入职工号:";
cin
>>m_no;
People::input();
cout
<<"输入系号:";
cin
>>m_depart;
cout
<<"输入职称:";
cin
>>m_title;
}

voidTeacher::print()
...{
cout
<<"职工号:"<<m_no<<endl;
People::print();
cout
<<"系号:"<<m_depart<<endl;
cout
<<"职称:"<<m_title<<endl;
}

voidTeacher::edit()
...{
cout
<<"修改职工号为:";
cin
>>m_no;
People::edit();
cout
<<"修改系号为:";
cin
>>m_depart;
cout
<<"修改职称为:";
cin
>>m_title;
}

intTeacher::getNo()const
...{
returnm_no;
}

/**/////MemberFunctionsofStudent
Student::~Student()
...{}
voidStudent::input()
...{
cout
<<"输入学号:";
cin
>>m_no;
People::input();
cout
<<"输入系号:";
cin
>>m_depart;
cout
<<"输入年级:";
cin
>>m_grade;
}

voidStudent::print()
...{
cout
<<"学号:"<<m_no<<endl;
People::print();
cout
<<"系号:"<<m_depart<<endl;
cout
<<"年级:"<<m_grade<<endl;
}

voidStudent::edit()
...{
cout
<<"修改学号为:";
cin
>>m_no;
People::edit();
cout
<<"修改系号为:";
cin
>>m_depart;
cout
<<"修改年级为:";
cin
>>m_grade;
}

intStudent::getNo()const
...{
returnm_no;
}


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

voidprintMess(constchar*m)
...{cout<<m;}

boolcheckNo(constvector<People*>&vv,People*p)
...{
vector
<People*>::const_iteratori
=find_if(vv.begin(),vv.end(),FindFunObj(p));
returni!=vv.end();
}


boolascByNo(People*p1,People*p2)//按号码递增排序的函数对象
...{
return(p1->getNo()<p2->getNo());
}

voidaddIn(vector<People*>&v,intobj)
...{
People
*pnew=NULL;
if(obj==TEACH)
pnew
=newTeacher();
elseif(obj==STU)
pnew
=newStudent();
else
...{
printMess(
"对象错误 ");
return;
}


pnew
->input();
if(!checkNo(v,pnew))
...{
v.push_back(pnew);
sort(v.begin(),v.end(),ascByNo);
}

else
...{
printMess(
"号码冲突,添加失败 ");
deletepnew;
}

}

intwho(intobj)
...{
if(obj==TEACH)
printMess(
"输入职工号:");
elseif(obj==STU)
printMess(
"输入学号:");
else
...{
printMess(
"对象错误 ");
return-1;
}

intw;
cin
>>w;

returnw;
}

vector
<People*>::iteratorgeti(vector<People*>&v,intobj)
...{
intw=who(obj);
vector
<People*>::iteratori;
for(i=v.begin();i!=v.end();++i)
...{
if((*i)->getNo()==w)
break;
}

returni;
}

voidedit(vector<People*>&v,intobj)
...{
vector
<People*>::iteratori=geti(v,obj);

if(i!=v.end())
(
*i)->edit();
else
printMess(
"查无此人 ");
}


voiddel(vector<People*>&v,intobj)
...{
vector
<People*>::iteratori=geti(v,obj);

if(i!=v.end())
...{
v.erase(i);
}

else
printMess(
"查无此人 ");
}

voidmyfind(vector<People*>&v,intobj)
...{
vector
<People*>::iteratori=geti(v,obj);

if(i!=v.end())
(
*i)->print();
else
printMess(
"查无此人 ");
}

voidmyprint(vector<People*>&v)
...{
for(vector<People*>::const_iteratorci=v.begin();ci!=v.end();++ci)
...{
(
*ci)->print();
printMess(
"---------- ");
}

}

voidmanage(vector<People*>&vp,intobj)
...{
printMess(
"1.添加 ");
printMess(
"2.修改 ");
printMess(
"3.删除 ");
printMess(
"4.查询 ");
printMess(
"5.打印 ");
printMess(
"6.返回 ");
printMess(
"请选择:");
intop;
while(cin>>op)
...{
if(op==BACK)
break;
switch(op)
...{
caseADD:
addIn(vp,obj);
break;
caseEDIT:
edit(vp,obj);
break;
caseDEL:
del(vp,obj);
break;
caseFIND:
myfind(vp,obj);
break;
casePRINT:
myprint(vp);
break;
default:
printMess(
"无此操作 ");
break;
}

printMess(
"请选择:");
}

}


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

/**//*测试文件main.cpp*/
//Y:
#include"StuTeach.h"
#include
<iostream>
#include
<vector>

usingnamespacestd;

intmain()
...{
vector
<People*>vpTeach,vpStu;
printMess(
"1.处理教师信息 ");
printMess(
"2.处理学生信息 ");
printMess(
"3.退出程序 ");
printMess(
"请选择:");
intobj;
while(cin>>obj)
...{
if(obj==QUIT)
break;
switch(obj)
...{
caseTEACH:
manage(vpTeach,obj);
break;
caseSTU:
manage(vpStu,obj);
break;
default:
printMess(
"无此操作对象 ");
break;
}

printMess(
"请选择:");
}

return0;
}
本系统参考了各类学校管理软件的精华,溶入了各自的优点并采纳众多在学校工作的朋友的宝贵建议,真正地从用户的需求出发,设计理念极为人性化。具有很强的通用性与实用性,现已广泛应用于各级各类学校,也可用于企事业单位或社会团体。主要功能如下: 1、功能强大,项目齐全,内容丰富实用,完全适合各级各类学校尤其是中小学教工信息管理工作! 2、 主要模块有:基本信息、学历信息、职称评聘信息、编制、人事代理、年度考核、学习经历、工作经历、教研情况、奖惩信息、家庭成员、公告等 3、超智能化自由组合查询与Excel文件的导出,并可以自定义输出字段! 4、超智能的报表生成,可以快速生成各种数据,如男女数据,任教学科数据、职称数据等 5、基本信息的Excel数据批量导入。 6、教工可以自助注册,管理员负责审核。可自由开关教工自己注册或登录查看、修改自己档案的功能。 7、设计灵活,人性化,各字段项目完全自定义设置,一切工作都可以在界面设定,不需要修改文件。 8、管理员登录日志、记录修改日志、删除日志,让所有用户的操作都有记录可查。 9、强大的用户管理,级别分别是系统管理员、一般管理员,其对记录的查看、添加、修改与删除权限可根据需要灵活分配,并可以锁定登录。满足多角色的需要,给系统带来更多的实用、便利与安全! 10、可根据用户的要求进行修改、定制任何软件及网站。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值