C++ C++;多态性员工项目

C++ C++;多态性员工项目,c++,C++,为了上课,我必须修改上周为多态性编写的程序。上周,它为员工使用了一组特定的信息,但现在我必须让它与多态性以及文件中的读/写数据一起工作,我完全不知道我应该做什么,如果有人能给我指出正确的方向,那将是非常有帮助的。我可以发布我当前的.h和.cpp文件,看看我有什么以及我应该做什么的说明 .h #pragma once #include <string> using namespace std; class Employee { private: int em

为了上课,我必须修改上周为多态性编写的程序。上周,它为员工使用了一组特定的信息,但现在我必须让它与多态性以及文件中的读/写数据一起工作,我完全不知道我应该做什么,如果有人能给我指出正确的方向,那将是非常有帮助的。我可以发布我当前的.h和.cpp文件,看看我有什么以及我应该做什么的说明

.h

#pragma once

#include <string>

using namespace std;
class Employee {
    private:
        int employeeNumber; // Employee's employee number
        string employeeName; //Employee's name
        string streetAddress; //Employee's street address
        string phoneNumber; //Employee's phone number
        double hourlyWage; //Employee's hourly wage
        double hoursWorked; //Employee's hours worked
        double netPay; //Net pay
        double grossPay; //Gross pay
    public:

Employee();
Employee(int, string, string, string, double, double);



    int getEmployeeNumber();
    void setEmployeeNumber(int);

    string getEmployeeName();
    void setEmployeeName(string);

    string getStreetAddress();
    void setStreetAddress(string);

    string getPhoneNumber();
    void setPhoneNumber(string);

    double getHourlyWage();
    void setHourlyWage(double);

    double getHoursWorked();
    void setHoursWorked(double);



double calcPay()
{
    const int OVER = 40;
    double federal = 0.20;
    double state = 0.075;
    double timeHalf = 1.5;
    double grossPay;
    double netPay;
    if (getHoursWorked() < OVER)
    {
        grossPay = getHoursWorked() * getHourlyWage();
        netPay = grossPay - (grossPay * federal) - (grossPay * state);
    }

    if (getHoursWorked() >= OVER)
    {
        grossPay = getHoursWorked() * ((getHourlyWage() * timeHalf));
        netPay = grossPay - (grossPay * federal) - (grossPay * state);

    }
    return netPay;
}




};
#pragma一次
#包括
使用名称空间std;
班级员工{
私人:
int employeeNumber;//员工的员工编号
字符串employeeName;//员工姓名
string streetAddress;//员工的街道地址
字符串phoneNumber;//员工的电话号码
双倍小时工资;//员工的小时工资
工作两小时;//员工的工作时间
双倍净支付;//净支付
双倍总工资;//总工资
公众:
雇员();
雇员(int,string,string,string,double,double);
int getEmployeeNumber();
void setEmployeeNumber(int);
字符串getEmployeeName();
void setEmployeeName(字符串);
字符串getStreetAddress();
void setStreetAddress(字符串);
字符串getPhoneNumber();
void setPhoneNumber(字符串);
双getHourlyWage();
无效设置小时数(双倍);
双倍工作时间();
无效设置工时(双倍);
双calcPay()
{
常数大于等于40;
双联邦=0.20;
双态=0.075;
双时间半=1.5;
重瓣罗缎;
双网支付;
如果(getHoursWorked()=结束)
{
grossPay=getHoursWorked()*((getHourlyWage()*timeHalf));
netPay=grossPay-(grossPay*联邦)-(grossPay*州);
}
退回网付;
}
};
.cpp

#include <iostream>
#include <string>
#include <fstream>
#include "Employee.h"
#include <iomanip>

using namespace std;

Employee::Employee()
{
    employeeNumber = 0; // Employee's employee number
    employeeName = ""; //Employee's name
    streetAddress = ""; //Employee's street address
    phoneNumber = ""; //Employee's phone number
    hourlyWage = 0; //Employee's hourly wage
    hoursWorked = 0;
    grossPay = 0;
    netPay = 0;
}


Employee::Employee(int empNum, string empName, string streetAddress,
string phoneNumber, double hourlyWage, double hoursWorked)
{

    employeeNumber = empNum;
    employeeName = empName;
    this->streetAddress = streetAddress;
    this->phoneNumber = phoneNumber;
    this->hourlyWage = hourlyWage;
    this->hoursWorked = hoursWorked;
    grossPay = 0;
    netPay = 0;
}

int Employee::getEmployeeNumber()
{
    return employeeNumber;
}

void Employee::setEmployeeNumber(int empNum)
{
    employeeNumber = empNum;
}

string Employee::getEmployeeName()
{
    return employeeName;
}

void Employee::setEmployeeName(string empName)
{
    employeeName = empName;
}


string Employee::getStreetAddress()
{
    return streetAddress;
}

void Employee::setStreetAddress(string strtAddrs)
{
    streetAddress = strtAddrs;
}

string Employee::getPhoneNumber()
{
    return phoneNumber;
}

void Employee::setPhoneNumber(string phnNum)
{
    phoneNumber = phnNum;
}

double Employee::getHourlyWage()
{
    return hourlyWage;
}

void Employee::setHourlyWage(double hrWage)
{
    hourlyWage = hrWage;
}

double Employee::getHoursWorked()
{
    return hoursWorked;
}

void Employee::setHoursWorked(double hrWorked)
{
    hoursWorked = hrWorked;
}

void printCheck(Employee ee)
{
cout << "\n\n--------------------- Fluff Shuffle Electronics -------------------------------- \n";
cout << " Pay to the order of " << ee.getEmployeeName() << "...........................$" << ee.calcPay();
cout << "\n\n United Bank of Eastern Orem \n";
cout << "------------------------------------------------------------------------------- \n";
cout << " Hours Worked: " << ee.getHoursWorked();
cout << "\n Hourly Wage: " << ee.getHourlyWage();
cout << endl << endl;

}//End of function

void read(ifstream &in)
{

    Employee employees[10];
    int counter = 0;
    while (in.read((char *)&employees[counter++], sizeof(Employee)))
    for (int i = 0; i<counter; i++)
        {
            printCheck(employees[i]);
        }
    in.close();
}

void write(ofstream &out)
{
    Instantiate your employees here first, then call their functions.
    Employee joe(37, "Joe Brown", "123 Main St.", "123-6788", 10.00,
45.00);
    printCheck(joe);
    Employee sam(21, "Sam Jones", "45 East State", "661-9000", 12.00,
30.00);
    printCheck(sam);
Employee mary(15, "Mary Smith", "12 High Street", "401-8900", 15.00, 40.00);
printCheck(mary);
out.write((char *)(&joe), sizeof(Employee));
out.write((char *)(&sam), sizeof(Employee));
out.write((char *)(&mary), sizeof(Employee));
out.close();
}

//Main function
int main()
{
    int choice;
    string filename;
    while (true)
    {
        cout << "\nThis program has two options:\n";
        cout << "1 - Create a data file, or\n";
        cout << "2 - Read data from a file and print paychecks\n";
        cout << "\n Press any other key to quit..........\n";
        cout << "Please enter <1> to create a file or <2> to print
        checks: ";
        cin >> choice;

    if (choice == 1)
    {
        cout << "Enter the file name: ";
        cin >> filename;
        ofstream out(filename);
        out.open(filename.c_str(), ios::binary);
        write(out);
    }
    else if (choice == 2)
    {
        cout << "Enter the file name: ";
        cin >> filename;
        ifstream in(filename);
        in.open(filename.c_str(), ios::binary);
        read(in);

    }
    else break;
    //Calls function to displays information


}
}//End of main
#包括
#包括
#包括
#包括“Employee.h”
#包括
使用名称空间std;
雇员::雇员()
{
employeeNumber=0;//员工的员工编号
employeeName=“;//员工姓名
streetAddress=“;//员工的街道地址
phoneNumber=“;//员工的电话号码
hourlyWage=0;//员工小时工资
工时=0;
grossPay=0;
净支付=0;
}
Employee::Employee(int-empNum、字符串empName、字符串streetAddress、,
字符串电话号码,双小时通话,双小时工作)
{
employeeNumber=empNum;
employeeName=empName;
此->街道地址=街道地址;
此->电话号码=电话号码;
此->hourlyWage=hourlyWage;
此->小时工作=小时工作;
grossPay=0;
净支付=0;
}
int Employee::getEmployeeNumber()
{
返回员工编号;
}
void Employee::setEmployeeNumber(int empNum)
{
employeeNumber=empNum;
}
字符串Employee::getEmployeeName()
{
返回员工姓名;
}
void Employee::setEmployeeName(字符串empName)
{
employeeName=empName;
}
字符串Employee::getStreetAddress()
{
返回街道地址;
}
void Employee::setStreetAddress(字符串strtAddrs)
{
streetAddress=strtAddrs;
}
字符串Employee::getPhoneNumber()
{
返回电话号码;
}
void Employee::setPhoneNumber(字符串phnNum)
{
phoneNumber=phnNum;
}
double Employee::getHourlyWage()
{
返回小时数;
}
作废员工::设置小时工资(双倍人力工资)
{
小时工资=人力资源工资;
}
双重员工::getHoursWorked()
{
返回工作小时数;
}
无效员工::setHoursWorked(双小时工时)
{
工时=工时;
}
作废打印检查(员工ee)
{

cout开始:创建两个派生自Employee的类:

class HourlyEmployee: public Employee
{
};

class SalariedEmployee: public Employee
{
}
并将与小时工作相关的成员从Employee移动到HourlyEmployee,然后将与薪水相关的成员添加到SalariedEmployee(每周)

通过这种方式(删除与小时工作相关的属性),您可以使Employee类更加通用,它可以作为其他类型员工(SalariedEmployee)的基础


当你从Employee中获得HourlyEmployee或SalariedEmployee时,你的意思是他们是某种类型的员工,因此员工拥有的成员将自动继承。

你需要与讲师或导师交谈以了解多态性。你为你的教育支付了大量的钱。在课堂上提问以确保这些钱是有效的是值得的。你有UML图。你已经创建了基类,所以现在创建了子类。所需的函数都在那里为你详细说明了。你应该向你的讲师了解你所坚持的内容。我认为,如果书籍、在线教程和d希望与你的导师进行一对一的交流。顺便说一句,这两个链接指向同一件事。StackOverflow不是让人们为你做作业的。如果你在某个特别的问题上陷入困境,请将问题隔离到最低限度,然后只问这个问题。但不要只是发布一堆代码和说明,期望有人来解决我的问题t,或者解释它是什么以及它是如何工作的。这就是你的讲师的职责。关于你的代码注释的提示:
int employeeNumber;//员工的员工编号
该注释没有任何作用。变量名很好,因此不需要注释。(如果变量名不正确,请在添加注释之前先尝试修复变量名,)如果删除多余的注释,则重要的注释会更加突出。