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

下載本文檔

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

文檔簡介

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

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

3、分析1</p><p><b> ?。ㄒ唬┱n題要求1</b></p><p><b> ?。ǘ┱n題分析1</b></p><p><b>  三、方案設定2</b></p><p>  四、程序功能描述與模塊結構2</p><p> ?。ㄒ唬?/p>

4、程序功能描述2</p><p><b> ?。ǘ┕δ苣K2</b></p><p> ?。ㄈ┏绦蛄鞒虉D3</p><p>  四、用戶使用說明6</p><p><b>  五、測試結果7</b></p><p>  六﹑程序經驗教訓總結12</p>

5、;<p><b>  七﹑附錄13</b></p><p><b>  一、前言</b></p><p>  C++語言是具有面向對象特性的C語言的繼承者,即是由C語言演變而來,全面兼容C語言。C語言的優點,如語言簡潔靈活,運算符和數據結構豐富,具有結構化控制語句,程序執行效率高,同時具有高級語言與匯編語言的優點,這些在C++語言

6、中同樣能夠體現出來。但是C++語言最有意義的方面是支持面向對象的程序設計,在數據類型、算法的控制結構、函數等方面都有很好的體現。面向對象編程中,對象是程序設計的基本單位,但對象的靜態屬性往往需要用某種類型的數據來表示,對象的動態屬性要由成員函數來實現,面向函數的實現歸根到底還是算法的設計。</p><p>  二、課題要求、課題分析</p><p><b> ?。ㄒ唬┱n題要求&l

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

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

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

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

11、t;p><b> ?。ǘ┱n題要求:</b></p><p>  1.分析問題,給出數學模型,選擇數據結構.</p><p>  2.設計算法,給出算法描述</p><p><b>  3.給出源程序清單</b></p><p>  4. 編輯、編譯、調試源程序</p><

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 保存所有數據的頁面</p><p>  圖2-18 退出系統的頁面</p><p>  七﹑程序經驗教訓總結

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

29、t;  九﹑附錄</b></p><p>  //職工成績管理系統</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; //定義一個全局變量統計職工人數 </p><p>  //定義一個職工信息的結構體</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() ; //構造函數. </p><p>  ~Information() ; //析構函數. </p&

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

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

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

38、id average(epployee *head); //定義職工工資平均值的函數</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<<" ------------------------<<歡迎您使用職工工資管理系統>>------------------------\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、-----------------------<<謝謝您使用職工工資管理系統>>------------------------\n"; </p><p>  cout<<" ******************************************************************************\n";</

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

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

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) //調用字符比較函數strcmp()用來判斷是否繼續輸入</p><p><b>  { </b></p><p>  p1=(epployee *)malloc(LEN); //調用malloc()函數用來開辟一個新的存儲單元</p><p

50、>  strcpy(p1->name,ch); //將循環結構前面輸入的姓名復制到結構體名為p1的數組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) //判斷輸入的分數是否有效(>=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) //判斷輸入的分數是否有效(>=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) //判斷輸入的分數是否有效(>=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所指結構體的next指針</p><p>  p2=p1; //將指針p1賦給指針p2<

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

61、t;<p>  p2->next=NULL; //將p2所指結構體的next指針重新賦空值</p><p>  return (head);//將輸入的第一組職工信息返回</p><p><b>  }</b></p><p>  //定義output()函數將職工的信息從頭指針所指內容開始輸出</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非空則繼續,目的是把所有的職工信息都傳給指針p然后輸出.</p><p><b>  }</b></p><p><b>  }</b></p>

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

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

72、mation::insert( epployee *head) </p><p>  //插入新結點定義一個指向struct epployee的結構體指針函數*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指向插入的新結點</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所指結構體的數組id中</p><p><b>  } </b></p><p>  cout<<" 姓名:";</p><p> 

76、 cin>>p1->name; //將輸入的姓名存放到結構體名為p1的數組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所指結構體的數組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所指結構體的數組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所指結構體的數組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) //若沒調用次函數以前的頭指針head為空</p><p><b>  {</b></p><p>  head=p1;p1->next=NULL;</p><p&

84、gt;  } //則將p1賦給頭指針head并將p1所指結構體成員指針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指向的結點</p><p>  p2=p2->next;</p><p>  } //p2后移一個結點</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>  } //插入到第一個結點之前</p><p><b>  else </b></p><p><b>  {</b></p><p>  p3->next=p1;</p><p>  p1->next=p2;</p>

88、<p>  } //插入到p3所指結點之后</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>  } //插入到尾結點之后</p><p><b>  }</b></p><p>  n++; //將職工人數加1</p><p>  cout<<"\t----------------<<你輸入的職工信息已經成功插入&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的結構體指針函數*delete()用來刪除考生信息.</p><p><b>  { </b></p><p>  system("cls");</p><p>  if(head==NULL) //若調用次函

92、數以前的頭指針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) //尋找要刪除的結點當p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b>  {</b><

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

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

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

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

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指向輸入的結點</p><p>  p1=head; //否則將頭指針賦給p1</p&g

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

101、向原p1指向的結點p1后移一個結點</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所指結構體的數組id中</p><p><b&g

108、t;  } </b></p><p>  cout<<" 姓名:";</p><p>  cin>>p1->name; //將輸入的姓名存放到結構體名為p1的數組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所指結構體的數組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所指結構體的數組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所指結構體的數組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"; //沒有想要修改的結點信息</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的結構體指針函數*find()用來查找職工信息.</p><p><b>  {</b></p><p>

118、;  //system("cls");</p><p>  if(head==NULL) //若調用次函數以前的頭指針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>  //尋找結點當p1所指的職工編號不是輸入的職工編號并且p1所指的next指針不為空</p><p><b>  {</b></p><p>  p1=p1->next; //p2指向原p1指向的結點p1后移一個

121、結點</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"; //結點沒找到</p><p>  return(head);</p><p>&

127、lt;b>  }</b></p><p><b>  }</b></p><p>  //定義sort()函數將職工的工資總額從大到小排列并輸出</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的結構體指針數組p </p><p>  if(head!=NULL)//如果頭指針是空則繼續</p>&

129、lt;p>  { m=count(head);</p><p>  cout<<"------------------------------------------------------------------------------\n";</p><p>  cout<<" *職工工資統計表*\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>  //求各工資的平均值的函數</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)//如果頭指針是空則繼續</p><p><b>  {</b></p><p>  cout<<&quo

溫馨提示

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

評論

0/150

提交評論