1、电子科技大学计算机学院标 准 实 验 报 告(实验)课程名称:C+程序设计实验电子科技大学教务处制表电 子 科 技 大 学实 验 报 告学生姓名: 学 号: 指导教师:丘志杰实验地点:主楼 A2-412 实验时间:2012.11.23一、实验室名称:电子科技大学计算机实验教学示范中心 二、实验项目名称:C+程序设计实验三、实验学时:学时四、实验原理:了解数据封装的作用和实现方式,使用 C+语言的抽象数据类型实现数据封装。了解继承的实现方式,使用 C+语言的基类和派生类实现继承功能。了解运算符重载的机制,学会进行运算符重载。了解继承和多态的作用和实现方式,掌握动态联编方法,使用 C+语言的抽象类
2、和派生类实现继承性。五、实验目的:1、掌握 C+编程规范;2、掌握 C+的封装、继承、运算符重载以及多态程序的基本编写方法;3、熟悉在 visual Studio 2010(及以上版本)环境下的 C+软件开发和调试过程。六、实验内容:C+编辑和编译系统采用isual Studio 2010,设计 1 个综合运用数据封装、继承、运算符重载、多态等机制的 C+编程语言的应用实验“学校教职工工资管理程序”:对学校教职工进行关系划分;着重应用数据封装、继承等机制对各类人员进行类封装并体现继承和派生关系;着重应用虚函数机制,实现计算职工工资的功能;重载“#include#include#include#
3、includeusing namespace std;class CStaff;class CAdministrator;class CTeacher;class CTempStaff;maptpmap;maptcmap;mapadmap;map:iterator tpit;map:iterator tcit;map:iterator adit;int CAA=100,CAB=100,CAS=100,CTS=100,TI1=10,TI2=20,TI3=30,TI4=40,MS=50,PHD=100;/-cstaff-class CStaffprotected:string number;str
4、ing name;char sex;unsigned int serviceyears;double salary;public:CStaff(string num,string na,char se,unsigned int sy,double sala)number=num;name=na;sex=se;serviceyears=sy;salary=sala;void SetSex(char se)sex=se;char GetSex()return sex;void SetNo(string num)number=num;string GetNo()return number;void
5、SetName(string na)name=na;string GetName()return name;bool SetServiceYears(unsigned int sy)if (sy=0)return false;serviceyears=sy;return true;unsigned int GetServiceYears()return serviceyears;double GetBaseSalary()return salary;virtual double GetSalary()=0;/-ctempstaff-class CTempStaff:public CStaffp
6、rivate:double Ts;public:CTempStaff(string num,string na,char se,unsigned int sy,double sala,double t):CStaff(num,na,se,sy,sala)Ts=t;double GetSalary()return salary+Ts;double GetTs()return Ts;friend ostream;ostreamif (obj.sex=M)out“性别:男“endl;else out“性别:女“endl;out“职位:临时工“endl;out“工号:“obj.GetNo()endl;
7、out“工龄:“obj.GetServiceYears()endl;out“薪资:“obj.GetSalary()endl;return out;/-cadmin-class CAdministrator:public CStaffprivate:string level;public:CAdministrator(string num,string na,char se,unsigned int sy,double sala,string lev):CStaff(num,na,se,sy,sala) level=lev;double GetSalary()if (!pare(“一般“)ret
8、urn salary+serviceyears*CAS;else if (!pare(“A“)return salary+serviceyears*CAS+CAA;else if (!pare(“B“)return salary+serviceyears*CAS+CAB;string Getlevel()return level;friend ostream;ostreamif (obj.sex=M)out“性别:男“endl;else out“性别:女“endl;if (!pare (“一般“)out“职位:一般行政人员“endl;else if (!pare (“A“)out“职位:A 级行政人员“endl;else out“职位:B 级行政人员“endl;out“工号:“obj.GetNo()endl;out“工龄:“obj.GetServiceYears()endl;out“薪资:“obj.GetSalary()endl;return out;/-cteacher-class CTeacher:public CStaffprivate:string level;long time,phd,master;public: