版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p> 《C高級(jí)語(yǔ)言程序設(shè)計(jì)》</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> ?。?012/2013學(xué)年 第一學(xué)期)</p><p> 學(xué)生姓名: </p><p> 專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)11
2、2002班</p><p><b> 學(xué)生學(xué)號(hào): </b></p><p> 指導(dǎo)教師: </p><p> 2012年 12 月 29日</p><p><b> 目 錄</b></p><p><b> 一、目的和要求
3、4</b></p><p> (一)課題的來(lái)源和研究意義4</p><p> ?。ǘ┱n題的開(kāi)發(fā)環(huán)境4</p><p> (三)本課題要達(dá)到的設(shè)計(jì)目標(biāo)5</p><p> 二、課程設(shè)計(jì)任務(wù)內(nèi)容5</p><p> (一)系統(tǒng)功能分析5</p><p> ?。ǘ?shù)
4、據(jù)流程圖5</p><p> 三、詳細(xì)設(shè)計(jì)內(nèi)容6</p><p> ?。ㄒ唬┫到y(tǒng)功能和流程6</p><p> ?。ǘ┏绦蛄鞒虉D6</p><p> (三)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)及函數(shù)功能表8</p><p> 四、系統(tǒng)具體實(shí)現(xiàn)使用說(shuō)明9</p><p> (一)系統(tǒng)的主界面
5、9</p><p> (二)員工信息管理模塊10</p><p> ?。ㄈ﹩T工工資管理模塊11</p><p> (四)保存退出和軟件測(cè)試13</p><p> 五、心得與體會(huì)14</p><p> 附錄1參考文獻(xiàn)15</p><p> 附錄2程序清單-----------
6、---------------------------------------</p><p><b> 一 目的和要求</b></p><p> ?。ㄒ唬┱n題的來(lái)源和研究意義</p><p> 隨著計(jì)算機(jī)的日益普及和網(wǎng)絡(luò)的發(fā)展,數(shù)據(jù)庫(kù)的應(yīng)用范圍越來(lái)越廣,數(shù)據(jù)庫(kù)應(yīng)用的功能也越來(lái)越強(qiáng),因此編寫(xiě)管理信息系統(tǒng)應(yīng)用程序也顯得尤為重要,在強(qiáng)調(diào)管理,強(qiáng)
7、調(diào)信息的現(xiàn)代社會(huì)中它變得越來(lái)越普及。</p><p> 工資管理是任何企事業(yè)單位都需要進(jìn)行的一項(xiàng)工作,因此,開(kāi)發(fā)制作工資管理系統(tǒng)具有較大的社會(huì)現(xiàn)實(shí)意義,同時(shí)工資管理系統(tǒng)是一切應(yīng)用系統(tǒng)的典范,它具有一切應(yīng)用系統(tǒng)的特征,系統(tǒng)結(jié)構(gòu)與現(xiàn)實(shí)生活緊密結(jié)合,具體直觀,具有典范的數(shù)據(jù)庫(kù)系統(tǒng)的特性。工資管理系統(tǒng)主要用于企業(yè)內(nèi)部員工的檔案、工資、考勤、評(píng)價(jià)的管理,便于公司領(lǐng)導(dǎo)掌握人員的動(dòng)向,及時(shí)調(diào)整人才的分配,同時(shí)也減少了手工操作
8、帶來(lái)的一些繁瑣與不便,使員工情況的記錄和統(tǒng)計(jì)變得十分簡(jiǎn)單。這些優(yōu)點(diǎn)可以極大的提高企業(yè)對(duì)人事管理的效率.因此,工資管理系統(tǒng)是企事業(yè)信息化、智能化、科學(xué)化和正規(guī)化不可缺少的管理軟件。</p><p> ?。ǘ┱n題的開(kāi)發(fā)環(huán)境</p><p> 本系統(tǒng)的設(shè)計(jì)是在Windows xp中文版操作系統(tǒng)環(huán)境下,使用Visual C++ 6.0中文版開(kāi)發(fā)成功的。數(shù)據(jù)庫(kù)SQL是其中的重要支持技術(shù),在數(shù)據(jù)庫(kù)
9、開(kāi)發(fā)過(guò)程中,如何選擇數(shù)據(jù)庫(kù)管理是一個(gè)重要的問(wèn)題,目前,數(shù)據(jù)庫(kù)產(chǎn)品較多,每種產(chǎn)品都具有各自的特點(diǎn)和適用范圍,因此,在選擇數(shù)據(jù)庫(kù)時(shí),應(yīng)考慮數(shù)據(jù)庫(kù)應(yīng)用的特點(diǎn)及適用范圍,本系統(tǒng)選用的數(shù)據(jù)庫(kù)語(yǔ)言介紹如下:C++語(yǔ)言。</p><p> C++是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。C++是一種靜態(tài)數(shù)據(jù)類(lèi)型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。它支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、制作圖標(biāo)等等泛型程序設(shè)計(jì)等多
10、種程序設(shè)計(jì)風(fēng)格。C++引入了面向?qū)ο蟮母拍?,使得開(kāi)發(fā)人機(jī)交互類(lèi)型的應(yīng)用程序更為簡(jiǎn)單、快捷。很多優(yōu)秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。</p><p> ?。ㄈ┍菊n題要達(dá)到的設(shè)計(jì)目標(biāo)</p><p> 工資管理信息系統(tǒng)的開(kāi)發(fā)目標(biāo)是:克服現(xiàn)在工資管理中存在的人工管理,統(tǒng)計(jì)與查詢(xún)單一、管理效率低下等問(wèn)題;能科學(xué)有效的管理工資,方便地查詢(xún)和統(tǒng)計(jì)人員、工資等情況,對(duì)
11、所需要的數(shù)據(jù)以表格形式顯示,以報(bào)表形式打印,并為將來(lái)進(jìn)一步擴(kuò)充和發(fā)展工資管理系統(tǒng)奠定基礎(chǔ)。</p><p> 二 課程設(shè)計(jì)任務(wù)內(nèi)容</p><p><b> ?。ㄒ唬┫到y(tǒng)功能分析</b></p><p> 系統(tǒng)開(kāi)發(fā)的總體任務(wù)是要實(shí)現(xiàn)企業(yè)人事信息關(guān)系的系統(tǒng)化,規(guī)范化和自動(dòng)化。</p><p> 系統(tǒng)功能分析是在系統(tǒng)開(kāi)
12、發(fā)的總體任務(wù)的基礎(chǔ)之上完成的。工資管理系統(tǒng)主要有以下幾項(xiàng)功能:</p><p> 1.員工檔案的管理:包括員工基本信息,姓名和工號(hào)。</p><p> 2.員工工資的管理:包括工資的添加,工資報(bào)表的查詢(xún),修改和刪除。</p><p> 3.月份工資的管理:包括添加某月某員工的工資和查詢(xún)某月所有員工的工資信息。</p><p> 4.員
13、工補(bǔ)貼的管理:包括津貼,房貼和交通費(fèi)的輸入,計(jì)算和修改。</p><p> 5.員工扣除的管理:包括房租,會(huì)費(fèi)和稅務(wù)的輸入,修改和計(jì)算。</p><p> 6.計(jì)算:對(duì)工資各項(xiàng)數(shù)據(jù)進(jìn)行匯總計(jì)算。</p><p> 7.保存信息和退出系統(tǒng)。</p><p> 8.管理員以及其它功能模塊。</p><p><
14、b> ?。ǘ┕δ苣K圖</b></p><p> 根據(jù)系統(tǒng)功能的要求,可以將系統(tǒng)分解成幾個(gè)功能模塊來(lái)分別設(shè)計(jì),功能模塊如圖2-1所示</p><p> 圖2-1 功能模塊圖</p><p> 三、詳細(xì)設(shè)計(jì)任務(wù)內(nèi)容</p><p> ?。ㄒ唬┫到y(tǒng)功能和流程</p><p> 數(shù)據(jù)庫(kù)的設(shè)計(jì)
15、是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最有效的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)及應(yīng)用系統(tǒng),實(shí)質(zhì)能夠有效地存儲(chǔ)數(shù)據(jù),滿(mǎn)足用戶(hù)的需求,數(shù)據(jù)庫(kù)設(shè)計(jì)是在數(shù)據(jù)庫(kù)管理系統(tǒng)支持下進(jìn)行的。</p><p> 根據(jù)功能模塊圖,可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):</p><p> 員工信息:工號(hào),姓名。</p><p> 工資管理:工號(hào),月份,姓名,底薪,津貼,房貼,交通費(fèi),應(yīng)發(fā)工資,實(shí)發(fā)工資。<
16、;/p><p> 員工扣除管理:工號(hào),月份,姓名,房租,會(huì)費(fèi),稅務(wù),應(yīng)扣數(shù)。</p><p> 管理員:編號(hào),用戶(hù)名,密碼。</p><p><b> (二)程序流程圖</b></p><p> 得到上面的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計(jì)出能夠滿(mǎn)足用戶(hù)需求的各種實(shí)體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。
17、這些實(shí)體包含各種具體信息,通過(guò)相互之間的作用形成數(shù)據(jù)的流動(dòng)。</p><p> 根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有:員工基本信息實(shí)體,員工考勤信息實(shí)體,員工工作評(píng)價(jià)信息實(shí)體,員工工資信息實(shí)體,人事變動(dòng)實(shí)體,部門(mén)管理實(shí)體。</p><p> 根據(jù)實(shí)體之間的聯(lián)系得出程序流程圖如圖3-1所示。 </p><p><b> 否</b></p>
18、;<p><b> 是 </b></p><p><b> 是</b></p><p><b> 否</b></p><p> 否 </p><p> 是
19、 </p><p> 圖3-1 程序流程圖</p><p> ?。ㄈ?shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)及函數(shù)功能表</p><p> 根據(jù)實(shí)體間聯(lián)系模型的需求分析,本系統(tǒng)需要設(shè)計(jì)工資管理,考勤管理,員工信息3個(gè)表來(lái)管理員工數(shù)據(jù)。具體數(shù)據(jù)表的設(shè)計(jì)如下面的表格所示。</p><p> 表3?1 工資管理表</p>
20、<p> 表3?2 員工檔案信息表</p><p> 表3?3 函數(shù)功能表</p><p> 四、系統(tǒng)詳細(xì)設(shè)計(jì)與模塊的具體實(shí)現(xiàn)</p><p><b> (一)系統(tǒng)的主界面</b></p><p> 在登陸主界面之前,首先登記用戶(hù)管理窗體:</p><p><b
21、> 否</b></p><p> 是 是 </p><p><b> 否</b></p><p> 圖4-1 登陸流程圖</p><p> 圖4-2 管理員登陸界面</p><p> ?。ǘ﹩T工信
22、息管理模塊</p><p> 登入后界面如圖: </p><p> 圖4-3 主菜單圖</p><p> 可以選擇0--9并Enter來(lái)進(jìn)行操作;選擇1可以進(jìn)行添加職工信息,輸入職工編號(hào)和姓名來(lái)編入職工。如果輸入的職工編號(hào)重復(fù),則不能輸入該信息,如圖:</p><p> 圖4-4 員工重復(fù)效果圖</p>
23、<p> 選擇2可以查看所有職工的信息和編號(hào)。</p><p> 選擇3可以刪除職工信息。</p><p> ?。ㄈ﹩T工工資管理模塊</p><p> 選擇4可以添加工資信息。如圖:</p><p> 圖4-5 工資信息輸入圖</p><p> 依次輸入編號(hào),月份,基本工資,津貼,房貼,交通費(fèi),房
24、租和會(huì)費(fèi),Enter后可以添加信息了。選擇7就可以查看剛剛輸入的工資信息了,如圖;實(shí)際發(fā)放工資也計(jì)算顯示了: </p><p> 圖4-6 職工工資圖</p><p> 選擇5可以修改信息,比如基礎(chǔ)工資,津貼,房貼等數(shù)據(jù)的改動(dòng)都可以修改。</p><p> 選擇6則可以刪除工資信息,可以選擇某個(gè)月份,刪除該月的工資信息。</p
25、><p> 選擇8則是輸出顯示某個(gè)月的全部職工工資信息,如圖:</p><p> 圖4-7工資信息輸出圖</p><p> ?。ㄋ模┍4嫱顺龊蛙浖y(cè)試</p><p> 選擇9可以保存信息,剛添加的信息需要保存,如果不保存,則退出系統(tǒng)后該信息就會(huì)消失。</p><p> 選擇0則是退出系統(tǒng)。</p>
26、<p> 圖4-8 退出系統(tǒng)圖</p><p> 4.4.1 確認(rèn)測(cè)試</p><p> 確認(rèn)測(cè)試是根據(jù)軟件需求說(shuō)明書(shū)中定義的全部功能、性能要求以及確認(rèn)測(cè)試計(jì)劃來(lái)測(cè)試整個(gè)軟件系統(tǒng)是否達(dá)到了要求,確認(rèn)測(cè)試是軟件產(chǎn)品實(shí)際應(yīng)用之前一道完整又系統(tǒng)的檢驗(yàn),是軟件質(zhì)量保證的最后一個(gè)環(huán)節(jié)。</p><p> 4.4.2測(cè)試結(jié)果分析</p>&l
27、t;p> 測(cè)試結(jié)果表明,由測(cè)試用例基本上能產(chǎn)生預(yù)期的結(jié)果,本系統(tǒng)具有很好的抗錯(cuò)能力。由于在設(shè)計(jì)過(guò)程中對(duì)數(shù)據(jù)的輸入都進(jìn)行了合法性檢查,從而保證的數(shù)據(jù)的正確性。對(duì)于在測(cè)試過(guò)程中發(fā)現(xiàn)的錯(cuò)誤,通過(guò)利用歸納、演繹和回朔等技術(shù)有效地排除了錯(cuò)誤,從根本上保證了系統(tǒng)的質(zhì)量。</p><p><b> 五、心得與體會(huì)</b></p><p> 經(jīng)過(guò)四周的C++課程實(shí)踐,我對(duì)
28、C++語(yǔ)言設(shè)計(jì)有了一個(gè)更深,更全面的了解,尤其體會(huì)到了C++面向?qū)ο蟛僮鲗?duì)簡(jiǎn)化程序的重要作用。下面是我的幾點(diǎn)體會(huì):</p><p> ?、賱偰玫秸n題時(shí),我一臉的茫然,看到如此龐大的工程,不知如何下手。這個(gè)工資管理系統(tǒng)中職工子信息竟然包含15條,以前從來(lái)沒(méi)有遇到過(guò)如此多的變量。和同學(xué)討論很久好,我發(fā)現(xiàn)其實(shí)可以化繁為簡(jiǎn)的,信息中15條不一定全都要,因?yàn)槠渲斜旧砭陀兄貜?fù)的,例如津貼和補(bǔ)貼。并且可以有一個(gè)pay的數(shù)組來(lái)處
29、理數(shù)據(jù)。所以做任何事情都必須要開(kāi)動(dòng)腦筋,積極思考,有時(shí)還要學(xué)會(huì)化繁為簡(jiǎn)。</p><p> ②在編程時(shí)條理清晰是至關(guān)重要的。主函數(shù),函數(shù),成員函數(shù)之間的層次關(guān)系,調(diào)用關(guān)系一定要有一個(gè)全面的把握,尤其要體會(huì)類(lèi)的封裝性。另外很重要的一點(diǎn)就是一定要對(duì)鏈表的五種操作熟練的掌握。</p><p> ③在編譯,鏈接,調(diào)試的過(guò)程中一定要有耐心。因?yàn)橐粋€(gè)程序中會(huì)有很多小的錯(cuò)誤,甚至有的問(wèn)題要幾個(gè)小時(shí)才
30、能解決。遇到問(wèn)題,一定要全面分析,有時(shí)候還要向同學(xué)請(qǐng)教??偟脕?lái)說(shuō),編程時(shí)極需要耐心的。</p><p> 還有程序里雖然可以運(yùn)行了,但是應(yīng)該有的功能也沒(méi)有,比如說(shuō)輸入職工信息時(shí),輸入的職工工號(hào)和原來(lái)儲(chǔ)存的信息里有的工號(hào)不能重復(fù),避免輸入錯(cuò)誤,照成不必要的損失。</p><p> 總之,C++課程設(shè)計(jì)實(shí)踐為我們提供了一個(gè)綜合運(yùn)用所學(xué)知識(shí),解決實(shí)際問(wèn)題的平臺(tái),增強(qiáng)了我們實(shí)踐動(dòng)手的能力和工程
31、實(shí)踐能力,并且鍛煉和培養(yǎng)了我們的自學(xué)能力,讓我們對(duì)C++有了一個(gè)更全面的了解。</p><p><b> 附錄1 參考文獻(xiàn)</b></p><p> 譚浩強(qiáng)編著,C++程序設(shè)計(jì),清華大學(xué)出版社,2004</p><p> 陳文宇,張松梅編著,C++語(yǔ)言教程,電子科技大學(xué)出版社,2004</p><p><b&
32、gt; 附錄2 程序清單</b></p><p><b> 源代碼如下:</b></p><p> #include<iostream></p><p> #include <stdlib.h> </p><p> #include <conio.h></p
33、><p> #include<fstream></p><p> #include<string></p><p><b> int j;</b></p><p> #include<iomanip></p><p> using namespace st
34、d;</p><p><b> class GZ;</b></p><p> struct zhigong</p><p> {char number[10];</p><p> char name[15];</p><p><b> };</b></p>
35、;<p> struct Zhigong</p><p> {zhigong zg;</p><p> Zhigong *next;</p><p><b> };</b></p><p> class ZG//定義一個(gè)職工類(lèi)</p><p><b> {<
36、;/b></p><p> Zhigong *head; //頭指針</p><p> Zhigong *p; //當(dāng)前指針</p><p><b> public:</b></p><p> ZG(){head=p=NULL;} ; </p><p> void
37、 Add();</p><p> void Delete(); //刪除職工</p><p> int Search(char nu[]); //根據(jù)職工號(hào)查找</p><p> void ReadFile(); //從文件中讀取職工信息 </p&g
38、t;<p> void WriteFile(); //向文件寫(xiě)入職工信息</p><p> void Display(); //在屏幕中輸出全部職工信息 </p><p> void Print(char nu[]);</p><p> void Print();</p&
39、gt;<p> friend class GZ;</p><p><b> };</b></p><p> void ZG::Add()</p><p><b> {</b></p><p> p=new Zhigong;</p><p> cout
40、<<" \t 請(qǐng)輸入職工編號(hào):";cin>>p->zg.number;</p><p> if(Search(p->zg.number)==0)</p><p> {cout<<" \t 請(qǐng)輸入職工姓名:";cin>>p->zg.name; </p>
41、<p> p->next=head; //頭插入建鏈表</p><p><b> head=p;</b></p><p> cout<<endl;</p><p><b> }</b></p&g
42、t;<p><b> else</b></p><p> cout<<"\n\t已經(jīng)存在該職工,不能重復(fù)添加!"<<endl;</p><p><b> }</b></p><p> ////////////////////////</p>&
43、lt;p> void ZG::Delete()</p><p><b> {</b></p><p> if(head!=NULL)</p><p><b> {int n=0;</b></p><p> Zhigong *q=head;</p><p>
44、Zhigong *q1=head,*q2=head->next ;</p><p> char gh[10];</p><p> cout<<" \t 請(qǐng)輸入您要?jiǎng)h除的職工編號(hào):";</p><p><b> cin>>gh;</b></p><p> while
45、(q!=NULL)</p><p><b> {n++;</b></p><p> if(strcmp(q->zg.number ,gh)==0) break;</p><p> q=q->next;</p><p><b> }</b></p><p&g
46、t; if(q==NULL)cout<<"不存在該職工!"<<endl;</p><p><b> else</b></p><p> {if(n==1)head=head->next;</p><p><b> else</b></p><p&
47、gt; {for(int i=1;i<n-1;i++)</p><p><b> {q1=q2;</b></p><p> q2=q2->next;</p><p><b> }</b></p><p> if(q2==NULL)</p><p><
48、;b> q1=NULL;</b></p><p><b> else</b></p><p> q1->next=q2->next;</p><p><b> }</b></p><p> cout<<"刪除成功!"<&l
49、t;endl;</p><p><b> }}</b></p><p><b> }</b></p><p> ///////////////</p><p> int ZG::Search(char nu[])</p><p> {Zhigong *q=head
50、;</p><p> while(q!=NULL)</p><p> {if(strcmp(q->zg.number,nu)==0) break;</p><p> q=q->next;</p><p><b> }</b></p><p> if(q==NULL)ret
51、urn 0;</p><p> else return 1;</p><p><b> }</b></p><p> ///////////////////</p><p> void ZG::ReadFile()</p><p> {p=new Zhigong;</p>
52、<p> ifstream fip("職工信息.dat",ios::in|ios::binary); </p><p> if(!fip)cout<<"未創(chuàng)建該文件!"<<endl;</p><p><b> else</b></p><p> w
53、hile(fip.read((char *)&p->zg ,sizeof(p->zg)))</p><p> { p->next=head;</p><p><b> head=p;</b></p><p> p=new Zhigong;</p><p><b> }<
54、/b></p><p> fip.close();</p><p><b> delete p;</b></p><p><b> }</b></p><p> ////////////////////</p><p> void ZG::WriteFile(
55、) </p><p> {Zhigong *s=head;</p><p> ofstream fop;</p><p> fop.open("職工信息.dat",ios::binary|ios::trunc); </p><p><b> if(!fop)</b>
56、;</p><p> { cout<<"職工信息.dat 無(wú)法打開(kāi)!"<<endl;</p><p><b> abort();</b></p><p><b> } </b></p><p><b> while(s)</b&
57、gt;</p><p> {while(fop.write((char *)&s->zg ,sizeof(s->zg)))</p><p> { s=s->next;</p><p><b> } </b></p><p><b> }</b></p>
58、<p> fop.close();</p><p><b> } </b></p><p> ///////////////////</p><p> void ZG::Print()</p><p> {cout<<"\t\t"<<setiosflags
59、(ios::left)<<setw(10)<<"職工編號(hào)"<<setiosflags(ios::left)<<setw(15)<<"職工姓名"<<endl;</p><p><b> }</b></p><p> void ZG::Print(char
60、nu[])</p><p> {Zhigong *q=head;</p><p> while(q!=NULL)</p><p> {if(strcmp(q->zg.number,nu)==0) break;</p><p> q=q->next;</p><p><b> }&l
61、t;/b></p><p> if(q!=NULL)</p><p> { Print();</p><p> cout<<"\t\t"<<setiosflags(ios::left)<<setw(10)<<q->zg.number <<setiosflags(ios
62、::left)<<setw(15)<<q->zg.name<<endl;</p><p><b> }</b></p><p><b> else</b></p><p> cout<<"職工不存在"<<endl;</p>
63、;<p><b> }</b></p><p> /////////////////////////////</p><p> void ZG::Display() </p><p> { if(head==NULL)</p><p> cout<<"沒(méi)有職工信息
64、!\n\n";</p><p><b> else</b></p><p> {Zhigong *k=head;</p><p><b> Print();</b></p><p><b> while(k)</b></p><p>
65、 { cout<<"\t\t"<<setiosflags(ios::left)<<setw(10)<<k->zg.number <<setiosflags(ios::left)<<setw(15)<<k->zg.name<<endl;</p><p> k=k->next;<
66、;/p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p> /////////////////////////////////////////////////////////</p>&
67、lt;p> struct gongzi</p><p> {char month[7];</p><p> char num[10];</p><p> float dixin;</p><p> float jintie;</p><p> float fangtie;</p>&l
68、t;p> float jiaotongfei;</p><p> float fangzhu;</p><p> float huifei;</p><p> float yingfa;</p><p> float suodesui;</p><p> float yingkou;</p>
69、;<p> float shifa;</p><p><b> };</b></p><p> struct Gongzi</p><p> {gongzi gz;</p><p> Gongzi *next;</p><p><b> };</b>
70、</p><p> class GZ//定義一個(gè)職工類(lèi)</p><p><b> {</b></p><p> Gongzi *head; //頭指針</p><p> Gongzi *p; //當(dāng)前指針</p><p><b> public:</b&
71、gt;</p><p> GZ(){head=p=NULL;} ; </p><p> void Add();</p><p> void Delete(); //刪除</p><p> void Change();</p><p> void ReadFile();
72、 //從文件中讀取職工信息 </p><p> void WriteFile(); //向文件寫(xiě)入職工信息 </p><p> void Print1(); //按職工編號(hào)輸出所有職工的工資信息</p><p> int Print1(char nu[]);//按職工編號(hào)輸
73、出所有職工的工資信息,帶有返回值</p><p> void Print2(); //按月份輸出所有職工的工資信息</p><p> void Print(); //輸出表頭</p><p><b> };</b></p><p> v
74、oid GZ::Add()</p><p><b> {ZG A;</b></p><p> A.ReadFile();</p><p> p=new Gongzi;</p><p> cout<<"職工編號(hào):";cin>>p->gz.num;</p>
75、<p> if(A.Search(p->gz.num)==1)</p><p> {cout<<"月份:";cin>>p->gz.month; </p><p> cout<<"基本工資:";cin>>p->gz.dixin;</p><p>
76、; cout<<"津貼:";cin>>p->gz.jintie;</p><p> cout<<"房貼:";cin>>p->gz.fangtie ;</p><p> cout<<"交通費(fèi):";cin>>p->gz.jiaotongfe
77、i ;</p><p> cout<<"房租:";cin>>p->gz.fangzhu;</p><p> cout<<"會(huì)費(fèi):";cin>>p->gz.huifei ;</p><p> p->gz.yingfa=p->gz.dixin+p->
78、;gz.jintie+p->gz.fangtie+p->gz.jiaotongfei;</p><p> if(p->gz.yingfa<=2000)p->gz.suodesui=0;</p><p><b> else </b></p><p> p->gz.suodesui=(p->gz.yi
79、ngfa-2000)*0.2;</p><p> p->gz.yingkou=p->gz.fangzhu+p->gz.huifei+p->gz.suodesui;</p><p> p->gz.shifa=p->gz.yingfa-p->gz.yingkou;</p><p> p->next=head;
80、 //頭插入建鏈表</p><p><b> head=p;</b></p><p><b> }</b></p><p> else cout<<"沒(méi)有該職工,不能添加工資信息!"<<endl
81、;</p><p><b> }</b></p><p> void GZ::Print()</p><p> {cout<<setiosflags(ios::left)<<setw(7)<<"月份"<<setiosflags(ios::left)<<setw
82、(9)<<"職工編號(hào)"</p><p> <<setiosflags(ios::left)<<setw(7)<<"底薪"<<setiosflags(ios::left)<<setw(5)<<"津貼"<<setiosflags(ios::left)<&l
83、t;setw(5)<<"房貼"</p><p> <<setiosflags(ios::left)<<setw(7)<<"交通費(fèi)"<<setiosflags(ios::left)<<setw(7)<<"應(yīng)發(fā)數(shù)"<<setiosflags(ios::left)
84、<<setw(5)</p><p> <<"房租"<<setiosflags(ios::left)<<setw(5)<<"會(huì)費(fèi)"<<setiosflags(ios::left)<<setw(7)<<"所得稅"<<setiosflags(ios::
85、left)<<setw(7)</p><p> <<"應(yīng)扣數(shù)"<<setiosflags(ios::left)<<setw(7)<<"實(shí)發(fā)數(shù)"<<endl;</p><p><b> }</b></p><p> ///////
86、/////////////////////////////////////////////</p><p> void GZ::Print1()</p><p><b> {int n=0;</b></p><p> char nu[10];</p><p> cout<<"\n\n\t\t
87、請(qǐng)輸入職工編號(hào):";</p><p><b> cin>>nu;</b></p><p> if(head==NULL)</p><p> cout<<"\n\n\t\t沒(méi)有工資信息!\n\n";</p><p> else{p=head;</p>
88、<p><b> while(p)</b></p><p> {if(strcmp(p->gz.num,nu)==0)n++;</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b>
89、;</p><p><b> if(n!=0)</b></p><p><b> {p=head;</b></p><p><b> Print();</b></p><p><b> while(p)</b></p><p&g
90、t; {if(strcmp(p->gz.num,nu)==0)</p><p> cout<<setiosflags(ios::left)<<setw(7)<<p->gz.month <<setiosflags(ios::left)<<setw(9)<<p->gz.num<<setiosflags(ios:
91、:left)<<setw(7)<<p->gz.dixin </p><p> <<setiosflags(ios::left)<<setw(5)<<p->gz.jintie <<setiosflags(ios::left)<<setw(5)<<p->gz.fangtie </p>&l
92、t;p> <<setiosflags(ios::left)<<setw(7)<<p->gz.jiaotongfei <<setiosflags(ios::left)<<setw(7)<<p->gz.yingfa<<setiosflags(ios::left)<<setw(5)</p><p> &
93、lt;<p->gz.fangzhu <<setiosflags(ios::left)<<setw(5)<<p->gz.huifei <<setiosflags(ios::left)<<setw(7)<<p->gz.suodesui <<setiosflags(ios::left)<<setw(7)</p>
94、<p> <<p->gz.yingkou <<setiosflags(ios::left)<<setw(7)<<p->gz.shifa <<endl;</p><p> p=p->next;</p><p><b> }</b></p><p>&l
95、t;b> }</b></p><p> else cout<<"該職工暫時(shí)沒(méi)有工資信息"<<endl;</p><p><b> }</b></p><p> //////////////////////////////////////////</p><
96、p> int GZ::Print1(char nu[])</p><p><b> {int n=0;</b></p><p> if(head==NULL)</p><p> cout<<"\n\n\t\t沒(méi)有工資信息!\n\n";</p><p><b> e
97、lse</b></p><p><b> {p=head;</b></p><p><b> while(p)</b></p><p> {if(strcmp(p->gz.num,nu)==0)n++;</p><p> p=p->next;</p>
98、<p><b> }</b></p><p><b> }</b></p><p><b> if(n!=0)</b></p><p><b> {p=head;</b></p><p><b> Print();</b
99、></p><p><b> while(p)</b></p><p> {if(strcmp(p->gz.num,nu)==0)</p><p> cout<<setiosflags(ios::left)<<setw(7)<<p->gz.month <<setiosfl
100、ags(ios::left)<<setw(9)<<p->gz.num<<setiosflags(ios::left)<<setw(7)<<p->gz.dixin </p><p> <<setiosflags(ios::left)<<setw(5)<<p->gz.jintie <<set
101、iosflags(ios::left)<<setw(5)<<p->gz.fangtie </p><p> <<setiosflags(ios::left)<<setw(7)<<p->gz.jiaotongfei <<setiosflags(ios::left)<<setw(7)<<p->gz.yi
102、ngfa<<setiosflags(ios::left)<<setw(5)</p><p> <<p->gz.fangzhu <<setiosflags(ios::left)<<setw(5)<<p->gz.huifei <<setiosflags(ios::left)<<setw(7)<<p
103、->gz.suodesui <<setiosflags(ios::left)<<setw(7)</p><p> <<p->gz.yingkou <<setiosflags(ios::left)<<setw(7)<<p->gz.shifa <<endl;</p><p> p=p-&g
104、t;next;</p><p><b> }</b></p><p><b> return 1;</b></p><p><b> }</b></p><p><b> else </b></p><p><b>
105、; {</b></p><p> cout<<"該職工暫時(shí)沒(méi)有工資信息"<<endl;</p><p> return 0;}</p><p><b> }</b></p><p> /////////////////////////////////<
106、;/p><p> void GZ::Print2()</p><p><b> {int n=0;</b></p><p> char nu[10];</p><p> cout<<"\n\n\t\t請(qǐng)問(wèn)您要輸出哪個(gè)月的工資信息:";</p><p><b
107、> cin>>nu;</b></p><p> if(head==NULL)</p><p> cout<<"\n\n\t\t沒(méi)有工資信息!\n\n";</p><p> else{p=head;</p><p><b> while(p)</b>&
108、lt;/p><p> {if(strcmp(p->gz.month,nu)==0)n++;</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> if(n!=
109、0)</b></p><p><b> {p=head;</b></p><p><b> Print();</b></p><p><b> while(p)</b></p><p> {if(strcmp(p->gz.month ,nu)==0)
110、</p><p> cout<<setiosflags(ios::left)<<setw(7)<<p->gz.month <<setiosflags(ios::left)<<setw(9)<<p->gz.num<<setiosflags(ios::left)<<setw(7)</p><
111、;p> <<p->gz.dixin <<setiosflags(ios::left)<<setw(5)<<p->gz.jintie <<setiosflags(ios::left)<<setw(5)<<p->gz.fangtie </p><p> <<setiosflags(ios::le
112、ft)<<setw(7)<<p->gz.jiaotongfei <<setiosflags(ios::left)<<setw(7)<<p->gz.yingfa<<setiosflags(ios::left)<<setw(5)</p><p> <<p->gz.fangzhu <<seti
113、osflags(ios::left)<<setw(5)<<p->gz.huifei <<setiosflags(ios::left)<<setw(7)<<p->gz.suodesui </p><p> <<setiosflags(ios::left)<<setw(7)<<p->gz.yingkou
114、 <<setiosflags(ios::left)<<setw(7)<<p->gz.shifa <<endl;</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><
115、p> else cout<<"該月暫時(shí)沒(méi)有工資信息"<<endl;</p><p><b> }</b></p><p> ///////////////////////////////////////</p><p> void GZ::WriteFile() <
116、;/p><p> {Gongzi *s=head;</p><p> ofstream fop;</p><p> fop.open("工資信息.dat",ios::binary|ios::trunc); </p><p><b> if(!fop)</b></p><p&g
117、t; { cout<<"工資信息.dat 無(wú)法打開(kāi)!"<<endl;</p><p><b> abort();</b></p><p><b> } </b></p><p><b> while(s)</b></p><p
118、> {while(fop.write((char *)&s->gz ,sizeof(s->gz )))</p><p> { s=s->next;</p><p><b> } </b></p><p><b> }</b></p><p> fop.cl
119、ose();</p><p> cout<<"操作成功!";</p><p><b> } </b></p><p> /////////////////////////////</p><p> void GZ::ReadFile()</p><p>
120、{p=new Gongzi;</p><p> ifstream fip("工資信息.dat",ios::in|ios::binary); </p><p> if(!fip)cout<<"未創(chuàng)建該文件!"<<endl;</p><p><b> else</b>
121、;</p><p> while(fip.read((char *)&p->gz ,sizeof(p->gz )))</p><p> { p->next=head;</p><p><b> head=p;</b></p><p> p=new Gongzi;</p>
122、<p><b> }</b></p><p> fip.close();</p><p><b> delete p;</b></p><p><b> }</b></p><p> ////////////////////////</p>&
123、lt;p> void GZ::Delete()</p><p><b> {</b></p><p> if(head!=NULL)</p><p><b> {int n=0;</b></p><p> Gongzi *q=head;</p><p> G
124、ongzi *q1=head,*q2 =head->next;</p><p> char gh[10],mon[10];</p><p> cout<<" 請(qǐng)輸入您要?jiǎng)h除的工資信息所對(duì)應(yīng)的職工編號(hào):";</p><p><b> cin>>gh;</b></p><p
125、> cout<<" 請(qǐng)輸入您要?jiǎng)h除的工資信息的月份: ";</p><p><b> cin>>mon;</b></p><p><b> while(q)</b></p><p> {if(strcmp(q->gz.num,gh)==0&&s
126、trcmp(q->gz.month ,mon)==0&&q==head)</p><p> {head=head->next;</p><p> cout<<"操作成功!";</p><p><b> break;</b></p><p><b>
127、; }</b></p><p><b> else</b></p><p> if(strcmp(q->gz.num,gh)==0&&strcmp(q->gz.month ,mon)==0&&q!=head) </p><p> {q1->next=q;</p>
128、<p> q2=q->next;</p><p> q1->next=q2;</p><p><b> delete q;</b></p><p> cout<<"操作成功!";</p><p><b> break;</b><
129、/p><p><b> }</b></p><p> q=q->next;</p><p><b> }</b></p><p> if(q==NULL)cout<<"不存在該月工資信息!"<<endl;</p><p>
130、;<b> }</b></p><p> else cout<<"不存在職工的工資信息!"<<endl;</p><p><b> }</b></p><p> //////////////////////////////////////////////</p>
131、;<p> void GZ::Change()</p><p> {char nu[10];</p><p> char mon[10];</p><p> cout<<"請(qǐng)輸入職工編號(hào):";</p><p><b> cin>>nu;</b></
132、p><p> if(Print1(nu)==1)</p><p><b> {</b></p><p> cout<<endl<<"請(qǐng)問(wèn)您要修改那個(gè)月的工資信息:";</p><p><b> cin>>mon;</b></p>
133、<p><b> p=head;</b></p><p><b> while(p)</b></p><p> {if(strcmp(p->gz.num,nu)==0&&strcmp(p->gz.month,mon)==0)break;</p><p> p=p->
134、next;</p><p><b> }</b></p><p> if(p!=NULL)</p><p><b> {</b></p><p> cout<<"基本工資修改為:";cin>>p->gz.dixin;</p>&
135、lt;p> cout<<"津貼修改為:";cin>>p->gz.jintie;</p><p> cout<<"房貼修改為:";cin>>p->gz.fangtie;</p><p> cout<<"交通費(fèi)修改為:";cin>>p-&g
136、t;gz.jiaotongfei ;</p><p> cout<<"房租修改為:";cin>>p->gz.fangzhu;</p><p> cout<<"會(huì)費(fèi)修改為:";cin>>p->gz.huifei ;</p><p> p->gz.yingfa
137、=p->gz.dixin+p->gz.jintie+p->gz.fangtie+p->gz.jiaotongfei;</p><p> if(p->gz.yingfa<=2000)p->gz.suodesui=0;</p><p><b> else </b></p><p> p->gz.
138、suodesui=(p->gz.yingfa-2000)*0.2;</p><p> p->gz.yingkou=p->gz.fangzhu+p->gz.huifei+p->gz.suodesui;</p><p> p->gz.shifa=p->gz.yingfa-p->gz.yingkou;</p><p>&
139、lt;b> }</b></p><p><b> else</b></p><p> cout<<"\n沒(méi)有該月份的工資信息!"<<endl;</p><p><b> }</b></p><p><b> else
140、</b></p><p> cout<<"\n沒(méi)有信息供修改!"<<endl;</p><p><b> }</b></p><p> ///////////////////////////</p><p> int menu()//管理端菜單</p&
141、gt;<p><b> {int b; </b></p><p> system("cls");</p><p> cout<<"\n\n\n"</p><p> <<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n&qu
142、ot;</p><p> <<"\t※ ※\n"</p><p> <<"\t※ 職工工資管理系統(tǒng) ※\n"<
143、;/p><p> <<"\t※--------------------------------------------------------------※\n"</p><p> <<"\t※ 操作方式: ※\n"</
144、p><p> <<"\t※ 1. 增加職工 2. 查看所有職工 ※\n"</p><p> <<"\t※ 3. 刪除職工 4. 增加工資信息 ※\n"</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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工資管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-工資管理系統(tǒng)
- 工資管理系統(tǒng)課程設(shè)計(jì)
- 工資管理系統(tǒng)課程設(shè)計(jì)
- 工資管理系統(tǒng)(課程設(shè)計(jì))
- 課程設(shè)計(jì)-- 企業(yè)工資管理系統(tǒng)
- 企業(yè)工資管理系統(tǒng)課程設(shè)計(jì)
- 工資管理系統(tǒng)-課程設(shè)計(jì)報(bào)告
- 企業(yè)工資管理系統(tǒng)課程設(shè)計(jì)
- 企業(yè)工資管理系統(tǒng)課程設(shè)計(jì)
- sql課程設(shè)計(jì)---工資管理系統(tǒng)
- java工資管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--企業(yè)工資管理系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)--教師工資管理系統(tǒng)
- 面向?qū)ο笳n程設(shè)計(jì)--- 工資管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--工資管理系統(tǒng)
- 高校工資管理系統(tǒng)課程設(shè)計(jì)
- 教師工資管理系統(tǒng)課程設(shè)計(jì)
- c語(yǔ)言工資管理系統(tǒng)課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--工資管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論