1、定义一个职工类CWorker,数据成员包括姓名、职工号、工龄、工资;成员函数有构造函数,设置数据成员值的函数,读取数据成员值的函数。在主函数中定义对象数组,再编写一个CWorker类的友元函数,计算平均工资,查找最高工资。
2、设计一个职工类CWorker,成员包括姓名、职工号、工龄、工资及相关的成员函数。由它派生出教师类CTeacher,包括职称,所属部门等属性和相关的成员函数。编写一个主函数,对设计的类进行测试。
1、定义一个职工类CWorker,数据成员包括姓名、职工号、工龄、工资;成员函数有构造函数,设置数据成员值的函数,读取数据成员值的函数。在主函数中定义对象数组,再编写一个CWorker类的友元函数,计算平均工资,查找最高工资。
2、设计一个职工类CWorker,成员包括姓名、职工号、工龄、工资及相关的成员函数。由它派生出教师类CTeacher,包括职称,所属部门等属性和相关的成员函数。编写一个主函数,对设计的类进行测试。
该回答引用ChatGPT-3.5,仅供参考,不保证完全正确
以下是两个问题的解决方案:
问题1:
#include <iostream>
#include <string>
using namespace std;
class CWorker {
private:
string name;
string workerID;
int yearsOfService;
double salary;
public:
CWorker(string n, string id, int years, double sal) {
name = n;
workerID = id;
yearsOfService = years;
salary = sal;
}
void setName(string n) {
name = n;
}
void setWorkerID(string id) {
workerID = id;
}
void setYearsOfService(int years) {
yearsOfService = years;
}
void setSalary(double sal) {
salary = sal;
}
string getName() {
return name;
}
string getWorkerID() {
return workerID;
}
int getYearsOfService() {
return yearsOfService;
}
double getSalary() {
return salary;
}
friend double calculateAverageSalary(CWorker* workers, int numWorkers);
friend double findMaxSalary(CWorker* workers, int numWorkers);
};
double calculateAverageSalary(CWorker* workers, int numWorkers) {
double totalSalary = 0;
for (int i = 0; i < numWorkers; i++) {
totalSalary += workers[i].salary;
}
return totalSalary / numWorkers;
}
double findMaxSalary(CWorker* workers, int numWorkers) {
double maxSalary = workers[0].salary;
for (int i = 1; i < numWorkers; i++) {
if (workers[i].salary > maxSalary) {
maxSalary = workers[i].salary;
}
}
return maxSalary;
}
int main() {
const int numWorkers = 3;
CWorker workers[numWorkers] = {
CWorker("John", "W001", 5, 5000.0),
CWorker("Jane", "W002", 10, 7000.0),
CWorker("Mike", "W003", 3, 4000.0)
};
double averageSalary = calculateAverageSalary(workers, numWorkers);
double maxSalary = findMaxSalary(workers, numWorkers);
cout << "Average Salary: " << averageSalary << endl;
cout << "Max Salary: " << maxSalary << endl;
return 0;
}
问题2:
#include <iostream>
#include <string>
using namespace std;
class CWorker {
protected:
string name;
string workerID;
int yearsOfService;
double salary;
public:
CWorker(string n, string id, int years, double sal) {
name = n;
workerID = id;
yearsOfService = years;
salary = sal;
}
void setName(string n) {
name = n;
}
void setWorkerID(string id) {
workerID = id;
}
void setYearsOfService(int years) {
yearsOfService = years;
}
void setSalary(double sal) {
salary = sal;
}
string getName() {
return name;
}
string getWorkerID() {
return workerID;
}
int getYearsOfService() {
return yearsOfService;
}
double getSalary() {
return salary;
}
};
class CTeacher : public CWorker {
private:
string title;
string department;
public:
CTeacher(string n, string id, int years, double sal, string t, string dept)
: CWorker(n, id, years, sal) {
title = t;
department = dept;
}
void setTitle(string t) {
title = t;
}
void setDepartment(string dept) {
department = dept;
}
string getTitle() {
return title;
}
string getDepartment() {
return department;
}
};
int main() {
CTeacher teacher("John", "T001", 5, 5000.0, "Professor", "Mathematics");
cout << "Name: " << teacher.getName() << endl;
cout << "Worker ID: " << teacher.getWorkerID() << endl;
cout << "Years of Service: " << teacher.getYearsOfService() << endl;
cout << "Salary: " << teacher.getSalary() << endl;
cout << "Title: " << teacher.getTitle() << endl;
cout << "Department: " << teacher.getDepartment() << endl;
return 0;
}
这两个例子提供了C++中的类定义、成员函数定义、构造函数、继承和友元函数的使用。希望对你有所帮助!如果有任何问题,请随时提问。