福建农林大学金山学院实验报告
系(教研室):信息与机电工程系 专业:计算机科学与技术 年级: 实验课程:面向对象程序设计 姓名: 学号: 实验室号
计算机号 实验时间: 指导教师签字: 成绩:
实验10 综合练习
一、实验目的和要求
进一步巩固和提高对面向对象的基本概念、原理和机制的理解
二、实验内容和原理
某学校对教职工每月工资的计算规定如下:专职教师固定工资2000,再加上课时补贴20元/课时;行政人员只有固定工资3000元/每月;兼职教师只有课时补贴50元/课时。要求: 1、定义教职工抽象类,从而派生出专职教师类、行政人员类和兼职教师类;
2、读取“input.txt”文件中的数据,每行各组数据分别表示教职工类型、姓名、性别、年龄和课时数(其中教职工类型:整数1表示专职教师,整数2表示行政人员,整数3表示兼职教师); 3、计算每位教职工的工资,并把其所有相关信息输出到屏幕上(包括姓名、性别、年龄、课时数和计算出来的每月工资),要求所有数据全部右对齐,且阈宽为10;
4、分别计算每类教职工的平均工资,然后计算所有教职工的总体平均工资(采用动态联编),并把计算结果输出到文件“output.txt”中。
三、实验环境
1. 硬件:PC机;
2. 软件:Windows操作系统、Visual C++ 6.0
四、算法描述及实验步骤
(1)在VC环境下根据题目写出类
(2)检查程序有无错误(包括语法错误和逻辑错误),有则改之。 (3)编译和连接。
#include
int sum; int temp; };
class Fteacher:public Staff //专职教师类 { public:int s;
float sumsalary(){return (sum);}; float salary() { return( 2000+classtime*20);}
};
class Executive:public Staff //{public:float sumsalary(){return (sum);}; float salary() {return(3000);} };
class Pteacher:public Staff //{public:float sumsalary(){return (sum);}; float salary() {return(classtime*50);} };
void calculation(Staff &p,int x) //{ p.classtime=x; cout<
p.temp++;
p.sum=p.sum+p.salary(); }
float aversalary(Staff &p) //编 {
行政人员类 兼职教师类 计算每种职工工资 计算每种职工平均工资运用动态联 return(p.sumsalary()/p.temp); }
double Total(Staff &a,Staff &b,Staff &c) //计算三种职工的平均工资运用动态联编
{double sum=0;
sum=(aversalary(a) +aversalary(b) +aversalary (c)); return sum/3; }
int main() {
ifstream infile(\以输入方式打开input.txt文本 if(!infile) {cout<<\} else
{Fteacher Ft;Ft.sum=0; Executive Ex;Ex.sum=0; Pteacher Pt;Pt.sum=0; int type; string name; string sex; int age; int classtime;
Ft.temp=0,Ex.temp=0,Pt.temp=0;
while(!infile.eof()) //读取input.txt文本内容并输出到屏幕 {for(int i=0;i<7;i++)
{infile>>type>>name>>sex>>age>>classtime;
cout.setf(ios::left);cout< ofstream outfile(\以输出方式创建文件名为output.txt的文件 outfile<<\专职教师的平均工资=\outfile<<\行政人员的平均工资=\outfile<<\兼职教师的平均工资=\outfile<<\所有教职工的总体平均工资=\return 0; } (4)运行程序,,分析结果。 五、调试过程 六、实验结果 1.input.txt内容: 输出一个名字为output.txt的本文文档 内容为:七、总结 这次综合练习使我更进一步巩固和提高对面向对象的基本概念、原理和机制的理解

