c++課程設(shè)計--學(xué)生成績信息管理的設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  題 目: 學(xué)生成績信息管理的設(shè)計與實現(xiàn)</p><p><b>  初始條件:</b></p><p>  理論:學(xué)完計算機基礎(chǔ)知識,掌握C/C++語言編程基礎(chǔ)和VC開發(fā)平臺的使用。</p><p>  實踐:計算機科學(xué)系實驗中心提供計算機及軟件開發(fā)環(huán)境。</p><p>  要求完成的主要任務(wù)

2、: (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)</p><p> ?。?)系統(tǒng)需求分析,得到系統(tǒng)的數(shù)據(jù)需求和功能需求,分析結(jié)果用表格形式記錄。</p><p>  (2)系統(tǒng)設(shè)計,包括內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)文件設(shè)計、代碼設(shè)計、輸入/輸出設(shè)計、用戶界面設(shè)計、處理過程設(shè)計。要求內(nèi)存數(shù)據(jù)用鏈表組織,數(shù)據(jù)文件用文本文件,用戶界面用字符界面,枚舉量用枚舉類型表示。至少實現(xiàn)數(shù)據(jù)記錄的

3、增加、修改、刪除、查詢及相應(yīng)結(jié)果的顯示,查詢應(yīng)能按不同數(shù)據(jù)項進行。</p><p> ?。?)編制好程序后,設(shè)計若干測試用例,上機測試并通過所設(shè)計的程序系統(tǒng)。</p><p>  (4)設(shè)計報告按格式要求書寫。設(shè)計報告書正文的內(nèi)容應(yīng)包括:</p><p>  1.系統(tǒng)描述,包括問題說明、數(shù)據(jù)需求和功能需求;</p><p>  2.系統(tǒng)設(shè)計,

4、包括內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)文件設(shè)計、代碼設(shè)計、輸入/輸出設(shè)計、用戶界面設(shè)計、處理過程設(shè)計的說明;</p><p>  3.系統(tǒng)測試,包括測試用例的描述,測試方法和測試結(jié)果;</p><p>  4.設(shè)計的特點、不足、收獲與體會。</p><p><b>  時間安排:</b></p><p>  設(shè)計安排一周(21—21

5、周(7月6-10日)):</p><p>  周1上午:指導(dǎo)教師介紹開發(fā)平臺的使用、文件操作等。</p><p>  周1下午:完成系統(tǒng)分析、代碼設(shè)計、文件設(shè)計、輸入設(shè)計、</p><p>  輸出設(shè)計、用戶界面設(shè)計和處理過程設(shè)計。</p><p>  周2-周4:完成程序設(shè)計與調(diào)試,并撰寫設(shè)計報告書。</p><p>

6、;  周五全天:設(shè)計驗收并收取設(shè)計報告(第1-8節(jié)課到實驗中心進行上機驗收)。</p><p>  指導(dǎo)教師簽名: 2009 年 月 日</p><p>  系主任(或責(zé)任教師)簽名: 2009 年 月 日</p><p><b>  一 開發(fā)平臺</b></p>

7、;<p>  Microsoft Visual C++6.0</p><p><b>  二 問題描述</b></p><p>  這個程序是用是管理學(xué)生的成績,要求能夠?qū)崿F(xiàn)學(xué)生成績的添加,刪除與修改,并能夠顯示學(xué)生和成績信息,這些基本功能雖然很小,但是就是這些小功能組合在一起,就能實現(xiàn)對一些大系統(tǒng)的管理,極大的簡化管理,方便人們的日常工作。</p

8、><p>  1.在數(shù)據(jù)處理領(lǐng)域,選定一個問題,采用C、C++,字符界面,文本文檔實現(xiàn)對數(shù)據(jù)的添加,刪除,修改,查詢等功能。</p><p>  2.對所選問題進行需求分析,建立分析模型。分析模型包括數(shù)據(jù)項、數(shù)據(jù)記錄型,功能說明;功能至少包括對數(shù)據(jù)記錄的增加、修改、刪除、查詢及相應(yīng)結(jié)果的顯示,查詢應(yīng)能按不同數(shù)據(jù)項進行。</p><p>  3.要求學(xué)生選用C/C++語言

9、或某種程序設(shè)計語言及相應(yīng)開發(fā)環(huán)境,針對數(shù)據(jù)處理內(nèi)容,實施一個小型完整程序的規(guī)劃,設(shè)計,程序設(shè)計與調(diào)試,最終達到一個小型完整程序功能目標(biāo)。鞏固和深化所學(xué)課程的知識,培養(yǎng)學(xué)生綜合運用所學(xué)課程知識,分析和解決實際問題的能力,使學(xué)生能比較全面而辯證地分析和處理問題,逐步樹立正確的設(shè)計思想;培養(yǎng)嚴(yán)謹(jǐn)認真的科學(xué)態(tài)度和嚴(yán)謹(jǐn)務(wù)實的工作作風(fēng)。</p><p><b>  2.1 系統(tǒng)概述</b></p&

10、gt;<p>  1、問題描述:對一個有N個學(xué)生的班級,通過該系統(tǒng)實現(xiàn)對該班級學(xué)生的成績信息進行錄入、顯示、修改、刪除等操作的管理。</p><p>  2、功能要求:1)本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:班級、學(xué)號、姓名、語文成績、數(shù)學(xué)成績、英語成績、計算機成績。2)本系統(tǒng)顯示這樣的菜單:</p><p><b>  學(xué)生成績管

11、理系統(tǒng)</b></p><p><b>  1.輸入學(xué)生信息</b></p><p><b>  2.輸出學(xué)生信息</b></p><p><b>  3.排序</b></p><p><b>  4.插入一條記錄</b></p>

12、<p>  5.按姓名查找,刪除一條記錄</p><p>  6.按姓名查找并顯示一個記錄</p><p>  7.按學(xué)號查找并顯示一個記錄</p><p>  8.按姓名查找并修改一條記錄</p><p>  9.從文件中讀入數(shù)據(jù)</p><p>  0.儲存數(shù)據(jù)并退出系統(tǒng)</p><

13、p>  請選擇(0-9): 3)執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。3、算法提示:</p><p>  數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組</p><p><b>  2.2數(shù)據(jù)需求</b></p><p>  學(xué)生的班級,學(xué)號,姓名,學(xué)生的數(shù)學(xué)、語文、英語、計算機的成績。</p><p><b>  

14、2.3功能需求</b></p><p>  1.選擇錄入成績:分別輸入學(xué)生班級,學(xué)號,姓名,然后輸入各科目的成績,按回車鍵確定輸入。</p><p>  2.選擇顯示成績:將所輸入的所有信息顯示出來。</p><p>  3.選擇排序:對所輸入的信息按學(xué)號排序。如果在錄入成績時不是按學(xué)號順序進行錄入的,則這一步可以使記錄整齊有序。</p>

15、<p>  4.選擇插入記錄:就是在錄入成績后,若有遺漏,則進行追加記錄。</p><p>  5.選擇刪除記錄:先根據(jù)學(xué)生姓名進行查找,若成功,則刪除此學(xué)生的所有信息。</p><p>  6.選擇按姓名查找:以學(xué)生姓名為標(biāo)簽進行查找,若成功,則輸出該學(xué)生的所有信息。</p><p>  7.選擇按學(xué)號查找:以學(xué)生學(xué)號為標(biāo)簽進行查找,若成功,則輸出該學(xué)生

16、的所有信息。</p><p>  8.選擇修改記錄:先根據(jù)學(xué)生姓名進行查找,然后修改該學(xué)生的記錄。</p><p>  9.選擇讀入文件:從電腦上面讀入成績信息文件(若存在的話)。</p><p>  0.選擇存儲并退出:在實現(xiàn)所有功能后,將學(xué)生成績記錄保存到電腦上面并退出運行界面。</p><p><b>  三 算法設(shè)計<

17、/b></p><p>  3.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計</p><p>  Struct Student</p><p><b>  {</b></p><p>  char num[10]; //學(xué)號</p><p>  char cla[10]; //班級</p>

18、;<p>  char name[20]; //姓名</p><p>  char chian[10]; //語文</p><p>  char shuxue[20]; //數(shù)學(xué)</p><p>  char english[10]; //英語</p><p>  char jsj[20]; //計

19、算機</p><p>  }; //這是學(xué)生結(jié)構(gòu)體的定義</p><p><b>  3.2主要算法設(shè)計</b></p><p><b>  1>.錄入成績函數(shù)</b></p><p>  int Input(Student stud[],int n)

20、//輸入數(shù)據(jù)。</p><p><b>  {</b></p><p><b>  int i=0;</b></p><p>  char sign,x[10];</p><p>  for(;sign != 'n' && sign != 'N';)&

21、lt;/p><p><b>  {</b></p><p>  cout<<setw(15)<<" "<<"班級:";</p><p>  cin>>stud[n+i].cla;</p><p>  cout<<setw(15

22、)<<" "<<"學(xué)號:";</p><p>  cin>>stud[n+i].num;</p><p>  cout<<setw(15)<<" "<<"姓名:";</p><p>  cin>>stud

23、[n+i].name;</p><p>  cout<<setw(15)<<" "<<"語文:";</p><p>  cin>>stud[n+i].chian;</p><p>  cout<<setw(15)<<" "<<

24、;"數(shù)學(xué):";</p><p>  cin>>stud[n+i].shuxue;</p><p>  cout<<setw(15)<<" "<<"英語:";</p><p>  cin>>stud[n+i].english;</p>

25、<p>  cout<<setw(15)<<" "<<"計算機:";</p><p>  cin>>stud[n+i].jsj;</p><p><b>  gets(x);</b></p><p>  cout<<setw(10)&l

26、t;<" ";</p><p>  cout<<"還有要輸入的信息嗎?(y/n)";</p><p>  cin>>&sign;</p><p><b>  i++;</b></p><p><b>  }</b><

27、/p><p>  return(n+i); </p><p><b>  }</b></p><p><b>  2>.輸出記錄函數(shù)</b></p><p>  void Display(Student stud[], int n) //輸出數(shù)據(jù)。</p><p>

28、<b>  {</b></p><p><b>  int i;</b></p><p>  cout<< "班級 學(xué)號 姓名 語文 數(shù)學(xué) 英語 計算機"<<endl;</p><p>  for(i=1;i<n+1;i++)</p><p><

29、;b>  {</b></p><p>  printf(stud[i-1].cla,stud[i-1].num,stud[i-1].name,stud[i-1].chian,stud[i-1].shuxue,stud[i-1].english,stud[i-1].jsj);</p><p><b>  }</b></p><p&g

30、t;<b>  }</b></p><p><b>  3>.刪除記錄函數(shù)</b></p><p>  int Delete(Student stud[],int n) //按名字查找信息 刪除信息</p><p><b>  {</b></p><p>

31、  char s[20];</p><p>  int i=0,j;</p><p><b>  cin>>s;</b></p><p>  while(strcmp(stud[i].name,s)!=0&&i<n) i++; //查找判斷</p><p><b>  if(i

32、==n) </b></p><p><b>  {</b></p><p>  printf("\t\t\t沒有發(fā)現(xiàn)!\n"); //返回失敗信息</p><p>  return(n); </p><p><b>  } </b></p><p&

33、gt;  for(j=i;j<n-1;j++) //刪除操作</p><p><b>  { </b></p><p>  strcpy(stud[j].num,stud[j+1].num); </p><p>  strcpy(stud[j].name,stud[j+1].name); </p><p>  st

34、rcpy(stud[j].cla,stud[j+1].cla);</p><p>  strcpy(stud[j].chian,stud[j+1].chian);</p><p>  strcpy(stud[j].shuxue,stud[j+1].shuxue);</p><p>  strcpy(stud[j].english,stud[j+1].english)

35、; </p><p>  strcpy(stud[j].jsj,stud[j+1].jsj);</p><p><b>  } </b></p><p>  cout<<setw(15)<<" "<<"當(dāng)前信息已刪除成功!"<<endl; </p>

36、;<p>  return(n-1); </p><p><b>  }</b></p><p>  4>.按姓名查找記錄</p><p>  void Query(Student stud[],int n) //按姓名查找</p><p><b>  {</b><

37、;/p><p>  char s[20];</p><p><b>  int i=0;</b></p><p>  cout<<setw(15)<<" "<<"輸入他(她)的姓名:";</p><p><b>  cin>>s

38、;</b></p><p>  while(strcmp(stud[i].name,s)!=0&&i<n) </p><p>  i++; //查找判斷</p><p><b>  if(i==n) </b></p><p><b>  {</b><

39、/p><p>  printf("\t\t\t沒有發(fā)現(xiàn)!\n"); //輸入失敗信息</p><p><b>  return; </b></p><p><b>  } </b></p><p>  cout<<setw(15)<<"

40、; "<<"學(xué)號:"<<stud[i].num<<endl;</p><p>  cout<<setw(15)<<" "<<"語文:"<<stud[i].chian<<endl;</p><p>  cout<<s

41、etw(15)<<" "<<"數(shù)學(xué):"<<stud[i].shuxue<<endl;</p><p>  cout<<setw(15)<<" "<<"英語:"<<stud[i].english<<endl;</p>

42、<p>  cout<<setw(15)<<" "<<"計算機:"<<stud[i].jsj<<endl;</p><p><b>  }</b></p><p>  5>.按學(xué)號查找記錄</p><p>  和按姓名查找記錄類

43、似,不再單獨列出</p><p><b>  6>.修改記錄函數(shù)</b></p><p>  int Xiugai(Student stud[],int n) //修改信息</p><p><b>  {</b></p><p>  n=Delete(stud,n);</p

44、><p>  cout<<setw(15)<<" "<<"輸入你要修改的學(xué)生信息"<<endl;</p><p>  n=Insert(stud,n);</p><p>  cout<<setw(15)<<" "<<"

45、修改完成"<<endl;</p><p>  return(n);</p><p><b>  }</b></p><p><b>  7>.保存記錄函數(shù)</b></p><p>  void WritetoText(Student stud[],int n)

46、 </p><p><b>  {</b></p><p><b>  int i=0;</b></p><p><b>  FILE *fp;</b></p><p>  char filename[20];</p><p>  cout<<

47、;setw(15)<<" "<<"將記錄寫人文件"<<endl;</p><p>  cout<<setw(15)<<" "<<"輸入文件名:";</p><p>  cin>>filename;</p><

48、p>  fp=fopen(filename,"w");</p><p>  fprintf(fp,"%d\n",n); </p><p>  for(;i<n;)</p><p><b>  {</b></p><p>  fprintf(fp,"%-6s%

49、-5s%-5s%-5s%-5s%-5s%-5s\n",stud[i].cla,stud[i].num,stud[i].name,stud[i].chian,stud[i].shuxue,stud[i].english,stud[i].jsj); </p><p><b>  i++;</b></p><p><b>  }</b><

50、;/p><p>  fclose(fp);</p><p><b>  }</b></p><p><b>  3.3測試實例設(shè)計</b></p><p><b>  輸入信息:</b></p><p>  錄入信息后進行各種操作測試。</p>

51、<p>  將全部信息顯示出來;</p><p>  將葛恒亮的語文成績進行修改為85,其他的不變。然后在將全部信息顯示出來進行對比。</p><p>  分別按姓名和學(xué)號查找周國盛和蔡軍的信息。</p><p>  將葛恒亮的信息刪除。</p><p>  插入記錄:“班級 0707,學(xué)號 1,姓名 辛波……”。然后進行排序,不

52、然的話,這條記錄是排在最后的,排序是按學(xué)號進行排序的。</p><p>  最后將全部信息保存。</p><p><b>  四 調(diào)試報告</b></p><p>  主要針對程序設(shè)計及軟件開發(fā)的基礎(chǔ)內(nèi)容,強化抽象建模、算法設(shè)計、計算過程規(guī)劃與實施的能力。結(jié)合計算機科學(xué)導(dǎo)論、高級語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)等課程,強化和鞏固專業(yè)理論基礎(chǔ)和掌握編程技巧

53、,為后續(xù)的專業(yè)課程學(xué)習(xí)打下良好的基礎(chǔ)。</p><p>  輸入函數(shù)是將所有記錄通過結(jié)構(gòu)體保存在數(shù)組中的,排序函數(shù)可以將所有記錄根據(jù)學(xué)號從小到大進行排序,這樣可以是記錄更加有序,可觀性增加。最后保存的時候文件名和文件格式是預(yù)先設(shè)置好的。</p><p>  將所有的信息錄入后,將其通過輸出函數(shù)顯示。然后修改第一條記錄,雖然只是修改語文成績,但其他信息還需要重新輸入。因為這是一個變相的修改,

54、事實上是先將記錄刪除,再進行重新的錄入。所以修改之后的記錄是排在最后面的,但是可以通過排序函數(shù)使其重新有序。再進行刪除操作,將第一條記錄刪除。然后插入一條記錄,通過排序使其排在第一個位置,看起來好像是將第一條記錄修改了。事實上修改函數(shù)正是這樣實現(xiàn)的,先刪除再錄入。</p><p><b>  五 自我評價與總結(jié)</b></p><p>  通過本次試驗。我了解一些較為

55、復(fù)雜的函數(shù)及其應(yīng)用,對于編程的嚴(yán)謹(jǐn)性有了深刻的體會。</p><p>  原來編一些小程序的時候,態(tài)度比較隨便,出了錯誤也比較容易改正,但是這次的程序比較復(fù)雜,如果在寫的時候不認真的話,到調(diào)試的時候就會出現(xiàn)很對錯誤,并且由于程序較大,改正的時候也很麻煩,還不如開始的時候就小心一點,這樣調(diào)試起來不會太復(fù)雜,從而會更有效率的完成程序,也起到了鍛煉的作用,同時也端正了學(xué)習(xí)態(tài)度。</p><p>

56、  編程不是一件簡單的事情,同樣的一個問題,可以用不同的方法來解決,同一個程序也可以有很多的不同,你可以用簡單的語句來實現(xiàn)相同的功能,你同樣可以通過不同的功能函數(shù)組合來實現(xiàn)復(fù)雜的功能,你可以把程序越改越簡單,也可以添加更加復(fù)雜的功能,總之,編程是一件具有無限可能的事情,你可以發(fā)揮你自己的能力來自由操作,設(shè)計出屬于你自己的程序。編程同時也是一件非常有成就感的事情,如果你自己完成一個程序,不管它是多么的小,你總會感到非常高興。能在快樂中學(xué)習(xí)

57、知識也是一件不錯的事情。</p><p>  我以后也會努力學(xué)習(xí)編程的,雖然現(xiàn)階段我的能力還有限,解決一些問題往往需要很多時間,但是學(xué)習(xí)本身不是一件容易的事情,是必須付出努力才能得到回報的,不經(jīng)歷風(fēng)雨,怎能見彩虹。今天的努力,終將化為明天的果實,少壯不努力,老大徒傷悲。古人都知道如此,我們更應(yīng)該珍惜眼前的機會,努力學(xué)習(xí),為了以后燦爛的未來,我們應(yīng)該從現(xiàn)在開始努力!最后感謝學(xué)校給的這次課程設(shè)計機會和辛勤工作的老師。

58、</p><p><b>  附錄:</b></p><p><b>  源代碼:</b></p><p>  由于太長所以沒有附過來。</p><p><b>  運行結(jié)果:</b></p><p><b>  截圖</b><

59、;/p><p><b>  輸出所有信息:</b></p><p>  按姓名查找周國盛的信息記錄:</p><p>  按學(xué)號查找蔡軍的信息記錄:</p><p><b>  刪除葛恒亮的記錄:</b></p><p><b>  插入辛波的信息:</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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論