c語言課程設計報告--職工工資管理系統(tǒng)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計報告</b></p><p><b>  課程設計報告</b></p><p>  題 目:職工工資管理系統(tǒng)</p><p>  設 計 者: </p><p><b>  專業(yè)班級: </b></p&

2、gt;<p>  學 號: </p><p>  指導教師: </p><p><b>  所屬院系:</b></p><p>  2011年 6月29日</p><p><b>  設計需求說明</b></p><p>  一、

3、職工工資管理系統(tǒng)功能設計要求</p><p>  1. 輸入記錄:將每一個職工的姓名、ID 號以及基本工資、職務工資、崗位津貼、醫(yī)療保險、公積金的數(shù)據(jù)作為一個記錄。該軟件能建立一個新的數(shù)據(jù)文件或給已建立好的數(shù)據(jù)文件增加記錄。</p><p>  2. 顯示記錄:根據(jù)用戶提供的記錄或者根據(jù)職工姓名顯示一個或幾個職工的各項工資和平均工資。</p><p>  3. 修

4、改記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行修改并在修改前后對記錄內容進行顯示。</p><p>  4.查找記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行查找并在查找前后對記錄內容進行顯示。</p><p>  5. 刪除記錄:可刪除數(shù)據(jù)文件中的任一記錄。</p><p>  6.恢復記錄:能恢復被刪除的任一記錄。</p><p>  7. 統(tǒng)計:

5、 (A) 計算各項工資平均工資及總工資, (B)統(tǒng)計符合指定條件(如職工工資前三項之和在2000 元以上、2000~1500 元、1500~1000 元) 以內的工資職工人數(shù)及占總職工人數(shù)的百分比。(C)按字符表格形式打印全部職工工資信息表及平均工資(包括各項總的平均工資)。</p><p>  8.保存數(shù)據(jù)文件功能。</p><p>  9.打開數(shù)據(jù)文件功能。</p>

6、<p>  經(jīng)過逐層逐塊、不斷細化、求精過程,編寫程序并進行測試、驗證,可以逐個模塊地分開調試,并通過文件包含或用工程文件的形式進行逐步聯(lián)合調試。程序運行結果如下表所示(記錄個數(shù)至少8 個)。</p><p><b>  二.模塊設計分析</b></p><p><b>  系統(tǒng)功能模塊圖:</b></p><p&g

7、t;<b>  工作程序分析</b></p><p>  ①輸入:輸入職工工資資料</p><p>  通過結構體的數(shù)組來進行操作,先頭定義數(shù)組em[],先輸入需要輸入的職工人數(shù)m,然后進入循環(huán),每次循環(huán)將各項輸入結構體數(shù)組對應項的對應成員中,當循環(huán)次數(shù)等于人數(shù)時,完成全部員工的資料輸入,退出循環(huán)。同時將數(shù)據(jù)儲存在ckerk_list文件中并自動保存至磁盤。</

8、p><p>  注:如首次使用,尚未輸入數(shù)據(jù),請先輸入數(shù)據(jù)。輸入的數(shù)據(jù)將自動保存。</p><p>  再次選擇輸入功能時原數(shù)據(jù)將被覆蓋。</p><p>  ②保存:將輸入的資料存入磁盤</p><p>  讀取文件clerk_list,若文件不存在,打印“打開失敗并退出。若存在,則通過循環(huán)語句將輸入到結構體數(shù)組的數(shù)據(jù)逐個輸入磁盤。</p

9、><p> ?、圩x?。鹤x取磁盤中的資料</p><p>  打開文件clerk_list ,若文件不存在,打印“打開失敗”并退出。若存在,讀取文件中的數(shù)據(jù),并返回職工人數(shù)。</p><p> ?、茱@示:顯示職工工資資料</p><p>  先通過讀取函數(shù)的返回值確定職工人數(shù)m,再通過循環(huán)將員工工資資料逐個打印,當循環(huán)次數(shù)達到m時退出循環(huán)。其中

10、總工資由程序計算,總工資=基本工資+職務工資+津貼-醫(yī)療保險-公積金</p><p>  ⑤刪除:刪除某員工的資料</p><p>  打印員工資料并提示輸入要刪除職工的姓名,輸入后若該職工不存在則打印“查無此人”;若存在,則顯示該職工資料并詢問是否確定刪除。若確定,則刪除。刪除時,通過對比輸入的姓名與資料中的姓名做對比從而確定要刪除的項i,從第i項開始,將后一項的各成員的值賦給前一項各對

11、應的成員,完成對第i項的刪除。</p><p>  ⑥添加:添加新的員工資料而不覆蓋原有資料</p><p>  打印原有職工資料,詢問要添加的職工人數(shù)并詢問是否確定添加。逐個逐項輸入員工信息,之后程序計算其總工資。完成后顯示“添加成功”,打印新的員工資料并自動保存。添加的方法為:定義一個相同類型的結構體數(shù)組,將原有項復制后增添新的項,并保存新的數(shù)組。</p><p&g

12、t; ?、卟檎遥喊碔D好查詢與按姓名查找員工資料</p><p>  根據(jù)提示輸入要查詢的ID號或姓名,程序通過循環(huán)語句將輸入的數(shù)字與以保存的結構體數(shù)組中的數(shù)據(jù)對比,若相同,則打印“已找到”及該員工的資料;當循環(huán)次數(shù)等于人數(shù)時結束循環(huán),若至結束循環(huán)時也沒有找到相同的,則打印“查無此人”。</p><p>  ⑧修改:修改特定員工的特定資料</p><p>  打印員

13、工信息并提示輸入要修改資料的職工姓名。按提示確定要修改,確定要修改的項目,輸入要修改成的結果并將該結果賦給對應項的對應成員,完成對特定職工特定項目的修改。</p><p><b> ?、峤y(tǒng)計 </b></p><p>  通過循環(huán)對結構體數(shù)組中的每一項經(jīng)行統(tǒng)計,計算工資總額為,將工資總額除以人數(shù)計算出平均工資。根據(jù)每名職工的資料計算基本工資、職務工資、津貼之和在100

14、0-1500圓1500-2000圓2000圓以上的員工占總員工的百分比。</p><p>  三.源程序代碼(附各部分解釋)</p><p>  #include<stdio.h></p><p>  #include<windows.h></p><p>  #include<string.h></

15、p><p>  #include<conio.h></p><p>  #define N 100</p><p>  struct clerk</p><p><b>  {</b></p><p>  int num; //ID號</p><p>

16、;  char name[20]; //姓名</p><p>  int jbgz; //基本工資</p><p>  int zwgz; //職務工資</p><p>  int jt; // 津貼 </p><p>  int yb; //醫(yī)療保險</p>&l

17、t;p>  int gjj; /公積金/</p><p>  int total; //總工資</p><p>  }em[100]; </p><p>  void menu();</p><p>  void input();</p><p>  void save(i

18、nt);</p><p>  void display();</p><p>  void del();</p><p>  void add();</p><p>  void search();</p><p>  void search_num();</p><p>  void sear

19、ch_name();</p><p>  void modify(); </p><p>  void sta();</p><p>  void start(); /*定義各函數(shù)*/</p><p>  void start() //開始界面</p><p><b>  {</b></p

20、><p>  system("cls");//清屏</p><p>  system("color 1E"); //設置文字顏色為黃色 背景色藍色</p><p>  printf("\n\n\n\n\n\n");</p><p>  printf("*************

21、*******************************************************************");</p><p>  printf("*****************************歡迎使用工資管理系統(tǒng)*****************************");</p><p>  printf(&qu

22、ot;*********************************************************************************\n\n\n\n\n");</p><p>  printf("\t\t\t\t 制作: \n");</p><p>  printf("\t\t\t\t 201

23、1年6月\n\n\n\n");</p><p>  printf("\t\t\t ***按任意鍵進入***\n");</p><p><b>  }</b></p><p>  void menu() //菜單界面</p><p><b>  {</b></

24、p><p>  system("cls");</p><p>  system("color 1F"); </p><p>  printf("***菜單***\n\n");</p><p>  printf(">>>>>>>>&

25、gt;>>>>>>>>>>>>>>>> 1 輸入 \n\n");</p><p>  printf(">>>>>>>>>>>>>>>>>>>>>>>>

26、> 2 顯示 \n\n");</p><p>  printf(">>>>>>>>>>>>>>>>>>>>>>>>> 3 查找 \n\n");</p><p>  printf("&g

27、t;>>>>>>>>>>>>>>>>>>>>>>>> 4 刪除 \n\n");</p><p>  printf(">>>>>>>>>>>>>>>>&

28、gt;>>>>>>>> 5 添加 \n\n");</p><p>  printf(">>>>>>>>>>>>>>>>>>>>>>>>> 6 修改 \n\n");</p&

29、gt;<p>  printf(">>>>>>>>>>>>>>>>>>>>>>>>> 7 統(tǒng)計 \n\n");</p><p>  printf(">>>>>>>>&g

30、t;>>>>>>>>>>>>>>>> 8 退出 \n\n");</p><p>  printf("說明:*如首次使用 尚未輸入數(shù)據(jù) 請先輸入數(shù)據(jù) \n *輸入的數(shù)據(jù)將自動保存 \n *再次選擇輸入功能時原數(shù)據(jù)將被覆蓋\n\n");</p><

31、p><b>  }</b></p><p>  void input() /*錄入函數(shù)*/</p><p><b>  {</b></p><p><b>  int i,m;</b></p><p>  system("cls");</p&

32、gt;<p>  printf("職工人數(shù)(1--100):\n");</p><p>  scanf("%d",&m);</p><p>  for (i=0;i<m;i++)</p><p><b>  {</b></p><p>  printf(

33、"請輸入職工號: ");</p><p>  scanf("%d",&em[i].num);</p><p>  printf("請輸入姓名: ");</p><p>  scanf("%s",&em[i].name);</p><p>  ge

34、tchar();</p><p>  printf("請輸入基本工資: ");</p><p>  scanf("%d",&em[i].jbgz);</p><p>  printf("請輸入職務工資: ");</p><p>  scanf("%d"

35、,&em[i].zwgz);</p><p>  printf("請輸入津貼: ");</p><p>  scanf("%d",&em[i].jt);</p><p>  printf("請輸入醫(yī)療保險: ");</p><p>  scanf("%d

36、",&em[i].yb);</p><p>  printf("請輸入公積金: ");</p><p>  scanf("%d",&em[i].gjj);</p><p>  em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(

37、em[i].gjj));//計算總工資</p><p>  printf("\n");//計算總工資</p><p><b>  }</b></p><p>  printf("\n創(chuàng)建完畢!\n");</p><p>  save(m);//保存職工人數(shù)m</p>

38、<p><b>  }</b></p><p>  void save(int m) /*保存文件函數(shù)*/</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  FILE*fp; //聲明fp是指針,用來指

39、向FILE類型的對象</p><p>  if ((fp=fopen("clerk_list","wb"))==NULL) //打開職工列表文件為空</p><p><b>  {</b></p><p>  printf ("打開失敗\n");</p><p>

40、;<b>  exit(0);</b></p><p><b>  }</b></p><p>  for (i=0;i<m;i++) /*將內存中職工的信息輸出到磁盤文件中去*/</p><p>  if (fwrite(&em[i],sizeof(struct clerk),1,fp)!=1)//寫入數(shù)據(jù)

41、塊 &em[i]:是要輸出數(shù)據(jù)的地址 sizeof(struct clerk):獲取一個單體的長度 1:數(shù)據(jù)項的個數(shù) fp:目標文件指針</p><p>  printf("文件讀寫錯誤\n");</p><p>  fclose(fp);// 緩沖區(qū)內最后剩余的數(shù)據(jù)輸出到磁盤文件中,并釋放文件指針和有關的緩沖區(qū)</p><p>

42、;<b>  }</b></p><p>  int load() /*導入函數(shù) int型*/</p><p><b>  {</b></p><p><b>  FILE*fp;</b></p><p><b>  int i=0;</b></

43、p><p>  if((fp=fopen("clerk_list","rb"))==NULL)</p><p><b>  {</b></p><p>  printf ("cannot open file\n");</p><p><b>  exit(

44、0);</b></p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b>  do </b></p><p><b>

45、;  {</b></p><p>  fread(&em[i],sizeof(struct clerk),1,fp); //讀取</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  while(feof(fp)==0); /

46、/檢測流上的文件結束符</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  return(i-1);//返回人數(shù)</p><p><b>  }</b></p><p>  void display() /*瀏覽函數(shù)*/&

47、lt;/p><p><b>  {</b></p><p>  int i,sum=0;</p><p>  int m=load();</p><p>  system("cls");</p><p>  printf("職工號 姓名 基本工資 職務工資

48、津貼 醫(yī)療保險 公積金 總工資 \n");</p><p>  for(i=0;i<m;i++) /*m為輸入部分的職工人數(shù)*/</p><p>  {printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i]

49、.zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);</p><p>  sum+=em[i].total;//計算員工總工資之和</p><p><b>  }</b></p><p>  printf("\n\n職工平均工資為:%d \n",sum/m);</p>

50、<p><b>  }</b></p><p>  void del() /*刪除函數(shù) */</p><p><b>  {</b></p><p>  int m=load();</p><p>  int i,j,n,t,button;</p><p>  

51、char name[20];</p><p>  printf("\n 原來的職工信息:\n");</p><p>  display(); //顯示刪除前的員工信息</p><p>  printf("\n");</p><p>  printf("按姓名刪除:\n");</

52、p><p>  scanf("%s",name);</p><p>  for(button=1,i=0;button&&i<m;i++)//主函數(shù)中確定button==1時各函數(shù)才可以被調用</p><p><b>  {</b></p><p>  if(strcmp(em[i]

53、.name,name)==0)//按員工姓名查找到某員工 并調出其資料</p><p><b>  {</b></p><p>  printf("\n此人原始記錄為:\n");//顯示選定員工的信息</p><p>  printf("職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金

54、 總工資 \n");</p><p>  printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); </p><p>  pr

55、intf("\n確定刪除 請按1,不刪除請按0\n"); </p><p>  scanf("%d",&n);</p><p><b>  if(n==1)</b></p><p><b>  {</b></p><p>  for(j=i;j<

56、;m-1;j++)//從第i項開始 將后一項的各成員的值賦給前一項各對應的成員 完成對第i項的刪除</p><p><b>  {</b></p><p>  strcpy(em[j].name,em[j+1].name);</p><p>  em[j].num=em[j+1].num;</p><p>  em[j]

57、.jbgz=em[j+1].jbgz;</p><p>  em[j].zwgz=em[j+1].zwgz;</p><p>  em[j].jt=em[j+1].jt;</p><p>  em[j].yb=em[j+1].yb; </p><p>  em[j].gjj=em[j+1].gjj;</p><p>

58、  em[j].total=em[j+1].total;</p><p><b>  }</b></p><p>  .button=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

59、;  }</b></p><p>  if(!button)//button==0表明刪除已完成</p><p>  m=m-1;//總員工數(shù)減少一人</p><p><b>  else</b></p><p>  printf("\n查無此人!\n");</p><

60、p>  printf("\n 刪除后的所有職工信息:\n");</p><p>  save(m); //調用保存函數(shù)</p><p>  display(); //調用瀏覽函數(shù)</p><p>  printf("\n繼續(xù)刪除請按1,不再刪除請按0\n");</p><p>  sca

61、nf("%d",&t);</p><p><b>  switch(t)</b></p><p><b>  {</b></p><p>  case 1:del();break;</p><p>  case 0:break;</p><p> 

62、 default :break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void add()/*添加函數(shù)*/</p><p><b>  {</b></p><p><b>  FI

63、LE*fp;</b></p><p><b>  int n;</b></p><p>  int count=0;</p><p><b>  int i;</b></p><p>  int m=load();</p><p>  printf("\

64、n 原來的職工信息:\n");</p><p>  display(); </p><p>  printf("\n");</p><p>  fp=fopen("emploee_list","a");</p><p>  printf("請輸入想增加的職工數(shù):

65、\n");//確定要加入的職工數(shù)n</p><p>  scanf("%d",&n);</p><p>  for (i=m;i<(m+n);i++)//添加n名員工的信息</p><p><b>  {</b></p><p>  printf("\n 請輸入新增加

66、職工的信息:\n");</p><p>  printf("請輸入職工號: ");</p><p>  scanf("%d",&em[i].num);</p><p>  printf("\n");</p><p>  printf("請輸入姓名: &

67、quot;);</p><p>  scanf("%s",em[i].name);</p><p>  getchar();</p><p>  printf("請輸入基本工資: ");</p><p>  scanf("\t%d",&em[i].jbgz);</p&

68、gt;<p>  printf("請輸入職務工資: ");</p><p>  scanf("%d",&em[i].zwgz);</p><p>  printf("請輸入津貼: ");</p><p>  scanf("%d",&em[i].jt);&

69、lt;/p><p>  printf("請輸入醫(yī)療保險: ");</p><p>  scanf("\t%d",&em[i].yb);</p><p>  printf("請輸入公積金: ");</p><p>  scanf("%d",&em[i

70、].gjj);</p><p>  em[i].total=( em[i].jbgz+ em[i].zwgz + em[i].jt- em[i].yb- em[i].gjj);//計算該員工總工資</p><p>  printf("\n");</p><p>  count=count+1;</p><p>  prin

71、tf("已增加的人數(shù):\n");</p><p>  printf("%d\n",count);</p><p><b>  }</b></p><p>  printf("\n添加成功\n"); </p><p>  m=m+count;//將新添加員工的人數(shù)

72、加到總員工人數(shù)中</p><p>  printf("\n增加后的所有職工信息:\n");</p><p>  printf("\n");</p><p><b>  save(m);</b></p><p>  display();//顯示添加后的信息</p>&l

73、t;p>  fclose(fp);</p><p><b>  }</b></p><p>  void search()/*查詢函數(shù)*/</p><p><b>  {</b></p><p>  int t,button;</p><p>  system(&quo

74、t;cls");//清屏</p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("\n按1 按工號查詢\n按2 按姓名查詢\n按3 回主菜單\n");</p><p>  scanf("%d&quo

75、t;,&t);</p><p>  if(t>=1&&t<=3)</p><p><b>  {</b></p><p><b>  button=1;</b></p><p><b>  break;</b></p><

76、p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  button=0;</b></p><p>  printf("輸入錯誤");</

77、p><p><b>  }</b></p><p><b>  }</b></p><p>  while(button==0);//回到查詢選擇項</p><p>  while(button==1)</p><p><b>  {</b></p&g

78、t;<p>  switch(t)//選擇查詢方式</p><p><b>  { </b></p><p>  case 1:printf("按工號查詢\n");search_num();break;</p><p>  case 2:printf("按姓名查詢\n");search_na

79、me();break;</p><p>  case 3:main();break;</p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>

80、</p><p>  void search_num()//按職工號查詢</p><p><b>  {</b></p><p><b>  int a;</b></p><p><b>  int i,t;</b></p><p>  int m=lo

81、ad();</p><p>  printf("請輸入要查找的職工號:\n");</p><p>  scanf("%d",&a);</p><p>  for(i=0;i<m;i++)</p><p>  if(a==em[i].num)</p><p><

82、b>  { </b></p><p>  printf("職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n");</p><p>  printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].

83、name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); </p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(i==m) </p><p>  pr

84、intf("\n對不起,查無此人\n");</p><p>  printf("\n");</p><p>  printf("返回查詢函數(shù)請按1,繼續(xù)查詢職工號請按2\n");</p><p>  scanf("%d",&t);</p><p><

85、b>  switch(t)</b></p><p><b>  { </b></p><p>  case 1:search();break;</p><p>  case 2: break;</p><p>  default:break;</p><p><b> 

86、 }</b></p><p><b>  }</b></p><p>  void search_name()</p><p><b>  {</b></p><p>  char name[30];</p><p><b>  int i,t;<

87、/b></p><p>  int m=load();</p><p>  printf("請輸入姓名:\n");</p><p>  scanf("%s",name);</p><p>  for(i=0;i<m;i++)</p><p>  if(strcmp(e

88、m[i].name,name)==0)</p><p><b>  {</b></p><p>  printf("\n已找到,其記錄為:\n");</p><p>  printf("職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n");</p>

89、;<p>  printf("\n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); </p><p><b>  }</b><

90、/p><p><b>  if(i==m) </b></p><p>  printf("\n\n");</p><p>  printf("\n");</p><p>  printf("返回查詢菜單請按1,繼續(xù)查詢姓名請按2\n");</p>&l

91、t;p>  scanf("%d",&t);</p><p><b>  switch(t)</b></p><p><b>  { </b></p><p>  case 1:search();break;</p><p>  case 2:break;</p

92、><p>  default :break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void modify() /*修改函數(shù)*/</p><p><b>  {</b></p>&l

93、t;p><b>  int num;</b></p><p>  char name[20];</p><p>  int jbgz; </p><p><b>  int zwgz;</b></p><p><b>  int jt;</b></p>&

94、lt;p><b>  int yb;</b></p><p><b>  int gjj;</b></p><p>  int b,c,i,n,t,button; </p><p>  int m=load();</p><p>  system("cls");</p

95、><p>  printf("\n 原來的職工信息:\n");</p><p>  display(); </p><p>  printf("\n");</p><p>  printf("請輸入要修改的職工的姓名:\n");</p><p>  scanf(&

96、quot;%s",name);</p><p>  for(button=1,i=0;button&&i<m;i++)</p><p><b>  {</b></p><p>  if(strcmp(em[i].name,name)==0)</p><p><b>  {<

97、/b></p><p>  printf("\n此人原始記錄為:\n");</p><p>  printf("職工號 姓名 基本工資 職務工資 津貼 醫(yī)療保險 公積金 總工資 \n");</p><p>  printf("\n %-6d%-6s %-8d %-8d %-8d

98、 %-8d %-8d %-8d ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total); </p><p>  printf("\n確定 按1 ; 不修改請按0\n");</p><p>  scanf("%d",

99、&n);</p><p><b>  if(n==1)</b></p><p><b>  {</b></p><p>  printf("\n需要進行修改的選項\n 1.職工號 2.姓名 3.基本工資 4.職務工資 5.津貼 6.醫(yī)療保險 7.公積金 8.返回上層\n"); </p&g

100、t;<p>  printf("請選擇序號1-8:\n"); </p><p>  scanf("%d",&c); </p><p>  if(c>8||c<1) </p><p>  printf("\n選擇錯誤,請重新選擇!\n"); </p>&

101、lt;p><b>  }</b></p><p><b>  button=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(button==1)</p><

102、;p>  printf("\n查無此人\n"); </p><p><b>  do </b></p><p><b>  {</b></p><p>  switch(c) /*因為當找到第i個職工時,for語句后i自加了1,所以下面的應該把改后的信息賦值給第i-1個人*/<

103、/p><p><b>  { </b></p><p>  case 1:printf("職工號改為: ");</p><p>  scanf("%d",&num);</p><p>  em[i-1].num=num;</p><p><b&g

104、t;  break; </b></p><p>  case 2:printf("姓名改為: ");</p><p>  scanf("%s",name);</p><p>  strcpy(em[i-1].name,name); </p><p><b>  break; &

105、lt;/b></p><p>  case 3:printf("基本工資改為: ");</p><p>  getchar();</p><p>  scanf("%d",&jbgz);</p><p>  em[i-1].jbgz=jbgz;</p><p>  

106、em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b>  break; </b></p><p>  case 4:printf("職務工資改為: ");</p><p>  scanf(

107、"%d",&zwgz);</p><p>  em[i-1].zwgz=zwgz;</p><p>  em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b>  break; </b&g

108、t;</p><p>  case 5:printf("津貼改為: ");</p><p>  scanf("%d",&jt);</p><p>  em[i-1].jt=jt; </p><p>  em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em

109、[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b>  break; </b></p><p>  case 6:printf("醫(yī)療保險改為: ");</p><p>  scanf("%d",&yb);</p><p>  

110、em[i-1].yb=yb;</p><p>  em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><p><b>  break; </b></p><p>  case 7:printf("公積金改為: &

111、quot;);</p><p>  scanf("%d",&gjj);</p><p>  em[i-1].gjj=gjj;</p><p>  em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);</p><

112、;p><b>  break; </b></p><p>  case 8:modify(); </p><p><b>  break; </b></p><p><b>  } </b></p><p>  printf("\n");</

113、p><p>  printf("\n\n 確定修改 請按1 ; 重新修改 請按2: \n"); </p><p>  scanf("%d",&b);</p><p><b>  } </b></p><p>  while(b==2);</p><p&

114、gt;  printf("\n修改后的所有職工信息:\n");</p><p>  printf("\n");</p><p><b>  save(m);</b></p><p>  display();</p><p>  printf("\n按1 繼續(xù)修改 ,不再修

115、改請按0\n");</p><p>  scanf("%d",&t);</p><p><b>  switch(t)</b></p><p><b>  {</b></p><p>  case 1:modify();break;</p><

116、;p>  case 0:break;</p><p>  default :break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void sta()//統(tǒng)計函數(shù)</p><p><b>  {<

117、;/b></p><p><b>  int i;</b></p><p>  int sum=0; </p><p>  int a=0,b=0,c=0;</p><p>  int m=load();</p><p>  system("cls");//清屏函數(shù)<

118、;/p><p>  for(i=0;i<m;i++) /*m為輸入部分的職工人數(shù)*/</p><p>  {sum+=em[i].total;</p><p>  if((em[i].total)<=1500&&em[i].total>=1000) </p><p><b>  {a++;}</b

119、></p><p>  if(em[i].total>1500&&em[i].total<=2000) </p><p><b>  {b++;}</b></p><p>  if(em[i].total>2000) </p><p><b>  {c++;}</b

120、></p><p><b>  }</b></p><p>  printf("\n\n工資總額為:%d\n",sum);</p><p>  printf("平均工資為:%d\n",sum/m);</p><p>  printf("\n基本工資、職務工資、津貼之

121、和\n");</p><p>  printf("在1000-1500圓的員工占總員工的百分之%d\n",a*100/m); </p><p>  printf("在1500-2000圓的員工占總員工的百分之%d\n",b*100/m); </p><p>  printf("在2000圓以上的員工占總員工

122、的百分之%d\n",c*100/m);</p><p>  printf("\n\n按任意鍵繼續(xù)");</p><p><b>  getch();</b></p><p><b>  menu();</b></p><p><b>  }</b>

123、</p><p>  void main()//主函數(shù)</p><p><b>  { </b></p><p>  int n,button;</p><p><b>  char a; </b></p><p><b>  start();</b>

124、;</p><p><b>  getch();</b></p><p><b>  menu(); </b></p><p><b>  do</b></p><p><b>  {</b></p><p>  printf(&

125、quot;功能選擇(1--8):\n");</p><p>  scanf("%d",&n);</p><p>  if(n>=1&&n<=7)</p><p><b>  {</b></p><p><b>  button=1;</b&

126、gt;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  butto

127、n=0;</b></p><p>  printf("您輸入有誤,請重新選擇!");</p><p><b>  }</b></p><p><b>  }</b></p><p>  while(button==0);</p><p>  w

128、hile(button==1)</p><p><b>  {</b></p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1: input();break;</p><p> 

129、 case 2: display();break;</p><p>  case 3: search();break; </p><p>  case 4:del();break;</p><p>  case 5: add();break;</p><p>  case 6:modify();break;</p><p&

130、gt;  case 7:sta();break;</p><p>  case 8:exit(0);break;</p><p>  default :break;</p><p><b>  }</b></p><p>  getchar();</p><p>  printf("\n

131、");</p><p>  printf("按任意鍵繼續(xù)\n");</p><p><b>  getch();</b></p><p>  system("cls"); /*清屏*/</p><p>  menu(); /*調用菜單函數(shù)*/</p>&l

132、t;p>  printf("功能選擇(1--8):\n");</p><p>  scanf("%d",&n);</p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  }<

133、;/b></p><p><b>  運行結果及截圖</b></p><p><b>  歡迎畫面</b></p><p><b>  菜單</b></p><p><b>  輸入功能</b></p><p><b&g

134、t;  顯示功能</b></p><p><b>  統(tǒng)計功能</b></p><p><b>  刪除功能</b></p><p><b>  添加功能</b></p><p><b>  修改功能</b></p><p&

135、gt;<b>  心得體會</b></p><p>  通過這兩周的c語言課程設計,我加深了對c語言程序設計的理解,使自己的操作更加熟練,發(fā)現(xiàn)了自己的不足,為自己今后的繼續(xù)學習指明了方向。在這次課程設計中,我鞏固所了學過的知識,能用匯編語言熟練地運用順序、選擇、循環(huán)三大結構,進一步掌握結構體數(shù)組的使用,文件函數(shù)的使用,掌握了子程序的定義及調用。并在調試過程中不斷發(fā)現(xiàn)與改正錯誤,完善算法,改進

136、用戶體驗等等。調試索然繁瑣而艱苦,但極大的促進了我編程能力的提高。</p><p>  由于自己目前能力有限,該程序還有諸多不足,感謝指正。感謝老師的悉心教導與細致的幫助。雖然c語言的課程與課程設計都已結束,但通過這次課程設計我也發(fā)現(xiàn)了差距,并將在未來努力學習,積極實踐,使自己能真正的掌握運用c語言。</p><p><b>  參考文獻</b></p>

溫馨提示

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

評論

0/150

提交評論