版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課 程 設(shè) 計</b></p><p> 設(shè)計題目: 職工工資管理系統(tǒng) </p><p> 學(xué)生姓名: 劉漢 </p><p> 學(xué)生學(xué)號: 200940410106 </p><p> 專業(yè)班級: 09計科(1)
2、 </p><p> 指導(dǎo)教師: 祁文青 </p><p> 2011-12-20 </p><p><b> 目 錄</b></p><p><b> 一、前言1</b></p><p> 二、課題要求、課題
3、分析1</p><p><b> ?。ㄒ唬┱n題要求1</b></p><p><b> (二)課題分析1</b></p><p><b> 三、方案設(shè)定2</b></p><p> 四、程序功能描述與模塊結(jié)構(gòu)2</p><p> ?。ㄒ唬?/p>
4、程序功能描述2</p><p><b> ?。ǘ┕δ苣K2</b></p><p> ?。ㄈ┏绦蛄鞒虉D3</p><p> 四、用戶使用說明6</p><p><b> 五、測試結(jié)果7</b></p><p> 六﹑程序經(jīng)驗教訓(xùn)總結(jié)12</p>
5、;<p><b> 七﹑附錄13</b></p><p><b> 一、前言</b></p><p> C++語言是具有面向?qū)ο筇匦缘腃語言的繼承者,即是由C語言演變而來,全面兼容C語言。C語言的優(yōu)點,如語言簡潔靈活,運算符和數(shù)據(jù)結(jié)構(gòu)豐富,具有結(jié)構(gòu)化控制語句,程序執(zhí)行效率高,同時具有高級語言與匯編語言的優(yōu)點,這些在C++語言
6、中同樣能夠體現(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è)計。</p><p> 二、課題要求、課題分析</p><p><b> ?。ㄒ唬┱n題要求&l
7、t;/b></p><p> 《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é)知識和技能得到進一步鞏固、深化和擴展,以達到能用C++編寫初等程度軟件的目的,為繼續(xù)學(xué)習(xí)后續(xù)課程及今后走上相關(guān)工作崗位打下良好的基礎(chǔ)。&l
8、t;/p><p> 經(jīng)過調(diào)查分析,決定設(shè)計職工工資管理系統(tǒng)。</p><p> 創(chuàng)建存儲職工工資信息的存儲文件。添加某職工的工資信息。刪除某職工的工資信息。修改某職工的部分工資信息(當(dāng)月開始增加或減少某些項工資或扣款數(shù)變化)。輸出指定編號職工的工資信息(查詢用)。輸出全體職工的工資信息(發(fā)工資用)。</p><p><b> ?。ǘ┱n題分析</b&
9、gt;</p><p> 職工工資管理系統(tǒng)可定位于企業(yè)會計系統(tǒng)的一個子系統(tǒng),該系統(tǒng)主要完成的工作為:錄入各職工自身及工資情況、對已經(jīng)存在的數(shù)據(jù)的修改、刪除、可查詢、統(tǒng)計系統(tǒng)中的數(shù)據(jù)等。為此因此職工工資管理系統(tǒng)的功能:讀取文件信息、數(shù)據(jù)輸入、顯示、排序、查找、增加、刪除、修改、保存等。</p><p> 三、課程設(shè)計內(nèi)容及進度安排</p><p><b>
10、; (一)課題內(nèi)容:</b></p><p> 該系統(tǒng)在磁盤上存儲了某單位全體職工的工資信息。對于每位職工存儲以下信息:職工編號、基本工資、津貼、崗貼、補貼、應(yīng)發(fā)數(shù)、個人所得稅、應(yīng)扣數(shù)、實發(fā)數(shù)。個人所得稅計算方法設(shè)為:工資少于1100元的部分為0,1100—1600元部分為5%,1600—2600部分為10%,2600—3600部分為15%,5600元以上部分為20%。</p>&l
11、t;p><b> (二)課題要求:</b></p><p> 1.分析問題,給出數(shù)學(xué)模型,選擇數(shù)據(jù)結(jié)構(gòu).</p><p> 2.設(shè)計算法,給出算法描述</p><p><b> 3.給出源程序清單</b></p><p> 4. 編輯、編譯、調(diào)試源程序</p><
12、p> 5. 撰寫課程設(shè)計報告</p><p> 四、 程序功能描述與模塊結(jié)構(gòu)</p><p><b> (一)程序功能描述</b></p><p> 通過主菜單display()函數(shù)將讀取文件信息、輸入、顯示、統(tǒng)計、增加、刪除、修改、查找、排序等函數(shù)結(jié)合一起,在用戶通過相關(guān)操作選擇其中一個功能時,調(diào)用該功能函數(shù),完成數(shù)據(jù)處理。在主
13、函數(shù)中調(diào)用主菜單diplay()函數(shù),完成操作。用一個中間函數(shù)將主函數(shù)與各功能函數(shù)連接在一起,不僅使程序語言簡潔、明了、易懂,而且在功能實現(xiàn)上也更加晚上。</p><p><b> ?。ǘ┕δ苣K</b></p><p> 1.主函數(shù)int main():設(shè)置背景顏色和字體顏色、調(diào)用設(shè)計者的相關(guān)信息函數(shù)、調(diào)用display函數(shù),實現(xiàn)系統(tǒng)的主要功能處理;</p
14、><p> 2.主菜單dispiay()函數(shù):確定如何選擇所需功能,調(diào)用讀取文件信息、數(shù)據(jù)輸入、顯示、排序、查找、增加、刪除、修改、保存等函數(shù),完成職工工資管理系統(tǒng)的數(shù)據(jù)處理;</p><p> 3.讀取文件的信息read()函數(shù):從文件中讀取職工工資的信息表并顯示出來;</p><p> 4.數(shù)據(jù)輸入函數(shù)shuru():建立鏈表,完成職工信息錄入;</p&
15、gt;<p> 5.數(shù)據(jù)顯示函數(shù)diaplay():將職工信息數(shù)據(jù)顯示出來;</p><p> 6.數(shù)據(jù)統(tǒng)計函數(shù)tongji():統(tǒng)計職工人數(shù);</p><p> 7.數(shù)據(jù)增加函數(shù)tianjia():添加職工信息;</p><p> 8.數(shù)據(jù)刪除函數(shù)shanchu():刪除職工信息數(shù)據(jù);</p><p> 9.數(shù)據(jù)修改
16、函數(shù)xiugai():修改職工工資等信息數(shù)據(jù);</p><p> 10.數(shù)據(jù)查找函數(shù)chazhao():查找某一職工工資等信息情況;</p><p> 11.數(shù)據(jù)保存函數(shù)save():對系統(tǒng)中的數(shù)據(jù)進行相關(guān)的操作后將其保存起來;</p><p> 12.作者信息函數(shù)editor():顯示設(shè)計者的相關(guān)信息;</p><p> 13.登陸
17、函數(shù)Pass():設(shè)定使用權(quán)限。</p><p><b> ?。ㄈ┏绦蛄鞒虉D</b></p><p> 程序流程圖主是對各功能模塊的具體描述,以一種圖表的方式簡潔明了的將各模塊的呈現(xiàn)出來,通過這些流程圖可清楚的看出整個程序的運行過程,體會程序的流暢性。</p><p><b> 主函數(shù)流程圖</b></p>
18、;<p> 圖1-1主函數(shù)的流程圖</p><p> 2.各子功能函數(shù)流程圖</p><p> 圖1-2 Menu函數(shù)流程圖</p><p><b> 五、用戶使用說明</b></p><p> 這是一個關(guān)于職工工資管理系統(tǒng),具有輸入、輸出、統(tǒng)計、刪除、查詢、修改數(shù)據(jù)等功能,建立了一個含有姓名、性
19、別、編號、工資、總工資等成員的結(jié)構(gòu)體數(shù)據(jù)類型的變量struct xinxi 。</p><p> 用戶使用時,根據(jù)提示操作,進入登陸頁面。輸入登陸名ltf,登陸密碼ltf,進入操作系統(tǒng)。如果登陸信息輸錯三次,自動退出系統(tǒng)。</p><p> 按顯示的數(shù)字選擇操作,先輸入職工數(shù)據(jù),然后進行其他操作。所以輸入“1”,開始錄入相關(guān)數(shù)據(jù)。用戶錄入完數(shù)據(jù)后,在姓名處鍵以“0”,結(jié)束操作。<
20、/p><p> 提取文件信息,輸入數(shù)字“9”,回車確定操作,將系統(tǒng)以前操作過的保存的文件提取出來,并顯示。</p><p> 顯示職工信息,輸入數(shù)字“3”,將需顯示的職工信息的編號輸入,回車確定操作,系統(tǒng)提取相關(guān)數(shù)據(jù)并顯示。</p><p> 將輸入的數(shù)據(jù)進行統(tǒng)計排序,輸入數(shù)字“7”,回車確定操作,系統(tǒng)顯示工資統(tǒng)計表、及各項工資的平均值。</p>&
21、lt;p> 查找職工工資,輸入“4”,回車確定操作,系統(tǒng)顯示“請輸入要查找的編號”,輸入想要查找的職工的編號,系統(tǒng)提取保存的數(shù)據(jù),并顯示出來。</p><p> 增加職工工資,輸入“6”回車確定操作,系統(tǒng)顯示輸入的頁面,將需增加的職工信息輸入,輸入完后回車確定,系統(tǒng)顯示成功插入,并顯示職工工資信息表。</p><p> 刪除職工工資,輸入“5”,回車確定操作,系統(tǒng)顯示“請輸入要
22、刪除的編號”,輸入要刪除的職工編號,系統(tǒng)將保存的數(shù)據(jù)刪除,并顯示剩余的職工工資信息表。</p><p> 修改職工信息,輸入“2”,回車確定操作,輸入要修改的編號,系統(tǒng)顯示該職工的信息,將改后的信息輸入系統(tǒng)。</p><p> 10.將所有操作過的信息保存,輸入“8”,回車確定操作,系統(tǒng)顯示成功保存信息。</p><p> 11.退出系統(tǒng),輸入“0”,回車確定
23、操作,系統(tǒng)顯示退出的頁面,輸入任意一個鍵,退出系統(tǒng)。</p><p> (溫馨提示:因時間的限制等原因,本程序內(nèi)存設(shè)置還不夠很完善,所以對于整個系統(tǒng)的使用應(yīng)按照系統(tǒng)設(shè)置的順序,一項項完成下來,方可不出現(xiàn)漏洞。如果沒按照順序操作,可能會在使用的過程出現(xiàn)一些小差錯。)</p><p><b> 六、測試結(jié)果</b></p><p> 開始運行
24、程序,進入系統(tǒng)頁面,顯示制作者的信息。</p><p> 圖2-1 顯示制作者信息的頁面</p><p> 任意鍵繼續(xù)操作,進入登陸頁面。</p><p> 圖2-2 登陸系統(tǒng)的頁面</p><p> 輸錯管理員名字或者密碼進入到的頁面如下</p><p> 圖2-3 登陸系統(tǒng)出錯的頁面</p>
25、<p> 成功進入操作系統(tǒng),按照使用說明進行操作,進入的是總系統(tǒng)的提示頁面。</p><p> 圖2-4 系統(tǒng)操作的頁面</p><p> 圖2-5 輸入數(shù)據(jù)的頁面</p><p> 圖2-6 顯示數(shù)據(jù)的頁面</p><p> 圖2-7 文件提取信息的頁面</p><p> 圖2-8 排序統(tǒng)計的
26、頁面</p><p> 圖2-9 查找職工信息的頁面</p><p> 圖2-10 查找不到職工信息的頁面</p><p> 圖2-11 增加職工信息的頁面</p><p> 圖2-12 增加職工信息后并顯示職工工資信息表的頁面</p><p> 圖2-13 刪除職工信息并顯示剩余職工信息的頁面</p&
27、gt;<p> 圖2-14 修改職工信息的頁面</p><p> 圖2-15 成功修改職工信息的頁面</p><p> 圖2-16 修改沒有編號職工信息的頁面</p><p> 圖2-17 保存所有數(shù)據(jù)的頁面</p><p> 圖2-18 退出系統(tǒng)的頁面</p><p> 七﹑程序經(jīng)驗教訓(xùn)總結(jié)
28、</p><p> 通過這個程序設(shè)計,我不僅提高了動手操作能力,對C++語言有了更深的認識,能夠更好地運用C++語言進行編程設(shè)計,同時在思維、看待問題的全面性等方面也有了很大的提高。不過由于時間、經(jīng)驗不夠、對語言的掌握程度不深等問題,在這個系統(tǒng)設(shè)計還存在一些問題,比如內(nèi)存設(shè)計還不夠完善,整個系統(tǒng)的流暢性等,希望可以在今后的設(shè)計上能夠解決這些問題,做的更好。</p><p><b&g
29、t; 九﹑附錄</b></p><p> //職工成績管理系統(tǒng)</p><p> #include <iomanip></p><p> #include <iostream></p><p> #include <fstream></p><p> #inc
30、lude <malloc.h></p><p> #include <stdlib.h></p><p> #include <string.h></p><p> #define NULL 0</p><p> int const N=20;</p><p> #defi
31、ne LEN sizeof(struct epployee)</p><p> using namespace std; </p><p> int n=0; //定義一個全局變量統(tǒng)計職工人數(shù) </p><p> //定義一個職工信息的結(jié)構(gòu)體</p><p> struct epployee</p><
32、;p><b> { </b></p><p> char name[N]; //用來存放姓名</p><p> char sex[N]; //用來存放性別</p><p> long id; //用來存放編號</p><p> float paid[3];
33、 //用來存放工資</p><p> int total; //用來存放總工資</p><p> struct epployee *next;</p><p><b> };</b></p><p><b> //職工類</b></p><p> cl
34、ass Information</p><p><b> { </b></p><p><b> public:</b></p><p> Information() ; //構(gòu)造函數(shù). </p><p> ~Information() ; //析構(gòu)函數(shù). </p&
35、gt;<p> epployee *creat(); //建立鏈表</p><p> void output(epployee *head); //顯示職工信息</p><p> int count(epployee *head); //定義函數(shù)count()統(tǒng)計職工總數(shù)</p><p> epployee
36、 *insert(epployee*head); //指針函數(shù)*insert()用來添加職工信息.</p><p> epployee *cancel(epployee *head,long id); //指針函數(shù)*cancel()用來刪除職工信息.</p><p> epployee *find(epployee *head,long id); //指針函數(shù)*fi
37、nd()用來查找職工信息.</p><p> epployee *modify(epployee *head,long id); //指針函數(shù)*modife()用來修改職工的信息.</p><p> void sort(epployee *head); //定義paixu()函數(shù)將職工的總額從大到小排列并輸出</p><p> vo
38、id average(epployee *head); //定義職工工資平均值的函數(shù)</p><p> void save(epployee *head); //保存文件信息</p><p> epployee *Read(); //讀取文件信息</p><p><b>
39、; private:</b></p><p> epployee *p1,*p2,*p3,*head,st; </p><p><b> };</b></p><p> Information::Information() </p><p> {cout<<" ********
40、**********************************************************************\n";</p><p> cout<<" ------------------------<<歡迎您使用職工工資管理系統(tǒng)>>------------------------\n"; </p>
41、<p> cout<<" ******************************************************************************\n\n"; </p><p><b> }</b></p><p> //作者的信息和提示</p><p> v
42、oid editor()</p><p><b> {</b></p><p> cout<<"\n\t\t\t本程序制作者:\n\n\t\t\tI don't know \n\n\t\t\tQQ : 895026504";</p><p> cout<<"\n\n\t\t\t
43、Made By VC6.0++\n\n\t\t\t2008年9月30日\n\n\t\t\t按<Enter>鍵進入登陸界面!!";</p><p> cout<<"\n\n\t\t\t如果需要對原來的信息進行操作,則先選擇0讀取文件信息\n"<<endl;</p><p><b> }</b><
44、/p><p> Information::~Information()</p><p> { cout<<" ******************************************************************************\n";</p><p> cout<<" -
45、-----------------------<<謝謝您使用職工工資管理系統(tǒng)>>------------------------\n"; </p><p> cout<<" ******************************************************************************\n";</
46、p><p><b> }</b></p><p><b> //建立鏈表信息</b></p><p> epployee *Information::creat(void) </p><p> {//定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*creat()用來錄入職工信息. &
47、lt;/p><p> char ch[N];n=0; //用來存放職工姓名 </p><p> p1=p2=(epployee *)malloc(LEN);//調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元 </p><p> cout<<" -------------<<請建立職工信息表,在姓名處鍵以 # 結(jié)束輸入
48、!>>--------------"<<endl;</p><p> cout<<" 姓名:";</p><p><b> cin>>ch;</b></p><p> head=NULL; //給指針head賦初值</p><p&g
49、t; while (strcmp(ch,"#")!=0) //調(diào)用字符比較函數(shù)strcmp()用來判斷是否繼續(xù)輸入</p><p><b> { </b></p><p> p1=(epployee *)malloc(LEN); //調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元</p><p
50、> strcpy(p1->name,ch); //將循環(huán)結(jié)構(gòu)前面輸入的姓名復(fù)制到結(jié)構(gòu)體名為p1的數(shù)組name中</p><p> cout<<" 性別:";</p><p> cin>>p1->sex;</p><p> cout<<" 編號:&qu
51、ot;;</p><p> cin>>p1->id;</p><p> while((p1->id)<0||(p1->id)>100000) //判斷輸入的編號是否有效(100000個)</p><p><b> {</b></p><p> cout<&l
52、t;" 對不起,您的輸入錯誤!請重新輸入(>0<1000000): ";</p><p> cin>>p1->id;</p><p><b> } </b></p><p> cout<<" 基本工資:";</p><p> cin
53、>>p1->paid[0];</p><p> while((p1->paid[0])<0||(p1->paid[0])>100000) //判斷輸入的分?jǐn)?shù)是否有效(>=0 <=100000)</p><p><b> {</b></p><p> cout<<&
54、quot; 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p> cin>>p1->paid[0];</p><p><b> } </b></p><p> cout<<" 加班工資:";</p><p> ci
55、n>>p1->paid[1];</p><p> while((p1->paid[1])<0||(p1->paid[1])>100000) //判斷輸入的分?jǐn)?shù)是否有效(>=0 <=100000)</p><p><b> {</b></p><p> cout<<
56、" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p> cin>>p1->paid[1];</p><p><b> } </b></p><p> cout<<" 其他獎金:";</p><p> c
57、in>>p1->paid[2];</p><p> while((p1->paid[2])<0||(p1->paid[2])>100000) //判斷輸入的分?jǐn)?shù)是否有效(>=0 <=100000)</p><p><b> {</b></p><p> cout<<
58、;" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p> cin>>p1->paid[2];</p><p><b> } </b></p><p> p1->total=p1->paid[0]+p1->paid[1]+p1->paid
59、[2]; //計算總額 </p><p> if(n==0)head=p1; //如果是輸入第一組職工信息就將指針p1賦給指針head</p><p> else p2->next=p1; //否則將p1賦給p2所指結(jié)構(gòu)體的next指針</p><p> p2=p1; //將指針p1賦給指針p2<
60、;/p><p> n++; //將職工人數(shù)n的值加1</p><p> cout<<"\n 姓名:";</p><p> cin>>ch; //將輸入的姓名存放到字符數(shù)組ch中</p><p><b> }</b></p&g
61、t;<p> p2->next=NULL; //將p2所指結(jié)構(gòu)體的next指針重新賦空值</p><p> return (head);//將輸入的第一組職工信息返回</p><p><b> }</b></p><p> //定義output()函數(shù)將職工的信息從頭指針?biāo)竷?nèi)容開始輸出</p><
62、;p> void Information::output(epployee *head) </p><p><b> {</b></p><p> //system("cls");</p><p> if(head==NULL) cout<<" 這是一個空表,請先輸入職工信息!\n&quo
63、t;;</p><p><b> else{</b></p><p> cout<<"-------------------------------------------------------------------------------\n";</p><p> cout<<"
64、 *職工工資信息表*\n";</p><p> cout<<"-------------------------------------------------------------------------------\n"; </p><p> cout<<"|編 號| |姓 名| |性別| |基本工資
65、| |加班工資| |其他獎金| |總額|\n";</p><p> cout<<"-------------------------------------------------------------------------------\n"; </p><p> p1=head; //將頭指針賦給p </p>
66、<p><b> do</b></p><p><b> {</b></p><p> cout<<setw(6)<<p1->id</p><p> <<setw(14)<<p1->name</p><p> <
67、;<setw(11)<<p1->sex</p><p> <<setw(11)<<p1->paid[0]</p><p> <<setw(15)<<p1->paid[1]</p><p> <<setw(13)<<p1->paid[2]</p
68、><p> <<setw(13)<<p1->total<<endl;</p><p> cout<<"-------------------------------------------------------------------------------\n"; </p><p> p
69、1=p1->next; //將下一組職工信息的next指針賦給p</p><p> }while(p1!=NULL); //若指針p非空則繼續(xù),目的是把所有的職工信息都傳給指針p然后輸出.</p><p><b> }</b></p><p><b> }</b></p>
70、<p> //統(tǒng)計職工人數(shù)的函數(shù)</p><p> int Information::count(struct epployee *head) //定義函數(shù)count()統(tǒng)計職工總數(shù)</p><p><b> {</b></p><p> if(head==NULL)return(0);
71、 //若指針head為空返回值為0</p><p> else return(1+count(head->next)); //函數(shù)的遞歸調(diào)用</p><p><b> }</b></p><p> //添加職工的成績的函數(shù)</p><p> epployee *Infor
72、mation::insert( epployee *head) </p><p> //插入新結(jié)點定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*insert()用來添加職工信息.</p><p><b> {</b></p><p> //system("cls");</p><p&g
73、t; cout<<"\t----------------<<請輸入新增職工成績信息>>----------------\n"<<endl;</p><p> p1=(epployee *)malloc(LEN); //使p1指向插入的新結(jié)點</p><p> cout<<" 編號:&q
74、uot;;</p><p> cin>>p1->id;</p><p> while((p1->id)<0||(p1->id)>100000)</p><p><b> {</b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(
75、>0<100000): ";</p><p> cin>>p1->id; //將輸入的編號存放到p1所指結(jié)構(gòu)體的數(shù)組id中</p><p><b> } </b></p><p> cout<<" 姓名:";</p><p>
76、 cin>>p1->name; //將輸入的姓名存放到結(jié)構(gòu)體名為p1的數(shù)組name中</p><p> cout<<" 性別:";</p><p> cin>>p1->sex; </p><p> cout<<" 基本工資:";</p>&
77、lt;p> cin>>p1->paid[0];</p><p> while((p1->paid[0])<0||(p1->paid[0])>100000)</p><p><b> {</b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(>
78、;0<100000): ";</p><p> cin>>p1->paid[0]; //將輸入的基本工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> }</b></p><p> cout<<" 加班工資:";</p><p&g
79、t; cin>>p1->paid[1];</p><p> while((p1->paid[1])<0||(p1->paid[1])>100000)</p><p><b> {</b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<
80、100000): ";</p><p> cin>>p1->paid[1]; //將輸入的加班工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> }</b></p><p> cout<<" 其他獎金:";</p><p> cin
81、>>p1->paid[2];</p><p> while((p1->paid[2])<0||(p1->paid[2])>100000)</p><p><b> {</b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000)
82、: ";</p><p> cin>>p1->paid[2]; //將輸入的其他獎金存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> } </b></p><p> p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//計算總分
83、 </p><p> p2=head; //將頭指針賦給p2</p><p> if(head==NULL) //若沒調(diào)用次函數(shù)以前的頭指針head為空</p><p><b> {</b></p><p> head=p1;p1->next=NULL;</p><p&
84、gt; } //則將p1賦給頭指針head并將p1所指結(jié)構(gòu)體成員指針next賦空值</p><p><b> else </b></p><p><b> {</b></p><p> while((p1->id>p2->id)&&(p2->next!=NULL
85、))</p><p><b> {</b></p><p> p3=p2; //p3指向原p2指向的結(jié)點</p><p> p2=p2->next;</p><p> } //p2后移一個結(jié)點</p><p> if(p1->id<=p
86、2->id)</p><p><b> {</b></p><p> if(head==p2)</p><p><b> {</b></p><p> p1->next=head;</p><p><b> head=p1;</b>
87、</p><p> } //插入到第一個結(jié)點之前</p><p><b> else </b></p><p><b> {</b></p><p> p3->next=p1;</p><p> p1->next=p2;</p>
88、<p> } //插入到p3所指結(jié)點之后</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> p2->next=p1;</p><p>
89、; p1->next=NULL;</p><p> } //插入到尾結(jié)點之后</p><p><b> }</b></p><p> n++; //將職工人數(shù)加1</p><p> cout<<"\t----------------<<你輸入的職工信息已經(jīng)成功插入&g
90、t;>----------------"<<endl;</p><p> return (head);</p><p><b> }</b></p><p><b> //刪除職工信息</b></p><p> epployee *Information::can
91、cel(epployee *head,long id) //定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*delete()用來刪除考生信息.</p><p><b> { </b></p><p> system("cls");</p><p> if(head==NULL) //若調(diào)用次函
92、數(shù)以前的頭指針head為空</p><p><b> { </b></p><p> return(head);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</
93、b></p><p> p1=head; //否則將頭指針賦給p1</p><p> while(id!=p1->id&&p1->next!=NULL) //尋找要刪除的結(jié)點當(dāng)p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b> {</b><
94、;/p><p><b> p2=p1;</b></p><p> p1=p1->next;</p><p> } //p2指向原p1指向的結(jié)點p1后移一個結(jié)點</p><p> if(id==p1->id) //如果輸入的職工編號是p1所指的職工編號//結(jié)點
95、找到后刪除</p><p><b> {</b></p><p> if(p1==head) head=p1->next; //如果head指針和p1指針相等則將下一個結(jié)點賦給指針head </p><p><b> else </b></p><p> p2->next=p
96、1->next; //否則將p1所指結(jié)點賦給p2所指結(jié)點將要刪除的職工信息跳過去</p><p> cout<<" 刪除編號為"<<id<<"的職工\n";</p><p> n--; //將職工人數(shù)減1 </p><p><b
97、> }</b></p><p> return(head); //將頭指針返回</p><p><b> }</b></p><p><b> }</b></p><p> /**************************修改職工數(shù)據(jù)************
98、**************/</p><p> epployee *Information::modify(epployee *head,long id)</p><p><b> {</b></p><p> //system("cls");</p><p> cout<<&q
99、uot;\t----------------<<請輸入須修改的職工工資信息>>----------------\n"<<endl;</p><p> p1=(epployee *)malloc(LEN); //使p1指向輸入的結(jié)點</p><p> p1=head; //否則將頭指針賦給p1</p&g
100、t;<p> while(id!=p1->id&&p1->next!=NULL)</p><p> //尋找結(jié)點當(dāng)p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b> {</b></p><p> p1=p1->next; //p2指
101、向原p1指向的結(jié)點p1后移一個結(jié)點</p><p> } </p><p> if(id==p1->id) //如果要查找的職工編號是p1所指的職工編號</p><p><b> {</b></p><p> cout<<"你需要修改的職工信息如下:\n&
102、quot;;</p><p> cout<<"------------------------------------------------------------------------------\n";</p><p> cout<<"|編 號| |姓 名| |性別| |基本工資| |加班工資| |其他
103、獎金| |總額|\n";</p><p> cout<<"------------------------------------------------------------------------------\n";</p><p> cout<<setw(6)<<p1->id</p>&
104、lt;p> <<setw(10)<<p1->name</p><p> <<setw(10)<<p1->sex</p><p> <<setw(10)<<p1->paid[0]</p><p> <<setw(15)<<p1->pai
105、d[1]</p><p> <<setw(12)<<p1->paid[2]</p><p> <<setw(12)<<p1->total<<endl;</p><p> cout<<"------------------------------------------
106、------------------------------------\n";</p><p> cout<<" 編號:";</p><p> cin>>p1->id;</p><p> while((p1->id)<0||(p1->id)>100000)</p>
107、<p><b> {</b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p> cin>>p1->id; //將輸入的編號存放到p1所指結(jié)構(gòu)體的數(shù)組id中</p><p><b&g
108、t; } </b></p><p> cout<<" 姓名:";</p><p> cin>>p1->name; //將輸入的姓名存放到結(jié)構(gòu)體名為p1的數(shù)組name中</p><p> cout<<" 性別:";</p><p> c
109、in>>p1->sex; </p><p> cout<<" 基本工資:";</p><p> cin>>p1->paid[0];</p><p> while((p1->paid[0])<0||(p1->paid[0])>100000)</p><
110、p><b> {</b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p> cin>>p1->paid[0]; //將輸入的基本工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b>
111、 }</b></p><p> cout<<" 加班工資:";</p><p> cin>>p1->paid[1];</p><p> while((p1->paid[1])<0||(p1->paid[1])>100000)</p><p><
112、b> {</b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p> cin>>p1->paid[1]; //將輸入的加班工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> }</b
113、></p><p> cout<<" 其他獎金:";</p><p> cin>>p1->paid[2];</p><p> while((p1->paid[2])<0||(p1->paid[2])>100000)</p><p><b> {&
114、lt;/b></p><p> cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p> cin>>p1->paid[2]; //將輸入的其他獎金存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> } </b><
115、/p><p> p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //計算總分 </p><p><b> }</b></p><p><b> else </b></p><p> cout<<" 需要
116、修改的信息中沒有編號為"<<id<<"的職工.\n\n"; //沒有想要修改的結(jié)點信息</p><p> getchar();</p><p> return(head);</p><p><b> }</b></p><p><b> //查找職工
117、信息</b></p><p> epployee *Information::find(epployee *head,long id) </p><p> //定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*find()用來查找職工信息.</p><p><b> {</b></p><p>
118、; //system("cls");</p><p> if(head==NULL) //若調(diào)用次函數(shù)以前的頭指針head為空</p><p><b> {</b></p><p> cout<<" 這是一個空表,請先輸入職工信息!\n";</p><p>
119、; return(head); </p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> p1=head; //否則將頭指針賦給p1</p><p>
120、; while(id!=p1->id&&p1->next!=NULL)</p><p> //尋找結(jié)點當(dāng)p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b> {</b></p><p> p1=p1->next; //p2指向原p1指向的結(jié)點p1后移一個
121、結(jié)點</p><p><b> }</b></p><p> if(id==p1->id) //如果要查找的職工編號是p1所指的職工編號</p><p><b> {</b></p><p> cout<<"---------------------------
122、---------------------------------------------------\n";</p><p> cout<<"|編 號| |姓 名| |性別| |基本工資| |加班工資| |其他獎金| |總額|\n";</p><p> cout<<"------------
123、------------------------------------------------------------------\n";</p><p> cout<<setw(6)<<p1->id</p><p> <<setw(10)<<p1->name</p><p> <&
124、lt;setw(10)<<p1->sex</p><p> <<setw(10)<<p1->paid[0]</p><p> <<setw(14)<<p1->paid[1]</p><p> <<setw(12)<<p1->paid[2]</p&g
125、t;<p> <<setw(12)<<p1->total<<endl;</p><p> cout<<"------------------------------------------------------------------------------\n";</p><p><b&g
126、t; }</b></p><p><b> else </b></p><p> cout<<"信息中沒有編號為"<<id<<"的職工.\n"; //結(jié)點沒找到</p><p> return(head);</p><p>&
127、lt;b> }</b></p><p><b> }</b></p><p> //定義sort()函數(shù)將職工的工資總額從大到小排列并輸出</p><p> void Information::sort(epployee *head) </p><p><b> {</b>
128、;</p><p> //system("cls");</p><p> int i,k,m=0,j;</p><p> epployee *p[N];//定義一個指向struct epployee的結(jié)構(gòu)體指針數(shù)組p </p><p> if(head!=NULL)//如果頭指針是空則繼續(xù)</p>&
129、lt;p> { m=count(head);</p><p> cout<<"------------------------------------------------------------------------------\n";</p><p> cout<<" *職工工資統(tǒng)計表*\n";</p
130、><p> cout<<"------------------------------------------------------------------------------\n";</p><p> cout<<"|編號| |姓名| |性別| |基本工資| |加班工資| |其他獎金| |總額| |名次
131、|\n";</p><p> cout<<"------------------------------------------------------------------------------\n";</p><p><b> p1=head;</b></p><p> for(k=0;k
132、<m;k++)</p><p><b> {</b></p><p><b> p[k]=p1;</b></p><p> p1=p1->next;</p><p><b> }</b></p><p> for(k=0;k<
133、m-1;k++) //選擇排序法</p><p> for(j=k+1;j<m;j++)</p><p> if(p[k]->total<p[j]->total)</p><p><b> {</b></p><p><b> p2=p[k];</b></p&g
134、t;<p> p[k]=p[j];</p><p><b> p[j]=p2;</b></p><p> } //從大到小排列的指針 </p><p> for(i=0;i<m;i++)</p><p><b> {</b></p><p>
135、cout<<setw(6)<<p[i]->id</p><p> <<setw(8)<<p[i]->name</p><p> <<setw(9)<<p[i]->sex</p><p> <<setw(10)<<p[i]->paid[0]&l
136、t;/p><p> <<setw(10)<<p[i]->paid[1]</p><p> <<setw(15)<<p[i]->paid[2]</p><p> <<setw(11)<<p[i]->total</p><p> <<setw
137、(10)<<i+1<<endl;</p><p> cout<<"------------------------------------------------------------------------------\n"; </p><p><b> }</b></p><p>
138、;<b> }</b></p><p><b> }</b></p><p> //求各工資的平均值的函數(shù)</p><p> void Information::average(epployee *head)</p><p><b> {</b></p>
139、<p><b> int k,m;</b></p><p> float arg1=0,arg2=0,arg3=0;</p><p> if(head==NULL)//如果頭指針是空則繼續(xù)</p><p><b> {</b></p><p> cout<<&quo
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計---職工工資管理系統(tǒng)
- c++課程設(shè)計-職工工資管理系統(tǒng)設(shè)計
- 課程設(shè)計c++之職工工資管理系統(tǒng)
- c++課程設(shè)計--高校職工工資管理系統(tǒng)
- c語言職工工資管理系統(tǒng)課程設(shè)計
- c語言課程設(shè)計——職工工資管理
- c語言課程設(shè)計——職工工資管理
- 課程設(shè)計--職工工資管理系統(tǒng)
- 課程設(shè)計---職工工資管理系統(tǒng)
- 課程設(shè)計---職工工資管理系統(tǒng)
- 職工工資管理系統(tǒng)設(shè)計課程設(shè)計
- c語言課程設(shè)計報告---職工工資管理系統(tǒng)
- c語言課程設(shè)計報告--職工工資管理系統(tǒng)
- c語言課程設(shè)計報告---職工工資管理系統(tǒng)
- c語言課程設(shè)計報告職工工資管理系統(tǒng)
- 課程設(shè)計報告--職工工資管理系統(tǒng)設(shè)計
- 職工工資管理系統(tǒng)設(shè)計的課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---職工工資管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--職工工資管理
- c語言 職工工資管理系統(tǒng)設(shè)計報告
評論
0/150
提交評論