实验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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值