




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2009~2010學(xué)年度第一學(xué)期######3學(xué)院#########科學(xué)學(xué)院課程設(shè)計報報告冊課程設(shè)計名名稱:工工資管理理系統(tǒng)專業(yè)::計算機(jī)機(jī)科學(xué)與與技術(shù)班級::學(xué)號::姓名::指導(dǎo)老師師:一、需求求分析
題目::工資管管理系統(tǒng)統(tǒng)
總體設(shè)設(shè)計目標(biāo)標(biāo):使用用者可以以利用此此系統(tǒng)進(jìn)進(jìn)行對工工資管理理的各項項運算操操作,如如根據(jù)用用戶提供供的客戶戶工資自自動地進(jìn)進(jìn)行計算算實發(fā)工工資,查查找職工工信息數(shù)數(shù)據(jù),刪刪除記錄錄,插入入記錄,保保存記錄錄及按實實發(fā)工資資排序等等,最后后清晰完完整的工工資管理理結(jié)果顯顯現(xiàn)在屏屏幕中。大大大方便便使用者者對工資資管理的的統(tǒng)計操操作,這這樣不僅僅可以提提高效率率,而且且方便易易操作。
二、總體設(shè)計
1、概述
該系統(tǒng)采用了自上而下、層層緊扣的模塊結(jié)構(gòu)。對于最高模塊,采用以事務(wù)為中心的設(shè)計策略,把一個大的模塊逐步分解成較小的相對簡單的模塊。對低層模塊,采用以變換為中心的設(shè)計策略。為了提高每個小模塊的內(nèi)聚性、降低模塊間的耦合性,將每個模塊設(shè)計成具有單一功能的模塊(即功能內(nèi)聚),使模塊間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)(即非直接耦合)。
2、模塊說明書
A.工資管理系統(tǒng)總控模塊的模塊說明書模塊名稱::工資管管理系統(tǒng)統(tǒng)總控模模塊
輸入:主主菜單選選擇項
輸輸出::整個所所有職工工的信息息
處理::
1.按以下下格式顯顯示主菜菜單和提提示使用用者選擇擇:
工資資管理系系統(tǒng):
0讀取取文件信信息1職工數(shù)據(jù)據(jù)輸入22顯示職職工工資資3查找職職工工資資4增加加職工工工資55刪除職職工工資資6修改改職工信信息77保存存信息88安全退退出系統(tǒng)統(tǒng)2.接收收主菜單單選擇項項
如如果選擇擇項的值值為0,調(diào)調(diào)用讀取取文件信信息子模模塊。
如果果選擇項項的值為為1,調(diào)調(diào)用職工工數(shù)據(jù)輸輸入子模模塊。
如果果選擇項項的值為為2,調(diào)調(diào)用顯示示職工工工資子模模塊。
如果果選擇項項的值為為3,調(diào)調(diào)用查找找職工工工資子模模塊。
如果選選擇項的的值為44,調(diào)用用增加職職工工資資子模塊塊。
如果選選擇項的的值為55,調(diào)用用刪除職職工工資資子模塊塊。
如果選選擇項的的值為66,調(diào)用用修改職職工信息息子模塊塊。如果選擇項項的值為為7,調(diào)用用保存信信息子模模塊
如果果選擇項項的值為為8,安全退退出系統(tǒng)統(tǒng)B.插入工工資記錄錄子模塊塊說明書書
模塊名名稱:插插入工資資記錄模模塊
輸入:根根據(jù)給定定員工的的編號,姓姓名,基基本工資資進(jìn)行添添加
輸出:該該員工的的工資信信息
處理理:
按以以下格式式顯示子子菜單和和提示使使用者選選擇:
插插入員工工工資系系統(tǒng)
⑴請按按提示輸輸入要插插入的員員工的編編號
⑵⑵在第二二菜單中中輸入員員工的號號碼,姓姓名,基基本工資資
⑶⑶回車返返回主菜菜單C.保存存文件子子模塊說說明書
模模塊名稱稱:保存存文件子子模塊
輸輸入::所需保保存的員員工的姓姓名
輸出:保保存成功功該員工工資料
處理理:
按按以下格格式顯示示子菜單單和提示示使用者者選擇::
保存存文件系系統(tǒng)
⑴⑴請按提提示輸入入要保存存的員工工資料的的員工姓姓名(此此員工資資料之前前已經(jīng)確確定插入入)
⑵⑵回車顯顯示保存存成功
⑶回車車返回主主菜單
D.計算算實發(fā)工工資子模模塊說明明書
模塊塊名稱::計算實實發(fā)工資資子模塊塊
輸入入:員工工的工資資扣款
輸輸出::員工的的應(yīng)發(fā)工工資,稅稅金,實實發(fā)工資資
處處理:
按以下下格式顯顯示子菜菜單和提提示使用用者選擇擇:
計計算實發(fā)發(fā)工資系系統(tǒng)
⑴⑴首先,要要先插入入、保存存好員工工的工資資信息
⑵按號號碼排序序提示,輸輸入該員員工的扣扣款,回回車得到到員工的的應(yīng)發(fā)工工資,稅稅金,實實發(fā)工資資
⑶依依次填入入其它員員工的扣扣款即得得到所有有員工的的應(yīng)發(fā)工工資
⑷⑷計算完完后回車車返回主主菜單
E..查找記記錄子模模塊說明明書
模塊塊名稱::查找員員工工資資記錄子子模塊
輸輸入::要查找找的員工工編號及及姓名
輸輸出::所要查查找的員員工的工工資信息息
處處理:
11.按以以下格式式顯示子子菜單和和提示使使用者選選擇:
查找員員工工資資系統(tǒng)
輸輸入所要要查找的的員工工工資的編編號,回回車
2..⑴顯示示出所查查員工的的工資信信息,回回車返回回主菜單單
⑵顯示示不出所所查員工工任何信信息,出出現(xiàn)查不不到的情情況,回回車返回回主菜單單F.刪除除記錄子子模塊說說明書
模模塊名稱稱:刪除除員工工工資記錄錄子模塊塊
輸入入:根據(jù)據(jù)給定員員工的號號碼進(jìn)行行刪除
輸輸出::整個員員工的所所有工資資資料
處理理:
按以以下格式式顯示子子菜單和和提示使使用者選選擇:
刪刪除員工工工資記記錄系統(tǒng)統(tǒng)
⑴請輸輸入要刪刪除的員員工工資資的員工工號碼
⑵⑵回車確確定刪除除
⑶再次次回車返返回主菜菜單
G.按按實發(fā)工工資升序序排序子子模塊說說明書
模模塊名稱稱:按實實發(fā)工資資升序排排序子模模塊
輸入:根根據(jù)給定定的學(xué)生生的實發(fā)發(fā)工資從從小到大大進(jìn)行排排序
輸出:已已經(jīng)排好好序的員員工實發(fā)發(fā)工資的的序列
處理理:
按以以下格式式顯示子子菜單和和提示使使用者選選擇:
按按實發(fā)工工資升序序排序系系統(tǒng)
⑴對對已經(jīng)保保存過的的員工資資料,按按提示回回車
⑵系系統(tǒng)自動動完成對對員工實實發(fā)工資資由小到到大的順順序進(jìn)行行排序
⑶⑶回車返返回主菜菜單
三、詳詳細(xì)設(shè)計計
1.“工工資管理理系統(tǒng)總總控模塊塊”的詳詳細(xì)設(shè)計計
⑴概概述
本本模塊的的詳細(xì)設(shè)設(shè)計依據(jù)據(jù)是:總總體設(shè)計計中的“AA.工資資管理系系統(tǒng)的總總控模塊塊說明書書”。
⑶程程序流程程圖如下下1699
C語言課程程設(shè)計
22.“計計算實發(fā)發(fā)工資子子模塊”的的詳細(xì)設(shè)設(shè)計
⑴⑴本模塊塊的詳細(xì)細(xì)設(shè)計的的依據(jù)是是:總體體設(shè)計中中的“DD.計算算實發(fā)工工資子模模塊”的的模塊說說明書。
⑵程序流程圖如下:
開始定義整整型變量量x=00
顯示操操作項目目讓使用用者選擇,輸輸入員工工號碼如果存在,輸輸入扣款款,不不存在
返回得得實發(fā)工工資
返回
3..“查找找記錄子子模塊”的的詳細(xì)設(shè)設(shè)計
⑴本模模塊的詳詳細(xì)設(shè)計計的依據(jù)據(jù)是:總總體設(shè)計計中的“EE.查找找記錄子子模塊”的的模塊說說明書。
⑵程序流程圖如下:
開始定義整型變變量x==1輸入所要查查找的員員工工資資姓名顯示查找找結(jié)果顯顯示不存存在
返回回
4..“刪除除記錄子子模塊”的的詳細(xì)設(shè)設(shè)計
⑴本本模塊的的詳細(xì)設(shè)設(shè)計的依依據(jù)是::總體設(shè)設(shè)計中的的“F..刪除記記錄子模模塊”的的模塊說說明書。
⑵程序流程圖如下:
開始
定義整整型變量量x=22
輸輸入要刪刪除的員員工工資資
的員員工號碼碼
存在對對象,回回車確定定不存存在該對對象
刪除
返回回
5.“插插入工資資記錄子子模塊”的的詳細(xì)設(shè)設(shè)計
⑴本本模塊的的詳細(xì)設(shè)設(shè)計的依依據(jù)是::總體設(shè)設(shè)計中的的“B..插入入工資記記錄子模模塊”的的模塊說說明書。
⑵程序流程圖如下:
開始
定定義整型型變量xx=3
輸入要要插入的的員工的的號碼
輸入入員工的的號碼,,姓名,,基本工工資
確定,退退出保存存輸輸入錯誤誤
返回回
6.“保保存文件件子模塊塊”的詳詳細(xì)設(shè)計計
⑴本本模塊的的詳細(xì)設(shè)設(shè)計的依依據(jù)是::總體設(shè)設(shè)計中的的“C..保存文文件子模模塊”的的模塊說說明書。
⑵程序流程圖如下:
開始
定義整整型變量量x=44
輸入所所需保存存的員工工的姓名名
保保存員工工工保存存不成功功
資資資料成功功
返返回
7..“按實實發(fā)工資資升序排排序子模模塊”的的詳細(xì)設(shè)設(shè)計
⑴本模模塊的詳詳細(xì)設(shè)計計的依據(jù)據(jù)是:總總體設(shè)計計中的“GG.按實實發(fā)工資資升序排排序子模模塊”的的模塊說說明書。
⑵程序流程圖如下:
開始
定義義整型變變量x==5
根據(jù)給給定的學(xué)學(xué)生的實實發(fā)
工資從從小到大大進(jìn)行排排序
回車車排序成成功編碼
1.說說明
“工資資管理系系統(tǒng)總控控模塊”的功能能由meenu__sellectt函數(shù)實實現(xiàn),根根據(jù)“工工資管理理系統(tǒng)總總控模塊塊”的的程序流流程圖編編寫meenu__sellectt函數(shù)。
“計算實發(fā)工資子模塊”的功能由calc函數(shù)實現(xiàn),根據(jù)“計算實發(fā)工資子模塊”的程序流程圖編寫calc函數(shù)。
“查找記錄子模塊”的功能由find根據(jù)“查找記錄子模塊”的程序流程圖編寫search函數(shù)。
“刪除記錄子模塊”的功能由cancel根據(jù)“刪除記錄子模塊”的程序流程圖編寫delete函數(shù)。
“插入記錄子模塊”的功能由insert函數(shù)實現(xiàn),根據(jù)“插入記錄子模塊”的程序流程圖編寫insert函數(shù)。
“保存記錄子模塊”的功能由save函數(shù)實現(xiàn),根據(jù)“插入記錄子模塊”的程序流程圖編寫save函數(shù)。
“按實發(fā)工資升序排序子模塊”的功能由sort函數(shù)實現(xiàn),根據(jù)“按實發(fā)工資升序排序子模塊”的程序流程圖編寫sort函數(shù)。源程序代碼碼如下:://********************************************************************************************************************************************************************//---------------->職工工工資管管理系統(tǒng)統(tǒng)//程序清清單:#inclludee<iiomaanipp>#inclludee<iiosttreaam>#inclludee<ffstrreamm>#inclludee<mmallloc..h>#inclludee<sstdllib..h>#inclludee<sstriing..h>#inclludee<liimitts>#inclludee<sttdioo.h>>#inclludee<coonioo.h>>#defiineNULLL00intcconsstNN=200;#defiineLENNsiizeoof(sstruuctstuudennt)usinggnaamesspaccesstd;;voidMennu());voidPasss());intnn=0;;///定義一一個全局局變量統(tǒng)統(tǒng)計職工工人數(shù)//-------------->>定義一一個職工工信息的的結(jié)構(gòu)體體strucctsstuddentt{ charrnaame[[N];;///用來來存放姓姓名 charrseex[NN];///用來存存放性別別 longgidd;//用用來存放放編號 floaatppaidd[3]];///用來存存放工資資 inttottal;;///用來存存放總工工資 struuctstuudennt**nexxt;};//------------------>>職工類類classsInnforrmattionn{ publlic:: Infoormaatioon());//構(gòu)構(gòu)造函數(shù)數(shù). ~Infformmatiion(();;///析構(gòu)構(gòu)函數(shù).. studdentt*ccreaat());///建立鏈鏈表 voiddouutpuut(sstuddentt*hheadd);///顯示示職工信信息 intcouunt((stuudennt**heaad);;///定義函函數(shù)coountt()統(tǒng)統(tǒng)計職工工總數(shù) studdentt*iinseert((stuudennt*hheadd);//指指針函數(shù)數(shù)*innserrt())用來添添加職工工信息.. studdentt*ccanccel((stuudennt**heaad,llonggidd);//指指針函數(shù)數(shù)*caanceel())用來刪刪除職工工信息.. studdentt*ffindd(sttudeent*heead,,lonngiid);;///指針針函數(shù)**finnd())用來查查找職工工信息.. studdentt*mmodiify((stuudennt**heaad,llonggidd);///指針函函數(shù)*mmodiife(()用來來修改職職工的信信息. voiddpaaixuu(sttudeent*heead));//定定義paaixuu()函函數(shù)將職職工的總總額從大大到小排排列并輸輸出 voiddavveraage((stuudennt**heaad);;///定義義職工工工資平均均值的函函數(shù) voiddsaave((stuudennt**heaad);;///保存文文件信息息 studdentt*RReadd();;//讀讀取文件件信息 privvatee: studdentt*pp1,**p2,,*p33,*hheadd,stt;};Inforrmattionn::IInfoormaatioon()){ coutt<<""********************************************************************************************************\nn"; coutt<<""--------------------------------<<<歡迎您您使用職職工工資資管理系系統(tǒng)>>>--------------------------------\n""; coutt<<""********************************************************************************************************\nn\n"";//------------------------>作者者的信息息和提示示/*voiidzzuozzhe((){ coutt<<""\n\\t\tt\t本本程序制制作者:\nn\n\\t\tt\tlliugguannghuui\nn\n\\t\tt\tTTEL::15008377817771""; coutt<<""\n\\n\tt\t\\tMaadeByVC66.0+++\nn\n\\t\tt\t220099年122月1日日\n\\n\tt\t\\t按<<Entter>>鍵進(jìn)入入登陸界界面!!!"; coutt<<""\n\\n\tt\t\\t如果果需要對對原來的的信息進(jìn)進(jìn)行操作作,則先先選擇00讀取文文件信息息\n""<<eendll;}*/Inforrmattionn::~~Infformmatiion((){ coutt<<""********************************************************************************************************\nn"; coutt<<""--------------------------------<<<謝謝您您使用職職工工資資管理系系統(tǒng)>>>--------------------------------\n""; coutt<<""********************************************************************************************************\nn";}//---------------->建立立鏈表信信息studeent*Innforrmattionn::ccreaat(vvoidd)///定義義一個指指向sttrucctsstuddentt的結(jié)構(gòu)構(gòu)體指針針函數(shù)**creeat(()用來來錄入職職工信息息.{ charrchh[N]];n==0;//用用來存放放職工姓姓名 p1=pp2=((stuudennt**)maallooc(LLEN));///調(diào)用mmallloc(()函數(shù)數(shù)用來開開辟一個個新的存存儲單元元 coutt<<""-----------------<<<請建建立職工工信息表表,在姓姓名處鍵鍵以##結(jié)束束輸入!!>>-------------------"<<<enndl;; coutt<<""姓名名:";; cin>>>chh; headd=NUULL;;//給給指針hheadd賦初值值 whille((strrcmpp(chh,"##")!!=0))///調(diào)用用字符比比較函數(shù)數(shù)strrcmpp()用用來判斷斷是否繼繼續(xù)輸入入 { p1=((stuudennt**)maallooc(LLEN));///調(diào)用mmallloc(()函數(shù)數(shù)用來開開辟一個個新的存存儲單元元 strccpy((p1-->naame,,ch));//將將循環(huán)結(jié)結(jié)構(gòu)前面面輸入的的姓名復(fù)復(fù)制到結(jié)結(jié)構(gòu)體名名為p11的數(shù)組組namme中 coutt<<""性別別:";; cin>>>p11->ssex;; coutt<<""編號號:";;//如如何也對對輸入的的格式進(jìn)進(jìn)行規(guī)范范? cin>>>p11->iid; whille(((p1-->idd)<00||((p1-->idd)>11000000))///判斷斷輸入的的編號是是否有效效(10000000個)) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~10000000的數(shù)數(shù)值:"; cinn>>pp1->>id;; } coutt<<""基本本工資::"; cin>>>p11->ppaidd[0]]; whille(((p1-->paaid[[0]))<0|||(pp1->>paiid[00])>>10000000)///判斷輸輸入的分分?jǐn)?shù)是否否有效((>=00<==10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~10000000的數(shù)數(shù)值:"; cinn>>pp1->>paiid[00]; } coutt<<""加班班工資::"; cin>>>p11->ppaidd[1]]; whille(((p1-->paaid[[1]))<0|||(pp1->>paiid[11])>>10000000)///判斷輸輸入的分分?jǐn)?shù)是否否有效((>=00<==10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~10000000的數(shù)數(shù)值:"; cinn>>pp1->>paiid[11]; } coutt<<""其他他獎金::"; cin>>>p11->ppaidd[2]]; whille(((p1-->paaid[[2]))<0|||(pp1->>paiid[22])>>10000000)///判斷輸輸入的分分?jǐn)?shù)是否否有效((>=00<==10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~10000000的數(shù)數(shù)值:"; cinn>>pp1->>paiid[22]; } p1->>tottal==p1-->paaid[[0]++p1-->paaid[[1]++p1-->paaid[[2];;///計算總總額 if(nn==00)heead==p1;;//如如果是輸輸入第一一組職工工信息就就將指針針p1賦賦給指針針heaad elseep22->nnextt=p11;///否則則將p11賦給pp2所指指結(jié)構(gòu)體體的neext指指針 p2=pp1;///將指針針p1賦賦給指針針p2 n++;;//將將職工人人數(shù)n的的值加11 coutt<<""\n姓名::"; cin>>>chh;///將輸入入的姓名名存放到到字符數(shù)數(shù)組chh中 } p2->>nexxt=NNULLL;///將pp2所指指結(jié)構(gòu)體體的neext指指針重新新賦空值值 retuurn(heead));///將輸入入的第一一組職工工信息返返回}//-------------------->定義義outtputt()函函數(shù)將職職工的信信息從頭頭指針?biāo)竷?nèi)容容開始輸輸出voidInfformmatiion:::ouutpuut(sstuddentt*hheadd){ systtem(("clls")); if(hheadd==NNULLL)ccoutt<<""這是是一個空空表,請請先輸入入職工信信息!\\n";; elsee { coutt<<""---------------------------------------------------------------------------------------------------------\nn"; coutt<<""*職職工工資資信息表表*\nn"; coutt<<""---------------------------------------------------------------------------------------------------------\nn"; coutt<<""|編號|||姓名名||性性別|||基本工工資|||加班工工資|||其他獎獎金|||總額||\n""; coutt<<""---------------------------------------------------------------------------------------------------------\nn"; p1=hheadd;///將頭指指針賦給給p do { coutt<<pp1->>id<<settw(88)<<<p1-->naame <<seetw((12))<<pp1->>sexx <<seetw((12))<<pp1->>paiid[00] <<seetw((12))<<pp1->>paiid[11] <<seetw((12))<<pp1->>paiid[22] <<seetw((12))<<pp1->>tottal<<<enndl;; coutt<<""---------------------------------------------------------------------------------------------------------\nn"; p1=pp1->>nexxt;//將將下一組組職工信信息的nnextt指針賦賦給p } whille(pp1!==NULLL);;///若指針針p非空空則繼續(xù)續(xù),目的的是把所所有的職職工信息息都傳給給指針pp然后輸輸出. }}//---------------->統(tǒng)計計職工人人數(shù)的函函數(shù)intIInfoormaatioon:::couunt((strructtsttudeent*heead))///定義義函數(shù)ccounnt())統(tǒng)計職職工總數(shù)數(shù){ if(hheadd==NNULLL)reeturrn(00);///若指針針heaad為空空返回值值為0 elseereeturrn(11+coountt(heead-->neext)));//函函數(shù)的遞遞歸調(diào)用用}//-------------->>添加職職工的工工資的函函數(shù)studeent*Innforrmattionn::iinseert((sttudeent*heead))//插入新新結(jié)點定定義一個個指向sstruuctstuudennt的結(jié)結(jié)構(gòu)體指指針函數(shù)數(shù)*innserrt())用來添添加職工工信息..{ systtem(("clls")); coutt<<""\t----------------------<<請請輸入新新增職工工成績信信息>>>---------------------\nn"<<<enddl; p1=((stuudennt**)maallooc(LLEN));///使p11指向插插入的新新結(jié)點 coutt<<""編號號:";; cin>>>p11->iid; whille(((p1-->idd)<00||((p1-->idd)>11000000)) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~1000000的數(shù)值值:""; cinn>>pp1->>id;;//將將輸入的的編號存存放到pp1所指指結(jié)構(gòu)體體的數(shù)組組id中中 } coutt<<""姓名名:";; cin>>>p11->nnamee;//將將輸入的的姓名存存放到結(jié)結(jié)構(gòu)體名名為p11的數(shù)組組namme中 coutt<<""性別別:";; cin>>>p11->ssex;; coutt<<""基本本工資::"; cin>>>p11->ppaidd[0]]; whille(((p1-->paaid[[0]))<0|||(pp1->>paiid[00])>>10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~1000000的數(shù)值值:""; cinn>>pp1->>paiid[00];///將輸入入的基本本工資存存放到pp1所指指結(jié)構(gòu)體體的數(shù)組組paiid中 } coutt<<""加班班工資::"; cin>>>p11->ppaidd[1]]; whille(((p1-->paaid[[1]))<0|||(pp1->>paiid[11])>>10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~1000000的數(shù)值值:""; cinn>>pp1->>paiid[11];//將將輸入的的加班工工資存放放到p11所指結(jié)結(jié)構(gòu)體的的數(shù)組ppaidd中 } coutt<<""其他他獎金::"; cin>>>p11->ppaidd[2]]; whille(((p1-->paaid[[2]))<0|||(pp1->>paiid[22])>>10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入00~1000000的數(shù)值值:""; cinn>>pp1->>paiid[22];///將輸輸入的其其他獎金金存放到到p1所所指結(jié)構(gòu)構(gòu)體的數(shù)數(shù)組paaid中中 } p1->>tottal==p1-->paaid[[0]++p1-->paaid[[1]++p1-->paaid[[2];;//計計算總分分 p2=hheadd;///將頭指指針賦給給p2 if(hheadd==NNULLL)//若若沒調(diào)用用次函數(shù)數(shù)以前的的頭指針針heaad為空空 { headd=p11;p11->nnextt=NUULL;; }///則將將p1賦賦給頭指指針heead并并將p11所指結(jié)結(jié)構(gòu)體成成員指針針nexxt賦空空值 elsee { whille(((p1-->idd>p22->iid)&&&(pp2->>nexxt!==NULLL))) { p3=pp2;///p3指指向原pp2指向向的結(jié)點點 p2=pp2->>nexxt; }///p22后移一一個結(jié)點點 if(pp1->>id<<=p22->iid) { if(hheadd==pp2) { p1->>nexxt=hheadd; headd=p11; }///插入到到第一個個結(jié)點之之前 elsee { p3->>nexxt=pp1; p1->>nexxt=pp2; }///插入到到p3所所指結(jié)點點之后 } elsee { p2->>nexxt=pp1; p1->>nexxt=NNULLL; }///插入入到尾結(jié)結(jié)點之后后 } n++;;///將職職工人數(shù)數(shù)加1 coutt<<""\t----------------------<<你你輸入的的職工信信息已經(jīng)經(jīng)成功插插入>>>---------------------"<<<enndl;; retuurn(heead));}//---------------->刪除除職工信信息studeent*Innforrmattionn::ccanccel((stuudennt**heaad,llonggidd)///定義一一個指向向strructtsttudeent的的結(jié)構(gòu)體體指針函函數(shù)*ddeleete(()用來來刪除考考生信息息.{ systtem(("clls")); if(hheadd==NNULLL)///若調(diào)用用次函數(shù)數(shù)以前的的頭指針針heaad為空空 { retuurn((heaad);; } elsee { p1=hheadd;//否否則將頭頭指針賦賦給p11 whille(iid!==p1-->idd&&pp1->>nexxt!==NULLL)///尋找找要刪除除的結(jié)點點當(dāng)p11所指的的職工編編號不是是輸入的的職工編編號并且且p1所所指的nnextt指針不不為空 { p2=pp1; p1=pp1->>nexxt; }///p22指向原原p1指指向的結(jié)結(jié)點p11后移一一個結(jié)點點 if(iid===p1-->idd)///如果輸輸入的職職工編號號是p11所指的的職工編編號///結(jié)點找找到后刪刪除 { if(pp1===heaad)heaad=pp1->>nexxt;///如果果heaad指針針和p11指針相相等則將將下一個個結(jié)點賦賦給指針針heaad elsee p2->>nexxt=pp1->>nexxt;///否則將將p1所所指結(jié)點點賦給pp2所指指結(jié)點將將要刪除除的職工工信息跳跳過去 coutt<<""刪除除編號為為"<<<id<<<"的的職工\\n";; n--;;//將將職工人人數(shù)減11 } retuurn((heaad);;///將頭頭指針返返回 }/**********************************修改改職工數(shù)數(shù)據(jù)***********************************/studeent*Innforrmattionn::mmodiify((stuudennt**heaad,llonggidd){ systtem(("clls")); coutt<<""\t----------------------<<請請輸入須須修改的的職工工工資信息息>>----------------------\n""<<eendll; p1=((stuudennt**)maallooc(LLEN));///使pp1指向向輸入的的結(jié)點 p1=hheadd;///否則將將頭指針針賦給pp1 whille(iid!==p1-->idd&&pp1->>nexxt!==NULLL) //尋找找結(jié)點當(dāng)當(dāng)p1所所指的職職工編號號不是輸輸入的職職工編號號并且pp1所指指的neext指指針不為為空 { p1=pp1->>nexxt;///p2指指向原pp1指向向的結(jié)點點p1后后移一個個結(jié)點 } if(iid===p1-->idd)///如果果要查找找的職工工編號是是p1所所指的職職工編號號 { coutt<<""你需要要修改的的職工信信息如下下:\nn"; coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<""|編號|||姓名名||性性別|||基本工工資|||加班工工資||其他他獎金|||總總額|\\n";; coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<ssetww(6))<<pp1->>id <<seetw((8)<<<p11->nnamee <<seetw((12))<<pp1->>sexx <<seetw((12))<<pp1->>paiid[00] <<seetw((12))<<pp1->>paiid[11] <<seetw((12))<<pp1->>paiid[22] <<seetw((12))<<pp1->>tottal<<<enndl;; coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<""編號號:";; cin>>>p11->iid; whille(((p1-->idd)<00||((p1-->idd)>11000000)) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入((>0<<10000000):"; cinn>>pp1->>id;;///將輸入入的編號號存放到到p1所所指結(jié)構(gòu)構(gòu)體的數(shù)數(shù)組idd中 } coutt<<""姓名名:";; cin>>>p11->nnamee;///將輸輸入的姓姓名存放放到結(jié)構(gòu)構(gòu)體名為為p1的的數(shù)組nnamee中 coutt<<""性別別:";; cin>>>p11->ssex;; coutt<<""基本本工資::"; cin>>>p11->ppaidd[0]]; whille(((p1-->paaid[[0]))<0|||(pp1->>paiid[00])>>10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入((>0<<10000000):"; cinn>>pp1->>paiid[00];///將輸入入的基本本工資存存放到pp1所指指結(jié)構(gòu)體體的數(shù)組組paiid中 } coutt<<""加班班工資::"; cin>>>p11->ppaidd[1]]; whille(((p1-->paaid[[1]))<0|||(pp1->>paiid[11])>>10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入((>0<<10000000):"; cinn>>pp1->>paiid[11];///將輸入入的加班班工資存存放到pp1所指指結(jié)構(gòu)體體的數(shù)組組paiid中 } coutt<<""其他他獎金::"; cin>>>p11->ppaidd[2]]; whille(((p1-->paaid[[2]))<0|||(pp1->>paiid[22])>>10000000) { cinn.cllearr(); cinn.iggnorre((10224,''\n''); couut<<<"對對不起您您的輸入入錯誤!!請重新新輸入((>0<<10000000):"; cinn>>pp1->>paiid[22];///將輸入入的其他他獎金存存放到pp1所指指結(jié)構(gòu)體體的數(shù)組組paiid中 } p1->>tottal==p1-->paaid[[0]++p1-->paaid[[1]++p1-->paaid[[2];;///計算算總分 } elsee coutt<<""需要要修改的的信息中中沒有編編號為""<<iid<<<"的職職工.\\n\nn";//沒沒有想要要修改的的結(jié)點信信息 getccharr();; retuurn((heaad);; } //---------------->查查找職工工信息 studdentt*IInfoormaatioon:::finnd(sstuddentt*hheadd,loongid)) //定義義一個指指向sttrucctsstuddentt的結(jié)構(gòu)構(gòu)體指針針函數(shù)**finnd())用來查查找職工工信息.. { systtem(("clls")); if(hheadd==NNULLL)///若調(diào)調(diào)用次函函數(shù)以前前的頭指指針heead為為空 { coutt<<""這是是一個空空表,請請先輸入入職工信信息!\\n";; retuurn((heaad);; } elsee { p1=hheadd;//否否則將頭頭指針賦賦給p11 whille(iid!==p1-->idd&&pp1->>nexxt!==NULLL) //尋找找結(jié)點當(dāng)當(dāng)p1所所指的職職工編號號不是輸輸入的職職工編號號并且pp1所指指的neext指指針不為為空 { p1=pp1->>nexxt;///p2指指向原pp1指向向的結(jié)點點p1后后移一個個結(jié)點 } if(iid===p1-->idd)//如如果要查查找的職職工編號號是p11所指的的職工編編號 { coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<""|編號||姓姓名|||性別別||基基本工資資||加加班工資資||其他他獎金||||總額||\n""; coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<ssetww(6))<<pp1->>id <<seetw((10))<<pp1->>namme <<seetw((10))<<pp1->>sexx <<seetw((10))<<pp1->>paiid[00] <<seetw((10))<<pp1->>paiid[11] <<seetw((12))<<pp1->>paiid[22] <<seetw((12))<<pp1->>tottal<<<enndl;; coutt<<""--------------------------------------------------------------------------------------------------------\n""; } elsee couut<<<"信息息中沒有有編號為為"<<<id<<<"的的職工..\n"";///結(jié)點點沒找到到 retuurn((heaad);; }}//----------------定義ppaixxu())函數(shù)將將職工的的工資總總額從大大到小排排列并輸輸出voidInfformmatiion:::paaixuu(sttudeent*heead)){ systtem(("clls")); inti,kk,m==0,jj; studdentt*pp[N]];///定義一一個指向向strructtsttudeent的的結(jié)構(gòu)體體指針數(shù)數(shù)組p if(hheadd!=NNULLL)///如果頭頭指針是是空則繼繼續(xù) {m==couunt((heaad);; coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<""*職職工工資資統(tǒng)計表表*\nn"; coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<""|編號號|||姓名|||性別別||基本本工資||||加班工工資||其其他獎金金|||總額|||名次次|\nn"; coutt<<""--------------------------------------------------------------------------------------------------------\n""; p1=hheadd; for((k=00;k<<m;kk++)) { p[k]]=p11; p1=pp1->>nexxt; } for((k=00;k<<m-11;k+++)//選選擇排序序法 for((j=kk+1;;j<mm;j+++) if(pp[k]]->ttotaal<pp[j]]->ttotaal) { p2=pp[k]]; p[k]]=p[[j];; p[j]]=p22; }///從大到到小排列列的指針針 for((i=00;i<<m;ii++)) { coutt<<ssetww(6))<<pp[i]]->iid <<seetw((8)<<<p[[i]-->naame <<seetw((9)<<<p[[i]-->seex <<seetw((10))<<pp[i]]->ppaidd[0]] <<seetw((10))<<pp[i]]->ppaidd[1]] <<seetw((10))<<pp[i]]->ppaidd[2]] <<seetw((10))<<pp[i]]->ttotaal <<seetw((10))<<ii+1<<<enndl;; coutt<<""--------------------------------------------------------------------------------------------------------\n""; } }}//---------------->求各各工資的的平均值值的函數(shù)數(shù)voidInfformmatiion:::avveraage((stuudennt**heaad){ intk,mm; floaataarg11=0,,argg2=00,arrg3==0; if(hheadd==NNULLL)///如果頭頭指針是是空則繼繼續(xù) { couut<<<"這這是一個個空表,,請先輸輸入職工工信息!!\n""; } elsee { m=coountt(heead)); p1=hheadd; for((k=00;k<<m;kk++)) { arg11+=pp1->>paiid[00]; arg22+=pp1->>paiid[11]; arg33+=pp1->>paiid[22]; p1=pp1->>nexxt; } arg11/=mm;arrg2//=m;;argg3/==m; coutt<<""*各各項工資資的平均均值*\\n";; coutt<<""--------------------------------------------------------------------------------------------------------\n""; coutt<<""\t\\t基本本工資的的平均值值:"<<<settw(44)<<<argg1 <<"\\n"<<<"\\t\tt加班工工資的平平均值::""<<ssetww(4))<<aarg22 <<"\\n"<<<"\\t\tt獎金的的平均值值:"<<<settw(44)<<<argg3<<<"\nn"; coutt<<""--------------------------------------------------------------------------------------------------------\n""; }}//------------------------->保保存函數(shù)數(shù).voidInfformmatiion:::saave((stuudennt**heaad){systtem(("clls"));oofsttreaamoout(("daata"",ioos:::outt);oout<<<coountt(heead))<<eendll;wwhille(hheadd!=NNULLL){oout<<<heead-->naame<<<"\\t"<<<heead-->idd<<""\t""<<""\t""<<<heead-->seex<<<"\tt"<<<heead-->paaid[[0]<<<"\\t"<<<heead-->paaid[[1]<<<"\\t"<<<heead-->paaid[[2]<<<"\\t"<<<heead-->tootall<<eendll;hheadd=heead-->neext;;}}//-------------->>讀取文文件的信信息studeent*Innforrmattionn::RReadd(){systtem(("clls"));inti=00;pp1=pp2=((sttudeent*)mmallloc((LENN);hheadd=NUULL;;iifsttreaamiin(""datta",,ioss::oout));iin>>>i;iif(ii==00){ccoutt<<""daata文件中中的數(shù)據(jù)據(jù)為空,,請先輸輸入數(shù)據(jù)據(jù)!"<<<enndl;;reeturrn00;}eelsee{couut<<<"\nn原文件件已保存存的信息息如下::\n"";couut<<<"………………………………""<<eendll;couut<<<"|姓姓名|||編編號||||性別||||基本工工資||加加班工資資||其其他獎金金||總額額|\nn";couut<<<"………………………………""<<eendll;forr(;ii>0;;i---){p1==(sttudeent*)mmallloc((LENN);in>>>stt.naame>>>stt.idd>>sst.ssex>>sst.ppaidd[0]]>>sst.ppaidd[1]]>>sst.ppaidd[2]]>>sst.ttotaal;strrcpyy(p11->nnamee,stt.naame));p1-->idd=stt.idd;strrcpyy(p11->ssex,,st..sexx);p1-->paaid[[0]==st..paiid[00];p1-->paaid[[1]==st..paiid[11];p1-->paaid[[2]==st..paiid[22];p1-->tootall=stt.tootall;if((n===0)hheadd=p11;///如果是是輸入第第一組職職工信息息就將指指針p11賦給指指針heeadelssepp2->>nexxt=pp1;//否否則將pp1賦給給p2所所指結(jié)構(gòu)構(gòu)體的nnextt指針p2==p1;;///將指指針p11賦給指指針p22n+++;///將n的的值加11//顯顯示讀入入數(shù)據(jù)couut<<<"""<<pp1->>namme<<<"\tt"<<pp1->>id<<<"\t""<<p1-->seex<<<"\t""<<p1-->paaid[[0]<<""\tt"<<p1-->paaid[[1]<<""\tt"<<p1-->paaid[[2]<<""\tt"<<p1-->tootall<<eendll;couut<<<"………………………………""<<eendll;}cout<<<"數(shù)據(jù)已已經(jīng)成功功讀取完完畢!\\n\nn"<<<enddl;pp2->>nexxt=NNULLL;rretuurn(heead));}}//-------------------------->>菜單voidMennu()){IInfoormaatioonppersson;;sstuddentt*hheadd=NUULL;;iintchooicee;llonggi;;ddo{ccoutt<<""\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※""<<eendll;coutt<<""\t※※※"<<<enddl;coutt<<""\t※※____歡迎迎進(jìn)入職職工工資資統(tǒng)計管管理____※※"<<<enddl;coutt<<""\t※※※"<<<enddl;coutt<<""\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※""<<eendll;coutt<<""\t""<<eendll;ccoutt<<""\t相相關(guān)操作作選項""<<eendll;coutt<<""\t""<<eendll;coutt<<""\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※""<<eendll;coutt<<""\t※※0.讀取取文件信信息※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;coutt<<""\t※※1.職工工數(shù)據(jù)輸輸入※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;ccoutt<<""\t※※2.顯示示職工工工資※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;ccoutt<<""\t※※3.排序序統(tǒng)計工工資※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;ccoutt<<""\t※※4.查找找職工工工資※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;coutt<<""\t※※5.增加加職工工工資※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;ccoutt<<""\t※※6.刪除除職工工工資※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;ccoutt<<""\t※※7.修改改職工信信息※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;coutt<<""\t※※8.成功功保存信信息※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;coutt<<""\t※※9.安全全退出系系統(tǒng)※※"<<<enddl;ccoutt<<""\t※※※"<<<enddl;coutt<<""\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"<<<enndl;;ccoutt<<""請輸輸入您的的選擇((0---9)::";ccin>>>chhoicce;wwhille(cchoiice<<0|||chooicee>9)){{couut<<<"對對不起您您的輸入入錯誤!!請輸入入您的選選擇(00--99):";cinn>>cchoiice;;}}swiitchh(chhoicce){casse00:heead==perrsonn.Reead(();bbreaak;casse11:heead==perrsonn.crreatt();;brreakk;casse22:peersoon.ooutpput((heaad);;brreakk;casse33:peersoon.ppaixxu(hheadd);persson..aveeragge(hheadd);coout<<<"參加工工作的職職工人數(shù)數(shù)為:""<<ppersson..couunt((heaad)<<<"人人\n\\n";;brreakk;casse44:couut<<<"請請輸入要要查找的的編號::";ciin>>>i;iif(ccin..faiil()))/////錯錯誤輸入入 {{coout<<<"對對不起您您的輸入入錯誤!!請重新新輸入::";;ffflussh(sstdiin);;//////////////////////////刷刷新輸入入緩沖區(qū)區(qū)ciin.ccleaar());/////////////////////////////清清除錯誤誤ciin>>>i;; }}/**whhilee(ciin.ffaill())) {coout<<<"對不起起您的輸輸入錯誤誤!請重重新輸入入:"";iff(ciin.ffaill())){{ffllushh(sttdinn);cinn.cllearr();;}}cinn>>ii; }**/peersoon.ffindd(heead,,i);;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大班下學(xué)期家長社會實踐計劃
- DB62T 4170-2020 玉米品種 酒166規(guī)范
- IT行業(yè)設(shè)備材料采購計劃
- 大客戶部客戶需求分析職責(zé)
- 腎內(nèi)科護(hù)士護(hù)理查房
- 線上教學(xué)對教師職業(yè)發(fā)展的影響心得體會
- 新生兒氣管插管的護(hù)理
- 交通運輸事故應(yīng)急管理措施
- 企業(yè)員工語文能力提升研修計劃
- 雨季機(jī)場航班調(diào)度措施
- 人教版(2024)七年級下冊生物期末復(fù)習(xí)知識點背誦提綱
- 直招軍官面試真題及答案
- 嚴(yán)重過敏反應(yīng)診斷和臨床管理專家共識(2025)解讀
- 物業(yè)標(biāo)準(zhǔn)化管理手冊大全
- 遙感地質(zhì)勘查服務(wù)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 快手開店合同協(xié)議
- 2025年-天津市安全員-B證考試題庫附答案
- 2025至2030年中國儲能變流器(PCS)產(chǎn)業(yè)投資規(guī)劃及前景預(yù)測報告
- 高考英語應(yīng)用文寫作 -主題:人工智能利弊
- GB/T 7573-2025紡織品水萃取液pH值的測定
- 反恐應(yīng)急演練方案腳本
評論
0/150
提交評論