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

下載本文檔

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

文檔簡介

1、<p>  C語言課程設計實驗報告</p><p>  目的(本次 課程設計 所涉及并要求掌握的知識點。)</p><p>  本次課程設計主要涉及c語言的基礎語法,以及指針、文件函數、結構體、函數調用等知識點。</p><p>  二、使用環境 (本次上機實踐所使用的平臺和相關軟件。 )</p><p>  主要采用windows

2、 xp系統環境+visual c++6.0編譯環境</p><p>  三、內容與設計思想 </p><p> ?。? .設計思路 2 .主要數據結構 3 .主要代碼結構 4 .主要代碼段分析 。 )</p><p><b>  設計思路</b></p><p><b>  1、需求分析</b>&l

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

4、lt;/b></p><p>  整體設計為數據輸入模塊、數據添加模塊、數據刪除模塊、數據查詢模塊、數據修改模塊、數據統計模塊、數據排序模塊。</p><p><b>  主要數據結構</b></p><p>  數據結構采用結構體:</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]; //職務</p><p>  Char post[10]; //職稱</p><p>  Char politic[10]; //政治面貌</p><p>  Char edu_level[10]; //最高學歷</p><p>  C

7、har period[10]; //任職時間</p><p>  Char start_time[10]; //來院時間</p><p>  Char type[10]; //人員類別</p><p><b>  }PAInfo;</b></p><p><b>  主要代碼結構</b

8、></p><p><b>  1.主函數</b></p><p>  為使系統執行完每部分功能后能夠方便的回到系統主界面,main()函數設計的較簡單,只包含一個menu()函數,其余的全部功能都通過menu()函數調用來實現,并通過menu()函數的遞歸調用實現返回主界面的功能。</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=========>提示:文件不存在,是否要創建一個?(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); //關閉fp所指的文件,釋放文件緩沖區</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、是文件已經有數據 將數據初始化到數組中</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();//統計</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.各功能模塊設計</b></p><p><b> ?。?)數據輸入模塊</b></p><p>  看各個數據信息,編號、姓名、性別、年齡

27、、職務、職稱、政治面貌、最高學歷、任職時間、來院時間、人員類別,在文件中以文本形式存放,每條記錄對應一個人員的信息,可以方便信息的管理;而數據讀進內存中時,可以以結構體的形式,每一個結構體包含了一個人員的全部信息,多的人員的信息組成了一個結構體數組。定義如下:</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]; //任職時間</p><p>  char start_time[10]; //來院時間</p><p>  char type[10]; //人員類別</p><p><b> ?。?)數據添加模塊</b></p&

30、gt;<p>  該模塊的功能是擁護需要增加新的員工記錄,從鍵盤輸入并逐條寫入到原來的文件中去,其中輸入號碼是要防止號碼重復,重復時報告錯誤,重新輸入。為方便用戶管理和查看,該模塊采用的方式是用先把原來文件中的數據讀入內存,保存在內存中,然后在內存中的數據后面增加新的數據,操作完成后用寫的方式打開文件,用覆蓋的方式寫入。</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; //臨時保存信息</p><p>  printf(&quo

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

33、個人事信息\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、("學歷:");</p><p>  scanf("%s",temp.edu_level);</p><p>  printf("政治面貌:");</p><p>  scanf("%s",&temp.politic);</p><p>  printf(

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

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

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

40、錄,顯示完所有的記錄后,由用戶輸入要刪除的人員的號碼,根據號碼查找相應的記錄并將結果顯示出來,經用戶確認后刪除,刪除的方法是將文件中的數據讀入內存,賦給相應的結構體,并將結構體數組中將刪除的后面的數據賦給前一個結構體,然后將相應數據寫入文件并保存;</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("請輸入要刪除的人事編號:");

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>  //將剩余數據寫入文件 重新一寫的方式打開文件 把以前的數據擦除了</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> ?。?)數據查詢模塊</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學歷\t政治面貌\t任職時間\t來院時間\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> ?。?)數據修改模塊</b></p><p>  該模塊的功能是顯示所有信

52、息,考慮到記錄較多,采用分屏顯示,顯示完所有的記錄后,由用戶輸入需要修改的人員的號碼,查找成功后,顯示查找結果,并詢問擁護修改人員的哪部分記錄,根據用戶選擇修改相應的信息,然后保存修改后的結果:</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 改變標記</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、較輸入編號和數組中已有編號</p><p><b>  {</b></p><p>  changeIndex=i; //保存要修改的人的下標</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學歷\t政治面貌\t任職時間\t來院時間\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("學歷:");</p><p>  scanf("%s",PAInfo[changeIndex].edu_level);</p><p>  printf("政治面貌:");</p><p>  scanf("%s",&PAInfo[changeInde

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

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

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個字節輸入到fp所指向的文件中</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("\t=======>修改成功\n");</p>

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

68、oid tongji()//統計 </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> ?。?)數據排序模塊</b></p><p>  該模塊的功能是要求將記錄按照年齡或者來院時間進行排序,總體結構是先用sort()函數將文件中的數據調入內存,然后按照選擇法排序,并將結果顯示出來

77、,然后將排序后的結果保存:</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學歷

83、\t政治面貌\t任職時間\t來院時間\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>  四、調試過程 (1 .測試數據設計 2 .測試結果分析 )</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>  五、總結 </b></p><p> ?。O計中遇到的問題及解決過程 </p><p>  在向文件中添加數據的時候,要在打開文件的時候指定正確的文件操作方式,一開始指定文件的操作方式是w,w 只寫方式,若文件存在,則原有內容會被清除;若文件不存在,則會建立文件,所以每次添加完一條數據后再次插入一條數據前一條數據會自動清空,這樣文件中保存的始終是最后輸入的一

88、條數據,這不是理想的結果,后來經過查閱技術文檔,發現還有另外文件操作方式即追加a,a:追加方式打開只寫文件,只允許進行寫操作,若文件存在,則添加的內容放在文件末尾;若不存在,則建立文件。通過這種方式操作文件,每添加的一條數據都會自動追加到前一條數據的后面,這種的處理方式是題目所要求的,實現了多條數據的存儲。</p><p> ?。O計中產生的錯誤及原因分析 </p><p>  經過這一次

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

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

91、主函數,再通過完善一個個的功能模塊來完成程序的設計過程,在設計過程中要充分理解整個程序的設計思路,采用逐步細化的方式來完成整個程序。</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]; //任職時間</p><p>  char start_time[10]; //來院時間</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、//統計</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]; //這個數組用來保存所有的職工信息 和文件里面的一致</p><p>  int Number=0; //記錄總的職工人數 也就是數組/文件里面的職工人數</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* 人事信息管理系統 *\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] 統計人事信息 [6] 人事年齡排列 *\n");</p><p>  printf(&qu

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

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

105、*****************數信院******************************\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=========>提示:文件不存在,是否要創建一個?(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); //關閉fp所指的文件,釋放文件緩沖區</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); //要是文件已經有數據 將數據初始化到數組中</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();//統計</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===>程序在運行時已自動保存.....\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 改變標記</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) //比較輸入編號和數組中已有編號</p><p><b>  {</b></p><p>  changeIndex=i; //保存要修改的人的下標</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學歷\t政治面貌\t任職時間\t來院時間\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("學歷:");</p><p>  scanf("%s",PAInfo[changeIndex].edu_level);</p><p>  printf("政治

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

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

137、mp;PAInfo[changeIndex]. type);</p><p>  //信息修改后重新更新文件里面的數據 以保持數據一致性</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個字節輸入到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學歷\t政治面貌\t任職時間\t來院時間\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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論