版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 編號(hào): </p><p> 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)</p><p><b> 說(shuō)明書</b></p><p> 題 目: 人事檔案管理系統(tǒng) </p><p> 學(xué) 院: 計(jì)算機(jī)科學(xué)與工程學(xué)院 </p><p>
2、; 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 學(xué)生姓名: </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)教師: </p><p> 2013年 9月26號(hào)</p><p><
3、;b> 摘 要</b></p><p> 電腦已經(jīng)深入到我們?nèi)粘9ぷ骱蜕畹姆椒矫婷?,比如文字處理、信息管理、輔助設(shè)計(jì)、圖形圖像處理、教育培訓(xùn)以及游戲娛樂等。Windows系統(tǒng)的推出使電腦從高雅的學(xué)術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無(wú)須經(jīng)過特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不
4、開發(fā)適合自己特殊需求的軟件。 隨著企事業(yè)單位的發(fā)展,人員會(huì)越來(lái)越多,少則幾十人、多則上萬(wàn)人。例如一個(gè)企業(yè)分很多部門,每個(gè)部門又分為許多科或室等,而其下又分為各級(jí)領(lǐng)導(dǎo)和員工。用筆和紙傳統(tǒng)的手工管理檔案,這中管理方式存在著不易更新、不易存放、不安全、容易丟失、難以備份等重大缺陷,管理起來(lái)效率低下而且很可能造成管理上的混亂。而自己建立簡(jiǎn)單的電子文檔對(duì)信息管理進(jìn)行管理雖然克服了以上的缺點(diǎn),但查詢效率較低,特別是當(dāng)數(shù)據(jù)量十分龐大時(shí),劣勢(shì)尤其明顯
5、。因此開發(fā)一個(gè)既可以存儲(chǔ)信息,又可以進(jìn)行更新、查詢、管理等功能,同時(shí)價(jià)格又能為廣大消費(fèi)者接受的多功能電子人事信息管理系統(tǒng)就顯得十分必要。 </p><p> 關(guān)鍵詞:Visual C++6.0;算法;人事管理;類面向?qū)ο?;鏈?lt;/p><p><b> 目 錄</b></p><p><b> 引言1</b>
6、;</p><p><b> 1系統(tǒng)概述2</b></p><p><b> 2需求分析2</b></p><p> 2.1 系統(tǒng)需求2</p><p> 2.2 開發(fā)環(huán)境3</p><p> 3詳細(xì)設(shè)計(jì) …………………………
7、………………4</p><p> 3.1類的設(shè)計(jì)及分析 …………………………………………… …4</p><p> 3.2各功能的設(shè)計(jì) …………………………………………… …6</p><p> 4 所遇到的問題和分析解決 …………………………………………10</p><p>
8、 5 系統(tǒng)特色及關(guān)鍵技術(shù) ………………………………………………11</p><p> 5.1成員函數(shù)添加的分析 …………………………………………… …11</p><p> 5.2直接選擇排序 ……………………………………………………14</p><p> 6 用戶使用 ………………………………
9、…………………… 15</p><p> 7 結(jié)論…………………………………………………………18</p><p> 參考文獻(xiàn)………………………………………………………………19</p><p><b> 引 言</b></p><p> 隨著全球?qū)χR(shí)和人才的重視,企業(yè)對(duì)人力資源管理重要性的認(rèn)識(shí)逐漸深化,人才的
10、全球化競(jìng)爭(zhēng)使企業(yè)的人力資源管理面臨前所未有的挑戰(zhàn)。在新形勢(shì)下,人事檔案管理系統(tǒng)是一個(gè)企業(yè)單位不可缺少的部分,是適應(yīng)現(xiàn)代企業(yè)制度,推動(dòng)企業(yè)人力資源管理走向科學(xué)化、規(guī)范化、自動(dòng)化的必要條件;是應(yīng)對(duì)挑戰(zhàn)、適應(yīng)環(huán)境變化、提高企業(yè)管理效率、提升核心競(jìng)爭(zhēng)力的關(guān)鍵措施。它所包含內(nèi)容對(duì)于企業(yè)的決策者和管理者來(lái)說(shuō)至關(guān)重要。目前市場(chǎng)上的人事管理系統(tǒng)很多,但要找到一款真正稱心、符合企業(yè)實(shí)際情況的并不容易。由于存在這樣那樣的不足,使企業(yè)浪費(fèi)了大量的人力、物力等
11、大量資源,難以真正提升企業(yè)人力資源的管理水平,提高工作效率及降低管理成本的效果也不明顯。因此,為了加快公司信息化的步伐,提高公司的管理水平,并在激烈的社會(huì)競(jìng)爭(zhēng)中立于不敗之地,建立及完善人力資源管理系統(tǒng)已變得十分必要和迫切。在社會(huì)中,人力資源是企事業(yè)單位的核心,而對(duì)它的管理及管理軟件的選用則是評(píng)價(jià)管理者管理水平的一個(gè)重要標(biāo)志。因此人力資源管理工作是企事業(yè)單位工作的一項(xiàng)重要任務(wù),是提高管理質(zhì)量和保障企事業(yè)單位生產(chǎn)目標(biāo)實(shí)現(xiàn)的一個(gè)重要保證。因此
12、,人力資源管理的內(nèi)容對(duì)企事業(yè)單位的決策者和管理</p><p> 根據(jù)需求,本人事檔案管理系統(tǒng)主要分系統(tǒng)管理、信息登記、信息刪除、信息查詢、信息修改、信息按順序輸出、報(bào)表信息輸出、系統(tǒng)簡(jiǎn)介等八大部分。具體要求實(shí)現(xiàn):對(duì)業(yè)務(wù)模塊相關(guān)信息的添加,修改,刪除以及對(duì)人員調(diào)動(dòng)的管理;對(duì)考勤信息設(shè)置、管理和查詢;對(duì)工資信息設(shè)置;部門,員工工資統(tǒng)計(jì)查詢等等。</p><p><b> 1
13、系統(tǒng)概述 </b></p><p> 本人事檔案管理系統(tǒng)主要分系統(tǒng)管理、信息登記、信息刪除、信息查詢、信息修改、信息按順序輸出、報(bào)表信息輸出、系統(tǒng)簡(jiǎn)介等八大部分。具體要求實(shí)現(xiàn):對(duì)業(yè)務(wù)模塊相關(guān)信息的添加,修改,刪除以及對(duì)人員調(diào)動(dòng)的管理;對(duì)考勤信息設(shè)置、管理和查詢;對(duì)工資信息設(shè)置;部門,員工工資統(tǒng)計(jì)查詢等等。</p><p><b> 2 需求分析</b>
14、;</p><p><b> 2.1 系統(tǒng)需求</b></p><p> 在信息技術(shù)高速發(fā)展的今天,傳統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方式在處理龐大繁雜的信息量時(shí)顯得力不從心,于是,人們對(duì)于運(yùn)用計(jì)算機(jī)來(lái)輔助和管理工作的需求正在逐步提高。</p><p> 隨著各個(gè)企業(yè)業(yè)務(wù)的逐步擴(kuò)展,企業(yè)的員工人數(shù)也在迅速增加,由于管理人員水平有限,導(dǎo)致某些員工紀(jì)錄管理并不完
15、善,特別是繁雜的員工工資管理紀(jì)錄,不易查詢、修改,極易導(dǎo)致錯(cuò)誤,而落后的員工管理方法隨著社會(huì)的日益競(jìng)爭(zhēng),必將被淘汰。</p><p> 由計(jì)算機(jī)來(lái)管理龐大而繁雜的企業(yè)員工紀(jì)錄是非常合適的,不僅查詢和修改方便,并且效率高,速度快,完全能夠滿足現(xiàn)代化企業(yè)管理的需要,同時(shí)也更利于實(shí)現(xiàn)全面辦公自動(dòng)化。因此開發(fā)一套企業(yè)員工工資管理系統(tǒng)軟件勢(shì)在必行。</p><p> 企業(yè)員工工資管理系統(tǒng)是企業(yè)管
16、理系統(tǒng)中的一個(gè)重要組成部分,它為企業(yè)合理的員工調(diào)配與編制,以及有關(guān)問題的決策能夠提供各種必要的基礎(chǔ)數(shù)據(jù),是公司管理現(xiàn)代化的一個(gè)重要方面。利用微機(jī)對(duì)龐雜而繁鎖的員工工資系統(tǒng)實(shí)現(xiàn)自動(dòng)化管理,是計(jì)算機(jī)公司信息管理系統(tǒng)的重要內(nèi)容。我在陳勇老師指導(dǎo)下開發(fā)了《企業(yè)員工工資管理系統(tǒng)》。</p><p> 《企業(yè)員工工資管理系統(tǒng)》旨在為商業(yè)人士及在社會(huì)團(tuán)體、機(jī)構(gòu)中負(fù)責(zé)管理關(guān)系的人士提供一個(gè)功能全面、使用方便的工資管理系統(tǒng),以替
17、代傳統(tǒng)的手工管理工資紀(jì)錄,同時(shí)利用先進(jìn)信息技術(shù)為用戶提供一些更為方便實(shí)用的功能。 </p><p> 本系統(tǒng)實(shí)現(xiàn)五種基本功能:輸入員工工資信息、刪除員工工資信息、修改員工工資信息、查找員工工資信息、列出所有員工工資信息。所以該工資管理系統(tǒng)可以分為5個(gè)模塊,分別為輸入模塊、刪除模塊、修改模塊、查找模塊、列表模塊,每個(gè)模塊都有其對(duì)應(yīng)的功能以及其設(shè)計(jì)。</p><p><b> ?。?/p>
18、1)輸入模塊</b></p><p> 輸入模塊的功能是創(chuàng)建存儲(chǔ)職工工資信息的存儲(chǔ)系統(tǒng)以及添加某職工的工資信息。為實(shí)現(xiàn)輸入的功能,有兩個(gè)方面的任務(wù):定義結(jié)構(gòu)體以及建立鏈表。</p><p><b> (2)刪除模塊</b></p><p> 刪除模塊的功能是刪除某職工的工資信息。</p><p><
19、;b> ?。?)修改模塊</b></p><p> 修改模塊的功能是修改某職工的部分工資信息。</p><p><b> ?。?)查找模塊</b></p><p> 查找模塊的功能就是:輸出指定編號(hào)職工的工資信息;輸出姓名和部門聯(lián)合查詢的職工工資信息。</p><p><b> (5)統(tǒng)
20、計(jì)模塊</b></p><p> 統(tǒng)計(jì)模塊的功能是:統(tǒng)計(jì)全企業(yè)總?cè)藬?shù)及各部門的人數(shù);統(tǒng)計(jì)企業(yè)的平均工資及部門的平均工資。</p><p><b> ?。?)排序模塊</b></p><p> 排序的模塊的功能是:對(duì)全企業(yè)的信息表按受教育年限及工資進(jìn)行遞增排序。</p><p><b> ?。?)
21、列表模塊</b></p><p> 列表模塊的功能是輸出全體職工的工資信息。</p><p><b> 程序具體功能介紹:</b></p><p> 2.1.1 功能介紹</p><p> 現(xiàn)在,需要存儲(chǔ)這些人員的人事檔案信息:?jiǎn)T工編號(hào), 員工姓名 ,年齡 ,性別 ,部門 ,職務(wù), 受教育年限 ,工資
22、 ,缺勤(天) ,罰金, 個(gè)稅 ,實(shí)發(fā)數(shù)。其中,人員編號(hào)唯一,不能重復(fù)。</p><p> 添加刪除功能:能根據(jù)學(xué)企業(yè)人事的變動(dòng)情況,添加刪除記錄;</p><p> 查詢功能:能根據(jù)編號(hào)及姓名和部門的復(fù)合查詢進(jìn)行查詢;</p><p> 編輯功能(高級(jí)):根據(jù)查詢對(duì)相應(yīng)的記錄進(jìn)行修改,并存儲(chǔ);</p><p> 統(tǒng)計(jì)功能:能根據(jù)多種
23、參數(shù)進(jìn)行人員的統(tǒng)計(jì)及平均工資,統(tǒng)計(jì)要求同時(shí)顯示被統(tǒng)計(jì)者的信息;</p><p> 排序功能:按照受教育年限、工資進(jìn)行排序;</p><p> 保存功能:能對(duì)輸入的數(shù)據(jù)進(jìn)行相應(yīng)的存儲(chǔ);</p><p><b> 2 .2 系統(tǒng)框圖</b></p><p> 系統(tǒng)框架圖在本設(shè)計(jì)中,將主要實(shí)現(xiàn)以下功能:增加記錄功能,修
24、改記錄功能,刪除記錄功能,以及篩選記錄功能等。</p><p><b> 圖1 系統(tǒng)框架圖</b></p><p><b> 2.2 開發(fā)環(huán)境 </b></p><p> 本系統(tǒng)是在Visual C++6.0平臺(tái)上運(yùn)行的,主要運(yùn)行C及C++等語(yǔ)言。</p><p><b> 3
25、詳細(xì)設(shè)計(jì)</b></p><p><b> 具體系統(tǒng)設(shè)計(jì)</b></p><p> 3.1 結(jié)構(gòu)體及類的設(shè)計(jì)與分析</p><p> 3.1.1:?jiǎn)T工結(jié)構(gòu)體的建立</p><p> struct Worker_pay</p><p><b> {</b>
26、</p><p> int num; //員工編號(hào)</p><p> string name; //員工姓名</p><p> int age; //年齡</p><p> string sex; //性別</p><p>
27、; string department; //部門</p><p> string title; //職務(wù)</p><p> int eduage; //學(xué)歷(年)</p><p> float wage; //工資</p><p> int day;
28、 //缺勤天數(shù)</p><p> float allowance; //扣發(fā)工資</p><p> float tax; //個(gè)人所得稅</p><p> float real_wage; //實(shí)發(fā)數(shù)</p><p> Worker_pay * next; //鏈表結(jié)點(diǎn)的指針域&l
29、t;/p><p><b> };</b></p><p> 3.1.2:?jiǎn)T工類的建立</p><p> class Worker</p><p><b> {</b></p><p> protected:</p><p> Worker_pa
30、y * head; //鏈表的頭結(jié)點(diǎn)指針</p><p><b> public:</b></p><p> Worker(){head=NULL;} //構(gòu)造函數(shù)</p><p> void Display(Worker_pay *); //輸出函數(shù) </p>
31、<p> Worker_pay * Find(int); //查找函數(shù)</p><p> int ListCount(); //統(tǒng)計(jì)員工人數(shù)函數(shù) </p><p> void AddItem(int,string,int,string,string,string,float,float
32、); //創(chuàng)建鏈表并鏈表的插入</p><p> void RemoveItem(int); //刪除函數(shù)</p><p> void ReplaceItem(int); //修改函數(shù)</p><p> void ListL(); //遍歷函數(shù)
33、 </p><p> void Search(int); //查找并輸出某個(gè)員工信息函數(shù)</p><p> void Real_wage(float,float); //計(jì)算函數(shù)</p><p> void Recordinfo(int,string,int,string,string,string,float,flo
34、at,float,float); //存儲(chǔ)函數(shù)</p><p><b> };</b></p><p> 3.1.3:相關(guān)的成員函數(shù)</p><p> 表1 Worker類說(shuō)明表</p><p> 3.1.4非成員函數(shù)的設(shè)計(jì)與分析</p><p> 表2 非成員函數(shù)說(shuō)明表</p&g
35、t;<p> 3.2:各功能模塊設(shè)計(jì):</p><p> ?。?)、新建數(shù)據(jù)文件模塊:</p><p><b> <1>、數(shù)據(jù)結(jié)構(gòu);</b></p><p> 看各個(gè)數(shù)據(jù)信息,員工編號(hào)(int), 員工姓名 (sting),年齡 (int),性別 (string),部門(string) ,職務(wù)(string),
36、受教育年限 (int),工資 (string),缺勤(天)(int) ,罰金(int), 個(gè)稅 (int),實(shí)發(fā)數(shù)(int),在文件中以文本形式存放,每條記錄對(duì)應(yīng)一個(gè)人員的信息,可以方便信息的管理;而數(shù)據(jù)讀進(jìn)內(nèi)存中時(shí),可以以結(jié)構(gòu)體的形式,每一個(gè)結(jié)構(gòu)體包含了一個(gè)人員的全部信息,多的人員的信息組成了一個(gè)結(jié)構(gòu)體數(shù)組。定義見結(jié)構(gòu)體及類的設(shè)計(jì)與分析</p><p><b> ?。?)、追加模塊:</b>
37、;</p><p><b> 〈1〉[需求分析]</b></p><p> 該模塊的功能是擁護(hù)需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來(lái)的文件中去,其中輸入號(hào)碼是要防止號(hào)碼重復(fù),重復(fù)時(shí)報(bào)告錯(cuò)誤,重新輸入。為方便用戶管理和查看,該模塊采用的方式是用先把原來(lái)文件中的數(shù)據(jù)讀入內(nèi)存,保存在內(nèi)存中,然后在內(nèi)存中的數(shù)據(jù)后面增加新的數(shù)據(jù),操作完成后用寫的方式打開文件,用覆
38、蓋的方式寫入。</p><p><b> 〈2〉流程圖:略;</b></p><p> 〈3〉對(duì)應(yīng)程序:void AddNew() </p><p><b> (3)修改模塊:</b></p><p> <1>[需求分析:]</p>
39、;<p> 該模塊的功能是顯示所有信息,考慮到記錄較多,采用分屏顯示,顯示完所有的記錄后,由用戶輸入需要修改的人員的號(hào)碼,查找成功后,顯示查找結(jié)果,并詢問擁護(hù)修改人員的哪部分記錄,根據(jù)用戶選擇修改相應(yīng)的信息,然后保存修改后的結(jié)果;</p><p><b> <2>流程圖:</b></p><p> Y Y
40、 N</p><p> Y N </p><p> <3>對(duì)應(yīng)的函數(shù):void DoMotify();</p><p><b> ?。?)刪除模塊
41、:</b></p><p> 〈1〉[需求分析]:</p><p> 該模塊的運(yùn)行方式與修改模塊類似,首先分屏顯示所有人員的記錄,顯示完所有的記錄后,由用戶輸入要?jiǎng)h除的人員的號(hào)碼,根據(jù)號(hào)碼查找相應(yīng)的記錄并將結(jié)果顯示出來(lái),經(jīng)用戶確認(rèn)后刪除,刪除的方法是將文件中的數(shù)據(jù)讀入內(nèi)存,賦給相應(yīng)的結(jié)構(gòu)體,并將結(jié)構(gòu)體數(shù)組中將刪除的后面的數(shù)據(jù)賦給前一個(gè)結(jié)構(gòu)體,然后將相應(yīng)數(shù)據(jù)寫入文件并保存;&
42、lt;/p><p> 〈2〉流程圖:類似添加的流程</p><p> <3>對(duì)應(yīng)函數(shù): void DoDelete(); </p><p> (5)、按編號(hào)搜索:</p><p> 〈1〉[需求分析]:</p><p> 該模塊的功能是按照輸入的人員的編號(hào)查找對(duì)應(yīng)的記錄,并將其顯示,查找成功以后,增加
43、刪除和修改等功能,其中刪除和修改功能可以通過調(diào)用相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)。</p><p><b> 〈2〉流程圖;</b></p><p> (6)按姓名和部門搜索。</p><p> <1>需求分析:該模塊的功能是按照輸入的人員的姓名和部門查找對(duì)應(yīng)的記錄,并將其顯示,查找成功以后,增加刪除和修改等功能,其中刪除和修改功能可以通過調(diào)
44、用相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)。</p><p> <2>該模塊的結(jié)構(gòu)與按號(hào)碼查詢的結(jié)構(gòu)基本相同;</p><p> <3>對(duì)應(yīng)函數(shù):void DoFindbumen();</p><p><b> ?。?)輸出模塊;</b></p><p><b> 需求分析:</b></
45、p><p> 該模塊的功能是顯示所有保存在文件中的記錄。</p><p><b> 〈2〉、流程圖;略</b></p><p> <3>對(duì)應(yīng)函數(shù):void List(); </p><p><b> (8)、排序模塊;</b></p><p> 〈1〉、[需
46、求分析];</p><p> 該模塊的功能是要求將記錄按照年齡或者來(lái)院時(shí)間進(jìn)行排序,總體結(jié)構(gòu)是先用n=load()函數(shù)將文件中的數(shù)據(jù)調(diào)入內(nèi)存,然后按照選擇法排序,并將結(jié)果顯示出來(lái),然后將排序后的結(jié)果保存。</p><p><b> <2>流程圖;</b></p><p><b> 略。</b></p
47、><p> <3>對(duì)應(yīng)函數(shù): void sort_data()</p><p><b> (9)、統(tǒng)計(jì)模塊</b></p><p> 〈1〉、[需求分析];</p><p> 該模塊的功能是按照用戶的要求統(tǒng)計(jì)出滿足符合條件的所有記錄的個(gè)數(shù),并將滿足條件的記錄顯示出來(lái)。該模塊是在其他模塊進(jìn)行的同時(shí)進(jìn)行的,沒
48、有單獨(dú)列出,沒有涉及到文件的保存。</p><p><b> 〈2〉流程圖;無(wú);</b></p><p> 〈3〉對(duì)應(yīng)函數(shù):包含在其他函數(shù)內(nèi)</p><p> 4 所遇到的問題和分析解決</p><p> (1)設(shè)計(jì)初期,先完成初步構(gòu)思,寫出主函數(shù)。然后對(duì)主函數(shù)所涉及的各個(gè)模塊進(jìn)行編程,將各個(gè)模塊利用指針和鏈表
49、聯(lián)系起來(lái)。在環(huán)境中進(jìn)行調(diào)試,應(yīng)一邊編譯,一邊調(diào)試,并且要一個(gè)模塊一個(gè)模塊的調(diào)試。直至此模塊完全沒有錯(cuò)誤時(shí),在進(jìn)入下一模塊的調(diào)試。不能直接輸入全部的代碼一次性調(diào),這樣錯(cuò)誤會(huì)很多,并且不易找出和修改。在完成程序的編譯鏈接后,要用多組數(shù)據(jù)進(jìn)行審查,確保做到系統(tǒng)無(wú)誤。</p><p> 設(shè)計(jì)過程中,不應(yīng)忽視環(huán)境提示的警告,有時(shí)程序運(yùn)行不正確與警告也有很大的關(guān)系。這次設(shè)計(jì)中遇到很多問題都是提示類型不匹配,這時(shí)就要認(rèn)真檢查
50、前面的代碼,及時(shí)改正并且認(rèn)真仔細(xì),杜絕此類錯(cuò)再次發(fā)生。</p><p> 編寫代碼時(shí)應(yīng)該少用全局變量,全局變量在編寫試看似定義次數(shù)少,很方便。但全局變量出錯(cuò)幾率較大,且不易修改,每次修改時(shí)都要全面考慮,所以應(yīng)避免用到。</p><p> 程序調(diào)試中碰到的錯(cuò)誤可以使自己學(xué)到知識(shí)。養(yǎng)成良好的編程習(xí)慣,可以節(jié)省很多時(shí)間,避免很多不必要的錯(cuò)誤。</p><p> ?。?
51、)在編輯完整個(gè)程序后,進(jìn)行調(diào)試階段總是會(huì)數(shù)顯head無(wú)定義。</p><p> 解決辦法:再類的定義是忘記聲明指針Worker_pay *head;。</p><p> ?。?)在寫讀入函數(shù)時(shí),總是不能讀入數(shù)據(jù),經(jīng)同學(xué)檢查發(fā)現(xiàn)沒有申請(qǐng)新的空間存放數(shù)據(jù)。</p><p> 解決辦法:在讀入txt文件時(shí),q=new Worker_pay; q->next=NU
52、LL。</p><p> 5 系統(tǒng)特色及關(guān)鍵技術(shù)</p><p> 5.1:Worker類中的成員函數(shù)void AddItem(int,···float,float)</p><p> ?。?)功能:創(chuàng)建存儲(chǔ)職工工資信息的存儲(chǔ)系統(tǒng)以及添加某職工的工資信息。</p><p> 算法思路:先定義一個(gè)結(jié)構(gòu)體Wo
53、rker_pay,通過從表尾插入的方法來(lái)建立鏈表。首先要先設(shè)立一個(gè)頭指針(head)來(lái)存放鏈表的首地址,然后,不斷用new運(yùn)算符生成一個(gè)新的結(jié)點(diǎn),將這個(gè)結(jié)點(diǎn)鏈入已有的鏈表尾部;如果鏈表中還沒有結(jié)點(diǎn),則這個(gè)新結(jié)點(diǎn)將是首結(jié)點(diǎn),否則,將新結(jié)點(diǎn)的地址賦給原有鏈表的尾結(jié)點(diǎn)的next指針。</p><p><b> 流程圖:</b></p><p><b> ?。?)
54、代碼:</b></p><p> void Worker::AddItem(int num1,string name1 , ……)</p><p><b> {</b></p><p><b> if(!head)</b></p><p><b> {</b>
55、;</p><p> head=new Worker_pay;</p><p> head->num=num1;</p><p><b> ……</b></p><p> head->next=NULL;</p><p><b> return;</b>
56、</p><p><b> }</b></p><p> Worker_pay * t=head;</p><p> while(t&&t->num!=num1)</p><p> t=t->next;</p><p><b> if(t)</
57、b></p><p><b> {</b></p><p> cout<<"操作失??;員工編號(hào)為"<<num1<<"的信息已經(jīng)存在!!!"<<endl;</p><p><b> return;</b></p>
58、<p><b> }</b></p><p> Worker_pay * p=head;</p><p> while(p->next)</p><p> p=p->next;</p><p> Worker_pay * p1=new Worker_pay;</p><
59、;p><b> ……</b></p><p><b> return;</b></p><p><b> }</b></p><p> 5.2:Worker類中的成員函數(shù)void sort_data()</p><p> ?。?)功能:創(chuàng)建存儲(chǔ)職工工資信息的存儲(chǔ)系
60、統(tǒng)以及添加某職工的工資信息。</p><p> 算法思路:運(yùn)用算法課本上的直接選擇排序的算法,與課本的不同之處在于,本程序是用指針進(jìn)行排序的,課本使用的數(shù)組。</p><p> 直接選擇排序的比較次數(shù)與文件初始狀態(tài)無(wú)關(guān),在第i趟排序中選出最小的記錄,需做n-i次比較,因此總的次數(shù)為:O(N*N),文件初始狀態(tài)為正序時(shí),移動(dòng)0;最壞情況每趟排序都要交換操作,總的移動(dòng)次數(shù)是3(n-1)。直
61、接選擇排序的平均時(shí)間復(fù)雜度為O(n平方)。算法中增加了一個(gè)輔助空間temp,因此輔助空間為S(n)=O(1)。直接選擇排序是不穩(wěn)定的。</p><p> 主要代碼:Worker_pay * p,*q,*small,*temp;</p><p> temp= new Worker_pay ;</p><p> for(p=head;p->next!=NUL
62、L;p=p->next)</p><p><b> {</b></p><p><b> small=p;</b></p><p> for(q=p->next ;q!=NULL;q=q->next)</p><p> if(q->eduage<small-&g
63、t;eduage)</p><p><b> small=q;</b></p><p> if(small!=p)</p><p><b> {</b></p><p> temp->eduage=p->eduage;</p><p> p->ed
64、uage=small->eduage;</p><p> small->eduage=temp->eduage;</p><p><b> ……………………</b></p><p><b> }</b></p><p><b> }</b></p
65、><p> cout<<"員工編號(hào) 員工姓名 年齡 性別 部門 職務(wù) 學(xué)歷 工資 缺勤(天) 罰金 個(gè)稅 實(shí)發(fā)數(shù)"<<endl;</p><p> while(head!=NULL)</p><p> { Display(head);</p><p> head=head->next;&
66、lt;/p><p><b> }</b></p><p> 6 用戶手冊(cè)及測(cè)試結(jié)果</p><p><b> 6.1用戶手冊(cè)</b></p><p> 運(yùn)行程序時(shí),界面剛開始出現(xiàn)一個(gè)主菜單及提示信息,用戶通過在鍵盤上輸入來(lái)選擇某個(gè)功能。當(dāng)用戶選擇了某個(gè)功能,系統(tǒng)將跳轉(zhuǎn)到所選擇的功能界面,用戶將可
67、以根據(jù)提示信息來(lái)使用該功能,當(dāng)用戶通過鍵盤輸入編號(hào)為-1時(shí),系統(tǒng)將返回主界面。</p><p><b> 6.2 測(cè)試結(jié)果</b></p><p><b> 1,主菜單</b></p><p> 2,輸入,添加,刪除,修改,查詢:</p><p><b> 統(tǒng)計(jì)</b>
68、</p><p><b> 排序</b></p><p><b> 7.總結(jié):</b></p><p> 成功之處:此系統(tǒng)程序雖然簡(jiǎn)單,卻集結(jié)了基本的管理功能。刪除,存儲(chǔ),統(tǒng)計(jì)等功能還是較為成功的。特別是人事檔案的統(tǒng)計(jì)管理功能,使煩瑣的工作變得簡(jiǎn)單輕松。</p><p> 不足之處:由于我們
69、水平和時(shí)間有限,難免有不足和差強(qiáng)人意的地方。尤其是對(duì)于系統(tǒng)應(yīng)該配以保密性的設(shè)置,可是由于我知識(shí)積累不夠,做不出來(lái)。還請(qǐng)遲老師海涵。</p><p> 兩周的數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)結(jié)束了,在這幾天的時(shí)間里,我自己獨(dú)立完成了一個(gè)程序從構(gòu)思結(jié)構(gòu),到編寫代碼,然后上機(jī)調(diào)試運(yùn)行的過程,感覺自己收獲很大。通過解決一個(gè)又一個(gè)的問題,熟悉了C++語(yǔ)言的應(yīng)用。</p><p> 在設(shè)計(jì)過程中,在編程時(shí)條
70、理清晰是至關(guān)重要的。主函數(shù),函數(shù),成員函數(shù)之間的層次關(guān)系,調(diào)用關(guān)系一定要有一個(gè)全面的把握,尤其要體會(huì)類的封裝性。另外很重要的一點(diǎn)就是一定要對(duì)鏈表的五種操作熟練的掌握。我理解了對(duì)于一個(gè)較大的程序,不可能一次編寫出一個(gè)較大的系統(tǒng),通常要采取自頂向下的設(shè)計(jì)思想,先設(shè)計(jì)主函數(shù),再通過完善一個(gè)個(gè)的功能模塊來(lái)完成程序的設(shè)計(jì)過程,在設(shè)計(jì)過程中要充分理解整個(gè)程序的設(shè)計(jì)思路,采用逐步細(xì)化的方式來(lái)完成整個(gè)程序。在編譯,鏈接,調(diào)試的過程中一定要有耐心。因?yàn)橐?/p>
71、個(gè)程序中會(huì)有很多小的錯(cuò)誤,甚至有的問題要幾個(gè)小時(shí)才能解決。遇到問題,一定要全面分析,有時(shí)候還要向同學(xué)請(qǐng)教。總得來(lái)說(shuō),編程時(shí)極需要耐心的。</p><p><b> 參考文獻(xiàn)</b></p><p> C語(yǔ)言大學(xué)實(shí)用教程 電子工業(yè)出版社 </p><p> 2、C++程序設(shè)計(jì)教程(第二版)高等教育出版社 </p><
72、p> 3、C語(yǔ)言程序設(shè)計(jì)教程 北京大學(xué)出版社</p><p> 4、C語(yǔ)言程序設(shè)計(jì)實(shí)例精粹 電子工業(yè)出版社 </p><p><b> 5、 </b></p><p> 6、陳天華編.面向?qū)ο蟪绦蛟O(shè)計(jì)與Visual C++6.0教程[M].北京:清華大學(xué)出版社,2006</p><p> 程序清單:#
73、include<iostream></p><p> #include<string></p><p> #include<fstream></p><p> #include<iomanip></p><p> using namespace std;</p><p
74、> /*****************************************************/</p><p> /*定義一個(gè)員工信息的結(jié)構(gòu)體Worker_pay*/</p><p> struct Worker_pay</p><p><b> {</b></p><p> int
75、num; //員工編號(hào)</p><p> string name; //員工姓名</p><p> int age; //年齡</p><p> string sex; //性別</p><p> string department; //
76、部門</p><p> string title; //職務(wù)</p><p> int eduage; //學(xué)歷(年)</p><p> float wage; //工資</p><p> int day; //缺勤天數(shù)</p><p
77、> float allowance; //扣發(fā)工資</p><p> float tax; //個(gè)人所得稅</p><p> float real_wage; //實(shí)發(fā)數(shù)</p><p> Worker_pay * next; //鏈表結(jié)點(diǎn)的指針域</p><p><b>
78、; };</b></p><p> /*****************************************************/</p><p> /*定義一個(gè)員工類Worker*/</p><p> class Worker</p><p><b> {</b></p>
79、;<p> protected:</p><p> Worker_pay * head;//鏈表的頭結(jié)點(diǎn)指針</p><p> // Worker_pay * p;</p><p><b> public:</b></p><p> Worker(){head=NULL;}
80、 //構(gòu)造函數(shù)</p><p> void Display(Worker_pay *); //輸出函數(shù) </p><p> Worker_pay * Find(int); //查找函數(shù)</p><p> Worker_pay * Find(string,string);</p><p> Worker
81、_pay * Find(string);</p><p> int ListCount(); //統(tǒng)計(jì)員工人數(shù)函數(shù) </p><p> void AddItem(int,string,int,string,string,string,int,float,int,float); //創(chuàng)建鏈表并鏈表的插入</p&g
82、t;<p> void RemoveItem(int); //刪除函數(shù)</p><p> void ReplaceItem(int); //修改函數(shù)</p><p> void ListL(); //遍歷函數(shù) </p><p&g
83、t; void Search(int); //查找并輸出某個(gè)員工信息函數(shù)</p><p> void Search(string,string);</p><p> void Search(string);</p><p> void Listavg(string);</p><p> void Re
84、al_wage(float,float); //計(jì)算函數(shù)</p><p> void Recordinfo(int,string,int,string,string,string,int,float,int,float,float,float); //存儲(chǔ)函數(shù)</p><p> void paixu(string);</p><p> void lo
85、ad();</p><p> void sort_data();</p><p><b> };</b></p><p> //Worker_pay *t;</p><p> /*****************************************************/</p>&l
86、t;p> //功能:用于統(tǒng)計(jì)員工人數(shù)</p><p> int Worker::ListCount()</p><p><b> {</b></p><p> if(!head) </p><p><b> return 0;</b></p><p> Wo
87、rker_pay * p=head;</p><p><b> int n=0;</b></p><p><b> while(p)</b></p><p><b> {</b></p><p><b> n++;</b></p>&
88、lt;p> p=p->next;</p><p><b> }</b></p><p><b> return n;</b></p><p><b> }</b></p><p> /************************************
89、*****************/</p><p> //功能:在鏈表中查找員工的編號(hào)</p><p> Worker_pay * Worker::Find(int num)</p><p><b> {</b></p><p> if(ListCount==0)</p><p><
90、;b> {</b></p><p> cout<<"列表為空,請(qǐng)先輸入數(shù)據(jù)!!!"<<endl;</p><p> return NULL;</p><p><b> }</b></p><p> Worker_pay * p=head;</p
91、><p><b> while(p)</b></p><p><b> {</b></p><p> if(p->num==num) </p><p><b> break;</b></p><p> p=p->next;</p&
92、gt;<p><b> }</b></p><p><b> if(!p)</b></p><p><b> {</b></p><p> cout<<"錯(cuò)誤,找不到該信息!!!"<<endl;</p><p>
93、 return NULL;</p><p><b> }</b></p><p><b> return p;</b></p><p><b> }</b></p><p> /*********************************************
94、********/</p><p> /*Worker_pay * Worker::Find(string department)</p><p><b> {</b></p><p> if(ListCount==0)</p><p><b> {</b></p><p
95、> cout<<"列表為空,請(qǐng)先輸入數(shù)據(jù)!!!"<<endl;</p><p> return NULL;</p><p><b> }</b></p><p> Worker_pay * p=head;</p><p><b> while(p)&l
96、t;/b></p><p><b> {</b></p><p> if(p->department==department) </p><p> //Worker1.Listavg(department);</p><p><b> break;</b></p>
97、<p> p=p->next;</p><p><b> }</b></p><p><b> if(!p)</b></p><p><b> {</b></p><p> cout<<"錯(cuò)誤,找不到該信息!!!"<
98、;<endl;</p><p> return NULL;</p><p><b> }</b></p><p><b> return p;</b></p><p><b> }*/</b></p><p> /************
99、*****************************************/</p><p> //功能:創(chuàng)建鏈表及鏈表的插入</p><p> void Worker::AddItem(int num1,string name1,int age1,string sex1,string department1,string title1,int eduage1,float wa
100、ge1,int day1,float allowance1)</p><p><b> {</b></p><p><b> if(!head)</b></p><p><b> {</b></p><p> head=new Worker_pay;</p>
101、<p> head->num=num1;</p><p> head->name=name1;</p><p> head->age=age1;</p><p> head->sex=sex1;</p><p> head->department=department1;</p>
102、;<p> head->title=title1;</p><p> head->eduage=eduage1;</p><p> head->wage=wage1;</p><p> head->day=day1;</p><p> head->allowance=allowance1;
103、</p><p> head->next=NULL;</p><p><b> return;</b></p><p><b> }</b></p><p> Worker_pay * t=head;</p><p> while(t&&t-&
104、gt;num!=num1)</p><p> t=t->next;</p><p><b> if(t)</b></p><p><b> {</b></p><p> cout<<"操作失??;員工編號(hào)為"<<num1<<&quo
105、t;的信息已經(jīng)存在!!!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> Worker_pay * p=head;</p><p> while(p->next)</p>&l
106、t;p> p=p->next;</p><p> Worker_pay * p1=new Worker_pay;</p><p> p1->num=num1;</p><p> p1->name=name1;</p><p> p1->age=age1;</p><p> p1
107、->sex=sex1;</p><p> p1->department=department1;</p><p> p1->title=title1;</p><p> p1->eduage=eduage1;</p><p> p1->wage=wage1;</p><p> p
108、1->day=day1;</p><p> p1->allowance=allowance1;</p><p> p1->next=NULL;</p><p> p->next=p1;</p><p><b> return;</b></p><p><b&g
109、t; }</b></p><p> /*****************************************************/</p><p> //功能:從鏈表中刪除一個(gè)結(jié)點(diǎn)</p><p> void Worker::RemoveItem(int num)</p><p><b> {&
110、lt;/b></p><p> Worker_pay * t=Find(num);</p><p><b> if(!t)</b></p><p><b> return;</b></p><p> Worker_pay * p=head;</p><p>
111、if(head=t)</p><p><b> {</b></p><p> head=head->next;</p><p><b> delete p;</b></p><p> cout<<"成功刪除員工編號(hào)為"<<num<<
112、;"的信息!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> while(p->next!=t)</p><p> p=p->next;</p><p&g
113、t; Worker_pay * p1=p->next;</p><p> p->next=p1->next;</p><p> delete p1;</p><p> cout<<"成功刪除員工編號(hào)為"<<num<<"的信息!"<<endl;</p
114、><p><b> return;</b></p><p><b> }</b></p><p> /*****************************************************/</p><p> //功能:修改員工信息</p><p>
115、 void Worker::ReplaceItem(int num)</p><p><b> {</b></p><p> Worker_pay * p=Find(num);</p><p><b> if(!p)</b></p><p><b> return;</b&g
116、t;</p><p> cout<<"請(qǐng)重新輸入相應(yīng)信息"<<endl;</p><p> cout<<"員工編號(hào):";</p><p> cin>>p->num;</p><p> cout<<"員工姓名:"
117、;</p><p> cin>>p->name;</p><p> cout<<"年齡:";</p><p> cin>>p->age;</p><p> cout<<"性別:";</p><p> cin&g
118、t;>p->sex;</p><p> cout<<"部門:";</p><p> cin>>p->department;</p><p> cout<<"職務(wù):";</p><p> cin>>p->title;</
119、p><p> cout<<"學(xué)歷(年):";</p><p> cin>>p->eduage;</p><p> cout<<"工資(元):";</p><p> cin>>p->wage;</p><p> co
120、ut<<"月缺勤天數(shù):";</p><p> cin>>p->day;</p><p> //cout<<"津貼(元):";</p><p> p->allowance=p->wage*p->day*0.01;</p><p> //c
121、in>>* allowance;</p><p><b> return;</b></p><p><b> }</b></p><p> /*****************************************************/</p><p> //功能:
122、輸出員工信息</p><p> void Worker::Display(Worker_pay * p)</p><p><b> {</b></p><p> cout<<setw(3)<<p->num<<setw(9)<<p->name<<setw(9)<&
123、lt;p->age<<setw(5)<<p->sex<<setw(5)<<p->department<<setw(5)</p><p> <<p->title<<setw(5)<<p->eduage<<setw(6)<<p->wage<<setw
124、(6)<<p->day<<setw(8)<<p->allowance<<setw(4)<<p->tax<<setw(8)<<p->real_wage<<endl;</p><p><b> return;</b></p><p><b>
125、 }</b></p><p> /*****************************************************/</p><p><b> //功能:遍歷鏈表</b></p><p> void Worker::ListL()</p><p><b> {&l
126、t;/b></p><p> float sum=0;</p><p> float aver=0;</p><p><b> int n=0;</b></p><p> if(ListCount==0)</p><p><b> {</b></p>
127、;<p> cout<<"當(dāng)前列表為空,請(qǐng)先輸入數(shù)據(jù)!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> Worker_pay * p=head;</p><p>
128、; cout<<"**********************************員工信息**************************************"<<endl;</p><p> cout<<"共有"<<ListCount()<<"個(gè)員工信息"<<end
129、l;</p><p> cout<<"員工編號(hào) 員工姓名 年齡 性別 部門 職務(wù) 學(xué)歷 工資 缺勤(天) 罰金 個(gè)稅 實(shí)發(fā)數(shù)"<<endl;</p><p> while(p!=NULL)</p><p><b> {</b></p><p> Display(p);&
130、lt;/p><p><b> n++;</b></p><p> sum+=p->wage;</p><p> p=p->next;</p><p><b> }</b></p><p> aver=sum/n;</p><p>
131、cout<<"員工平均薪水:"<<aver<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> /************************************************
132、*****/</p><p> //功能:查找并輸出指定員工信息</p><p> void Worker::Search(int num)</p><p><b> {</b></p><p> cout<<"Search......"<<endl;</p>
133、;<p> Worker_pay * p =Find(num);</p><p><b> if(p)</b></p><p><b> {</b></p><p> cout<<"員工編號(hào)為"<<num<<"的員工工資信息:"
134、;<<endl;</p><p> cout<<"員工編號(hào) 員工姓名 年齡 性別 部門 職務(wù) 學(xué)歷 工資 缺勤(天) 罰金 個(gè)稅 實(shí)發(fā)數(shù)"<<endl;</p><p> Display(p);</p><p><b> }</b></p><p> cou
135、t<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> /*****************************************************/</p><p> //功能:程序內(nèi)部函數(shù)計(jì)算
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人事檔案管理系統(tǒng)課程設(shè)計(jì)
- 人事檔案管理課程設(shè)計(jì)
- 企業(yè)人事檔案管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 人事檔案管理課程設(shè)計(jì)報(bào)告
- 軟件工程概論課程設(shè)計(jì)---企業(yè)人事檔案管理系統(tǒng)
- 人事檔案管理
- 人事檔案管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 淺論人事檔案管理
- 淺談人事檔案管理
- java人事檔案管理
- 淺論人事檔案管理
- 淺談人事檔案管理
- 人事檔案管理體會(huì)
- 淺議人事檔案管理
- 企業(yè)人事檔案管理系統(tǒng).txt
- 企業(yè)人事檔案管理系統(tǒng).txt
- 人事檔案管理系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---企業(yè)人事檔案管理系統(tǒng)
- 企業(yè)人事檔案管理表格
- 淺談企業(yè)人事檔案管理
評(píng)論
0/150
提交評(píng)論