09黃石理工C課程設(shè)計職工工資管理系統(tǒng)_第1頁
09黃石理工C課程設(shè)計職工工資管理系統(tǒng)_第2頁
09黃石理工C課程設(shè)計職工工資管理系統(tǒng)_第3頁
09黃石理工C課程設(shè)計職工工資管理系統(tǒng)_第4頁
09黃石理工C課程設(shè)計職工工資管理系統(tǒng)_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程設(shè)計設(shè)計題目:職工工資管理系統(tǒng)學(xué)生姓名:as學(xué)生學(xué)號:200940410106專業(yè)班級:09計科(1)指導(dǎo)教師:祁文青2011-12-20、前言1二、課題要求、課題分析錯誤!未定義書簽。()課題要求2(-)課題分析2三、方案設(shè)定錯誤!未定義書簽。程序功能描述與模塊結(jié)構(gòu)(-)程序功能描述4()功能樓塊4(三)程序流程圖5四、用戶使用說明8五、測試結(jié)果9六、程序經(jīng)驗教訓(xùn)總結(jié)14七、附錄15、前言c+語言是具冇而向?qū)ο筇匦缘腸語言的繼承者,即是由c語言演變而來,全而 兼容c語言。c語言的優(yōu)點,如語言簡潔靈活,運算符和數(shù)據(jù)結(jié)構(gòu)豐富,具冇結(jié)構(gòu)化 控制語句,程序執(zhí)行效率高,同時具冇高級語言與匯編語言的

2、優(yōu)點,這些在c+語言 屮同樣能夠體現(xiàn)出來。但是c+語言最冇意義的方而是支持而向?qū)﹀璧某绦蛟O(shè)計,在 數(shù)據(jù)類型、算法的控制結(jié)構(gòu)、函數(shù)等方而都冇很好的體現(xiàn)。而向?qū)ο缶幊体瑢﹀枋?程序設(shè)計的基本單位,但對象的靜態(tài)屈性往往需耍用某種類型的數(shù)據(jù)來表示,對象的 動態(tài)屈性耍由成員函數(shù)來實現(xiàn),而向函數(shù)的實現(xiàn)歸根到底述是算法的設(shè)計。二、課題要求、課題分析(-)課題要求c+課程設(shè)計通過綜合運用在c+程序設(shè)計和數(shù)據(jù)結(jié)構(gòu)屮所學(xué)的程序 結(jié)構(gòu)、流程控制語句、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體、數(shù)據(jù)結(jié)構(gòu)等知識,以簡易“管理 信息系統(tǒng)”程序設(shè)計為載體,以c+語言為工具,使我們更深地涉足計算機專業(yè)設(shè)計 領(lǐng)威,并使所學(xué)知識和技能得到進一步

3、鞏同、深化和擴展,以達到能用c+編寫初等 程度軟件的目的,為繼續(xù)學(xué)習(xí)后續(xù)課程及今后走上相關(guān)工作崗位打下良好的基礎(chǔ)。經(jīng)過調(diào)查分析,決定設(shè)計職工工資管理系統(tǒng)。創(chuàng)建存儲職工工資信息的存儲文件。添加某職工的工資信息。刪除某職工的工資 信息。修改某職工的部分工資信息(當(dāng)月開始增加或減少某些項工資或扣款數(shù)變化)。 輸岀指定編號職工的工資信息(查詢用)。輸出全體職工的工資信息(發(fā)工資用)。(-)課題分析職工工資管理系統(tǒng)可定位于企業(yè)會計系統(tǒng)的一個子系統(tǒng),該系統(tǒng)主要完成的工作 為:錄入各職工自身及工資情況、對已經(jīng)存在的數(shù)據(jù)的修改、刪除、可查詢、統(tǒng)計系 統(tǒng)屮的數(shù)據(jù)等。為此因此職工工資管理系統(tǒng)的功能:讀取文件信息、

4、數(shù)據(jù)輸入、顯示、 排序、查找、增加、刪除、修改、保存等。三、課程設(shè)計內(nèi)容及進度安排(-)課題內(nèi)容:該系統(tǒng)在磁盤上存儲了某單位全體職工的工資信息。對于每位職工存儲以下信 息:職工編號、基木工資、津貼、崗貼、補貼、應(yīng)發(fā)數(shù)、個人所得稅、應(yīng)扌ii數(shù)、實發(fā) 數(shù)。個人所得稅計算方法設(shè)為:工資少于1100元的部分為0, 1100-1600元部分為 5%, 16002600 部分為 10%, 26003600 部分為 15%, 5600 元以上部分為 20%。(-)課題要求:1. 分析問題,給出數(shù)學(xué)模型,選擇數(shù)據(jù)結(jié)構(gòu).2. 設(shè)計算法,給出算法描述3. 給出源程序清單4. 編輯、編譯、調(diào)試源程序5. 撰寫課程設(shè)

5、計報告us程序功能描述與模塊結(jié)構(gòu)(一) 程序功能描述通過主菜單displayo函數(shù)將讀取文件信息、輸入、顯示、統(tǒng)計、增加、刪除、 修改、查找、排序等函數(shù)結(jié)合一起,在用戶通過相關(guān)操作選擇其中一個功能時,調(diào)用 該功能函數(shù),完成數(shù)據(jù)處理。在主函數(shù)中調(diào)用主菜單diplayo函數(shù),完成操作。用一 個屮間函數(shù)將主函數(shù)與各功能函數(shù)連接在一起,不僅使程序語言簡潔、明了、易懂, 而且在功能實現(xiàn)上也更加晚上。(二) 功能模塊1. 主函數(shù)int main():設(shè)置背景顏色和字體顏色、調(diào)用設(shè)計者的相關(guān)信息函數(shù)、調(diào) 用display函數(shù),實現(xiàn)系統(tǒng)的主要功能處理;2. 主菜單dispiay()函數(shù):確定如何選擇所需功能,

6、調(diào)用讀取文件信息、數(shù)據(jù)輸入、 顯示、排序、查找、增加、刪除、修改、保存等函數(shù),完成職工工資管理系統(tǒng)的數(shù)據(jù) 處理;3. 讀取文件的信息read()函數(shù):從文件中讀取職工工資的信息表并顯示出來;4數(shù)據(jù)輸入函數(shù)shuru():建立鏈表,完成職工信息錄入;5. 數(shù)據(jù)顯示函數(shù)diaplayo:將職工信息數(shù)據(jù)顯示出來;6. 數(shù)據(jù)統(tǒng)計函數(shù)tongji():統(tǒng)計職工人數(shù);7. 數(shù)據(jù)增加函數(shù)tianjia():添加職工信息;8. 數(shù)據(jù)刪除函數(shù)shanchu():刪除職工信息數(shù)據(jù);9. 數(shù)據(jù)修改函數(shù)xiugai():修改職工工資等信息數(shù)據(jù);10. 數(shù)據(jù)查找函數(shù)chazhao():查找某一職工工資等信息情況;11數(shù)

7、據(jù)保存函數(shù)save():對系統(tǒng)中的數(shù)據(jù)進行相關(guān)的操作后將其保存起來;12.作者信息函數(shù)editor():顯示設(shè)計者的相關(guān)信息;13登陸函數(shù)passo:設(shè)定使用權(quán)限。(三)程序流程圖程序流程圖主是對齊功能模塊的具體描述,以一種圖表的方式簡潔明了的將各模 塊的呈現(xiàn)出來,通過這些流程圖可清楚的看出整個程序的運行過程,體會程序的流暢 性。1.主函數(shù)流程圖圖1-1主函數(shù)的流程圖2.各子功能函數(shù)流程圖圖1-2 menu函數(shù)流程圖五、用戶使用說明這是一個關(guān)于職工工資管理系統(tǒng),具冇輸入、輸出、統(tǒng)計、刪除、查詢、修改數(shù) 據(jù)等功能,建立了一個含有姓名、性別、編號、工資、總工資等成員的結(jié)構(gòu)體數(shù)據(jù)類 型的變量stru

8、ct xinxi o1. 用戶使用時,根據(jù)捉示操作,進入登陸頁而。輸入登陸名ltf,登陸密碼ltf, 進入操作系統(tǒng)。如果登陸信息輸錯三次,自動退出系統(tǒng)。2. 按顯示的數(shù)字選擇操作,先輸入職工數(shù)據(jù),然后進行其他操作。所以輸入“1”, 開始錄入相關(guān)數(shù)據(jù)。用戶錄入完數(shù)據(jù)后,在姓名處鍵以“0”,結(jié)束操作。3. 提取文件信息,輸入數(shù)字“9”,回車確定操作,將系統(tǒng)以前操作過的保存的 文件提取出來,并顯示。4. 顯示職工信息,輸入數(shù)字“3”,將需顯示的職工信息的編號輸入,回車確定 操作,系統(tǒng)提取相關(guān)數(shù)據(jù)并顯示。5將輸入的數(shù)據(jù)進行統(tǒng)計排序,輸入數(shù)字“7”,回車確定操作,系統(tǒng)顯示工資 統(tǒng)計表、及各項工資的平均值

9、。6. 查找職工工資,輸入“4”,回車確定操作,系統(tǒng)顯示“請輸入耍查找的編號”, 輸入想耍查找的職工的編號,系統(tǒng)提取保存的數(shù)據(jù),并顯示出來。7. 增加職工工資,輸入“6”回車確定操作,系統(tǒng)顯示輸入的頁而,將需增加的 職工信息輸入,輸入完后回車確定,系統(tǒng)顯示成功插入,并顯示職工工資信息表。8. 刪除職工工資,輸入“5”,回車確定操作,系統(tǒng)顯示“請輸入耍刪除的編號”, 輸入要刪除的職工編號,系統(tǒng)將保存的數(shù)據(jù)刪除,并顯示剩余的職工工資信息表。9. 修改職工信息,輸入“2”,回車確定操作,輸入要修改的編號,系統(tǒng)顯示該 職工的信息,將改后的信息輸入系統(tǒng)。10將所冇操作過的信息保存,輸入“8”,回車確定操

10、作,系統(tǒng)顯示成功保存信11 退出系統(tǒng),輸入“0”,回車確定操作,系統(tǒng)顯示退出的頁而,輸入任意一個 鍵,退出系統(tǒng)。(溫馨捉示:因時間的限制等原因,本程序內(nèi)存設(shè)置還不夠很完善,所以對于整 個系統(tǒng)的使用應(yīng)按照系統(tǒng)設(shè)置的順序,一項項完成下來,方可不出現(xiàn)漏洞。如果 沒按照順序操作,可能會在使用的過程岀現(xiàn)一些小差錯。)六、測試結(jié)果1. 開始運行程序,進入系統(tǒng)頁而,顯示制作者的信息。本程序制作者:i don't: knowqq : 895026504made by uc6.0-2008年9月30日<entei*>鍵進入登陸界面m如果需要對原來的信息進行操作,則先選擇礪賣取文件信息 青按任

11、意鍵繼續(xù).圖2-1顯示制作者信息的頁面2. 任意鍵繼續(xù)操作,進入登陸頁而。為保護職工成績信息.只有管理員才可以進行管理, 管理員名和登陸密碼都只有3次機會.如果超過將自動退出系統(tǒng)?請輸入管理員名:administrator請輸入 ?9| =admint istrator圖2-2登陸系統(tǒng)的頁面 輸錯管理員名字或者密碼進入到的頁而如下n*mfm*xmxxx m mx xx )(x*)(*x)(o(*xko(*x*)(xxxm mxk-xm*mxx k xxx kfxxk-*xxk-)(*xk)()()(k-)()()(x-x)gmm為保護職工成績信息只有管理員才可以逬行管理?管理員名和登陸密碼都只

12、有3次機會如果超過將自動退出系統(tǒng)?青輸入管理員名:admin ist rat or 倚輸入密碼:adnintistrator ”碼輸入錯誤?請重新輸入: kdmin istrator_圖2-3登陸系統(tǒng)出錯的頁面3. 成功進入操作系統(tǒng),按照使用說明進行操作,進入的是總系統(tǒng)的捉示頁而。«歡迎您使用職工工資管理系統(tǒng)”怨 孤 嚴(yán)_ _歡迎進入職工成績統(tǒng)計管理_ _ 嚴(yán)孤磁 相關(guān)操作選項磁u0.讀取文件信息u1-職工數(shù)據(jù)輸入2顯示職工工資3排序統(tǒng)計工資z曠4查找職工工資5增加職工工資6刪除職工工資u?修改職工信息y8成功保存信息9安全退出系統(tǒng)磁請輸入您的選擇<0-9 > =圖2-4

13、系統(tǒng)操作的頁面?.by:001 基本工:1500 加班工貧:500 其他獎金:300信息表,在姓名處犍以«結(jié)車輸入?”圖2-5輸入數(shù)據(jù)的頁面;編號; :姓名; 唯別;:基本工資;加班工資;:其他獎金; ;總額;2李四女10008004002200圖2-6顯示數(shù)據(jù)的頁面請輸入您的選擇09:0 罠文件己保存的信息如下:姓名!;編號::性別:基本工資:加班工資;:其他獎金;總額張三 1男1500s003002300李四 2女12008005002500數(shù)據(jù)己經(jīng)成功讀取龍畢,圖2-7文件提取信息的頁面請輸入您的選擇0-9=3”職工工資統(tǒng)計表”編號11姓名«性別11基本工資;1加班工

14、資11其他獎金;;總額11名次1張三男1500500300230012李四女100080040022002齊各項工資的平均值興1250650參加工作的職工人數(shù)為:2人圖2-8排序統(tǒng)計的頁面;編號; :姓名;性別;:基本工斷 ;加班工資;:其他獎金;總額;2李四女10008004002200圖2-9查找職工信息的頁面信息中沒有編尋為3韻職工.圖2-10查找不到職工信息的頁面圖2-11增加職工信息的頁面呉職工工資信息表;編號;;姓名;;性別:;基本工資;;加班工資:其他獎金;j總額«3001張三男150050030022002李四女100680040025005干百男1606500400

15、2圖2-12增加職工信息后并顯示職工工資信息表的頁面刪除編號為5的職工1600500400請輸人您旳遠拝09 >: 5«請輸入新增職工成績信息>>五資資金汚湊工工獎 號名別本常 編姓性基加其;帚審;茁£亦茹;i玉壬贏;亦di壬焉廠龜萸石 正亦1 張三002 李四女1000800400200圖2-13刪除職工信息并顯示剩余職工信息的頁面請輸入您的選擇< 09: 7請侖入要條改的編號:2 «請輸入須修改的職工工資信息”爾需要修改的職工信息如下:編號;姓名;性別;李四;基本工資;:加班工資:其他獎金;2200圖2-14修

16、改職工信息的頁面«請輸入須修改的職工工資信息”爾需要修改的職工信息如下:?sts7"stst 一一;箕福萸&;編號;姓名;李四10008004002200編號=2 姓名二李四基本工資注200加班工寮:8 00苴 tth?:500圖2-15成功修改職工信息的頁面請揄入您的選擇0-9:7請輸入要修改芮編號活 請輸入須修改的職工工資信息需要修改的信息中沒有編號為9的職工.圖2-16修改沒有編號職工信息的頁面圖2-17保存所有數(shù)據(jù)的頁面圖2-18退出系統(tǒng)的頁面七. 程序經(jīng)驗教訓(xùn)總結(jié)通過這個程序設(shè)計,我不僅提高了動手操作能力,對c+語言冇了更深的認識, 能夠更好地運用c+語言

17、進行編程設(shè)計,同時在思維、看待問題的全而性等方而也冇 了很大的提高。不過由于時間、經(jīng)驗不夠、對語言的掌握程度不深等問題,在這個系 統(tǒng)設(shè)計述存在一些問題,比如內(nèi)存設(shè)計述不夠完善,整個系統(tǒng)的流暢性等,希望可以 在今后的設(shè)計上能夠解決這些問題,做的更好。九.附錄/職工成績管理系統(tǒng)#include <iomanip>#include <iostream>#include <fstream>#include <malloc.h>#include <stdlib.h>#include <string.h>#define null 0i

18、nt const n=20;#define len sizeof(struct epployee)using namespace std;int n=0;/定義一個全局變量統(tǒng)計職工人數(shù)/定義一個職工信息的結(jié)構(gòu)體struct epployeechar namen;/用來存放姓名char sexn;/用來存放性別long id;float paid3;int total;/用來存放編號/用來存放工資/用來存放總工資struct epployee *next;/職工類class information public:/構(gòu)造函數(shù)./析構(gòu)函數(shù).information();information();ep

19、ployee *creat();/建m鏈表void output(epployee *hcad);/顯示職工信息int count(epployee *head);/定義函數(shù) count ()統(tǒng)計職工總數(shù)epployee *insert(epployee*head);/指針函數(shù)insert ()用來添加職工信息.epployee *cancel(epployee *head,long id);/指針函數(shù)cancel ()用來刪除職工信息.epployee *find(epployee *head,long id);/指針函數(shù)*find()用來查找職工信息.epployee *modify(ep

20、ployee *head,long id); /指針函數(shù)*modifc ()用來修改職工/定義paixu ()函數(shù)將職工的總額從大/定義職工工資平均值的函數(shù)/保存文件信息/讀取文件信息的信息.void sort(epployee * head);到小排列并輸出void average(epployee *head);void save(epployee *head); epployee *read();private:epployee *p 1 ,*p2,*p3,*head,st; ;information: :information()cout«h* *y cout«&q

21、uot; «歡迎您使用職工工資管理系統(tǒng)»nn;cout«"* *5口譏作者的信息和提示void editor()cout«"nttt 本程序制作者:nntttl don't know nntttqq : 895026504”;cout«nnntttmade by vc6.0+nnttt2008 年 9 月 30 b nnttt 按venter>鍵 進入登陸界面! !;cout«"nnttt如果需要對原來的信息進行操作,則先選擇0讀取文件信息nn«endl;information:i

22、n formation()cout«h* * cout«n «謝謝您使用職工工資管理系統(tǒng)»nn;cout«nki ki ki ki* *n“/建立鏈表信息epployee information: :creat(void)/定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*creat()用來錄入職工信息. char chn;n=0;/用來存放職工姓名p 1 =p2=(epployee *)malloc(len);/調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元 cout«" «請建立職工信息表,在姓名處

23、鍵以#結(jié)束輸a!»-"«endl;cout«n 姓名:;cin»ch;head=null;/給指針head賦初值while (strcmp(ch,"#")!=0)/調(diào)用字符比較函數(shù)strcmpo用來判斷是否繼續(xù)輸入pl=(epployee *)malloc(len);/調(diào)用 malloc ()函數(shù)用來開辟一個新的存儲單元strcpy(p 1 ->name,ch);/將循環(huán)結(jié)構(gòu)前而輸入的姓名復(fù)制到結(jié)構(gòu)體名為pl的數(shù)組name中cout«z,性別:;cin»pl->sex;cout«&q

24、uot;編號:"cin»pl->id;while(p 1 ->id)<oii(p 1 ->id)> 100000)判斷輸入的編號是否有效(100000 個)cout«n對不起,您的輸入錯誤!請重新輸入(>0< 1000000): ”;cin»pl->id;cout«"基本工資:";cin»pl->paid0;while(p 1 ->paid0)<0ll(p 1 ->paid0)> 100000)判斷輸入的分數(shù)是否有效(>=() &l

25、t;=100000)cout«n對不起,您的輸入錯誤!請重新輸入(>0<100000): ”;cin»pl->paid0;cout«n加班工資:”;cin»pl->paidl;while(p 1 ->paid l)<0ll(p 1 ->paidl)> 100000)判斷輸入的分數(shù)是否有效(>=0 <=100000)cout«n對不起,您的輸入錯誤!請重新輸入(>0<100000): ”;cin»pl->paidl;cout«"其他獎金:”

26、;cin»pl->paid2;while(p 1 ->paid2)<0ll(p 1 ->paid2)> 100000)判斷輸入的分數(shù)是否有效(>=0 <=100000)cout«n對不起,您的輸入錯誤!請重新輸a(>0< 100000): ”;cin»pl->paid2;p 1 ->total=p 1 ->paido+p 1 ->paid l+pl ->paid2;計算總額if(n=o)head=pl;如果是輸入第一組職工信息就將指針pl賦給指針headelse p2->ne

27、xt=p 1; 否則將pl賦給p2所指結(jié)構(gòu)體的next指針 p2=p 1;將指針p 1賦給指針p2時+;將職工人數(shù)n的值加1cout«"n 姓名:”;cin»ch;將輸入的姓名存放到字符數(shù)組ch中p2->next=null; 將p2所指結(jié)構(gòu)體的next指針重新賦空值 return (head);/將輸入的第一組職工信息返回定義output()函數(shù)將職工的信息從頭指針?biāo)竷?nèi)容開始輸出void information:output(epployee *head)/system("cls");if(head=null) cout«&q

28、uot;這是一個空表,請先輸入職工信息!n”; elsecout«"n"cout«" *職工工資信息表*11”;cout«"n"cout«"l編號i i姓名ii性別ii基本工資i i加班工資i i其他獎金ii總額ln“;cout«"n"pl=head;將頭指針賦給pdocout«setw(6)«p 1 ->id«setw( 14)«p 1 ->name«setw( 11 )«p 1 >se

29、x«setw(l 1 )«p 1 ->paid0«setw( 15)«p 1 > paidl«setw(l 3)«p 1 ->paid2«setw( 13)«p 1 >total«endl;cout«"-nn;pl=pl->next;將卜一組職工信息的next指針賦給pwhile(pl!=null);若指針p非空則繼續(xù),口的是把所有的職工信息都傳給指針p然后輸出.統(tǒng)計職工人數(shù)的函數(shù)int information:count(struct epployee

30、*head)定義函數(shù) count()統(tǒng)計職工總數(shù)if(head=null)return(o);若指針 head 為空返回值為 0else return( 1 +count(head->next);函數(shù)的遞歸調(diào)用添加職工的成績的函數(shù)epployee *information:insert( epployee *head)插入新結(jié)點定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*inseh()用來添加職 工信息./system("cls");cout«"tvv請輸入新增職工成績信息>>n"«endl;pl=(

31、epployee *)malloc(len); 使 pl 指向插入的新結(jié)點 cout«"編號:";cin»pl->id;while(pl ->id)<()ll(p 1 ->id)> 100000)cout«n對不起,您的輸入錯誤!請重新輸入(>0<100000): ”;cin»pl->id;將輸入的編號存放到pl所指結(jié)構(gòu)體的數(shù)組id小cout«n 姓名:”;cin»pl->name;將輸入的姓名存放到結(jié)構(gòu)體名為pl的數(shù)組name中cout«n 性別:”

32、;cin»pl->sex;cout«"基本工資:";cin»pl->paido;while(pl->paid 0 )<0l l(p 1 ->paid0 )> 100000)cout«n對不起,您的輸入錯誤!請重新輸入(>0<100000): ”;cin»pl->paid0;將輸入的基木工資存放到pl所指結(jié)構(gòu)體的數(shù)組paid中cout«n加班工資:”;cin»pl->paidl;while(pl ->paid l)<0ll(p 1 -&

33、gt;paid 1)>100000)cout«n對不起,您的輸入錯誤!請重新輸a(>0< 100000): ”;cin»pl->paidl;將輸入的加班工資存放到pl所指結(jié)構(gòu)體的數(shù)組paid 'i1cout«"其他獎金:”;cin»p 1 ->paid2;while(pl->paid2)<0ll(pl->paid2)>100000)cout«n對不起,您的輸入錯誤!請重新輸入(>0<100000): ”; cin»pl->paid2;將輸入的他獎

34、金存放到pl所指結(jié)構(gòu)體的數(shù)組paid 'i1p 1 ->total=p 1 ->paid0+p 1 ->paidl+p 1 ->paid2;計算總分p2=head;將頭指針賦給p2if(head=null) 若沒調(diào)用次函數(shù)以而的頭指針head為空head=p 1 ;p 1 ->next=null;則將pl賦給頭指針head并將pl所指結(jié)構(gòu)體成員指針next賦空值elsewhile(p 1 ->id>p2->id)&&(p2->next! =null)p3=p2;/p3指向原p2指向的結(jié)點p2=p2->next;

35、/p2后移一個結(jié)點if(pl->id<=p2->id)if(head=p2)pl->next=head;head=p 1;插入到第一個結(jié)點之前elsep3> next=pl;pl >next=p2; 插入到p3所指結(jié)點elsep2->next=pl;pl->next=null; 插入到尾結(jié)點n+; 將職工人數(shù)加1cout«htvv你輸入的職工信息已經(jīng)成功插入>n«endl;return (head);刪除職工信息epployee information:cancel(epployee *head,long id)定義一個

36、扌旨向 structepployee的結(jié)構(gòu)體指針函數(shù)*delete()用來刪除考生信息.system(” cis");if(head=null) 若調(diào)用次函數(shù)以而的頭指針head為空return(head);elsepl=head;否則將頭指針賦給plwhile(id!=pl->id&&pl>next!二null)尋找要刪除的結(jié)點當(dāng)pl所指的職工編號不是輸入的職工編號并且pl所指的next指針不為空p2=pl;pl=pl->next;/p2指向原pl指向的結(jié)點pl后移一個結(jié)點if(id=pl->id)如果輸入的職工編號是pl所指的職工編號結(jié)點找

37、到后刪if(pl=head) head=pl->next; 如果head指針和pl指針相等則將卜一個結(jié)點賦 給指針headelsep2->next=pl->next;否則將pl所指結(jié)點賦給p2所指結(jié)點將要刪除的職工信息跳過去cout«n刪除編號為h«id«m的職工;n-;將職工人數(shù)減1return(head);將頭指針返回epployee *information:modify(epployee *head,long id)/system("clsn);cout«"tvv請輸入須修改的職工工資信息>>n&

38、quot;«endl;pl=(epployee *)malloc(len); 使 pl 指向輸入的結(jié)點pl=head;否則將頭指針賦給plwhile(id! =p 1 >id&&p 1 ->next!=null)尋找結(jié)點當(dāng)pl所指的職工編號不是輸入的職工編號并且pl所指的next指針不 為空pl=pl->next;/p2指向原pl指向的結(jié)點pl后移一個結(jié)點if(id=pl->id)如果要杳找的職工編號是pl所指的職工編號cout«"你需要修改的職工信息如下:n”;cout«nn"coutvvj編號i i姓

39、名ii性別ii基本工資i i加班工資i i其他獎金ii總額ir;cout«nn"cout«setw(6)«p 1 ->id«setw(l 0)«p 1 > name«setw( 10)«p 1 >sex«setw(l()«p 1 ->paid0«setw(15)«p 1 >paidl «setw( 12)«p 1 ->paid2«setw( 12)«p 1 >total«endl;co

40、ut«"n"cout«"編號:";cin»pl->id;while(pl ->id)<()ll(p 1 ->id)> 100000)cout«n對不起,您的輸入錯誤!請重新輸入(>0<100000): ”;cin»pl->id;將輸入的編號存放到pl所指結(jié)構(gòu)體的數(shù)組id小cout«n 姓名:”;cin»pl->name;將輸入的姓名存放到結(jié)構(gòu)體名為pl的數(shù)組name中cout«n 性別:”;cin»pl->

41、sex;cout«"基本工資:";cin»pl->paid();while(pl->paid0)<0ll(pl->paid0)>100000)cout«n對不起,您的輸入錯誤!請重新輸a(>0< 100000): ”;cin»pl->paid0; 將輸入的基本工資存放到pl所指結(jié)構(gòu)體的數(shù)組paid 'i1cout«n加班工資:”;cin»pl->paidl;while(pl ->paid l)<oii(p 1 ->paid 1)>

42、100000)cout«n對不起,您的輸入錯誤!請重新輸a(>0< 100000): ”; cin»pl->paidl; 將輸入的加班工資存放到pl所指結(jié)構(gòu)體的數(shù)組paid 'i1cout«"其他獎金:”;cin»pl->paid2;while(pl->paid2)<0ll(pl->paid2)>100000)cout«n對不起,您的輸入錯誤!請重新輸入(>0<100000): ”; cin»pl->paid2; 將輸入的其他獎金存放到pl所指結(jié)構(gòu)體的

43、數(shù)組paid 'i1p 1 ->total=p 1 ->paid0+p 1 ->paid l+pl ->paid2; 計算總分elsecout«"需要修改的信息中沒有編號為“vvidvv”的職工.nn”; 沒有想要修改的 結(jié)點宿息getchar();return(head);查找職工信息epployee *information:find(epployee *head,long id)定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*find()用來查找職工信息./system("cls");if(head=nu

44、ll)若調(diào)用次函數(shù)以前的頭指針head為空cout«n這是一個空表,請先輸入職工信息!n”;return(head);elsepl=head;否則將頭指針賦給plwhile(id! =p 1 >id&&p 1 ->next!=null)尋找結(jié)點當(dāng)pl所指的職工編號不是輸入的職工編號并且pl所指的next指針不 為空pl=pl->next; /p2指向原pl指向的結(jié)點pl后移一個結(jié)點if(id=pl->id) 如果要查找的職工編號是pl所指的職工編號cout«nn"cout«"l編號i i姓名i i性別ii

45、基本工資ii加班工資i i其他獎金ii總額l;cout«nn"cout«setw(6)«p 1 ->id«setw(l 0)«p 1 > name«setw( 10)«p 1 >sex«setw(l()«p 1 ->paido«setw(l 4)«p 1 ->paidl «setw( 12)«p 1 ->paid2«setw( 12)«p 1 >total«endl;cout«

46、;"n"elsecoutvv”信息中沒有編號為” vvidvv”的職工an”;/結(jié)點沒找到return(head);定義sort()函數(shù)將職工的工資總額從大到小排列并輸出void information:sort(epployee *head)/system(hclsh);int i,k,m=0j;epployee *pn;定義一個指向struct epployee的結(jié)構(gòu)體指針數(shù)組pif(head! =null)/如果頭指針是空則繼續(xù) m=count(head);cout«"n"cout«" *職丄工資統(tǒng)計表*n"

47、cout«"n"i總額icout«"l編號ii姓名i i性別i i基本工資i i加班工資i i其他獎金ii名次ln“;cout«"n"pl=head;for(k=0;k<m;k+)pk=pl;pl=pl->next;for(k=0;k<m-1 ;k+) /選擇排序法for(j=k+1 ;j vm;j+)if(pk->total<p j ->total)p2 二 pk;pk=puj;plj=p2; 從大到小排列的指針for(i=0;i<m;i+)cout«setw(

48、6)«pi->id«setw(8)«pi->name«setw(9)«pi->sex«setw( 1 ()«pi->paid0j«setw(l()«pi->paid 1«setw( 15)«pi->paid2«setw(l l)«pi->total«setw(l 0)«i+1 «endl;cout«"-n"求齊工資的平均值的函數(shù)void information:av

49、erage(epployee *head)int k,m;float arg 1 =0,arg2=0,arg3=0;if(head=null)/如杲頭指針是空則繼續(xù)cout«"這是一個空表,請先輸入職工信息!n”;else的平均值:m=count(head);pl=head;for(k=0;k<m;k+)arg 1 +=p 1 ->paid0;arg2+=p 1 ->paid 1;arg3+=p 1 ->paid2;pl=pl->next;argl/=m;arg2/=m;arg3/=m;cout«" *齊項工資的平均值*11

50、”;cout«"nn;cout«"tt 基本工資的平均值:”vvsetw(4)vvarglvv"n”vv”tt 加班工資 "«setw(4)«arg2«"n,«,tt 獎金的平均值:n«setw(4)«arg3«nnh;cout«nnn;保存函數(shù).void information:save(epployee *head)/system("clsn);ofstream out("data",ios:out);out&#

51、171;count(head)«endl;while(head!=null) out«head->name«htnv<head>idvv”t”vv”t”«head->sex«"t"«head->paido«hth«head->paidl«hth«head->paid2«hth«head->total«endl;head=head->next;讀取文件的信息epployee *informati

52、on:read()/system("clsn);int i=0;pl=p2=( epployee *)malloc(len);head=null;ifstream in("datah,ios:out);in»i;if(i=0)cout«" data文件中的數(shù)據(jù)為空,請先輸入數(shù)據(jù)!"«endl; return 0; else cout«"n原文件已保存的信息如b :nm;cout«""«endl;cout«"l姓名i i編號ii性別i i基本工資i

53、 i加班工資ii其他獎金ii總額ir;cout«n n«endl;for(;i>();i-)pl=(epployee *)malloc(len);in»»st.id»st.sex»st.paido»st.paid 1 »st.paid2»st.total;strcpy(pl->name,);pl> id=st.id;strcpy (p 1 ->sex,st.sex);p 1 ->paido=st.paido;p 1 >paidf l=st.p

54、aid 1;p 1 ->paid2=st.paid2;pl->total=st.total;if(n=()head=p 1;如果是輸入第一組職工信息就將指針pl賦給指針headelse p2->next=p 1;否則將pl賦給p2所指結(jié)構(gòu)體的next指針p2=p 1;將指針p 1賦給指針p2n+;將n的值加1顯示讀入數(shù)據(jù)cout«" ,«pl->name«"tn«pl->id«" tn« pl->sex «" t"« pl->

55、;paido «" th«pl->paidl«" th«pl->paid2 «h th« pl->total«endl;cout«""«endl;cout«"數(shù)據(jù)已經(jīng)成功讀取完畢!nn"«endl;p2->next=null; return (head);菜單void menu()information person;epployee *head=null;int choice;long i;docou

56、t«ht探探探探n«endl;cout«"t 探探 h«endl;cout«"t探v _ _歡迎進入職工成績統(tǒng)計管理 _ _ v探 h«endl;cout«"t 探"«endl;cout«"t探” vvendl;cout«"th«endl;cout«ht相關(guān)操作選項h«endl;cout«"th«endl;cout«nt探” vvendl;cout«&quo

57、t;t 探v0.讀取文件信息探 h«endl;cout«"t 探探 h«endl;cout«"t 探v1.職工數(shù)據(jù)輸入探"«endl;cout«"t 探探 h«endl;cout«"t 探v2.顯示職工工資探 h«endl;cout«"t 探探"«endl;cout«"t 探v3.排序統(tǒng)計工資探 h«endl;cout«"t 探探 h«endl;cout&#

58、171;"t 探v4.查找職工工資探"«endl;cout«"t 探探 h«endl;cout«"t 探v5.增加職工工資探 h«endl;cout«"t 探探"«endl;cout«"t 探v6.刪除職工工資探 h«endl;cout«"t 探探 h«endl;cout«"t 探v7.修改職工信息探"«endl;cout«"t 探探 h«

59、;endl;cout«nt 探8. 成功保存信息h«endl;cout«"t 探探 h«endl;cout«ntv9. 安全退出系統(tǒng)探 h«endl;cout«"t 探h«endl;cout«nt'川幺endl;cout«h請輸入您的選擇()-9):”;cin»choice;while(choice<0llchoice>9)cout«"對不起,您的輸入錯誤!請輸入您的選揪0-9):”; cin»choice;swit

60、ch(choice)case 0:head=person.read();break;case 1:head=person .creat(); break;case 2:person.output(head); break;case 3:person.sort(head); person.average(head);cout«n參加工作 的職工人數(shù)為:"«person.count(head)«h人nn"break;case 4:cout«"請輸入要查找的編號:”;case 5:case 6:case 7:case 8:cin»i;while(i<0lli>100000)cout

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論