zoukankan      html  css  js  c++  java
  • 雇员记录系统(C++)

    包含两个类:Employee及Dataset

    //employee.h
    #pragma once
    #include<string>
    namespace Record {
        const int kDefaultstartingSalary = 30000;
        class Employee {
        public:
            Employee();
            void promote(int raiseAmount = 1000);
            void demote(int demoritAmount = 1000);
            void hire();
            void fire();
            void display() const;
            void setFirstName(const std::string& firstName);
            const std::string &getFirstName() const;
            void setLastName(const std::string& lastName);
            const std::string& getLastName()const;
            void setEmployeeNumber(int Employeenumber);
            int getEmployeeNum()const;
    
            void setSalary(int newSalary);
            int getSalary()const;
    
            bool getIsHired() const;
        private:
            std::string mFirstName;
            std::string mLastName;
            int mEmployeeNumber;
            int mSalary;
            bool mIsHired;
    
        };
    }
    //employee.cpp
    #include<iostream>
    #include"employee.h"
    
    using namespace std;
    namespace Record {
        Employee::Employee()
            :mFirstName(""),
            mLastName(""),
            mEmployeeNumber(-1),
            mSalary(kDefaultstartingSalary),
            mIsHired(false)
        {}
        void Employee::promote(int raiseAmount)
        {
            setSalary(getSalary() + raiseAmount);
        }
        void Employee::demote(int raiseAmount)
        {
            setSalary(getSalary() - raiseAmount);
        }
        void Employee::hire()
        {
            mIsHired = true;
        }
        void Employee::fire()
        {
            mIsHired = false;
        }
        void Employee::display()const
        {
            cout << "Employee:" << getLastName() << "," << getFirstName() << endl;
            cout << "---------------" << endl;
            cout << (mIsHired ? "Current Employee" : "Promote Employee") << endl;
            cout << "Employee number:" << getEmployeeNum() << endl;
            cout << "Salary:$" << getSalary() << endl;
            cout << endl;
        }
        void Employee::setFirstName(const std::string& firstName)
        {
            mFirstName = firstName;
        }
        const std::string& Employee::getFirstName() const
        {
            return mFirstName;
        }
        void Employee::setLastName(const std::string& lastName)
        {
            mLastName = lastName;
        }
        const std::string& Employee::getLastName()const
        {
            return mLastName;
        }
        void Employee::setEmployeeNumber(int Employeenumber)
        {
            mEmployeeNumber = Employeenumber;
        }
        int Employee::getEmployeeNum()const
        {
            return mEmployeeNumber;
        }
        void Employee::setSalary(int newSalary)
        {
            mSalary = newSalary;
        }
        int Employee::getSalary()const
        {
            return mSalary;
        }
        bool Employee::getIsHired() const
        {
            return mIsHired;
        }
    }
    //Dataset.h
    #pragma once
    #include<iostream>
    #include<vector>
    #include"employee.h"
    namespace Record
    {
        const int kFirstEmployeeNumber = 1000;
        class Dataset{
        public:
            Dataset();
            Employee& addEmployee(const std::string firstName,
                                  const std::string lastName);
            Employee& getEmployee(int employeeNum);
            Employee& getEmployee(const std::string firstName,
                const std::string lastName);
            void DisplayAll()const;
            void DisplayCurrent()const;
        private:
            std::vector<Employee>mEmployees;
            int mNextEmployeenumber;
        };
    }
    //Dataset.cpp
    #include<iostream>
    #include<stdexcept>
    #include"Dataset.h"
    using namespace std;
    namespace Record {
        Dataset::Dataset() :mNextEmployeenumber(kFirstEmployeeNumber)
        {}
        Employee& Dataset::addEmployee(const string firstName, const string lastName)
        {
            Employee theEmployee;
            theEmployee.setFirstName(firstName);
            theEmployee.setLastName(lastName);
            theEmployee.setEmployeeNumber(mNextEmployeenumber++);
            theEmployee.hire();
            mEmployees.push_back(theEmployee);
            return mEmployees[mEmployees.size() - 1];
        }
        Employee& Dataset::getEmployee(int employeeNum)
        {
            for (auto employee : mEmployees)
            {
                if (employee.getEmployeeNum() == employeeNum)
                    return employee;
            }
            throw runtime_error("No Employee found.");
        }
        Employee& Dataset::getEmployee(const std::string firstName,
            const std::string lastName)
        {
            for (auto employee : mEmployees)
            {
                if (employee.getFirstName() == firstName && employee.getLastName() == lastName)
                    return employee;
            }
            throw runtime_error("No Employee found.");
        }
        void Dataset::DisplayAll()const
        {
            for (const auto & employee : mEmployees)
            {
                employee.display();
            }
        }
        void Dataset::DisplayCurrent()const
        {
            for (const auto& employee : mEmployees)
            {
                if (employee.getIsHired())
                    employee.display();
            }
        }
    }
    //EmployeeTest.cpp
    #include<iostream>
    #include"employee.h"
    using namespace std;
    using namespace Record;
    
    int main(int args, char* argv[])
    {
        cout << "Testing the Employee Class" << endl;
        Employee emp;
        emp.setLastName("Doe");
        emp.setFirstName("John");
        emp.setEmployeeNumber(71);
        emp.setSalary(50000);
        emp.promote();
        emp.promote(50);
        emp.hire();
        emp.display();
        return 0;
    }
    //DatasetTest.cpp
    #include<iostream>
    #include"Dataset.h"
    
    using namespace std;
    using namespace Record;
    
    int main()
    {
        Dataset myDat;
        Employee& emp1 = myDat.addEmployee("John", "Doe");
        emp1.fire();
        Employee& emp2 = myDat.addEmployee("Michale", "Jackson");
        emp2.setSalary(100000);
        Employee& emp3 = myDat.addEmployee("Jack", "Ma");
        emp3.setSalary(100000);
        emp3.promote();
        cout << "Display all ." << endl;
        myDat.DisplayAll();
        cout << "+++++++++++++++++" << endl;
        cout << "Display Current Employee." << endl;
        myDat.DisplayCurrent();
        return 0;
    }
    //UserInterface.cpp
    #include<iostream>
    #include<stdexcept>
    #include<exception>
    #include"Dataset.h"
    #include"employee.h"
    
    using namespace std;
    using namespace Record;
    
    int DisplayMenu();
    void doHire(Dataset& db);
    void doFire(Dataset& db);
    void doPromote(Dataset& db);
    
    
    
    int main()
    {
        Dataset employeeDB;
        bool done = false;
        while (!done)
        {
            int selection = DisplayMenu();
            switch (selection)
            {
            case 1:
                doHire(employeeDB);
                break;
            case 2:
                doFire(employeeDB);
                break;
            case 3:
                doPromote(employeeDB);
                break;
            case 4:
                employeeDB.DisplayAll();
                break;
            case 5:
                employeeDB.DisplayCurrent();
                break;
            case 0:
                done = true;
                break;
            default:
                cerr << "Unknow command." << endl;
                break;
    
    
            }
        }
        return 0;
    }
    int DisplayMenu()
    {
        int selection;
        cout << endl;
        cout << "Employee Dataset" << endl;
        cout << "--------------" << endl;
        cout << "1) Hire a new employee" << endl;
        cout << "2) Fire an employee" << endl;
        cout << "3) Promote an employee" << endl;
        cout << "4) List all employees" << endl;
        cout << "5) List all current employees" << endl;
        cout << "6) List all former employees" << endl;
        cout << "0) Quit" << endl;
        cout << endl;
        cout << "------>";
        cin >> selection;
        return selection;
    }
    
    void doHire(Dataset& db)
    {
        string firstName;
        string lastName;
        cout << "First name? ";
        cin >> firstName;
        cout << "Last Name? ";
        cin >> lastName;
        try {
            db.addEmployee(firstName, lastName);
        }
        catch (const std::exception& exception)
        {
            cerr << "Unable to add new employee:" << exception.what() << endl;
        }
    }
    
    void doFire(Dataset& db)
    {
        int employeeNumber;
        cout << "employee num?" << endl;
        cin >> employeeNumber;
        try
        {
            Employee& emp = db.getEmployee(employeeNumber);
            emp.fire();
            cout << "Employee" << employeeNumber << " terminated." << endl;
    
        }
        catch(const std::exception&exception)
        {
            cerr << "Unable to terminate employee:" << exception.what() << endl;
        }
    }
    
    void doPromote(Dataset& db)
    {
        int employeeNum;
        int raiseNum;
        cout << "employee num?" << endl;
        cin >> employeeNum;
        cout << "How much of a raise ?" << endl;
        cin >> raiseNum;
        try
        {
            Employee& emp = db.getEmployee(employeeNum);
            emp.promote(raiseNum);
    
    
        }
        catch (const std::exception& exception)
        {
            cerr << "Unable to Promote employee:" << exception.what() << endl;
        }
    }
  • 相关阅读:
    Python004-数据处理示例:以某个数据(字段)为基准从数据中获取不同的字段行数
    VUE-004-禁止修改页面显示项,设置el-input,textarea只读方法
    VUE-003-前端表格数据展示时,设置单元格(el-table-column)保留空格和换行
    cobaltstrike4.0 cracked
    CobaltStrike3.14破解
    CobaltStrike3.12/13 破解
    Windows 10 Manager v2.3.3
    MobaXterm v10.9破解
    Jupyter/JupyterLab安装使用
    WordPress <= 4.6 命令执行漏洞(PHPMailer)复现分析
  • 原文地址:https://www.cnblogs.com/fourmi/p/12194863.html
Copyright © 2011-2022 走看看