c語言課程設(shè)計——職工工資管理_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  C語言課程設(shè)計報告書</p><p>  題目:   職工工資管理          </p><p><b>  功能需求如下:</b></p><p><b>  系統(tǒng)概述</b></p><p>  添加模塊:添加職工或工資的信息</p><p>

2、  刪除模塊:能通過姓名或者工號刪除職工信息</p><p>  修改模塊:修改職工信息</p><p>  查詢模塊:能通過姓名或者工號查詢職工信息</p><p>  顯示模塊:顯示全部職工信息</p><p>  文件管理模塊:負(fù)責(zé)源數(shù)據(jù)文件的管理,包括新建、讀取和保存源數(shù)據(jù)</p><p><b> 

3、 2.總體設(shè)計</b></p><p><b>  系統(tǒng)模塊結(jié)構(gòu)框圖</b></p><p>  在各模塊處用指針函數(shù)來使用后面的保存記錄數(shù)據(jù)文件進(jìn)行保存。</p><p>  3.詳細(xì)設(shè)計 (參數(shù)代碼如下)</p><p>  # include <stdio.h></p><

4、;p>  # include <stdlib.h></p><p>  # include <string.h></p><p><b>  /*宏定義*/</b></p><p>  # define N 100 /*假設(shè)工人個數(shù)是100*/</p&

5、gt;<p>  # define HEADER1 "----------------------------------------------------------------------\n" </p><p>  # define HEADER2 " | Number | Name | Psex | Age | Time | Ywage | Yk

6、ou | Pwage |\n"</p><p>  # define HEADER3 " |--------|--------|--------|-------|------|-------|------|-------|\n"</p><p>  # define FORMAT " |%-8d|%-8s|%-8s|%-7d|%-6d|%-7d|%

7、-6d|%-7d|\n"</p><p>  # define DATA p->num ,p->name,p->sex,p->age,p->time,p->ywage,p->ykou,p->pwage</p><p>  # define END "---------------------------------

8、--------------------------------------\n"</p><p><b>  /**/</b></p><p>  typedef struct work</p><p><b>  {</b></p><p>  int num;

9、 /**/</p><p>  char name[10]; </p><p>  char sex[10];</p><p>  int age; /**/ </p><p>

10、;  int time; /**/</p><p>  int ywage; /**/</p><p>  int ykou; /

11、**/</p><p>  int pwage; /**/</p><p><b>  }WORK;</b></p><p><b>  /**/</b></p><p>  typedef struct poin

12、ter_info</p><p><b>  {</b></p><p>  WORK*pHead; /**/</p><p>  int count; /**/</p>

13、;<p>  char fname[10]; /**/ </p><p>  int saveflag; /**/</p><p><b>  }PI; </b></p><p&g

14、t;<b>  /**/</b></p><p>  void Menu(); </p><p>  void Add(PI*);</p><p>  void Del(PI*);</p><p>  void Save(PI*pi);&

15、lt;/p><p>  void Modify(PI*pi);</p><p>  void Qur(PI*pi);</p><p>  void Load(PI*pi);</p><p>  void New(PI*pi);</p><p>  void Disp(PI*);</p><p>  

16、void Wrong();</p><p>  void printheader();</p><p>  void main()</p><p><b>  {</b></p><p><b>  int sel;</b></p><p>  WORK *pwork;&

17、lt;/p><p><b>  PI pi;</b></p><p>  pwork = (WORK*)malloc(N * sizeof(WORK));</p><p>  pi.pHead = pwork;</p><p>  pi.count = 0;</p><p>  pi.fname[0

18、] = '\0';</p><p>  pi.saveflag = 0;</p><p><b>  /*顯示主函數(shù)*/</b></p><p><b>  Menu();</b></p><p>  printf("Please input your choice [0~

19、5]:");</p><p><b>  do </b></p><p><b>  {</b></p><p>  scanf("%d",&sel); </p><p>  if (sel == 0)

20、 </p><p><b>  {</b></p><p>  /*if (pi.saveflag ==1) </p><p><b>  { </b></p><p>  if (strlen(pi.fname))</p><p>

21、;<b>  {</b></p><p>  Save(&pi);</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b&

22、gt;  New(&pi);</b></p><p>  Save(&pi);</p><p><b>  } </b></p><p><b>  }*/</b></p><p><b>  break;</b></p><p&

23、gt;<b>  }</b></p><p>  switch(sel)</p><p><b>  { </b></p><p><b>  case 1:</b></p><p><b>  Add(&pi);</b></p>

24、<p>  break; </p><p><b>  case 2:</b></p><p><b>  Del(&pi);</b></p><p><b>  break;</b></p><p><b>  c

25、ase 3:</b></p><p>  Modify(&pi);</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p><b>  Qur(&pi);</b></p>

26、<p><b>  break; </b></p><p><b>  case 5:</b></p><p>  Disp(&pi);</p><p><b>  break;</b></p><p><b>  default:</b&

27、gt;</p><p><b>  Wrong();</b></p><p><b>  break; </b></p><p>  } </p><

28、p>  }while(1);</p><p>  pwork = pi.pHead;</p><p>  free(pwork);</p><p><b>  }</b></p><p>  void printheader() </p><p><b>  { </b>

29、;</p><p>  printf(HEADER1);</p><p>  printf(HEADER2);</p><p>  printf(HEADER3);</p><p><b>  }</b></p><p>  void Menu()</p><p><

30、b>  {</b></p><p>  system("cls");</p><p>  printf(" The Workers' Grade Wage System \n");</p><p>  printf("****************Menu********

31、*****************************\n");</p><p>  printf(" * 1 添加 *\n");</p><p>  printf(" * 2 刪除 *\

32、n");</p><p>  printf(" * 3 修改 *\n");</p><p>  printf(" * 4 查詢 *\n");</p><p>

33、  printf(" * 5 顯示 *\n");</p><p>  printf(" * 0 退出 *\n");</p><p>  printf ("**************

34、*******************************************\n");</p><p><b>  }</b></p><p>  void Wrong( )</p><p><b>  {</b></p><p>  printf("\n******E

35、rror :input has wrong ! press any key to continue******\n"); </p><p><b>  }</b></p><p>  void Add(PI* pi )</p><p><b>  { </b></p><p>

36、<b>  int num;</b></p><p>  //char sex[10];</p><p>  int nSex;</p><p>  int i,flag=0;</p><p>  WORK * pwork,*p;</p><p><b>  do</b>&

37、lt;/p><p><b>  { </b></p><p>  pwork=pi->pHead+pi->count;</p><p>  p=pi->pHead;</p><p>  printf("please input the number:(press '0'retu

38、rn menu)");</p><p>  scanf("%d",&num);</p><p>  for(i=1;i< pi->count; i++)</p><p><b>  {</b></p><p>  if(num==p->num)</p>

39、<p><b>  {</b></p><p>  printf ("the number you input has exist,please input another one!\n");</p><p><b>  flag=1;</b></p><p><b>  bre

40、ak;</b></p><p><b>  }</b></p><p><b>  p++;</b></p><p><b>  }</b></p><p><b>  if(flag)</b></p><p><

41、b>  { </b></p><p><b>  flag=0;</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if (num != 0)</p><p>

42、<b>  {</b></p><p>  pwork->num = num;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>&l

43、t;b>  Menu();</b></p><p>  printf("please input your choice[0~5]:");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  printf

44、("please input the name:");</p><p>  scanf("%s",pwork->name);</p><p>  printf("please input the sex(0 is woman,1 is man):");</p><p>  scanf( "%

45、d", &nSex );</p><p>  if( nSex == 0 )</p><p>  strcpy( pwork->sex,"woman");</p><p><b>  else</b></p><p>  strcpy( pwork->sex,"

46、man");</p><p>  printf("please input the time:");</p><p>  scanf("%d", &pwork->time);</p><p>  printf("please input the age:");</p>

47、<p>  scanf("%d", &pwork->age);</p><p>  printf("please input the Ywage:");</p><p>  scanf("%d", &pwork->ywage);</p><p>  printf(&qu

48、ot;please input the Ykou:");</p><p>  scanf("%d", &pwork->ykou);</p><p>  pwork->pwage = pwork->ywage-pwork->ykou;</p><p>  pi->count++;</p>

49、<p>  pi->saveflag=1;</p><p>  }while(1);</p><p><b>  }</b></p><p>  void Qur(PI * pi)</p><p><b>  {</b></p><p>  int a,i,

50、num;</p><p><b>  WORK *p;</b></p><p>  char name[10];</p><p>  p=pi->pHead;</p><p><b>  Menu();</b></p><p>  printf("1-----

51、-search by number\n");</p><p>  printf("2------search by name\n");</p><p>  printf("3------return\n");</p><p>  printf("please input your choice:[1,2]?

52、");</p><p>  scanf("%d",&a);</p><p><b>  if(a==3)</b></p><p><b>  { </b></p><p><b>  return;</b></p><

53、;p><b>  }</b></p><p><b>  if(a==1)</b></p><p><b>  {</b></p><p>  printf("please input the number for search:");</p><p>

54、;  scanf("%d",&num);</p><p>  for(i=1;i<= pi->count; i++)</p><p><b>  { </b></p><p>  if(num==p->num)</p><p><b>  {</b>&l

55、t;/p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  p++;</b></p><p><b>  }</b></p><p>  if(i>pi->coun

56、t)</p><p><b>  {</b></p><p>  printf("no record found\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>&

57、lt;b>  else</b></p><p><b>  { </b></p><p>  printheader();</p><p>  printf(FORMAT,DATA);</p><p>  printf(END);</p><p><b>  }&l

58、t;/b></p><p><b>  }</b></p><p>  else if(a==2)</p><p><b>  {</b></p><p>  printf("please input name to search:");</p><p&

59、gt;  scanf("%s",name);</p><p>  for(i=1;i<=pi->count;i++)</p><p><b>  {</b></p><p>  if(strcmp(name,p->name) !=0) </p><p><b>  {<

60、;/b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  p++;</b></p><p><b>  }</b></p><p>  if(i>pi

61、->count)</p><p><b>  {</b></p><p>  printf("no record found\n");</p><p><b>  return;</b></p><p><b>  }</b></p>&

62、lt;p><b>  else</b></p><p><b>  { </b></p><p>  printheader();</p><p>  printf(FORMAT,DATA);</p><p>  printf(END);</p><p><b&g

63、t;  }</b></p><p><b>  }</b></p><p>  printf("Please input your choice[0~5]:");</p><p><b>  }</b></p><p>  void Modify(PI *pi)<

64、;/p><p><b>  {</b></p><p>  int num,i;</p><p>  WORK *p,*pwork;</p><p>  pwork = pi->pHead;</p><p>  p = pi->pHead;</p><p><

65、b>  Menu();</b></p><p><b>  Disp(pi);</b></p><p>  printf("please input the number of work to modify:");</p><p>  scanf("%d",&num);</

66、p><p>  for (i = 1;i < pi->count;i++)</p><p><b>  {</b></p><p>  if (num == p->num)</p><p><b>  {</b></p><p><b>  break

67、;</b></p><p><b>  }</b></p><p><b>  p++;</b></p><p><b>  }</b></p><p>  if (i > pi->count)</p><p><b>

68、  {</b></p><p>  printf("no record found\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p&g

69、t;<p><b>  {</b></p><p>  printf("please input the number:(enter '0'return menu)");</p><p>  scanf("%d",&num);</p><p>  if (num!=0

70、)</p><p><b>  {</b></p><p>  p->num =num;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p

71、><p><b>  Menu();</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  printf("please input the name:");</p><p&g

72、t;  scanf("%s",p->name);</p><p>  printf("please input the sex:");</p><p>  scanf("%s",p->sex);</p><p>  printf("please input the age:"

73、);</p><p>  scanf("%d",&p->age);</p><p>  printf("please input the time:");</p><p>  scanf("%d",&p->time);</p><p>  printf(&

74、quot;please input the ywage:");</p><p>  scanf("%d",&p->ywage);</p><p>  printf("please input the ykou:");</p><p>  scanf("%d",&p->y

75、kou);</p><p>  pwork->pwage = pwork->ywage-pwork->ykou;</p><p>  pi->saveflag = 1;</p><p><b>  }</b></p><p><b>  }</b></p>&l

76、t;p>  /*刪除職工記錄*/</p><p>  void Del(PI * pi)</p><p><b>  {</b></p><p>  int sel,i,num;</p><p>  char name[10];</p><p>  WORK *p;/*指針函數(shù)*/</

77、p><p>  p=pi->pHead;</p><p><b>  Menu();</b></p><p>  printf("1------delete by number\n");/*選擇工號*/</p><p>  printf("2------delete by name\n&q

78、uot;);/*選擇姓名*/</p><p>  printf("any key other------return\n");/*按別的鍵就返回*/</p><p>  printf("please input your choice:[1,2]?\n");</p><p>  scanf("%d",&am

79、p;sel);</p><p>  if(sel!=1&&sel!=2)/*按別的鍵*/</p><p><b>  { </b></p><p><b>  return;</b></p><p><b>  }</b></p><p&

80、gt;  if( sel == 1 )/*選擇工號*/</p><p><b>  {</b></p><p>  printf("Please input the number to delete:");</p><p>  scanf("%d",&num);</p><p&

81、gt;  for(i=1;i<=pi->count;i++)/*按學(xué)號搜索*/</p><p><b>  { </b></p><p>  if(num==p->num)</p><p><b>  {</b></p><p><b>  break;</b>

82、;</p><p><b>  }</b></p><p><b>  p++;</b></p><p><b>  }</b></p><p>  if(i>pi->count)</p><p><b>  {</b>

83、</p><p>  printf("no record found\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  else if(i==pi->count) /*刪除中間某個記錄,只需要將coun

84、t減1*/</p><p><b>  {</b></p><p>  pi->count--;</p><p>  pi->saveflag=1;</p><p>  printf("record delete successfully!\n");</p><p>

85、;<b>  }</b></p><p>  else /*刪除某個記錄,只要將其后的數(shù)據(jù)前移覆蓋即可*/ </p><p><b>  {</b></p><p>  memcpy(p,p+1,(pi->pHead + pi->count - p)*sizeof(WORK));</

86、p><p>  pi->count--;</p><p>  pi->saveflag = 1;</p><p>  printf("record delete successfully!\n");</p><p><b>  }</b></p><p><b&g

87、t;  }</b></p><p>  else if(sel == 2)/*選擇姓名*/</p><p><b>  {</b></p><p>  printf("please input name to delete:");</p><p>  scanf("%s&quo

88、t;,name);</p><p>  for(i=1;i<=pi->count;i++)</p><p><b>  { </b></p><p>  if(strcmp(name,p->name) != 0)</p><p><b>  {</b></p>&l

89、t;p><b>  break;</b></p><p><b>  }</b></p><p><b>  p++;</b></p><p><b>  }</b></p><p>  if(i>pi->count)</p>

90、<p><b>  {</b></p><p>  printf("no record found\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  else if(i==

91、pi->count)/*刪除中間某個記錄,只需要將count減1*/</p><p><b>  {</b></p><p>  pi->count--;</p><p>  pi->saveflag=1;</p><p>  printf("record delete successfull

92、y!\n");</p><p><b>  }</b></p><p><b>  else </b></p><p>  { /*刪除某個記錄,只要將其后的數(shù)據(jù)前移覆蓋即可*/ </p><p>  memcpy(p,p+1,(pi->pHead+pi->count-p)

93、*sizeof(WORK) );</p><p>  pi->count--;</p><p>  pi->saveflag=1;</p><p>  printf("record delete successfully!\n");</p><p><b>  }</b></p>

94、;<p><b>  }</b></p><p>  printf("please input your choice[0~5]:");</p><p><b>  }</b></p><p><b>  /*顯示*/</b></p><p>

95、  void Disp(PI * pi)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  WORK *p = pi->pHead;</p><p>  if (pi->count==0)</p><p>

96、;<b>  {</b></p><p>  printf("no record found\n");</p><p>  printf("\nplease input your choice[0~5]:");</p><p><b>  return;</b></p>

97、<p><b>  }</b></p><p>  printheader();</p><p>  for(i=1;i<=pi->count;i++)</p><p><b>  {</b></p><p>  printf(FORMAT,DATA);</p>

98、<p>  printf(END);</p><p><b>  p++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void New(PI *pi)</p><p><

99、b>  {</b></p><p>  FILE * fp;</p><p>  char name[10];</p><p>  char fname[10] =".\\";</p><p>  printf("please input the date file name foe creat

100、e:");</p><p>  scanf("%s",fname);</p><p>  strcat(fname,name);</p><p>  strcat(fname,".dat");</p><p>  fp=fopen(fname,"wb");</p>

101、;<p>  if(fp==NULL)</p><p><b>  {</b></p><p>  printf("\n=====>open file error!\n");</p><p><b>  return;</b></p><p><b>

102、;  }</b></p><p>  strcpy(pi->fname,fname);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void Load (PI *pi)</p><p><b>  { <

103、;/b></p><p>  FILE * fp;</p><p>  WORK * p=pi->pHead;</p><p>  char name [10];</p><p>  char fname [10]= ".\\";</p><p>  printf( "ple

104、ase input the data file name for load:");</p><p>  scanf( "%s",name);</p><p>  strcat(fname,name);</p><p>  fp=fopen(fname , "rb");</p><p>  if

105、(fp==NULL)</p><p><b>  { </b></p><p>  printf("\n====>open file error!\n");</p><p><b>  return;</b></p><p><b>  }</b>&l

106、t;/p><p>  pi->count = 0;</p><p>  pi->saveflag = 0;</p><p>  while(feof(fp)!=0)</p><p><b>  {</b></p><p>  if(fread(p,sizeof(WORK),1,fp))&l

107、t;/p><p><b>  {</b></p><p>  pi->count++;</p><p><b>  p++;</b></p><p><b>  }</b></p><p><b>  }</b></p>

108、;<p>  strcpy(pi->fname,name);</p><p>  printf("load data file %s successfully!",name);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  

109、void Save(PI * pi)</p><p><b>  {</b></p><p>  FILE * fp;</p><p>  int numwriten;</p><p>  if (!strlen(pi->fname))</p><p><b>  New(pi)

110、;</b></p><p>  fp=fopen(pi->fname, "wb");</p><p>  if(fp==NULL)</p><p><b>  { </b></p><p>  printf("\n====>open file error!\n&q

111、uot;);</p><p>  fclose(fp);</p><p><b>  return ;</b></p><p><b>  }</b></p><p>  if (pi->count) </p><p><b>  {</b><

112、;/p><p>  numwriten = fwrite(pi->pHead,1,pi->count * sizeof(WORK),fp);</p><p>  pi->saveflag = 0;</p><p>  printf("file save succesefully!");</p><p><

113、;b>  }</b></p><p><b>  else</b></p><p>  printf("no record for save !");</p><p>  fclose(fp);</p><p><b>  }</b></p>&l

114、t;p>  4功能和模塊的測試分析(圖文如下)</p><p><b>  添加時</b></p><p>  Q1:性別通過輸入0或1輸出woman or man</p><p><b>  有if語句進(jìn)行選擇</b></p><p>  Q2:實得工資由應(yīng)發(fā)工資減去應(yīng)扣工資自動得到<

115、/p><p><b>  在程序中做減法</b></p><p><b>  添加后</b></p><p><b>  1</b></p><p><b>  刪除</b></p><p>  Q1:通過工號或姓名刪除</p&g

116、t;<p>  使用if語句進(jìn)行選擇,并用for語句對進(jìn)行搜索</p><p>  Q2:刪除中間摸個記錄</p><p><b>  刪除后</b></p><p><b>  修改</b></p><p><b>  查找</b></p><

117、;p>  Q1:要求通過工號或者姓名查找</p><p><b>  使用if語句</b></p><p>  Q2:如果找不到記錄則要返回</p><p>  使用if –else語句找不到就輸出源數(shù)據(jù)</p><p><b>  顯示</b></p><p><

118、;b>  課程設(shè)計總結(jié)</b></p><p>  通過我們小組的共同努力終于完成任務(wù),制作了職工工資管理系統(tǒng)。</p><p>  雖然這系統(tǒng)我們是參照課本的類似例題制作,但其中還是集大家的努力進(jìn)行修改,使系統(tǒng)更加完善。但由于能力有限,系統(tǒng)還是不是很穩(wěn)定。比如,輸入進(jìn)入公司時間時,不能精確到具體時間。</p><p>  總的來說,我們制作的系統(tǒng)

溫馨提示

  • 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

提交評論