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

下載本文檔

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

文檔簡介

1、<p><b>  C語言課程設(shè)計(jì)報(bào)告</b></p><p>  題 目:學(xué)生成績管理系統(tǒng)</p><p>  設(shè) 計(jì) 者:xxxxxxxx </p><p>  專業(yè)班級:xxxxxxxx</p><p>  學(xué) 號:xxxxxxxx</p><p>  指導(dǎo)教師:x

2、xxxxxxx</p><p><b>  xxxxxxxx </b></p><p><b>  xxxxxxxx</b></p><p><b>  目錄</b></p><p><b>  一、題目與要求1</b></p><p

3、><b>  1. 問題提出1</b></p><p>  2. 本系統(tǒng)涉及的知識點(diǎn)1</p><p><b>  3.功能要求1</b></p><p><b>  二、功能設(shè)計(jì)2</b></p><p>  1.程序主體結(jié)構(gòu)2</p><

4、p>  2.模塊流程圖及源代碼設(shè)計(jì)2</p><p>  2.1 分配內(nèi)存,主菜單2</p><p>  2.2 for循環(huán)語句輸入信息5</p><p>  2.3 for循環(huán)語句輸出信息7</p><p>  2.4按平均成績輸出7</p><p>  2.5 按學(xué)號查詢學(xué)生成績8</p&g

5、t;<p>  2.6 按學(xué)號查詢學(xué)生不及格科目10</p><p>  2.7 修改學(xué)生信息11</p><p>  2.8 注銷學(xué)生信息13</p><p>  2.9 保存與退出15</p><p>  3.C程序設(shè)計(jì)總結(jié)16</p><p><b>  三、參考文獻(xiàn)17<

6、;/b></p><p>  四、附錄:程序清單17</p><p><b>  一、題目與要求</b></p><p><b>  1. 問題提出</b></p><p>  本人計(jì)劃編寫一個(gè)學(xué)生成績管理系統(tǒng),主要用來管理學(xué)生基本信息及成績信息。要實(shí)現(xiàn)信息錄入,讀取,排序,查找,修改及刪除

7、信息,以及保存退出等功能。</p><p>  題目:學(xué)生成績管理系統(tǒng)</p><p><b>  主要功能:</b></p><p> ?。?)能完成對學(xué)生成績的錄入、修改</p><p> ?。?)能統(tǒng)計(jì)學(xué)生的成績,求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進(jìn)行排序</p><p>  (3

8、)能查詢學(xué)生成績,不及格科目及學(xué)生名單</p><p> ?。?)能輸出學(xué)生的成績單</p><p>  學(xué)生屬性:學(xué)號,姓名,入學(xué)年月,有成績的學(xué)期數(shù),四門課的成績等9個(gè)成員,在編程中要求當(dāng)執(zhí)行狀態(tài)輸入i為輸入學(xué)生記錄,輸入D為刪除,輸入s為查詢(以學(xué)號為查詢條件),輸入p為將整個(gè)學(xué)生記錄輸出,使用結(jié)構(gòu)數(shù)組或結(jié)構(gòu)指針編程</p><p>  2. 本系統(tǒng)涉及的知識

9、點(diǎn)</p><p>  結(jié)構(gòu)、數(shù)組、循環(huán)、函數(shù)、分支、指針。</p><p><b>  3.功能要求</b></p><p>  本系統(tǒng)的主要功能分別通過主菜單中的以下各項(xiàng)來實(shí)現(xiàn):</p><p>  ?通過系統(tǒng)實(shí)現(xiàn)用戶管理、用malloc函數(shù)向系統(tǒng)申請分配指定size個(gè)字節(jié)的內(nèi)存空間,數(shù)據(jù)存入、讀取數(shù)據(jù);</p

10、><p>  ?錄入學(xué)生信息,每個(gè)學(xué)生的信息包括:姓名、學(xué)號、性別、入學(xué)年月、學(xué)期數(shù)、成績;</p><p>  ?輸出學(xué)生的成績單;</p><p>  ?求出每個(gè)學(xué)生的平均分,按平均成績排序;</p><p>  ?按學(xué)號查詢學(xué)生成績;</p><p>  ?按學(xué)號查詢學(xué)生不及格科目;</p><p

11、><b>  ?修改學(xué)生信息;</b></p><p><b>  ?刪除學(xué)生信息;</b></p><p><b>  ?保存及退出;</b></p><p><b>  二、功能設(shè)計(jì)</b></p><p><b>  1.程序主體結(jié)構(gòu)

12、</b></p><p><b>  程序主體結(jié)構(gòu)設(shè)計(jì):</b></p><p>  2.模塊流程圖及源代碼設(shè)計(jì)</p><p>  2.1 分配內(nèi)存,主菜單</p><p>  利用malloc函數(shù)向系統(tǒng)申請分配指定size個(gè)字節(jié)的內(nèi)存空間,輸入需存的人數(shù),并用system("cls")

13、;清除屏幕。</p><p><b>  圖1</b></p><p>  利用switch語句設(shè)計(jì)主菜單。</p><p><b>  菜單</b></p><p>  1)函數(shù)原形:void menu(struct student *p,int len),int main(void)</p

14、><p>  2)功 能:利用while循環(huán)語句和scanf、getchar函數(shù)完成輸入,利用malloc函數(shù)向系統(tǒng)申請分配指定size個(gè)字節(jié)的內(nèi)存空間,利用switch語句。</p><p><b>  3)變量及類型:</b></p><p>  int len;:整型變量,接收輸入的人數(shù)。</p><p>  char

15、 ch:字符變量。</p><p>  struct student *p:結(jié)構(gòu)體指針變量。</p><p>  4)說明:輸入需存入的人數(shù),系統(tǒng)分配內(nèi)存空間,按回車鍵,顯示菜單,出入選項(xiàng)前的字母i、p等可進(jìn)入對應(yīng)選項(xiàng)。</p><p><b>  代碼如下:</b></p><p>  void menu(struct

16、 student *p,int len)</p><p>  {printf("\t\t||=========================================||\n");</p><p>  printf("\t\t||-----------------------------------------||\n");</p&g

17、t;<p>  printf("\t\t||-----------歡迎使用學(xué)生管理系統(tǒng)----------||\n");</p><p>  printf("\t\t||-----------------------------------------||\n");</p><p>  printf("\t\t||======

18、===================================||\n");</p><p>  getchar();</p><p>  getchar();</p><p>  system("cls");</p><p><b>  return;</b></p>

19、<p><b>  }</b></p><p>  int main(void)</p><p><b>  {</b></p><p>  int len=0;</p><p><b>  char ch; </b></p><p>  s

20、truct student *p;</p><p>  printf("請輸入需要存入的學(xué)生人數(shù):");</p><p>  scanf("%d",&len);</p><p>  p=(struct student *)malloc(sizeof(struct student)*len);</p>&

21、lt;p>  menu(p,len);</p><p>  printf("按回車鍵繼續(xù)\n");</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  system("cls");<

22、/p><p>  printf("\n\n\n\n");</p><p>  printf("\t\t|************************************************|\n");</p><p>  printf("\t\t|------------------ 學(xué)生管理系統(tǒng) -----

23、-----------|\n");</p><p>  printf("\t\t|************************************************|\n");</p><p>  printf("\t\t|-------------- (i)錄入學(xué)生信息 ------------|\n");<

24、/p><p>  printf("\t\t|-------------- (p)輸出學(xué)生的成績單 ----------|\n");</p><p>  printf("\t\t|-------------- (a)按平均成績排序 ----------|\n");</p><p>  printf("\t\

25、t|-------------- (s)按學(xué)號查詢學(xué)生成績 ----------|\n");</p><p>  printf("\t\t|-------------- (f)按學(xué)號查詢學(xué)生不及格科目------|\n");</p><p>  printf("\t\t|-------------- (m)修改學(xué)生信息 -------

26、---|\n");</p><p>  printf("\t\t|-------------- (D)注銷學(xué)生信息 ----------|\n");</p><p>  printf("\t\t|-------------- (w)保存 ----------|\n");</p>&l

27、t;p>  printf("\t\t|-------------- (e)退出 ----------|\n");</p><p>  printf("\t\t|************************************************|\n");</p><p>  printf("

28、\t\t\n");</p><p>  ch=getch(); </p><p>  switch(ch)</p><p><b>  {</b></p><p>  case 'i':input(p,len);break;</p><p>  c

29、ase 'p':output(p,&len);break;</p><p>  case 'a':average(p,len);break;</p><p>  case 's':find(p,len);break;</p><p>  case 'f':failure(p,len

30、);break;</p><p>  case 'm':modify(p,len);break;</p><p>  case 'D':delet(p,len);break;</p><p>  case 'w':write(p,len);break;</p><p>  case

31、'e':exit_1(p,len);break;</p><p>  default :printf("\n\t輸入錯(cuò)誤!按回車鍵返回主菜單!"); break;</p><p><b>  getch();</b></p><p><b>  }</b></p>&

32、lt;p><b>  }</b></p><p><b>  free(p);</b></p><p>  return 0 ;</p><p><b>  }</b></p><p>  2.2 for循環(huán)語句輸入信息</p><p><b

33、>  圖3</b></p><p>  for循環(huán)語句輸入信息,如圖3。</p><p><b>  輸入模塊</b></p><p>  1)函數(shù)原形:void input(struct student *p,int len)</p><p>  2)功 能:利用for循環(huán)語句和scanf函數(shù)完成輸入

34、,輸入學(xué)生的信息(學(xué)號、姓名、性別、入學(xué)年月,學(xué)期數(shù),4門成績)。</p><p><b>  3)變量及類型:</b></p><p>  int i :循環(huán)控制變量。</p><p><b>  代碼如下:</b></p><p>  void input(struct student *p,i

35、nt len)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<len;i++)</p><p><b>  {</b></p><p>  printf(&q

36、uot;請輸入第%d個(gè)學(xué)生信息:\n",i+1);</p><p>  printf("姓名:");</p><p>  scanf("%s",p[i].name);//name是數(shù)組名 本身就是地址</p><p>  printf("學(xué)號:");</p><p>  s

37、canf("%d",&p[i].number);</p><p>  printf("性別:");</p><p>  scanf("%s",p[i].sex);</p><p>  printf("入學(xué)年月:");</p><p>  scanf(&qu

38、ot;%s",p[i].time);//入學(xué)年月</p><p>  printf("學(xué)期數(shù):");</p><p>  scanf("%d",&p[i].term);//有成績的學(xué)期數(shù)</p><p>  printf("成績1:");</p><p>  s

39、canf("%f",&p[i].score[0]);</p><p>  printf("成績2:");</p><p>  scanf("%f",&p[i].score[1]);</p><p>  printf("成績3:");</p><p>

40、;  scanf("%f",&p[i].score[2]);</p><p>  printf("成績4:");</p><p>  scanf("%f",&p[i].score[3]);</p><p>  p[i].average=(p[i].score[0]+p[i].score[1]

41、+p[i].score[2]+p[i].score[3])/4;</p><p>  p[i].sum=p[i].score[0]+p[i].score[1]+p[i].score[2]+p[i].score[3];</p><p><b>  }</b></p><p>  printf("\n");</p>

42、<p><b>  return;</b></p><p><b>  }</b></p><p>  2.3 for循環(huán)語句輸出信息</p><p><b>  圖4</b></p><p>  for循環(huán)語句輸出信息,如圖4</p><p&

43、gt;<b>  輸出模塊</b></p><p>  1)函數(shù)原形:void output(struct student *p,int *len)</p><p>  2)功 能:利用for循環(huán)語句和printf函數(shù)完成輸出,輸出學(xué)生的信息</p><p><b>  3)變量及類型:</b></p>&l

44、t;p>  int i :循環(huán)控制變量。</p><p><b>  代碼如下:</b></p><p>  void output(struct student *p,int *len)</p><p><b>  {</b></p><p><b>  int i;</b

45、></p><p>  for(i=0;i<*len;i++)</p><p>  printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex

46、,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p>  printf("\n");</p><p>  getchar();</p><p>  getchar();</p&g

47、t;<p><b>  return;</b></p><p><b>  }</b></p><p>  2.4按平均成績輸出</p><p><b>  圖5</b></p><p>  按平均成績輸出,如圖5。</p><p><

48、;b>  按平均成績輸出模塊</b></p><p>  1)函數(shù)原形:void average(struct student *p,int len)</p><p>  2)功 能:利用for循環(huán)語句和printf函數(shù)完成輸出,輸出學(xué)生的信息</p><p><b>  3)變量及類型:</b></p><

49、;p>  int i,j :循環(huán)控制變量。</p><p><b>  代碼如下:</b></p><p>  void average(struct student *p,int len)</p><p>  {int i,j;</p><p>  struct student t;</p>&l

50、t;p>  for(i=0;i<len-1;i++)</p><p><b>  {</b></p><p>  for(j=0;j<len;j++)</p><p>  if( p[j+1].average>p[j].average)</p><p><b>  {</b&

51、gt;</p><p><b>  t=p[j+1];</b></p><p>  p[j+1]=p[j];</p><p><b>  p[j]=t;</b></p><p><b>  }</b></p><p><b>  }</

52、b></p><p>  output(p,&len);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  2.5 按學(xué)號查詢學(xué)生成績</p><p><b>  圖6</b>&

53、lt;/p><p>  按學(xué)號查詢學(xué)生成績,如圖6。</p><p>  按學(xué)號查詢學(xué)生成績模塊</p><p>  1)函數(shù)原形:void find(struct student *p,int len)</p><p>  2)功 能:利用for循環(huán)語句和printf函數(shù)完成查找和輸出,輸出學(xué)生的信息</p><p>&

54、lt;b>  3)變量及類型:</b></p><p>  int i :循環(huán)控制變量。</p><p>  int number :整型變量,記錄學(xué)號。</p><p><b>  代碼如下:</b></p><p>  void find(struct student *p,int len)<

55、/p><p><b>  {</b></p><p><b>  =0; </b></p><p><b>  int i;</b></p><p>  printf("請您輸入需要查找的學(xué)號:");</p><p>  scanf(&

56、quot;%d",&number);</p><p>  for(i=0;i<len;i++)</p><p><b>  {</b></p><p>  if(number==p[i].number)</p><p><b>  {</b></p><p

57、>  printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i

58、].score[3],p[i].sum,p[i].average);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  getch();</b></p><p><b>  return;</b>&

59、lt;/p><p><b>  }</b></p><p>  2.6 按學(xué)號查詢學(xué)生不及格科目</p><p><b>  圖7</b></p><p>  按學(xué)號查詢學(xué)生不及格科目,如圖7。</p><p>  按學(xué)號查詢學(xué)生不及格科目模塊</p><p&

60、gt;  1)函數(shù)原形:void find(struct student *p,int len)</p><p>  2)功 能:利用for循環(huán)語句和printf函數(shù)完成查找和輸出,輸出學(xué)生的信息</p><p><b>  3)變量及類型:</b></p><p>  int i :循環(huán)控制變量。</p><p>  

61、int number :整型變量,記錄學(xué)號。</p><p><b>  代碼如下:</b></p><p>  void failure(struct student *p,int len)</p><p><b>  {</b></p><p>  int number=0; </p&g

62、t;<p><b>  int i;</b></p><p>  printf("請您輸入需要查找的學(xué)號:");</p><p>  scanf("%d",&number);</p><p>  for(i=0;i<len;i++)</p><p>&l

63、t;b>  {</b></p><p>  if(number==p[i].number)</p><p><b>  {</b></p><p>  printf("姓名:%s 學(xué)號:%d\n",p[i].name,p[i].number);</p><p>  if(p[i].

64、score[0]<60||p[i].score[1]<60||p[i].score[2]<60||p[i].score[3]<60)</p><p>  printf("不及格科目:\n");</p><p>  else printf("無不及格科目\n");</p><p>  if(p[i].s

65、core[0]<60)</p><p>  printf("成績1:%.2f\n",p[i].score[0]);</p><p>  if(p[i].score[1]<60)</p><p>  printf("成績2:%.2f\n",p[i].score[1]);</p><p>  i

66、f(p[i].score[2]<60)</p><p>  printf("成績3:%.2f\n",p[i].score[2]);</p><p>  if(p[i].score[3]<60)</p><p>  printf("成績4:%.2f\n",p[i].score[3]);</p><

67、p><b>  }</b></p><p><b>  }</b></p><p><b>  getch();</b></p><p><b>  return;</b></p><p><b>  }</b></p&g

68、t;<p>  2.7 修改學(xué)生信息</p><p><b>  圖8</b></p><p>  修改學(xué)生信息,如圖8。</p><p><b>  修改學(xué)生信息模塊</b></p><p>  1)函數(shù)原形:void modify(struct student *p,int len

69、)</p><p>  2)功 能:利用for循環(huán)語句和printf函數(shù)完成查找和輸出,if語句內(nèi)進(jìn)行修改。</p><p><b>  3)變量及類型:</b></p><p>  int i :循環(huán)控制變量。</p><p>  int number :整型變量,記錄學(xué)號。</p><p> 

70、 char ch:字符變量。</p><p><b>  代碼如下:</b></p><p>  void modify(struct student *p,int len)</p><p><b>  {</b></p><p>  int number=0;</p><p&g

71、t;<b>  char ch;</b></p><p><b>  int i;</b></p><p>  printf("請您輸入要修改的學(xué)生的學(xué)號:");</p><p>  scanf("%d",&number);</p><p>  for

72、(i=0;i<len;i++)</p><p><b>  {</b></p><p>  if(number==p[i].number)</p><p><b>  {</b></p><p>  printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):

73、%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p&g

74、t;  printf("您確定要修改該學(xué)生信息(y/n):\n");</p><p>  ch=getch();</p><p>  if(ch=='y')</p><p><b>  {</b></p><p>  printf("姓名:");</p>

75、<p>  scanf("%s",p[i].name);</p><p>  printf("學(xué)號:");</p><p>  scanf("%d",&p[i].number);</p><p>  printf("性別:");</p><p&g

76、t;  scanf("%s",p[i].sex);</p><p>  printf("入學(xué)年月:");</p><p>  scanf("%s",p[i].time);//入學(xué)年月</p><p>  printf("學(xué)期數(shù):");</p><p>  sca

77、nf("%d",&p[i].term);//有成績的學(xué)期數(shù)</p><p>  printf("成績1:");</p><p>  scanf("%f",&p[i].score[0]);</p><p>  printf("成績2:");</p><

78、p>  scanf("%f",&p[i].score[1]);</p><p>  printf("成績3:");</p><p>  scanf("%f",&p[i].score[2]);</p><p>  printf("成績4:");</p>

79、<p>  scanf("%f",&p[i].score[3]);</p><p>  p[i].average=(p[i].score[0]+p[i].score[1]+p[i].score[2]+p[i].score[3])/4;</p><p>  p[i].sum=p[i].score[0]+p[i].score[1]+p[i].sco

80、re[2]+p[i].score[3];</p><p>  printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].sco

81、re[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p>  printf("修改成功!");</p><p><b>  getch();</b></p><p><b>  }</b></p

82、><p><b>  }</b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  2.8 注銷學(xué)生信息</p><

83、;p><b>  圖9</b></p><p>  注銷學(xué)生信息,如圖9。</p><p><b>  注銷學(xué)生信息模塊</b></p><p>  1)函數(shù)原形:void delet(struct student *p,int len)</p><p>  2)功 能:利用for循環(huán)語句和p

84、rintf函數(shù)完成查找和輸出,通過for語句進(jìn)行數(shù)據(jù)覆蓋實(shí)現(xiàn)刪除學(xué)生數(shù)據(jù)。</p><p><b>  3)變量及類型:</b></p><p>  int i :循環(huán)控制變量。</p><p>  int j :整型變量,記錄要?jiǎng)h除的學(xué)生。</p><p>  int number :整型變量,記錄學(xué)號。</p&

85、gt;<p>  char ch:字符變量。</p><p><b>  代碼如下:</b></p><p>  void delet(struct student *p,int len)</p><p><b>  {</b></p><p>  int number=0;</

86、p><p><b>  char ch;</b></p><p><b>  int i,j;</b></p><p>  printf("輸入要?jiǎng)h除的學(xué)生的學(xué)號:\n");</p><p>  scanf("%d",&number);</p>

87、<p>  for(i=0;i<len;i++)</p><p><b>  {</b></p><p>  if(number==p[i].number)</p><p><b>  {</b></p><p>  printf("姓名:%s 學(xué)號:%d 性別:%

88、s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);<

89、;/p><p><b>  j=i;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("您確定要注銷該學(xué)生嗎?(y/n):\n");</p><p>  ch=ge

90、tch();</p><p>  if((ch=='Y')||(ch=='y'))</p><p><b>  {</b></p><p>  for(j;j<len;j++) //通過for語句進(jìn)行數(shù)據(jù)覆蓋實(shí)現(xiàn)刪除學(xué)生數(shù)據(jù)</p><p><b>  {

91、</b></p><p>  p[j]=p[j+1];</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b&

92、gt;</p><p><b>  2.9 保存與退出</b></p><p><b>  圖10</b></p><p><b>  圖11</b></p><p>  保存與退出,如圖10,11。</p><p><b>  保存模塊<

93、;/b></p><p>  1)函數(shù)原形:void write(struct student *p,int len)</p><p>  2)功 能:利用for循環(huán)語句將數(shù)據(jù)依次寫入文件。</p><p><b>  3)變量及類型:</b></p><p>  int i :循環(huán)控制變量。</p>

94、<p><b>  代碼如下:</b></p><p>  void write(struct student *p,int len)</p><p><b>  {</b></p><p>  int i;//控制循環(huán)</p><p>  FILE *fp=NULL;//定義文件指針

95、</p><p>  fp=fopen("D:\\student.txt","w");//打開文件并使文件指針指向它,以寫的方式</p><p>  if(fp==NULL)//如果文件沒有打開,提示錯(cuò)誤并退出</p><p><b>  {</b></p><p>  pri

96、ntf("\n\t文件沒有打開!程序結(jié)束!");</p><p>  getchar();//等待用戶觀察</p><p>  exit(0);//結(jié)束整個(gè)程序</p><p><b>  }</b></p><p><b>  else</b></p><

97、;p><b>  {</b></p><p>  for(i=0;i<len;i++)//將數(shù)據(jù)依次寫入文件</p><p><b>  {</b></p><p>  fprintf(fp,"姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:

98、%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p><b>  }<

99、;/b></p><p><b>  }</b></p><p>  printf("已將學(xué)生信息保存在了D盤根目錄下的student.txt文件中。\n");</p><p><b>  getch();</b></p><p>  fclose(fp);</p&

100、gt;<p><b>  return;</b></p><p><b>  }</b></p><p><b>  退出模塊</b></p><p>  1)函數(shù)原形:void exit_1(struct student *p,int len)</p><p>

101、  2)功 能:利用do while循環(huán)語句和printf函數(shù),完成退出。</p><p><b>  3)變量及類型:</b></p><p>  char ch:字符變量。</p><p><b>  代碼如下:</b></p><p>  void exit_1(struct student

102、*p,int len)</p><p><b>  {</b></p><p>  char ch='\0';</p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("

103、;您確定要退出?。▂/n):");</p><p>  scanf("%c",&ch);</p><p>  }while((ch!='Y')&&(ch!='y')&&(ch!='N')&&(ch!='n'));</p><

104、;p>  if((ch=='Y')||(ch=='y'))</p><p><b>  {</b></p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  retu

105、rn;</b></p><p><b>  }</b></p><p><b>  3.C程序設(shè)計(jì)總結(jié)</b></p><p>  程序調(diào)試前幾次有出現(xiàn)問題,其中一個(gè)是退出模塊,一開始是定義的:</p><p>  void exit (struct student *p,int len

106、)</p><p>  結(jié)果無法運(yùn)行,查詢是因?yàn)楹拖到y(tǒng)函數(shù)重名,即exit(0);后修改為:</p><p>  void exit_1(struct student *p,int len)</p><p>  然后調(diào)試結(jié)果無誤。而其他的是由于馬虎出的問題。因知識點(diǎn)欠缺,編寫的程序的注銷學(xué)生信息一部分問題無法解決,即一開始利用malloc函數(shù)向系統(tǒng)申請分配指定的內(nèi)存

107、空間,輸入三位學(xué)生成績,結(jié)果注銷第二位學(xué)生成績(利用for語句進(jìn)行數(shù)據(jù)覆蓋實(shí)現(xiàn)刪除學(xué)生數(shù)據(jù))后,再次輸出,前兩位正常,最后多出了一個(gè)亂碼。不知道怎樣解決。</p><p>  通過C程序設(shè)計(jì)這次的實(shí)踐,鍛煉了我的編程能力,同時(shí)也使我認(rèn)識到了自己知識的欠缺,相信自己以后會(huì)更努力的學(xué)好c語言,學(xué)好編程。</p><p><b>  三、參考文獻(xiàn)</b></p>

108、<p>  [1] 賈宗璞、許合利,C語言程序設(shè)計(jì),人民郵電出版社,2012.1 </p><p><b>  四、附錄:程序清單</b></p><p>  #include <stdio.h></p><p>  #include <string.h></p><p>  #in

109、clude <malloc.h></p><p>  #include <stdlib.h></p><p>  #include<conio.h></p><p>  void menu(struct student *p,int len);//菜單</p><p>  void average(stru

110、ct student *p,int len);//實(shí)現(xiàn)按平均成績排序</p><p>  void output(struct student *p,int *len);//打印信息</p><p>  void input(struct student *p,int len);//輸入數(shù)據(jù)</p><p>  void write(struct student *

111、p,int len);//將數(shù)據(jù)寫入文件</p><p>  void read(struct student *p,int len);//讀取文件數(shù)據(jù)</p><p>  void find(struct student *p,int len);//按學(xué)號找學(xué)生信息</p><p>  void delet(struct student *p,int len);/

112、/刪除學(xué)生信息</p><p>  void exit_1(struct student *p,int len);//結(jié)束整個(gè)程序</p><p>  void modify(struct student *p,int len);//修改學(xué)生信息</p><p>  void failure(struct student*p,int len);//不及格成績<

113、/p><p>  struct student</p><p><b>  {</b></p><p>  char name[30];//姓名</p><p>  int number;//學(xué)號</p><p>  char sex[3];//性別</p><p>

114、  char time[11];//入學(xué)年月</p><p>  int term;//有成績的學(xué)期數(shù)</p><p>  float score[4];</p><p>  float average;//平均成績</p><p>  float sum;</p><p><b>  };<

115、/b></p><p>  int main(void)</p><p><b>  {</b></p><p>  int len=0;</p><p><b>  char ch; </b></p><p>  struct student *p;</p>

116、;<p>  printf("請輸入需要存入的學(xué)生人數(shù):");</p><p>  scanf("%d",&len);</p><p>  p=(struct student *)malloc(sizeof(struct student)*len);</p><p>  menu(p,len);<

117、/p><p>  printf("按回車鍵繼續(xù)\n");</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  system("cls");</p><p>  printf(

118、"\n\n\n\n");</p><p>  printf("\t\t|************************************************|\n");</p><p>  printf("\t\t|------------------ 學(xué)生管理系統(tǒng) ----------------|\n");<

119、/p><p>  printf("\t\t|************************************************|\n");</p><p>  printf("\t\t|-------------- (i)錄入學(xué)生信息 ------------|\n");</p><p>  printf(

120、"\t\t|-------------- (p)輸出學(xué)生的成績單 ----------|\n");</p><p>  printf("\t\t|-------------- (a)按平均成績排序 ----------|\n");</p><p>  printf("\t\t|-------------- (s)按學(xué)號查詢學(xué)

121、生成績 ----------|\n");</p><p>  printf("\t\t|-------------- (f)按學(xué)號查詢學(xué)生不及格科目------|\n");</p><p>  printf("\t\t|-------------- (m)修改學(xué)生信息 ----------|\n");</p>

122、<p>  printf("\t\t|-------------- (D)注銷學(xué)生信息 ----------|\n");</p><p>  printf("\t\t|-------------- (w)保存 ----------|\n");</p><p>  printf("\t\t

123、|-------------- (e)退出 ----------|\n");</p><p>  printf("\t\t|************************************************|\n");</p><p>  printf("\t\t\n");</p>

124、<p>  ch=getch(); </p><p>  switch(ch)</p><p><b>  {</b></p><p>  case 'i':input(p,len);break;</p><p>  case 'p':output(p,

125、&len);break;</p><p>  case 'a':average(p,len);break;</p><p>  case 's':find(p,len);break;</p><p>  case 'f':failure(p,len);break;</p><p

126、>  case 'm':modify(p,len);break;</p><p>  case 'D':delet(p,len);break;</p><p>  case 'w':write(p,len);break;</p><p>  case 'e':exit_1(p,len)

127、;break;</p><p>  default :printf("\n\t輸入錯(cuò)誤!按回車鍵返回主菜單!"); break;</p><p><b>  getch();</b></p><p><b>  }</b></p><p><b>  }</b

128、></p><p><b>  free(p);</b></p><p>  return 0 ;</p><p><b>  }</b></p><p><b>  //菜單</b></p><p>  void menu(struct stud

129、ent *p,int len)</p><p>  {printf("\t\t||=========================================||\n");</p><p>  printf("\t\t||-----------------------------------------||\n");</p>&

130、lt;p>  printf("\t\t||-----------歡迎使用學(xué)生管理系統(tǒng)----------||\n");</p><p>  printf("\t\t||-----------------------------------------||\n");</p><p>  printf("\t\t||===========

131、==============================||\n");</p><p>  getchar();</p><p>  getchar();</p><p>  system("cls");</p><p><b>  return;</b></p><

132、p><b>  }</b></p><p>  //函數(shù)功能:實(shí)現(xiàn)按平均成績排序</p><p>  void average(struct student *p,int len)</p><p>  {int i,j;</p><p>  struct student t;</p><p&g

133、t;  for(i=0;i<len-1;i++)</p><p><b>  {</b></p><p>  for(j=0;j<len;j++)</p><p>  if( p[j+1].average>p[j].average)</p><p><b>  {</b>&l

134、t;/p><p><b>  t=p[j+1];</b></p><p>  p[j+1]=p[j];</p><p><b>  p[j]=t;</b></p><p><b>  }</b></p><p><b>  }</b>

135、</p><p>  output(p,&len);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  //函數(shù)功能:打印信息</p><p>  void output(struct student *p

136、,int *len)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<*len;i++)</p><p>  printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d

137、 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p> 

138、 printf("\n");</p><p>  getchar();</p><p>  getchar();</p><p><b>  return;</b></p><p><b>  }</b></p><p>  //函數(shù)功能:輸入數(shù)據(jù)<

139、/p><p>  void input(struct student *p,int len)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<len;i++)</p><p><b&g

140、t;  {</b></p><p>  printf("請輸入第%d個(gè)學(xué)生信息:\n",i+1);</p><p>  printf("姓名:");</p><p>  scanf("%s",p[i].name);//name是數(shù)組名 本身就是地址</p><p> 

141、 printf("學(xué)號:");</p><p>  scanf("%d",&p[i].number);</p><p>  printf("性別:");</p><p>  scanf("%s",p[i].sex);</p><p>  printf(&q

溫馨提示

  • 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

提交評論