c語言課程設(shè)計實驗報告--高校在職職工管理軟件_第1頁
已閱讀1頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計</b></p><p>  課程名稱 程序設(shè)計課程設(shè)計 </p><p>  設(shè)計題目 高校在職職工管理軟件 </p><p>  班級與班級代碼 </p><p>  專 業(yè) </

2、p><p>  指導(dǎo)教師: </p><p>  學(xué) 號: </p><p>  姓 名: </p><p><b>  提交日期: </b></p><p>  姓名

3、 課程設(shè)計成績 </p><p><b>  評語:</b></p><p>  指導(dǎo)教師(簽名) </p><p>  年 月 日</p><p>  1 系統(tǒng)功能要求(需求分析):</p><p>  采

4、用結(jié)構(gòu)體數(shù)組或文件形式存儲職工的信息,每個職工應(yīng)包含如下幾方面的信息:職工號、姓名、性別、所屬二級單位、所學(xué)專業(yè)、職稱、月工資,電話號碼。軟件由主函數(shù)(含歡迎界面)和下列6個功能模塊組成:(1)減少一個職工(需指定要刪除職工的職工號);(2)增加一個職工號(需輸入要增加職工號的所有信息);(3)查找一個職工號的信息(需指定職工號或電話號碼);(4)統(tǒng)計指定二級單位的職工人數(shù)、工資總額;(5)按職工的工資多少對職工排序(6)退出程序的運行

5、。(正文宋體4號,行距固定為20英鎊)</p><p>  2 系統(tǒng)總體(概要)設(shè)計思想</p><p> ?。?)開發(fā)與設(shè)計的總體思想</p><p>  高校在職職工管理軟件設(shè)計算法說明:</p><p>  STEP1 預(yù)處理,定義結(jié)構(gòu)體</p><p>  STEP2 進入歡迎界面</p>&l

6、t;p>  STEP3 選擇某一種功能</p><p>  STEP4 根據(jù)提示輸入一個字母</p><p>  STEP5 對于輸入的字母編輯關(guān)于刪除、增加、排序、查找、統(tǒng)計功能的函數(shù)</p><p>  STEP6 如果輸入的字母表示退出,退出系統(tǒng)</p><p><b>  系體模塊結(jié)構(gòu)圖</b></p

7、><p>  (3)系統(tǒng)文件及函數(shù)組成、功能(參考P154的表12-1)</p><p><b>  3 系統(tǒng)詳細(xì)設(shè)計</b></p><p><b> ?。?) 函數(shù)的描述</b></p><p>  a.本程序總共有8個文件:</p><p><b>  work

8、ers.h</b></p><p><b>  workers.c</b></p><p>  add_disp.c</p><p>  sav_load.c</p><p>  que_remv.c</p><p>  sort_#c</p><p&g

9、t;  handle_menu.c</p><p>  menu_select.c</p><p>  b.所涉及到的函數(shù)如下:</p><p>  (1).菜單處理函數(shù)</p><p>  函數(shù)原型:void handle_menu(void);//菜單處理</p><p>  功能:處理選擇的菜單命令</p&

10、gt;<p><b>  參數(shù):void</b></p><p><b>  返回值:void</b></p><p>  工作方式:根據(jù)命令,調(diào)用相應(yīng)函數(shù)</p><p><b>  要求:給出結(jié)束信息</b></p><p>  (2).菜單選擇函數(shù)</

11、p><p>  函數(shù)原型: int menu_select(void);//菜單選擇</p><p>  功能:接受用戶選擇的命令代碼</p><p><b>  參數(shù):void</b></p><p><b>  返回值:int</b></p><p>  工作方式:返回命令代

12、碼的整數(shù)值</p><p>  要求:只允許選擇規(guī)定鍵,如果輸入不合要求,則提醒用戶重新輸入</p><p>  (3). 刪除記錄函數(shù)</p><p>  函數(shù)原型:void removeRecord(void);//刪除指定的記錄</p><p>  功能:刪除內(nèi)存數(shù)組內(nèi)存數(shù)組中的指定記錄</p><p><

13、b>  參數(shù):void</b></p><p><b>  返回值:void</b></p><p>  工作方式:根據(jù)給定的關(guān)鍵字,查找符合的記錄并刪除之。</p><p>  要求:將后面的記錄前移,同時改變名次并給出相關(guān)信息</p><p>  (4).增加信息函數(shù)</p><

14、p>  函數(shù)原型:void addRecord(void);//在表尾追加職工信息</p><p><b>  功能:增加記錄</b></p><p><b>  參數(shù):void</b></p><p><b>  返回值:void</b></p><p>  工作方式:

15、 從尾部開始逐個追加記錄</p><p>  要求:將新的記錄追加在記錄尾部,并對記錄進行計數(shù)</p><p>  (5). 顯示所有學(xué)生信息函數(shù)</p><p>  函數(shù)原型:void display(void);//顯示信息</p><p>  功能:顯示內(nèi)存里的記錄信息</p><p><b>  參數(shù)

16、:void</b></p><p><b>  返回值:void</b></p><p>  工作方式: 從頭部開始逐個顯示記錄內(nèi)容</p><p>  要求:報告是否有記錄及記錄條數(shù)和內(nèi)容</p><p>  (6).查詢指定職工信息函數(shù)</p><p>  函數(shù)原型:void qu

17、eryInfo(void);//查詢指定的職工信息</p><p>  功能:將一個文件的內(nèi)容追加到另一個文件的尾部</p><p><b>  參數(shù):void</b></p><p><b>  返回值:void</b></p><p>  工作方式: 可以按照職工號或電話號碼來查詢</p&

18、gt;<p>  要求:打印查詢到的學(xué)生的信息或給出相關(guān)信息。</p><p>  (7). 對職工信息進行排序</p><p>  函數(shù)原型:void sort(void);//對職工進行排序</p><p>  功能:對職工信息進行排序</p><p><b>  參數(shù):void</b></p&g

19、t;<p><b>  返回值:void</b></p><p>  工作方式: 按職工工資多少對職工進行排序</p><p><b>  要求:打印排序結(jié)果</b></p><p>  (8). 統(tǒng)計二級單位人數(shù)和工資總額</p><p>  函數(shù)原型:void tongji(voi

20、d);//統(tǒng)計函數(shù)</p><p>  功能:統(tǒng)計二級單位人數(shù)和工資總額</p><p><b>  參數(shù):void</b></p><p><b>  返回值:void</b></p><p>  工作方式: 指定二級單位,然后再進行統(tǒng)計</p><p><b>

21、  要求:統(tǒng)計后打印</b></p><p>  (9). 文件存儲操作函數(shù)</p><p>  函數(shù)原型:int saveRecords(void);//文件存儲</p><p>  功能:將記錄存入默認(rèn)文件wor_info或者指定文件</p><p><b>  參數(shù):void</b></p>

22、<p>  返回值:成功0,失敗-1</p><p>  工作方式: 數(shù)組records被保存至指定文件</p><p>  要求:報告是否有記錄可存,是否能正常建立或打開文件,根據(jù)要求執(zhí)行存入操作并報告存入記錄的條數(shù)</p><p>  (10).文件讀取操作函數(shù) </p><p>  函數(shù)原型:int loadRecords

23、(void);//文件讀取</p><p>  功能:默認(rèn)文件wor_info或者指定文件的記錄取入內(nèi)存</p><p><b>  參數(shù):void</b></p><p>  返回值:成功0,失敗-1</p><p>  工作方式: records為從指定文件中讀取出的記錄</p><p>  

24、要求:報告是否有記錄可存,是否能夠正常打開文件,是否覆蓋已有記錄以及讀取記錄的條數(shù)</p><p>  (11). 結(jié)束程序運行函數(shù)</p><p>  函數(shù)原型:void quit(void);//結(jié)束運行</p><p><b>  功能:結(jié)束程序運行</b></p><p><b>  參數(shù):void&l

25、t;/b></p><p><b>  返回值:void</b></p><p>  工作方式: 根據(jù)要求決定在退出前是否將修改的記錄存入文件</p><p>  要求:結(jié)束運行之前,詢問是否對修改的記錄進行存儲</p><p>  (12). 輸出表頭函數(shù)</p><p>  函數(shù)原型:v

26、oid showTable(void);//輸出表頭</p><p><b>  功能:輸出表頭信息</b></p><p><b>  參數(shù):void</b></p><p><b>  返回值:void</b></p><p>  工作方式: 輸出一行表頭信息</p&

27、gt;<p>  要求:輸出一行表頭信息</p><p>  (13). 查找指定記錄函數(shù)原型</p><p>  函數(shù)原型: int findRecord(char* target, int targetType, int from); </p><p>  功能:查找指定的記錄</p><p>  參數(shù):char* targ

28、et欲查找記錄的某一項與target相同;</p><p>  int targetType通過什么來查找;</p><p>  int from從第from個記錄開始查找</p><p>  返回值:int(找到的記錄的序號),若找不到則返回-1</p><p>  工作方式: 根據(jù)給定的關(guān)鍵字,查找符合記錄的序號</p>&

29、lt;p>  要求:找不到則返回-1</p><p> ?。?)主要函數(shù)流程圖(2個以上,可參考材P148的寫法)</p><p>  addRecord quit </p><p><b>  (3)編碼(附后)</b></p><p&

30、gt;<b>  4 系統(tǒng)測試</b></p><p>  內(nèi)容包括:程序調(diào)試情況(8幅以上測試結(jié)果截圖);</p><p>  總結(jié):本人C語言程序設(shè)計基礎(chǔ)較差,因此,在寫這個程序的時候遇到了諸多困難,多虧同學(xué)的幫忙我的程序才可以成功地運行,真的是自己之前不夠刻苦,用功,寫代碼這種東西還是要多練,多做題才能有收獲,在寫那個登陸賬號和密碼的函數(shù)的時候,我調(diào)試了好久都

31、沒發(fā)現(xiàn)錯誤,最后。在同學(xué)的幫助下,成功發(fā)現(xiàn)是數(shù)組那里除了問題,居然少打了個中括號。所以本人數(shù)組和指針方面的知識點欠缺,還需要多多練習(xí)。雖然這份程序是參考學(xué)生成績那份來找靈感的,還是出現(xiàn)了好多錯誤,最大的收貨就是看到程序成功運行的那一刻。</p><p><b>  6 結(jié)束語</b></p><p>  感謝李惠坤同學(xué)和林柔佳同學(xué)熱心幫助。</p>&l

32、t;p><b>  參考文獻</b></p><p>  [1] 譚浩強,C程序設(shè)計(第二版),北京:清華大學(xué)出版社,2001.1 (左對齊,宋體,五號)</p><p>  [2] 陳朔鷹,C語言程序設(shè)計習(xí)題集,北京:人民郵電出版社,2003.6</p><p><b>  7 附錄(代碼)</b></p&g

33、t;<p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  //#include <iostream></p><p>  #include <conio.h>//conio是Console Input/Output(控制臺輸入輸出

34、)的簡寫,其中定義了通過控制臺進行數(shù)據(jù)輸入和數(shù)據(jù)輸出的函數(shù),主要是一些用戶通過按鍵盤產(chǎn)生的對應(yīng)操作,比如getch()函數(shù)等等。</p><p>  #include <string.h></p><p>  #define INITIAL_SIZE 100 //數(shù)組初始大小</p><p>  #define INCR_SIZE 50 //數(shù)組

35、每次增加的大小</p><p>  struct workers_info</p><p>  {//每個職工包含的信息</p><p>  char num[10];//職工號</p><p>  char name[10];//姓名</p><p>  char sex[3];//性別</p><

36、;p>  char post[10];//所屬二級單位</p><p>  char major[10];//所學(xué)專業(yè)</p><p>  char jobname[10];//職稱</p><p>  float salary;//月工資</p><p>  char phonenum[11];//電話號碼</p>&l

37、t;p><b>  }wk[10];</b></p><p>  typedef struct workers_info WrkInfo;</p><p>  extern int numWrks; //記錄職工數(shù)</p><p>  extern WrkInfo* records;//記錄職工信息的數(shù)組</p><p

38、>  extern char savedTag;//信息是否已保存的標(biāo)志,0為已保存,1為未保存</p><p>  extern int arraySize;//數(shù)組大小</p><p>  void handle_menu(void);//菜單處理</p><p>  int menu_select(void);//菜單選擇</p><

39、p>  void removeRecord(void);//刪除指定的記錄</p><p>  void addRecord(void);//在表尾追加職工信息</p><p>  void display(void);//顯示信息</p><p>  void queryInfo(void);//查詢指定的職工信息</p><p> 

40、 void sortInfo(void);//對職工進行排序</p><p>  void Tongji(void);//統(tǒng)計函數(shù)</p><p>  int saveRecords(void);//文件存儲</p><p>  int loadRecords(void);//文件讀取</p><p>  void quit(void);//

41、結(jié)束運行</p><p>  void showTable(void);//輸出表頭</p><p>  int findRecord(char* target, int targetType, int from);//char* target欲查找記錄的某一項與target相同;int targetType通過什么來查找;int from從第from個記錄開始查找</p>

42、<p>  #include "workers.h"</p><p>  /*************************</p><p><b>  *初始化</b></p><p>  *************************/</p><p>  int numWrks=

43、0;//記錄的職工數(shù)</p><p>  WrkInfo *records=NULL;//記錄職工信息的數(shù)據(jù)</p><p>  char savedTag=0;//信息是否已保存的標(biāo)志,1為未保存,0為保存</p><p>  int arraySize;//數(shù)組大小</p><p>  /*********************<

44、/p><p><b>  *主函數(shù)</b></p><p>  ********************/</p><p>  void main()</p><p><b>  {</b></p><p><b>  //初始化數(shù)組</b></p&g

45、t;<p>  char a[20]="14251102104",b[20]="0808", str[20];</p><p>  records=(WrkInfo*)malloc(sizeof(WrkInfo)*INITIAL_SIZE);</p><p>  system("color 5A");</p&g

46、t;<p>  if(records==NULL)</p><p><b>  {</b></p><p>  printf("memory fail!");</p><p><b>  exit(-1);</b></p><p><b>  }</

47、b></p><p>  arraySize=INITIAL_SIZE;//</p><p>  printf("\n");</p><p>  printf("\t**********************************\n");</p><p>  printf("\t*

48、 這是一個 *\n"); </p><p>  printf("\t* 高校在職職工簡單管理程序 *\n");</p><p>  printf("\t* 可以對職工信息進行管理 *\n"); </p><p>  printf("\t

49、* 歡迎使用管理程序 *\n");</p><p>  printf("\t**********************************\n"); </p><p>  printf("\n");</p><p>  printf("\n");</p>

50、;<p>  printf("請輸入用戶名<14251102104>和密碼<0808>");</p><p><b>  while(1){</b></p><p>  scanf("%s",str);</p><p>  if (!strcmp(str,a)){&l

51、t;/p><p>  scanf("%s",str);</p><p>  if(!strcmp(str,b)){</p><p>  printf("登陸成功");</p><p>  handle_menu();</p><p><b>  }</b><

52、;/p><p>  else printf("登陸失敗");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void copyRecord(Wr

53、kInfo* src,WrkInfo*dest);</p><p>  /*********************</p><p><b>  *菜單處理函數(shù)</b></p><p>  ********************/</p><p>  #include"workers.h"</

54、p><p>  void handle_menu(void)</p><p><b>  {</b></p><p><b>  for(;;){</b></p><p>  switch(menu_select())</p><p><b>  {</b>

55、</p><p><b>  case 1:</b></p><p>  removeRecord();</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  addRecord();&

56、lt;/p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  queryInfo();</p><p><b>  break;</b></p><p><b>  case 4:&l

57、t;/b></p><p><b>  Tongji();</b></p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  sortInfo();</p><p><b>

58、  break;</b></p><p><b>  case 6:</b></p><p>  display();</p><p><b>  break;</b></p><p><b>  case 7:</b></p><p>  

59、saveRecords();</p><p><b>  break;</b></p><p><b>  case 8:</b></p><p>  loadRecords();</p><p><b>  break;</b></p><p><

60、;b>  case 9:</b></p><p><b>  quit();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

61、>  #include"workers.h"</p><p>  /*********************</p><p>  *菜單選擇函數(shù)menu_select</p><p>  ********************/</p><p>  int menu_select()</p><

62、;p><b>  {</b></p><p>  char s[2];</p><p><b>  int cn=0;</b></p><p>  printf("\n");</p><p>  printf("\t1.刪除職工信息 \n");</

63、p><p>  printf("\t2.增加職工信息\n");</p><p>  printf("\t3.查詢職工信息\n");</p><p>  printf("\t4.統(tǒng)計職工信息\n");</p><p>  printf("\t5.對職工信息進行排序\n"

64、);</p><p>  printf("\t6.顯示職工信息\n");</p><p>  printf("\t7.保存學(xué)生信息至記錄文件\n");</p><p>  printf("\t8.從記錄文件讀取學(xué)生信息\n");</p><p>  printf("\t9.

65、結(jié)束運行\(zhòng)n");</p><p>  printf("\n\t左邊數(shù)字對應(yīng)功能選擇,請選1-9:\n\n");</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p><b>  gets(s);</

66、b></p><p>  cn=atoi(s);</p><p>  if(cn<1||cn>9)printf("\n\t輸入錯誤,重選1-9:\n\n");</p><p>  else break;</p><p><b>  }</b></p><p>

67、  return cn;</p><p><b>  }</b></p><p>  /*********************</p><p><b>  *結(jié)束運行,退出</b></p><p><b>  *參數(shù)void </b></p><p>

68、;  ********************/</p><p>  void quit(void)</p><p><b>  {</b></p><p>  char str[5];</p><p>  if(savedTag==1)</p><p><b>  {</b&g

69、t;</p><p>  printf("是否保存原來的記錄? (Y/n)");</p><p>  gets(str);</p><p>  if(str[0]!='n'&&str[0]!='N')</p><p>  saveRecords();</p>&

70、lt;p><b>  }</b></p><p>  free(records);</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  #include "workers.h"</p&

71、gt;<p>  /*********************</p><p><b>  *輸出表頭</b></p><p>  ********************/</p><p>  void showTable(void)</p><p><b>  {</b><

72、/p><p>  printf("職工號\t 姓名\t 性別\t 所屬二級單位\t 所學(xué)專業(yè)\t 職稱\t 月工資\t 電話號碼\n");</p><p><b>  } </b></p><p>  /*********************</p><p&g

73、t;  *顯示所有職工信息函數(shù)</p><p>  ********************/</p><p>  void display(void)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  if(nu

74、mWrks==0)</p><p><b>  {</b></p><p>  printf("沒有可供顯示的記錄!");</p><p><b>  return;</b></p><p><b>  }</b></p><p> 

75、 showTable();</p><p>  for(i=0;i<numWrks;i++)</p><p><b>  {</b></p><p><b>  //打印職工信息</b></p><p>  printf("%s \t %s \ t %s \ t %s \t

76、",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major);</p><p>  printf("%s \t %s \ t %f \ t %s \t ",records[i].jobname,records[i].salary,records[i].phonenum);&

77、lt;/p><p>  //打印滿10個記錄后停下來</p><p>  if(i%9==0&&i!=0)</p><p><b>  {</b></p><p>  printf("輸入任一字符后繼續(xù)...\n");</p><p><b>  getc

78、h();</b></p><p>  printf("\n\n");</p><p>  showTable();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

79、/b></p><p>  /****************************************</p><p>  *在當(dāng)前表的末尾增加新的信息結(jié)果:</p><p>  *records中將記錄的信息,如果數(shù)組</p><p>  *大小不夠,會重新申請數(shù)組空間</p><p>  ******

80、**********************************/</p><p>  void addRecord(void)</p><p><b>  {</b></p><p>  //records=realloc(records,(arraySize+INCR_SIZE)*sizeof(WrkInfo));</p>

81、<p>  char str[10];</p><p><b>  int j;</b></p><p>  float mark,sum;</p><p>  if(numWrks==0)</p><p>  printf("原來沒有記錄,現(xiàn)在建立新表\n");</p>

82、<p><b>  else</b></p><p>  printf("下面在當(dāng)前表的末尾增加新的信息\n");</p><p>  while(1)//()中為1表示無條件反復(fù)循環(huán)</p><p><b>  {</b></p><p>  printf("

83、;您將要添加一組信息,確定嗎?(Y/n)");</p><p>  gets(str);</p><p>  if (str[0]=='n' || str[0]=='N') // 不再添加新的信息</p><p><b>  break;</b></p><p>  if (nu

84、mWrks >= arraySize) // 現(xiàn)在的數(shù)組空間不足,需要重新申請空間</p><p><b>  {</b></p><p>  records = realloc(records,(arraySize+INCR_SIZE)*sizeof(WrkInfo));//新空間大小變?yōu)?arraySize+INCR_SIZE)記錄大小,即在原來基礎(chǔ)上增加I

85、NCR_SIZE個記錄大小</p><p>  if (records == NULL)</p><p><b>  {</b></p><p>  printf("memory failed!");</p><p><b>  exit(-1);</b></p>

86、<p><b>  }</b></p><p>  arraySize = arraySize+INCR_SIZE; //arraySize修改為新空間可保存的記錄數(shù)</p><p><b>  }</b></p><p>  printf("請輸入職工號:");</p><

87、;p>  gets(records[numWrks].num);</p><p>  printf("請輸入姓名:");</p><p>  gets(records[numWrks].name);</p><p>  printf("請輸入性別(0為女,1為男):");</p><p>  ge

88、ts(str);</p><p>  if(str[0]=='0')</p><p>  strcpy(records[numWrks].sex,"女");</p><p><b>  else</b></p><p>  strcpy(records[numWrks].sex,&qu

89、ot;男");</p><p>  printf("請輸入所屬二級單位:");</p><p>  gets(records[numWrks].post);</p><p>  printf("請輸入所學(xué)專業(yè):");</p><p>  gets(records[numWrks].major)

90、;</p><p>  printf("請輸入職稱:");</p><p>  gets(records[numWrks].jobname);</p><p>  printf("請輸入月工資:");</p><p>  gets(str);</p><p>  records[

91、numWrks].salary=(float)atof(str);</p><p>  printf("請輸入電話號碼:");</p><p>  gets(records[numWrks].phonenum);</p><p>  numWrks++;</p><p><b>  }</b><

92、/p><p>  printf("現(xiàn)在一共有%d條信息\n",numWrks);</p><p>  savedTag=1;</p><p>  }#include"workers.h"</p><p>  /*********************************************<

93、/p><p><b>  *查找指定記錄函數(shù)</b></p><p>  *參數(shù): target:欲查找記錄的某一項與target相同</p><p>  *targetType:表明通過那一項來查找,0為學(xué)號,1為姓名,2為名次</p><p>  *from:從第from個記錄開始找</p><p&

94、gt;  *返回:找到的記錄的序號,若找不到則返回-1</p><p>  *********************************************/</p><p>  int findRecord(char*target, int targetType, int from)</p><p><b>  {</b></

95、p><p><b>  int i;</b></p><p>  for(i=from;i<=numWrks;i++)</p><p><b>  {</b></p><p>  if((targetType==0&&strcmp(target,records[i].num)==0

96、)||(targetType==1&&strcmp(target,records[i].name)==0)||(targetType==2&&strcmp(target,records[i].post)==0))</p><p><b>  return i;</b></p><p><b>  }</b><

97、/p><p>  return -1;</p><p><b>  }</b></p><p>  void queryInfo(void)</p><p><b>  {</b></p><p>  char str[5];</p><p>  char

98、 target[20];</p><p><b>  int type;</b></p><p>  int count;</p><p><b>  int i;</b></p><p>  if(numWrks==0)</p><p><b>  {</b

99、></p><p>  printf("沒有可供查詢的記錄");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  while(1)</b></p><p>

100、<b>  {</b></p><p>  printf("請輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");</p><p>  printf("1.按職工號\n");</p><p>  printf("2.按電話號碼\n");</p><p>  ge

101、ts(str);</p><p>  if(strlen(str)==0)</p><p><b>  break;</b></p><p>  if(str[0]=='1')</p><p><b>  {</b></p><p>  printf(&quo

102、t;請輸入欲查詢的職工的職工號:");</p><p>  gets(target);</p><p><b>  type=0;</b></p><p><b>  }</b></p><p><b>  else</b></p><p>&

103、lt;b>  {</b></p><p>  printf("請輸入欲查詢的職工的電話號碼:");</p><p>  gets(target);</p><p><b>  type=1;</b></p><p><b>  }</b></p>

104、<p>  i=findRecord(target,type,0);</p><p><b>  if(i==1)</b></p><p><b>  {</b></p><p>  //打印查詢到的職工信息</p><p>  showTable();</p><p&

105、gt;<b>  }</b></p><p><b>  count=0;</b></p><p>  while(i!=-1)</p><p><b>  {</b></p><p><b>  count++;</b></p><p

106、>  printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p>  i=fi

107、ndRecord(target,type,i+1);</p><p><b>  }</b></p><p>  if(count==0)</p><p>  printf("沒有符合條件的職工!\n");</p><p><b>  else</b></p>&l

108、t;p>  printf("一共找到了%d名職工的信息\n\n",count);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****************************</p><p><b&g

109、t;  *刪除記錄函數(shù)</b></p><p>  ***************************/</p><p>  void removeRecord(void)</p><p><b>  {</b></p><p>  char str[5];</p><p>  c

110、har target[20];</p><p><b>  int type;</b></p><p><b>  int i,j;</b></p><p>  if(numWrks==0)</p><p><b>  {</b></p><p>  p

111、rintf("沒有可供刪除的記錄\n\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  while(1){</b></p><p>  printf("直接輸入回車則結(jié)

112、束移除操作)\n");</p><p>  printf("請輸入欲刪除的記錄的職工號:\n");</p><p>  gets(target);</p><p><b>  type=0;</b></p><p>  i=findRecord(target,type,0);</p&g

113、t;<p>  if(i==-1)printf("沒有符合條件的職工!\n");</p><p>  while(i!=-1)</p><p><b>  {</b></p><p>  showTable();</p><p>  printf("%s\t%s\t%s\t%s

114、\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p>  printf("確定要刪除這個職工的信息嗎?(y/N)"

115、;);</p><p>  gets(str);</p><p>  if(str[0]=='y'||str[0]=='Y')</p><p><b>  {</b></p><p>  numWrks--;</p><p>  printf("該職工信息

116、已經(jīng)刪除.\n");</p><p><b>  return;</b></p><p>  //將后面的記錄前移</p><p>  for(j=i;j<numWrks;j++)</p><p><b>  {</b></p><p>  copyRecor

117、d(&records[j+1],&records[j]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  //取下一個符合條件的記錄</p><p>  i=findRecord(target,type,i+1);</p&g

118、t;<p><b>  }</b></p><p><b>  }</b></p><p>  savedTag=1;</p><p><b>  }</b></p><p>  /*****************************************

119、</p><p>  *將src指向的一條記錄復(fù)制給dest指向的記錄</p><p>  *****************************************/</p><p>  void copyRecord(WrkInfo*src,WrkInfo*dest)</p><p><b>  {</b>&

120、lt;/p><p>  strcpy(dest->num,src->num);</p><p>  strcpy(dest->name,src->name);</p><p>  strcpy(dest->sex,src->sex);</p><p>  strcpy(dest->post,src->

121、;post);</p><p>  strcpy(dest->major,src->major);</p><p>  strcpy(dest->jobname,src->jobname);</p><p>  dest->salary=src->salary;</p><p>  strcpy(dest-

122、>phonenum,src->phonenum);</p><p><b>  }</b></p><p>  #include"workers.h"</p><p>  /*********************************************</p><p><

123、b>  *查找指定記錄函數(shù)</b></p><p>  *參數(shù): target:欲查找記錄的某一項與target相同</p><p>  *targetType:表明通過那一項來查找,0為學(xué)號,1為姓名,2為名次</p><p>  *from:從第from個記錄開始找</p><p>  *返回:找到的記錄的序號,若找不

124、到則返回-1</p><p>  *********************************************/</p><p>  int findRecord(char*target, int targetType, int from)</p><p><b>  {</b></p><p><b

125、>  int i;</b></p><p>  for(i=from;i<=numWrks;i++)</p><p><b>  {</b></p><p>  if((targetType==0&&strcmp(target,records[i].num)==0)||(targetType==1&

126、;&strcmp(target,records[i].name)==0)||(targetType==2&&strcmp(target,records[i].post)==0))</p><p><b>  return i;</b></p><p><b>  }</b></p><p>  re

127、turn -1;</p><p><b>  }</b></p><p>  void queryInfo(void)</p><p><b>  {</b></p><p>  char str[5];</p><p>  char target[20];</p>

128、;<p><b>  int type;</b></p><p>  int count;</p><p><b>  int i;</b></p><p>  if(numWrks==0)</p><p><b>  {</b></p><p

129、>  printf("沒有可供查詢的記錄");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  while(1)</b></p><p><b>  {</b>

130、;</p><p>  printf("請輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");</p><p>  printf("1.按職工號\n");</p><p>  printf("2.按電話號碼\n");</p><p>  gets(str);</p>&

131、lt;p>  if(strlen(str)==0)</p><p><b>  break;</b></p><p>  if(str[0]=='1')</p><p><b>  {</b></p><p>  printf("請輸入欲查詢的職工的職工號:"

132、;);</p><p>  gets(target);</p><p><b>  type=0;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>

133、</p><p>  printf("請輸入欲查詢的職工的電話號碼:");</p><p>  gets(target);</p><p><b>  type=1;</b></p><p><b>  }</b></p><p>  i=findReco

134、rd(target,type,0);</p><p><b>  if(i==1)</b></p><p><b>  {</b></p><p>  //打印查詢到的職工信息</p><p>  showTable();</p><p><b>  }</b

135、></p><p><b>  count=0;</b></p><p>  while(i!=-1)</p><p><b>  {</b></p><p><b>  count++;</b></p><p>  printf("%s

136、\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p>  i=findRecord(target,type,

137、i+1);</p><p><b>  }</b></p><p>  if(count==0)</p><p>  printf("沒有符合條件的職工!\n");</p><p><b>  else</b></p><p>  printf("

138、;一共找到了%d名職工的信息\n\n",count);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****************************</p><p><b>  *刪除記錄函數(shù)</b>

139、</p><p>  ***************************/</p><p>  void removeRecord(void)</p><p><b>  {</b></p><p>  char str[5];</p><p>  char target[20];</p

140、><p><b>  int type;</b></p><p><b>  int i,j;</b></p><p>  if(numWrks==0)</p><p><b>  {</b></p><p>  printf("沒有可供刪除的記錄

141、\n\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  while(1){</b></p><p>  printf("直接輸入回車則結(jié)束移除操作)\n");</

142、p><p>  printf("請輸入欲刪除的記錄的職工號:\n");</p><p>  gets(target);</p><p><b>  type=0;</b></p><p>  i=findRecord(target,type,0);</p><p>  if(i==

143、-1)printf("沒有符合條件的職工!\n");</p><p>  while(i!=-1)</p><p><b>  {</b></p><p>  showTable();</p><p>  printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s"

144、;,records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p>  printf("確定要刪除這個職工的信息嗎?(y/N)");</p><p&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論