人事檔案管理系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論