c語言程序設(shè)計(jì)課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  計(jì)算機(jī)上機(jī)實(shí)習(xí)報(bào)告</b></p><p>  題 目: 學(xué)生成績管理系統(tǒng) </p><p><b>  目 錄</b></p><p>  一 設(shè)計(jì)目的…………………………………………………………1</p><p>  二 課

2、程設(shè)計(jì)摘要 …………………………………………………2</p><p>  三 課程設(shè)計(jì)的任務(wù)與數(shù)據(jù)…………………………………………3</p><p>  四 系統(tǒng)功能模塊 …………………………………………………4</p><p>  五 詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法——流程圖)……… 5</p><p>  六

3、 調(diào)試分析(包含各模塊的測試用例及測試結(jié)果)…………… 6</p><p>  七 總結(jié)…………………………………………………………… 7</p><p><b>  一、設(shè)計(jì)目的</b></p><p>  1.進(jìn)一步熟悉VC6.0的開發(fā)環(huán)境,掌握基本的編程方法,熟悉用C語言完成一個(gè)應(yīng)用程序的設(shè)計(jì)過程、掌握有關(guān)編輯和調(diào)試程序的方法和

4、技巧;</p><p>  2.主要掌握C語言中的結(jié)果提、指針及文件操作等內(nèi)容;</p><p>  3.了解開發(fā)簡單應(yīng)用程序的全過程,包括:分析、設(shè)計(jì)、編程、調(diào)試和編寫報(bào)告。</p><p><b>  二、課程設(shè)計(jì)摘要</b></p><p>  第一步 原始數(shù)據(jù)(建立兩個(gè)數(shù)據(jù)文件)</p><p

5、>  文件1用來存放學(xué)生成績</p><p>  文件2用來存放課程學(xué)分</p><p>  第二步 程序設(shè)計(jì)思想</p><p>  定義兩個(gè)結(jié)構(gòu)體數(shù)組用來存放文件1和文件2的內(nèi)容。</p><p>  編寫各個(gè)函數(shù)對應(yīng)各個(gè)應(yīng)實(shí)現(xiàn)的功能。</p><p>  編寫第一個(gè)函數(shù)ReadDat1( )讀取文件1(h

6、x1090221.txt)讀取學(xué)生成績</p><p>  編寫第二個(gè)函數(shù)ReadDat2( )讀取文件2(hx02KC.txt)讀取課程學(xué)分</p><p>  編寫第三個(gè)函數(shù)function1( )計(jì)算各個(gè)同學(xué)的加權(quán)平均值和名次,同時(shí)創(chuàng)建txt文本文件MC1090221.txt寫入數(shù)據(jù),包括各個(gè)學(xué)生的學(xué)號、名次、姓名、各科成績、加權(quán)平均值。</p><p> 

7、 編寫第四個(gè)函數(shù)function2( )統(tǒng)計(jì)全班每門課程的平均分和標(biāo)準(zhǔn)差,并計(jì)算各分?jǐn)?shù)段(60分以下;60~69;70~79;80~89;90分以上的學(xué)生人數(shù))。課程設(shè)計(jì)的計(jì)算公式為:</p><p>  式中:y為課程標(biāo)準(zhǔn)差,xi 為第i個(gè)學(xué)生成績, 為本門課程的算術(shù)平均成績,N為學(xué)生數(shù)。</p><p>  創(chuàng)建txt文本文件hx1090221.txt寫入數(shù)據(jù),包括課程編號、課程名稱、

8、標(biāo)準(zhǔn)差、分?jǐn)?shù)段人數(shù)統(tǒng)計(jì)。</p><p>  7.編寫第五個(gè)函數(shù)function3( )打印每名學(xué)生的成績條,同時(shí)創(chuàng)建txt文本文件CJT1090221.txt寫入成績條內(nèi)容。</p><p>  8.編寫第六個(gè)函數(shù)function4( )屏幕顯示所有存在不及格課程的學(xué)生名單(含學(xué)號、不及格課程名稱、課程的學(xué)分及成績)。</p><p>  9.編寫第七個(gè)函數(shù)fun

9、ction5( )屏幕顯示優(yōu)等生名單(含學(xué)號、N門課程成績、平均分、名次)。</p><p>  三、程序設(shè)計(jì)的任務(wù)與數(shù)據(jù)</p><p><b>  1.原始文件</b></p><p> ?、儆糜浭卤拘陆ㄒ晃谋疚募募麨椋骸鞍嗝?序號”,將本班的M名學(xué)生在本學(xué)期的N門考試課的成績(要求用真實(shí)的課程名、假想的分?jǐn)?shù),并要求將自己的學(xué)號假定為

10、1,將自己的每門課的分?jǐn)?shù)都定在90分以上,而將別人的每門課的分?jǐn)?shù)都定在95分以下。)輸入到這個(gè)文件中,建議按如下形式存放(注:20≤M≤50、5≤N≤8,下文以M=4,N=3為例):</p><p>  學(xué)號 姓名 英語 C語言 數(shù)學(xué) </p><p>  1 我自己 96 93 99 </p><p

11、>  2 張某 76 89 89 </p><p>  3 李某 91 96 67 </p><p>  4 王某 75 58 56 </p><p><b>  …………</b></p>

12、<p>  hx1090221.txt</p><p> ?、?用記事本新建另一文本文件,文件名為:“班名+KC”,將本班本學(xué)期的N門真實(shí)的課程名及其學(xué)分輸入到這個(gè)數(shù)據(jù)文件中,建議按如下列形式存放:</p><p>  編號 課程名稱 課程學(xué)分</p><p>  1 英語 6.0</p>

13、;<p>  2 C語言 4.5</p><p>  3 數(shù)學(xué) 5.5</p><p>  hx02KC.txt</p><p><b>  2.課設(shè)任務(wù)</b></p><p>  在主函數(shù)中讀入兩個(gè)原始數(shù)據(jù)文件的內(nèi)容,保存在對應(yīng)的結(jié)構(gòu)體

14、數(shù)組中,并根據(jù)以上內(nèi)容計(jì)算每個(gè)學(xué)生N門課的加權(quán)平均分(保留1位小數(shù),4舍5入),并按平均分排列名次,平均分相同則名次并列。然后顯示菜單,利用菜單調(diào)用各個(gè)函數(shù),分別完成如下功能: </p><p>  用C語言創(chuàng)建一個(gè)數(shù)據(jù)文件,文件名為:“MC+班號+序號”,如信計(jì)0901班的12號同學(xué)所建的文件名應(yīng)為:“MC1090221.txt”。用來存放班級排名后的成績表,要求按以下形式存放。</p><

15、p>  名次 學(xué)號 姓名 英語 C語言 數(shù)學(xué) ……平均成績 </p><p>  1 1 我自己 96 93 99 …… 95.5 </p><p>  3 2 張某 76 89 89 …… 80.5 </

16、p><p>  4 3 李某 91 96 67 …… 78.2 </p><p>  2 4 王某 75 58 56 …… 88.8 </p><p>  5 5 趙某 58 67

17、 77 …… 68.5 </p><p>  分別統(tǒng)計(jì)全班每門課的平均分和標(biāo)準(zhǔn)差,并計(jì)算各分?jǐn)?shù)段(60分以下;60~69;70~79;80~89;90分以上)的學(xué)生人數(shù)。</p><p>  課程標(biāo)準(zhǔn)差的計(jì)算公式為:</p><p>  式中:y為課程標(biāo)準(zhǔn)差,xi 為第i個(gè)學(xué)生成績, 為本門課程的算術(shù)平均成績,N為學(xué)生數(shù)。</p>&

18、lt;p>  用C語言創(chuàng)建一個(gè)數(shù)據(jù)文件,文件名為:“KC+班號+序號”, hx1090121.txt </p><p>  編號 課程名稱 課程學(xué)分 標(biāo)準(zhǔn)差 優(yōu)秀 良好 中等 及格 不及格</p><p>  1 英語 6.0 16.8 3 10 18 15 3 </p><p>  

19、2 C語言 4.5 11.7 1 5 20 13 8</p><p>  3 數(shù)學(xué) 5.5 18.5 9 12 19 8 1</p><p>  打印每名學(xué)生成績條,結(jié)果存放到用C語言創(chuàng)建的一個(gè)數(shù)據(jù)文件中,文件名為:“CJT+班號+序號”, CJT1090221.

20、txt。成績條的格式自定。</p><p>  屏幕顯示所有存在不及格課程的學(xué)生的名單(含學(xué)號、不及格課程名稱、課程的學(xué)分及成績)。</p><p>  屏幕顯示優(yōu)等生名單(含學(xué)號、N門課成績、平均分、名次)</p><p>  優(yōu)等生條件(只要滿足三個(gè)條件中的任意一個(gè)條件即可):</p><p><b>  平均分 92分<

21、;/b></p><p>  名次在本班位于前五名</p><p>  平均分 88分,并且至少有一門課的成績 99分</p><p><b>  四、系統(tǒng)功能模塊</b></p><p>  五、詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法——流程圖)</p><p><b>  1.

22、流程圖</b></p><p><b>  2.源程序清單</b></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <math.h></p><p

23、>  #define N 20</p><p>  #define M 5</p><p>  struct student</p><p><b>  {</b></p><p><b>  int num;</b></p><p>  char name[15];&

24、lt;/p><p>  int score[M],Condition[4];</p><p>  float jqave;</p><p><b>  int rank;</b></p><p><b>  }stu[N];</b></p><p>  struct kechen

25、g</p><p><b>  {</b></p><p><b>  int num;</b></p><p>  char kcname[20];</p><p>  float xuefen,ave;</p><p>  int count[5];</p>

26、<p>  }course[M];</p><p>  void ReadDat1()</p><p><b>  {</b></p><p>  printf("讀入原始數(shù)據(jù)文件“hx1090221”\n");</p><p><b>  int i,j;</b>&

27、lt;/p><p>  char str1[100];</p><p><b>  FILE *fp;</b></p><p>  if((fp=fopen("d:\\hx1090221.txt","r"))==NULL)</p><p><b>  {</b>&

28、lt;/p><p>  printf("Cannot open the file1!\n");</p><p><b>  exit(0);</b></p><p>  }fgets(str1,100,fp);</p><p>  printf("%s",str1);</p>

29、;<p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  fscanf(fp,"%d%s",&stu[i].num,stu[i].name);</p><p>  printf("%4d%10s",stu[i].num,stu[

30、i].name);</p><p>  for(j=0;j<M;j++)</p><p><b>  {</b></p><p>  fscanf(fp,"%d",&stu[i].score[j]);</p><p>  printf("%9d",stu[i].sco

31、re[j]);</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b><

32、/p><p>  void ReadDat2()</p><p><b>  {</b></p><p>  printf("讀入原始文件“hx02KC”\n");</p><p><b>  FILE *fp;</b></p><p><b>  

33、int k;</b></p><p>  char str2[100];</p><p>  fp=fopen("d:\\hx02KC.txt","r");</p><p>  fgets(str2,100,fp);</p><p>  puts(str2);</p><

34、p>  for(k=0;k<M;k++)</p><p><b>  {</b></p><p>  fscanf(fp,"%d%s%f",&course[k].num,course[k].kcname,&course[k].xuefen);</p><p>  printf("%-8d

35、%-10s%10.1f\n",course[k].num,course[k].kcname,course[k].xuefen);</p><p><b>  }</b></p><p>  printf("\n");</p><p>  fclose(fp);</p><p><b&g

36、t;  }</b></p><p>  void function1()</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  float s=0,sum;</p><p>  for(i=0;i<

37、M;i++)</p><p>  s+=course[i].xuefen;</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p><b>  sum=0;</b></p><p>  stu[i].rank=1;&

38、lt;/p><p>  for(j=0;j<M;j++)</p><p>  sum+=stu[i].score[j]*course[j].xuefen;</p><p>  stu[i].jqave=sum/s;</p><p><b>  }</b></p><p>  for(i=0;i&

39、lt;N;i++)</p><p><b>  {</b></p><p>  for(j=0;j<N;j++)</p><p>  if(stu[j].jqave>stu[i].jqave)stu[i].rank+=1;</p><p><b>  }</b></p>&

40、lt;p><b>  FILE *fp;</b></p><p>  if((fp=fopen("d:\\MC1090221.txt","w"))==NULL)</p><p><b>  {</b></p><p>  printf("Faile to build

41、a new file!\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  printf("創(chuàng)建MC1090221.txt數(shù)據(jù)文件\n");</p><p>  printf("名次 學(xué)號

42、 姓名 英語 C語言 數(shù)學(xué) 物理 化學(xué) 平均成績\n");</p><p>  fprintf(fp,"名次 學(xué)號 姓名 英語 C語言 數(shù)學(xué) 物理 化學(xué) 平均成績\n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p> 

43、 printf("%3d%4d%7s",stu[i].rank,stu[i].num,stu[i].name);</p><p>  fprintf(fp,"%3d%4d%7s",stu[i].rank,stu[i].num,stu[i].name);</p><p>  for(j=0;j<M;j++)</p><p>

44、;<b>  {</b></p><p>  printf("%5d",stu[i].score[j]);</p><p>  fprintf(fp,"%5d",stu[i].score[j]);</p><p><b>  }</b></p><p>  p

45、rintf("%6.1f\n",stu[i].jqave);</p><p>  fprintf(fp,"%6.1f\n",stu[i].jqave);</p><p><b>  }</b></p><p>  printf("\n");</p><p>  

46、fclose(fp);</p><p><b>  }</b></p><p>  void function2()</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  float b[M];

47、</p><p>  for(i=0;i<M;i++)</p><p><b>  b[i]=0;</b></p><p>  float sum[M];</p><p>  for(j=0;j<M;j++)</p><p><b>  {</b></p&g

48、t;<p><b>  sum[j]=0;</b></p><p>  for(i=0;i<N;i++)</p><p>  sum[j]+=stu[i].score[j];</p><p><b>  }</b></p><p>  for(j=0;j<M;j++)<

49、;/p><p><b>  {</b></p><p>  for(i=0;i<N;i++)</p><p>  b[j]+=(stu[i].score[j]-sum[j]/20.0)*(stu[i].score[j]-sum[j]/20.0);</p><p>  course[j].ave=(float)sqrt(

50、(double)(b[j]/20.0));</p><p><b>  }</b></p><p>  for(j=0;j<M;j++)</p><p>  for(i=0;i<5;i++)</p><p>  course[j].count[i]=0;</p><p>  for(j

51、=0;j<M;j++)</p><p><b>  {</b></p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  if(stu[i].score[j]>=90) course[j].count[0]+=1;</p

52、><p>  else if(stu[i].score[j]>=80) course[j].count[1]+=1;</p><p>  else if(stu[i].score[j]>=70) course[j].count[2]+=1;</p><p>  else if(stu[i].score[j]>=60) course[j].count[3

53、]+=1;</p><p>  else course[j].count[4]+=1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  FILE *fp;</b></p><p>  if((f

54、p=fopen("d:\\KC1090221.txt","w"))==NULL)</p><p><b>  {</b></p><p>  printf("Faile to build a new file!\n");</p><p><b>  exit(0);</

55、b></p><p><b>  }</b></p><p>  fprintf(fp,"編號 課程名稱 課程學(xué)分 標(biāo)準(zhǔn)差 優(yōu)秀 良好 中等 及格 不及格\n");</p><p>  for(i=0;i<M;i++)</p><p><b>  {</b>&l

56、t;/p><p>  fprintf(fp,"%-6d%-10s%-7.1f%7.1f",i+1,course[i].kcname,course[i].xuefen,course[i].ave);</p><p>  for(j=0;j<5;j++)</p><p>  fprintf(fp,"%5d",course[i].

57、count[j]);</p><p>  fprintf(fp,"\n");</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void function3()&

58、lt;/p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  float s=0,sum;</p><p>  for(i=0;i<M;i++)</p><p>  s+=course[i].xuefen;</p

59、><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p><b>  sum=0;</b></p><p>  stu[i].rank=1;</p><p>  for(j=0;j<M;j++)</p>&l

60、t;p>  sum+=stu[i].score[j]*course[j].xuefen;</p><p>  stu[i].jqave=sum/s;</p><p><b>  }</b></p><p>  for(i=0;i<N;i++)</p><p><b>  {</b><

61、;/p><p>  for(j=0;j<N;j++)</p><p>  if(stu[j].jqave>stu[i].jqave)stu[i].rank+=1;</p><p><b>  }</b></p><p><b>  FILE *fp;</b></p><p

62、>  if((fp=fopen("d:\\CJT1090221.txt","w"))==NULL)</p><p><b>  {</b></p><p>  printf("Faile to build a new file!\n");</p><p><b>  e

63、xit(0);</b></p><p><b>  }</b></p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  fprintf(fp,"名次 學(xué)號 姓名 英語 C語言 數(shù)學(xué) 物理 化學(xué) 平均成績\n&quo

64、t;);</p><p>  fprintf(fp,"%3d%4d%7s",stu[i].rank,stu[i].num,stu[i].name);</p><p>  for(j=0;j<M;j++)</p><p>  fprintf(fp,"%5d",stu[i].score[j]);</p><

65、;p>  fprintf(fp,"%6.1f\n",stu[i].jqave);</p><p>  fprintf(fp,"\n");</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b&

66、gt;</p><p>  void function4()</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  printf("不及格課程學(xué)生名單\n");</p><p>  printf(

67、"學(xué)號 姓名 不及格課程名稱 課程學(xué)分 課程成績\n");</p><p>  for(i=0;i<N;i++)</p><p>  for(j=0;j<M;j++)</p><p>  if(stu[i].score[j]<60)</p><p><b>  {</b>&l

68、t;/p><p>  printf("%-5d",stu[i].num); </p><p>  printf("%-8s",stu[i].name); </p><p>  printf("%10s",course[j].kcname); </p><p>  printf("

69、;%12.1f",course[j].xuefen);</p><p>  printf("%8d\n",stu[i].score[j]);</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }&

70、lt;/b></p><p>  void function5()</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  float s=0,sum;</p><p>  for(i=0;i<M;i++)

71、</p><p>  s+=course[i].xuefen;</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p><b>  sum=0;</b></p><p>  stu[i].rank=1;</p&

72、gt;<p>  for(j=0;j<M;j++)</p><p>  sum+=stu[i].score[j]*course[j].xuefen;</p><p>  stu[i].jqave=sum/s;</p><p><b>  }</b></p><p>  for(i=0;i<N;i

73、++)</p><p><b>  {</b></p><p>  for(j=0;j<N;j++)</p><p>  if(stu[j].jqave>stu[i].jqave)stu[i].rank+=1;</p><p><b>  }</b></p><p&g

74、t;  printf("優(yōu)等生名單\n");</p><p>  printf("學(xué)號 學(xué)號 姓名 英語 C語言 數(shù)學(xué) 物理 化學(xué) 平均分 名次\n");</p><p>  for(i=0;i<N;i++)</p><p>  for(j=0;j<4;j++)</p>

75、<p>  stu[i].Condition[j]=0;</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  if(stu[i].jqave>=92) stu[i].Condition[0]=1;</p><p>  else if(s

76、tu[i].rank<=5) stu[i].Condition[1]=1;</p><p>  else if(stu[i].jqave>=88) stu[i].Condition[2]=1;</p><p>  for(j=0;j<M;j++)</p><p><b>  {</b></p><p>

77、  if(stu[i].score[j]>=99)break;</p><p>  stu[i].Condition[3]=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  for(i=0;i<N;i++)</p>&

78、lt;p>  if(stu[i].Condition[0]||stu[i].Condition[1]||(stu[i].Condition[2]&&stu[i].Condition[3]))</p><p><b>  {</b></p><p>  printf("%-5d",stu[i].num);</p>

79、<p>  printf("%-10s",stu[i].name);</p><p>  for(j=0;j<5;j++)</p><p>  printf("%-8d",stu[i].score[j]);</p><p>  printf("%-8.1f",stu[i].jqave);&l

80、t;/p><p>  printf("%-5d\n",stu[i].rank);</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  void

81、main()</p><p><b>  {</b></p><p>  ReadDat1();</p><p>  ReadDat2();</p><p>  function1();</p><p>  function2();</p><p>  function3(

82、);</p><p>  function4();</p><p>  function5();</p><p><b>  }</b></p><p>  六、調(diào)試分析(包含各模塊的測試用例及測試結(jié)果)</p><p><b>  源文件</b></p>&l

83、t;p><b>  運(yùn)行結(jié)果</b></p><p>  C程序新建的文本文件</p><p>  MC1090221.txt</p><p>  KC1090221.txt</p><p>  CJT1090221.txt</p><p><b>  七、總結(jié)</b>

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論