综合运用面向对象程序设计语言的相关知识高等程序设计实验报告.docx
- 文档编号:14507014
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:15
- 大小:137.76KB
综合运用面向对象程序设计语言的相关知识高等程序设计实验报告.docx
《综合运用面向对象程序设计语言的相关知识高等程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《综合运用面向对象程序设计语言的相关知识高等程序设计实验报告.docx(15页珍藏版)》请在冰点文库上搜索。
综合运用面向对象程序设计语言的相关知识高等程序设计实验报告
高等程序设计实验报告
实验名称
实验16综合实验
系别
姓名
学号
班级
实验时间
实验地点
实验成绩
一、实验目的及要求
1.综合运用面向对象程序设计语言的相关知识。
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
硬件设备:
联网的个人计算机
操作系统:
Windows2000
编译系统:
VisualC++6.0
三、实验内容及步骤(包含简要的实验步骤流程)
题目一:
实验内容:
设计基类People,表示一般人员的信息,含姓名、年龄信息;再设计一个表示工作人员的类Worker,含工资信息;接下来设计一个表示学生的类Student,含成绩信息,在职学生类WorkerStu以Worker和Student为基类。
采用运算符重载的方式编写针对以上类的输入和显示的程序。
过程分析:
1)定义基类People类,定义表示姓名和年龄的数据成员name和age,并声明为保护段成员,方便后面的派生类调用。
在公有段定义构造函数,将姓名和年龄初始化。
2)定义一个表示工作人员的派生类Worker类,将基类声明为虚基类。
新增加表示工资的保护段数据wages,在公有段定义构造函数,缀上基类People类的构造函数,将新增加的数据wages初始化。
3)定义一个表示学生的派生类Student类,将基类声明为虚基类。
新增加表示成绩的保护段数据score,在公有段定义构造函数,缀上基类People类的构造函数,将新增加的数据score初始化。
4)定义在职学生类WorkerStu,是Worker和Student的公有派生类,是基类People的间接派生类。
在公有段定义构造函数,缀上People、Worker和Student的构造函数因为没有新增加数据,故WorkerStu的构造函数可以不用写函数体。
声明运算符>>的重载友元函数和运算符<<的重载友元函数,分别以输入流对象in的引用和WorkerStu的对象obj引用为形参,输入obj对象的数据;以输出流对象out的引用和WorkerStu的对象obj引用为形参,输出Obj对象的数据。
5)在类外定义运算符>>的重载友元函数和运算符<<的重载友元函数,输入流对象in调用系统定义的运算符>>函数,输入对象obj的每个数据,返回in;输出流对象out调用系统定义的运算符<<函数,输出对象obj的每个数据,返回out。
6)在主函数中定义一个在职学生类的对象ws,调用重载运算符<<的友元函数,输出ws的信息,再调用重载运算符>>的友元函数,输入ws的信息,调用重载运算符<<的友元函数,输出ws的信息。
将上述文字描述作为注释,写出所对应的程序。
题目二:
实验内容:
某小型公司主要有4类人员:
经理、兼职技术人员、销售经理、兼职销售员,这些人员具有以下属性:
经理:
姓名、编号、级别、固定工资、当月薪水、计算月薪、显示信息。
兼职技术人员:
姓名、编号、级别、工作小时、每小时工资额、当月薪水、计算月薪、显示信息。
兼职销售员:
姓名、编号、级别、销售额、销售额提成、当月薪水、计算月薪、显示信息。
销售经理:
姓名、编号、级别、固定工资、销售额、销售额提成、当月薪水、计算月薪、显示信息。
设计要求:
人员编号要求基数为1000,每输入一个人员信息编号顺序加1;对所有人员有升级功能(初始级别为1级)。
月薪计算办法:
经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职推销员按当月销售额的4%提成;销售经理固定月薪5000,销售提成为所管辖部门当月销售总额的5‰。
要求能输入各种人员信息,并输出各种人员的信息。
过程分析:
1)定义基类people类,含有表示姓名、编号、等级和月薪信息的保护段数据成员name、number、size、salary,将number声明为静态数据成员。
2)在公有段声明构造函数和成员函数。
在构造函数中给等级赋初值为1,将表示姓名的数据name初始化,编号number自增。
定义虚函数csalary,返回0值。
定义成员函数display,输出姓名、编号、等级的信息。
3)定义派生类经理(manager)类,公有继承基类people类,新增数据成员const_wages表示固定工资;定义构造函数,缀上基类people类的构造函数,并给size1赋值为3;重新定义虚函数csalary,月薪是固定工资,按要求计算月薪并返回salary的值;定义同名函数display,调用基类的同名函数,输出经理的信息。
4)定义派生类兼职技术员(pt_techperson)类,公有继承基类people类,新增数据成员time和perhour_wage分别表示工作时间和每小时的工资额;定义构造函数,缀上基类people类的构造函数,并为size赋值为1,将time初始化;重新定义虚函数csalary,兼职技术人员按100元/小时领取月薪,按要求计算月薪并返回salary的值;定义同名函数display,调用基类的同名函数,输出兼职技术人员的信息。
5)定义派生类兼职销售员(pt_salestaff)类,公有继承基类people类,并声明基类为兼职销售员类的虚基类,新增加数据成员sales_wages表示销售额和sales_commission表示销售额提成,静态数据成员sales_sumwages表示销售总额提成;定义构造函数,缀上基类people的构造函数,并为size赋值为1,将sales_wages初始化,将静态数据成员sales_sumwages赋值为每个兼职销售员(pt_salestaff)类的对象的sales_sumwages相加的总值;重新定义虚函数csalary,兼职推销员按当月销售额的4%提成,按要求计算月薪并返回salary;定义同名函数display,调用基类的同名函数display,输出兼职销售员的信息。
6)定义派生类销售经理类,公有继承兼职销售人员类,是people类的间接派生类,新增加数据成员const_saleswages表示销售经理的固定工资,sales_commission表示销售经理的销售提成;定义构造函数,缀上people类的构造函数和兼职销售人员类的构造函数,将size赋值为2;重新定义虚基类csalary,销售经理固定月薪5000,销售提成为所管辖部门当月销售总额的5%,月薪为固定工资加上销售额提成,销售额是所管辖的销售部门的总销售额,按要求计算月薪,并返回salary;定义同名函数display(),调用people类函数,输出销售经理的包括月薪在内的信息。
7)在类外为静态数据成员赋初值,整型赋值为0,双精度型赋值为0.0。
8)在主函数中定义经理类的对象m,调用display函数输出信息;定义兼职技术人员的对象t,调用display函数输出信息;依次定义兼职销售人员类的对象s1、s2、s3,分别调用display函数输出信息;定义销售经理类的对象sm,调用display函数输出信息。
将上述文字描述作为注释,写出所对应的程序。
四、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)
题目一的源程序:
#include
#include
//定义基类People类
classPeople{
protected:
char*name;
intage;
public:
People(char*name1,intage1)//定义基类的构造函数
{name=newchar[strlen(name1)+1];
strcpy(name,name1);
age=age1;
}
};
//定义派生类表示工作人员的类Worker,公有继承基类,并声明基类People是Worker的虚基类
classWorker:
virtualpublicPeople{
protected:
intwages;
public:
//定义Worker类的构造函数
Worker(char*name1,intage1,intwages1):
People(name1,age1)
{wages=wages1;}
};
//定义派生类表示学生的类Student,公有继承基类,并声明基类People是Student的虚基类
classStudent:
virtualpublicPeople{
protected:
intscore;
public:
//定义Student类的构造函数
Student(char*name1,intage1,intscore1):
People(name1,age1)
{score=score1;}
};
//定义在职学生类WorkerStu,是Worker和Student的公有派生类,是基类People的间接派生类
classWorkerStu:
publicWorker,publicStudent{
public:
//定义WorkerStu的构造函数
WorkerStu(char*name1,intage1,intwages1,intscore1):
People(name1,age1),Worker(name1,age1,wages1),Student(name1,age1,score1)
{}
friendistream&operator>>(istream&in,WorkerStu&obj);
//声明运算符>>的重载友元函数
friendostream&operator<<(ostream&out,WorkerStu&obj);
//声明运算符<<的重载友元函数
};
//定义运算符>>的重载友元函数,以输入流对象in的引用和WorkerStu的对象obj引用为形参,输入obj对象的数据
istream&operator>>(istream&in,WorkerStu&obj)
{cout<<"---------------------------------------------"< cout<<"请输入姓名: "< in>>obj.name; cout<<"请输入年龄: "< in>>obj.age; cout<<"请输入工资: "< in>>obj.wages; cout<<"请输入成绩: "< in>>obj.score; returnin; } //定义运算符<<的重载友元函数,以输出流对象out的引用和WorkerStu的对象obj引用为形参,输出Obj对象的数据 ostream&operator<<(ostream&out,WorkerStu&obj) {cout<<"该在职学生的信息如下: "< out<<"姓名: "< out<<"年龄: "< out<<"工资: "< out<<"成绩: "< returnout; } intmain() {WorkerStuws("孙西",24,8000,95); //定义一个在职学生类的对象ws cout< cin>>ws; //从键盘输入一个在职学生类的对象ws cout< return0; } 实验结果: 题目二的源程序: #include #include //定义基类people类 classpeople{ protected: //数据成员声明为保护段 char*name; staticintnumber;//定义静态数据成员number表示编号 intsize; doublesalary; public: //函数成员声明为公有段 people(char*name1,intsize1=1) {name=newchar[strlen(name1)+1]; strcpy(name,name1); size=size1; ++number; } virtualdoublecsalary()//定义虚函数csalary() {return0;} voiddisplay() //定义基类成员函数display(),能够输出姓名、编号、级别等信息 {cout<<"姓名: "< cout<<"编号: "<<"第"< cout<<"级别: "< } }; //派生类经理(manager)类,公有继承基类people类 classmanager: publicpeople{ intconst_wages;//定义整型数据const_wages表示固定工资 public: manager(char*name1,intsize1): people(name1,size1)//经理的级别为3 {size1=3; } virtualdoublecsalary()//重新定义虚函数csalary(),返回经理的月薪 {const_wages=8000; cout<<"固定工资: "< salary=const_wages; returnsalary; } voiddisplay() //定义同名函数display(),调用基类函数,输出经理的包括工资在内的信息 {cout<<"经理的信息: "< people: : display(); salary=csalary(); cout<<"当月薪水: "< cout<<"-----------------------------------------------------------"< } }; //派生类兼职技术员(pt_techperson)类,公有继承基类people类 classpt_techperson: publicpeople{ inttime;//定义私有数据time表示技术人员工作的小时数 doubleperhour_wage;//每小时的工资额 public: pt_techperson(char*name1,intsize1,inttime1): people(name1,size1) {size1=1;//兼职技术人员的级别为1 time=time1; } virtualdoublecsalary()//重新定义虚函数csalary(),返回兼职技术人员的月薪 {perhour_wage=100; cout<<"每小时工资额: "< salary=perhour_wage*time; returnsalary; } voiddisplay() //定义同名函数display(),调用基类函数,输出兼职技术人员的包括工资在内的信息 {cout<<"兼职技术人员的信息: "< people: : display(); salary=csalary(); cout<<"工作小时: "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 运用 面向 对象 程序设计语言 相关 知识 高等 程序设计 实验 报告