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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  編號: </p><p>  數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計</p><p><b>  說明書</b></p><p>  題 目: 人事檔案管理系統(tǒng) </p><p>  學(xué)  院: 計算機科學(xué)與工程學(xué)院 </p><p>

2、;  專 業(yè): 計算機科學(xué)與技術(shù) </p><p>  學(xué)生姓名: </p><p>  學(xué) 號: </p><p>  指導(dǎo)教師: </p><p>  2013年 9月26號</p><p><

3、;b>  摘 要</b></p><p>  電腦已經(jīng)深入到我們?nèi)粘9ぷ骱蜕畹姆椒矫婷?,比如文字處理、信息管理、輔助設(shè)計、圖形圖像處理、教育培訓(xùn)以及游戲娛樂等。Windows系統(tǒng)的推出使電腦從高雅的學(xué)術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無須經(jīng)過特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不

4、開發(fā)適合自己特殊需求的軟件。 隨著企事業(yè)單位的發(fā)展,人員會越來越多,少則幾十人、多則上萬人。例如一個企業(yè)分很多部門,每個部門又分為許多科或室等,而其下又分為各級領(lǐng)導(dǎo)和員工。用筆和紙傳統(tǒng)的手工管理檔案,這中管理方式存在著不易更新、不易存放、不安全、容易丟失、難以備份等重大缺陷,管理起來效率低下而且很可能造成管理上的混亂。而自己建立簡單的電子文檔對信息管理進(jìn)行管理雖然克服了以上的缺點,但查詢效率較低,特別是當(dāng)數(shù)據(jù)量十分龐大時,劣勢尤其明顯

5、。因此開發(fā)一個既可以存儲信息,又可以進(jìn)行更新、查詢、管理等功能,同時價格又能為廣大消費者接受的多功能電子人事信息管理系統(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è)計 …………………………

7、………………4</p><p>  3.1類的設(shè)計及分析 …………………………………………… …4</p><p>  3.2各功能的設(shè)計 …………………………………………… …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和人才的重視,企業(yè)對人力資源管理重要性的認(rèn)識逐漸深化,人才的

10、全球化競爭使企業(yè)的人力資源管理面臨前所未有的挑戰(zhàn)。在新形勢下,人事檔案管理系統(tǒng)是一個企業(yè)單位不可缺少的部分,是適應(yīng)現(xiàn)代企業(yè)制度,推動企業(yè)人力資源管理走向科學(xué)化、規(guī)范化、自動化的必要條件;是應(yīng)對挑戰(zhàn)、適應(yīng)環(huán)境變化、提高企業(yè)管理效率、提升核心競爭力的關(guān)鍵措施。它所包含內(nèi)容對于企業(yè)的決策者和管理者來說至關(guān)重要。目前市場上的人事管理系統(tǒng)很多,但要找到一款真正稱心、符合企業(yè)實際情況的并不容易。由于存在這樣那樣的不足,使企業(yè)浪費了大量的人力、物力等

11、大量資源,難以真正提升企業(yè)人力資源的管理水平,提高工作效率及降低管理成本的效果也不明顯。因此,為了加快公司信息化的步伐,提高公司的管理水平,并在激烈的社會競爭中立于不敗之地,建立及完善人力資源管理系統(tǒng)已變得十分必要和迫切。在社會中,人力資源是企事業(yè)單位的核心,而對它的管理及管理軟件的選用則是評價管理者管理水平的一個重要標(biāo)志。因此人力資源管理工作是企事業(yè)單位工作的一項重要任務(wù),是提高管理質(zhì)量和保障企事業(yè)單位生產(chǎn)目標(biāo)實現(xiàn)的一個重要保證。因此

12、,人力資源管理的內(nèi)容對企事業(yè)單位的決策者和管理</p><p>  根據(jù)需求,本人事檔案管理系統(tǒng)主要分系統(tǒng)管理、信息登記、信息刪除、信息查詢、信息修改、信息按順序輸出、報表信息輸出、系統(tǒng)簡介等八大部分。具體要求實現(xiàn):對業(yè)務(wù)模塊相關(guān)信息的添加,修改,刪除以及對人員調(diào)動的管理;對考勤信息設(shè)置、管理和查詢;對工資信息設(shè)置;部門,員工工資統(tǒng)計查詢等等。</p><p><b>  1

13、系統(tǒng)概述 </b></p><p>  本人事檔案管理系統(tǒng)主要分系統(tǒng)管理、信息登記、信息刪除、信息查詢、信息修改、信息按順序輸出、報表信息輸出、系統(tǒng)簡介等八大部分。具體要求實現(xiàn):對業(yè)務(wù)模塊相關(guān)信息的添加,修改,刪除以及對人員調(diào)動的管理;對考勤信息設(shè)置、管理和查詢;對工資信息設(shè)置;部門,員工工資統(tǒng)計查詢等等。</p><p><b>  2 需求分析</b>

14、;</p><p><b>  2.1 系統(tǒng)需求</b></p><p>  在信息技術(shù)高速發(fā)展的今天,傳統(tǒng)的數(shù)據(jù)統(tǒng)計方式在處理龐大繁雜的信息量時顯得力不從心,于是,人們對于運用計算機來輔助和管理工作的需求正在逐步提高。</p><p>  隨著各個企業(yè)業(yè)務(wù)的逐步擴(kuò)展,企業(yè)的員工人數(shù)也在迅速增加,由于管理人員水平有限,導(dǎo)致某些員工紀(jì)錄管理并不完

15、善,特別是繁雜的員工工資管理紀(jì)錄,不易查詢、修改,極易導(dǎo)致錯誤,而落后的員工管理方法隨著社會的日益競爭,必將被淘汰。</p><p>  由計算機來管理龐大而繁雜的企業(yè)員工紀(jì)錄是非常合適的,不僅查詢和修改方便,并且效率高,速度快,完全能夠滿足現(xiàn)代化企業(yè)管理的需要,同時也更利于實現(xiàn)全面辦公自動化。因此開發(fā)一套企業(yè)員工工資管理系統(tǒng)軟件勢在必行。</p><p>  企業(yè)員工工資管理系統(tǒng)是企業(yè)管

16、理系統(tǒng)中的一個重要組成部分,它為企業(yè)合理的員工調(diào)配與編制,以及有關(guān)問題的決策能夠提供各種必要的基礎(chǔ)數(shù)據(jù),是公司管理現(xiàn)代化的一個重要方面。利用微機對龐雜而繁鎖的員工工資系統(tǒng)實現(xiàn)自動化管理,是計算機公司信息管理系統(tǒng)的重要內(nèi)容。我在陳勇老師指導(dǎo)下開發(fā)了《企業(yè)員工工資管理系統(tǒng)》。</p><p>  《企業(yè)員工工資管理系統(tǒng)》旨在為商業(yè)人士及在社會團(tuán)體、機構(gòu)中負(fù)責(zé)管理關(guān)系的人士提供一個功能全面、使用方便的工資管理系統(tǒng),以替

17、代傳統(tǒng)的手工管理工資紀(jì)錄,同時利用先進(jìn)信息技術(shù)為用戶提供一些更為方便實用的功能。 </p><p>  本系統(tǒng)實現(xiàn)五種基本功能:輸入員工工資信息、刪除員工工資信息、修改員工工資信息、查找員工工資信息、列出所有員工工資信息。所以該工資管理系統(tǒng)可以分為5個模塊,分別為輸入模塊、刪除模塊、修改模塊、查找模塊、列表模塊,每個模塊都有其對應(yīng)的功能以及其設(shè)計。</p><p><b> ?。?/p>

18、1)輸入模塊</b></p><p>  輸入模塊的功能是創(chuàng)建存儲職工工資信息的存儲系統(tǒng)以及添加某職工的工資信息。為實現(xiàn)輸入的功能,有兩個方面的任務(wù):定義結(jié)構(gòu)體以及建立鏈表。</p><p><b> ?。?)刪除模塊</b></p><p>  刪除模塊的功能是刪除某職工的工資信息。</p><p><

19、;b> ?。?)修改模塊</b></p><p>  修改模塊的功能是修改某職工的部分工資信息。</p><p><b>  (4)查找模塊</b></p><p>  查找模塊的功能就是:輸出指定編號職工的工資信息;輸出姓名和部門聯(lián)合查詢的職工工資信息。</p><p><b> ?。?)統(tǒng)

20、計模塊</b></p><p>  統(tǒng)計模塊的功能是:統(tǒng)計全企業(yè)總?cè)藬?shù)及各部門的人數(shù);統(tǒng)計企業(yè)的平均工資及部門的平均工資。</p><p><b> ?。?)排序模塊</b></p><p>  排序的模塊的功能是:對全企業(yè)的信息表按受教育年限及工資進(jìn)行遞增排序。</p><p><b>  (7)

21、列表模塊</b></p><p>  列表模塊的功能是輸出全體職工的工資信息。</p><p><b>  程序具體功能介紹:</b></p><p>  2.1.1 功能介紹</p><p>  現(xiàn)在,需要存儲這些人員的人事檔案信息:員工編號, 員工姓名 ,年齡 ,性別 ,部門 ,職務(wù), 受教育年限 ,工資

22、 ,缺勤(天) ,罰金, 個稅 ,實發(fā)數(shù)。其中,人員編號唯一,不能重復(fù)。</p><p>  添加刪除功能:能根據(jù)學(xué)企業(yè)人事的變動情況,添加刪除記錄;</p><p>  查詢功能:能根據(jù)編號及姓名和部門的復(fù)合查詢進(jìn)行查詢;</p><p>  編輯功能(高級):根據(jù)查詢對相應(yīng)的記錄進(jìn)行修改,并存儲;</p><p>  統(tǒng)計功能:能根據(jù)多種

23、參數(shù)進(jìn)行人員的統(tǒng)計及平均工資,統(tǒng)計要求同時顯示被統(tǒng)計者的信息;</p><p>  排序功能:按照受教育年限、工資進(jìn)行排序;</p><p>  保存功能:能對輸入的數(shù)據(jù)進(jìn)行相應(yīng)的存儲;</p><p><b>  2 .2 系統(tǒng)框圖</b></p><p>  系統(tǒng)框架圖在本設(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平臺上運行的,主要運行C及C++等語言。</p><p><b>  3

25、詳細(xì)設(shè)計</b></p><p><b>  具體系統(tǒng)設(shè)計</b></p><p>  3.1 結(jié)構(gòu)體及類的設(shè)計與分析</p><p>  3.1.1:員工結(jié)構(gòu)體的建立</p><p>  struct Worker_pay</p><p><b>  {</b>

26、</p><p>  int num; //員工編號</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; //個人所得稅</p><p>  float real_wage; //實發(fā)數(shù)</p><p>  Worker_pay * next; //鏈表結(jié)點的指針域&l

29、t;/p><p><b>  };</b></p><p>  3.1.2:員工類的建立</p><p>  class Worker</p><p><b>  {</b></p><p>  protected:</p><p>  Worker_pa

30、y * head; //鏈表的頭結(jié)點指針</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)計員工人數(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); //查找并輸出某個員工信息函數(shù)</p><p>  void Real_wage(float,float); //計算函數(shù)</p><p>  void Recordinfo(int,string,int,string,string,string,float,flo

34、at,float,float); //存儲函數(shù)</p><p><b>  };</b></p><p>  3.1.3:相關(guān)的成員函數(shù)</p><p>  表1 Worker類說明表</p><p>  3.1.4非成員函數(shù)的設(shè)計與分析</p><p>  表2 非成員函數(shù)說明表</p&g

35、t;<p>  3.2:各功能模塊設(shè)計:</p><p> ?。?)、新建數(shù)據(jù)文件模塊:</p><p><b>  <1>、數(shù)據(jù)結(jié)構(gòu);</b></p><p>  看各個數(shù)據(jù)信息,員工編號(int), 員工姓名 (sting),年齡 (int),性別 (string),部門(string) ,職務(wù)(string),

36、受教育年限 (int),工資 (string),缺勤(天)(int) ,罰金(int), 個稅 (int),實發(fā)數(shù)(int),在文件中以文本形式存放,每條記錄對應(yīng)一個人員的信息,可以方便信息的管理;而數(shù)據(jù)讀進(jìn)內(nèi)存中時,可以以結(jié)構(gòu)體的形式,每一個結(jié)構(gòu)體包含了一個人員的全部信息,多的人員的信息組成了一個結(jié)構(gòu)體數(shù)組。定義見結(jié)構(gòu)體及類的設(shè)計與分析</p><p><b>  (2)、追加模塊:</b>

37、;</p><p><b>  〈1〉[需求分析]</b></p><p>  該模塊的功能是擁護(hù)需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來的文件中去,其中輸入號碼是要防止號碼重復(fù),重復(fù)時報告錯誤,重新輸入。為方便用戶管理和查看,該模塊采用的方式是用先把原來文件中的數(shù)據(jù)讀入內(nèi)存,保存在內(nèi)存中,然后在內(nèi)存中的數(shù)據(jù)后面增加新的數(shù)據(jù),操作完成后用寫的方式打開文件,用覆

38、蓋的方式寫入。</p><p><b>  〈2〉流程圖:略;</b></p><p>  〈3〉對應(yīng)程序:void AddNew() </p><p><b> ?。?)修改模塊:</b></p><p>  <1>[需求分析:]</p>

39、;<p>  該模塊的功能是顯示所有信息,考慮到記錄較多,采用分屏顯示,顯示完所有的記錄后,由用戶輸入需要修改的人員的號碼,查找成功后,顯示查找結(jié)果,并詢問擁護(hù)修改人員的哪部分記錄,根據(jù)用戶選擇修改相應(yīng)的信息,然后保存修改后的結(jié)果;</p><p><b>  <2>流程圖:</b></p><p>  Y Y

40、 N</p><p>  Y N </p><p>  <3>對應(yīng)的函數(shù):void DoMotify();</p><p><b>  (4)刪除模塊

41、:</b></p><p>  〈1〉[需求分析]:</p><p>  該模塊的運行方式與修改模塊類似,首先分屏顯示所有人員的記錄,顯示完所有的記錄后,由用戶輸入要刪除的人員的號碼,根據(jù)號碼查找相應(yīng)的記錄并將結(jié)果顯示出來,經(jīng)用戶確認(rèn)后刪除,刪除的方法是將文件中的數(shù)據(jù)讀入內(nèi)存,賦給相應(yīng)的結(jié)構(gòu)體,并將結(jié)構(gòu)體數(shù)組中將刪除的后面的數(shù)據(jù)賦給前一個結(jié)構(gòu)體,然后將相應(yīng)數(shù)據(jù)寫入文件并保存;&

42、lt;/p><p>  〈2〉流程圖:類似添加的流程</p><p>  <3>對應(yīng)函數(shù): void DoDelete(); </p><p> ?。?)、按編號搜索:</p><p>  〈1〉[需求分析]:</p><p>  該模塊的功能是按照輸入的人員的編號查找對應(yīng)的記錄,并將其顯示,查找成功以后,增加

43、刪除和修改等功能,其中刪除和修改功能可以通過調(diào)用相應(yīng)的函數(shù)來實現(xiàn)。</p><p><b>  〈2〉流程圖;</b></p><p>  (6)按姓名和部門搜索。</p><p>  <1>需求分析:該模塊的功能是按照輸入的人員的姓名和部門查找對應(yīng)的記錄,并將其顯示,查找成功以后,增加刪除和修改等功能,其中刪除和修改功能可以通過調(diào)

44、用相應(yīng)的函數(shù)來實現(xiàn)。</p><p>  <2>該模塊的結(jié)構(gòu)與按號碼查詢的結(jié)構(gòu)基本相同;</p><p>  <3>對應(yīng)函數(shù):void DoFindbumen();</p><p><b> ?。?)輸出模塊;</b></p><p><b>  需求分析:</b></

45、p><p>  該模塊的功能是顯示所有保存在文件中的記錄。</p><p><b>  〈2〉、流程圖;略</b></p><p>  <3>對應(yīng)函數(shù):void List(); </p><p><b>  (8)、排序模塊;</b></p><p>  〈1〉、[需

46、求分析];</p><p>  該模塊的功能是要求將記錄按照年齡或者來院時間進(jìn)行排序,總體結(jié)構(gòu)是先用n=load()函數(shù)將文件中的數(shù)據(jù)調(diào)入內(nèi)存,然后按照選擇法排序,并將結(jié)果顯示出來,然后將排序后的結(jié)果保存。</p><p><b>  <2>流程圖;</b></p><p><b>  略。</b></p

47、><p>  <3>對應(yīng)函數(shù): void sort_data()</p><p><b>  (9)、統(tǒng)計模塊</b></p><p>  〈1〉、[需求分析];</p><p>  該模塊的功能是按照用戶的要求統(tǒng)計出滿足符合條件的所有記錄的個數(shù),并將滿足條件的記錄顯示出來。該模塊是在其他模塊進(jìn)行的同時進(jìn)行的,沒

48、有單獨列出,沒有涉及到文件的保存。</p><p><b>  〈2〉流程圖;無;</b></p><p>  〈3〉對應(yīng)函數(shù):包含在其他函數(shù)內(nèi)</p><p>  4 所遇到的問題和分析解決</p><p> ?。?)設(shè)計初期,先完成初步構(gòu)思,寫出主函數(shù)。然后對主函數(shù)所涉及的各個模塊進(jìn)行編程,將各個模塊利用指針和鏈表

49、聯(lián)系起來。在環(huán)境中進(jìn)行調(diào)試,應(yīng)一邊編譯,一邊調(diào)試,并且要一個模塊一個模塊的調(diào)試。直至此模塊完全沒有錯誤時,在進(jìn)入下一模塊的調(diào)試。不能直接輸入全部的代碼一次性調(diào),這樣錯誤會很多,并且不易找出和修改。在完成程序的編譯鏈接后,要用多組數(shù)據(jù)進(jìn)行審查,確保做到系統(tǒng)無誤。</p><p>  設(shè)計過程中,不應(yīng)忽視環(huán)境提示的警告,有時程序運行不正確與警告也有很大的關(guān)系。這次設(shè)計中遇到很多問題都是提示類型不匹配,這時就要認(rèn)真檢查

50、前面的代碼,及時改正并且認(rèn)真仔細(xì),杜絕此類錯再次發(fā)生。</p><p>  編寫代碼時應(yīng)該少用全局變量,全局變量在編寫試看似定義次數(shù)少,很方便。但全局變量出錯幾率較大,且不易修改,每次修改時都要全面考慮,所以應(yīng)避免用到。</p><p>  程序調(diào)試中碰到的錯誤可以使自己學(xué)到知識。養(yǎng)成良好的編程習(xí)慣,可以節(jié)省很多時間,避免很多不必要的錯誤。</p><p> ?。?

51、)在編輯完整個程序后,進(jìn)行調(diào)試階段總是會數(shù)顯head無定義。</p><p>  解決辦法:再類的定義是忘記聲明指針Worker_pay *head;。</p><p>  (3)在寫讀入函數(shù)時,總是不能讀入數(shù)據(jù),經(jīng)同學(xué)檢查發(fā)現(xiàn)沒有申請新的空間存放數(shù)據(jù)。</p><p>  解決辦法:在讀入txt文件時,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)建存儲職工工資信息的存儲系統(tǒng)以及添加某職工的工資信息。</p><p>  算法思路:先定義一個結(jié)構(gòu)體Wo

53、rker_pay,通過從表尾插入的方法來建立鏈表。首先要先設(shè)立一個頭指針(head)來存放鏈表的首地址,然后,不斷用new運算符生成一個新的結(jié)點,將這個結(jié)點鏈入已有的鏈表尾部;如果鏈表中還沒有結(jié)點,則這個新結(jié)點將是首結(jié)點,否則,將新結(jié)點的地址賦給原有鏈表的尾結(jié)點的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<<"操作失??;員工編號為"<<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)建存儲職工工資信息的存儲系

60、統(tǒng)以及添加某職工的工資信息。</p><p>  算法思路:運用算法課本上的直接選擇排序的算法,與課本的不同之處在于,本程序是用指針進(jìn)行排序的,課本使用的數(shù)組。</p><p>  直接選擇排序的比較次數(shù)與文件初始狀態(tài)無關(guān),在第i趟排序中選出最小的記錄,需做n-i次比較,因此總的次數(shù)為:O(N*N),文件初始狀態(tài)為正序時,移動0;最壞情況每趟排序都要交換操作,總的移動次數(shù)是3(n-1)。直

61、接選擇排序的平均時間復(fù)雜度為O(n平方)。算法中增加了一個輔助空間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<<"員工編號 員工姓名 年齡 性別 部門 職務(wù) 學(xué)歷 工資 缺勤(天) 罰金 個稅 實發(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 用戶手冊及測試結(jié)果</p><p><b>  6.1用戶手冊</b></p><p>  運行程序時,界面剛開始出現(xiàn)一個主菜單及提示信息,用戶通過在鍵盤上輸入來選擇某個功能。當(dāng)用戶選擇了某個功能,系統(tǒng)將跳轉(zhuǎn)到所選擇的功能界面,用戶將可

67、以根據(jù)提示信息來使用該功能,當(dāng)用戶通過鍵盤輸入編號為-1時,系統(tǒng)將返回主界面。</p><p><b>  6.2 測試結(jié)果</b></p><p><b>  1,主菜單</b></p><p>  2,輸入,添加,刪除,修改,查詢:</p><p><b>  統(tǒng)計</b>

68、</p><p><b>  排序</b></p><p><b>  7.總結(jié):</b></p><p>  成功之處:此系統(tǒng)程序雖然簡單,卻集結(jié)了基本的管理功能。刪除,存儲,統(tǒng)計等功能還是較為成功的。特別是人事檔案的統(tǒng)計管理功能,使煩瑣的工作變得簡單輕松。</p><p>  不足之處:由于我們

69、水平和時間有限,難免有不足和差強人意的地方。尤其是對于系統(tǒng)應(yīng)該配以保密性的設(shè)置,可是由于我知識積累不夠,做不出來。還請遲老師海涵。</p><p>  兩周的數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計結(jié)束了,在這幾天的時間里,我自己獨立完成了一個程序從構(gòu)思結(jié)構(gòu),到編寫代碼,然后上機調(diào)試運行的過程,感覺自己收獲很大。通過解決一個又一個的問題,熟悉了C++語言的應(yīng)用。</p><p>  在設(shè)計過程中,在編程時條

70、理清晰是至關(guān)重要的。主函數(shù),函數(shù),成員函數(shù)之間的層次關(guān)系,調(diào)用關(guān)系一定要有一個全面的把握,尤其要體會類的封裝性。另外很重要的一點就是一定要對鏈表的五種操作熟練的掌握。我理解了對于一個較大的程序,不可能一次編寫出一個較大的系統(tǒng),通常要采取自頂向下的設(shè)計思想,先設(shè)計主函數(shù),再通過完善一個個的功能模塊來完成程序的設(shè)計過程,在設(shè)計過程中要充分理解整個程序的設(shè)計思路,采用逐步細(xì)化的方式來完成整個程序。在編譯,鏈接,調(diào)試的過程中一定要有耐心。因為一

71、個程序中會有很多小的錯誤,甚至有的問題要幾個小時才能解決。遇到問題,一定要全面分析,有時候還要向同學(xué)請教。總得來說,編程時極需要耐心的。</p><p><b>  參考文獻(xiàn)</b></p><p>  C語言大學(xué)實用教程 電子工業(yè)出版社 </p><p>  2、C++程序設(shè)計教程(第二版)高等教育出版社 </p><

72、p>  3、C語言程序設(shè)計教程 北京大學(xué)出版社</p><p>  4、C語言程序設(shè)計實例精粹 電子工業(yè)出版社 </p><p><b>  5、 </b></p><p>  6、陳天華編.面向?qū)ο蟪绦蛟O(shè)計與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>  /*定義一個員工信息的結(jié)構(gòu)體Worker_pay*/</p><p>  struct Worker_pay</p><p><b>  {</b></p><p>  int

75、num; //員工編號</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; //個人所得稅</p><p>  float real_wage; //實發(fā)數(shù)</p><p>  Worker_pay * next; //鏈表結(jié)點的指針域</p><p><b>

78、;  };</b></p><p>  /*****************************************************/</p><p>  /*定義一個員工類Worker*/</p><p>  class Worker</p><p><b>  {</b></p>

79、;<p>  protected:</p><p>  Worker_pay * head;//鏈表的頭結(jié)點指針</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)計員工人數(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); //查找并輸出某個員工信息函數(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); //計算函數(shù)</p><p>  void Recordinfo(int,string,int,string,string,string,int,float,int,float,float,float); //存儲函數(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)計員工人數(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>  //功能:在鏈表中查找員工的編號</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<<"列表為空,請先輸入數(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<<"錯誤,找不到該信息!!!"<<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<<"列表為空,請先輸入數(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<<"錯誤,找不到該信息!!!"<

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<<"操作失?。粏T工編號為"<<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>  //功能:從鏈表中刪除一個結(jié)點</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<<"成功刪除員工編號為"<<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<<"成功刪除員工編號為"<<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<<"請重新輸入相應(yīng)信息"<<endl;</p><p>  cout<<"員工編號:";</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)前列表為空,請先輸入數(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()<<"個員工信息"<<end

129、l;</p><p>  cout<<"員工編號 員工姓名 年齡 性別 部門 職務(wù) 學(xué)歷 工資 缺勤(天) 罰金 個稅 實發(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<<"員工編號為"<<num<<"的員工工資信息:"

134、;<<endl;</p><p>  cout<<"員工編號 員工姓名 年齡 性別 部門 職務(wù) 學(xué)歷 工資 缺勤(天) 罰金 個稅 實發(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ù)計算

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論