小白求助 C++编程 急 在线等

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++中的类定义、成员函数定义、构造函数、继承和友元函数的使用。希望对你有所帮助!如果有任何问题,请随时提问。