課程設(shè)計-- 學(xué)生信息管理系統(tǒng)設(shè)計_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課程設(shè)計說明書(論文)</p><p>  題 目 學(xué)生信息管理系統(tǒng)設(shè)計 </p><p>  課 程 名 稱 高級語言程序設(shè)計課程設(shè)計 </p><p>  專 業(yè) 通信工程

2、 </p><p>  班 級 </p><p>  學(xué) 生 姓 名 </p><p>  學(xué) 號 </p>&l

3、t;p>  設(shè) 計 地 點(diǎn) 信息樓C207 </p><p>  指 導(dǎo) 教 師 </p><p>  設(shè)計起止時間:2013 年 12 月23 日至2013年 12 月27日 </p><p><b>  學(xué)生信息

4、管理系統(tǒng)</b></p><p><b>  摘要</b></p><p>  隨著學(xué)校的規(guī)模不斷過大,學(xué)生數(shù)量急劇增加,有關(guān)學(xué)生的各種 信息量也成倍增加。面對龐大的信息量需要有學(xué)生信息管理系統(tǒng)來提高學(xué)生管理工作的效率。通過這樣的系統(tǒng)可以做到信息的規(guī)范化管理,其基本功能為快速查詢、修改、增加、刪除等,從而減少管理方面的工作量。</p><

5、;p>  關(guān)鍵詞:學(xué)生信息管理系統(tǒng),基本功能</p><p><b>  目 錄 </b></p><p><b>  中文摘要Ⅰ</b></p><p><b>  1 題目要求1</b></p><p><b>  要求.1</b>&

6、lt;/p><p><b>  2 需求分析1</b></p><p><b>  3 總體設(shè)計1</b></p><p><b>  詳細(xì)設(shè)計2</b></p><p>  4.1主函數(shù)及流程圖2</p><p>  4.2各功能模塊設(shè)計及流程

7、圖5</p><p>  5.運(yùn)行結(jié)果(附帶抓圖)12</p><p>  6、程序調(diào)試過程14</p><p><b>  7.總結(jié)15</b></p><p><b>  參考文獻(xiàn)15</b></p><p>  附錄 源程序代碼16</p>&

8、lt;p><b>  1 題目要求</b></p><p>  1)系統(tǒng)以菜單方式工作:至少采用文本菜單界面</p><p>  2)學(xué)生信息錄入功能</p><p>  3)學(xué)生信息瀏覽功能 4)查詢、排序功能(至少一種查詢方式) 按學(xué)號查詢</p><p><b>  按姓名

9、查詢 </b></p><p>  5)學(xué)生信息的刪除、修改。</p><p>  用鏈表或結(jié)構(gòu)體數(shù)組實現(xiàn)</p><p><b>  2 需求分析</b></p><p>  根據(jù)題目要求,學(xué)生信息數(shù)據(jù)以文本文件存儲,故應(yīng)提供文件的輸入、輸出等操作;還應(yīng)提供顯示、查找、刪除、排序等操作;另外還應(yīng)提供鍵盤

10、式選擇菜單實現(xiàn)功能選擇。</p><p><b>  3 總體設(shè)計</b></p><p>  本程序分為七大模塊:新建菜單、增加菜單、刪除菜單、查詢菜單、修改菜單、顯示菜單(按學(xué)號排序顯示)以及退出菜單。主要模塊為前六個,新建菜單可以新建一整份含多個學(xué)生信息的記錄,增加菜單可以一次增加一條關(guān)于一個學(xué)生的記錄,刪除菜單可以一次刪除一條學(xué)生記錄,查詢菜單可以按學(xué)生學(xué)號

11、查詢其相關(guān)信息,修改菜單可以根據(jù)學(xué)號找到該學(xué)生記錄然后修改其某項信息,顯示菜單可以按學(xué)號順序?qū)⑺袑W(xué)生信息排序顯示。</p><p>  圖1 系統(tǒng)功能模塊</p><p><b>  4 詳細(xì)設(shè)計 </b></p><p><b>  (1)主菜單函數(shù) </b></p><p>  此函數(shù)

12、功能是為提供鍵盤式選擇菜單以調(diào)用不同函數(shù)。</p><p><b>  N</b></p><p><b>  Y </b></p><p>  圖2 主菜單函數(shù)流程圖</p><p>  int main(void)</p><p><b>  {&

13、lt;/b></p><p>  struct student stu[MAXLEN];</p><p><b>  char c;</b></p><p>  if(!load("student.txt",stu))exit(0);</p><p><b>  do{</b&g

14、t;</p><p>  system("cls");</p><p>  puts("--------------------------------------\n");</p><p>  puts("1.新建\n");</p><p>  puts("2.增加\

15、n");</p><p>  puts("3.刪除\n");</p><p>  puts("4.查詢\n");</p><p>  puts("5.修改\n");</p><p>  puts("6.按學(xué)號排序顯示\n");</p>

16、<p>  puts("0.退出\n");</p><p>  puts("--------------------------------------\n");</p><p>  puts("請輸入選項...\n");</p><p>  fflush(stdin);//清除緩沖區(qū)<

17、;/p><p>  c = getchar();</p><p><b>  switch(c)</b></p><p><b>  {</b></p><p><b>  case '0':</b></p><p><b>  {

18、</b></p><p>  unload("student.txt",stu);</p><p><b>  return 0;</b></p><p><b>  }break;</b></p><p><b>  case '1':&l

19、t;/b></p><p><b>  {</b></p><p>  creat(stu);</p><p><b>  }break;</b></p><p><b>  case '2':</b></p><p><b&

20、gt;  {</b></p><p><b>  do{</b></p><p>  struct student s;</p><p>  system("cls");</p><p>  puts("請輸入班級 姓名 性別 學(xué)號...\n");</p>

21、<p>  fflush(stdin);</p><p>  scanf("%s%s%s%ld",s.clas,s.name,s.sex,&s.id);</p><p>  add(stu,&s);</p><p>  system("cls");</p><p>  put

22、s("操作成功!\n繼續(xù)請按y,返回主菜單請按任意鍵...\n");</p><p>  fflush(stdin);</p><p>  }while(getch() == 'y');</p><p><b>  }break;</b></p><p><b>  case

23、 '3':</b></p><p><b>  {</b></p><p><b>  do{</b></p><p><b>  long id;</b></p><p>  system("cls");</p>

24、<p>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);</p><p>  system("cls");</p><p>  if(del(stu,id))puts("操作成功!\n");</p><

25、;p>  puts("繼續(xù)請按y,返回主菜單請按任意鍵...\n");</p><p>  }while(getch() == 'y');</p><p><b>  }break;</b></p><p><b>  case '4':</b></p>

26、<p><b>  {</b></p><p><b>  do{</b></p><p><b>  long id;</b></p><p><b>  int i;</b></p><p>  system("cls"

27、;);</p><p>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);</p><p>  system("cls");</p><p>  if((i = find(stu,id)) != -1){</p>

28、<p>  printf("%s%s%s%ld\n\n",stu[i].clas,stu[i].name,</p><p>  stu[i].sex,stu[i].id);</p><p><b>  }else{</b></p><p>  puts("查無此人!\n");</p&

29、gt;<p><b>  }</b></p><p>  puts("繼續(xù)請按y,返回請按任意鍵...\n");</p><p>  }while(getch() == 'y');</p><p><b>  }break;</b></p><p>

30、<b>  case '5':</b></p><p><b>  {</b></p><p><b>  do{</b></p><p><b>  long id;</b></p><p>  system("cls"

31、;);</p><p>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);</p><p>  if(modify(stu,id)){</p><p>  system("cls");</p><p> 

32、 puts("操作成功!\n");</p><p><b>  }</b></p><p>  puts("繼續(xù)請按y,返回主菜單請按任意鍵...\n");</p><p>  }while(getch() == 'y');</p><p><b>  }

33、break;</b></p><p><b>  case '6':</b></p><p><b>  {</b></p><p>  int i = 0;</p><p>  system("cls");</p><p> 

34、 puts("學(xué)生名單:\n");</p><p>  puts("班級姓名 性別學(xué)號\n");</p><p>  sort(stu);</p><p>  while(stu[i].id != END){</p><p>  printf("%s%s%s%ld\n",

35、stu[i].clas,stu[i].name,</p><p>  stu[i].sex,stu[i].id);</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  puts("請按任意鍵結(jié)束...\n");</p&g

36、t;<p><b>  getch();</b></p><p><b>  }break;</b></p><p>  default:puts("輸入錯誤\n");break;</p><p><b>  } </b></p><p>  

37、}while(1);</p><p>  unload("student.txt",stu);</p><p><b>  return 0;</b></p><p><b>  } </b></p><p><b>  新建菜單函數(shù)</b></p&g

38、t;<p>  此函數(shù)的功能是創(chuàng)建一整份關(guān)于多個學(xué)生的相關(guān)信息的記錄,每次新建會覆蓋之前的記錄。</p><p>  圖3 新建菜單函數(shù)流程圖</p><p>  void creat(struct student *stu)</p><p><b>  {</b></p><p><b>  

39、int n;</b></p><p>  int i = 0;</p><p>  system("cls");</p><p>  puts("請輸入學(xué)生人數(shù)...\n");</p><p>  scanf("%ld",&n);</p><p

40、>  system("cls");</p><p>  printf("請輸入%d位學(xué)生的班級 姓名 性別 學(xué)號...\n\n",n);</p><p>  while(i != n){</p><p>  scanf("%s%s%s%ld",stu[i].clas,stu[i].name,st

41、u[i].sex,</p><p>  &stu[i].id);</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  stu[i].id = END;</p><p><b>  }</b>&

42、lt;/p><p><b> ?。?)增加菜單函數(shù)</b></p><p>  此函數(shù)的功能是增加一條關(guān)于一名學(xué)生信息的記錄。</p><p><b>  Y </b></p><p><b>  N</b></p><p><b>  case

43、'2':</b></p><p><b>  {</b></p><p><b>  do{</b></p><p>  struct student s;</p><p>  system("cls");</p><p>  

44、puts("請輸入班級 姓名 性別 學(xué)號...\n");</p><p>  fflush(stdin);</p><p>  scanf("%s%s%s%ld",s.clas,s.name,s.sex,&s.id);</p><p>  add(stu,&s);</p><p>  s

45、ystem("cls");</p><p>  puts("操作成功!\n繼續(xù)請按y,返回主菜單請按任意鍵...\n");</p><p>  fflush(stdin);</p><p>  }while(getch() == 'y');</p><p>  }break; (此部分

46、位于主函數(shù)中)</p><p>  void add(struct student *stu,const struct student *s)</p><p><b>  {</b></p><p>  int i = size(stu);</p><p>  stu[i] = *s;</p><p&

47、gt;  stu[i + 1].id = END;</p><p>  sort(stu);</p><p><b>  }</b></p><p><b> ?。?)刪除菜單函數(shù)</b></p><p>  此函數(shù)的功能是刪除一條學(xué)生記錄。</p><p><b>

48、;  N</b></p><p><b>  Y </b></p><p>  N Y </p><p>  int del(struct student *stu,long id)</p><p><b>  {</b&g

49、t;</p><p><b>  int i,n;</b></p><p>  if((i = find(stu,id)) == -1)</p><p><b>  {</b></p><p>  puts("查無此人...\n");</p><p>&l

50、t;b>  return 0;</b></p><p><b>  }</b></p><p>  n = size(stu);</p><p>  if(stu[n - 1].id == id)</p><p><b>  {</b></p><p>  

51、stu[n - 1].id = END;</p><p><b>  return 1;</b></p><p><b>  } </b></p><p>  while(i != n - 1)</p><p><b>  {</b></p><p> 

52、 stu[i] = stu[i + 1];</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  stu[i].id = END;</p><p><b>  return 1;</b></p><p>

53、;<b>  }</b></p><p><b> ?。?)查詢菜單函數(shù)</b></p><p>  此函數(shù)的功能是按照學(xué)號查詢某個學(xué)生的信息。</p><p><b>  N</b></p><p><b>  Y</b></p><

54、p>  N Y</p><p><b>  case '4':</b></p><p><b>  {</b></p><p><b>  do{</b></p><p><b>  lo

55、ng id;</b></p><p><b>  int i;</b></p><p>  system("cls");</p><p>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);<

56、;/p><p>  system("cls");</p><p>  if((i = find(stu,id)) != -1){</p><p>  printf("%s%s%s%ld\n\n",stu[i].clas,stu[i].name,</p><p>  stu[i].sex,stu[i].

57、id);</p><p><b>  }else{</b></p><p>  puts("查無此人!\n");</p><p><b>  }</b></p><p>  puts("繼續(xù)請按y,返回請按任意鍵...\n");</p><

58、p>  }while(getch() == 'y');</p><p>  }break; (此部分位于主函數(shù)中)</p><p>  int find(const struct student *stu,long id)</p><p><b>  {</b></p><p>  int i

59、 = 0;</p><p>  while(stu[i].id != END)</p><p><b>  {</b></p><p>  if(stu[i].id == id)</p><p><b>  {</b></p><p><b>  return i;

60、</b></p><p><b>  }</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  return -1;</p><p><b>  }</b>&l

61、t;/p><p><b> ?。?)修改菜單函數(shù)</b></p><p>  此函數(shù)功能為根據(jù)學(xué)號找到該學(xué)生記錄然后修改其某項信息。</p><p><b>  N</b></p><p><b>  Y</b></p><p>  N

62、 Y</p><p>  int modify(struct student *stu,long id)</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  int flag;<

63、/b></p><p><b>  char c;</b></p><p>  if((i = find(stu,id)) == -1)</p><p><b>  {</b></p><p>  system("cls");</p><p>  p

64、uts("查無此人...\n");</p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  do{</b></p><p><b>  flag = 1;</b><

65、;/p><p>  system("cls");</p><p>  printf("原數(shù)據(jù):\n%s %s %s %ld\n\n",stu[i].clas,stu[i].name,</p><p>  stu[i].sex,stu[i].id);</p><p>  puts("請輸入修改

66、的選項...\n");</p><p>  puts("1.班級\n2.姓名\n3.性別\n4.學(xué)號\n");</p><p>  fflush(stdin);</p><p>  c = getchar();</p><p>  fflush(stdin);</p><p><b&

67、gt;  switch(c)</b></p><p><b>  {</b></p><p><b>  case '1':</b></p><p><b>  {</b></p><p>  char clas[30];</p>&l

68、t;p>  system("cls");</p><p>  puts("請輸入班級...\n");</p><p>  gets(clas);</p><p>  strcpy(stu[i].clas,clas);</p><p><b>  }break;</b><

69、/p><p><b>  case '2':</b></p><p><b>  {</b></p><p>  char name[20];</p><p>  system("cls");</p><p>  puts("請輸入姓

70、名...\n");</p><p>  gets(name);</p><p>  strcpy(stu[i].name,name);</p><p><b>  }break;</b></p><p><b>  case '3':</b></p><

71、p><b>  {</b></p><p>  char sex[5];</p><p>  system("cls");</p><p>  puts("請輸入性別...\n");</p><p>  gets(sex);</p><p>  str

72、cpy(stu[i].sex,sex);</p><p><b>  }break;</b></p><p><b>  case '4':</b></p><p><b>  {</b></p><p><b>  long id;</b>

73、;</p><p>  system("cls");</p><p>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);</p><p>  stu[i].id = id;</p><p><b&g

74、t;  }break;</b></p><p>  default:flag = 0;break;</p><p><b>  }</b></p><p>  fflush(stdin);</p><p><b>  if(flag)</b></p><p>&l

75、t;b>  {</b></p><p>  puts("\n操作成功!\n");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p

76、>  puts("輸入錯誤!請重新輸入...\n");</p><p><b>  }</b></p><p>  }while(!flag);</p><p><b>  return 1;</b></p><p><b>  }</b></p

77、><p><b>  (7)排序菜單函數(shù)</b></p><p>  此函數(shù)功能為按學(xué)號順序?qū)⑺袑W(xué)生信息排序顯示。</p><p>  void sort(struct student *stu)</p><p><b>  {</b></p><p>  int i,j,n;

78、</p><p><b>  int flag;</b></p><p>  struct student temp;</p><p>  n = size(stu);</p><p>  for(i = 0;i < n - 1;i++){</p><p><b>  flag =

79、 1;</b></p><p>  for(j = 0;j < n - i - 1;j++){</p><p>  if(stu[j].id > stu[j + 1].id){</p><p>  temp = stu[j];</p><p>  stu[j] = stu[j + 1];</p><

80、p>  stu[j + 1] = temp;</p><p><b>  flag = 0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag)break;</p><p>

81、<b>  }</b></p><p><b>  } </b></p><p><b>  5 運(yùn)行結(jié)果</b></p><p><b>  主菜單</b></p><p><b>  新建菜單</b></p>

82、<p><b>  增加菜單</b></p><p><b>  刪除菜單</b></p><p><b>  查詢菜單</b></p><p><b>  修改菜單</b></p><p><b>  排序菜單</b>

83、</p><p><b>  6 程序調(diào)試過程</b></p><p>  本程序是在Microsoft Visual C++6.0下進(jìn)行的,采用分模塊調(diào)試的方法進(jìn)行編譯,即完成一個函數(shù)功能模塊就編譯一個功能模塊,最后再進(jìn)行整體編譯并生成可執(zhí)行文件。</p><p>  開始制作它時常常和有很多代碼不認(rèn)識,我一般都會導(dǎo)航網(wǎng)搜索查出相關(guān)代碼的意

84、思并記住他們。調(diào)試過程中曾出現(xiàn)過亂碼現(xiàn)象,通過仔細(xì)檢查原因在于輸出時定義的位數(shù)不足,我增大了位數(shù)解決了該問題。</p><p>  在運(yùn)行程序時,每個功能在開始工作前都需要清屏,否則會導(dǎo)致界面上的字符會一直往下顯示排成一長串,不美觀而且很麻煩,VC上不知道如何清屏,通過上網(wǎng)查詢后知道使用system("cls");。</p><p>  剛開始調(diào)試時系統(tǒng)經(jīng)常報出很多相同

85、或者相似的錯誤,我參考了老師發(fā)的C語言常見出錯表,一個個的改正,并利用單步調(diào)試確定自己的改正無誤后才繼續(xù)下一步操作。</p><p>  在程序編寫過程中還經(jīng)常會犯一些低級錯誤:在一些該加逗號的語句后不加逗號,不該加的語句后加上;函數(shù)未定義就使用等等。</p><p>  還有就是字符與字符串混淆:C語言中字符常量是由一對單引號括起來的單個字符;而字符串常量是用一對雙引號括起來的字符序列。

86、字符常量存放在字符型變量中,而字符串常量只能存放在字符型數(shù)組中。</p><p><b>  7 總結(jié)</b></p><p>  C語言是一門不簡單的課程。原本以為做程序是很簡單的事,但是想錯了,要完完整整地把一個程序按照要求編寫出來是一件很不容易的事。從開始看題目,一個個分部的分析、寫算法、畫流程圖、設(shè)計等等,是要花費(fèi)很長時間的。</p><

87、p>  經(jīng)過五天的努力,我終于完成自己的編寫并運(yùn)行成功。通過本次課程設(shè)計,我了解掌握了模塊化程序設(shè)計方法,理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計的思路和方法。程序設(shè)計的過程就是確定問題的詳細(xì)步驟,即流程。而在程序設(shè)計中理清整個問題的流程很重要,然后再采用逐步細(xì)化的方法實現(xiàn)整個程序。一個較大的程序,一般不可能一次就設(shè)計出一個很完善的系統(tǒng)。通常要先設(shè)計出滿足基本要求的系統(tǒng),然后在測試或使用過程中再不斷完善。</p><p>

88、  這個程序做下來,我覺得做程序需要很大的耐心,要耐得住不停編譯改錯的枯燥。還得細(xì)心,有很多錯誤就是因為自己的粗心造成的,有時候一個錯可能從頭到尾看個幾遍都看不出來錯在了哪里。</p><p>  現(xiàn)在覺得我們學(xué)的東西還是有限的,一個稍微大點(diǎn)的程序就讓我們花費(fèi)了很大的精力,還是要多學(xué)點(diǎn),多實踐,才能真正掌握好C語言這門學(xué)科。在以后的日子里,要想把編程學(xué)好還是要下很大一番功夫的,自己要多多努力。</p>

89、<p><b>  參考文獻(xiàn)</b></p><p> ?。?)廖雷等.C語言程序設(shè)計基礎(chǔ)實驗教程.北京:高等教學(xué)出版社,2006</p><p>  (2)譚浩強(qiáng).C程序設(shè)計.北京:清華大學(xué)出版社,2007</p><p> ?。?)譚浩強(qiáng). C程序設(shè)計題解與上機(jī)指導(dǎo)(第三版).北京:清華大學(xué)出版社,2005</p>

90、<p> ?。?)其他圖書館或網(wǎng)上資源</p><p>  附錄 源程序代碼</p><p>  #include <stdio.h></p><p>  #include <string.h></p><p>  #include <conio.h></p><p&g

91、t;  #define MAXLEN50</p><p>  #define END-1</p><p>  #define NONE0</p><p>  struct student{</p><p>  char clas[30];</p><p>  char name[20];</p>

92、<p>  char sex[5];</p><p><b>  long id;</b></p><p><b>  };</b></p><p>  int load(const char*,struct student*);</p><p>  int unload(const ch

93、ar*,const struct student*);</p><p>  void creat(struct student*);</p><p>  void add(struct student*,const struct student*);</p><p>  int del(struct student*,long);</p><p&

94、gt;  int modify(struct student*,long);</p><p>  void sort(struct student*);</p><p>  int size(const struct student*);</p><p>  int find(const struct student*,long);</p><p

95、>  int load(const char *fname,struct student *stu)</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  int i = 0;</p><p>  if((fp = fopen(fn

96、ame,"rb")) == NULL){</p><p>  puts("fail to open file---");</p><p>  puts(fname);</p><p>  puts("\n");</p><p><b>  return 0;</b&g

97、t;</p><p><b>  }</b></p><p>  while(fgetc(fp) != EOF){</p><p>  fseek(fp,-1,SEEK_CUR);</p><p>  fread(stu + i,sizeof(struct student),1,fp);</p><p

98、><b>  i++;</b></p><p><b>  }</b></p><p>  (stu + i)->id = END;</p><p>  fclose(fp);</p><p><b>  return 1;</b></p><p

99、><b>  }</b></p><p>  int unload(const char *fname,const struct student *stu)</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p> 

100、 int i = 0;</p><p>  if((fp = fopen(fname,"wb")) == NULL){</p><p>  puts("fail to open file---");</p><p>  puts(fname);</p><p>  puts("\n"

101、);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  while(stu[i].id != END){</p><p>  fwrite(stu + i,sizeof(struct student),1,fp);</p>

102、<p><b>  i++;</b></p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  return 1;</b></p><p><b>  }</b></p>&

103、lt;p>  int size(const struct student *stu)</p><p><b>  {</b></p><p>  int i = 0;</p><p>  while(stu[i].id != END)i++;</p><p><b>  return i;</b&g

104、t;</p><p><b>  }</b></p><p>  int find(const struct student *stu,long id)</p><p><b>  {</b></p><p>  int i = 0;</p><p>  while(stu[

105、i].id != END)</p><p><b>  {</b></p><p>  if(stu[i].id == id)</p><p><b>  {</b></p><p><b>  return i;</b></p><p><b&g

106、t;  }</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  return -1;</p><p><b>  }</b></p><p>  void add(struct s

107、tudent *stu,const struct student *s)</p><p><b>  {</b></p><p>  int i = size(stu);</p><p>  stu[i] = *s;</p><p>  stu[i + 1].id = END;</p><p> 

108、 sort(stu);</p><p><b>  }</b></p><p>  int del(struct student *stu,long id)</p><p><b>  {</b></p><p><b>  int i,n;</b></p>&l

109、t;p>  if((i = find(stu,id)) == -1)</p><p><b>  {</b></p><p>  puts("查無此人...\n");</p><p><b>  return 0;</b></p><p><b>  }</

110、b></p><p>  n = size(stu);</p><p>  if(stu[n - 1].id == id)</p><p><b>  {</b></p><p>  stu[n - 1].id = END;</p><p><b>  return 1;</

111、b></p><p><b>  } </b></p><p>  while(i != n - 1)</p><p><b>  {</b></p><p>  stu[i] = stu[i + 1];</p><p><b>  i++;</b>

112、;</p><p><b>  }</b></p><p>  stu[i].id = END;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int modify(struct st

113、udent *stu,long id)</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  int flag;</b></p><p><b>  char c;</b></p>

114、<p>  if((i = find(stu,id)) == -1)</p><p><b>  {</b></p><p>  system("cls");</p><p>  puts("查無此人...\n");</p><p><b>  return

115、 0;</b></p><p><b>  }</b></p><p><b>  do{</b></p><p><b>  flag = 1;</b></p><p>  system("cls");</p><p>

116、  printf("原數(shù)據(jù):\n%s %s %s %ld\n\n",stu[i].clas,stu[i].name,</p><p>  stu[i].sex,stu[i].id);</p><p>  puts("請輸入修改的選項...\n");</p><p>  puts("1.班級\n2.姓名\n3.性

117、別\n4.學(xué)號\n");</p><p>  fflush(stdin);</p><p>  c = getchar();</p><p>  fflush(stdin);</p><p><b>  switch(c)</b></p><p><b>  {</b&g

118、t;</p><p><b>  case '1':</b></p><p><b>  {</b></p><p>  char clas[30];</p><p>  system("cls");</p><p>  puts(&quo

119、t;請輸入班級...\n");</p><p>  gets(clas);</p><p>  strcpy(stu[i].clas,clas);</p><p><b>  }break;</b></p><p><b>  case '2':</b></p>

120、<p><b>  {</b></p><p>  char name[20];</p><p>  system("cls");</p><p>  puts("請輸入姓名...\n");</p><p>  gets(name);</p><p

121、>  strcpy(stu[i].name,name);</p><p><b>  }break;</b></p><p><b>  case '3':</b></p><p><b>  {</b></p><p>  char sex[5];<

122、;/p><p>  system("cls");</p><p>  puts("請輸入性別...\n");</p><p>  gets(sex);</p><p>  strcpy(stu[i].sex,sex);</p><p><b>  }break;</b

123、></p><p><b>  case '4':</b></p><p><b>  {</b></p><p><b>  long id;</b></p><p>  system("cls");</p><p

124、>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);</p><p>  stu[i].id = id;</p><p><b>  }break;</b></p><p>  default:flag = 0;brea

125、k;</p><p><b>  }</b></p><p>  fflush(stdin);</p><p><b>  if(flag)</b></p><p><b>  {</b></p><p>  puts("\n操作成功!\n&q

126、uot;);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  puts("輸入錯誤!請重新輸入...\n");</p><p><

127、b>  }</b></p><p>  }while(!flag);</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  void sort(struct student *stu)</p><p&

128、gt;<b>  {</b></p><p>  int i,j,n;</p><p><b>  int flag;</b></p><p>  struct student temp;</p><p>  n = size(stu);</p><p>  for(i =

129、0;i < n - 1;i++){</p><p><b>  flag = 1;</b></p><p>  for(j = 0;j < n - i - 1;j++){</p><p>  if(stu[j].id > stu[j + 1].id){</p><p>  temp = stu[j];&

130、lt;/p><p>  stu[j] = stu[j + 1];</p><p>  stu[j + 1] = temp;</p><p><b>  flag = 0;</b></p><p><b>  }</b></p><p><b>  }</b>

131、</p><p>  if(flag)break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void creat(struct student *stu)</p><p><b>  {</b>

132、</p><p><b>  int n;</b></p><p>  int i = 0;</p><p>  system("cls");</p><p>  puts("請輸入學(xué)生人數(shù)...\n");</p><p>  scanf("%ld

133、",&n);</p><p>  system("cls");</p><p>  printf("請輸入%d位學(xué)生的班級 姓名 性別 學(xué)號...\n\n",n);</p><p>  while(i != n){</p><p>  scanf("%s%s%s%ld&

134、quot;,stu[i].clas,stu[i].name,stu[i].sex,</p><p>  &stu[i].id);</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  stu[i].id = END;</p>

135、<p><b>  }</b></p><p>  int main(void)</p><p><b>  {</b></p><p>  struct student stu[MAXLEN];</p><p><b>  char c;</b></p>

136、<p>  if(!load("student.txt",stu))exit(0);</p><p><b>  do{</b></p><p>  system("cls");</p><p>  puts("-----------------------------------

137、---\n");</p><p>  puts("1.新建\n");</p><p>  puts("2.增加\n");</p><p>  puts("3.刪除\n");</p><p>  puts("4.查詢\n");</p>

138、<p>  puts("5.修改\n");</p><p>  puts("6.按學(xué)號排序顯示\n");</p><p>  puts("0.退出\n");</p><p>  puts("--------------------------------------\n"

139、;);</p><p>  puts("請輸入選項...\n");</p><p>  fflush(stdin);//清除緩沖區(qū)</p><p>  c = getchar();</p><p><b>  switch(c)</b></p><p><b>  {

140、</b></p><p><b>  case '0':</b></p><p><b>  {</b></p><p>  unload("student.txt",stu);</p><p><b>  return 0;</b&g

141、t;</p><p><b>  }break;</b></p><p><b>  case '1':</b></p><p><b>  {</b></p><p>  creat(stu);</p><p><b>  }

142、break;</b></p><p><b>  case '2':</b></p><p><b>  {</b></p><p><b>  do{</b></p><p>  struct student s;</p><p

143、>  system("cls");</p><p>  puts("請輸入班級 姓名 性別 學(xué)號...\n");</p><p>  fflush(stdin);</p><p>  scanf("%s%s%s%ld",s.clas,s.name,s.sex,&s.id);</p>

144、<p>  add(stu,&s);</p><p>  system("cls");</p><p>  puts("操作成功!\n繼續(xù)請按y,返回主菜單請按任意鍵...\n");</p><p>  fflush(stdin);</p><p>  }while(getch()

145、 == 'y');</p><p><b>  }break;</b></p><p><b>  case '3':</b></p><p><b>  {</b></p><p><b>  do{</b></p&

146、gt;<p><b>  long id;</b></p><p>  system("cls");</p><p>  puts("請輸入要刪除的學(xué)生學(xué)號...\n");</p><p>  scanf("%ld",&id);</p><p&

147、gt;  system("cls");</p><p>  if(del(stu,id))puts("操作成功!\n");</p><p>  puts("繼續(xù)請按y,返回主菜單請按任意鍵...\n");</p><p>  }while(getch() == 'y');</p>

148、<p><b>  }break;</b></p><p><b>  case '4':</b></p><p><b>  {</b></p><p><b>  do{</b></p><p><b>  lo

149、ng id;</b></p><p><b>  int i;</b></p><p>  system("cls");</p><p>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);<

150、;/p><p>  system("cls");</p><p>  if((i = find(stu,id)) != -1){</p><p>  printf("%s%s%s%ld\n\n",stu[i].clas,stu[i].name,</p><p>  stu[i].sex,stu[i].

151、id);</p><p><b>  }else{</b></p><p>  puts("查無此人!\n");</p><p><b>  }</b></p><p>  puts("繼續(xù)請按y,返回請按任意鍵...\n");</p><

152、p>  }while(getch() == 'y');</p><p><b>  }break;</b></p><p><b>  case '5':</b></p><p><b>  {</b></p><p><b> 

153、 do{</b></p><p><b>  long id;</b></p><p>  system("cls");</p><p>  puts("請輸入學(xué)號...\n");</p><p>  scanf("%ld",&id);<

154、;/p><p>  if(modify(stu,id)){</p><p>  system("cls");</p><p>  puts("操作成功!\n");</p><p><b>  }</b></p><p>  puts("繼續(xù)請按y,返回

溫馨提示

  • 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

提交評論