源代碼下載
 實(shí)驗(yàn)二:某工廠有一名老板Boss,及若干工人。工人分為小時(shí)工HourlyWorker、計(jì)件工PieceWorker、銷(xiāo)售員CommissionWorker。小時(shí)工每周工作40小時(shí),超過(guò)40小時(shí)部分的報(bào)酬是平時(shí)的1.5倍;計(jì)件工是按生產(chǎn)的工件計(jì)算報(bào)酬的,每件的報(bào)酬是固定的,假設(shè)他只生產(chǎn)一種類型的工件;銷(xiāo)售員每周有小部分固定的基本工資加上每周銷(xiāo)售額的固定百分比;老板每周有固定的薪水。為該工廠設(shè)計(jì)一個(gè)簡(jiǎn)單的當(dāng)前周的工資管理信息系統(tǒng)。要求如下:

1.設(shè)計(jì)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的類Employee,它存儲(chǔ)雇員的工號(hào)、姓(成員firstName)和名(成員lastName)。從雇員類Employee派生出小時(shí)工類HourlyWorker、計(jì)件工類PieceWorker、銷(xiāo)售員類CommissionWorker及老板類Boss。

2.設(shè)計(jì)實(shí)現(xiàn)一個(gè)工廠類(Factory),它存儲(chǔ)工廠名(factoryName)、工廠中的員工人數(shù)(含老板)等信息。及一個(gè)Employee指針數(shù)組存放工廠的所有員工信息。

3.可以增加一名工人。增加工人時(shí),根據(jù)工人的類別,輸入相應(yīng)的信息。如增加的是小時(shí)工,則需要輸入該小時(shí)工的工號(hào)、姓、名、本周工作小時(shí)數(shù)及每小時(shí)工資額等信息。

4.可以根據(jù)工號(hào)刪除一名工人

5.可以根據(jù)工號(hào)修改工人的信息

6.可以顯示出所有員工的本周工資信息

7.顯示出一些統(tǒng)計(jì)信息,如本周支付所有員工的工資總額;小時(shí)工的工資總額、最高、最低、平均工資;計(jì)件工的工資總額、最高、最低、平均工資;銷(xiāo)售員的工資總額、最高、最低、平均工資
-----------------------------------------------------------------------------------

/***************************
*  雇員類
**************************
*/


class Employee
{
private:
    
int workNo;//工號(hào)
    string firstName;
    
string lastName;
public:
    Employee(
int iworkNo,string cfirstName,string clastName);
    
~Employee();
    
virtual void Show();//顯示員工信息
    virtual double Salary()=0;//員工工資計(jì)算
    virtual void ModifySpecial()=0;//不同員工特有的參數(shù)
    void Modify(int id);
    
int RworkNo(int workno);//工號(hào)配對(duì)
}
;

/****************************
*   工廠類
***************************
*/


class Factory
{
private:
    
string factoryName;
    
int  employeeNum;            //包括老板
    Employee* pEmployee[1000];    // 存放工廠所有員工信息
public:
    Factory(
string cfactoryName);
    
~Factory();
    
void AddWorker(int id);                //增加一個(gè)員工
    void DeleteWorker(int workno);        //刪除一個(gè)員工
    void ModifyWorker(int workno);        //修改員工信息
    void ShowInfo();                    //顯示員工信息
    
    
void TotalSalary();            //計(jì)算總工資
    void HighSalary();            //最高工資
    void LowSalary();            //最低工資
    void AverageSalary();        //平均工資
}
;

歡迎下載,提供建議或意見(jiàn)!有很多不盡人意的地方!源代碼下載最好給出問(wèn)題的提示性解決方法額!

選項(xiàng)輸入字母而不是數(shù)字會(huì)出現(xiàn)循環(huán),可以通過(guò)char-'0'來(lái)解決,但似乎很麻煩,有更好的方法嗎?
周波同學(xué)這樣設(shè)計(jì)
RunMode _Mode;
/*判斷*/
switch(_Mode){
  case ModifyWorkerNumber :
}
俺覺(jué)得不錯(cuò)!采用