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

下載本文檔

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

文檔簡介

1、<p><b>  C語言課程設計報告</b></p><p><b>  工資管理系統</b></p><p>  姓 名:______</p><p>  班 級:______</p><p>  指導老師:______</p><p>  日

2、 期:______</p><p><b>  題目要求</b></p><p><b>  工資信息管理系統</b></p><p><b>  【要求】</b></p><p>  該系統能夠實現工資信息管理。系統包括錄入、瀏覽、查詢、統計等功能。其中錄入功能要求能夠添加新

3、的工資信息到文件;瀏覽功能要求能按照工資卡號、姓名分類瀏覽,提供分屏顯示;有排序功能,排序后按照工資卡號升序或實發工資降序輸出;查詢功能要求能夠按照工資卡號、姓名查詢;統計功能要求能夠按照月份累計統計某職工在某時間段實發工資總金額。</p><p><b>  【提示】</b></p><p>  文件中一行數據對應一個職工工資信息</p><p&

4、gt;  工資信息的數據結構采用結構體數組,一個數組元素對應一條工資單記錄</p><p>  工資單信息包括工資卡號、姓名、月份、應發工資、水費、電費、稅金、實發工資等</p><p>  實發工資=應發工資-水費-電費-稅金,其中稅金的計算方法為</p><p>  a. 應發工資<800元,稅金=0</p><p>  b.

5、800<應發工資<1400元,稅金=(應發工資-800)*5%</p><p>  c. 應發工資>1400元,稅金=(應發工資-1400)*10%</p><p>  另: 課程實習報告的參考格式</p><p><b>  題目編號</b></p><p>  寫出系統總設計的思路、功能模塊劃分

6、。給出合理的測試數據及運行結果,要求能夠體現程序的正確性和完備性及對錯誤輸入的處理??偨Y算法或系統的優缺點,給出算法或系統進一步改進的設想。在附錄中給出源代碼,</p><p><b>  附錄</b></p><p><b>  需求分析</b></p><p>  根據題目要求,由于工資單信息是存放在文件中,所以應提供

7、文件的輸入、輸出等操作;在程序中需要瀏覽學生的信息,應提供錄入、瀏覽、查詢、統計等操作;另外還應提供鍵盤式選擇菜單實現功能選擇。</p><p><b>  三、 總體設計</b></p><p>  根據上面的需求分析,可以將這個系統的設計分為以下幾個模塊:數據輸入,數據添加,數據瀏覽,數據查詢,數據統計。</p><p>  圖一 系統

8、功能模塊圖</p><p><b>  四、詳細設計</b></p><p><b>  1.主函數</b></p><p>  主函數提供輸入、處理和輸出部分的函數調用。其中各功能模塊用菜單方式選擇。</p><p><b>  [流程圖]</b></p>&l

9、t;p>  圖二 主函數模塊功能流程圖</p><p><b>  [程序]</b></p><p>  main() /********************主函數**********************/</p><p><b>  { </b></p><p>  i

10、nt n,w; /*變量n保存選擇菜單數字,w判斷輸入的數字是否在功能菜單應對數字的范圍內*/</p><p>  do{ puts("\t\t**********MENU*************************\n\n");</p><p>  puts("\t\t\t\t 1.Enter new data");</p&g

11、t;<p>  puts("\t\t\t\t 2.add new data");</p><p>  puts("\t\t\t\t 3.Browse all");</p><p>  puts("\t\t\t\t 4.Search by name");</p><p>  puts("

12、;\t\t\t\t 5.Search by num");</p><p>  puts("\t\t\t\t 6.Count gongzi");</p><p>  puts("\t\t\t\t 7.Exit");</p><p>  puts("\n\n\t\t***********************

13、***********\n");</p><p>  printf("Choice your number(1-7):[ ]\b\b");</p><p>  scanf("%d",&n);</p><p>  if(n<1||n>7) {w=1;getchar();} /*對選擇的數字作判

14、斷*/</p><p>  else w=0;}</p><p>  while (w==1);</p><p><b>  switch(n)</b></p><p>  { case 1: enter();break; /*輸入模塊*/</p><p>  case 2: add();br

15、eak; /*添加模塊*/</p><p>  case 3: browse();break; /*瀏覽模塊*/</p><p>  case 4: search_name();break; /*查詢模塊*/</p><p>  case 5: search_num();break; /*查詢模塊*/</p><p>  

16、case 6: count();break; /*統計模塊*/</p><p>  case 7: exit(0);break; /*退出*/</p><p>  } /*其中4和5兩個模塊式在查詢要求的基礎上加上的模塊*/</p><p><b>  }</b></p><p><b>  2.各功

17、能模塊設計</b></p><p><b> ?。?)輸入函數</b></p><p><b>  【分析】</b></p><p>  單獨看各數據信息,姓名是字符型,可以采用字符型數組;工資卡號和月份是整數,采用整型;實發工資,水費,電費,稅金,應發工資有可能是小數可采用實型。數據信息存放在文件中,一條記錄

18、對應一個職工的工資單信息,既符合習慣也方便信息管理。同時把職工的工資卡號,姓名,月份,應發工資,水費,電費,稅金,實發工資作為結構體成員,用結構體數組存放若干個職工的工資信息。</p><p>  struct gz</p><p>  { int num;</p><p>  char name[20];</p><p>  int mo

19、nth;</p><p><b>  long ys;</b></p><p><b>  long ss;</b></p><p><b>  long wf;</b></p><p><b>  long ef;</b></p>&

20、lt;p>  long tax;</p><p>  } g[N]; /*g[N]中每個數組元素對應一個職工*/</p><p><b>  【流程圖】</b></p><p>  圖三 輸入模塊流程圖</p><p><b>  【程序】</b></p><p&g

21、t;<b>  enter()</b></p><p>  { int i,n;</p><p>  printf("How many gongzixinxi (0-%d)?:",N-1);</p><p>  scanf("%d",&n);</p><p>  print

22、f("\n Enter data now \n\n");</p><p>  for(i=0;i<n;i++)</p><p>  {printf("\nInput %dth gongzi record.\n",i+1);</p><p>  input(i);}</p><p><b&g

23、t;  sort();</b></p><p>  if(i!=0) save(n);</p><p>  printf_back();</p><p><b>  }</b></p><p><b> ?。?)添加模塊</b></p><p><b>

24、  【分析】</b></p><p>  該模塊的功能是用戶需要增加新的職工工資信息記錄,從鍵盤輸入并逐條寫入到原來的輸入文件中,注意采用追加而不是覆蓋的方式。</p><p><b>  【流程圖】</b></p><p>  圖四 添加模塊流程圖</p><p><b>  【程序】</b

25、></p><p><b>  add()</b></p><p>  { int i,n,m,k;</p><p><b>  FILE *fp;</b></p><p><b>  n=load();</b></p><p>  printf(

26、"Hoe mang people are you want to add(0-%d):",N-n-1);</p><p>  scanf("%d",&m);</p><p><b>  k=m+n;</b></p><p>  for(i=n;i<k;i++)</p><

27、p>  {printf("\ninput %dth salary record.\n",i-n+1);</p><p><b>  input(i);</b></p><p><b>  }</b></p><p><b>  sort();</b></p>

28、<p><b>  save(k);</b></p><p>  printf_back();</p><p><b>  }</b></p><p><b> ?。?)瀏覽模塊</b></p><p><b>  【分析】</b></p&

29、gt;<p>  該模塊的功能是顯示所有職工工資信息記錄。</p><p><b>  【流程圖】</b></p><p>  圖五 瀏覽模塊流程圖</p><p><b>  【程序】</b></p><p><b>  browse()</b></p&g

30、t;<p>  { int i,n;</p><p><b>  n=load();</b></p><p>  printf_face();</p><p>  for(i=0;i<n;i++)</p><p>  { if(i%10==0) {printf("\n\nPass any k

31、ey to contiune...");</p><p>  getch(); puts("\n\n");}</p><p>  printf_one(i); printf("\n");</p><p><b>  }</b></p><p>  printf(&quo

32、t;\tThere are %d record.\n",n);</p><p>  printf("\nPass any key to back....");</p><p><b>  getch();</b></p><p><b>  menu();</b></p>&l

33、t;p><b>  }</b></p><p> ?。?)按姓名查找模塊</p><p><b>  【分析】</b></p><p>  該模塊的功能是根據輸入的職工姓名查找對應的工資信息記錄。</p><p><b>  【流程圖】</b></p>&l

34、t;p>  圖六 按姓名查找模塊流程圖</p><p><b>  【程序】</b></p><p>  search_name()</p><p>  { int i,n,k,w1=1;</p><p>  struct gz s;</p><p><b>  n=load(

35、);</b></p><p><b>  do</b></p><p><b>  { k=-1;</b></p><p>  printf("\n\nEnter name that you want to search! name");</p><p>  s

36、canf("%s",s.name);</p><p>  printf_face();</p><p>  for(i=0;i<n;i++)</p><p>  if(strcmp(s.name,g[i].name)==0)</p><p>  {k=i; printf_one(k);}</p>&l

37、t;p><b>  if(k==-1)</b></p><p>  {printf("\n\nNo exist!please");</p><p>  printf("\n\nAre you again?\n\t 1).Again 2)No and back [ ]\b\b ");</p><p>

38、  scanf("%d",&w1);}</p><p>  }while(k==-1&&w1==1);</p><p><b>  menu();</b></p><p><b>  }</b></p><p> ?。?)按工資卡號查找模塊</p&g

39、t;<p><b>  【分析】</b></p><p>  該模塊的功能是根據輸入的職工工資卡號查找對應的工資信息記錄。</p><p><b>  【流程圖】</b></p><p>  圖七 按工資卡號查找模塊流程圖</p><p><b>  【程序】</b&

40、gt;</p><p>  search_num()</p><p>  { int i,n,k,w1=1;</p><p>  struct gz s;</p><p><b>  n=load();</b></p><p><b>  do</b></p>

41、<p><b>  { k=-1;</b></p><p>  printf("\n\nEnter number that you want to search! number");</p><p>  scanf("%d",&s.num);</p><p>  printf_fa

42、ce();</p><p>  for(i=0;i<n;i++)</p><p>  if(s.num==g[i].num)</p><p>  {k=i; printf_one(k);}</p><p><b>  if(k==-1)</b></p><p>  {printf(&quo

43、t;\n\nNo exist!please");</p><p>  printf("\n\nAre you again?\n\t 1).Again 2)No and back [ ]\b\b ");</p><p>  scanf("%d",&w1);}</p><p>  }while(k==-1&

44、;&w1==1);</p><p><b>  menu();</b></p><p><b>  }</b></p><p><b> ?。?)統計模塊</b></p><p><b>  【分析】</b></p><p>

45、;  該模塊的功能是根據用戶輸入的職工姓名和所統計的月份來計算得出某個時間段的工資總額。</p><p><b>  【流程圖】</b></p><p>  圖八 統計模塊流程圖</p><p><b>  【程序】</b></p><p><b>  count()</b>

46、</p><p>  {int i,j,k,n,sum=0;</p><p>  char name[20];</p><p><b>  n=load();</b></p><p>  printf("\nEnter the enployer's name: [ ]\t\t");<

47、;/p><p>  scanf("%s",name);</p><p>  printf("\nEnter the first month to count! month: [ ]\t\t");</p><p>  scanf("%d",&j);</p><p>  prin

48、tf("\nEnter the last month to count! month: [ ]\t\t");</p><p>  scanf("%d",&k);</p><p>  for(i=0;i<n;i++)</p><p>  if(strcmp(name,g[i].name)==0&&

49、;g[i].month>=j&&g[i].month<=k)</p><p>  {printf_one(i);</p><p>  sum=sum+g[i].ss;}</p><p>  printf("\nthe result of count: sum=%d\n",sum);</p><p&

50、gt;<b>  menu();</b></p><p><b>  }</b></p><p><b>  3.公共函數</b></p><p> ?。?)排序函數sort()</p><p><b>  【程序】</b></p><

51、p><b>  sort()</b></p><p><b>  {</b></p><p>  int i,j,n;</p><p>  struct gz t;</p><p><b>  n=load();</b></p><p>  for

52、(i=0;i<n;i++)</p><p>  for(j=i+1;j<n;j++)</p><p>  if(g[i].num>g[j].num)</p><p><b>  {t=g[i];</b></p><p>  g[i]=g[j];</p><p><b>

53、  g[j]=t;}</b></p><p><b>  }</b></p><p> ?。?)輸入函數input (int i)</p><p><b>  【程序】</b></p><p>  input (int i)</p><p>  { scanf(&

54、quot;%d%s%d%ld%ld%ld",&g[i].num,g[i].name,&g[i].month,&g[i].ys,&g[i].wf,&g[i].ef);</p><p><b>  tax(i);</b></p><p><b>  }</b></p><p>

55、 ?。?)保存函數save(int n)</p><p><b>  【程序】</b></p><p>  save(int n)</p><p>  { FILE *fp;</p><p><b>  int i;</b></p><p>  if((fp=fopen(&q

56、uot;salary.txt","w"))==NULL)</p><p>  { printf("\nCannot open file\n");</p><p>  return NULL;}</p><p>  for(i=0;i<n;i++)</p><p>  if(g[i].nu

57、m!=0)</p><p>  if(fwrite(&g[i],sizeof(struct gz),1,fp)!=1)</p><p>  printf("file write error\n");</p><p>  fclose(fp);</p><p><b>  }</b></p

58、><p> ?。?)稅金計算函數tax( int i)</p><p><b>  【程序】</b></p><p>  tax( int i)</p><p><b>  {</b></p><p>  if(g[i].ys<800) g[i].tax=0;</p&

59、gt;<p>  else if(800<g[i].ys&&g[i].ys<1400) g[i].tax=((g[i].ys-800)*5/100);</p><p>  else g[i].tax=((g[i].ys-1400)*5/100);</p><p>  g[i].ss=g[i].ys-g[i]

60、.wf-g[i].ef-g[i].tax;</p><p><b>  }</b></p><p> ?。?)加載函數load()</p><p><b>  【程序】</b></p><p><b>  load()</b></p><p>  { F

61、ILE *fp;</p><p><b>  int i;</b></p><p>  if((fp=fopen("salary.txt","r"))==NULL)</p><p>  {printf("\nCannot open file\n");</p><p&

62、gt;  return NULL;}</p><p>  for(i=0;!feof(fp);i++)</p><p>  fread(&g[i],sizeof(struct gz),1,fp);</p><p>  fclose(fp);</p><p>  return(i-1);</p><p><

63、b>  }</b></p><p> ?。?)顯示數據結構項目的函數printf_face()</p><p>  printf_face()</p><p>  { printf("\n num name month ys wf ef ss tax

64、\n");}</p><p>  (7)顯示一個記錄的函數</p><p>  printf_one(int i)</p><p>  { printf("%5d%10s%5d%10ld%10ld%10ld%10ld%10ld",g[i].num,g[i].name,g[i].month,</p><p>  g

65、[i].ys,g[i].wf,g[i].ef,g[i].ss,g[i].tax);}</p><p> ?。?)一個任務結束時的選擇瀏覽還是返回的函數</p><p>  printf_back()</p><p>  { int k,w;</p><p>  printf("\n\n\tSuccessful.\n\n")

66、;</p><p>  printf("What do you want to do?\n\n\t 1).Browse all now 2).Back;[ ]\b\b");</p><p>  scanf("%d",&w);</p><p>  else menu();</p><p>  if

67、(w==1) browse();</p><p><b>  }</b></p><p><b>  五、上機操作</b></p><p><b>  1.數據源</b></p><p>  2.編譯、連接和運行</p><p><b>  3

68、.結果</b></p><p>  下面是各個模塊的界面圖</p><p><b>  主菜單函數</b></p><p><b>  輸入模塊</b></p><p>  在主界面出現后輸入1回車看到下圖</p><p><b>  添加模塊</

69、b></p><p><b>  瀏覽模塊</b></p><p><b>  按姓名查找模塊</b></p><p><b>  按工資卡號查找模塊</b></p><p><b>  統計模塊</b></p><p>&l

溫馨提示

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

評論

0/150

提交評論