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

下載本文檔

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

文檔簡介

1、<p><b>  信息學(xué)院</b></p><p><b>  課程設(shè)計Ⅰ報告</b></p><p>  課程名稱___C語言程序設(shè)計_ __</p><p>  題目名稱 學(xué)生學(xué)籍管理系統(tǒng) </p><p>  學(xué)生學(xué)院_ 信息學(xué)院_ __ __</p&

2、gt;<p>  專業(yè)班級_ 計科12 </p><p>  學(xué) 號 </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師_______ ___ __</p><p>  2013 年12

3、月26 日</p><p><b>  目錄</b></p><p>  一、 設(shè)計目的與要求3</p><p>  1.1 題目與設(shè)計要求3</p><p>  1.2 本程序設(shè)計的知識點4</p><p>  二、 功能設(shè)計4</p><p>  2.1 總體

4、設(shè)計4</p><p>  2.2 詳細(xì)設(shè)計5</p><p>  4.1 測試結(jié)果及分析12</p><p><b>  五、 總結(jié)14</b></p><p><b>  六、參考文獻(xiàn)14</b></p><p>  一、 設(shè)計目的與要求</p>

5、<p>  1.1 題目與設(shè)計要求</p><p>  題目:學(xué)生學(xué)籍管理系統(tǒng)</p><p>  目的:1、了解和熟悉Visual C++軟件編程開發(fā)環(huán)境</p><p>  2、熟練掌握結(jié)構(gòu)化程序設(shè)計的步驟和模塊化設(shè)計方法</p><p>  3、熟練掌握C語言數(shù)據(jù)類型,熟記字符型數(shù)據(jù)和整形數(shù)據(jù)的定義和使用</p>

6、<p>  4、熟練掌握用while語句、do…while語句和for語句實現(xiàn)循環(huán)結(jié)構(gòu)程序設(shè)計的方法</p><p>  5、掌握一維數(shù)組、二維數(shù)組的定義、賦值和輸入輸出的方法</p><p>  6、掌握與數(shù)組有關(guān)的算法(特別是排序算法,熟練掌握冒泡排序法)</p><p>  7、熟悉函數(shù)的定義、聲明方法及全局變量和局部變量的概念與用法,掌握函數(shù)的調(diào)

7、用方法</p><p>  8、掌握結(jié)構(gòu)體類型變量的定義和使用及結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用</p><p>  設(shè)計要求:學(xué)生學(xué)籍信息管理系統(tǒng)設(shè)計</p><p><b>  1、需求分析</b></p><p>  學(xué)生基本信息、學(xué)生成績基本信息要存入文件當(dāng)中,因而要提供文件的輸入輸出操作;查詢功能要求提供查找和顯示操

8、作;刪除功能要求實現(xiàn)刪除操作;排序功能要求實現(xiàn)排序操作;另外還應(yīng)該提供鍵盤式選擇菜單以實現(xiàn)功能選擇。</p><p><b>  2、總體設(shè)計</b></p><p>  整個系統(tǒng)可以設(shè)計為數(shù)據(jù)錄入模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)刪除模塊和數(shù)據(jù)排序模塊。</p><p><b>  3、詳細(xì)設(shè)計</b></p>&l

9、t;p>  設(shè)計學(xué)生基本信息和學(xué)生成績基本信息結(jié)構(gòu)體數(shù)組。</p><p><b>  Struct </b></p><p><b>  {</b></p><p>  int stuNo; //學(xué)號</p><p>  char name[20]; //姓名</p&

10、gt;<p>  char sex[2]; //性別</p><p>  int domNum; //宿舍號 </p><p>  int tel; //電話號碼 </p><p>  }StuInfo; //學(xué)生基本信息結(jié)構(gòu)體</p><p><b>  Struct</b&g

11、t;</p><p><b>  {</b></p><p>  int stuNo; //學(xué)號</p><p>  char courseNo; //課程編號</p><p>  char courseName; //課程名稱</p><p>  int creditHour; //學(xué)

12、分</p><p>  Int triGrade; //平時成績</p><p>  Int experiGrade; //實驗成績</p><p>  Int examGrade; //卷面成績</p><p>  Float totalGrade; //綜合成績</p><p>  Float finalCreHo

13、ur; //實得學(xué)分</p><p>  }StuGraInfo; //學(xué)生成績基本信息結(jié)構(gòu)體</p><p> ?。?)數(shù)據(jù)錄入模塊:學(xué)生基本信息文件可以在磁盤建立,采用寫文件方式錄入學(xué)生成績基本信息。綜合成績和實得學(xué)分通過計算得到。</p><p> ?。?)查詢模塊:通過菜單選擇查詢功能,再選擇學(xué)生基本情況查詢和成績查詢,若選擇前者,再通過菜單選擇學(xué)號、姓名或

14、宿舍號碼,按照基本查找算法查找A.TXT,然后把查找結(jié)果輸出若選擇后者,則先在A.TXT中查找學(xué)號對應(yīng)的姓名,再在B.TXT中查找該學(xué)生的課程情況,并統(tǒng)計科目和實得總學(xué)分,輸出結(jié)果。</p><p> ?。?)刪除模塊:通過菜單選擇刪除學(xué)生的功能,輸入要刪除學(xué)生的學(xué)號,則分別在A.TXT和B.TXT中查找該生信息,刪除之;或者輸入學(xué)生的姓名,先在A.TXT中得到該生的學(xué)號,刪除該生信息,再在B.TXT中刪除該學(xué)號

15、對應(yīng)的信息。注意:C語言中沒有直接刪除信息的函數(shù),需要自己實現(xiàn),可以采取讀出數(shù)據(jù),判斷數(shù)據(jù)(如果不刪除,則進(jìn)入緩沖區(qū),否則刪除),寫入數(shù)據(jù)(把緩沖區(qū)中的數(shù)據(jù)寫入文件)的步驟進(jìn)行。</p><p>  (4)排序模塊:通過菜單選擇排序依據(jù),采用排序算法(冒泡、插入、選擇等)對數(shù)據(jù)進(jìn)行排序并輸出結(jié)果。 </p><p>  1.2 本程序設(shè)計的知識點</p><p> 

16、 陳述開發(fā)過程中用到的知識點,如結(jié)構(gòu)體、數(shù)組、指針等。</p><p><b>  二、 功能設(shè)計</b></p><p><b>  2.1 總體設(shè)計</b></p><p>  其中包含數(shù)據(jù)錄入模塊、查詢模塊、刪除模塊、排序模塊四大功能功能模塊</p><p><b>  2.2 詳

17、細(xì)設(shè)計</b></p><p><b>  2.3分塊設(shè)計</b></p><p><b>  三、 程序?qū)崿F(xiàn)</b></p><p> ?、爬昧私M合體的方式定義結(jié)構(gòu)體數(shù)組,提供學(xué)生基本信息,定義如下:</p><p>  typedef struct { </p>

18、<p>  int Id; //學(xué)號</p><p>  char name[10];//姓名</p><p>  char sex[6]; //性別 </p><p>  int room; //宿舍號</p><p>  int tel; //電話號碼</p><p>  

19、} StudentInfo; //定義學(xué)生信息的結(jié)構(gòu)體類型</p><p>  ⑵同時定義了另一結(jié)構(gòu)體數(shù)組,提供學(xué)生成績基本信息,定義如下:</p><p>  typedef struct {</p><p><b>  int Id;</b></p><p>  char courseNo[10]; //課程

20、編號</p><p>  char courseName[20];//課程名</p><p>  float a; // 課程學(xué)分</p><p>  float b; // 平時成績</p><p>  float c; // 實驗成績</p><p>  float d; // 卷面成績</p>&l

21、t;p>  float e; // 綜合成績</p><p>  float f; // 實際學(xué)分</p><p>  } MarkInfo; //定義課程信息的結(jié)構(gòu)體類型</p><p>  使用以上結(jié)構(gòu)體數(shù)組,使程序變得思路清晰,設(shè)計過程也變得相對簡單。同時,定義并使用了如下函數(shù),聲明和定義</p><p>  void Read

22、File(); //讀取文件</p><p>  void DisplayMainMenu(); //顯示主菜單</p><p>  void DataInput(); //數(shù)據(jù)錄入</p><p>  void DataQuery(); //數(shù)據(jù)查詢</p><p>  vo

23、id DataDelete(); //數(shù)據(jù)刪除</p><p>  void DataSort(); //數(shù)據(jù)排序</p><p>  void QueryById(int ); //按學(xué)號查詢</p><p>  void QueryByRoom(int ); //按宿舍查詢</p><

24、p>  void QueryMark(int ); //按成績查詢</p><p>  void sort1(); //按綜合成績排序</p><p>  void sort2(); //按實得學(xué)分排序</p><p>  void markput(); //成績輸出&l

25、t;/p><p>  StudentInfo si[30]; // 學(xué)生信息結(jié)構(gòu)數(shù)組</p><p>  MarkInfo mi[150]; // 學(xué)生成績結(jié)構(gòu)數(shù)組</p><p>  int sp=0; // 學(xué)生信息結(jié)構(gòu)數(shù)組中學(xué)生數(shù)</p><p>  int mp=0;

26、 // 學(xué)生成績結(jié)構(gòu)數(shù)組中成績數(shù)</p><p>  ***************讀 取 數(shù) 據(jù) 、 計 算 ***************</p><p>  在這段功能模塊中,利用指針變量來讀取結(jié)構(gòu)體數(shù)組文件中的相應(yīng)信息,是程序的編寫、閱讀和運行變得簡潔明了。此外,在這段程序中,還對文件中的數(shù)據(jù)按照題目的具體要求對綜合成績和學(xué)分做了自動計算。</p

27、><p>  void ReadFile( )</p><p><b>  { </b></p><p><b>  FILE *fp;</b></p><p>  if((fp = fopen("A.txt","r"))==NULL)</p>&l

28、t;p>  printf("cant open the file\n");</p><p>  while (!feof(fp))</p><p><b>  {</b></p><p>  fscanf(fp,"%d%s%s%d%d", &si[sp].Id,si[sp].name,&am

29、p;si[sp].sex,&si[sp].room,&si[sp].tel);</p><p><b>  sp++;</b></p><p><b>  }</b></p><p>  fclose (fp);</p><p>  fp = fopen("B.txt&qu

30、ot;,"r");</p><p>  while (!feof(fp))</p><p><b>  {</b></p><p>  fscanf (fp,"%d%s%s%d%d%d%d",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[

31、mp].a,&mi[mp].b,&mi[mp].c, &mi[mp].d);</p><p>  if (mi[mp].c == -1) </p><p>  mi[mp].e = 0.3*mi[mp].b+0.7*mi[mp].d;</p><p><b>  else </b></p><p>

32、;  mi[mp].e = 0.15*mi[mp].b+0.15*mi[mp].c+0.7*mi[mp].d;</p><p>  if ( mi[mp].e >= 90. ) mi[mp].f = mi[mp].a;</p><p>  else if ( mi [mp].e >= 80. ) </p><p>  mi[mp].f = mi[mp].

33、a *0.8;</p><p>  else if ( mi[mp].e >= 70. )</p><p>  mi[mp].f = mi[mp].a *0.75;</p><p>  else if ( mi[mp].e >= 60. ) </p><p>  mi[mp].f = mi[mp].a *0.6;</p>

34、;<p>  else mi[mp].f = 0;</p><p><b>  mp++;</b></p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>

35、  *************** 顯 示 主 菜 單 ***************</p><p>  這部分是對本程序的主要功能做出的展示,體現(xiàn)了本程序的五大功能,簡潔明白,一目了然。</p><p>  Void DisplayMainMenu()</p><p><b>  {</b></p><p>

36、  printf (“\n 1) 數(shù)據(jù)錄入 \n 2) 數(shù)據(jù)查詢 \n 3) 數(shù)據(jù)刪除 \n 4) 數(shù)據(jù)排序 \n 5) 程序結(jié)束 \n “);</p><p><b>  }</b></p><p>  *************** 數(shù) 據(jù) 錄 入 模 塊 *******************</p><p>  錄入每個學(xué)生的

37、學(xué)號、課程編號、課程名稱、學(xué)分、平時成績、實驗成績、卷面成績共7個數(shù)據(jù),即對關(guān)于學(xué)生成績基本信息的結(jié)構(gòu)體數(shù)組進(jìn)行輸入,也就是文件B.TXT中的內(nèi)容。</p><p>  void DataInput()</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p>&

38、lt;p><b>  int i;</b></p><p>  printf ("學(xué)生的學(xué)號 課程編號 課程名稱 學(xué)分 平時成績 實驗成績 卷面成績\n");</p><p><b>  while(1)</b></p><p>  {scanf ("%d%s%s%d%d%d%d&quo

39、t;,&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].c, &mi[mp].d);</p><p>  if(mi[mp].Id==-1)break;</p><p>  if (mi[mp].c == -1) </p><p>

40、  mi[mp].e = 0.3*mi[mp].b+0.7*mi[mp].d;</p><p><b>  else </b></p><p>  mi[mp].e = 0.15*mi[mp].b+0.15*mi[mp].c+0.7*mi[mp].d;</p><p>  if ( mi[mp].e >= 90. ) mi[mp].f =

41、 mi[mp].a;</p><p>  else if ( mi [mp].e >= 80. ) </p><p>  mi[mp].f = mi[mp].a *0.8;</p><p>  else if ( mi[mp].e >= 70. )</p><p>  mi[mp].f = mi[mp].a *0.75;</

42、p><p>  else if ( mi[mp].e >= 60. ) </p><p>  mi[mp].f = mi[mp].a *0.6;</p><p>  else mi[mp].f = 0;</p><p><b>  mp++;</b></p><p><b>  }&l

43、t;/b></p><p>  fp = fopen("B.txt","r+");</p><p>  for(i=0;i<mp;i++)</p><p>  fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].cours

44、eName,&mi[i].a,&mi[mp].b,&mi[i].c, &mi[i].d);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  ******************* 查 詢 模 塊********************</p&g

45、t;<p>  此段程序是為實現(xiàn)信息查詢功能而設(shè)計的。總體來講,分為兩大功能模塊,一是學(xué)生基本信息查詢,二是對學(xué)生成績的查詢。在第一種查詢,即對學(xué)生基本信息的查詢中,又提供了兩種查詢方式,一種是按學(xué)號對學(xué)生基本信息進(jìn)行查詢,一種是按宿舍號碼對學(xué)生基本信息進(jìn)行查詢。</p><p>  Void DataQuery()</p><p><b>  {</b>

46、;</p><p>  int x,y,z;</p><p>  printf( “\n 1) 學(xué)生基本情況查詢\n 2) 成績查詢\n”);--------------------------選擇查詢內(nèi)容</p><p>  scanf(“%d”,&x);</p><p>  if (x == 1) // 查詢學(xué)生信息</p&

47、gt;<p><b>  {</b></p><p>  printf (“1) 按學(xué)號查詢 2) 按宿舍查詢\n”);-------------------------------選擇查詢方式</p><p>  scanf(“%d”,&y);</p><p>  if (y == 1 ) </p>&

48、lt;p><b>  { </b></p><p>  printf ( “ 輸入學(xué)號\n”);-----------------------------------------------按學(xué)生學(xué)號查詢</p><p>  scanf (“%d”,&z);</p><p>  QueryById(z);</p>&

49、lt;p><b>  }</b></p><p>  if (y == 2) </p><p><b>  { </b></p><p><b>  }</b></p><p>  if ( x ==2) // 查詢成績信息-------------------

50、--------------------查詢學(xué)生成績(輸入學(xué)號)</p><p><b>  {</b></p><p>  printf ( “ 輸入學(xué)號\n”); </p><p>  scanf (“%d”,&y);</p><p>  QueryMark(y);</p><p>&

51、lt;b>  }</b></p><p><b>  }</b></p><p>  ****************** 刪 除 模 塊 *******************</p><p>  此模塊提供了按學(xué)號實現(xiàn)刪除學(xué)生信息的功能,當(dāng)在文件A.TXT中刪除一個學(xué)生時,自動地在文件B.TXT中刪除此人所有信息。

52、</p><p>  void DataDelete()</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p><b>  int x;</b></p><p><b>  int i=

53、0;</b></p><p><b>  int k,d;</b></p><p>  printf( "輸入學(xué)號\n");</p><p>  scanf( "%d",&x);</p><p>  while( si[i].Id != x) i++;</

54、p><p>  if (i<sp-1)</p><p><b>  { </b></p><p>  for ( k=i; k<sp-1; k++)</p><p><b>  {</b></p><p>  si[k] = si[k+1]; </p>

55、<p><b>  }</b></p><p><b>  }</b></p><p>  if ( i<sp) sp--;</p><p><b>  d = 0; </b></p><p>  for (k=0;k<mp;k++)</p&g

56、t;<p><b>  {</b></p><p>  if ( mi[k].Id == x ) d++;</p><p>  else mi[k-d] = mi[k];</p><p><b>  }</b></p><p>  mp = mp - d;</p><

57、;p>  fp = fopen("D:B.txt","r+");</p><p>  for(i=0;i<mp;i++)</p><p>  fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].courseName,&mi[i].a,&a

58、mp;mi[i].b,&mi[i].c, &mi[i].d);</p><p><b>  }</b></p><p>  *************** 排 序 模 塊 ******************</p><p>  利用void sort1()函數(shù)按計算所得的綜合成績進(jìn)行排序。</p><p

59、>  void sort1()</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  MarkInfo t;</p><p>  for (i=mp-1;i>=1;i--)</p><p><b&g

60、t;  {</b></p><p>  for (j=0;j<i;j++)</p><p><b>  {</b></p><p>  if (mi[j].e>mi[j+1].e) </p><p><b>  { </b></p><p><

61、;b>  t=mi[j];</b></p><p>  mi[j] = mi[j+1];</p><p>  mi[j+1] = t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }&

62、lt;/b></p><p>  markput();</p><p><b>  }</b></p><p><b>  四、 測試分析</b></p><p>  4.1 測試結(jié)果及分析</p><p><b>  顯示主菜單</b></

63、p><p><b>  數(shù)據(jù)錄入功能。</b></p><p><b>  對成績進(jìn)行錄入</b></p><p> ?。?)查詢功能,按學(xué)號進(jìn)行查詢</p><p> ?。?)排序功能按綜合成績排序</p><p><b> ?。?)刪除功能</b><

64、;/p><p><b>  退出程序</b></p><p><b>  五、 總結(jié)</b></p><p>  這次學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合

65、起來才能做好每一件事。在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體、文件、指針等。為了解決問題,最好就是多向同學(xué),老師請教。</p><p><b>  六、參考文獻(xiàn)</b></p><p>  參考文獻(xiàn)必須是在課程設(shè)計中真正閱讀過和運用過的,文獻(xiàn)按照在正文中的出現(xià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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論