⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pr13006.cpp

📁 c++编程宝典源码及Quincy99编译器 是《标准C++编程宝典》电子工业出版社的光盘
💻 CPP
字号:
////////////////////////////////////////
// File Name: pr13006.cpp
////////////////////////////////////////
#include <WagedEmployee.h>
#include <SalariedEmployee.h>
#include <Contractor.h>

////////////////////////////////////////
// The ReadString() function.
////////////////////////////////////////
std::string ReadString(const std::string& prompt)
{
    std::string str;
    std::cout << prompt << ": ";
    std::getline(std::cin, str);

    return str;
}

////////////////////////////////////////
// The ReadDate() function.
////////////////////////////////////////
Date ReadDate(const std::string& prompt)
{
    Date dt;
    std::cout << prompt << " (mm dd yyyy): ";
    std::cin >> dt;

    return dt;
}

////////////////////////////////////////
// The ReadMoney() function.
////////////////////////////////////////
Money ReadMoney(const std::string& prompt)
{
    double mn;
    std::cout << prompt << ": ";
    std::cin >> mn;

    return mn;
}

////////////////////////////////////////
// The PersonInput() function.
////////////////////////////////////////
void PersonInput(Person* pPerson)
{
    static std::string str;
    std::getline(std::cin, str); // flush the input buffer
    pPerson->SetName(ReadString("Name"));
    pPerson->SetAddress(ReadString("Address"));
    pPerson->SetPhone(ReadString("Phone"));
    pPerson->SetDob(ReadDate("Date of birth"));

    long int ssn;
    std::cout << "SSN: ";
    std::cin >> ssn;
    pPerson->SetSSN(SSN(ssn));

    char sx;
    do
    {
        std::cout << "Sex (m/f) ";
        std::cin >> sx;
    }
    while (sx != 'm' && sx != 'f');

    pPerson->SetSex(sx == 'm' ? Person::male : Person::female);
}

////////////////////////////////////////
// The EmployeeInput() function.
////////////////////////////////////////
void EmployeeInput(Employee* pEmployee)
{
    pEmployee->SetDateHired(ReadDate("Date hired"));
}

////////////////////////////////////////
// The WagedEmployeeInput() function.
////////////////////////////////////////
void WagedEmployeeInput(WagedEmployee* pWagedEmployee)
{
    pWagedEmployee->SetHourlyWage(ReadMoney("Hourly wage"));
}

////////////////////////////////////////
// The SalariedEmployeeInput() function.
////////////////////////////////////////
void SalariedEmployeeInput(SalariedEmployee* pSalariedEmployee)
{
    pSalariedEmployee->SetSalary(ReadMoney("Salary"));
}

////////////////////////////////////////
// The ContractorInput() function.
////////////////////////////////////////
void ContractorInput(Contractor* pContractor)
{
    pContractor->SetStartDate(ReadDate("Start date"));
    pContractor->SetEndDate(ReadDate("End date"));
    pContractor->SetHourlyRate(ReadMoney("Hourly rate"));
}

////////////////////////////////////////
// The main() function.
////////////////////////////////////////
int main()
{
    Person* pPerson = 0;
    std::cout << "1 = Salaried employee" << std::endl
              << "2 = Waged employee"    << std::endl
              << "3 = Contractor"        << std::endl
              << "Enter selection: ";
    int sel;
    std::cin >> sel;

    switch (sel)
    {
        case 1:
            pPerson = new SalariedEmployee;
            PersonInput(pPerson);
            EmployeeInput((Employee*)pPerson);
            SalariedEmployeeInput((SalariedEmployee*)pPerson);
            break;

        case 2:
            pPerson = new WagedEmployee;
            PersonInput(pPerson);
            EmployeeInput((Employee*)pPerson);
            WagedEmployeeInput((WagedEmployee*)pPerson);
            break;

        case 3:
            pPerson = new Contractor;
            PersonInput(pPerson);
            ContractorInput((Contractor*)pPerson);
            break;

        default:
            std::cout << "\aIncorrect entry";
            break;
    }

    if (pPerson != 0)
    {
        pPerson->FormattedDisplay(std::cout);
        delete pPerson;
    }

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -