2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課 程 設 計</b></p><p>  設計題目: 職工工資管理系統(tǒng) </p><p>  學生姓名: </p><p>  學生學號: </p><p>  專業(yè)班級:

2、 </p><p>  指導教師: </p><p>  2011-12-20 </p><p><b>  目 錄</b></p><p><b>  一、前言1</b></p><p>  二、課題要求、課題

3、分析1</p><p><b>  (一)課題要求1</b></p><p><b> ?。ǘ┱n題分析1</b></p><p><b>  三、方案設定2</b></p><p>  四、程序功能描述與模塊結(jié)構(gòu)2</p><p>  (一)

4、程序功能描述2</p><p><b> ?。ǘ┕δ苣K2</b></p><p>  (三)程序流程圖3</p><p>  四、用戶使用說明6</p><p><b>  五、測試結(jié)果7</b></p><p>  六﹑程序經(jīng)驗教訓總結(jié)12</p>

5、;<p><b>  七﹑附錄13</b></p><p><b>  一、前言</b></p><p>  C++語言是具有面向?qū)ο筇匦缘腃語言的繼承者,即是由C語言演變而來,全面兼容C語言。C語言的優(yōu)點,如語言簡潔靈活,運算符和數(shù)據(jù)結(jié)構(gòu)豐富,具有結(jié)構(gòu)化控制語句,程序執(zhí)行效率高,同時具有高級語言與匯編語言的優(yōu)點,這些在C++語言

6、中同樣能夠體現(xiàn)出來。但是C++語言最有意義的方面是支持面向?qū)ο蟮某绦蛟O計,在數(shù)據(jù)類型、算法的控制結(jié)構(gòu)、函數(shù)等方面都有很好的體現(xiàn)。面向?qū)ο缶幊讨?,對象是程序設計的基本單位,但對象的靜態(tài)屬性往往需要用某種類型的數(shù)據(jù)來表示,對象的動態(tài)屬性要由成員函數(shù)來實現(xiàn),面向函數(shù)的實現(xiàn)歸根到底還是算法的設計。</p><p>  二、課題要求、課題分析</p><p><b> ?。ㄒ唬┱n題要求&l

7、t;/b></p><p>  《C++課程設計》通過綜合運用在《C++程序設計》和《數(shù)據(jù)結(jié)構(gòu)》中所學的程序結(jié)構(gòu)、流程控制語句、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體、數(shù)據(jù)結(jié)構(gòu)等知識,以簡易“管理信息系統(tǒng)”程序設計為載體,以C++語言為工具,使我們更深地涉足計算機專業(yè)設計領域,并使所學知識和技能得到進一步鞏固、深化和擴展,以達到能用C++編寫初等程度軟件的目的,為繼續(xù)學習后續(xù)課程及今后走上相關工作崗位打下良好的基礎。&l

8、t;/p><p>  經(jīng)過調(diào)查分析,決定設計職工工資管理系統(tǒng)。</p><p>  創(chuàng)建存儲職工工資信息的存儲文件。添加某職工的工資信息。刪除某職工的工資信息。修改某職工的部分工資信息(當月開始增加或減少某些項工資或扣款數(shù)變化)。輸出指定編號職工的工資信息(查詢用)。輸出全體職工的工資信息(發(fā)工資用)。</p><p><b> ?。ǘ┱n題分析</b&

9、gt;</p><p>  職工工資管理系統(tǒng)可定位于企業(yè)會計系統(tǒng)的一個子系統(tǒng),該系統(tǒng)主要完成的工作為:錄入各職工自身及工資情況、對已經(jīng)存在的數(shù)據(jù)的修改、刪除、可查詢、統(tǒng)計系統(tǒng)中的數(shù)據(jù)等。為此因此職工工資管理系統(tǒng)的功能:讀取文件信息、數(shù)據(jù)輸入、顯示、排序、查找、增加、刪除、修改、保存等。</p><p>  三、課程設計內(nèi)容及進度安排</p><p><b>

10、;  (一)課題內(nèi)容:</b></p><p>  該系統(tǒng)在磁盤上存儲了某單位全體職工的工資信息。對于每位職工存儲以下信息:職工編號、基本工資、津貼、崗貼、補貼、應發(fā)數(shù)、個人所得稅、應扣數(shù)、實發(fā)數(shù)。個人所得稅計算方法設為:工資少于1100元的部分為0,1100—1600元部分為5%,1600—2600部分為10%,2600—3600部分為15%,5600元以上部分為20%。</p>&l

11、t;p><b>  (二)課題要求:</b></p><p>  1.分析問題,給出數(shù)學模型,選擇數(shù)據(jù)結(jié)構(gòu).</p><p>  2.設計算法,給出算法描述</p><p><b>  3.給出源程序清單</b></p><p>  4. 編輯、編譯、調(diào)試源程序</p><

12、p>  5. 撰寫課程設計報告</p><p>  四、 程序功能描述與模塊結(jié)構(gòu)</p><p><b> ?。ㄒ唬┏绦蚬δ苊枋?lt;/b></p><p>  通過主菜單display()函數(shù)將讀取文件信息、輸入、顯示、統(tǒng)計、增加、刪除、修改、查找、排序等函數(shù)結(jié)合一起,在用戶通過相關操作選擇其中一個功能時,調(diào)用該功能函數(shù),完成數(shù)據(jù)處理。在主

13、函數(shù)中調(diào)用主菜單diplay()函數(shù),完成操作。用一個中間函數(shù)將主函數(shù)與各功能函數(shù)連接在一起,不僅使程序語言簡潔、明了、易懂,而且在功能實現(xiàn)上也更加晚上。</p><p><b> ?。ǘ┕δ苣K</b></p><p>  1.主函數(shù)int main():設置背景顏色和字體顏色、調(diào)用設計者的相關信息函數(shù)、調(diào)用display函數(shù),實現(xiàn)系統(tǒng)的主要功能處理;</p

14、><p>  2.主菜單dispiay()函數(shù):確定如何選擇所需功能,調(diào)用讀取文件信息、數(shù)據(jù)輸入、顯示、排序、查找、增加、刪除、修改、保存等函數(shù),完成職工工資管理系統(tǒng)的數(shù)據(jù)處理;</p><p>  3.讀取文件的信息read()函數(shù):從文件中讀取職工工資的信息表并顯示出來;</p><p>  4.數(shù)據(jù)輸入函數(shù)shuru():建立鏈表,完成職工信息錄入;</p&

15、gt;<p>  5.數(shù)據(jù)顯示函數(shù)diaplay():將職工信息數(shù)據(jù)顯示出來;</p><p>  6.數(shù)據(jù)統(tǒng)計函數(shù)tongji():統(tǒng)計職工人數(shù);</p><p>  7.數(shù)據(jù)增加函數(shù)tianjia():添加職工信息;</p><p>  8.數(shù)據(jù)刪除函數(shù)shanchu():刪除職工信息數(shù)據(jù);</p><p>  9.數(shù)據(jù)修改

16、函數(shù)xiugai():修改職工工資等信息數(shù)據(jù);</p><p>  10.數(shù)據(jù)查找函數(shù)chazhao():查找某一職工工資等信息情況;</p><p>  11.數(shù)據(jù)保存函數(shù)save():對系統(tǒng)中的數(shù)據(jù)進行相關的操作后將其保存起來;</p><p>  12.作者信息函數(shù)editor():顯示設計者的相關信息;</p><p>  13.登陸

17、函數(shù)Pass():設定使用權限。</p><p><b> ?。ㄈ┏绦蛄鞒虉D</b></p><p>  程序流程圖主是對各功能模塊的具體描述,以一種圖表的方式簡潔明了的將各模塊的呈現(xiàn)出來,通過這些流程圖可清楚的看出整個程序的運行過程,體會程序的流暢性。</p><p><b>  主函數(shù)流程圖</b></p>

18、;<p>  圖1-1主函數(shù)的流程圖</p><p>  2.各子功能函數(shù)流程圖</p><p>  圖1-2 Menu函數(shù)流程圖</p><p><b>  五、用戶使用說明</b></p><p>  這是一個關于職工工資管理系統(tǒng),具有輸入、輸出、統(tǒng)計、刪除、查詢、修改數(shù)據(jù)等功能,建立了一個含有姓名、性

19、別、編號、工資、總工資等成員的結(jié)構(gòu)體數(shù)據(jù)類型的變量struct xinxi 。</p><p>  用戶使用時,根據(jù)提示操作,進入登陸頁面。輸入登陸名ltf,登陸密碼ltf,進入操作系統(tǒng)。如果登陸信息輸錯三次,自動退出系統(tǒng)。</p><p>  按顯示的數(shù)字選擇操作,先輸入職工數(shù)據(jù),然后進行其他操作。所以輸入“1”,開始錄入相關數(shù)據(jù)。用戶錄入完數(shù)據(jù)后,在姓名處鍵以“0”,結(jié)束操作。<

20、/p><p>  提取文件信息,輸入數(shù)字“9”,回車確定操作,將系統(tǒng)以前操作過的保存的文件提取出來,并顯示。</p><p>  顯示職工信息,輸入數(shù)字“3”,將需顯示的職工信息的編號輸入,回車確定操作,系統(tǒng)提取相關數(shù)據(jù)并顯示。</p><p>  將輸入的數(shù)據(jù)進行統(tǒng)計排序,輸入數(shù)字“7”,回車確定操作,系統(tǒng)顯示工資統(tǒng)計表、及各項工資的平均值。</p>&

21、lt;p>  查找職工工資,輸入“4”,回車確定操作,系統(tǒng)顯示“請輸入要查找的編號”,輸入想要查找的職工的編號,系統(tǒng)提取保存的數(shù)據(jù),并顯示出來。</p><p>  增加職工工資,輸入“6”回車確定操作,系統(tǒng)顯示輸入的頁面,將需增加的職工信息輸入,輸入完后回車確定,系統(tǒng)顯示成功插入,并顯示職工工資信息表。</p><p>  刪除職工工資,輸入“5”,回車確定操作,系統(tǒng)顯示“請輸入要

22、刪除的編號”,輸入要刪除的職工編號,系統(tǒng)將保存的數(shù)據(jù)刪除,并顯示剩余的職工工資信息表。</p><p>  修改職工信息,輸入“2”,回車確定操作,輸入要修改的編號,系統(tǒng)顯示該職工的信息,將改后的信息輸入系統(tǒng)。</p><p>  10.將所有操作過的信息保存,輸入“8”,回車確定操作,系統(tǒng)顯示成功保存信息。</p><p>  11.退出系統(tǒng),輸入“0”,回車確定

23、操作,系統(tǒng)顯示退出的頁面,輸入任意一個鍵,退出系統(tǒng)。</p><p>  (溫馨提示:因時間的限制等原因,本程序內(nèi)存設置還不夠很完善,所以對于整個系統(tǒng)的使用應按照系統(tǒng)設置的順序,一項項完成下來,方可不出現(xiàn)漏洞。如果沒按照順序操作,可能會在使用的過程出現(xiàn)一些小差錯。)</p><p><b>  六、測試結(jié)果</b></p><p>  開始運行

24、程序,進入系統(tǒng)頁面,顯示制作者的信息。</p><p>  圖2-1 顯示制作者信息的頁面</p><p>  任意鍵繼續(xù)操作,進入登陸頁面。</p><p>  圖2-2 登陸系統(tǒng)的頁面</p><p>  輸錯管理員名字或者密碼進入到的頁面如下</p><p>  圖2-3 登陸系統(tǒng)出錯的頁面</p>

25、<p>  成功進入操作系統(tǒng),按照使用說明進行操作,進入的是總系統(tǒng)的提示頁面。</p><p>  圖2-4 系統(tǒng)操作的頁面</p><p>  圖2-5 輸入數(shù)據(jù)的頁面</p><p>  圖2-6 顯示數(shù)據(jù)的頁面</p><p>  圖2-7 文件提取信息的頁面</p><p>  圖2-8 排序統(tǒng)計的

26、頁面</p><p>  圖2-9 查找職工信息的頁面</p><p>  圖2-10 查找不到職工信息的頁面</p><p>  圖2-11 增加職工信息的頁面</p><p>  圖2-12 增加職工信息后并顯示職工工資信息表的頁面</p><p>  圖2-13 刪除職工信息并顯示剩余職工信息的頁面</p&

27、gt;<p>  圖2-14 修改職工信息的頁面</p><p>  圖2-15 成功修改職工信息的頁面</p><p>  圖2-16 修改沒有編號職工信息的頁面</p><p>  圖2-17 保存所有數(shù)據(jù)的頁面</p><p>  圖2-18 退出系統(tǒng)的頁面</p><p>  七﹑程序經(jīng)驗教訓總結(jié)

28、</p><p>  通過這個程序設計,我不僅提高了動手操作能力,對C++語言有了更深的認識,能夠更好地運用C++語言進行編程設計,同時在思維、看待問題的全面性等方面也有了很大的提高。不過由于時間、經(jīng)驗不夠、對語言的掌握程度不深等問題,在這個系統(tǒng)設計還存在一些問題,比如內(nèi)存設計還不夠完善,整個系統(tǒng)的流暢性等,希望可以在今后的設計上能夠解決這些問題,做的更好。</p><p><b&g

29、t;  九﹑附錄</b></p><p>  //職工成績管理系統(tǒng)</p><p>  #include <iomanip></p><p>  #include <iostream></p><p>  #include <fstream></p><p>  #inc

30、lude <malloc.h></p><p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  #define NULL 0</p><p>  int const N=20;</p><p>  #defi

31、ne LEN sizeof(struct epployee)</p><p>  using namespace std; </p><p>  int n=0; //定義一個全局變量統(tǒng)計職工人數(shù) </p><p>  //定義一個職工信息的結(jié)構(gòu)體</p><p>  struct epployee</p><

32、;p><b>  { </b></p><p>  char name[N]; //用來存放姓名</p><p>  char sex[N]; //用來存放性別</p><p>  long id; //用來存放編號</p><p>  float paid[3];

33、 //用來存放工資</p><p>  int total; //用來存放總工資</p><p>  struct epployee *next;</p><p><b>  };</b></p><p><b>  //職工類</b></p><p>  cl

34、ass Information</p><p><b>  { </b></p><p><b>  public:</b></p><p>  Information() ; //構(gòu)造函數(shù). </p><p>  ~Information() ; //析構(gòu)函數(shù). </p&

35、gt;<p>  epployee *creat(); //建立鏈表</p><p>  void output(epployee *head); //顯示職工信息</p><p>  int count(epployee *head); //定義函數(shù)count()統(tǒng)計職工總數(shù)</p><p>  epployee

36、 *insert(epployee*head); //指針函數(shù)*insert()用來添加職工信息.</p><p>  epployee *cancel(epployee *head,long id); //指針函數(shù)*cancel()用來刪除職工信息.</p><p>  epployee *find(epployee *head,long id); //指針函數(shù)*fi

37、nd()用來查找職工信息.</p><p>  epployee *modify(epployee *head,long id); //指針函數(shù)*modife()用來修改職工的信息.</p><p>  void sort(epployee *head); //定義paixu()函數(shù)將職工的總額從大到小排列并輸出</p><p>  vo

38、id average(epployee *head); //定義職工工資平均值的函數(shù)</p><p>  void save(epployee *head); //保存文件信息</p><p>  epployee *Read(); //讀取文件信息</p><p><b>

39、;  private:</b></p><p>  epployee *p1,*p2,*p3,*head,st; </p><p><b>  };</b></p><p>  Information::Information() </p><p>  {cout<<" ********

40、**********************************************************************\n";</p><p>  cout<<" ------------------------<<歡迎您使用職工工資管理系統(tǒng)>>------------------------\n"; </p>

41、<p>  cout<<" ******************************************************************************\n\n"; </p><p><b>  }</b></p><p>  //作者的信息和提示</p><p>  v

42、oid editor()</p><p><b>  {</b></p><p>  cout<<"\n\t\t\t本程序制作者:\n\n\t\t\tI don't know \n\n\t\t\tQQ : 895026504";</p><p>  cout<<"\n\n\t\t\t

43、Made By VC6.0++\n\n\t\t\t2008年9月30日\n\n\t\t\t按<Enter>鍵進入登陸界面!!";</p><p>  cout<<"\n\n\t\t\t如果需要對原來的信息進行操作,則先選擇0讀取文件信息\n"<<endl;</p><p><b>  }</b><

44、/p><p>  Information::~Information()</p><p>  { cout<<" ******************************************************************************\n";</p><p>  cout<<" -

45、-----------------------<<謝謝您使用職工工資管理系統(tǒng)>>------------------------\n"; </p><p>  cout<<" ******************************************************************************\n";</

46、p><p><b>  }</b></p><p><b>  //建立鏈表信息</b></p><p>  epployee *Information::creat(void) </p><p>  {//定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*creat()用來錄入職工信息. &

47、lt;/p><p>  char ch[N];n=0; //用來存放職工姓名 </p><p>  p1=p2=(epployee *)malloc(LEN);//調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元 </p><p>  cout<<" -------------<<請建立職工信息表,在姓名處鍵以 # 結(jié)束輸入

48、!>>--------------"<<endl;</p><p>  cout<<" 姓名:";</p><p><b>  cin>>ch;</b></p><p>  head=NULL; //給指針head賦初值</p><p&g

49、t;  while (strcmp(ch,"#")!=0) //調(diào)用字符比較函數(shù)strcmp()用來判斷是否繼續(xù)輸入</p><p><b>  { </b></p><p>  p1=(epployee *)malloc(LEN); //調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元</p><p

50、>  strcpy(p1->name,ch); //將循環(huán)結(jié)構(gòu)前面輸入的姓名復制到結(jié)構(gòu)體名為p1的數(shù)組name中</p><p>  cout<<" 性別:";</p><p>  cin>>p1->sex;</p><p>  cout<<" 編號:&qu

51、ot;;</p><p>  cin>>p1->id;</p><p>  while((p1->id)<0||(p1->id)>100000) //判斷輸入的編號是否有效(100000個)</p><p><b>  {</b></p><p>  cout<&l

52、t;" 對不起,您的輸入錯誤!請重新輸入(>0<1000000): ";</p><p>  cin>>p1->id;</p><p><b>  } </b></p><p>  cout<<" 基本工資:";</p><p>  cin

53、>>p1->paid[0];</p><p>  while((p1->paid[0])<0||(p1->paid[0])>100000) //判斷輸入的分數(shù)是否有效(>=0 <=100000)</p><p><b>  {</b></p><p>  cout<<&

54、quot; 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p>  cin>>p1->paid[0];</p><p><b>  } </b></p><p>  cout<<" 加班工資:";</p><p>  ci

55、n>>p1->paid[1];</p><p>  while((p1->paid[1])<0||(p1->paid[1])>100000) //判斷輸入的分數(shù)是否有效(>=0 <=100000)</p><p><b>  {</b></p><p>  cout<<

56、" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p>  cin>>p1->paid[1];</p><p><b>  } </b></p><p>  cout<<" 其他獎金:";</p><p>  c

57、in>>p1->paid[2];</p><p>  while((p1->paid[2])<0||(p1->paid[2])>100000) //判斷輸入的分數(shù)是否有效(>=0 <=100000)</p><p><b>  {</b></p><p>  cout<<

58、;" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p>  cin>>p1->paid[2];</p><p><b>  } </b></p><p>  p1->total=p1->paid[0]+p1->paid[1]+p1->paid

59、[2]; //計算總額 </p><p>  if(n==0)head=p1; //如果是輸入第一組職工信息就將指針p1賦給指針head</p><p>  else p2->next=p1; //否則將p1賦給p2所指結(jié)構(gòu)體的next指針</p><p>  p2=p1; //將指針p1賦給指針p2<

60、;/p><p>  n++; //將職工人數(shù)n的值加1</p><p>  cout<<"\n 姓名:";</p><p>  cin>>ch; //將輸入的姓名存放到字符數(shù)組ch中</p><p><b>  }</b></p&g

61、t;<p>  p2->next=NULL; //將p2所指結(jié)構(gòu)體的next指針重新賦空值</p><p>  return (head);//將輸入的第一組職工信息返回</p><p><b>  }</b></p><p>  //定義output()函數(shù)將職工的信息從頭指針所指內(nèi)容開始輸出</p><

62、;p>  void Information::output(epployee *head) </p><p><b>  {</b></p><p>  //system("cls");</p><p>  if(head==NULL) cout<<" 這是一個空表,請先輸入職工信息!\n&quo

63、t;;</p><p><b>  else{</b></p><p>  cout<<"-------------------------------------------------------------------------------\n";</p><p>  cout<<"

64、 *職工工資信息表*\n";</p><p>  cout<<"-------------------------------------------------------------------------------\n"; </p><p>  cout<<"|編 號| |姓 名| |性別| |基本工資

65、| |加班工資| |其他獎金| |總額|\n";</p><p>  cout<<"-------------------------------------------------------------------------------\n"; </p><p>  p1=head; //將頭指針賦給p </p>

66、<p><b>  do</b></p><p><b>  {</b></p><p>  cout<<setw(6)<<p1->id</p><p>  <<setw(14)<<p1->name</p><p>  <

67、;<setw(11)<<p1->sex</p><p>  <<setw(11)<<p1->paid[0]</p><p>  <<setw(15)<<p1->paid[1]</p><p>  <<setw(13)<<p1->paid[2]</p

68、><p>  <<setw(13)<<p1->total<<endl;</p><p>  cout<<"-------------------------------------------------------------------------------\n"; </p><p>  p

69、1=p1->next; //將下一組職工信息的next指針賦給p</p><p>  }while(p1!=NULL); //若指針p非空則繼續(xù),目的是把所有的職工信息都傳給指針p然后輸出.</p><p><b>  }</b></p><p><b>  }</b></p>

70、<p>  //統(tǒng)計職工人數(shù)的函數(shù)</p><p>  int Information::count(struct epployee *head) //定義函數(shù)count()統(tǒng)計職工總數(shù)</p><p><b>  {</b></p><p>  if(head==NULL)return(0);

71、 //若指針head為空返回值為0</p><p>  else return(1+count(head->next)); //函數(shù)的遞歸調(diào)用</p><p><b>  }</b></p><p>  //添加職工的成績的函數(shù)</p><p>  epployee *Infor

72、mation::insert( epployee *head) </p><p>  //插入新結(jié)點定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*insert()用來添加職工信息.</p><p><b>  {</b></p><p>  //system("cls");</p><p&g

73、t;  cout<<"\t----------------<<請輸入新增職工成績信息>>----------------\n"<<endl;</p><p>  p1=(epployee *)malloc(LEN); //使p1指向插入的新結(jié)點</p><p>  cout<<" 編號:&q

74、uot;;</p><p>  cin>>p1->id;</p><p>  while((p1->id)<0||(p1->id)>100000)</p><p><b>  {</b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(

75、>0<100000): ";</p><p>  cin>>p1->id; //將輸入的編號存放到p1所指結(jié)構(gòu)體的數(shù)組id中</p><p><b>  } </b></p><p>  cout<<" 姓名:";</p><p> 

76、 cin>>p1->name; //將輸入的姓名存放到結(jié)構(gòu)體名為p1的數(shù)組name中</p><p>  cout<<" 性別:";</p><p>  cin>>p1->sex; </p><p>  cout<<" 基本工資:";</p>&

77、lt;p>  cin>>p1->paid[0];</p><p>  while((p1->paid[0])<0||(p1->paid[0])>100000)</p><p><b>  {</b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(>

78、;0<100000): ";</p><p>  cin>>p1->paid[0]; //將輸入的基本工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b>  }</b></p><p>  cout<<" 加班工資:";</p><p&g

79、t;  cin>>p1->paid[1];</p><p>  while((p1->paid[1])<0||(p1->paid[1])>100000)</p><p><b>  {</b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<

80、100000): ";</p><p>  cin>>p1->paid[1]; //將輸入的加班工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b>  }</b></p><p>  cout<<" 其他獎金:";</p><p>  cin

81、>>p1->paid[2];</p><p>  while((p1->paid[2])<0||(p1->paid[2])>100000)</p><p><b>  {</b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000)

82、: ";</p><p>  cin>>p1->paid[2]; //將輸入的其他獎金存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b>  } </b></p><p>  p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//計算總分

83、 </p><p>  p2=head; //將頭指針賦給p2</p><p>  if(head==NULL) //若沒調(diào)用次函數(shù)以前的頭指針head為空</p><p><b>  {</b></p><p>  head=p1;p1->next=NULL;</p><p&

84、gt;  } //則將p1賦給頭指針head并將p1所指結(jié)構(gòu)體成員指針next賦空值</p><p><b>  else </b></p><p><b>  {</b></p><p>  while((p1->id>p2->id)&&(p2->next!=NULL

85、))</p><p><b>  {</b></p><p>  p3=p2; //p3指向原p2指向的結(jié)點</p><p>  p2=p2->next;</p><p>  } //p2后移一個結(jié)點</p><p>  if(p1->id<=p

86、2->id)</p><p><b>  {</b></p><p>  if(head==p2)</p><p><b>  {</b></p><p>  p1->next=head;</p><p><b>  head=p1;</b>

87、</p><p>  } //插入到第一個結(jié)點之前</p><p><b>  else </b></p><p><b>  {</b></p><p>  p3->next=p1;</p><p>  p1->next=p2;</p>

88、<p>  } //插入到p3所指結(jié)點之后</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p2->next=p1;</p><p>

89、;  p1->next=NULL;</p><p>  } //插入到尾結(jié)點之后</p><p><b>  }</b></p><p>  n++; //將職工人數(shù)加1</p><p>  cout<<"\t----------------<<你輸入的職工信息已經(jīng)成功插入&g

90、t;>----------------"<<endl;</p><p>  return (head);</p><p><b>  }</b></p><p><b>  //刪除職工信息</b></p><p>  epployee *Information::can

91、cel(epployee *head,long id) //定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*delete()用來刪除考生信息.</p><p><b>  { </b></p><p>  system("cls");</p><p>  if(head==NULL) //若調(diào)用次函

92、數(shù)以前的頭指針head為空</p><p><b>  { </b></p><p>  return(head);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</

93、b></p><p>  p1=head; //否則將頭指針賦給p1</p><p>  while(id!=p1->id&&p1->next!=NULL) //尋找要刪除的結(jié)點當p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b>  {</b><

94、;/p><p><b>  p2=p1;</b></p><p>  p1=p1->next;</p><p>  } //p2指向原p1指向的結(jié)點p1后移一個結(jié)點</p><p>  if(id==p1->id) //如果輸入的職工編號是p1所指的職工編號//結(jié)點

95、找到后刪除</p><p><b>  {</b></p><p>  if(p1==head) head=p1->next; //如果head指針和p1指針相等則將下一個結(jié)點賦給指針head </p><p><b>  else </b></p><p>  p2->next=p

96、1->next; //否則將p1所指結(jié)點賦給p2所指結(jié)點將要刪除的職工信息跳過去</p><p>  cout<<" 刪除編號為"<<id<<"的職工\n";</p><p>  n--; //將職工人數(shù)減1 </p><p><b

97、>  }</b></p><p>  return(head); //將頭指針返回</p><p><b>  }</b></p><p><b>  }</b></p><p>  /**************************修改職工數(shù)據(jù)************

98、**************/</p><p>  epployee *Information::modify(epployee *head,long id)</p><p><b>  {</b></p><p>  //system("cls");</p><p>  cout<<&q

99、uot;\t----------------<<請輸入須修改的職工工資信息>>----------------\n"<<endl;</p><p>  p1=(epployee *)malloc(LEN); //使p1指向輸入的結(jié)點</p><p>  p1=head; //否則將頭指針賦給p1</p&g

100、t;<p>  while(id!=p1->id&&p1->next!=NULL)</p><p>  //尋找結(jié)點當p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b>  {</b></p><p>  p1=p1->next; //p2指

101、向原p1指向的結(jié)點p1后移一個結(jié)點</p><p>  } </p><p>  if(id==p1->id) //如果要查找的職工編號是p1所指的職工編號</p><p><b>  {</b></p><p>  cout<<"你需要修改的職工信息如下:\n&

102、quot;;</p><p>  cout<<"------------------------------------------------------------------------------\n";</p><p>  cout<<"|編 號| |姓 名| |性別| |基本工資| |加班工資| |其他

103、獎金| |總額|\n";</p><p>  cout<<"------------------------------------------------------------------------------\n";</p><p>  cout<<setw(6)<<p1->id</p>&

104、lt;p>  <<setw(10)<<p1->name</p><p>  <<setw(10)<<p1->sex</p><p>  <<setw(10)<<p1->paid[0]</p><p>  <<setw(15)<<p1->pai

105、d[1]</p><p>  <<setw(12)<<p1->paid[2]</p><p>  <<setw(12)<<p1->total<<endl;</p><p>  cout<<"------------------------------------------

106、------------------------------------\n";</p><p>  cout<<" 編號:";</p><p>  cin>>p1->id;</p><p>  while((p1->id)<0||(p1->id)>100000)</p>

107、<p><b>  {</b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p>  cin>>p1->id; //將輸入的編號存放到p1所指結(jié)構(gòu)體的數(shù)組id中</p><p><b&g

108、t;  } </b></p><p>  cout<<" 姓名:";</p><p>  cin>>p1->name; //將輸入的姓名存放到結(jié)構(gòu)體名為p1的數(shù)組name中</p><p>  cout<<" 性別:";</p><p>  c

109、in>>p1->sex; </p><p>  cout<<" 基本工資:";</p><p>  cin>>p1->paid[0];</p><p>  while((p1->paid[0])<0||(p1->paid[0])>100000)</p><

110、p><b>  {</b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p>  cin>>p1->paid[0]; //將輸入的基本工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b>

111、  }</b></p><p>  cout<<" 加班工資:";</p><p>  cin>>p1->paid[1];</p><p>  while((p1->paid[1])<0||(p1->paid[1])>100000)</p><p><

112、b>  {</b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p>  cin>>p1->paid[1]; //將輸入的加班工資存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b>  }</b

113、></p><p>  cout<<" 其他獎金:";</p><p>  cin>>p1->paid[2];</p><p>  while((p1->paid[2])<0||(p1->paid[2])>100000)</p><p><b>  {&

114、lt;/b></p><p>  cout<<" 對不起,您的輸入錯誤!請重新輸入(>0<100000): ";</p><p>  cin>>p1->paid[2]; //將輸入的其他獎金存放到p1所指結(jié)構(gòu)體的數(shù)組paid中</p><p><b>  } </b><

115、/p><p>  p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //計算總分 </p><p><b>  }</b></p><p><b>  else </b></p><p>  cout<<" 需要

116、修改的信息中沒有編號為"<<id<<"的職工.\n\n"; //沒有想要修改的結(jié)點信息</p><p>  getchar();</p><p>  return(head);</p><p><b>  }</b></p><p><b>  //查找職工

117、信息</b></p><p>  epployee *Information::find(epployee *head,long id) </p><p>  //定義一個指向struct epployee的結(jié)構(gòu)體指針函數(shù)*find()用來查找職工信息.</p><p><b>  {</b></p><p>

118、;  //system("cls");</p><p>  if(head==NULL) //若調(diào)用次函數(shù)以前的頭指針head為空</p><p><b>  {</b></p><p>  cout<<" 這是一個空表,請先輸入職工信息!\n";</p><p>

119、;  return(head); </p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p1=head; //否則將頭指針賦給p1</p><p>

120、;  while(id!=p1->id&&p1->next!=NULL)</p><p>  //尋找結(jié)點當p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b>  {</b></p><p>  p1=p1->next; //p2指向原p1指向的結(jié)點p1后移一個

121、結(jié)點</p><p><b>  }</b></p><p>  if(id==p1->id) //如果要查找的職工編號是p1所指的職工編號</p><p><b>  {</b></p><p>  cout<<"---------------------------

122、---------------------------------------------------\n";</p><p>  cout<<"|編 號| |姓 名| |性別| |基本工資| |加班工資| |其他獎金| |總額|\n";</p><p>  cout<<"------------

123、------------------------------------------------------------------\n";</p><p>  cout<<setw(6)<<p1->id</p><p>  <<setw(10)<<p1->name</p><p>  <&

124、lt;setw(10)<<p1->sex</p><p>  <<setw(10)<<p1->paid[0]</p><p>  <<setw(14)<<p1->paid[1]</p><p>  <<setw(12)<<p1->paid[2]</p&g

125、t;<p>  <<setw(12)<<p1->total<<endl;</p><p>  cout<<"------------------------------------------------------------------------------\n";</p><p><b&g

126、t;  }</b></p><p><b>  else </b></p><p>  cout<<"信息中沒有編號為"<<id<<"的職工.\n"; //結(jié)點沒找到</p><p>  return(head);</p><p>&

127、lt;b>  }</b></p><p><b>  }</b></p><p>  //定義sort()函數(shù)將職工的工資總額從大到小排列并輸出</p><p>  void Information::sort(epployee *head) </p><p><b>  {</b>

128、;</p><p>  //system("cls");</p><p>  int i,k,m=0,j;</p><p>  epployee *p[N];//定義一個指向struct epployee的結(jié)構(gòu)體指針數(shù)組p </p><p>  if(head!=NULL)//如果頭指針是空則繼續(xù)</p>&

129、lt;p>  { m=count(head);</p><p>  cout<<"------------------------------------------------------------------------------\n";</p><p>  cout<<" *職工工資統(tǒng)計表*\n";</p

130、><p>  cout<<"------------------------------------------------------------------------------\n";</p><p>  cout<<"|編號| |姓名| |性別| |基本工資| |加班工資| |其他獎金| |總額| |名次

131、|\n";</p><p>  cout<<"------------------------------------------------------------------------------\n";</p><p><b>  p1=head;</b></p><p>  for(k=0;k

132、<m;k++)</p><p><b>  {</b></p><p><b>  p[k]=p1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  for(k=0;k<

133、m-1;k++) //選擇排序法</p><p>  for(j=k+1;j<m;j++)</p><p>  if(p[k]->total<p[j]->total)</p><p><b>  {</b></p><p><b>  p2=p[k];</b></p&g

134、t;<p>  p[k]=p[j];</p><p><b>  p[j]=p2;</b></p><p>  } //從大到小排列的指針 </p><p>  for(i=0;i<m;i++)</p><p><b>  {</b></p><p>  

135、cout<<setw(6)<<p[i]->id</p><p>  <<setw(8)<<p[i]->name</p><p>  <<setw(9)<<p[i]->sex</p><p>  <<setw(10)<<p[i]->paid[0]&l

136、t;/p><p>  <<setw(10)<<p[i]->paid[1]</p><p>  <<setw(15)<<p[i]->paid[2]</p><p>  <<setw(11)<<p[i]->total</p><p>  <<setw

137、(10)<<i+1<<endl;</p><p>  cout<<"------------------------------------------------------------------------------\n"; </p><p><b>  }</b></p><p>

138、;<b>  }</b></p><p><b>  }</b></p><p>  //求各工資的平均值的函數(shù)</p><p>  void Information::average(epployee *head)</p><p><b>  {</b></p>

139、<p><b>  int k,m;</b></p><p>  float arg1=0,arg2=0,arg3=0;</p><p>  if(head==NULL)//如果頭指針是空則繼續(xù)</p><p><b>  {</b></p><p>  cout<<&quo

溫馨提示

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

評論

0/150

提交評論