您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 实验8 小型人事档案信息管理系统
实验8小型人事档案信息管理系统专业:计算机科学与技术班级:10计本班学号:姓名:实验地点:B102实验时间:2011-12-13指导教师:李佐勇一、实验目的1.熟练掌握C++基本语法、类的设计与使用、字符数组的使用、以及字符指针的使用;2.熟练掌握类的继承与多态设计方法、文件读取、C++标准模板库的应用;3.基本掌握面向对象程序设计的基本思路和方法;4.培养应用面向对象程序设计的方式来思考和解决问题的能力。二、实验环境一台PC机,WindowsXP操作系统,VisualC++6.0开发环境。三、实验内容某高校有在职人员,如行政人员、教师、教师兼行政(如系主任),现需存储这些人员的人事档案信息:工号、姓名、出生日期、性别、年龄、职务、职称、薪金、入伍时间(参加工作时间)。程序的主要功能包括:添加、删除、查询、编辑、统计、保存、薪金计算等。界面样式不做限制,自由发挥,原则是方便用户操作。具体实验要求如下:1)添加、删除功能:能根据人事变动添加删除记录;2)查询功能:根据姓名或工号进行查找并显示详细信息;3)编辑功能:根据查询结果对相应的记录进行修改并存储;4)统计功能:根据多种参数(如性别、年龄段、职工类别等)进行人员的统计;5)保存功能:能对输入数据以文件方式存放在硬盘中。新增数据由键盘录入,已录入的数据从文件中读取出来进行相关操作。要求重载插入和提取符以完成数据的保存与打开。6)人员编号在生成人员信息的同时生成,每输入一个人员信息,编号自动加1;7)薪金计算在生成人员信息的同时生成:按职称(正高、副高、中级、初级、见习)加行政级别补贴拿,具体数目自定义。四、实验记录1、系统的功能模块图#ifndefDataBase_H#defineDataBase_H#includeperson.cpp#includeVectorclassAdmin_teaDatabase{public:Admin_teaDatabase();//构造函数,将Admin_teaDatabase.txt读到Vat中voidAdd();//插入人员voidFind();//查找人员voidDelete();//删除指定人员信息voidModify();//修改人员信息voidStatistics();//统计人员信息voidSave();//保存人员信息voidDisplay();private:vectorAdmin_teaVat;};#endif2、界面的组织与设计#includestring#includestring.h#includectype.h#includeDataBase.Hvoidmenu(){coutendl;cout高校人事管理系统endl;cout#################...................................################endl;cout#*****1--添加人员信息*****#endl;cout#*****2--删除人员信息*****#endl;cout#****3--修改人员信息*****#endl;cout#****4--查询人员信息*****#endl;cout#****5--统计人员信息*****#endl;cout#****6--输出所有信息*****#endl;cout#****7--保存所有信息*****#endl;cout#*****8--退出*****#endl;cout~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~endl;cout........................请选择(1-8):.................................endl;}Admin_teaDatabase::Admin_teaDatabase(){ifstreamf;f.open(Admin_teaDatabase.txt);if(!f){cout无法打开Admin_teaDatabase.txt\n;exit(1);}Admin_teaat;//Person::CUR_ID--;intid;stringsname;boolxb;floatw;inta,by,bm,bd,wy,wm,wd,tt,pp;Titlet;Positionp;/*f.seekp(0,ios::end);streamposposend=f.tellp();f.seekp(0,ios::beg);while(f.tellp()!=posend)*/while(!f.eof()){fidsnamebybmbdxbawywmwdttppw;//显示已读入的数据//coutidsnamebybmbdxbawywmwdttppwendl;//printf(%s,str2);t=(Title)tt;p=(Position)pp;at.set(id,sname,by,bm,bd,xb,a,wy,wm,wd,t,p,w);Vat.push_back(at);}f.close();}voidAdmin_teaDatabase::Add(){//插入人员cout**************************Appending**************************************\n;Admin_teaat;cout请输入选择:\n1:教师.\t2:行政人员.\t3:教师兼行政人员.\t0:返回;intchoice;cinchoice;switch(choice){case1://教师{at.Teacher::input();break;}case2://行政人员{at.Administrator::input();break;}case3://教师兼行政人员{at.input();break;}case0:menu();}Vat.push_back(at);//Save(f);//Display();}voidAdmin_teaDatabase::Find(){//查找人员cout*******************************Finding***********************************\n;cout请输入选择:\n1:按工号查找.\t2:按姓名查找.\t0:返回;intchoice;cinchoice;switch(choice){case1://按工号查找{//从文件头部开始检索intid;cout请输入待查找人员的工号:;cinid;/*Admin_teaat;at.setid(id);pos=find(Vat.begin(),Vat.end(),at);if(pos!=Vat.end())Vat[pos-Vat.begin()].show();elsecout没有找到工号为id的人员!\n;*/for(unsignedinti=0;iVat.size();++i)if(Vat[i].getID()==id){Vat[i].show();break;}if(i=Vat.size())cout没有找到工号为id的人员!\n;break;}case2://按姓名查找{stringsname;boolf=false;intfound=0;cout请输入待查找人员的姓名:;cinsname;for(unsignedinti=0;iVat.size();++i)if(Vat[i].getname()==sname){++found;Vat[i].show();f=true;}if(f)//找到cout共找到:found位姓名为:sname的人员!endl;elsecout没有找到姓名为sname的人员!\n;break;}case0:menu();}}voidAdmin_teaDatabase::Delete(){//删除指定人员信息cout********************************Deleting***********************************\n;cout请输入选择:\n1:删除指定工号人员.\t2:删除指定姓名人员.\t0:返回;vectorAdmin_tea::iteratorit;intchoice;cinchoice;switch(choice){case1://按工号{intid;cout请输入待删除找人员的工号:;cinid;for(unsignedinti=0;iVat.size();++i)if(Vat[i].getID()==id){Vat[i].show();cout确定要删除该记录(Y/N):;charc;cinc;if(c=='Y'||c=='y'){it=Vat.begin()+i;Vat.erase(it);}break;}if(i=Vat.size())cout没有找到工号为id的人员!\n;break;}case2://按姓名查找{stringsname;boolf=false;intfound=0;cout请输入待删除人员的姓名:;cinsname;for(unsignedinti=0;iVat.size();++i)if(Vat[i].getname()==sname){++found;f=true;Vat[i].show();cout确定要删除该记录(Y/N):;charc;cinc;if(c=='Y'||c=='y'){it=Vat.begin()+i;Vat.erase(it);}}if(f)//找到cout共删除了:found位姓名为:sname的人员!endl;elsecout没有找到姓名为sname的人员!\n;break;}case0:menu();}//Save(f);}voidAdmin_teaDatabase::Modify(){//修改人员信息cout*******************************Modifying*****************************************\n;//stringsname;CDatebd,wd;char*xb;boolb;//inta,id=Person::CUR_ID;Titlet=Null;Positionp=Null;cout请输入选择:\n1:修改指定工号人员信息.\t2:修改指定姓名人员信息.\t0:返回;//vectorAdmin_tea::iteratorit;intchoice;cinchoice;switch(choice){case1://按工号{intid;cout请输入待修改找人员的工号:;cinid;for(unsignedinti=0;iVat.size();++i)if(Vat[i].getID()==id){Vat[i].show();if(Vat[i].getposition()==NUll)Vat[i].Teacher::input();elseif(Vat[i].gettitle()==Null)Vat[i].Administrator::input();
本文标题:实验8 小型人事档案信息管理系统
链接地址:https://www.777doc.com/doc-3544291 .html