數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--成績(jī)管理_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  需求分析說明</b></p><p>  本題對(duì)學(xué)生的某門課程成績(jī)管理做一個(gè)簡(jiǎn)單的模擬,為了實(shí)現(xiàn)學(xué)生成績(jī)的管理與分析,設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng)。</p><p>  學(xué)生信息包括:學(xué)號(hào)、姓名、性別,要確保其信息的準(zhǔn)確性。</p><p>  課程的成績(jī)信息有平時(shí)成績(jī)、實(shí)驗(yàn)成績(jī)、期未成績(jī)、總評(píng)成績(jī),總評(píng)成績(jī)=平時(shí)成績(jī)

2、*0.4+實(shí)驗(yàn)成績(jī)*0.3+期末成績(jī)*0.3,</p><p>  用菜單選擇方式完成下列功能:</p><p> ?。?)登記學(xué)生成績(jī);(2)插入學(xué)生成績(jī);(3)修改學(xué)生成績(jī);(4)刪除學(xué)生成績(jī);</p><p> ?。?)查詢學(xué)生成績(jī);(6)對(duì)學(xué)生成績(jī)進(jìn)行排序;(7)輸出學(xué)生成績(jī)。</p><p>  在完成上述基本要求的操作后,要應(yīng)用功

3、能(6)進(jìn)行測(cè)試。</p><p><b>  總體設(shè)計(jì)</b></p><p>  設(shè)計(jì)功能表如下:(附:功能解釋)</p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p><b>  系統(tǒng)功能分析:</b></p><p>  學(xué)生信息包括:學(xué)

4、號(hào)、姓名、性別,要確保其信息的準(zhǔn)確性。</p><p>  課程的成績(jī)信息有平時(shí)成績(jī)、實(shí)驗(yàn)成績(jī)、期未成績(jī)、總評(píng)成績(jī),總評(píng)成績(jī)=平時(shí)成績(jī)*0.4+實(shí)驗(yàn)成績(jī)*0.3+期末成績(jī)*0.3,以及功能上述功能。在完成上術(shù)基本要求的操作后,要應(yīng)用功能(6)進(jìn)行測(cè)試。得出該題目以創(chuàng)建兩個(gè)類,一個(gè)類保存成績(jī)信息:平時(shí)成績(jī)、實(shí)驗(yàn)成績(jī)、期未成績(jī)、總評(píng)成績(jī),一個(gè)類保存學(xué)生信息:學(xué)號(hào)姓名、性別。從功能分析可知該存儲(chǔ)方式適合用鏈表存儲(chǔ)結(jié)構(gòu):

5、此類功能中在未排序前應(yīng)該以學(xué)號(hào)為主鍵,排序后應(yīng)該以總評(píng)成績(jī)?yōu)橹麈I。</p><p> ?。?) 定義一個(gè)成績(jī)類:</p><p>  class score</p><p>  {public:(訪問控制屬性),平時(shí)成績(jī)(float peacetime),實(shí)驗(yàn)成績(jī)(float experiment),期末成績(jī)(float final),總評(píng)成績(jī)(float tot

6、al)}</p><p> ?。?)定義一個(gè) 學(xué)生類:</p><p>  Class student public:(訪問控制屬性),int sno(學(xué)號(hào)),string name(姓名) string sex(性別)score course(課程)student *next(下一個(gè)學(xué)生地址指針) </p><p>  student *registed();//

7、登記學(xué)生成績(jī)</p><p>  void insert(student *s,int i);//插入學(xué)生成績(jī)</p><p>  void alter(student *s,int i);//修改學(xué)生成績(jī)</p><p>  void deleted(student *s,int i);//刪除學(xué)生成績(jī)</p><p>  void see

8、k(student *s,int i);//查詢學(xué)生成績(jī)</p><p>  student *sort(student *s);//成績(jī)排序</p><p>  void print(student *s);//輸出學(xué)生成績(jī)</p><p>  void sortprint(student *s);//排序后的成績(jī)輸出;</p><p>&

9、lt;b>  存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)分析</b></p><p>  學(xué)生的信息:學(xué)生的信息和成績(jī)信息都儲(chǔ)存在一個(gè)鏈表里,每個(gè)節(jié)點(diǎn)表示一個(gè)學(xué)生的信息,包括學(xué)號(hào),姓名及平時(shí)成績(jī)(float peacetime),實(shí)驗(yàn)成績(jī)(float experiment),期末成績(jī)(float final),總評(píng)成績(jī)(float total)等數(shù)據(jù)項(xiàng)。</p><p><b>  程序流程

10、圖</b></p><p><b>  代碼</b></p><p>  #include<iostream></p><p>  #include<iomanip></p><p>  #include<string></p><p>  usin

11、g namespace std;</p><p>  class score</p><p><b>  {</b></p><p><b>  public:</b></p><p>  float peacetime;//平時(shí)成績(jī)</p><p>  float expe

12、riment;//實(shí)驗(yàn)成績(jī)</p><p>  float final;//期末成績(jī)</p><p>  float total;//總評(píng)成績(jī)</p><p><b>  };</b></p><p>  class student</p><p><b>  {</b>&l

13、t;/p><p><b>  public:</b></p><p>  int sno;//學(xué)號(hào)</p><p>  string name;//姓名</p><p>  string sex;//性別</p><p>  score course;//課程</p><p>

14、  student *next;</p><p>  student *registed();//登記學(xué)生成績(jī)</p><p>  void insert(student *s,int i);//插入學(xué)生成績(jī)</p><p>  void alter(student *s,int i);//修改學(xué)生成績(jī)</p><p>  void dele

15、ted(student *s,int i);//刪除學(xué)生成績(jī)</p><p>  void seek(student *s,int i);//查詢學(xué)生成績(jī)</p><p>  student *sort(student *s);//成績(jī)排序</p><p>  void print(student *s);//輸出學(xué)生成績(jī)</p><p> 

16、 void sortprint(student *s);//排序后的成績(jī)輸出</p><p><b>  };</b></p><p>  student *student::registed()</p><p><b>  {</b></p><p><b>  int e;</b

17、></p><p>  student *hm2,*p,*r;</p><p>  r=hm2=new student;</p><p>  hm2->next=NULL;</p><p>  cout<<"輸入需要登記的學(xué)生的個(gè)數(shù):";</p><p><b> 

18、 cin>>e;</b></p><p>  for(int i=1;i<=e;i++)</p><p><b>  {</b></p><p>  p=new student;</p><p>  cout<<"輸入學(xué)生的學(xué)號(hào):";</p>&

19、lt;p>  cin>>p->sno;</p><p>  cout<<"輸入學(xué)生姓名:";cin>>p->name;</p><p>  cout<<"輸入學(xué)生性別:";cin>>p->sex;</p><p>  cout<<&

20、quot;輸入平時(shí)成績(jī)";</p><p>  cin>>p->course.peacetime;</p><p>  cout<<"輸入實(shí)驗(yàn)成績(jī)";</p><p>  cin>>p->course.experiment;</p><p>  cout<&l

21、t;"輸入期末成績(jī)";</p><p>  cin>>p->course.final;</p><p>  p->course.total=static_cast<float>(p->course.peacetime*0.4+p->course.experiment*0.3+p->course.final*0.3);

22、</p><p>  cout<<"課程的總評(píng)成績(jī):"<<p->course.total<<endl;</p><p>  hm2->next=p;</p><p><b>  hm2=p;</b></p><p><b>  }</b&

23、gt;</p><p>  hm2->next=NULL;</p><p><b>  return r;</b></p><p><b>  }</b></p><p>  void student::insert(student *s,int i)</p><p>

24、<b>  {</b></p><p>  student *p,*q;</p><p><b>  p=s;</b></p><p>  while((p->next!=NULL)&&(p->next->sno<i))</p><p>  p=p->n

25、ext;</p><p>  q=new student;</p><p><b>  q->sno=i;</b></p><p>  cout<<"輸入學(xué)生姓名:";cin>>q->name;</p><p>  cout<<"輸入學(xué)生性別:

26、";cin>>q->sex;</p><p>  cout<<"輸入平時(shí)成績(jī)";</p><p>  cin>>q->course.peacetime;</p><p>  cout<<"輸入的實(shí)驗(yàn)成績(jī)";</p><p>  cin

27、>>q->course.experiment;</p><p>  cout<<"輸入期末成績(jī)";</p><p>  cin>>q->course.final;</p><p>  q->course.total=static_cast<float>(q->course.p

28、eacetime*0.4+q->course.experiment*0.3+q->course.final*0.3);</p><p>  cout<<endl;</p><p>  cout<<"課程的總評(píng)成績(jī):"<<q->course.total<<endl;</p><p>

29、  q->next=p->next;</p><p>  p->next=q;</p><p><b>  }</b></p><p>  void student::alter(student *s,int i)</p><p><b>  {</b></p>&l

30、t;p>  student *p;</p><p><b>  p=s;</b></p><p>  while((p->next!=NULL)&&(p->next->sno!=i))</p><p>  p=p->next;</p><p>  if(p->next=

31、=NULL)</p><p><b>  {</b></p><p>  cout<<"未找到學(xué)號(hào),修改失敗。"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p&g

32、t;<p><b>  else</b></p><p><b>  {</b></p><p>  cout<<"學(xué)生學(xué)號(hào):"<<p->next->sno<<endl;</p><p>  cout<<"學(xué)生姓名:&q

33、uot;<<p->next->name<<endl;</p><p>  cout<<"學(xué)生性別:"<<p->next->sex<<endl;</p><p>  cout<<"輸入平時(shí)成績(jī)";</p><p>  cin>&

34、gt;p->next->course.peacetime;</p><p>  cout<<"輸入實(shí)驗(yàn)成績(jī)";</p><p>  cin>>p->next->course.experiment;</p><p>  cout<<"輸入期末成績(jī)";</p>

35、<p>  cin>>p->next->course.final;</p><p>  p->next->course.total=static_cast<float>(p->next->course.peacetime*0.4+p->next->course.experiment*0.3+p->next->cour

36、se.final*0.3);</p><p>  cout<<endl;</p><p>  cout<<"課程的總評(píng)成績(jī):"<<p->next->course.total<<endl;</p><p><b>  }</b></p><p>

37、;<b>  }</b></p><p>  void student::deleted(student *s,int i)</p><p><b>  {</b></p><p>  student *p;</p><p><b>  p=s;</b></p>

38、<p>  while((p->next!=NULL)&&(p->next->sno!=i))</p><p><b>  {</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  if(p-&

39、gt;next==NULL)</p><p><b>  {</b></p><p>  cout<<"沒有該學(xué)號(hào)。"<<endl;return;</p><p><b>  }</b></p><p>  p->next=p->next-&g

40、t;next;</p><p><b>  }</b></p><p>  void student::seek(student *s,int i)</p><p><b>  {</b></p><p>  student *p;</p><p><b>  p=

41、s;</b></p><p>  while((p->next!=NULL)&&(p->next->sno!=i))</p><p>  p=p->next;</p><p>  if(p->next==NULL)</p><p><b>  {</b></

42、p><p>  cout<<"未找到該學(xué)生信息"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p&g

43、t;<b>  {</b></p><p>  cout<<"學(xué)生學(xué)號(hào):"<<p->next->sno<<endl;</p><p>  cout<<"學(xué)生姓名:"<<p->next->name<<endl;</p>&

44、lt;p>  cout<<"學(xué)生性別:"<<p->next->sex<<endl;</p><p>  cout<<"平時(shí)成績(jī)"<<p->next->course.peacetime<<endl;</p><p>  cout<<&quo

45、t;實(shí)驗(yàn)成績(jī)"<<p->next->course.experiment<<endl;</p><p>  cout<<"期末成績(jī)"<<p->next->course.final<<endl;</p><p>  cout<<"總評(píng)成績(jī):"<

46、<p->next->course.total<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void student::print(student *s)</p><p><b>  {<

47、;/b></p><p>  student *p;</p><p>  p=s->next;</p><p>  if(p==NULL)</p><p>  cout<<"當(dāng)前沒有學(xué)生信息。"<<endl;</p><p><b>  else<

48、/b></p><p><b>  do</b></p><p><b>  {</b></p><p>  cout<<"學(xué)生學(xué)號(hào):"<<p->sno<<endl;</p><p>  cout<<"學(xué)生姓名

49、:"<<p->name<<endl;</p><p>  cout<<"學(xué)生性別:"<<p->sex<<endl;</p><p>  cout<<"平時(shí)成績(jī)"<<p->course.peacetime<<endl;</p

50、><p>  cout<<"實(shí)驗(yàn)成績(jī)"<<p->course.experiment<<endl;</p><p>  cout<<"期末成績(jī)"<<p->course.final<<endl;</p><p>  cout<<"

51、總評(píng)成績(jī):"<<p->course.total<<endl;</p><p>  cout<<endl;</p><p>  p=p->next;</p><p>  }while(p!=NULL); </p><p><b>  }</b></p>

52、<p>  student *student::sort(student *s)</p><p><b>  {</b></p><p>  student *t,*m,*s1,*q;</p><p><b>  char y;</b></p><p>  t=new student;&

53、lt;/p><p>  t->next=NULL;</p><p>  q=s->next;</p><p>  if(q==NULL)</p><p>  cout<<"還沒有學(xué)生信息!"<<endl;</p><p><b>  else</b&g

54、t;</p><p><b>  do</b></p><p><b>  {</b></p><p><b>  m=t;</b></p><p>  s1=new student;</p><p>  s1->name=q->name;&

55、lt;/p><p>  s1->sex=q->sex;</p><p>  s1->sno=q->sno;</p><p>  s1->course.peacetime=q->course.peacetime;</p><p>  s1->course.experiment=q->course.ex

56、periment;</p><p>  s1->course.final=q->course.final;</p><p>  s1->course.total=q->course.total;</p><p>  while((m->next!=NULL)&&(m->next->course.total&g

57、t;s1->course.total))</p><p>  m=m->next;</p><p>  s1->next=m->next;</p><p>  m->next=s1;</p><p>  q=q->next;</p><p>  }while(q!=NULL);<

58、;/p><p>  cout<<"是否輸出學(xué)生成績(jī)排名?(y/n)";</p><p><b>  cin>>y;</b></p><p>  if(y=='y')</p><p>  sortprint(t);</p><p><b&

59、gt;  return t;</b></p><p><b>  }</b></p><p>  void student::sortprint(student *s)//輸出排名后的成績(jī)</p><p><b>  {</b></p><p>  student *t;</p&g

60、t;<p>  t=s->next;</p><p>  while(t!=NULL)</p><p><b>  {</b></p><p>  cout<<"學(xué)號(hào):"<<t->sno<<" 姓名:"<<t->name&l

61、t;<" 性別:"<<t->sex<<" 總評(píng):"<<t->course.total<<endl;</p><p>  t=t->next;</p><p><b>  }</b></p><p><b>  }</b

62、></p><p>  int main()</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p><b>  char y;</b></p><p>  student t;</p&g

63、t;<p>  student *hm1;</p><p>  student *hm;</p><p><b>  hm=NULL;</b></p><p><b>  hm1=NULL;</b></p><p><b>  loop:</b></p>

64、;<p>  cout<<"+++++++++++++學(xué)生成績(jī)管理+++++++++++++++ "<<endl;</p><p>  cout<<endl;</p><p>  cout<<" 1、輸入學(xué)生成績(jī)"<<endl;</p><p> 

65、 cout<<" 2、插入學(xué)生成績(jī)"<<endl;</p><p>  cout<<" 3、修改學(xué)生成績(jī)"<<endl;</p><p>  cout<<" 4、刪除個(gè)人信息"<<endl;</p><p>  cou

66、t<<" 5、查詢個(gè)人成績(jī)"<<endl;</p><p>  cout<<" 6、學(xué)生成績(jī)排名"<<endl;</p><p>  cout<<" 7、查詢?nèi)w信息"<<endl;</p><p>  cout<

67、;<" 8、查看成績(jī)排名"<<endl;</p><p>  cout<<endl;</p><p>  cout<<"輸入需要進(jìn)行操作的前面的序號(hào):";</p><p><b>  cin>>i;</b></p><p>

68、;<b>  switch(i)</b></p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  cout<<" 登記學(xué)生成績(jī)"<<endl;</p><p>  hm=t

69、.registed();</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  cout<<" 插入學(xué)生成績(jī)"<<endl;</p><p>  loop4: cout<&

70、lt;"輸入插入成績(jī)的學(xué)生的學(xué)號(hào):";</p><p><b>  cin>>j;</b></p><p>  t.insert(hm,j);</p><p>  cout<<"是否繼續(xù)插入學(xué)生成績(jī)?(y/n)";</p><p><b>  ci

71、n>>y;</b></p><p>  if(y=='y')</p><p>  goto loop4;</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  cout

72、<<" 修改學(xué)生成績(jī)"<<endl;</p><p>  loop1: cout<<"輸入修改成績(jī)的學(xué)生的學(xué)號(hào):";</p><p><b>  cin>>j;</b></p><p>  t.alter(hm,j);</p><

73、;p>  cout<<"是否繼續(xù)修改?(y/n)";</p><p><b>  cin>>y;</b></p><p>  if(y=='y')</p><p>  goto loop1;</p><p><b>  break;</b&

74、gt;</p><p><b>  case 4:</b></p><p>  cout<<" 刪除個(gè)人成績(jī)"<<endl;</p><p>  loop2: cout<<"輸入刪除成績(jī)的學(xué)生的學(xué)號(hào):";</p><p><b&

75、gt;  cin>>j;</b></p><p>  t.deleted(hm,j);</p><p>  cout<<"是否繼續(xù)刪除?(y/n)";</p><p><b>  cin>>y;</b></p><p>  if(y=='y

76、9;)</p><p>  goto loop2;</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  cout<<" 查詢個(gè)人成績(jī)"<<endl;</p><

77、p>  loop3: cout<<"輸入查詢成績(jī)的學(xué)生的學(xué)號(hào):";</p><p><b>  cin>>j;</b></p><p>  t.seek(hm,j);</p><p>  cout<<"是否繼續(xù)查詢學(xué)生成績(jī)?(y/n)";</p>

78、<p><b>  cin>>y;</b></p><p>  if(y=='y')</p><p>  goto loop3;</p><p><b>  break;</b></p><p><b>  case 6:</b><

79、;/p><p>  cout<<" 學(xué)生成績(jī)排名"<<endl;</p><p>  hm1=t.sort(hm);</p><p><b>  break;</b></p><p><b>  case 7:</b></p><p&

80、gt;  cout<<" 查詢?nèi)w信息"<<endl;</p><p>  t.print(hm);</p><p><b>  break;</b></p><p><b>  case 8:</b></p><p>  if(hm1!=NULL)

81、</p><p><b>  {</b></p><p>  cout<<" 查看成績(jī)排名"<<endl;</p><p>  t.sortprint(hm1);</p><p><b>  }</b></p><p><

82、;b>  else</b></p><p>  cout<<"還未進(jìn)行排名";</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  cout<<"輸入有誤&

83、quot;;</p><p><b>  }</b></p><p>  cout<<endl<<"是否返回主頁面繼續(xù)管理操作?"<<endl;</p><p>  cout<<"yes or no (y/n)?"<<endl;</p&g

84、t;<p><b>  cin>>y;</b></p><p>  if(y=='y')</p><p><b>  {</b></p><p>  system("cls");</p><p>  goto loop;}</p&g

85、t;<p><b>  else</b></p><p><b>  {</b></p><p>  system("cls");</p><p>  cout<<endl<<endl<<endl<<endl<<endl<&

86、lt;endl;</p><p>  cout<<endl<<setw(6)<<"****************歡迎下次光臨!**************"<<endl;</p><p>  system("pause");</p><p><b>  return

87、0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  程序測(cè)試</b></p><p><b>  程序界面</b></p><p><b>

88、  輸入學(xué)生成績(jī)</b></p><p>  插入學(xué)生成績(jī)(插入學(xué)號(hào)為05的學(xué)生的學(xué)生信息及成績(jī)信息)</p><p><b>  查看結(jié)果:</b></p><p><b>  修改學(xué)生成績(jī)</b></p><p><b>  修改后的</b></p>

89、<p><b>  刪除個(gè)人信息</b></p><p>  已刪除學(xué)號(hào)為1的學(xué)生信息</p><p><b>  查詢個(gè)人成績(jī)</b></p><p><b>  學(xué)生成績(jī)排名</b></p><p><b>  查詢?nèi)w信息</b><

90、;/p><p><b>  查看成績(jī)排名</b></p><p><b>  總結(jié)</b></p><p>  通過這次的課程設(shè)計(jì),知道做一個(gè)程序設(shè)計(jì),真的不容易。很多都不懂得怎么去做,雖然最后做完了這個(gè)課程設(shè)計(jì),但是有些并不能滿足老師的要求,而且因?yàn)橛泻芏嗖欢牡胤?,所以花了很多時(shí)間去看書及請(qǐng)教同學(xué)。雖然不能說這個(gè)程序是完全

91、自己做的,但是我也有很認(rèn)真的去尋找錯(cuò)誤并修改。我覺得這次自己也有一點(diǎn)點(diǎn)進(jìn)步的,當(dāng)自己發(fā)現(xiàn)了錯(cuò)誤,會(huì)修改了也是一種進(jìn)步吧。,至少努力沒白費(fèi),還是學(xué)到了一點(diǎn)知識(shí)的。</p><p>  開始的時(shí)候本來是想要用數(shù)組儲(chǔ)存學(xué)生信息及成績(jī)信息,可是做了很久,又問同學(xué),還是不會(huì)做,最后還是采用同學(xué)的意見,用鏈表儲(chǔ)存信息。雖然有些知識(shí)懂得,卻不會(huì)用。看來還是自己平時(shí)的基本功不扎實(shí),課本知識(shí)沒有吃透。做程序的過程中,還要翻閱之前學(xué)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論