您好,欢迎访问三七文档
数学与计算机学院C++实验报告年级09数计学号2009432125姓名刘宝成绩专业数电实验地点主楼401指导教师翟俊海实验项目职工信息表实验日期11年1月1日一、实验目的通过编写一个处理职工信息的程序,加强对继承与派生,运算符重载等概念的理解,提升实际操作能力。二、实验问题描述设计要求:设计要求实现如下功能:(1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。(2)使用继承的方法构造至少3个类,(即雇员类——基类,教师类和工人类——派生类)类中使用相应的对象放置10个职工信息。(3)编写同名display()成员函数,用来输出数组的内容。(4)按不同类别输出职工信息,比如按系输出教师信息。(5)要求对“<<”和“>>”运算符进行重载。考虑到输人职工编号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求。(6)抽取并计算职工的平均年龄。(7)检索(查找)指定信息。(如按姓名检索、按年龄检索)(8)参考界面如下:1-增加一位职工(教师、工人)记录2-显示全部职工(教师、学生)记录3-计算职工(教师、学生)的平均年龄4-删除一个职工(教师、学生)记录5-按系输出教师信息6-按姓名检索(教师、学生)职工7-结束程序运行三、实验步骤1、实验问题分析(一)时间类。classTime{public:voiddisplay();voidset();voidage();intgetage();private:intyear;intmonth;intday;};(二)职工类(单个职工)。classLabor{public:voidcreat();voiddisplay();//protected:stringnum;stringname;stringsex;floatwage;Timebirthday;stringworkp;Timeworkt;intage;};(三)雇员类(是一个集合类,包含多个人员(对象数组)以及对多个人员的操作(如添加、删除、查询等,是对对象数组操作的成员函数,应设定为虚函数),雇员类可考虑设为抽象基类。classEmployee{public:voidvirtualset(){num=0;}//将num设置为0voidvirtualaddin();//增加一个雇员voidvirtualdisplay();//显示所有雇员voidvirtualdele();//删除一个雇员voidvirtualsearch();//查询雇员voidvirtualshow();//按工作部门显示雇员信息voidvirtualaverageage();//计算雇员平均年龄protected:intnum;//标记员工个数LaborL[10];//};(四)教师类(雇员类的派生类),对基类的虚函数重新定义,实现相应功能。classTeacher:virtualpublicEmployee{public:voidset(){num=0;}//将num设置为0voidaddin();//增加教师voiddisplay();//显示所有教师信息voiddele();//删除教师voidsearch();//查询教师信息voidshow();//按系显示教师信息voidaverageage();//计算教师平均年龄voidSET();//读入文件中的信息};(五)工人类(雇员类的派生类),对基类的虚函数重新定义,实现相应功能。classWorker:virtualpublicEmployee{public:voidset(){num=0;}//将num设置为0voidaddin();//增加工人voiddisplay();//显示所有工人信息voiddele();//删除工人voidsearch();//查询工人信息voidshow();//按部门显示工人信息voidaverageage();//计算工人平均年龄voidSET();////读入文件中的信息};(六)对进行运算符重载,使之能接收空格。istream&operator(istream&ip,string&s){chara[12];gets(a);s=a;returnip;}四、实验结果(程序)及分析1、实验主要模块代码(一)函数功能:Time类和对Time类的操作classTime{public:voiddisplay();//显示年月日voidset();//设置voidage();//显示年龄intgetage();//计算时间差//private:intyear;intmonth;intday;};voidTime::display()//显示年月日{coutyear-month-day;}voidTime::set()//设置年月日{cout------年:;cinyear;cout------月:;cinmonth;cout------日:;cinday;}voidTime::age()//显示时间差{cout2010-year;}intTime::getage()//得到时间差{return(2010-year);}(二)函数功能:一个雇员信息的建立和显示classLabor{public:voidcreat();//输入相关信息voiddisplay();//显示相关信息//protected:stringnum;stringname;stringsex;floatwage;Timebirthday;stringworkp;Timeworkt;intage;};voidLabor::creat()//输入信息{cout请按照提示操作,请输入endl;cout工号:;cinnum;cout姓名:;cinname;cout性别:;cinsex;cout工作部门:;cinworkp;cout工资:;cinwage;cout出生日期:;coutendl;birthday.set();cout工作时间:;coutendl;workt.set();getchar();}voidLabor::display()//显示信息{cout工号:numendl;cout姓名:nameendl;cout性别:sexendl;cout工作部门:workpendl;cout月工资:wage元endl;cout出生日期:;birthday.display();coutendl;cout工作时间:;workt.display();coutendl;cout年龄:;birthday.age();coutendl;coutendl;}(三)函数功能:对多个雇员的操作classEmployee//雇员类{public:voidvirtualset(){num=0;}//设0voidvirtualaddin();//增加雇员voidvirtualdisplay();//显示雇员voidvirtualdele();//删除雇员voidvirtualsearch();//查询雇员voidvirtualshow();//按部门显示雇员voidvirtualaverageage();//计算平均年龄protected:intnum;LaborL[10];};voidEmployee::addin()//增加一个员工信息{if(num=10)cout已满endl;else{cout请输入相关信息endl;L[++num].creat();}}voidEmployee::display()//显示所有职工信息{if(num=0){cout无信息,无法显示endl;}elsefor(inti=1;i=num;i++)L[i].display();}voidEmployee::dele()//按工号删除信息{if(num=0)cout无信息,无法删除endl;else{stringn;cout请输入要删除的员工工号endl;cinn;for(inti=1;i=num;i++)if(L[i].num==n){for(intk=i;knum;k++)L[k]=L[k+1];num--;}if(inum)cout无此工号的员工!endl;}}voidEmployee::search()//按姓名查询信息{if(num=0)cout无信息,无法查询endl;else{stringnam;cout请输入要查询的员工姓名endl;cinnam;for(inti=1;i=num;i++)if(L[i].name==nam){cout查询到此员工的信息endl;L[i].display();}if(inum)cout无此姓名的员工!endl;}}voidEmployee::show()//按部门显示信息{if(num=0)cout无信息,无法显示endl;else{stringwp;cout请输入工作部门endl;cinwp;cout在此工作部门工作的员工信息如下endl;intb=0;for(inti=1;i=num;i++)if(L[i].workp==wp){b=1;L[i].display();}if(b==0)cout无在此部门工作的员工!endl;}}voidEmployee::averageage()//计算平均年龄{if(num1)cout无信息无法计算平均年龄endl;else{intall=0,i;floatav;for(i=1;i=num;i++){all=all+L[i].birthday.getage();}av=(all/num);cout平均年龄为av岁endl;}}(四)函数功能:对教师类的操作classTeacher:virtualpublicEmployee{public:voidset(){num=0;}voidaddin();voiddisplay();voiddele();voidsearch();voidshow();voidaverageage();voidSET();};voidTeacher::SET(){set();ifstreamss(d:/1.txt);for(intj=1;j4;j++){num++;ssL[num].num;ssL[num].name;ssL[num].sex;ssL[num].workp;ssL[num].wage;;ssL[num].birthday.year;ssL[num].birthday.month;ssL[num].birthday.day;ssL[num].workt.year;ssL[num].workt.month;ssL[num].workt.day;}}voidTeacher::addin(){if(num=10)cout教师信息存储已满endl;else{cout请输入相关教师信息endl;//getchar();L[++num].creat();}}voidTeacher::display()//显示所有职工信息{if(num=0){cout无教师信息,无法显示endl;}else{cout教师信息如下:endl;for(inti=1;i=num;i++)L[i].display();}}voidTeacher::dele()//按工号删除信息{if(num=0)cout无教师信息,无法删除endl;else{stringn;cout请输入要删除教师的
本文标题:职工信息表实验报告
链接地址:https://www.777doc.com/doc-5725542 .html