c語言課程設計--學生信息管理系統(tǒng) (2)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  題目名稱: 學生信息管理系統(tǒng) </p><p><b>  算法分析:</b></p><p>  1用結構體標出信息系統(tǒng)的成員:學生學號,學生姓名,班級,成績,排名</p><p>  2 利用c語言的文件知識將系統(tǒng)的信息存放在c盤下的“zuoye.txt”的文件夾下<

2、/p><p>  3 定義各個子函數(1)定義輸入信息函數,將學生信息按一定格式用scanf函數輸入(統(tǒng)計M個學生的信息);</p><p>  (2)定義輸出函數,每兩個表一頁直到最后一個;</p><p>  (3)定義信息查詢函數。a,定義按學號查詢函數,如果輸入的學號等于學生學號則輸出要查詢的信息;b,定義按姓名查詢函數,如果輸入的姓名字符串等于其中一個學生的姓

3、名字符串則輸出信息;c,定義按班級查找函數,如果輸入的數字等于其中學生的班級數,則輸出該信息;d,定義按成績查找函數,如果輸入的數字等于其中學生的成績數,則輸出該信息;e,定義查找總函數,輸入一個數選擇查找方式,1-4分別對應調用abcd四個函數。</p><p> ?。?)定義刪除信息函數。輸入的數字作為要刪除的學生學號,輸出要刪除的學生信息后選擇是否刪除,刪除后將第g+1個的信息賦給第g個,輸出刪除后的信息表

4、。</p><p> ?。?)定義信息修改函數。輸入的數字等于要修改的學生學號,輸出要修改的學生信息后選擇是否修改,用switch,case語句選擇要修改的項目,輸入n,y決定是否繼續(xù)直到不繼續(xù)修改,輸出學生信息。</p><p>  (6)定義信息統(tǒng)計函數。輸入一個數字作為成績,比較M個學生成績是否等于輸入的數字,統(tǒng)計相等的個數n輸出。</p><p> ?。?)

5、定義成績排序函數。用冒泡排序法將M個學生的成績按從大到小的順序排列后輸出。</p><p>  4 定義主函數。調用讀取文件函數,輸入數字1-5分別對應調用修改學生信息函數,刪除學生信息函數,查找學生信息函數,統(tǒng)計學生信息函數,學生成績排行信息函數,0表示退出系統(tǒng)。最后調用保存文件函數。結束程序。</p><p><b>  流程設計:</b></p>

6、<p><b>  代碼設計:</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #define M 2</p>

7、<p>  #define PAGE 2</p><p>  /*學生信息結構體類型*/</p><p>  typedef struct</p><p>  {int num; /*學號*/</p><p>  char name[20]; /*姓名*/</p><p>  int

8、 banji; /*班級*/</p><p>  int chengji; /*成績*/</p><p>  int paiming; /*排名*/</p><p>  }STUDENTS;</p><p>  int read_file(STUDENTS students[])/*文件的讀取*/</p

9、><p>  { FILE *fp;/*定義一個文件指針變量*/</p><p><b>  int i=0;</b></p><p>  if((fp=fopen("zuoye.txt","r"))==NULL)/*文件空判斷,fopen打開一個文件*/</p><p>  { p

10、rintf("\n\n*****庫存文件不存在!請創(chuàng)建");</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  while(feof(fp)!=1)/*文件是否結束*/</p><p>  { fread(&am

11、p;students[i],sizeof(STUDENTS),1,fp);/*讀取文件*/</p><p>  if(students[i].num==0)/*學號是否為零*/</p><p><b>  break;</b></p><p><b>  else</b></p><p><b

12、>  i++;</b></p><p><b>  }</b></p><p>  fclose(fp);/*關閉文件*/</p><p><b>  return i;</b></p><p><b>  }</b></p><p>

13、  void save_file(STUDENTS students[],int sum)/*保存文件*/</p><p>  { FILE *fp;</p><p><b>  int i;</b></p><p>  if((fp=fopen("zuoye.txt","wb"))==NULL)

14、/*判斷文件是否為空*/</p><p>  { printf("讀文件錯誤!\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(i=0;i<sum;i++)</p><

15、p>  if(fwrite(&students[i],sizeof(STUDENTS),1,fp)!=1)/*向文件寫入的數據塊不等于1*/</p><p>  printf("寫文件錯誤!\n");</p><p>  fclose(fp);</p><p><b>  }</b></p>&l

16、t;p><b>  /*輸入模塊*/</b></p><p>  int input(STUDENTS students[])</p><p>  { int i=0;</p><p>  printf("\n\n 錄入學生信息 (最多%d人)\n",M);</p>

17、;<p>  printf("----------------------------------------------------\n");</p><p><b>  do</b></p><p>  { printf("\n 第%d人",i+1);</p

18、><p>  printf("\n 學生學號:");</p><p>  scanf("%d",&students[i].num); if(students[i].num==0) break;</p><p>  printf("\n

19、學生姓名:");</p><p>  scanf("%s",students[i].name);</p><p>  printf("\n 班級:");</p><p>  scanf("%d",&students[i].banji);</p>

20、<p>  printf("\n 成績:");</p><p>  scanf("%d",&students[i].chengji);</p><p>  printf("\n 排名:");</p><p>  scanf(&qu

21、ot;%d",&students[i].paiming);</p><p><b>  i++;</b></p><p>  }while(i<M);</p><p>  printf("\n --%d個學生信息輸入完畢!--\n",i);</p>&l

22、t;p>  printf("\n 按任意鍵返回主菜單!");</p><p>  getchar();</p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>

23、  /*輸出模塊*/ </b></p><p>  void output(STUDENTS students[])</p><p>  {int i=0,j=0,page=1;</p><p>  printf("\n\n --學生信息表-- 第%d頁\n\n",page);/*

24、每兩個一頁*/</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("-------------------------------------------------------\n");</p><p><b>  do

25、</b></p><p>  { if(students[i].num!=0)</p><p><b>  { j++;</b></p><p>  if(j%PAGE!=0)</p><p>  { printf("%12d %10s %2d %3d %4d \n",studen

26、ts[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p>  printf("------------------------------------------------------\n");</p>

27、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  { printf("按任意鍵繼續(xù)!");</p><p>  getchar();</p>

28、<p>  printf("\n\n --學生信息表-- 第%d頁\n\n",++page);</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("-----------------------

29、-------------------\n");</p><p>  { printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);</

30、p><p>  printf("---------------------------------------------\n");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  i++;</b>&l

31、t;/p><p>  }while(students[i].num<M);</p><p>  printf("按任意鍵返回主菜單!");</p><p>  getchar( );</p><p><b>  }</b></p><p>  /*學生信息查詢*/</p

32、><p>  void find_by_num(STUDENTS students[],int sum) /*按學號查找*/ </p><p>  { int i,find_num;</p><p>  printf("\n 請輸入要查找的學生學號:");</p><p>  scanf(&quo

33、t;%d",&find_num);</p><p>  for(i=0;i<sum;i++)</p><p>  if(students[i].num==find_num) </p><p><b>  {</b></p><p>  printf("這是您所查找到的學生信息

34、:\n");</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("------------------------------------------\n");</p><p>  printf("%12d %1

35、0s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p>  printf("-------------------------------------------

36、--\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  print

37、f("\n 未找到要查找的學生信息,按任意鍵返回!");</p><p>  getchar(); </p><p><b>  }</b></p><p><b>  }</b></p><p>  void find_by_name(STUDENTS stud

38、ents[],int sum)/*按姓名查找*/</p><p><b>  { </b></p><p><b>  int i;</b></p><p>  char find_name[20];</p><p>  printf("\n 請輸入要查找的學生

39、姓名:");</p><p>  scanf("%s",find_name);</p><p>  for(i=0;i<sum;i++);</p><p>  if(strcmp(students[i].name,find_name)==0) /*字符串比較相等返回0*/</p><p>  {pri

40、ntf("這是您所查找到屬于該學生的信息:");</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("------------------------------------------\n");</p><p>

41、;  printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p>  printf("--------------------

42、-------------------------\n");</p><p><b>  }</b></p><p><b>  else</b></p><p>  {printf("\n 未找到要查找的學生信息,按任意鍵返回!");</p><p>  

43、getchar(); </p><p><b>  }</b></p><p><b>  }</b></p><p>  void find_by_banji(STUDENTS students[],int sum)/*按班級查找*/</p><p><b>  { </b>

44、</p><p><b>  int i;</b></p><p>  int find_banji;</p><p>  printf("\n 請輸入要查找的學生班級:");</p><p>  scanf("%d",&find_banji);

45、</p><p>  for(i=0;i<sum;i++)</p><p>  if(students[i].banji==find_banji)</p><p>  {printf("這是您所查找到屬于該班級的學生:");</p><p>  printf("學生學號----姓名-----班級-----

46、成績-----排名\n");</p><p>  printf("------------------------------------------\n");</p><p>  printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p>&

47、lt;p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p>  printf("---------------------------------------------\n");</p><p><b>  }</b></p><

48、;p><b>  else</b></p><p>  {printf("\n 未找到要查找的班級信息,按任意鍵返回!");</p><p>  getchar(); </p><p><b>  }</b></p><p><b>  }</b

49、></p><p>  void find_by_chengji(STUDENTS students[],int sum)/*按成級查找*/</p><p><b>  { </b></p><p><b>  int i;</b></p><p>  int find_chengji;<

50、;/p><p>  printf("\n 請輸入要查找的學生成績:");</p><p>  scanf("%d",&find_chengji);</p><p>  for(i=0;i<sum;i++)</p><p><b>  {</b>

51、</p><p>  if(students[i].chengji==find_chengji)</p><p><b>  {</b></p><p>  printf("這是您所查找到有該成績的學生:");</p><p>  printf("學生學號----姓名-----班級-----

52、 成績-----排名\n");</p><p>  printf("------------------------------------------\n");</p><p>  printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p>

53、<p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p>  printf("---------------------------------------------\n");</p><p><b>  }</b></p>&l

54、t;p><b>  else</b></p><p>  {printf("\n 未找到要查找的學生信息,按任意鍵返回!");</p><p>  getchar(); </p><p><b>  }</b></p><p><b>  }</

55、b></p><p><b>  }</b></p><p>  void find(STUDENTS students[],int sum)/*定義查找總函數*/</p><p>  { int choice;</p><p>  printf("\n 您要按照哪種方式查找? \n"

56、);/*用switch語句*/</p><p>  printf("\n 1.按學生學號查找 \n");</p><p>  printf("\n 2.按學生姓名查找 \n");</p><p>  printf("\n 3.按學生班級查找 \n");</p>

57、<p>  printf("\n 4.按學生成績查找 \n");</p><p>  printf("\n 0. 退出\n");</p><p>  printf("\n 請選擇(0-4): \n");</p><p>  scanf("%d&qu

58、ot;,&choice);</p><p>  switch(choice) </p><p>  { case 1: find_by_num(students,sum); break;</p><p>  case 2: find_by_name(students,sum); break;</p><p>  ca

59、se 3: find_by_banji(students,sum); break;</p><p>  case 4: find_by_chengji(students,sum); break;</p><p>  case 0: break;</p><p><b>  }<

60、;/b></p><p><b>  }</b></p><p>  /*刪除信息模塊*/</p><p>  void del(STUDENTS students[])</p><p>  { int i,g,sum;</p><p>  int del_num;</p>&

61、lt;p>  printf("\n 請輸入要刪除的學生學號:");</p><p>  scanf("%d",&del_num);</p><p>  for(i=0;i<sum;i++)</p><p>  if(students[i].num==del_num)/*通過學號判

62、斷*/</p><p><b>  {</b></p><p>  printf("這是您所要刪除學生信息:\n");</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("--

63、----------------------------------------\n");</p><p>  printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,student

64、s[i].paiming);</p><p>  printf("---------------------------------------------\n"); </p><p>  printf("您確認要刪除嗎?");</p><p> 

65、 printf("按任意鍵繼續(xù)!");</p><p>  getchar();</p><p>  printf("已成功刪除學生信息!");</p><p><b>  }</b></p><p>  for(g=i;g<sum;g++)</p><p

66、>  { students[g]=students[g+1];</p><p>  printf("刪除后的信息表:\n");</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("------------------

67、------------------------\n");</p><p>  printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);&l

68、t;/p><p>  printf("---------------------------------------------\n"); </p><p><b>  }</b></p><p><b>  }</b></p><p>  /*信息修改模塊*/

69、</p><p>  void modify(STUDENTS students[],int sum)</p><p>  {int i=0,choice,modify_num,flag;</p><p><b>  do</b></p><p><b>  {</b></p><

70、;p>  printf("請輸入要修改的學生學號:");</p><p>  scanf("%d",&modify_num);</p><p>  for(i=0;i<sum;i++)</p><p>  if(students[i].num==modify_num)</p><p>

71、;  { printf("\n\n --學生信息-- \n\n");</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("-----------------------------------

72、-------\n");</p><p>  printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p&g

73、t;  printf("---------------------------------------------\n"); </p><p>  printf("\n 您要修改哪一項?\n");</p><p>  printf("\n 1.學生姓名\n&q

74、uot;);</p><p>  printf("\n 2.學生班級\n");</p><p>  printf("\n 3.成績\n");</p><p>  printf("\n 4.排名\n");&l

75、t;/p><p>  printf("\n 請選擇(1-4):\n");</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p><p>  { case 1: printf("\n

76、 請輸入修改后的學生姓名:");</p><p>  scanf("%s",students[i].name); break; </p><p>  case 2: printf("\n 請輸入修改后的學生班級:");</p><p>  scanf("%s",stud

77、ents[i].banji); break; </p><p>  case 3: printf("\n 請輸入修改后的成績:");</p><p>  scanf("%s",students[i].chengji); break; </p><p>  case 4: printf("\n

78、 請輸入修改后的排名:");</p><p>  scanf("%d",&students[i].paiming); break; </p><p><b>  }</b></p><p>  printf("\n\n --學生信息--

79、 \n\n");</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("------------------------------------------\n");</p><p>  printf(&quo

80、t;%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p>  printf("----------------------------------

81、-----------\n"); </p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>&l

82、t;p>  printf("\n 該學生不存在!");</p><p><b>  }</b></p><p>  printf("\n 修改成功!\n");</p><p>  printf("您要繼續(xù)修改嗎?(Y/N)");</p>&l

83、t;p>  if (choice=='Y'||choice=='y')</p><p><b>  { flag=1;</b></p><p>  printf("\n 繼續(xù)!\n");</p><p><b>  }</b>

84、</p><p>  else flag=0;</p><p>  }while( flag==1); /*直到不修改結束循環(huán)*/</p><p>  printf("\n 按任意鍵返回主菜單!");</p><p>  getchar();</p><p>

85、<b>  }</b></p><p>  /*學生信息統(tǒng)計模塊*/</p><p>  void count(STUDENTS students[],int sum) /*統(tǒng)計某個成績的學生個數*/</p><p><b>  { </b></p><p><b>  int

86、 i;</b></p><p>  int count_chengji;</p><p><b>  int n=0;</b></p><p>  printf("請輸入一個成績:\n");</p><p>  scanf("%d",&count_chengji

87、); </p><p>  for(i=0;i<sum;i++)</p><p>  { </p><p>  if(students[i].chengji==count_chengji)/*計數*/</p><p><b>  n++;</b></p><p>&

88、lt;b>  break;</b></p><p><b>  }</b></p><p>  printf("統(tǒng)計出屬于該成績的一共有%d個人\n",n);</p><p><b>  }</b></p><p>  /*成績排序模塊*/</p>

89、<p>  void sort(STUDENTS students[],int sum) </p><p><b>  {</b></p><p>  STUDENTS t;</p><p><b>  int i,j;</b></p><p>  printf("\n\n

90、 --學生信息-- \n\n");</p><p>  printf("學生學號----姓名-----班級----- 成績-----排名\n");</p><p>  printf("------------------------------------------\n");</

91、p><p>  for(i=1;i<sum;i++)</p><p>  { for(j=i+1;j<sum;j++)</p><p>  if(students[j].chengji>students[i].chengji)/*冒泡排序法*/</p><p>  {t=students[j];</p><p

92、>  students[j]=students[i]; </p><p>  students[i]=t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  for(i=0;i<sum;i++)</p><p>

93、  { printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,</p><p>  students[i].banji, students[i].chengji,students[i].paiming);</p><p>  printf("-------------------

94、--------------------------\n"); </p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><

95、p>  STUDENTS students[M];</p><p>  int choice,sum;</p><p>  sum=read_file(students);/*文件讀取*/</p><p>  if (sum==0)</p><p>  {printf("請錄入學生信息!*******\n");<

96、;/p><p>  sum=input(students);/*輸入信息*/</p><p><b>  }</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("\n\n\n

97、 *******學生信息管理系統(tǒng)******* \n\n");</p><p>  printf(" 1.修改學生信息 \n\n");</p><p>  printf(" 2.刪除學生信息\n\n");</p><p>  printf

98、(" 3.查找學生信息\n\n");</p><p>  printf(" 4.統(tǒng)計學生信息\n\n");</p><p>  printf(" 5.學生成績排行信息\n\n");</p><p>  print

99、f(" 0.退出系統(tǒng)\n\n");</p><p>  printf(" 請選擇\n\n");</p><p>  scanf("%d",&choice);</p><p>  switch(choice) </p>&

100、lt;p>  { case 1 : modify(students,sum); break;</p><p>  case 2 : del(students); break;</p><p>  case 3 : find(students,sum); break;</p><p>  case 4

101、 : count(students,sum); break;</p><p>  case 5 : sort(students,sum); break; </p><p>  case 0 : break;</p><p><b>  }</b></p&

溫馨提示

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

評論

0/150

提交評論