學(xué)生成績管理系統(tǒng)課程設(shè)計 (2)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  學(xué)生成績管理系統(tǒng)課程設(shè)計</p><p><b>  一、課程設(shè)計目的:</b></p><p>  本課程設(shè)計為學(xué)生提供了一個既動手又動腦,自學(xué),查資料,獨立實踐的機會。將本學(xué)期課本上的理論知識和實際有機的結(jié)合起來,鍛煉學(xué)生實際分析問題和解決問題的能力,提高學(xué)生適應(yīng)實際、實踐編程的能力,使對C++系統(tǒng)編程有一個大致的了解。</p>

2、<p><b>  二、需求分析:</b></p><p>  本系統(tǒng)設(shè)計者力求根據(jù)學(xué)生成績管理的需要,而建立一個“學(xué)生成績管理系統(tǒng)”,以方便對成績的各項管理操作。開發(fā)目的如:①能對成績進行錄入和輸出;②能根據(jù)學(xué)生的學(xué)號,姓名,成績來查詢該學(xué)生的成績;③能根據(jù)學(xué)號對學(xué)生信息進行修改;④能刪除學(xué)生的信息;⑤能插入學(xué)生信息;⑥能計算每個學(xué)生的總分并排序。</p><

3、;p><b>  三、概要設(shè)計</b></p><p><b>  1、設(shè)計說明</b></p><p> ?。?)定義一個結(jié)構(gòu)體,其中的成員如下:</p><p> ?。?)預(yù)先錄入的數(shù)據(jù)如下表:</p><p>  2、程序流圖(見附圖)</p><p>  3、部

4、分程序及其說明:</p><p>  main ():此函數(shù)主要是調(diào)用錄入、統(tǒng)計等函數(shù)對成績表進行處理;通過使用switch函數(shù)判斷用戶所選擇的序號,再進入相應(yīng)的函數(shù)。</p><p>  InitList_Sq():用于開辟空間,用來存放數(shù)據(jù)。</p><p>  CreateList_Sq():用來錄入學(xué)生信息。</p><p>  Ou

5、tputList_Sq():用來輸出所有學(xué)生信息。</p><p>  Find():按不同方式進行查詢,當(dāng)無法找到與輸入的學(xué)號相匹配的記錄時顯示出錯信息。</p><p>  Modifay():按學(xué)號修改學(xué)生信息。</p><p>  DeleteList_Sq ():按學(xué)號進行刪除操作,當(dāng)輸入的學(xué)號不匹配時就顯示出錯信息。</p><p&g

6、t;  InsertList_Sq ():此函數(shù)用于插入學(xué)生信息。</p><p>  Sort_Sq ():用于對各個學(xué)生的總成績進行排序。</p><p><b>  四、詳細設(shè)計:</b></p><p>  #include"iostream"</p><p>  using namespac

7、e std;</p><p>  #defineLIST_INIT_SIZE 100</p><p>  #define LISTINCREMENT 10</p><p>  #define OK 1 </p><p>  #defineERROR 0</p><p>  typedef int Status;&l

8、t;/p><p>  typedef struct</p><p><b>  {</b></p><p>  long num;</p><p>  char name[20];</p><p>  float computer;</p><p>  float

9、math;</p><p>  float english;</p><p><b>  }Std;</b></p><p>  typedef struct</p><p><b>  {</b></p><p>  Std *elem;</p><p

10、>  int length;</p><p>  int listsize;</p><p><b>  }SqList;</b></p><p>  //-----------------------初始化----------------------------</p><p>  Status InitList

11、_Sq(SqList &L)</p><p><b>  {</b></p><p>  L.elem=(Std *)malloc(LIST_INIT_SIZE*sizeof(Std));</p><p>  if(!L.elem) return ERROR;</p><p>  L.length=0;</

12、p><p>  L.listsize=LIST_INIT_SIZE;</p><p>  return OK;</p><p><b>  }</b></p><p>  //---------------------創(chuàng)建---------------------------</p><p>  St

13、atus CreateList_Sq(SqList &L,int n)</p><p><b>  {</b></p><p>  InitList_Sq(L);int i;</p><p>  L.length=n;</p><p>  cout<<"***學(xué)號*****姓名*****計算

14、機成績*****數(shù)學(xué)成績*****英語成績***"<<endl;</p><p>  for(i=0;i<L.length;i++)</p><p><b>  {</b></p><p>  cin>>L.elem[i].num;</p><p>  cin>>L.e

15、lem[i].name;</p><p>  cin>>L.elem[i].computer;</p><p>  cin>>L.elem[i].math;</p><p>  cin>>L.elem[i].english;</p><p><b>  }</b></p>

16、<p>  return OK;</p><p><b>  }</b></p><p>  //------------------------輸出-----------------------------</p><p>  Status OutputList_Sq(SqList L)</p><p>&

17、lt;b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<L.length;i++)</p><p><b>  {</b></p><p>  cout<<" "<<L

18、.elem[i].num<<" "<<L.elem[i].name<<" "<<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].english<<"

19、; "<<endl;</p><p><b>  }</b></p><p>  return OK;</p><p><b>  }</b></p><p>  //-----------------按學(xué)號查找學(xué)生信息------------------------<

20、;/p><p>  Status Find1(SqList L)</p><p><b>  {</b></p><p>  long n; int i;</p><p>  cout<<"請輸入您要查找的學(xué)號:";</p><p><b>  c

21、in>>n;</b></p><p><b>  if(n<=0)</b></p><p>  cout<<"輸入有誤!請重新輸入"<<endl;</p><p><b>  else</b></p><p><b>

22、;  {</b></p><p>  for(i=0;i<L.length;++i)</p><p><b>  {</b></p><p>  if(n==L.elem[i].num)</p><p><b>  {</b></p><p>  cout&

23、lt;<"該同學(xué)信息為:"<<endl;</p><p>  cout<<L.elem[i].num<<" "<<L.elem[i].name<<" "<<L.elem[i].computer<<" "<<L.elem[i].math

24、<<" "<<L.elem[i].english<<endl;</p><p>  cout<<"按“#”退出查找程序!"<<endl;</p><p>  return OK;</p><p><b>  break;</b></p>

25、;<p><b>  }</b></p><p><b>  }</b></p><p>  if(i>=L.length)</p><p>  cout<<"不存在此學(xué)號!"<<endl;</p><p><b>  }&l

26、t;/b></p><p>  return OK;</p><p><b>  }</b></p><p>  //----------------按姓名查找學(xué)生信息------------------------</p><p>  Status Find2(SqList L)</p><p

27、><b>  {</b></p><p>  char newname[20]; int i;</p><p>  cout<<"請輸入您要查找的姓名:";</p><p>  cin>>newname;</p><p>  for(i=0;i<L.lengt

28、h;++i)</p><p><b>  {</b></p><p>  if(strcmp(newname,L.elem[i].name)==0)</p><p><b>  {</b></p><p>  cout<<"該同學(xué)信息為:"<<endl;&

29、lt;/p><p>  cout<<L.elem[i].num<<" "<<L.elem[i].name<<" "<<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].e

30、nglish<<endl;</p><p>  cout<<"按“#”退出查找程序!"<<endl;</p><p>  return OK;</p><p><b>  break;</b></p><p><b>  }</b></p

31、><p><b>  }</b></p><p>  if(i>=L.length) </p><p>  cout<<"沒有這個姓名"<<endl;</p><p>  return OK;</p><p><b>  }</b>

32、;</p><p>  //----------------按計算機成績查找學(xué)生信息------------------------</p><p>  Status Find3(SqList L)</p><p><b>  {</b></p><p>  float s;int i;</p><p

33、>  cout<<"請輸入您要查找的計算機成績:";</p><p><b>  cin>>s;</b></p><p>  for(i=0;i<L.length;++i)</p><p><b>  {</b></p><p>  if(s=

34、=L.elem[i].computer)</p><p><b>  {</b></p><p>  cout<<"該同學(xué)信息為:"<<endl;</p><p>  cout<<L.elem[i].num<<" "<<L.elem[i].nam

35、e<<" "<<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].english<<endl;</p><p>  cout<<"按“#”退出查找程序!"<<endl

36、;</p><p>  return OK;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(i>=L.length) </p>

37、<p>  cout<<"沒有這個成績"<<endl; </p><p>  return OK;</p><p><b>  }</b></p><p>  //----------------------查找------------------------</p>

38、<p>  void Find(SqList L)</p><p><b>  {</b></p><p><b>  char a;</b></p><p>  cout<<"****1按學(xué)號查找****"<<endl;</p><p>  

39、cout<<"****2按姓名查找****"<<endl;</p><p>  cout<<"****3按計算機成績查找****"<<endl;</p><p><b>  int t=1;</b></p><p><b>  while(t)&l

40、t;/b></p><p><b>  {</b></p><p>  cout<<"請輸入序號:"<<endl;</p><p><b>  cin>>a;</b></p><p><b>  switch(a)</b&

41、gt;</p><p><b>  {</b></p><p><b>  case '1':</b></p><p>  Find1(L);break;</p><p><b>  case '2':</b></p><p&

42、gt;  Find2(L);break;</p><p><b>  case '3':</b></p><p>  Find3(L);break;</p><p><b>  case '#':</b></p><p>  t=0;break;</p>

43、<p><b>  default:</b></p><p>  cout<<"請按照提示輸入正確的序號(#結(jié)束)"<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p&

44、gt;<b>  }</b></p><p>  //-----------------------修改信息-------------------------</p><p>  Status modifay(SqList &L)</p><p><b>  {</b></p><p>  

45、long n,num;int i;char name[20];float computer,math,english;</p><p>  cout<<"請輸入要修改的學(xué)號:"<<endl;</p><p><b>  cin>>n;</b></p><p>  for(i=0;i<

46、L.length;i++)</p><p>  if(L.elem[i].num==n)</p><p><b>  {</b></p><p>  cout<<"請重新輸入該生信息:" <<endl;</p><p><b>  cin>>num;<

47、;/b></p><p>  cin>>name;</p><p>  cin>>computer;</p><p>  cin>>math;</p><p>  cin>>english;</p><p>  L.elem[i].num=num;</p>

48、;<p>  strcpy(L.elem[i].name,name);</p><p>  L.elem[i].computer=computer;</p><p>  L.elem[i].math=math;</p><p>  L.elem[i].english=english; </p><p><b>  }&

49、lt;/b></p><p>  cout<<"修改后班級學(xué)生信息為:"<<endl;</p><p>  OutputList_Sq(L);</p><p>  return OK;</p><p><b>  }</b></p><p>  /

50、/--------------------刪除某學(xué)號學(xué)生信息----------------------</p><p>  Status DeleteList_Sq(SqList &L)</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p

51、><b>  long num;</b></p><p>  cout<<"請輸入要刪除學(xué)生的學(xué)號:";</p><p>  cin>>num;</p><p>  for(i=0;i<L.length;i++)</p><p>  if(num==L.elem[

52、i].num)</p><p><b>  {</b></p><p>  cout<<"該學(xué)生所有信息為:";</p><p>  cout<<L.elem[i].num<<" "<<L.elem[i].name<<" "&

53、lt;<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].english<<endl;</p><p>  for(j=i;j<L.length-1;j++)</p><p><b>  {</b>

54、;</p><p>  L.elem[j].num=L.elem[j+1].num;</p><p>  strcpy(L.elem[j].name,L.elem[j+1].name);</p><p>  L.elem[j].computer=L.elem[j+1].computer;</p><p>  L.elem[j].math=L.

55、elem[j+1].math;</p><p>  L.elem[j].english=L.elem[j+1].english; </p><p><b>  }</b></p><p>  L.length--;</p><p>  cout<<"刪除后班級信息為:"<<en

56、dl;</p><p>  OutputList_Sq(L);</p><p>  return OK;</p><p><b>  }</b></p><p>  cout<<"此號不存在!"<<endl;</p><p>  return ERROR

57、;</p><p><b>  }</b></p><p>  //--------------------插入新學(xué)生信息--------------------------</p><p>  Status InsertList_Sq(SqList &L)</p><p>  { int i,e; long

58、 num; char name[20]; float computer,math,english;</p><p>  cout<<"在第e個位置插入新成員:"<<endl;</p><p><b>  cin>>e;</b></p><p>  for(i=L.length-1;i>

59、;=e-1;i--)</p><p><b>  { </b></p><p>  L.elem[i+1].num=L.elem[i].num;</p><p>  strcpy(L.elem[i+1].name,L.elem[i].name);</p><p>  L.elem[i+1].computer=L.el

60、em[i].computer;</p><p>  L.elem[i+1].math=L.elem[i].math;</p><p>  L.elem[i+1].english=L.elem[i].english; </p><p><b>  }</b></p><p>  cout<<"新插入同

61、學(xué)信息為:"<<endl;</p><p><b>  cin>>num;</b></p><p>  L.elem[e-1].num=num;</p><p>  cin>>name;</p><p>  strcpy(L.elem[e-1].name,name); <

62、;/p><p>  cin>>computer;</p><p>  L.elem[e-1].computer=computer;</p><p>  cin>>math;</p><p>  L.elem[e-1].math=math;</p><p>  cin>>english;&

63、lt;/p><p>  L.elem[e-1].english=english;</p><p>  ++L.length;</p><p>  cout<<"插入后班級學(xué)生信息為:"<<endl;</p><p>  OutputList_Sq(L); </p><p>  r

64、eturn OK;</p><p><b>  }</b></p><p>  //-------------------按總分排序-----------------------</p><p>  Status Sort_Sq(SqList L)</p><p><b>  {</b></p

65、><p>  int i,j,n=L.length;</p><p>  float s[100],t;</p><p>  for(i=0;i<n;i++)</p><p><b>  { </b></p><p><b>  s[i]=0;</b></p>

66、<p>  s[i]+=L.elem[i].computer;</p><p>  s[i]+=L.elem[i].math;</p><p>  s[i]+=L.elem[i].english;</p><p><b>  }</b></p><p>  for(i=0;i<n;i++)</p

67、><p>  for(j=0;j<n-i;j++)</p><p>  if(s[j]<s[j+1])</p><p><b>  {</b></p><p>  t=s[j];s[j]=s[j+1];s[j+1]=t;</p><p><b>  }</b><

68、/p><p>  cout<<"班級總分降序排序結(jié)果為:"<<endl;</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  cout<<s[i]<<" "; <

69、;/p><p><b>  }</b></p><p>  cout<<"班級最高分為:"<<s[0]<<endl;</p><p>  cout<<"班級最低分為:"<<s[n-1]<<endl;</p><p>

70、;  return OK;</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  cout<<"**********************************************

71、********"<<endl;</p><p>  cout<<"********************學(xué)生成績管理系統(tǒng)******************"<<endl;</p><p>  cout<<"**********************************************

72、********"<<endl;</p><p>  cout<<"*********************************************歡迎使用!"<<endl;</p><p>  cout<<"************************************制作者:**

73、*********"<<endl;</p><p>  cout<<"********郝文靜,郭曉燕,安忠武,宋永成,周鵬,侯曉飛*******"<<endl;</p><p>  cout<<"******************************************************

74、"<<endl;</p><p>  cout<<"0*************************************************提示"<<endl;</p><p>  cout<<"1***********************************************

75、**查找"<<endl;</p><p>  cout<<"2*************************************************修改"<<endl;</p><p>  cout<<"3*******************************************

76、******刪除"<<endl;</p><p>  cout<<"4*************************************************插入"<<endl;</p><p>  cout<<"5***************************************

77、**********排序"<<endl;</p><p>  int n; SqList L; char select;</p><p>  cout<<"該班級學(xué)生總數(shù)為:";</p><p><b>  cin>>n;</b></p><p> 

78、 CreateList_Sq(L,n);</p><p>  OutputList_Sq(L);</p><p><b>  int t=1;</b></p><p><b>  while(t)</b></p><p><b>  {</b></p><p

79、>  cout<<"請選擇要進行的操作(0—5):"<<endl;</p><p>  cin>>select;</p><p>  switch(select)</p><p><b>  {</b></p><p><b>  case '

80、;0':</b></p><p>  cout<<"********微型學(xué)生成績管理程序********"<<endl;</p><p>  cout<<"**************0 提示**************"<<endl;</p><p> 

81、 cout<<"**************1 查找**************"<<endl;</p><p>  cout<<"**************2 修改**************"<<endl;</p><p>  cout<<"*************

82、*3 刪除**************"<<endl;</p><p>  cout<<"**************4 插入**************"<<endl;</p><p>  cout<<"**************5 排序**************"<&

83、lt;endl;</p><p><b>  break;</b></p><p><b>  case '1':</b></p><p>  Find(L);break;</p><p><b>  case'2':</b></p>

84、<p>  modifay(L);break;</p><p>  case '3': </p><p>  DeleteList_Sq(L);break;</p><p>  case '4': </p><p>  InsertList_Sq(L);break;</p><

85、p>  case '5': </p><p>  Sort_Sq(L);break;</p><p><b>  case '#':</b></p><p>  t=0;break;</p><p><b>  default:</b></p>&

86、lt;p>  cout<<"請按照提示輸入正確序號(#結(jié)束)"<<endl;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>&l

87、t;b>  }</b></p><p><b>  五 、調(diào)試分析</b></p><p>  1,剛開始時忽略了一些變量參數(shù)的標識“&”,使調(diào)試程序時費時不少。今后應(yīng)重視確定參數(shù)的變量和賦值屬性的區(qū)分和標識。</p><p>  2,在調(diào)試構(gòu)成中有的地方誤用“break”,使得執(zhí)行時有的結(jié)果沒有輸出。</p&g

88、t;<p>  3,在調(diào)試過程中出現(xiàn)for循環(huán)中跳轉(zhuǎn)次數(shù)不正確,使得執(zhí)行出錯。</p><p>  4,在程序中未寫“return OK”,使得執(zhí)行時執(zhí)行結(jié)果沒有輸出。</p><p>  5,查找程序存在局限性,在編程時未考慮到姓名及計算機成績相同的情況。</p><p><b>  六 、用戶手冊</b></p>

89、<p>  1,本程序的運行環(huán)境為windows系統(tǒng)。</p><p>  2,進入演示程序后,即顯示文本方式的用戶界面,可隨機輸入學(xué)生信息(學(xué)號,姓名,3科成績)。</p><p>  3,輸出學(xué)生信息后,可在0~5中選擇要執(zhí)行的操作(0:輸出提示信息;1:查找;2:修改;3:刪除;4:插入;5:排序)。</p><p>  4,在1(查找)中,可選擇

90、多種查找方式:1:按學(xué)號查找2:按姓名查找3:按計算機成績查找</p><p>  5,輸入‘#’退出程序。</p><p><b>  七、運行結(jié)果圖</b></p><p><b>  八、課程設(shè)計總結(jié)</b></p><p>  通過此次學(xué)生成績管理系統(tǒng)的設(shè)計,使我對C++程序設(shè)計有了深一步的

91、了解,對系統(tǒng)設(shè)計及開發(fā)有了比較全面的思路。首先,通過對系統(tǒng)進行需求分析,確定各個功能函數(shù);然后一個個具體地對他們進行編程,并且仔細檢查看是否有錯;在完成這一步之后才開始構(gòu)造主函數(shù),通過主函數(shù)把各個功能函數(shù)聯(lián)系起來,編譯修改錯誤和不足之處</p><p>  在實際編程過程中會遇到很多不同的錯誤,有時候是一些很明顯很細節(jié)的語法錯誤,這些可以通過編譯來查找錯誤的所在,然而那些并不明顯難以查找的隱性錯誤卻真讓人頭痛,沒

92、有辦法只好利用斷點調(diào)試來一步步檢查代碼中的錯誤,這樣為了找一個錯誤花費了大量的時間,但是找出錯誤之后的感覺卻是非?!八钡?。同時我翻閱了大量的書籍,盡管大部分書都只是翻了一部分頁碼而已,卻給了我一個非常有價值的經(jīng)驗。</p><p>  總之,此次系統(tǒng)設(shè)計給我們提供了一個既動手又動腦、自學(xué)、獨立實踐的機會,使我們養(yǎng)成了勤翻閱各種相關(guān)資料的習(xí)慣,將書本上的理論知識和實際有機地結(jié)合起來,鍛煉了實際分析問題和解決問題的

溫馨提示

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

評論

0/150

提交評論