c語言課程設(shè)計(jì)--人事管理系統(tǒng)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告</p><p>  目的(本次 課程設(shè)計(jì) 所涉及并要求掌握的知識(shí)點(diǎn)。)</p><p>  本次課程設(shè)計(jì)主要涉及c語言的基礎(chǔ)語法,以及指針、文件函數(shù)、結(jié)構(gòu)體、函數(shù)調(diào)用等知識(shí)點(diǎn)。</p><p>  二、使用環(huán)境 (本次上機(jī)實(shí)踐所使用的平臺(tái)和相關(guān)軟件。 )</p><p>  主要采用windows

2、 xp系統(tǒng)環(huán)境+visual c++6.0編譯環(huán)境</p><p>  三、內(nèi)容與設(shè)計(jì)思想 </p><p> ?。? .設(shè)計(jì)思路 2 .主要數(shù)據(jù)結(jié)構(gòu) 3 .主要代碼結(jié)構(gòu) 4 .主要代碼段分析 。 )</p><p><b>  設(shè)計(jì)思路</b></p><p><b>  1、需求分析</b>&l

3、t;/p><p>  人事檔案信息采用文件存儲(chǔ),因而要提供文件的輸入輸出操作;根據(jù)學(xué)院人事的變動(dòng)情況,添加刪除記錄,因而要提供文件的添加刪除操作;根據(jù)編號和姓名進(jìn)項(xiàng)查詢,所以要提供文件的查找操作;高級編輯功能,就是提供文件的修改操作;統(tǒng)計(jì)功能要提供統(tǒng)計(jì)操作;排序功能要提供用排序算法對文件記錄的排序;另外還要提供鍵盤式選擇菜單以實(shí)現(xiàn)功能選擇。</p><p><b>  2、總體設(shè)計(jì)&

4、lt;/b></p><p>  整體設(shè)計(jì)為數(shù)據(jù)輸入模塊、數(shù)據(jù)添加模塊、數(shù)據(jù)刪除模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)修改模塊、數(shù)據(jù)統(tǒng)計(jì)模塊、數(shù)據(jù)排序模塊。</p><p><b>  主要數(shù)據(jù)結(jié)構(gòu)</b></p><p>  數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體:</p><p>  Struct personnelArchiveInfo<

5、;/p><p><b>  {</b></p><p>  Char No[10]; //編號</p><p>  Char name[10]; //姓名</p><p>  Int sex; //性別</p><p>  Int age;

6、//年齡</p><p>  Char job[10]; //職務(wù)</p><p>  Char post[10]; //職稱</p><p>  Char politic[10]; //政治面貌</p><p>  Char edu_level[10]; //最高學(xué)歷</p><p>  C

7、har period[10]; //任職時(shí)間</p><p>  Char start_time[10]; //來院時(shí)間</p><p>  Char type[10]; //人員類別</p><p><b>  }PAInfo;</b></p><p><b>  主要代碼結(jié)構(gòu)</b

8、></p><p><b>  1.主函數(shù)</b></p><p>  為使系統(tǒng)執(zhí)行完每部分功能后能夠方便的回到系統(tǒng)主界面,main()函數(shù)設(shè)計(jì)的較簡單,只包含一個(gè)menu()函數(shù),其余的全部功能都通過menu()函數(shù)調(diào)用來實(shí)現(xiàn),并通過menu()函數(shù)的遞歸調(diào)用實(shí)現(xiàn)返回主界面的功能。</p><p>  void main()</p

9、><p><b>  { </b></p><p>  int flag=0;</p><p>  int choose=0;</p><p>  FILE *fp=NULL;</p><p>  char yesorno;</p><p>  system("col

10、or B9");</p><p>  if((fp=fopen("employee1.txt","rb+"))==NULL)</p><p><b>  {</b></p><p>  printf("\n=========>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y)\n"

11、;);</p><p>  scanf("%c",&yesorno);</p><p>  if(yesorno=='y'||yesorno=='Y')</p><p><b>  { </b></p><p>  //這里僅為了建立文件</p>

12、<p>  fp=fopen("employee1.txt","wb+");</p><p>  fclose(fp); //關(guān)閉fp所指的文件,釋放文件緩沖區(qū)</p><p><b>  }</b></p><p><b>  else</b></p>&l

13、t;p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Number=read_file(PAInfo); //要

14、是文件已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中</p><p><b>  }</b></p><p>  system("cls"); </p><p>  system("color B9");</p><p><b>  while(1) </b></p

15、><p><b>  { </b></p><p><b>  menu();</b></p><p>  system("color 20");</p><p>  printf("\t====>請選擇:");</p><p>  

16、scanf("%d",&choose);</p><p>  system("cls");</p><p>  switch(choose)</p><p><b>  {</b></p><p><b>  case 0: </b></p&g

17、t;<p>  exit(0); //退出 </p><p><b>  break; </b></p><p><b>  case 1: </b></p><p><b>  input();</b></p><p>

18、  fh();//增加職工信息</p><p><b>  break; </b></p><p><b>  case 2:</b></p><p><b>  add();</b></p><p>  fh();//查看職工信息</p><p>

19、;  break; </p><p><b>  case 3: </b></p><p>  zc_query();</p><p>  fh();// 查找 </p><p><b>  break;</b></p><p><b> 

20、 case 4:</b></p><p>  num_del(); </p><p>  fh();//刪除 </p><p><b>  break;</b></p><p><b>  case 5:</b></p><p><b>

21、  tongji();</b></p><p><b>  fh();//統(tǒng)計(jì)</b></p><p><b>  break;</b></p><p><b>  case 6: </b></p><p><b>  sort();</b>

22、</p><p>  fh();//排序 </p><p><b>  break;</b></p><p><b>  case 7: </b></p><p>  num_modify();</p><p>  fh();//修改后返回</p><p

23、><b>  break; </b></p><p><b>  case 8:</b></p><p><b>  save();</b></p><p>  fh();//保存 </p><p><b>  break;</b></p

24、><p><b>  case 9:</b></p><p><b>  disp();</b></p><p><b>  fh();</b></p><p>  break;//顯示</p><p><b>  default:</b&g

25、t;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  fflush(stdin);</p><p>  getchar();</p><p>  system("cls");</p>

26、<p><b>  }</b></p><p><b>  }</b></p><p><b>  2.各功能模塊設(shè)計(jì)</b></p><p><b> ?。?)數(shù)據(jù)輸入模塊</b></p><p>  看各個(gè)數(shù)據(jù)信息,編號、姓名、性別、年齡

27、、職務(wù)、職稱、政治面貌、最高學(xué)歷、任職時(shí)間、來院時(shí)間、人員類別,在文件中以文本形式存放,每條記錄對應(yīng)一個(gè)人員的信息,可以方便信息的管理;而數(shù)據(jù)讀進(jìn)內(nèi)存中時(shí),可以以結(jié)構(gòu)體的形式,每一個(gè)結(jié)構(gòu)體包含了一個(gè)人員的全部信息,多的人員的信息組成了一個(gè)結(jié)構(gòu)體數(shù)組。定義如下:</p><p>  char NO[10];</p><p>  char name[15];</p><p&

28、gt;  char sex[5];</p><p><b>  int age;</b></p><p>  char job[20];</p><p>  char post[20];</p><p>  char edu_level[10];</p><p>  char politic[20

29、]; //政治面貌</p><p>  char period[10]; //任職時(shí)間</p><p>  char start_time[10]; //來院時(shí)間</p><p>  char type[10]; //人員類別</p><p><b> ?。?)數(shù)據(jù)添加模塊</b></p&

30、gt;<p>  該模塊的功能是擁護(hù)需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來的文件中去,其中輸入號碼是要防止號碼重復(fù),重復(fù)時(shí)報(bào)告錯(cuò)誤,重新輸入。為方便用戶管理和查看,該模塊采用的方式是用先把原來文件中的數(shù)據(jù)讀入內(nèi)存,保存在內(nèi)存中,然后在內(nèi)存中的數(shù)據(jù)后面增加新的數(shù)據(jù),操作完成后用寫的方式打開文件,用覆蓋的方式寫入。</p><p>  void add()//增加職工 </p>

31、<p><b>  {</b></p><p>  int numberTemp=0;</p><p><b>  int i=0;</b></p><p>  struct personnelArchiveInfo temp; //臨時(shí)保存信息</p><p>  printf(&quo

32、t;請輸入要增加人事信息的個(gè)數(shù):");</p><p>  scanf("%d",&numberTemp);</p><p>  for(i=0;i<numberTemp;i++)</p><p><b>  {</b></p><p>  printf("輸入第%d

33、個(gè)人事信息\n",i+1);</p><p>  printf("編號:");</p><p>  scanf("%s",temp.NO);</p><p>  printf("姓名:");</p><p>  scanf("%s",temp.name)

34、;</p><p>  printf("性別:");</p><p>  scanf("%s",temp.sex);</p><p>  printf("年齡:");</p><p>  scanf("%d",&temp.age);</p>

35、<p>  printf("部門:");</p><p>  scanf("%s",temp.job);</p><p>  printf("職稱:");</p><p>  scanf("%s",temp.post);</p><p>  printf

36、("學(xué)歷:");</p><p>  scanf("%s",temp.edu_level);</p><p>  printf("政治面貌:");</p><p>  scanf("%s",&temp.politic);</p><p>  printf(

37、"任職時(shí)間:");</p><p>  scanf("%s",&temp.period);</p><p>  printf("來院時(shí)間:");</p><p>  scanf("%s",&temp.start_time);</p><p>  p

38、rintf("人員類別:");</p><p>  scanf("%s",&temp. type);</p><p>  PAInfo[Number++]=temp; //將剛添加的寫入到數(shù)組</p><p>  write_file(&temp); //將剛添加的寫入到文件</p><p&

39、gt;<b>  }</b></p><p>  printf("添加成功\n");</p><p><b>  }</b></p><p><b> ?。?)數(shù)據(jù)刪除模塊</b></p><p>  該模塊的運(yùn)行方式與修改模塊類似,首先分屏顯示所有人員的記

40、錄,顯示完所有的記錄后,由用戶輸入要?jiǎng)h除的人員的號碼,根據(jù)號碼查找相應(yīng)的記錄并將結(jié)果顯示出來,經(jīng)用戶確認(rèn)后刪除,刪除的方法是將文件中的數(shù)據(jù)讀入內(nèi)存,賦給相應(yīng)的結(jié)構(gòu)體,并將結(jié)構(gòu)體數(shù)組中將刪除的后面的數(shù)據(jù)賦給前一個(gè)結(jié)構(gòu)體,然后將相應(yīng)數(shù)據(jù)寫入文件并保存;</p><p>  void num_del()//按編號刪除 </p><p><b>  {</b></p&g

41、t;<p>  FILE *fp=NULL;</p><p>  char gh[60];</p><p><b>  int i=0;</b></p><p><b>  int j=0;</b></p><p>  printf("請輸入要?jiǎng)h除的人事編號:");

42、</p><p>  scanf("%s",gh);</p><p>  for(i=0;i<Number;i++)</p><p><b>  {</b></p><p>  if (strcmp(gh,PAInfo[i].NO)==0) //如果查找到就刪除</p><p

43、><b>  {</b></p><p>  for (j=i;j<Number-1;j++)</p><p><b>  {</b></p><p>  PAInfo[j]=PAInfo[j+1];</p><p><b>  }</b></p>&

44、lt;p><b>  Number--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //將剩余數(shù)據(jù)寫入文件 重新一寫的方式打開文件 把以前的數(shù)據(jù)擦除了</p><p>  fp=fopen("e

45、mployee1.dat","wb");</p><p>  for (i=0;i<Number;i++)</p><p><b>  {</b></p><p>  fwrite(&PAInfo[i],sizeof(struct personnelArchiveInfo),1,fp);</p&

46、gt;<p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("刪除成功;\n");</p><p><b>  }</b></p><p><b> ?。?)數(shù)據(jù)查詢模塊</b></

47、p><p>  void zc_query()//按職稱查找 </p><p><b>  { </b></p><p>  char post[20];</p><p><b>  int i=0;</b></p><p>  printf("請輸入要查找人事職

48、稱:");</p><p>  scanf("%s",post);</p><p>  system("cls");</p><p>  printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><

49、;p>  for (i=0;i<Number;i++)</p><p><b>  {</b></p><p>  if (strcmp(post,PAInfo[i].post)==0)</p><p><b>  {</b></p><p>  printf("\t%s\t%

50、s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].t

51、ype);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b> ?。?)數(shù)據(jù)修改模塊</b></p><p>  該模塊的功能是顯示所有信

52、息,考慮到記錄較多,采用分屏顯示,顯示完所有的記錄后,由用戶輸入需要修改的人員的號碼,查找成功后,顯示查找結(jié)果,并詢問擁護(hù)修改人員的哪部分記錄,根據(jù)用戶選擇修改相應(yīng)的信息,然后保存修改后的結(jié)果:</p><p>  void num_modify() //修改職工信息</p><p><b>  {</b></p><p>  FILE *fp

53、=NULL;</p><p>  char gh[60];</p><p><b>  int i=0;</b></p><p>  int changeIndex=0; //changeIndex 改變標(biāo)記</p><p>  int index=0;</p><p>  printf(&quo

54、t;請輸入要修改的人事編號:");</p><p>  scanf("%s",gh);</p><p>  for (i=0;i<Number;i++)</p><p><b>  {</b></p><p>  if (strcmp(gh,PAInfo[i].NO)==0) //比

55、較輸入編號和數(shù)組中已有編號</p><p><b>  {</b></p><p>  changeIndex=i; //保存要修改的人的下標(biāo)</p><p><b>  break;</b></p><p><b>  }</b></p><p>&

56、lt;b>  }</b></p><p>  printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p>  printf("\n\n");</p><p>  printf("\t%s\t%s\t%s\t%d\

57、t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[changeIndex].NO,PAInfo[changeIndex].name,PAInfo[changeIndex].sex,PAInfo[changeIndex].age,PAInfo[changeIndex].job,PAInfo[changeIndex].post,PAInfo[changeIndex].edu_level,PAInfo[

58、changeIndex].politic,PAInfo[changeIndex].period,PAInfo[changeIndex].start_time,PAInfo[changeIndex].type);</p><p>  printf("請重新輸入該人事信息");</p><p>  printf("編號:");</p>&l

59、t;p>  scanf("%s",PAInfo[changeIndex].NO);</p><p>  printf("姓名:");</p><p>  scanf("%s",PAInfo[changeIndex].name);</p><p>  printf("性別:");&l

60、t;/p><p>  scanf("%s",PAInfo[changeIndex].sex);</p><p>  printf("年齡: ");</p><p>  scanf("%d",&PAInfo[changeIndex].age); </p><p>  printf(

61、"部門:");</p><p>  scanf("%d",PAInfo[changeIndex].job);</p><p>  printf("職稱:");</p><p>  scanf("%s",PAInfo[changeIndex].post);</p><p

62、>  printf("學(xué)歷:");</p><p>  scanf("%s",PAInfo[changeIndex].edu_level);</p><p>  printf("政治面貌:");</p><p>  scanf("%s",&PAInfo[changeInde

63、x].politic);</p><p>  printf("任職時(shí)間:");</p><p>  scanf("%s",&PAInfo[changeIndex].period);</p><p>  printf("來院時(shí)間:");</p><p>  scanf(&quo

64、t;%s",&PAInfo[changeIndex].start_time);</p><p>  printf("人員類別:");</p><p>  scanf("%s",&PAInfo[changeIndex]. type);</p><p>  //信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)

65、一致性</p><p>  fp=fopen("employee1.txt","wb+");</p><p>  for (i=0;i<Number;i++)</p><p><b>  {</b></p><p>  fwrite(&PAInfo[i],sizeof

66、(struct personnelArchiveInfo),1,fp); //把ptr所指向n*size個(gè)字節(jié)輸入到fp所指向的文件中</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("\t=======>修改成功\n");</p>

67、<p><b>  }</b></p><p><b> ?。?)數(shù)據(jù)統(tǒng)計(jì)模塊</b></p><p>  該模塊的功能是按照用戶的要求統(tǒng)計(jì)出滿足符合條件的所有記錄的個(gè)數(shù),并將滿足條件的記錄顯示出來。該模塊沒有涉及到文件的保存,所以將文件用只讀的方式打開,可以防止操作過程中數(shù)據(jù)的丟失:</p><p>  v

68、oid tongji()//統(tǒng)計(jì) </p><p><b>  {</b></p><p>  int i,m,k,max,min;</p><p>  double sum=0.0;</p><p>  for(i=0;i<Number;i++)</p><p><b>  {&

69、lt;/b></p><p>  sum=sum+PAInfo[i].age;</p><p><b>  }</b></p><p>  printf("全體人事總年齡為:%f\n",sum);</p><p>  printf("平均年齡為:%f\n",sum/Numbe

70、r); </p><p>  i=0;m=0;max=0;</p><p>  max=PAInfo[m].age;</p><p>  for(i=1;i<Number;i++)</p><p><b>  {</b></p><p>  if (PAInfo[i].age>max

71、)</p><p><b>  m=i;</b></p><p>  max=PAInfo[m].age;</p><p><b>  } </b></p><p>  printf("最高年齡為:%d\n",max);</p><p>  printf(

72、"\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[m].NO,PAInfo[m].name,PAInfo[m].sex,PAInfo[m].age,PAInfo[m].job,PAInfo[m].post,PAInfo[m].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[m].start_tim

73、e,PAInfo[m].type); </p><p>  i=0;k=0;min=0;</p><p>  min=PAInfo[0].age;</p><p>  for(i=1;i<Number;i++)</p><p><b>  {</b></p><p>  if (PAInfo

74、[i].age<min)</p><p><b>  k=i;</b></p><p>  min=PAInfo[k].age;</p><p><b>  }</b></p><p>  printf("最低年齡:%d\n",min);</p><p&

75、gt;  printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[k].NO,PAInfo[k].name,PAInfo[k].sex,PAInfo[k].age,PAInfo[k].job,PAInfo[k].post,PAInfo[k].edu_level,PAInfo[m].politic,PAInfo[m].period,PAInfo[

76、m].start_time,PAInfo[m].type); </p><p><b>  }</b></p><p><b> ?。?)數(shù)據(jù)排序模塊</b></p><p>  該模塊的功能是要求將記錄按照年齡或者來院時(shí)間進(jìn)行排序,總體結(jié)構(gòu)是先用sort()函數(shù)將文件中的數(shù)據(jù)調(diào)入內(nèi)存,然后按照選擇法排序,并將結(jié)果顯示出來

77、,然后將排序后的結(jié)果保存:</p><p>  void sort()//排序 </p><p><b>  {</b></p><p>  struct personnelArchiveInfo t;</p><p>  int wantNUmber=0;</p><p><b>  

78、int i=0;</b></p><p><b>  int j=0;</b></p><p><b>  int k=0;</b></p><p>  for(i=0;i<Number-1;i++)</p><p><b>  {k=i;</b></p

79、><p>  for(j=i+1;j<Number;j++)</p><p><b>  {</b></p><p>  if(PAInfo[j].age>PAInfo[k].age)</p><p><b>  k=j;</b></p><p><b> 

80、 }</b></p><p><b>  if(k!=i)</b></p><p><b>  {</b></p><p>  t=PAInfo[i];</p><p>  PAInfo[i]=PAInfo[k];</p><p>  PAInfo[k]=t;&l

81、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("你想輸出前幾名人事信息:");</p><p>  scanf("%d",&wantNUmber);</p><p&g

82、t;  if (wantNUmber>Number)</p><p><b>  {</b></p><p>  wantNUmber=Number;</p><p><b>  }</b></p><p>  printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷

83、\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p>  for(i=0;i<wantNUmber;i++)</p><p><b>  {</b></p><p>  printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",P

84、AInfo[i].NO,PAInfo[i].name,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type); </p><p><b>  } </b>

85、;</p><p><b>  }</b></p><p>  四、調(diào)試過程 (1 .測試數(shù)據(jù)設(shè)計(jì) 2 .測試結(jié)果分析 )</p><p><b>  主界面:</b></p><p><b>  選擇1:</b></p><p><b>  

86、選擇2:</b></p><p><b>  選擇3:</b></p><p><b>  選擇6:</b></p><p><b>  選擇4:</b></p><p><b>  選擇9:</b></p><p>&

87、lt;b>  五、總結(jié) </b></p><p> ?。O(shè)計(jì)中遇到的問題及解決過程 </p><p>  在向文件中添加數(shù)據(jù)的時(shí)候,要在打開文件的時(shí)候指定正確的文件操作方式,一開始指定文件的操作方式是w,w 只寫方式,若文件存在,則原有內(nèi)容會(huì)被清除;若文件不存在,則會(huì)建立文件,所以每次添加完一條數(shù)據(jù)后再次插入一條數(shù)據(jù)前一條數(shù)據(jù)會(huì)自動(dòng)清空,這樣文件中保存的始終是最后輸入的一

88、條數(shù)據(jù),這不是理想的結(jié)果,后來經(jīng)過查閱技術(shù)文檔,發(fā)現(xiàn)還有另外文件操作方式即追加a,a:追加方式打開只寫文件,只允許進(jìn)行寫操作,若文件存在,則添加的內(nèi)容放在文件末尾;若不存在,則建立文件。通過這種方式操作文件,每添加的一條數(shù)據(jù)都會(huì)自動(dòng)追加到前一條數(shù)據(jù)的后面,這種的處理方式是題目所要求的,實(shí)現(xiàn)了多條數(shù)據(jù)的存儲(chǔ)。</p><p>  .設(shè)計(jì)中產(chǎn)生的錯(cuò)誤及原因分析 </p><p>  經(jīng)過這一次

89、系統(tǒng)設(shè)計(jì)編碼的過程,我覺得我C語言的文件這一知識(shí)點(diǎn)掌握的極為薄弱,導(dǎo)致不能很好的利用一些函數(shù)處理問題。而且,有些時(shí)候,腦袋中對問題有求解的思路,但是無法一旦著手寫代碼的時(shí)候卻寫不出來,我覺得這是我對C語言一些關(guān)鍵知識(shí)點(diǎn)的理解不夠透徹,還有就是,平時(shí)編寫C語言的代碼量很少,以至于編碼的時(shí)候不能順手拈來。</p><p>  3 .設(shè)計(jì)體會(huì)和收獲。</p><p>  三周的C語言課程設(shè)計(jì)結(jié)

90、束了,在這八天的時(shí)間里,我自己獨(dú)立完成了一個(gè)程序從構(gòu)思結(jié)構(gòu),到編寫代碼,然后上機(jī)調(diào)試運(yùn)行的過程,感覺自己收獲很大。通過解決一個(gè)又一個(gè)的問題,熟悉了C語言的應(yīng)用,對計(jì)算機(jī)語言應(yīng)用的理解又深了一層,在老師的指導(dǎo)下,學(xué)會(huì)了模塊設(shè)計(jì)的方法,用流程圖表示算法,掌握了用C語言進(jìn)行程序設(shè)計(jì)的能力。</p><p>  在設(shè)計(jì)過程中,我理解了對于一個(gè)較大的程序,不可能一次編寫出一個(gè)較大的系統(tǒng),通常要采取自頂向下的設(shè)計(jì)思想,先設(shè)計(jì)

91、主函數(shù),再通過完善一個(gè)個(gè)的功能模塊來完成程序的設(shè)計(jì)過程,在設(shè)計(jì)過程中要充分理解整個(gè)程序的設(shè)計(jì)思路,采用逐步細(xì)化的方式來完成整個(gè)程序。</p><p><b>  六、附錄 </b></p><p><b>  1、原代碼 </b></p><p>  #include <stdio.h></p>

92、<p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  struct personnelArchiveInfo</p><p><b>  {</b></p><p>  char NO[10];</p&

93、gt;<p>  char name[15];</p><p>  char sex[5];</p><p><b>  int age;</b></p><p>  char job[20];</p><p>  char post[20];</p><p>  char edu_

94、level[10];</p><p>  char politic[20]; //政治面貌</p><p>  char period[10]; //任職時(shí)間</p><p>  char start_time[10]; //來院時(shí)間</p><p>  char type[10]; //人員類別</p>

95、<p><b>  };</b></p><p>  int read_file(struct personnelArchiveInfo PAInfo[]);</p><p>  void menu();</p><p>  void write_file(struct personnelArchiveInfo PAInfo[])

96、;</p><p>  void add(); </p><p>  void input();</p><p>  void zc_query(); //按職稱查詢</p><p>  void num_del(); //按編號刪除</p><p>  void tongji();

97、//統(tǒng)計(jì)</p><p>  void sort(); //排序</p><p>  void num_modify(); //按編號修改職工信息</p><p>  void save(); //保存信息</p><p>  void disp(); //顯示職工信息</p><p&

98、gt;  void fh(); //返回主菜單</p><p>  struct personnelArchiveInfo PAInfo[300]; //這個(gè)數(shù)組用來保存所有的職工信息 和文件里面的一致</p><p>  int Number=0; //記錄總的職工人數(shù) 也就是數(shù)組/文件里面的職工人數(shù)</p><p>  void me

99、nu()</p><p>  { system("cls");</p><p>  system("color B9");</p><p>  printf("\t****************************************************************\n");&

100、lt;/p><p>  printf("\t* *\n");</p><p>  printf("\t* 人事信息管理系統(tǒng) *\n");</

101、p><p>  printf("\t* *\n");</p><p>  printf("\t* [1] 輸入人事信息 [2] 增加人事信息 *\n");</p>&

102、lt;p>  printf("\t* [3] 查找人事信息 [4] 刪除人事信息 *\n");</p><p>  printf("\t* [5] 統(tǒng)計(jì)人事信息 [6] 人事年齡排列 *\n");</p><p>  printf(&qu

103、ot;\t* [7] 修改人事信息 [8] 保存人事信息 *\n");</p><p>  printf("\t* [9] 顯示人事信息 [0] 退出管理系統(tǒng) *\n");</p><p>  printf("\t*

104、 *\n");</p><p>  printf("\t****************************************************************\n");</p><p>  printf("\t***********

105、*****************數(shù)信院******************************\n");</p><p><b>  }</b></p><p>  void main()</p><p><b>  { </b></p><p>  int flag=0;</

106、p><p>  int choose=0;</p><p>  FILE *fp=NULL;</p><p>  char yesorno;</p><p>  system("color B9");</p><p>  if((fp=fopen("employee1.txt",&q

107、uot;rb+"))==NULL)</p><p><b>  {</b></p><p>  printf("\n=========>提示:文件不存在,是否要?jiǎng)?chuàng)建一個(gè)?(y)\n");</p><p>  scanf("%c",&yesorno);</p><

108、p>  if(yesorno=='y'||yesorno=='Y')</p><p><b>  { </b></p><p>  //這里僅為了建立文件</p><p>  fp=fopen("employee1.txt","wb+");</p>&l

109、t;p>  fclose(fp); //關(guān)閉fp所指的文件,釋放文件緩沖區(qū)</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  exit(0);</b></p><p><b>  }</b&g

110、t;</p><p><b>  else</b></p><p><b>  {</b></p><p>  Number=read_file(PAInfo); //要是文件已經(jīng)有數(shù)據(jù) 將數(shù)據(jù)初始化到數(shù)組中</p><p><b>  }</b></p><

111、;p>  system("cls"); </p><p>  system("color B9");</p><p><b>  while(1) </b></p><p><b>  { </b></p><p><b>  menu();

112、</b></p><p>  system("color 20");</p><p>  printf("\t====>請選擇:");</p><p>  scanf("%d",&choose);</p><p>  system("cls&quo

113、t;);</p><p>  switch(choose)</p><p><b>  {</b></p><p><b>  case 0: </b></p><p>  exit(0); //退出 </p><p><b&g

114、t;  break; </b></p><p><b>  case 1: </b></p><p><b>  input();</b></p><p>  fh();//增加職工信息</p><p><b>  break; </b></p>

115、<p><b>  case 2:</b></p><p><b>  add();</b></p><p>  fh();//查看職工信息</p><p>  break; </p><p><b>  case 3: </b></p&g

116、t;<p>  zc_query();</p><p>  fh();// 查找 </p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  num_del(); </p><p&

117、gt;  fh();//刪除 </p><p><b>  break;</b></p><p><b>  case 5:</b></p><p><b>  tongji();</b></p><p><b>  fh();//統(tǒng)計(jì)</b></

118、p><p><b>  break;</b></p><p><b>  case 6: </b></p><p><b>  sort();</b></p><p>  fh();//排序 </p><p><b>  break;</b

119、></p><p><b>  case 7: </b></p><p>  num_modify();</p><p>  fh();//修改后返回</p><p><b>  break; </b></p><p><b>  case 8:<

120、/b></p><p><b>  save();</b></p><p>  fh();//保存 </p><p><b>  break;</b></p><p><b>  case 9:</b></p><p><b>  di

121、sp();</b></p><p><b>  fh();</b></p><p>  break;//顯示</p><p><b>  default:</b></p><p><b>  break;</b></p><p><b&

122、gt;  }</b></p><p>  fflush(stdin);</p><p>  getchar();</p><p>  system("cls");</p><p><b>  }</b></p><p><b>  }</b>&

123、lt;/p><p>  void save()</p><p><b>  {</b></p><p>  printf("\t===>程序在運(yùn)行時(shí)已自動(dòng)保存.....\n");</p><p><b>  }</b></p><p><b>

124、  void fh()</b></p><p><b>  {</b></p><p>  printf("\t===>按Enter鍵返回主菜單\n");</p><p><b>  }</b></p><p>  void num_modify() //修改職

125、工信息</p><p><b>  {</b></p><p>  FILE *fp=NULL;</p><p>  char gh[60];</p><p><b>  int i=0;</b></p><p>  int changeIndex=0; //changeIn

126、dex 改變標(biāo)記</p><p>  int index=0;</p><p>  printf("請輸入要修改的人事編號:");</p><p>  scanf("%s",gh);</p><p>  for (i=0;i<Number;i++)</p><p><

127、b>  {</b></p><p>  if (strcmp(gh,PAInfo[i].NO)==0) //比較輸入編號和數(shù)組中已有編號</p><p><b>  {</b></p><p>  changeIndex=i; //保存要修改的人的下標(biāo)</p><p><b>  brea

128、k;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("\t編號\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p>  p

129、rintf("\n\n");</p><p>  printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",PAInfo[changeIndex].NO,PAInfo[changeIndex].name,PAInfo[changeIndex].sex,PAInfo[changeIndex].age,PAInfo[ch

130、angeIndex].job,PAInfo[changeIndex].post,PAInfo[changeIndex].edu_level,PAInfo[changeIndex].politic,PAInfo[changeIndex].period,PAInfo[changeIndex].start_time,PAInfo[changeIndex].type);</p><p>  printf("請重

131、新輸入該人事信息");</p><p>  printf("編號:");</p><p>  scanf("%s",PAInfo[changeIndex].NO);</p><p>  printf("姓名:");</p><p>  scanf("%s"

132、;,PAInfo[changeIndex].name);</p><p>  printf("性別:");</p><p>  scanf("%s",PAInfo[changeIndex].sex);</p><p>  printf("年齡: ");</p><p>  scanf

133、("%d",&PAInfo[changeIndex].age); </p><p>  printf("部門:");</p><p>  scanf("%d",PAInfo[changeIndex].job);</p><p>  printf("職稱:");</p>

134、<p>  scanf("%s",PAInfo[changeIndex].post);</p><p>  printf("學(xué)歷:");</p><p>  scanf("%s",PAInfo[changeIndex].edu_level);</p><p>  printf("政治

135、面貌:");</p><p>  scanf("%s",&PAInfo[changeIndex].politic);</p><p>  printf("任職時(shí)間:");</p><p>  scanf("%s",&PAInfo[changeIndex].period);</

136、p><p>  printf("來院時(shí)間:");</p><p>  scanf("%s",&PAInfo[changeIndex].start_time);</p><p>  printf("人員類別:");</p><p>  scanf("%s",&a

137、mp;PAInfo[changeIndex]. type);</p><p>  //信息修改后重新更新文件里面的數(shù)據(jù) 以保持?jǐn)?shù)據(jù)一致性</p><p>  fp=fopen("employee1.txt","wb+");</p><p>  for (i=0;i<Number;i++)</p><p

138、><b>  {</b></p><p>  fwrite(&PAInfo[i],sizeof(struct personnelArchiveInfo),1,fp); //把ptr所指向n*size個(gè)字節(jié)輸入到fp所指向的文件中</p><p><b>  }</b></p><p>  fclose(

139、fp);</p><p>  printf("\t=======>修改成功\n");</p><p><b>  }</b></p><p>  void disp() //輸出所有職工信息 </p><p><b>  {</b></p><p>

140、<b>  int i=0;</b></p><p>  system("color 2");</p><p>  printf("\t編號\t\t姓名\t性別\t年齡\t部門\t職稱\t學(xué)歷\t政治面貌\t任職時(shí)間\t來院時(shí)間\t人員類別\n");</p><p>  printf("\n\n

141、");</p><p>  for (i=0;i<Number;i++)</p><p><b>  {</b></p><p>  printf("\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n\n",PAInfo[i].NO,PAInfo[i].n

142、ame,PAInfo[i].sex,PAInfo[i].age,PAInfo[i].job,PAInfo[i].post,PAInfo[i].edu_level,PAInfo[i].politic,PAInfo[i].period,PAInfo[i].start_time,PAInfo[i].type); </p><p><b>  }</b></p><p>&l

溫馨提示

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

評論

0/150

提交評論