版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課 程 設(shè) 計(jì)</b></p><p> 設(shè)計(jì)題目: 職工工資管理系統(tǒng) </p><p> 學(xué)生姓名: 劉漢 </p><p> 學(xué)生學(xué)號(hào): 200940410106 </p><p> 專業(yè)班級(jí): 09計(jì)科(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> ?。ǘ┱n題分析1</b></p><p><b> 三、方案設(shè)定2</b></p><p> 四、程序功能描述與模塊結(jié)構(gòu)2</p><p> ?。ㄒ唬?/p>
4、程序功能描述2</p><p><b> (二)功能模塊2</b></p><p> ?。ㄈ┏绦蛄鞒虉D3</p><p> 四、用戶使用說(shuō)明6</p><p><b> 五、測(cè)試結(jié)果7</b></p><p> 六﹑程序經(jīng)驗(yàn)教訓(xùn)總結(jié)12</p>
5、;<p><b> 七﹑附錄13</b></p><p><b> 一、前言</b></p><p> C++語(yǔ)言是具有面向?qū)ο筇匦缘腃語(yǔ)言的繼承者,即是由C語(yǔ)言演變而來(lái),全面兼容C語(yǔ)言。C語(yǔ)言的優(yōu)點(diǎn),如語(yǔ)言簡(jiǎn)潔靈活,運(yùn)算符和數(shù)據(jù)結(jié)構(gòu)豐富,具有結(jié)構(gòu)化控制語(yǔ)句,程序執(zhí)行效率高,同時(shí)具有高級(jí)語(yǔ)言與匯編語(yǔ)言的優(yōu)點(diǎn),這些在C++語(yǔ)言
6、中同樣能夠體現(xiàn)出來(lái)。但是C++語(yǔ)言最有意義的方面是支持面向?qū)ο蟮某绦蛟O(shè)計(jì),在數(shù)據(jù)類型、算法的控制結(jié)構(gòu)、函數(shù)等方面都有很好的體現(xiàn)。面向?qū)ο缶幊讨?,?duì)象是程序設(shè)計(jì)的基本單位,但對(duì)象的靜態(tài)屬性往往需要用某種類型的數(shù)據(jù)來(lái)表示,對(duì)象的動(dòng)態(tài)屬性要由成員函數(shù)來(lái)實(shí)現(xiàn),面向函數(shù)的實(shí)現(xiàn)歸根到底還是算法的設(shè)計(jì)。</p><p> 二、課題要求、課題分析</p><p><b> ?。ㄒ唬┱n題要求&l
7、t;/b></p><p> 《C++課程設(shè)計(jì)》通過(guò)綜合運(yùn)用在《C++程序設(shè)計(jì)》和《數(shù)據(jù)結(jié)構(gòu)》中所學(xué)的程序結(jié)構(gòu)、流程控制語(yǔ)句、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體、數(shù)據(jù)結(jié)構(gòu)等知識(shí),以簡(jiǎn)易“管理信息系統(tǒng)”程序設(shè)計(jì)為載體,以C++語(yǔ)言為工具,使我們更深地涉足計(jì)算機(jī)專業(yè)設(shè)計(jì)領(lǐng)域,并使所學(xué)知識(shí)和技能得到進(jìn)一步鞏固、深化和擴(kuò)展,以達(dá)到能用C++編寫初等程度軟件的目的,為繼續(xù)學(xué)習(xí)后續(xù)課程及今后走上相關(guān)工作崗位打下良好的基礎(chǔ)。&l
8、t;/p><p> 經(jīng)過(guò)調(diào)查分析,決定設(shè)計(jì)職工工資管理系統(tǒng)。</p><p> 創(chuàng)建存儲(chǔ)職工工資信息的存儲(chǔ)文件。添加某職工的工資信息。刪除某職工的工資信息。修改某職工的部分工資信息(當(dāng)月開(kāi)始增加或減少某些項(xiàng)工資或扣款數(shù)變化)。輸出指定編號(hào)職工的工資信息(查詢用)。輸出全體職工的工資信息(發(fā)工資用)。</p><p><b> ?。ǘ┱n題分析</b&
9、gt;</p><p> 職工工資管理系統(tǒng)可定位于企業(yè)會(huì)計(jì)系統(tǒng)的一個(gè)子系統(tǒng),該系統(tǒng)主要完成的工作為:錄入各職工自身及工資情況、對(duì)已經(jīng)存在的數(shù)據(jù)的修改、刪除、可查詢、統(tǒng)計(jì)系統(tǒng)中的數(shù)據(jù)等。為此因此職工工資管理系統(tǒng)的功能:讀取文件信息、數(shù)據(jù)輸入、顯示、排序、查找、增加、刪除、修改、保存等。</p><p> 三、課程設(shè)計(jì)內(nèi)容及進(jìn)度安排</p><p><b>
10、; (一)課題內(nèi)容:</b></p><p> 該系統(tǒng)在磁盤上存儲(chǔ)了某單位全體職工的工資信息。對(duì)于每位職工存儲(chǔ)以下信息:職工編號(hào)、基本工資、津貼、崗貼、補(bǔ)貼、應(yīng)發(fā)數(shù)、個(gè)人所得稅、應(yīng)扣數(shù)、實(shí)發(fā)數(shù)。個(gè)人所得稅計(jì)算方法設(shè)為:工資少于1100元的部分為0,1100—1600元部分為5%,1600—2600部分為10%,2600—3600部分為15%,5600元以上部分為20%。</p>&l
11、t;p><b> ?。ǘ┱n題要求:</b></p><p> 1.分析問(wèn)題,給出數(shù)學(xué)模型,選擇數(shù)據(jù)結(jié)構(gòu).</p><p> 2.設(shè)計(jì)算法,給出算法描述</p><p><b> 3.給出源程序清單</b></p><p> 4. 編輯、編譯、調(diào)試源程序</p><
12、p> 5. 撰寫課程設(shè)計(jì)報(bào)告</p><p> 四、 程序功能描述與模塊結(jié)構(gòu)</p><p><b> (一)程序功能描述</b></p><p> 通過(guò)主菜單display()函數(shù)將讀取文件信息、輸入、顯示、統(tǒng)計(jì)、增加、刪除、修改、查找、排序等函數(shù)結(jié)合一起,在用戶通過(guò)相關(guān)操作選擇其中一個(gè)功能時(shí),調(diào)用該功能函數(shù),完成數(shù)據(jù)處理。在主
13、函數(shù)中調(diào)用主菜單diplay()函數(shù),完成操作。用一個(gè)中間函數(shù)將主函數(shù)與各功能函數(shù)連接在一起,不僅使程序語(yǔ)言簡(jiǎn)潔、明了、易懂,而且在功能實(shí)現(xiàn)上也更加晚上。</p><p><b> (二)功能模塊</b></p><p> 1.主函數(shù)int main():設(shè)置背景顏色和字體顏色、調(diào)用設(shè)計(jì)者的相關(guān)信息函數(shù)、調(diào)用display函數(shù),實(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ù):從文件中讀取職工工資的信息表并顯示出來(lái);</p><p> 4.數(shù)據(jù)輸入函數(shù)shuru():建立鏈表,完成職工信息錄入;</p&
15、gt;<p> 5.數(shù)據(jù)顯示函數(shù)diaplay():將職工信息數(shù)據(jù)顯示出來(lái);</p><p> 6.數(shù)據(jù)統(tǒng)計(jì)函數(shù)tongji():統(tǒng)計(jì)職工人數(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():對(duì)系統(tǒng)中的數(shù)據(jù)進(jìn)行相關(guān)的操作后將其保存起來(lái);</p><p> 12.作者信息函數(shù)editor():顯示設(shè)計(jì)者的相關(guān)信息;</p><p> 13.登陸
17、函數(shù)Pass():設(shè)定使用權(quán)限。</p><p><b> ?。ㄈ┏绦蛄鞒虉D</b></p><p> 程序流程圖主是對(duì)各功能模塊的具體描述,以一種圖表的方式簡(jiǎn)潔明了的將各模塊的呈現(xiàn)出來(lái),通過(guò)這些流程圖可清楚的看出整個(gè)程序的運(yùn)行過(guò)程,體會(huì)程序的流暢性。</p><p><b> 主函數(shù)流程圖</b></p>
18、;<p> 圖1-1主函數(shù)的流程圖</p><p> 2.各子功能函數(shù)流程圖</p><p> 圖1-2 Menu函數(shù)流程圖</p><p><b> 五、用戶使用說(shuō)明</b></p><p> 這是一個(gè)關(guān)于職工工資管理系統(tǒng),具有輸入、輸出、統(tǒng)計(jì)、刪除、查詢、修改數(shù)據(jù)等功能,建立了一個(gè)含有姓名、性
19、別、編號(hào)、工資、總工資等成員的結(jié)構(gòu)體數(shù)據(jù)類型的變量struct xinxi 。</p><p> 用戶使用時(shí),根據(jù)提示操作,進(jìn)入登陸頁(yè)面。輸入登陸名ltf,登陸密碼ltf,進(jìn)入操作系統(tǒng)。如果登陸信息輸錯(cuò)三次,自動(dòng)退出系統(tǒng)。</p><p> 按顯示的數(shù)字選擇操作,先輸入職工數(shù)據(jù),然后進(jìn)行其他操作。所以輸入“1”,開(kāi)始錄入相關(guān)數(shù)據(jù)。用戶錄入完數(shù)據(jù)后,在姓名處鍵以“0”,結(jié)束操作。<
20、/p><p> 提取文件信息,輸入數(shù)字“9”,回車確定操作,將系統(tǒng)以前操作過(guò)的保存的文件提取出來(lái),并顯示。</p><p> 顯示職工信息,輸入數(shù)字“3”,將需顯示的職工信息的編號(hào)輸入,回車確定操作,系統(tǒng)提取相關(guān)數(shù)據(jù)并顯示。</p><p> 將輸入的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)排序,輸入數(shù)字“7”,回車確定操作,系統(tǒng)顯示工資統(tǒng)計(jì)表、及各項(xiàng)工資的平均值。</p>&
21、lt;p> 查找職工工資,輸入“4”,回車確定操作,系統(tǒng)顯示“請(qǐng)輸入要查找的編號(hào)”,輸入想要查找的職工的編號(hào),系統(tǒng)提取保存的數(shù)據(jù),并顯示出來(lái)。</p><p> 增加職工工資,輸入“6”回車確定操作,系統(tǒng)顯示輸入的頁(yè)面,將需增加的職工信息輸入,輸入完后回車確定,系統(tǒng)顯示成功插入,并顯示職工工資信息表。</p><p> 刪除職工工資,輸入“5”,回車確定操作,系統(tǒng)顯示“請(qǐng)輸入要
22、刪除的編號(hào)”,輸入要?jiǎng)h除的職工編號(hào),系統(tǒng)將保存的數(shù)據(jù)刪除,并顯示剩余的職工工資信息表。</p><p> 修改職工信息,輸入“2”,回車確定操作,輸入要修改的編號(hào),系統(tǒng)顯示該職工的信息,將改后的信息輸入系統(tǒng)。</p><p> 10.將所有操作過(guò)的信息保存,輸入“8”,回車確定操作,系統(tǒng)顯示成功保存信息。</p><p> 11.退出系統(tǒng),輸入“0”,回車確定
23、操作,系統(tǒng)顯示退出的頁(yè)面,輸入任意一個(gè)鍵,退出系統(tǒng)。</p><p> (溫馨提示:因時(shí)間的限制等原因,本程序內(nèi)存設(shè)置還不夠很完善,所以對(duì)于整個(gè)系統(tǒng)的使用應(yīng)按照系統(tǒng)設(shè)置的順序,一項(xiàng)項(xiàng)完成下來(lái),方可不出現(xiàn)漏洞。如果沒(méi)按照順序操作,可能會(huì)在使用的過(guò)程出現(xiàn)一些小差錯(cuò)。)</p><p><b> 六、測(cè)試結(jié)果</b></p><p> 開(kāi)始運(yùn)行
24、程序,進(jìn)入系統(tǒng)頁(yè)面,顯示制作者的信息。</p><p> 圖2-1 顯示制作者信息的頁(yè)面</p><p> 任意鍵繼續(xù)操作,進(jìn)入登陸頁(yè)面。</p><p> 圖2-2 登陸系統(tǒng)的頁(yè)面</p><p> 輸錯(cuò)管理員名字或者密碼進(jìn)入到的頁(yè)面如下</p><p> 圖2-3 登陸系統(tǒng)出錯(cuò)的頁(yè)面</p>
25、<p> 成功進(jìn)入操作系統(tǒng),按照使用說(shuō)明進(jìn)行操作,進(jìn)入的是總系統(tǒng)的提示頁(yè)面。</p><p> 圖2-4 系統(tǒng)操作的頁(yè)面</p><p> 圖2-5 輸入數(shù)據(jù)的頁(yè)面</p><p> 圖2-6 顯示數(shù)據(jù)的頁(yè)面</p><p> 圖2-7 文件提取信息的頁(yè)面</p><p> 圖2-8 排序統(tǒng)計(jì)的
26、頁(yè)面</p><p> 圖2-9 查找職工信息的頁(yè)面</p><p> 圖2-10 查找不到職工信息的頁(yè)面</p><p> 圖2-11 增加職工信息的頁(yè)面</p><p> 圖2-12 增加職工信息后并顯示職工工資信息表的頁(yè)面</p><p> 圖2-13 刪除職工信息并顯示剩余職工信息的頁(yè)面</p&
27、gt;<p> 圖2-14 修改職工信息的頁(yè)面</p><p> 圖2-15 成功修改職工信息的頁(yè)面</p><p> 圖2-16 修改沒(méi)有編號(hào)職工信息的頁(yè)面</p><p> 圖2-17 保存所有數(shù)據(jù)的頁(yè)面</p><p> 圖2-18 退出系統(tǒng)的頁(yè)面</p><p> 七﹑程序經(jīng)驗(yàn)教訓(xùn)總結(jié)
28、</p><p> 通過(guò)這個(gè)程序設(shè)計(jì),我不僅提高了動(dòng)手操作能力,對(duì)C++語(yǔ)言有了更深的認(rèn)識(shí),能夠更好地運(yùn)用C++語(yǔ)言進(jìn)行編程設(shè)計(jì),同時(shí)在思維、看待問(wèn)題的全面性等方面也有了很大的提高。不過(guò)由于時(shí)間、經(jīng)驗(yàn)不夠、對(duì)語(yǔ)言的掌握程度不深等問(wèn)題,在這個(gè)系統(tǒng)設(shè)計(jì)還存在一些問(wèn)題,比如內(nèi)存設(shè)計(jì)還不夠完善,整個(gè)系統(tǒng)的流暢性等,希望可以在今后的設(shè)計(jì)上能夠解決這些問(wèn)題,做的更好。</p><p><b&g
29、t; 九﹑附錄</b></p><p> //職工成績(jī)管理系統(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; //定義一個(gè)全局變量統(tǒng)計(jì)職工人數(shù) </p><p> //定義一個(gè)職工信息的結(jié)構(gòu)體</p><p> struct epployee</p><
32、;p><b> { </b></p><p> char name[N]; //用來(lái)存放姓名</p><p> char sex[N]; //用來(lái)存放性別</p><p> long id; //用來(lái)存放編號(hào)</p><p> float paid[3];
33、 //用來(lái)存放工資</p><p> int total; //用來(lái)存放總工資</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)計(jì)職工總數(shù)</p><p> epployee
36、 *insert(epployee*head); //指針函數(shù)*insert()用來(lái)添加職工信息.</p><p> epployee *cancel(epployee *head,long id); //指針函數(shù)*cancel()用來(lái)刪除職工信息.</p><p> epployee *find(epployee *head,long id); //指針函數(shù)*fi
37、nd()用來(lái)查找職工信息.</p><p> epployee *modify(epployee *head,long id); //指針函數(shù)*modife()用來(lái)修改職工的信息.</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日\(chéng)n\n\t\t\t按<Enter>鍵進(jìn)入登陸界面!!";</p><p> cout<<"\n\n\t\t\t如果需要對(duì)原來(lái)的信息進(jìn)行操作,則先選擇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> {//定義一個(gè)指向struct epployee的結(jié)構(gòu)體指針函數(shù)*creat()用來(lái)錄入職工信息. &
47、lt;/p><p> char ch[N];n=0; //用來(lái)存放職工姓名 </p><p> p1=p2=(epployee *)malloc(LEN);//調(diào)用malloc()函數(shù)用來(lái)開(kāi)辟一個(gè)新的存儲(chǔ)單元 </p><p> cout<<" -------------<<請(qǐng)建立職工信息表,在姓名處鍵以 # 結(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()用來(lái)判斷是否繼續(xù)輸入</p><p><b> { </b></p><p> p1=(epployee *)malloc(LEN); //調(diào)用malloc()函數(shù)用來(lái)開(kāi)辟一個(gè)新的存儲(chǔ)單元</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<<" 編號(hào):&qu
51、ot;;</p><p> cin>>p1->id;</p><p> while((p1->id)<0||(p1->id)>100000) //判斷輸入的編號(hào)是否有效(100000個(gè))</p><p><b> {</b></p><p> cout<&l
52、t;" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>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; 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>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、" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>0<100000): ";</p><p> cin>>p1->paid[1];</p><p><b> } </b></p><p> cout<<" 其他獎(jiǎng)金:";</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、;" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>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]; //計(jì)算總額 </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)容開(kāi)始輸出</p><
62、;p> void Information::output(epployee *head) </p><p><b> {</b></p><p> //system("cls");</p><p> if(head==NULL) cout<<" 這是一個(gè)空表,請(qǐng)先輸入職工信息!\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<<"|編 號(hào)| |姓 名| |性別| |基本工資
65、| |加班工資| |其他獎(jiǎng)金| |總額|\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)計(jì)職工人數(shù)的函數(shù)</p><p> int Information::count(struct epployee *head) //定義函數(shù)count()統(tǒng)計(jì)職工總數(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> //添加職工的成績(jī)的函數(shù)</p><p> epployee *Infor
72、mation::insert( epployee *head) </p><p> //插入新結(jié)點(diǎn)定義一個(gè)指向struct epployee的結(jié)構(gòu)體指針函數(shù)*insert()用來(lái)添加職工信息.</p><p><b> {</b></p><p> //system("cls");</p><p&g
73、t; cout<<"\t----------------<<請(qǐng)輸入新增職工成績(jī)信息>>----------------\n"<<endl;</p><p> p1=(epployee *)malloc(LEN); //使p1指向插入的新結(jié)點(diǎn)</p><p> cout<<" 編號(hào):&q
74、uot;;</p><p> cin>>p1->id;</p><p> while((p1->id)<0||(p1->id)>100000)</p><p><b> {</b></p><p> cout<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(
75、>0<100000): ";</p><p> cin>>p1->id; //將輸入的編號(hào)存放到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<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>
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<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>0<
80、100000): ";</p><p> cin>>p1->paid[1]; //將輸入的加班工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> }</b></p><p> cout<<" 其他獎(jiǎng)金:";</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<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>0<100000)
82、: ";</p><p> cin>>p1->paid[2]; //將輸入的其他獎(jiǎng)金存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> } </b></p><p> p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//計(jì)算總分
83、 </p><p> p2=head; //將頭指針賦給p2</p><p> if(head==NULL) //若沒(méi)調(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é)點(diǎn)</p><p> p2=p2->next;</p><p> } //p2后移一個(gè)結(jié)點(diǎn)</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> } //插入到第一個(gè)結(jié)點(diǎn)之前</p><p><b> else </b></p><p><b> {</b></p><p> p3->next=p1;</p><p> p1->next=p2;</p>
88、<p> } //插入到p3所指結(jié)點(diǎn)之后</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é)點(diǎn)之后</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) //定義一個(gè)指向struct epployee的結(jié)構(gòu)體指針函數(shù)*delete()用來(lái)刪除考生信息.</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ǎng)h除的結(jié)點(diǎn)當(dāng)p1所指的職工編號(hào)不是輸入的職工編號(hào)并且p1所指的next指針不為空</p><p><b> {</b><
94、;/p><p><b> p2=p1;</b></p><p> p1=p1->next;</p><p> } //p2指向原p1指向的結(jié)點(diǎn)p1后移一個(gè)結(jié)點(diǎn)</p><p> if(id==p1->id) //如果輸入的職工編號(hào)是p1所指的職工編號(hào)//結(jié)點(diǎn)
95、找到后刪除</p><p><b> {</b></p><p> if(p1==head) head=p1->next; //如果head指針和p1指針相等則將下一個(gè)結(jié)點(diǎn)賦給指針head </p><p><b> else </b></p><p> p2->next=p
96、1->next; //否則將p1所指結(jié)點(diǎn)賦給p2所指結(jié)點(diǎn)將要?jiǎng)h除的職工信息跳過(guò)去</p><p> cout<<" 刪除編號(hào)為"<<id<<"的職工\n";</p><p> n--; //將職工人數(shù)減1 </p><p><b
97、> }</b></p><p> return(head); //將頭指針?lè)祷?lt;/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----------------<<請(qǐng)輸入須修改的職工工資信息>>----------------\n"<<endl;</p><p> p1=(epployee *)malloc(LEN); //使p1指向輸入的結(jié)點(diǎn)</p><p> p1=head; //否則將頭指針賦給p1</p&g
100、t;<p> while(id!=p1->id&&p1->next!=NULL)</p><p> //尋找結(jié)點(diǎn)當(dāng)p1所指的職工編號(hào)不是輸入的職工編號(hào)并且p1所指的next指針不為空</p><p><b> {</b></p><p> p1=p1->next; //p2指
101、向原p1指向的結(jié)點(diǎn)p1后移一個(gè)結(jié)點(diǎn)</p><p> } </p><p> if(id==p1->id) //如果要查找的職工編號(hào)是p1所指的職工編號(hào)</p><p><b> {</b></p><p> cout<<"你需要修改的職工信息如下:\n&
102、quot;;</p><p> cout<<"------------------------------------------------------------------------------\n";</p><p> cout<<"|編 號(hào)| |姓 名| |性別| |基本工資| |加班工資| |其他
103、獎(jiǎng)金| |總額|\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<<" 編號(hào):";</p><p> cin>>p1->id;</p><p> while((p1->id)<0||(p1->id)>100000)</p>
107、<p><b> {</b></p><p> cout<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>0<100000): ";</p><p> cin>>p1->id; //將輸入的編號(hào)存放到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<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>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<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>0<100000): ";</p><p> cin>>p1->paid[1]; //將輸入的加班工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> }</b
113、></p><p> cout<<" 其他獎(jiǎng)金:";</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<<" 對(duì)不起,您的輸入錯(cuò)誤!請(qǐng)重新輸入(>0<100000): ";</p><p> cin>>p1->paid[2]; //將輸入的其他獎(jiǎng)金存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b> } </b><
115、/p><p> p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //計(jì)算總分 </p><p><b> }</b></p><p><b> else </b></p><p> cout<<" 需要
116、修改的信息中沒(méi)有編號(hào)為"<<id<<"的職工.\n\n"; //沒(méi)有想要修改的結(jié)點(diǎn)信息</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> //定義一個(gè)指向struct epployee的結(jié)構(gòu)體指針函數(shù)*find()用來(lái)查找職工信息.</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<<" 這是一個(gè)空表,請(qǐng)先輸入職工信息!\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é)點(diǎn)當(dāng)p1所指的職工編號(hào)不是輸入的職工編號(hào)并且p1所指的next指針不為空</p><p><b> {</b></p><p> p1=p1->next; //p2指向原p1指向的結(jié)點(diǎn)p1后移一個(gè)
121、結(jié)點(diǎn)</p><p><b> }</b></p><p> if(id==p1->id) //如果要查找的職工編號(hào)是p1所指的職工編號(hào)</p><p><b> {</b></p><p> cout<<"---------------------------
122、---------------------------------------------------\n";</p><p> cout<<"|編 號(hào)| |姓 名| |性別| |基本工資| |加班工資| |其他獎(jiǎng)金| |總額|\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<<"信息中沒(méi)有編號(hào)為"<<id<<"的職工.\n"; //結(jié)點(diǎn)沒(méi)找到</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];//定義一個(gè)指向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)計(jì)表*\n";</p
130、><p> cout<<"------------------------------------------------------------------------------\n";</p><p> cout<<"|編號(hào)| |姓名| |性別| |基本工資| |加班工資| |其他獎(jiǎng)金| |總額| |名次
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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)---職工工資管理系統(tǒng)
- c++課程設(shè)計(jì)-職工工資管理系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)c++之職工工資管理系統(tǒng)
- c++課程設(shè)計(jì)--高校職工工資管理系統(tǒng)
- c語(yǔ)言職工工資管理系統(tǒng)課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)——職工工資管理
- c語(yǔ)言課程設(shè)計(jì)——職工工資管理
- 課程設(shè)計(jì)--職工工資管理系統(tǒng)
- 課程設(shè)計(jì)---職工工資管理系統(tǒng)
- 課程設(shè)計(jì)---職工工資管理系統(tǒng)
- 職工工資管理系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---職工工資管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--職工工資管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---職工工資管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告職工工資管理系統(tǒng)
- 課程設(shè)計(jì)報(bào)告--職工工資管理系統(tǒng)設(shè)計(jì)
- 職工工資管理系統(tǒng)設(shè)計(jì)的課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---職工工資管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--職工工資管理
- c語(yǔ)言 職工工資管理系統(tǒng)設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論