如何记录多个记录并在C ++中保持运行记录

时间:2017-01-31 01:02:54

标签: c++ parameter-passing running-total

请注意:我建议使用数组,函数,参数传递来实现我的目标。

另一位需要帮助的计算器程序学生......你们中有多少人见过你们?严肃地说,我需要使用函数和参数传递来创建4名员工,然后计算总薪酬,联邦税总额,州税总额和所有四名员工的总净工资。到目前为止,我已经能够制作一个仅为1名员工执行此操作的程序。 我的问题是:如何扩展此代码以记录4个员工记录,然后计算上述总数? 我正在考虑将其置于for-loop中从i< 4开始,但我不确定。我最关心的是使用参数传递,因为我需要来使用参数传递。这是代码:

#include<iostream>
#include<string>
#include<iomanip>

using namespace std;

string employeeName;
float overtime;
float grossPay;
float hoursWorked;
float hourlyRate;
float statetaxOwed;
float statetaxRate;
float fedtaxOwed;
float fedtaxRate;
float netPay;

int main()
{
    cout << "Please enter the Employee's Name: ";
    getline(cin, employeeName);
    cout << "Please enter your hours worked: ";
    cin >> hoursWorked;
    cout << "Please enter your hourly rate: ";
    cin >> hourlyRate;
    cout << "Please enter the Federal Tax Rate: ";
    cin >> fedtaxRate;
    cout << "Please enter the State Tax Rate: ";
    cin >> statetaxRate;

    if (hoursWorked>40){
        hoursWorked = ((hoursWorked-40) * (1.5)) + 40;
    }
    else {
        hoursWorked=hoursWorked;
    }
    grossPay = hoursWorked * hourlyRate;
    fedtaxOwed = grossPay * (fedtaxRate/100);
    statetaxOwed = grossPay * (statetaxRate/100);
    netPay = (grossPay-fedtaxOwed- statetaxOwed);

    cout << setprecision(2) << showpoint << fixed;
    cout << "\nThe employee's name is: " << employeeName << endl;
    cout << "The Gross Pay is: $" << grossPay << endl;
    cout << "The Federal Taxes Owed is: $" << fedtaxOwed << endl;
    cout << "The State Taxes Owed is: $" << statetaxOwed << endl;
    cout << "The Net Pay for the Employee is: $" << netPay << endl;
}

理想情况下,流程的运行方式如下:

输入:员工1名称,工作小时数,小时费率,联邦税率和州税率

输入:员工2名称,工作小时数,小时费率,联邦税率和州税率

输入:员工3名称,工作小时数,小时费率,联邦税率和州税率

输入:员工4姓名,工作小时数,小时费率,联邦税率和州税率

{C A L C U L A T E}

打印:员工1姓名,总薪酬,美联储欠税,国家税收,净薪酬

打印:员工2名称,总薪酬,所欠税款,国家税收,净薪酬

打印:员工3姓名,总薪酬,美联储欠税,国家税收,净薪酬

打印:员工4姓名,总薪酬,美联储欠税,国家税收,净薪酬

打印:总薪酬,所欠联邦税总额,所欠国家税总额,净薪酬总额[这超过所有四名员工]

打印:计算加班工资总额和打印超时工作的员工数量

1 个答案:

答案 0 :(得分:0)

首先,使用结构来描述一个员工:

struct EmployeeData
{
    string employeeName;
    float overtime;
    float grossPay;
    float hoursWorked;
    float hourlyRate;
    float statetaxOwed;
    float statetaxRate;
    float fedtaxOwed;
    float fedtaxRate;
    float netPay;
};

然后使用数组或其他容器类来描述多个EmployeeData

EmployeeData employee[4];  // array of 4 employees

然后访问每个员工,它将是:

employee[0] // first employee
employee[1] // second employee
employee[2] // third employee
employee[3] // fourth employee

注意方括号中的数字。您现在可以循环遍历员工数组:

// input the data for the 4 employees
for (int i = 0; i < 4; ++i)
{
   cin >> empployee[i].employeeName;
   cin >> empployee[i].overtime;
   // etc..
}

定义功能:

void calculate_stats(Employee& theEmployee)
{
    // theEmployee is the employee passed into the function
    //...
}

然后调用函数:

int main()
{ 
    //...
    for (int i = 0; i < 4; ++i)
    {
       calculate_stats(employee[i]);
    }
    //...
}

这基本上就是骨架。如果有的话,您可以挑选出您可以使用的部件。