实验1:实验内容
定义员工类Worker,其属性有工号id、姓名name、年龄age、性别gender、工资salary等;
(1) 提供构造函数以不同方式构造对象,并调用成员函数输出各对象的所有信息;
(2) 计算工资最高者、最低者以及工资平均值;
(3) 比较男性员工和女性员工的平均工资。
实验2实验内容
编写程序,实现下列要求:
(1) 定义人员类Person,其属性有(保护类型):姓名、性别、年龄;
(2) 派生出学生类Student,添加属性:学号、入学时间和入学成绩;
(3) 从Person类再派生出教师类Teacher,添加属性:职务、部门、工作时间;
(4) 由Student类派生出研究生类Graduate,添加属性:研究方向和导师;
(5) 由Graduate和Teacher类共同派生出研究生导师类Supervisor;
(6) 在每个类中提供必要的成员函数,分别实现对象的构造、析构、输入和输出等操作;
(7) 在函数main()中定义各种对象,并分别测试它们的操作。
本人小白,但看到实验一不太难,所以写了写,我用的环境是DevC++4.9.9.2, 下面是代码,供楼主参考。
/*************************worker.h*******************/#ifndef WORKERS_H
#define WORKERS_H
#include <string>
using namespace std;
class Worker
{
public:
Worker();
Worker(string& id, string& name, char& gender, int& age, double& salary)
:str_id(id), str_name(name), ch_gender(gender), i_age(age), dbl_salary(salary){}
string GetId(){return str_id;}
string GetName(){return str_name;}
char GetGender(){return ch_gender;}
int GetAge(){return i_age;}
double GetSalary(){return dbl_salary;}
void PrintWorker()
{
cout<<"id: "<<str_id<<" name: "<<str_name<<" gender: "<<ch_gender
<<" age: "<<i_age<<" salary: "<<dbl_salary<<endl;
}
private:
string str_id;
string str_name;
char ch_gender;//M or F
int i_age;
double dbl_salary;
};
#endif
/**********************main.cpp*************************/
#include <iostream>
#include <fstream>
#include <vector>
#include "worker.h"
using namespace std;
void GetHighestSalary(vector<Worker>& workers)
{
double max_salary = 0;
int max_index = 0;
int num_workers = workers.size();
for(int i=0; i<num_workers; ++i)
{
if(workers[i].GetSalary() > max_salary)
{
max_salary = workers[i].GetSalary();
max_index = i;
}
}
cout<<"the person whoes salary is the highest:\n";
workers[max_index].PrintWorker();
}
void GetlowestSalary(vector<Worker>& workers)
{
double min_salary = 9999999;
int min_index = 0;
int num_workers = workers.size();
for(int i=0; i<num_workers; ++i)
{
if(workers[i].GetSalary() < min_salary)
{
min_salary = workers[i].GetSalary();
min_index = i;
}
}
cout<<"the person whoes salary is the highest:\n";
workers[min_index].PrintWorker();
}
double CalculateAverageSalary(vector<Worker>& workers)
{
int num_workers = workers.size();
double average_salary = 0;
for(int i=0; i<num_workers; ++i)
{
average_salary += workers[i].GetSalary();
}
return average_salary/num_workers;
}
void CompareGenderAverageSalary(vector<Worker>& workers)
{
int num_workers = workers.size();
double F_average_salary = 0;
double M_average_salary = 0;
int F_workers = 0;
int M_workers = 0;
for(int i=0; i<num_workers; ++i)
{
if(workers[i].GetGender() == 'F')
{
F_average_salary += workers[i].GetSalary();
++F_workers;
}
else
{
M_average_salary += workers[i].GetSalary();
++M_workers;
}
}
F_average_salary /= F_workers;
M_average_salary /= M_workers;
if(M_average_salary > F_average_salary)
{
cout<<"male's average salary is higher!\n";
}
else
{
cout<<"female's average salary is higher!\n";
}
//return F_average_salary < M_average_salary ? false:true;
}
int main()
{
string id, name;
char gender;
int age;
double salary;
vector<Worker> workers;
ifstream fin("workers.txt");
while(1)
{
fin>>id>>name>>gender>>age>>salary;
if(id == "^Z")
{
break;
}
workers.push_back(Worker(id, name, gender, age, salary));
}
//int size = workers.size();
//cout<<"number of workers: "<<size<<endl;
GetHighestSalary(workers);
GetlowestSalary(workers);
double average_salary = CalculateAverageSalary(workers);
cout<<"the average salary is: "<<average_salary<<endl;
CompareGenderAverageSalary(workers);
system("pause");
return 0;
}