

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p><b> 公司人員管理系統(tǒng)</b></p><p> 課 程 :面向?qū)ο笳n程設(shè)計(jì)</p><p><b> 班 級(jí) : </b></p><p><b> 學(xué) 號(hào) : <
2、;/b></p><p><b> 姓 名 : </b></p><p><b> 指導(dǎo)老師 :</b></p><p> 2012年 6月12日</p><p> 設(shè)計(jì)題目(問(wèn)題)描述和要求</p><p> 題目:公司人員管理系統(tǒng) </p>
3、;<p><b> 問(wèn)題描述:</b></p><p> 某小型公司,主要有四類(lèi)人員:經(jīng)理、兼職技術(shù)人員、銷(xiāo)售經(jīng)理和兼職推銷(xiāo)員?,F(xiàn)在,需要存儲(chǔ)這些人員的姓名、編號(hào)、級(jí)別、當(dāng)月薪水,計(jì)算月薪總額并顯示全部信息。 </p><p><b> 要求: </b></p><p> 其中,人員編號(hào)在生成人員信息
4、時(shí)同時(shí)生成,每輸入一個(gè)人員信息編號(hào)順序加1。 </p><p> 程序?qū)λ腥藛T有提升級(jí)別的功能 </p><p> 月薪的計(jì)算方法是:經(jīng)理拿固定月薪,兼職技術(shù)人員按工作小時(shí)數(shù)領(lǐng)取月薪,兼職推銷(xiāo)員的報(bào)酬按該推銷(xiāo)員當(dāng)月銷(xiāo)售額提成 ,銷(xiāo)售經(jīng)理既拿固定月薪也領(lǐng)取銷(xiāo)售提成。 </p><p> 能按姓名或者編號(hào)顯示、查找、增加、刪除和保存各類(lèi)人員的信息 </p&
5、gt;<p><b> 系統(tǒng)分析與模塊設(shè)計(jì)</b></p><p> 根據(jù)問(wèn)題描述和要求,系統(tǒng)要求能夠按姓名或者編號(hào)顯示、查找、增加、刪除和保存各類(lèi)人員的信息。確定程序至少應(yīng)該具備如下功能:“查詢(xún)?nèi)藛T”、“增加人員”、“刪除人員”、“數(shù)據(jù)存盤(pán)”基本模塊。</p><p> 系統(tǒng)既然具有“數(shù)據(jù)存盤(pán)”功能-人員數(shù)據(jù)可以保存到磁盤(pán)文件,那么也就意味著今后
6、可以從磁盤(pán)文件讀出人員數(shù)據(jù),所以系統(tǒng)增加了“人員數(shù)據(jù)裝入”模塊,以方便用戶(hù)使用、避免數(shù)據(jù)重復(fù)錄入??紤]到系統(tǒng)實(shí)現(xiàn)簡(jiǎn)捷,人員數(shù)據(jù)文件采用文本文件,人員數(shù)據(jù)文件名:Person.txt。</p><p> 做為一個(gè)完整系統(tǒng),除了具有增加人員,刪除人員信息模塊,還應(yīng)該具有修改人員相關(guān)信息的功能,所以本系統(tǒng)設(shè)計(jì)時(shí)考慮增加“修改人員”模塊。</p><p> 考慮到根據(jù)編號(hào)查找人員信息功能在“刪
7、除人員”、“修改人員”等模塊都使用,所以可以考慮設(shè)置為一個(gè)模塊。</p><p> 考慮到系統(tǒng)要求人員編號(hào)在生成人員信息時(shí)同時(shí)生成,每輸入一個(gè)人員信息編號(hào)順序加1。這樣就要求人員編號(hào)在增加人員時(shí)自動(dòng)生成(增加1)且不重復(fù)。根據(jù)這個(gè)要求,可以考慮設(shè)置一個(gè)全局量:“當(dāng)前最大編號(hào)”,每增加一個(gè)人員,當(dāng)前最大編號(hào)自動(dòng)增1,然后新增加人員使用這個(gè)編號(hào)。為了保證系統(tǒng)能記憶這個(gè)編號(hào),可以使用一個(gè)數(shù)據(jù)文件保存當(dāng)前這個(gè)編號(hào)。系統(tǒng)
8、每次開(kāi)始運(yùn)行前從文件讀入這個(gè)編號(hào),隨著人員增加,編號(hào)自動(dòng)增加,系統(tǒng)每次運(yùn)行結(jié)束時(shí)將這個(gè)編號(hào)寫(xiě)入文件。本系統(tǒng)將初值(沒(méi)有一個(gè)用戶(hù)時(shí))設(shè)置為0。</p><p> 考慮到人員的許多固定信息如:經(jīng)理、銷(xiāo)售經(jīng)理的固定月薪,銷(xiāo)售經(jīng)理、銷(xiāo)售人員提成,技術(shù)人員小時(shí)工資等都是一些不需要每個(gè)人員都要輸入的信息,所以可以將這些信息都保存在一個(gè)數(shù)據(jù)文件中,本系統(tǒng)為了方便起見(jiàn),將這些信息與“最大編號(hào)”全部保存在一個(gè)文件中,并使用“基礎(chǔ)
9、數(shù)據(jù)設(shè)置”模塊進(jìn)行設(shè)置和管理?;A(chǔ)數(shù)據(jù)文件也采用文本文件,基礎(chǔ)數(shù)據(jù)文件名:Base.txt。</p><p> 本系統(tǒng)還提供“查詢(xún)本月經(jīng)營(yíng)信息”幫助計(jì)算銷(xiāo)售總額,工資總額,并按照公式計(jì)算本月盈虧。</p><p> 綜合考慮系統(tǒng)具有下面8項(xiàng)功能模塊:增加人員,刪除人員,修改人員,查詢(xún)本月經(jīng)營(yíng)信息,基礎(chǔ)數(shù)據(jù)設(shè)置,數(shù)據(jù)存盤(pán),數(shù)據(jù)裝入。</p><p> 系統(tǒng)使用的
10、數(shù)據(jù)文件格式如下:</p><p> Base.txt:(格式:項(xiàng)目 數(shù)據(jù))</p><p> 經(jīng)理固定月薪3000</p><p> 銷(xiāo)售經(jīng)理固定月薪1000</p><p><b> 銷(xiāo)售經(jīng)理提成%1</b></p><p><b> 銷(xiāo)售人員提成%2</b&
11、gt;</p><p> 技術(shù)人員小時(shí)工資20</p><p><b> ID6</b></p><p> Person.txt:(格式:編號(hào),姓名,人員類(lèi)別,其它數(shù)據(jù),銷(xiāo)售員銷(xiāo)售額,技術(shù)人員工作小時(shí))</p><p> 2wang3100000</p><p><b&g
12、t; 3liu1</b></p><p> 4wu4100</p><p><b> 5huang2</b></p><p> 6tao3150000</p><p> 注:人員類(lèi)型編號(hào)1-經(jīng)理;2-銷(xiāo)售經(jīng)理;3-銷(xiāo)售員;4-技術(shù)人員</p><p>
13、;<b> 系統(tǒng)設(shè)計(jì)</b></p><p><b> 系統(tǒng)總體框架</b></p><p> 使用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想進(jìn)行分析,整個(gè)系統(tǒng)涉及兩大類(lèi)信息和操作,公司,人員。所以系統(tǒng)主要涉及兩個(gè)大類(lèi):公司類(lèi)Company、人員類(lèi)Person。系統(tǒng)的總體框架就是公司類(lèi),人員類(lèi)的定義;主函數(shù)中定義一個(gè)公司對(duì)象,循環(huán)顯示主菜單并根據(jù)用戶(hù)選擇調(diào)用公
14、司類(lèi)的相應(yīng)方法(成員函數(shù))。</p><p> (1)公司類(lèi)Company:考慮系統(tǒng)操作的人員信息的數(shù)量具有不確定性,所以考慮使用鏈表保存、處理人員信息。公司類(lèi)包含:所有人員信息的一個(gè)不帶頭結(jié)點(diǎn)的鏈表(作為數(shù)據(jù)成員)及可以對(duì)人員信息進(jìn)行增,刪,改,查詢(xún)經(jīng)營(yíng)信息,基礎(chǔ)數(shù)據(jù)設(shè)置,數(shù)據(jù)存盤(pán),數(shù)據(jù)裝入等操作的相關(guān)模塊(Add,Delete,Modify,Query,Set,Save,Load)作為成員函數(shù)。</p
15、><p> (2)人員類(lèi)Person:所有人員都具有的公共信息及操作可以使用人員類(lèi)進(jìn)行描述。由于系統(tǒng)具有4類(lèi)人員且4類(lèi)人員數(shù)據(jù),操作有所不同,如銷(xiāo)售員包含銷(xiāo)售額,而技術(shù)人員包含工作小時(shí)數(shù)且計(jì)算工資的方法不同,所以應(yīng)當(dāng)為4類(lèi)人員創(chuàng)建相應(yīng)的Person類(lèi)的派生類(lèi)。</p><p> (3)為了使公司類(lèi)可以方便處理人員信息,可以考慮將公司類(lèi)確定為人員類(lèi)的友元類(lèi)或者人員類(lèi)提供公共的方法以便公司類(lèi)進(jìn)
16、行操作。為了公司類(lèi)可以用共同方法操作人員類(lèi),可以將人員類(lèi)的方法確定為虛函數(shù)。</p><p><b> 類(lèi)的層次圖</b></p><p><b> Person</b></p><p> { No,Name,Duty,Earning,next,Person(),CalcSalary(),Output()}</
17、p><p> Manager Sales SalesManager Technician</p><p> { Manager(), {Amount, {Amount, { t,</p><p> CalcSalary(), Sales(),GetAmou
18、nt(), SalesManager(), Technician(),</p><p> Output()} SetAmount(), SetAmount(), GetT(),SetT(),</p><p> CalcSalary(), CalcSalary(), CalcSalary(),</p>
19、<p> Output()} Output()} Output()}</p><p><b> 其中:</b></p><p> ?。?)Person 類(lèi)的No-人員編號(hào),Name-人員姓名,Duty-人員類(lèi)別,Earning-工資,next-指向下一個(gè)人員的指針;Person 類(lèi)的CalcSalary(),Out
20、put()定義為純虛函數(shù)分別表示要計(jì)算人員工資和輸出人員信息,由于定義純虛函數(shù),所以Person是抽象類(lèi),具體計(jì)算工資,輸出人員信息由派生類(lèi)完成。</p><p> ?。?)各個(gè)派生的類(lèi),包含本類(lèi)對(duì)象特有的數(shù)據(jù),Sales::Amount-銷(xiāo)售員銷(xiāo)售額,SalesManager::Amount-銷(xiāo)售經(jīng)理的總銷(xiāo)售額(系統(tǒng)統(tǒng)計(jì)各個(gè)銷(xiāo)售員銷(xiāo)售額得到銷(xiāo)售經(jīng)理的總銷(xiāo)售額),Technician::t-技術(shù)人員工作小時(shí)數(shù)。&
21、lt;/p><p><b> Company </b></p><p> {Person *Worker,</p><p> Clear(),Company(),~Company(),Add(),Delete(),Modify(),</p><p> Query(),Set(),Save(),Load()}</
22、p><p><b> 其中:</b></p><p> (1)Worker就是人員鏈表。</p><p> (2)Clear()用于清除人員鏈表所有結(jié)點(diǎn)。</p><p> (3)Add(),Delete(),Modify(),Query(),Set(),Save(),Load()分別表示系統(tǒng)各個(gè)功能模塊:增加人員,
23、刪除人員,修改人員,查詢(xún)本月經(jīng)營(yíng)信息,基礎(chǔ)數(shù)據(jù)設(shè)置,數(shù)據(jù)存盤(pán),數(shù)據(jù)裝入。</p><p><b> 系統(tǒng)關(guān)鍵算法流程圖</b></p><p><b> (1)主函數(shù)流程</b></p><p> (2) Company::Add()</p><p> (3) Company::Delete
24、()</p><p> (4) Company::Modify</p><p> (5) Company::Query() </p><p> (6)Company::Save()</p><p> (7) Company::Load()</p><p><b> 源程序清單</b>&l
25、t;/p><p><b> 參見(jiàn)附錄</b></p><p><b> 系統(tǒng)測(cè)試</b></p><p><b> 小結(jié)</b></p><p> 通過(guò)程序設(shè)計(jì),我能夠基本掌握C++程序設(shè)計(jì)的方法,并且在此基礎(chǔ)上掌握類(lèi)的構(gòu)造方法,明確類(lèi)中構(gòu)造函數(shù)、成員函數(shù)的建立以及調(diào)用,此
26、外,并且,結(jié)合C++中字符串函數(shù)的編譯系統(tǒng)給定的庫(kù)函數(shù),采用一定的邏輯編譯,實(shí)現(xiàn)題目中要求的各項(xiàng)要求,達(dá)到基本實(shí)驗(yàn)?zāi)康?,提高自己的C++語(yǔ)言使用水平。</p><p><b> 參考文獻(xiàn)</b></p><p> 【1】陳維興,林小茶.C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程.北京.清華大學(xué)出版社2010,10</p><p> 【2】譚浩強(qiáng).C語(yǔ)言程
27、序設(shè)計(jì).北京:清華大學(xué)出版社.2010,5</p><p><b> 附錄:</b></p><p> /*本程序有關(guān)的兩個(gè)數(shù)據(jù)文件:</p><p> base.txt-基礎(chǔ)數(shù)據(jù)文件(必須存在,且按規(guī)定格式保存)</p><p> person.txt-人員信息文件(可選)</p><p&g
28、t;<b> */</b></p><p> #include <iostream.h></p><p> #include <fstream.h></p><p> #include <ctype.h></p><p> #include <string.h>&
29、lt;/p><p><b> //全局?jǐn)?shù)據(jù),對(duì)象</b></p><p> double ManagerSalary; //經(jīng)理固定月薪</p><p> double SalesManagerSalary; //銷(xiāo)售經(jīng)理固定月薪</p><p> double SalesManagerPercent;
30、 //銷(xiāo)售經(jīng)理提成%</p><p> double SalesPercent; //銷(xiāo)售人員提成%</p><p> double WagePerHour; //技術(shù)人員小時(shí)工資</p><p> int ID; //員工標(biāo)識(shí)(要保證唯一)</p><p> cl
31、ass Person //員工類(lèi)</p><p><b> {</b></p><p> protected:</p><p> int No; //編號(hào)</p><p> char Name[20]; //姓名</p><p> int Duty; //崗位</
32、p><p> double Earning; //收入</p><p> Person *next;</p><p><b> public:</b></p><p> Person(char ID,char *Name,int Duty)</p><p><b> {</b
33、></p><p> this->Duty=Duty;</p><p> strcpy(this->Name,Name);</p><p> this->No=ID;</p><p><b> }</b></p><p> virtual void CalcSal
34、ary()=0; </p><p> virtual void Output()=0;</p><p> friend class Company;</p><p><b> };</b></p><p> class Manager:public Person //經(jīng)理類(lèi)</p><p&g
35、t;<b> {</b></p><p><b> public:</b></p><p> Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty){}</p><p> void CalcSalary(){Earning=ManagerSalary;}&
36、lt;/p><p> void Output()</p><p><b> {</b></p><p> CalcSalary();</p><p> cout<<No<<"\t"<<Name<<"\t經(jīng)理\t"<<E
37、arning<<endl;</p><p><b> }</b></p><p><b> };</b></p><p> class SalesManager:public Person //銷(xiāo)售經(jīng)理類(lèi)</p><p><b> {</b></p&
38、gt;<p><b> private:</b></p><p> double Amount;</p><p><b> public:</b></p><p> SalesManager(char ID,char *Name,int Duty):Person(ID,Name,Duty){}<
39、/p><p> void SetAmount(double s)</p><p><b> {</b></p><p><b> Amount=s;</b></p><p><b> }</b></p><p> void CalcSalary()
40、</p><p><b> {</b></p><p> Earning=SalesManagerSalary+Amount*SalesManagerPercent/100;</p><p><b> }</b></p><p> void Output()</p><p
41、><b> {</b></p><p> CalcSalary();</p><p> cout<<No<<"\t"<<Name<<"\t銷(xiāo)售經(jīng)理\t"<<Earning<<endl;</p><p><b>
42、 }</b></p><p><b> };</b></p><p> class Technician:public Person //技術(shù)員類(lèi)</p><p><b> {</b></p><p><b> private:</b></p>
43、<p><b> double t;</b></p><p><b> public:</b></p><p> Technician(char ID,char *Name,int Duty,double T):Person(ID,Name,Duty)</p><p><b> {</
44、b></p><p> this->t=T;</p><p><b> }</b></p><p> double GetT()</p><p><b> {</b></p><p><b> return t;</b></p
45、><p><b> }</b></p><p> void SetT(double T)</p><p><b> {</b></p><p> this->t=T;</p><p><b> }</b></p><p&g
46、t; void CalcSalary()</p><p><b> {</b></p><p> Earning=WagePerHour*t;</p><p><b> }</b></p><p> void Output()</p><p><b>
47、{</b></p><p> CalcSalary();</p><p> cout<<No<<"\t"<<Name<<"\t技術(shù)員\t"<<t<<"\t"<<Earning<<endl;</p><
48、p><b> }</b></p><p><b> };</b></p><p> class Sales:public Person //銷(xiāo)售員類(lèi)</p><p><b> {</b></p><p><b> private:</b>
49、</p><p> double Amount;</p><p><b> public:</b></p><p> Sales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty)</p><p><b> {</b>
50、;</p><p> this->Amount=Amount;</p><p><b> }</b></p><p> double GetAmount()</p><p><b> {</b></p><p> return Amount;</p>
51、;<p><b> }</b></p><p> void SetAmount(double Amount)</p><p><b> {</b></p><p> this->Amount=Amount;</p><p><b> }</b>&l
52、t;/p><p> void CalcSalary()</p><p><b> {</b></p><p> Earning=SalesPercent/100*Amount;</p><p><b> }</b></p><p> void Output()</
53、p><p><b> {</b></p><p> CalcSalary();</p><p> cout<<No<<"\t"<<Name<<"\t銷(xiāo)售員\t"<<Amount<<"\t"<<Earn
54、ing<<endl;</p><p><b> }</b></p><p><b> };</b></p><p> class Company //公司類(lèi)</p><p><b> {</b></p><p><b>
55、 private:</b></p><p> Person *Worker; //員工表</p><p> void Clear(); //清除內(nèi)存中數(shù)據(jù)</p><p><b> public:</b></p><p><b> Company()</b></p>
56、;<p><b> {</b></p><p> Worker=0; </p><p><b> Load();</b></p><p><b> }</b></p><p> ~Company()</p><p>&l
57、t;b> {</b></p><p> Person *p;</p><p><b> p=Worker;</b></p><p><b> while(p)</b></p><p><b> {</b></p><p>
58、p=p->next;</p><p> delete Worker;</p><p><b> Worker=p;</b></p><p><b> }</b></p><p><b> Worker=0;</b></p><p><
59、b> }</b></p><p> void Add(); //增加人員</p><p> void Delete(); //刪除人員</p><p> void Modify(); //修改人員</p><p> void Query(); //查詢(xún)?nèi)藛T</p><p>
60、 void Set(); //基礎(chǔ)數(shù)據(jù)設(shè)置</p><p> void Save(); //數(shù)據(jù)存盤(pán)(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù))</p><p> void Load(); //數(shù)據(jù)裝入(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù))</p><p><b> };</b></p><p> void Company
61、::Clear() //清除內(nèi)存中人員數(shù)據(jù)(內(nèi)部使用)</p><p><b> {</b></p><p> Person* p=Worker;</p><p><b> while(p)</b></p><p><b> {</b></p><
62、p> Worker=p->next;</p><p><b> delete p;</b></p><p><b> p=Worker;</b></p><p><b> }</b></p><p><b> }</b></p&
63、gt;<p> void Company::Add()</p><p><b> {</b></p><p> Person *p; //新結(jié)點(diǎn)指針</p><p> int Duty; </p><p> char Name[20];</p><p> double
64、 Amount,T;</p><p> cout<<"\n** 新增員工 **\n"; </p><p><b> //輸入員工信息</b></p><p><b> ID++;</b></p><p> cout<<"輸入崗位(1-經(jīng)
65、理2-銷(xiāo)售經(jīng)理3-銷(xiāo)售員4-技術(shù)員):"; cin>>Duty;</p><p> cout<<"輸入姓名:"; cin>>Name;</p><p> if(Duty==3)</p><p><b> {</b></p><p> cout&
66、lt;<"本月銷(xiāo)售額:"; cin>>Amount;</p><p><b> }</b></p><p> else if(Duty==4)</p><p><b> {</b></p><p> cout<<"本月工作小時(shí)數(shù)(
67、0-168):"; </p><p><b> cin>>T;</b></p><p><b> }</b></p><p><b> //創(chuàng)建新員工結(jié)點(diǎn)</b></p><p> switch(Duty)</p><p>
68、;<b> {</b></p><p> case 1:p=new Manager(ID,Name,Duty); break;</p><p> case 2:p=new SalesManager(ID,Name,Duty); break;</p><p> case 3:p=new Sales(ID,Name,Duty,Amount
69、); break;</p><p> case 4:p=new Technician(ID,Name,Duty,T); break;</p><p><b> }</b></p><p> p->next=0;</p><p> //員工結(jié)點(diǎn)加入鏈表</p><p> if(
70、Worker) //若已經(jīng)存在結(jié)點(diǎn)</p><p><b> {</b></p><p> Person *p2;</p><p> p2=Worker;</p><p> while(p2->next) //查找尾結(jié)點(diǎn)</p><p><b> {</b>
71、;</p><p> p2=p2->next;</p><p><b> }</b></p><p> p2->next=p; //連接</p><p><b> }</b></p><p> else //若不存在結(jié)點(diǎn)(表空)</p>
72、<p><b> {</b></p><p> Worker=p; //連接</p><p><b> } </b></p><p><b> }</b></p><p> void Company::Delete() //刪除人員</p>
73、;<p><b> {</b></p><p><b> int No;</b></p><p> cout<<"\n** 刪除員工 **\n";</p><p> cout<<"ID:"; cin>>No;</p&g
74、t;<p> //查找要?jiǎng)h除的結(jié)點(diǎn)</p><p> Person *p1,*p2; p1=Worker;</p><p><b> while(p1)</b></p><p><b> {</b></p><p> if(p1->No==No)</p>
75、<p><b> break;</b></p><p><b> else</b></p><p><b> {</b></p><p><b> p2=p1;</b></p><p> p1=p1->next;</p&g
76、t;<p><b> }</b></p><p><b> }</b></p><p><b> //刪除結(jié)點(diǎn)</b></p><p> if(p1!=NULL)//若找到結(jié)點(diǎn),則刪除</p><p><b> {</b></
77、p><p> if(p1==Worker) //若要?jiǎng)h除的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn)</p><p><b> {</b></p><p> Worker=p1->next;</p><p> delete p1;</p><p><b> }</b></p>
78、<p> else //若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn)</p><p><b> {</b></p><p> p2->next=p1->next;</p><p> delete p1;</p><p><b> }</b></p><p>
79、 cout<<"找到并刪除\n";</p><p><b> }</b></p><p> else //未找到結(jié)點(diǎn)</p><p> cout<<"未找到!\n";</p><p><b> }</b></p>
80、<p> void Company::Modify()</p><p><b> {</b></p><p> int No,Duty;</p><p> char Name[20]; </p><p> double Amount,T;</p><p> cout&l
81、t;<"\n** 修改員工 **\n";</p><p> cout<<"ID:"; cin>>No;</p><p> //查找要修改的結(jié)點(diǎn)</p><p> Person *p1,*p2; p1=Worker;</p><p><b> while
82、(p1)</b></p><p><b> {</b></p><p> if(p1->No==No)</p><p><b> break;</b></p><p><b> else</b></p><p><b>
83、; {</b></p><p><b> p2=p1;</b></p><p> p1=p1->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> //
84、修改結(jié)點(diǎn)</b></p><p> if(p1!=NULL)//若找到結(jié)點(diǎn)</p><p><b> {</b></p><p> p1->Output();</p><p> cout<<"調(diào)整崗位(1-經(jīng)理2-銷(xiāo)售經(jīng)理3-銷(xiāo)售員4-技術(shù)員):"; cin&g
85、t;>Duty;</p><p> if(p1->Duty!=Duty) //若崗位發(fā)生變動(dòng)</p><p><b> { </b></p><p><b> //修改其它數(shù)據(jù)</b></p><p> cout<<"輸入姓名:"; ci
86、n>>Name; </p><p> if(Duty==3)</p><p><b> {</b></p><p> cout<<"本月銷(xiāo)售額:"; cin>>Amount;</p><p><b> }</b></p
87、><p> else if(Duty==4)</p><p><b> {</b></p><p> cout<<"本月工作小時(shí)數(shù)(0-168):"; </p><p><b> cin>>T;</b></p><p><
88、;b> }</b></p><p><b> //創(chuàng)建新員工結(jié)點(diǎn)</b></p><p> Person *p3;</p><p> switch(Duty)</p><p><b> {</b></p><p> case 1:p3=new M
89、anager(p1->No,Name,Duty); break;</p><p> case 2:p3=new SalesManager(p1->No,Name,Duty); break;</p><p> case 3:p3=new Sales(p1->No,Name,Duty,Amount); break;</p><p> cas
90、e 4:p3=new Technician(p1->No,Name,Duty,T); break;</p><p><b> }</b></p><p> //員工結(jié)點(diǎn)替換到鏈表</p><p> p3->next=p1->next;</p><p> if(p1==Worker) //若要
91、替換的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn)</p><p> Worker=p3;</p><p> else //若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn)</p><p> p2->next=p3;</p><p> //刪除原來(lái)的員工結(jié)點(diǎn)</p><p> delete p1;</p><p><b&g
92、t; }</b></p><p> else //若崗位沒(méi)有變動(dòng)</p><p><b> {</b></p><p> cout<<"輸入姓名:"; cin>>p1->Name;</p><p> if(Duty==3)</p>
93、<p><b> {</b></p><p> cout<<"本月銷(xiāo)售額:";cin>>Amount; ((Sales *)p1)->SetAmount(Amount);</p><p><b> }</b></p><p> else if(Duty==
94、4)</p><p><b> {</b></p><p> cout<<"本月工作小時(shí)數(shù)(0-168):";cin>>T; ((Technician *)p1)->SetT(T);</p><p><b> }</b></p><p><
95、;b> }</b></p><p> cout<<"修改成功!\n";</p><p><b> }</b></p><p> else //未找到結(jié)點(diǎn)</p><p> cout<<"未找到!\n";</p>&
96、lt;p><b> }</b></p><p> void Company::Query()</p><p><b> {</b></p><p> cout<<"\n** 查詢(xún)?nèi)藛T本月銷(xiāo)售信息 **\n";</p><p> double sum=0
97、; //銷(xiāo)售額總和</p><p> Person *p=Worker;</p><p><b> while(p)</b></p><p><b> {</b></p><p> if(p->Duty==3)sum+=((Sales *)p)->GetAmount();&l
98、t;/p><p> p=p->next;</p><p><b> }</b></p><p><b> p=Worker;</b></p><p> double sum2=0; //工資總和</p><p><b> while(p)</b&
99、gt;</p><p><b> {</b></p><p> if(p->Duty==2)((SalesManager *)p)->SetAmount(sum);</p><p> p->Output();</p><p> sum2+=p->Earning;</p>&l
100、t;p> p=p->next;</p><p><b> }</b></p><p> cout<<"本月盈利:"<<sum*0.20-sum2<<endl;</p><p> cout<<"(按照20%利潤(rùn)計(jì)算)\n";</p&g
101、t;<p><b> }</b></p><p> void Company::Set()</p><p><b> {</b></p><p> cout<<"\n** 設(shè)置基礎(chǔ)數(shù)據(jù) **\n";</p><p> cout<<&
102、quot;經(jīng)理固定月薪["<<ManagerSalary<<"元]:";</p><p> cin>>ManagerSalary; </p><p> cout<<"銷(xiāo)售經(jīng)理固定月薪["<<SalesManagerSalary<<"元]:"; &
103、lt;/p><p> cin>>SalesManagerSalary; </p><p> cout<<"銷(xiāo)售經(jīng)理提成["<<SalesManagerPercent<<"%]:";</p><p> cin>>SalesManagerPercent; </p
104、><p> cout<<"銷(xiāo)售人員提成["<<SalesPercent<<"%]:";</p><p> cin>>SalesPercent;</p><p> cout<<"技術(shù)人員小時(shí)工資["<<WagePerHour<&l
105、t;"(元/小時(shí))]:"; </p><p> cin>>WagePerHour;</p><p> cout<<"員工標(biāo)識(shí)[>="<<ID<<"]:";</p><p><b> cin>>ID;</b><
106、/p><p><b> }</b></p><p> void Company::Save() //數(shù)據(jù)存盤(pán)(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù)),均采用文本文件</p><p><b> {</b></p><p> ofstream fPerson,fBase;</p><p>
107、;<b> char c;</b></p><p> cout<<"\n保存人員和基礎(chǔ)數(shù)據(jù),是否繼續(xù)?[Y/N]:"; cin>>c;</p><p> if(toupper(c)!='Y')return;</p><p> //保存人員編號(hào)、姓名、崗位</p>
108、<p> fPerson.open("person.txt",ios::out); </p><p> Person *p=Worker;</p><p><b> while(p)</b></p><p><b> {</b></p><p> fPer
109、son<<p->No<<"\t"<<p->Name<<"\t"<<p->Duty<<"\t";</p><p> if(p->Duty==3)</p><p> fPerson<<((Sales*)p)->GetA
110、mount()<<"\t";</p><p> else if(p->Duty==4)</p><p> fPerson<<((Technician *)p)->GetT()<<"\t";</p><p> fPerson<<endl;</p>&
111、lt;p> p=p->next;</p><p><b> }</b></p><p> fPerson.close();</p><p><b> //保存基礎(chǔ)數(shù)據(jù)</b></p><p> fBase.open("base.txt",ios::out);
112、</p><p> fBase<<"經(jīng)理固定月薪\t"<<ManagerSalary<<endl; </p><p> fBase<<"銷(xiāo)售經(jīng)理固定月薪\t"<<SalesManagerSalary<<endl; </p><p> fBase&
113、lt;<"銷(xiāo)售經(jīng)理提成%\t"<<SalesManagerPercent<<endl; </p><p> fBase<<"銷(xiāo)售人員提成%\t"<<SalesPercent<<endl; </p><p> fBase<<"技術(shù)人員小時(shí)工資\t&
114、quot;<<WagePerHour<<endl; </p><p> fBase<<"ID\t"<<ID<<endl;</p><p> fPerson.close();</p><p> cout<<"\n保存人員和基礎(chǔ)數(shù)據(jù)已經(jīng)完成...\n&
115、quot;;</p><p><b> }</b></p><p> void Company::Load() //數(shù)據(jù)裝入(包括基礎(chǔ)數(shù)據(jù),人員數(shù)據(jù))</p><p><b> {</b></p><p><b> //基礎(chǔ)數(shù)據(jù)裝入</b></p>&l
116、t;p> ifstream fBase;</p><p> char buf[80]; //buf用于保存數(shù)據(jù)文件中的注釋字符串</p><p> fBase.open("base.txt",ios::in);</p><p> fBase>>buf>>ManagerSalary; //經(jīng)理固定
117、月薪</p><p> fBase>>buf>>SalesManagerSalary; //銷(xiāo)售經(jīng)理固定月薪</p><p> fBase>>buf>>SalesManagerPercent; //銷(xiāo)售經(jīng)理提成%</p><p> fBase>>buf>>SalesPercent;
118、 //銷(xiāo)售人員提成%</p><p> fBase>>buf>>WagePerHour; //技術(shù)人員小時(shí)工資</p><p> fBase>>buf>>ID; //員工標(biāo)識(shí)</p><p> fBase.close(); </p><
119、;p> //清除內(nèi)存人員數(shù)據(jù)</p><p> Clear(); </p><p> //人員數(shù)據(jù)數(shù)據(jù)裝入</p><p> ifstream fPerson;</p><p> Person *p=Worker;</p><p> int No; char Name[20]; int Du
120、ty;</p><p> double Amount,T;</p><p> fPerson.open("person.txt",ios::in);</p><p><b> //讀一條記錄</b></p><p> fPerson>>No>>Name>>D
121、uty;</p><p> if(Duty==3)fPerson>>Amount;</p><p> else if(Duty==4)fPerson>>T;</p><p> while(fPerson.good())</p><p><b> {</b></p><p
122、><b> //創(chuàng)建員工結(jié)點(diǎn)</b></p><p> switch(Duty)</p><p><b> {</b></p><p> case 1:p=new Manager(No,Name,Duty); break;</p><p> case 2:p=new SalesMa
123、nager(No,Name,Duty); break;</p><p> case 3:p=new Sales(No,Name,Duty,Amount); break;</p><p> case 4:p=new Technician(No,Name,Duty,T); break;</p><p><b> }</b></p&
124、gt;<p> p->next=0;</p><p> //員工結(jié)點(diǎn)加入鏈表</p><p> if(Worker) //若已經(jīng)存在結(jié)點(diǎn)</p><p><b> {</b></p><p> Person *p2;</p><p> p2=Worker;<
125、/p><p> while(p2->next) //查找尾結(jié)點(diǎn)</p><p><b> {</b></p><p> p2=p2->next;</p><p><b> }</b></p><p> p2->next=p; //連接</p&
126、gt;<p><b> }</b></p><p> else //若不存在結(jié)點(diǎn)(表空)</p><p><b> {</b></p><p> Worker=p; //連接</p><p><b> } </b></p><p
127、><b> //讀下一條記錄</b></p><p> fPerson>>No>>Name>>Duty;</p><p> if(Duty==3)fPerson>>Amount;</p><p> else if(Duty==4)fPerson>>T;</p>
128、<p><b> }</b></p><p> fPerson.close();</p><p> cout<<"\n人員和基礎(chǔ)數(shù)據(jù)已經(jīng)裝入...\n";</p><p><b> }</b></p><p> void main()</
129、p><p><b> {</b></p><p><b> char c;</b></p><p> Company a;</p><p><b> do</b></p><p><b> {</b></p>&
130、lt;p> cout<<"\n*** 公司人員管理系統(tǒng) ***\n";</p><p> cout<<"1-增加人員\n";</p><p> cout<<"2-刪除人員\n";</p><p> cout<<"3-修改人員\n&quo
131、t;;</p><p> cout<<"4-查詢(xún)本月經(jīng)營(yíng)信息\n";</p><p> cout<<"5-基礎(chǔ)數(shù)據(jù)設(shè)置\n";</p><p> cout<<"6-數(shù)據(jù)存盤(pán)\n";</p><p> cout<<"7-
132、數(shù)據(jù)裝入\n";</p><p> cout<<"8-退出\t請(qǐng)選擇(1-8):";</p><p><b> cin>>c;</b></p><p><b> switch(c)</b></p><p><b> {</
133、b></p><p> case '1': a.Add(); break;</p><p> case '2': a.Delete();break;</p><p> case '3': a.Modify();break;</p><p> case '4'
134、;: a.Query(); break;</p><p> case '5': a.Set(); break;</p><p> case '6': a.Save(); break;</p><p> case '7': a.Load(); break;</p><p>&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)--人員管理系統(tǒng)公司
- c++課程設(shè)計(jì)--公司人員管理系統(tǒng)
- c++課程設(shè)計(jì)---公司人員信息管理系統(tǒng)
- c++程序設(shè)計(jì)課程設(shè)計(jì)---公司人員管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告--高校人員管理系統(tǒng)
- c++課程設(shè)計(jì)--公司職員管理系統(tǒng)
- c++課程設(shè)計(jì)---公司人事管理系統(tǒng)
- c++酒店管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)--某公司的庫(kù)存管理系統(tǒng)
- c++酒店管理系統(tǒng)課程設(shè)計(jì)
- 銷(xiāo)售管理系統(tǒng)c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)報(bào)告--公司設(shè)備管理系統(tǒng)
- 《c++》課程設(shè)計(jì)倉(cāng)庫(kù)管理系統(tǒng)
- c++課程設(shè)計(jì)-學(xué)生管理系統(tǒng)
- c++學(xué)生管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)--酒店管理系統(tǒng)
- c++課程設(shè)計(jì)--小型公司工資管理系統(tǒng)
- ”小型公司工資管理系統(tǒng)設(shè)計(jì)“c++課程設(shè)計(jì)
- 小型公司工資管理系統(tǒng)設(shè)計(jì) c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)--圖書(shū)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論