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

下載本文檔

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

文檔簡介

1、<p><b>  C語言設(shè)計報告</b></p><p><b>  題目:工資管理系統(tǒng)</b></p><p>  學(xué)院: 化學(xué)工程學(xué)院</p><p><b>  專業(yè):制藥工程</b></p><p><b>  班級: </b><

2、/p><p><b>  題目:工資管理系統(tǒng)</b></p><p>  一、選題背景:工資管理是一個很實用的系統(tǒng),有一個這樣的系統(tǒng)可以有效的減少不必要的操作,真正的提高工作效率,正因為這樣我才選擇了它。</p><p>  二、設(shè)計思路:我的工資管理系統(tǒng)有17個選項,可以說功能十分強(qiáng)大??梢凿浫胄彰兔總€人的工資,也可以有效的計算每個人的工資,等

3、到真正需要時就可以很方便的將其調(diào)用出來,還可以計算每個人的稅金。</p><p><b>  三、所用知識:</b></p><p>  應(yīng)用二維數(shù)組;調(diào)用函數(shù);應(yīng)用了順序語句,循環(huán)語句for,選擇語句if ... else ,和while語句,break語句以及邏輯運算及函數(shù)調(diào)用。</p><p>  主要解決問題的方法:</p&g

4、t;<p>  職工的工資發(fā)放問題,更加的方便了工資的管理和發(fā)放,不易出現(xiàn)錯誤。</p><p><b>  四、流程圖:</b></p><p><b>  Y </b></p><p><b>  N</b></p><p><b>  Y</

5、b></p><p><b>  N</b></p><p><b>  五、程序清單:</b></p><p>  #include "stdio.h、、" </p><p>  #include "bios.h" </p>&l

6、t;p>  #include "dos.h" </p><p>  #include "conio.h" </p><p>  #include "stdlib.h" </p><p>  #include "string.h" </p><p&

7、gt;  #include "mem.h" </p><p>  #include "ctype.h" </p><p>  #include "alloc.h" </p><p>  typedef struct z1 </p><p><b>  {</

8、b></p><p>  char no[11]; </p><p>  char name[15]; </p><p>  float jbgz; </p><p>  float koukuan; </p><p>  float yfgz; </p><p>  

9、float shuijin; </p><p>  float sfgz; </p><p>  struct z1 *prior;</p><p>  struct z1 *next;</p><p>  }SALARY; </p><p>  struct z1 *First; </p>

10、;<p>  struct z1 *Last; </p><p>  void init(); </p><p>  void create(); </p><p>  void calc(); </p><p>  void delete(); </p><p>  void searc

11、h(); </p><p>  void save(); </p><p>  void load(); </p><p>  void computer(); </p><p>  void insert(); </p><p>  void append(); </p><p>  v

12、oid copy(); </p><p>  void sort(); </p><p>  void index(); </p><p>  void total(); </p><p>  void list(); </p><p>  void print(SALARY *p); </p>

13、<p>  void display(); </p><p>  float fax(float x); </p><p>  int menu_select(); </p><p><b>  main()</b></p><p><b>  {</b></p><

14、;p><b>  int i;</b></p><p><b>  clrscr();</b></p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  switch(menu_select())

15、 </p><p><b>  {</b></p><p>  case 0:init();break; </p><p>  case 1:create();break; </p><p>  case 2:list();break; </p><p>  case 3:displa

16、y();break; </p><p>  case 4:calc();break; </p><p>  case 5:search();break; </p><p>  case 6:delete();break; </p><p>  case 7:insert();break; </p><p> 

17、 case 8:append();break; </p><p>  case 9:save();break; </p><p>  case 10:load(); break; </p><p>  case 11:copy();break; </p><p>  case 12:sort();break; </p>

18、<p>  case 13:computer();break;</p><p>  case 14:index();break; </p><p>  case 15:total();break; </p><p>  case 16:exit(0); </p><p><b>  }</b></

19、p><p><b>  }</b></p><p><b>  }</b></p><p>  /*菜單函數(shù),函數(shù)返回值為整型,代表所選的菜單項*/</p><p>  menu_select()</p><p><b>  {</b></p>

20、<p>  char *f[]= { /*定義菜單字符串?dāng)?shù)組*/</p><p>  "**************MENU*************", /*菜單的標(biāo)題行*/</p><p>  " 0. init list", /*初始化雙鏈表*/</p><p>  " 1. Enter l

21、ist", /*輸入數(shù)據(jù),創(chuàng)建雙鏈表*/</p><p>  " 2. List all \n", /*顯示所有記錄*/</p><p>  " 3. Display record by step", /*顯示單條記錄*/</p><p>  " 4. Calc the salary", /*計

22、算實發(fā)工資*/</p><p>  " 5. Search record on name", /*查找記錄*/</p><p>  " 6. Delete a record", /*刪除記錄*/</p><p>  " 7. Insert record to list", /*插入記錄*/</p>

23、;<p>  " 8. Append record to file", /*追加記錄*/</p><p>  " 9. Save data to the file", /*保存文件*/</p><p>  " 10. Load data from the file",/*讀取文件*/</p><

24、;p>  " 11. Copy the file to new file", /*復(fù)制文件*/</p><p>  " 12. Sort on sfgz", /*排序*/</p><p>  " 13. Computer ticket number", /*計算所需票面數(shù)*/</p><p>  &

25、quot; 14. Index on number", /*索引*/</p><p>  " 15. Total on number", /*分類合計*/</p><p>  " 16. Quit" }; /*退出*/</p><p>  char s[80];</p><p><

26、b>  int i;</b></p><p>  int key=0; /*記錄所壓鍵值*/</p><p><b>  int c=0;</b></p><p>  gotoxy(1,25); /*移動光標(biāo)*/</p><p>  printf("press any key enter m

27、enu......\n");/*壓任意鍵進(jìn)入主菜單*/</p><p><b>  getch();</b></p><p>  clrscr(); /*清屏*/</p><p>  textcolor(YELLOW); /*設(shè)置文本顏色為黃色*/</p><p>  textbackground(BLUE)

28、; /*設(shè)置背景顏色為蘭色*/</p><p>  gotoxy(10,2);</p><p>  putch(0xda); /*輸出左上角邊框┏*/</p><p>  for(i=1;i<44;i++)</p><p>  putch(0xc4); /*輸出上邊框水平線*/</p><p>  putch(

29、0xbf); /*輸出右上角邊框 ┓*/</p><p>  for(i=3;i<22;i++)/*輸出左右兩邊的垂直線*/</p><p><b>  {</b></p><p>  gotoxy(10,i);putch(0xb3);</p><p>  gotoxy(54,i);putch(0xb3);&l

30、t;/p><p><b>  }</b></p><p>  gotoxy(10,22);putch(0xc0); /*輸出左上角邊框┗*/</p><p>  for(i=1;i<44;i++)</p><p>  putch(0xc4); /*輸出下邊框水平線*/</p><p>  pu

31、tch(0xd9); /*輸出右下角邊框┛*/</p><p>  window(11,3,53,21); /* 制作顯示菜單的窗口,大小根據(jù)菜單條數(shù)設(shè)計*/</p><p>  clrscr(); /*清屏*/</p><p>  for(i=0;i<18;i++)</p><p><b>  {</b>&

32、lt;/p><p>  gotoxy(10,i+1);</p><p>  cprintf("%s",f[i]); /*輸出菜單項數(shù)組*/</p><p><b>  }</b></p><p><b>  i=1;</b></p><p>  gotoxy(

33、10,2); /*設(shè)置默認(rèn)選項在第一項*/</p><p>  textbackground(LIGHTGREEN);/*設(shè)置背景顏色為淺綠*/</p><p>  cprintf("%s",f[1]); /*輸出菜單項,表示選中*/</p><p>  gotoxy(10,2); /*移動光標(biāo)到菜單的第一項*/</p>&l

34、t;p>  while(key!=13) /*所壓鍵不是回車鍵時*/</p><p><b>  {</b></p><p>  while(bioskey(1)==0); /*查詢是否壓下了一個鍵*/</p><p>  key=bioskey(0); /*返回下一個在鍵盤壓下的鍵*/</p><p>

35、  key=key&0xff?key&0xff:key>>8; /*對所壓的鍵進(jìn)行判斷*/</p><p>  gotoxy(10,i+1);</p><p>  textbackground(BLUE);/*設(shè)置背景顏色為藍(lán)色*/</p><p>  cprintf("%s",f[i]); /*輸出菜單項*/<

36、;/p><p>  if(key==72) i=i==1?17:i-1; </p><p>  if(key==80)i=i==17?1:i+1;</p><p>  gotoxy(10,i+1); /*光標(biāo)移動i的下一項*/</p><p>  textbackground(LIGHTGREEN); /*將背景顏色設(shè)為淺綠*/</p>

37、;<p>  cprintf("%s",f[i]); /*輸出菜單項*/</p><p>  c=i-1; /*給代表菜單選項的整數(shù)賦值*/</p><p><b>  }</b></p><p>  textbackground(BLACK); /*設(shè)置背景顏色為黑色*/</p><

38、p>  window(1,1,80,25); /*恢復(fù)原窗口大小*/</p><p>  return c; /*返回代表菜單選項的整數(shù)值*/</p><p><b>  }</b></p><p><b>  /*初始化函數(shù)*/</b></p><p>  void init()<

39、/p><p><b>  {</b></p><p>  First=NULL;</p><p>  Last=NULL;</p><p><b>  }</b></p><p>  /*輸入數(shù)據(jù),創(chuàng)建雙鏈表*/</p><p>  void create

40、()</p><p><b>  {</b></p><p>  int x; /*記錄行坐標(biāo)*/</p><p>  int i; /*記錄輸入記錄數(shù)*/</p><p>  int flag=0; /*做結(jié)束標(biāo)記*/</p><p>  float temp; /*定義臨時變量*/<

41、/p><p>  SALARY *info,*p; /*定義臨時變量*/</p><p>  if(First!=NULL)</p><p>  init();/*如果頭指針為空,調(diào)用初始化函數(shù)*/</p><p>  p=First; /*從頭指針開始*/</p><p><b>  for(;;)</b

42、></p><p><b>  {</b></p><p>  if(flag==1)</p><p>  break; /*如果flag=1,結(jié)束輸入*/</p><p><b>  i=0;</b></p><p>  x=0; /*確定移動的行坐標(biāo)*/<

43、/p><p>  clrscr(); /*清屏*/</p><p>  gotoxy(1,3);</p><p>  printf("*************gongziguanli*************");/*輸出標(biāo)題*/</p><p>  gotoxy(1,4);</p><p>  pr

44、intf(" --Enter @ end--");/*提示輸入@結(jié)束*/</p><p>  gotoxy(1,5);</p><p>  printf("|------------------------------------|");/*輸出表格的起始線*/</p><p>  g

45、otoxy(1,6);</p><p>  printf("| no | name | jbgz |");/*輸出字段標(biāo)題,注意空格數(shù)*/</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p&g

46、t;  gotoxy(1,7+x);</p><p>  printf("|----------|----------------|--------|");/*輸出表格的水平線*/</p><p>  info=(SALARY *)malloc(sizeof(SALARY));/*申請一個記錄空間*/</p><p><b>  if(

47、!info)</b></p><p><b>  {</b></p><p>  printf("\nout of memory");/*如沒有得到空間,輸出內(nèi)存溢出信息*/</p><p>  exit(0);/*退出程序*/</p><p><b>  }</b>

48、</p><p>  info->next=NULL;/*新結(jié)點的后繼為空*/</p><p>  info->prior=NULL;/*新結(jié)點的前驅(qū)為空*/</p><p>  gotoxy(1,8+x);printf("|"); /*輸出數(shù)據(jù)間的分割線*/</p><p>  gotoxy(12,8+x);

49、printf("|");</p><p>  gotoxy(29,8+x);printf("|");</p><p>  gotoxy(38,8+x);printf("|");</p><p>  gotoxy(2,8+x);/*光標(biāo)到輸入編號位置*/</p><p>  input

50、s(info->no,10);/*輸入編號,并驗證長度不超過10*/</p><p>  if(info->no[0]=='@')</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  break

51、;</b></p><p>  } /*編號首字符為@結(jié)束輸入*/</p><p>  gotoxy(13,8+x); /*光標(biāo)到輸入姓名位置*/</p><p>  inputs(info->name,14); /*輸入姓名,并驗證長度不超過14*/</p><p>  gotoxy(30,8+x); /*光標(biāo)到輸入基本

52、工資位置*/</p><p>  scanf("%f",&temp); /*輸入基本工資到臨時變量*/</p><p>  info->jbgz=temp; /*基本工資賦值*/</p><p>  info->koukuan=0; /*初始扣款為0,待計算工資時輸入*/</p><p>  info-

53、>sfgz=0; /*初始實發(fā)工資為0,待計算工資時計算*/</p><p>  info->shuijin=0; /*初始稅金為0,待計算工資時計算*/</p><p>  info->yfgz=0; /*初始應(yīng)發(fā)工資為0,待計算工資時計算*/</p><p>  if(p==NULL)/*如果p為空,說明輸入的是第一個結(jié)點*/</p>

54、;<p><b>  {</b></p><p>  First=Last=info;/*頭指針和尾指針*/</p><p>  First->prior=NULL; /*頭指針的前驅(qū)是空*/</p><p>  Last->next=NULL; /*尾指針的后繼是空*/</p><p><

55、;b>  }</b></p><p>  else /*插入的結(jié)點不是第一結(jié)點,則插入在頭結(jié)點之前*/</p><p><b>  {</b></p><p>  info->next=p;/*新結(jié)點的后繼指向原來的頭結(jié)點*/</p><p>  info->prior=p->prio

56、r;/*新結(jié)點的前驅(qū)指向原來的頭結(jié)點的前驅(qū)*/</p><p>  p->prior=info;/*原來結(jié)點的前驅(qū)指向新結(jié)點*/</p><p><b>  }</b></p><p>  p=info; /*新結(jié)點變?yōu)閜結(jié)點,暫時的頭結(jié)點*/</p><p>  First=info; /*新結(jié)點變?yōu)轭^結(jié)點*/

57、</p><p>  x+=2; /*因為水平線,將光標(biāo)下移兩行*/</p><p>  gotoxy(1,8+x);</p><p>  i++; /*輸入記錄數(shù)加1*/</p><p>  if(i%9==0)</p><p>  break; /*輸入9個記錄,換一頁輸入*/</p><

58、;p><b>  }</b></p><p>  gotoxy(1,8+x);</p><p><b>  }</b></p><p>  printf("|----------|----------------|--------|");/*輸出結(jié)尾水平線*/</p><p&g

59、t;<b>  }</b></p><p>  /*字符串輸入和驗證函數(shù)*/</p><p>  inputs(char *s, int count)</p><p><b>  {</b></p><p>  char p[255];</p><p><b>  

60、do{</b></p><p>  scanf("%s",p);/*輸入字符串*/</p><p>  if(strlen(p)>count)printf("\n too long! \n");/*進(jìn)行長度校驗,超過count值重輸入*/</p><p>  }while(strlen(p)>count

61、);</p><p>  strcpy(s,p); /*將輸入的字符串拷貝到字符串s中*/</p><p><b>  }</b></p><p><b>  /*顯示鏈表*/</b></p><p>  void list()</p><p><b>  {<

62、;/b></p><p>  int i=0,n; /*記錄輸出行數(shù)*/</p><p>  SALARY *p; /*定義移動指針*/</p><p>  clrscr(); /*清屏*/</p><p>  p=First; /*從頭指針開始*/</p><p>  while(i%10==0&

63、&p!=NULL) /*外循環(huán)控制換頁*/</p><p><b>  {</b></p><p>  i=0; /*記錄一頁的輸出行數(shù)*/</p><p>  clrscr(); /*清屏*/</p><p>  printf("\n\n\n"); /*換行三次*/<

64、/p><p>  printf("*************************************SALARY***********************************\n"); /*輸出大標(biāo)題*/</p><p>  printf("|nO | name | jbgz | koukuan | y

65、fgz | shuijin | sfgz |\n"); /*輸出字段標(biāo)題*/</p><p>  printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*輸出水平線*/</p><p>  while(p!=NULL)

66、 /*當(dāng)p不為空時*/</p><p><b>  {</b></p><p>  printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",</p><p>  p->no,p->name,p->jbgz,p->koukuan,p->yfg

67、z,p->shuijin,p->sfgz);</p><p>  p=p->next; /*指針后移*/</p><p>  i++; /*輸出行數(shù)加1 */</p><p>  if(i%10==0)</p><p>  break; /*如果滿10行,跳出內(nèi)循環(huán)*/</p><p><

68、;b>  }</b></p><p>  printf("****************************************end***********************************\n"); /*輸出本頁的結(jié)束行*/</p><p>  printf("Press any key congtinue...\

69、n");</p><p>  getch(); /*輸出一頁暫停一下,壓任意鍵繼續(xù)*/</p><p>  } /*返回到外循環(huán),準(zhǔn)備下一頁的輸出*/</p><p><b>  }</b></p><p>  /*單條顯示記錄*/</p><p>  void display()&l

70、t;/p><p><b>  {</b></p><p>  int ch; /*菜單選項字符*/</p><p>  SALARY *p; /*定義臨時指針*/</p><p>  clrscr(); /*清屏*/</p><p>  p=First; /*從頭指針開始*/</p&g

71、t;<p>  if(p==NULL) /*指針為空,即鏈表為空,返回主函數(shù)*/</p><p><b>  {</b></p><p>  printf("record is empty!\n");</p><p><b>  return;</b></p><p&

72、gt;<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  print(p); /*調(diào)用輸出函數(shù)顯示頭結(jié)點信息*/</p><p>  for(;;) /*循環(huán)開始*/</p>&l

73、t;p><b>  {</b></p><p>  printf("\n\n0. Quit 1. Prior 2. Next 3. First 4.Last \n\n");</p><p>  /*菜單項Quit退出 Prior前驅(qū) Next后繼 First第一條 Last最后一條*/</p>

74、;<p>  printf("\nplease select 0~4:"); /*提示輸入菜單選項0~4*/</p><p>  scanf("%d",&ch); /*輸入菜單選項0~4*/</p><p>  if(ch==0) break; /*如果選項為0,退出*/</p><p>  switc

75、h(ch) /*開關(guān)語句根據(jù)選項字符判斷*/</p><p><b>  {</b></p><p>  case 1:p=p->prior;if(p==NULL)p=First;break; /*指向前驅(qū),沒有前驅(qū)指向第一個*/</p><p>  case 2:p=p->next;if(p==NULL) p=Last;br

76、eak; /*指向后繼,沒有后繼指向最后一個*/</p><p>  case 3:p=First;break; /*指向第一個結(jié)點*/</p><p>  case 4:p=Last;break; /*指向最后一個結(jié)點*/</p><p><b>  }</b></p><p>  print(p); /*調(diào)用輸出

77、函數(shù)顯示指針?biāo)附Y(jié)點信息*/</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*輸出指針?biāo)附Y(jié)點信息*/</p><p>  void print(SALARY

78、 *p)</p><p><b>  {</b></p><p>  if(p) /*如果指針不為空,則顯示信息*/</p><p><b>  {</b></p><p>  clrscr(); /*清屏*/</p><p>  printf("\n\n\n

79、"); /*換行*/</p><p>  printf("************************************SALARY************************************\n"); /*輸出標(biāo)題信息*/</p><p>  printf("|no | name | j

80、bgz | koukuan| yfgz | shuijin | sfgz |\n"); /*輸出字段標(biāo)題*/</p><p>  printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*輸出分割線*/</p><p&g

81、t;  printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n", p->no,p->name,</p><p>  p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*輸出結(jié)點信息*/</p><p>  printf("

82、;***************************************end***************************** *******\n"); /*輸出結(jié)束標(biāo)記*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*計算實發(fā)工資*

83、/</p><p>  void calc()</p><p><b>  {</b></p><p>  int x; /*行坐標(biāo)*/</p><p>  int i=0; /*記錄數(shù)*/</p><p>  float temp; /*臨時變量扣款*/</p><p>

84、  SALARY *p; /*移動指針*/</p><p>  clrscr(); /*清屏*/</p><p>  p=First; /*從頭指針開始*/</p><p>  while(p!=NULL) /*當(dāng)p不為空時,也就是有記錄時,外循環(huán)控制換頁*/</p><p><b>  {</b></p

85、><p><b>  x=0;</b></p><p><b>  clrscr();</b></p><p>  gotoxy(1,3);</p><p>  printf("***************************gongziguanli*******************

86、*****************"); /*輸出標(biāo)題*/</p><p>  gotoxy(1,5);</p><p>  printf("|--------------------------------------------------------------------------|");</p><p>  gotoxy

87、(1,6);/*下面輸出字段標(biāo)題*/</p><p>  printf("| no | name | jbgz | koukuan | yfgz |shuijin | sfgz |");</p><p>  while(p!=NULL) /*當(dāng)p不為空時,也就是有記錄時,內(nèi)循環(huán)控制處理9條*/</p><

88、p><b>  {</b></p><p>  gotoxy(1,7+x);</p><p>  printf("|----------|----------------|--------|----------|--------|--------|--------|");</p><p>  gotoxy(1,8+x)

89、;printf("|");</p><p>  gotoxy(12,8+x);printf("|");</p><p>  gotoxy(29,8+x);printf("|");</p><p>  gotoxy(38,8+x);printf("|");</p><p

90、>  gotoxy(49,8+x);printf("|");</p><p>  gotoxy(58,8+x);printf("|");</p><p>  gotoxy(67,8+x);printf("|");</p><p>  gotoxy(76,8+x);printf("|"

91、;);</p><p>  gotoxy(2,8+x);</p><p>  printf("%-10s",p->no); /*輸出編號*/</p><p>  gotoxy(13,8+x);</p><p>  printf("%-15s",p->name); /*輸出姓名*/</p

92、><p>  gotoxy(30,8+x);</p><p>  printf("%.2f",p->jbgz); /*輸出基本工資*/</p><p>  gotoxy(39,8+x);</p><p>  scanf("%f",&temp); /*輸入扣款*/</p>&l

93、t;p>  p->koukuan=temp; /*扣款字段賦值*/</p><p>  p->yfgz=p->jbgz-p->koukuan; /*計算應(yīng)發(fā)工資=基本工資-扣款*/</p><p>  gotoxy(50,8+x);</p><p>  printf("%.2f",p->yfgz); /*輸出

94、應(yīng)發(fā)工資*/</p><p>  gotoxy(59,8+x);</p><p>  p->shuijin=(p->yfgz-1000)*fax(p->yfgz); /*否則按稅率計算稅金*/</p><p>  printf("%.2f",p->shuijin); /*輸出稅金*/</p><p&g

95、t;  gotoxy(68,8+x);</p><p>  p->sfgz=p->yfgz-p->shuijin; /*計算實發(fā)工資*/</p><p>  printf("%-8.2f",p->sfgz); /*輸出實發(fā)工資*/</p><p>  x+=2; /*行坐標(biāo)下移兩行*/</p><

96、;p>  i++; /*記錄數(shù)加1*/</p><p>  if(i%9==0)break; /*記錄數(shù)超過9條,跳出內(nèi)循環(huán)*/</p><p>  p=p->next; /*指針后移,處理下一條*/</p><p><b>  }</b></p><p>  gotoxy(1,7+x);</

97、p><p>  printf("|----------|----------------|--------|----------|--------|--------|--------|\n"); /*輸出結(jié)束行*/</p><p>  printf("Press any key congtinue...\n");</p><p>

98、<b>  getch();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*根據(jù)應(yīng)發(fā)工資,計算稅率*/</p><p>  float fax(float x)</p><p><b

99、>  {</b></p><p><b>  float f1;</b></p><p>  if(x<1000)</p><p>  return 0; /*小于1000,返回0*/</p><p>  switch((int)(x/1000))</p><p>&l

100、t;b>  {</b></p><p>  case 1:f1=0.05;break; /*1000~1999,返回0.05*/</p><p>  case 2:f1=0.1;break; /*2000~2999,返回0.1*/</p><p>  case 3:f1=0.15;break; /*3000~3999,返回0.15*/</p&

101、gt;<p>  case 4:f1=0.2;break; /*4000~4999,返回0.2*/</p><p>  default:f1=0.3;break; /*5000以上,返回0.3*/</p><p><b>  }</b></p><p>  return f1;</p><p><b&

102、gt;  }</b></p><p>  /*計算票面張數(shù)*/</p><p>  void computer()</p><p><b>  {</b></p><p>  SALARY *p;</p><p>  int i=0,a[7]={0},t100,t50,t20,t10,

103、t5,t2,t1;/*設(shè)置數(shù)組和臨時變量保存票面張數(shù)*/</p><p>  float t; /*過渡變量,保存當(dāng)前剩余工資*/</p><p>  p=First; /*移動指針從頭指針開始*/</p><p>  while(p!=NULL) /*當(dāng)p不為空時*/</p><p><b>  {</b>&l

104、t;/p><p>  t100=(int)p->sfgz/100; /*計算100元張數(shù)*/</p><p>  a[0]=a[0]+t100; /*累加保存*/</p><p>  t=p->sfgz-t100*100; /*剩余工資*/</p><p>  t50=(int)(t/50); /*計算50元張數(shù)*/</p

105、><p>  a[1]=a[1]+t50; /*累加保存*/</p><p>  t=t-t50*50; /*剩余工資*/</p><p>  t20=(int)(t/20); /*計算20元張數(shù)*/</p><p>  a[2]=a[2]+t20; /*累加保存*/</p><p>  t=t-t20*20; /*剩

106、余工資*/</p><p>  t10=(int)(t/10); /*計算10元張數(shù)*/</p><p>  a[3]=a[3]+t10; /*累加保存*/</p><p>  t=t-t10*10; /*剩余工資*/</p><p>  t5=(int)(t/5); /*計算5元張數(shù)*/</p><p>  a[4]

107、=a[4]+t5; /*累加保存*/</p><p>  t=t-t5*5; /*剩余工資*/</p><p>  t2=(int)(t/2); /*計算2元張數(shù)*/</p><p>  a[5]=a[5]+t2; /*累加保存*/</p><p>  t=t-t2*2; /*剩余工資*/</p><p>  t1=(

108、int)(t); /*計算1元張數(shù)*/</p><p>  a[6]=a[6]+t1; /*累加保存*/</p><p>  p=p->next; /*指針后移,處理下一條記錄*/</p><p><b>  }</b></p><p>  clrscr(); /*清屏*/</p><p&g

109、t;  printf("\n\n\n***********ticket number***************\n"); /*輸出標(biāo)題*/</p><p>  printf("--100-----50------20-----10-----5------2------1------\n");</p><p>  /*輸出張數(shù)標(biāo)題*/</p&

110、gt;<p>  for(i=0;i<7;i++)</p><p>  printf("%5d ",a[i]);/*輸出所需的張數(shù)*/</p><p>  printf("\n");/*換行*/</p><p><b>  }</b></p><p>  /*

111、按編號查找記錄*/</p><p>  SALARY *find(char *no)</p><p><b>  {</b></p><p>  SALARY *p; /*定義移動指針*/</p><p>  p=First; /*從頭指針開始*/</p><p>  while(p) /*當(dāng)p

112、不為空時*/</p><p><b>  {</b></p><p>  if(!strcmp(no,p->no))</p><p>  return p; /*比較相等,查找成功,返回指針*/</p><p>  p=p->next; /*不相等指針后移*/</p><p><

113、b>  }</b></p><p>  printf("not found\n"); /*沒有找到*/</p><p>  return NULL; /*返回為空指針*/</p><p><b>  }</b></p><p><b>  /*刪除結(jié)點*/</b&g

114、t;</p><p>  void delete()</p><p><b>  {</b></p><p>  SALARY *p; /*定義臨時變量,p指向要刪除的結(jié)點p*/</p><p>  char s[11]; /*要刪除結(jié)點的編號*/</p><p>  clrscr(); /*清

115、屏*/</p><p>  printf("please deleted no\n"); /*提示輸入信息*/</p><p>  scanf("%s",s); /*輸入要刪除的職工編號*/</p><p>  if((p=find(s))!=NULL) /*調(diào)用查找函數(shù),如果找到做下面的處理*/</p>&

116、lt;p><b>  {</b></p><p>  if(First==p) /*如果是第一個結(jié)點*/</p><p><b>  {</b></p><p>  First=p->next; /*將頭指針指向其后繼結(jié)點*/</p><p>  if(First) /*如

117、頭指針不為空*/</p><p>  First->prior=NULL; /*將頭結(jié)點的前驅(qū)設(shè)為空*/</p><p><b>  else</b></p><p>  Last=NULL; /*否則頭為空,尾也為空*/</p><p><b>  }</b></p>&

118、lt;p>  else /*刪除的不是第一個結(jié)點*/</p><p><b>  {</b></p><p>  p->prior->next=p->next; /*p的前驅(qū)的后繼指向p原來的后繼*/</p><p>  if(p!=Last) /*如果p不是最后個結(jié)點*/</p><p&g

119、t;  p->next->prior=p->prior; /*p后繼的前驅(qū)指向p原來的前驅(qū)*/</p><p><b>  else</b></p><p>  Last=p->prior;/*如p是最后一個結(jié)點,修改尾指針為p的前驅(qū)*/</p><p><b>  }</b></p>

120、<p>  free(p); /*刪除結(jié)點后,不要忘記釋放空間*/</p><p>  printf("\n have deleted %s SALARY\n",s);</p><p>  printf("Don't forget save\n");</p><p><b>  }</b

121、></p><p><b>  }</b></p><p>  /*按姓名查找結(jié)點*/</p><p>  void search()</p><p><b>  {</b></p><p>  SALARY *p; /*移動指針*/</p><p

122、>  char s[15]; /*保存姓名*/</p><p>  clrscr(); /*清屏*/</p><p>  printf("please enter name for search\n"); /*提示輸入*/</p><p>  scanf("%s",s); /*輸入要查找人的姓名*/</p>

123、;<p>  p=First; /*移動指針從頭指針開始*/</p><p>  while(strcmp(p->name,s)&&p!=NULL) /*做比較判斷*/</p><p>  p=p->next; /*沒找到,指針后移繼續(xù)查找*/</p><p>  if(p==NULL) /*指針為空,說明沒有找到*

124、/</p><p>  printf("\nlist no %s SALARY\n",s); /*顯示沒找到信息*/</p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("\n\n"); /*

125、換行*/</p><p>  print(p); /*查找成功,調(diào)用輸出函數(shù)輸出指針p所指記錄*/</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*插入結(jié)點*/</b></p><p> 

126、 void insert()</p><p><b>  {</b></p><p>  SALARY *p,*info; /* info為新結(jié)點,p為新結(jié)點的后繼*/</p><p>  char s[11]; /*保存查找的姓名*/</p><p>  float temp; /*臨時變量*/</p>

127、<p>  clrscr(); /*清屏*/</p><p>  printf("please enter location before the no\n"); /*提示輸入在哪個結(jié)點之前插入*/</p><p>  scanf("%s",s); /*輸入指定結(jié)點的編號*/</p><p>  printf(

128、"\nplease new record\n"); /*提示輸入記錄*/</p><p>  clrscr();/*清屏*/</p><p>  gotoxy(1,3); /*定位光標(biāo),按表格形式輸入新結(jié)點信息*/</p><p>  printf("**************gongziguanli************&quo

129、t;);</p><p>  gotoxy(1,5);</p><p>  printf("|------------------------------------|");</p><p>  gotoxy(1,6);</p><p>  printf("| no | name

130、| jbgz | ");</p><p>  gotoxy(1,7);</p><p>  printf("|----------|----------------|--------|");</p><p>  info=(SALARY *)malloc(sizeof(SALARY)); /*申請空間*/</p>&l

131、t;p><b>  if(!info)</b></p><p><b>  {</b></p><p>  printf("\nout of memory"); /*如沒有得到空間,內(nèi)存溢出*/</p><p>  exit(0); /*退出程序*/</p><p>&l

132、t;b>  }</b></p><p>  info->next=NULL; /*新結(jié)點的后繼為空*/</p><p>  info->prior=NULL; /*新結(jié)點的前驅(qū)為空*/</p><p>  gotoxy(1,8);printf("|");</p><p>  gotoxy(1

133、2,8);printf("|");</p><p>  gotoxy(29,8);printf("|");</p><p>  gotoxy(38,8);printf("|");</p><p>  gotoxy(2,8);</p><p>  inputs(info->no,

134、10); /*輸入新結(jié)點的編號,并校驗*/</p><p>  gotoxy(13,8);</p><p>  inputs(info->name,14); /*輸入新結(jié)點的姓名,并校驗*/</p><p>  gotoxy(30,8);</p><p>  scanf("%f",&temp); /*輸

135、入基本工資*/</p><p>  info->jbgz=temp; /*給基本工資字段賦值*/</p><p>  info->koukuan=0; /*扣款初始為0*/</p><p>  info->yfgz=0; /*應(yīng)發(fā)工資初始為0*/</p><p>  info->shuijin=0; /*稅金初始為

136、0*/</p><p>  info->sfgz=0; /*實發(fā)工資初始為0*/</p><p>  printf("|----------|----------------|--------|");</p><p>  p=First; /*移動指針從頭指針開始*/</p><p>  while(strcmp(

137、p->no,s)&&p!=NULL) /*查找結(jié)點確定插入位置*/</p><p>  p=p->next; /*指針后移,繼續(xù)查找*/</p><p>  if(p==NULL) /*如p為空*/</p><p>  if(p==First) /*如p為頭指針,說明鏈表為空*/</p><p><b&g

溫馨提示

  • 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

提交評論