數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理問題_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(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>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p>  題 目: 學(xué)生成績(jī)管理問題 </p><p>  學(xué) 院: </p><p>  班 級(jí): 數(shù)學(xué)11-1班 </p><p>  學(xué) 生 姓 名:

2、 </p><p>  學(xué) 生 學(xué) 號(hào): </p><p>  指 導(dǎo) 教 師: </p><p>  2012年 12月 5日</p><p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p><b>  摘要</b&

3、gt;</p><p>  針對(duì)學(xué)生成績(jī)管理問題,學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)以后,嘗試做了學(xué)生成績(jī)管理系統(tǒng)。學(xué)生成績(jī)管理是學(xué)校教務(wù)管理的重要組成部分,其處理信息量很大,本設(shè)計(jì)是對(duì)學(xué)生的成績(jī)管理做一個(gè)簡(jiǎn)單的模擬。</p><p>  本文將利用數(shù)據(jù)結(jié)構(gòu)所學(xué)知識(shí),對(duì)學(xué)生成績(jī)管理系統(tǒng)做了嘗試,這個(gè)程序的主要功能是輸入學(xué)生的學(xué)號(hào)、姓名對(duì)其進(jìn)行存儲(chǔ),在存儲(chǔ)后可以對(duì)學(xué)生的成績(jī)按學(xué)號(hào)和姓名進(jìn)行查尋。該系統(tǒng)具有存貯學(xué)

4、生數(shù)據(jù),按學(xué)號(hào)、姓名查詢,列出學(xué)生成績(jī)和統(tǒng)計(jì)功能。使用方法:系統(tǒng)輸入數(shù)據(jù)后,將在當(dāng)前目錄中建立一個(gè)名為date文件,用于保存輸入的數(shù)據(jù)。學(xué)號(hào)輸入只能用數(shù)字輸入,并且學(xué)號(hào)只能是10位。姓名輸入符合中國(guó)人的姓名,只能用中文,且最長(zhǎng)為5個(gè)漢字。</p><p>  《學(xué)生成績(jī)管理系統(tǒng)》是對(duì)學(xué)生的成績(jī)進(jìn)行修改和管理,而且方便快速,這個(gè)程序雖然簡(jiǎn)單,但是可以作為老師的輔助軟件,對(duì)學(xué)生的各種成績(jī)進(jìn)行管理。</p>

5、<p>  通過課程設(shè)計(jì)培養(yǎng)了我的動(dòng)手能力以及綜合運(yùn)用所學(xué)的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)理論,基礎(chǔ)知識(shí),基本技能,進(jìn)行程序分析和程序開發(fā),提高在實(shí)際開發(fā)中解決問題的能力,達(dá)到了能夠利用數(shù)據(jù)結(jié)構(gòu)結(jié)合C++語言進(jìn)行應(yīng)用程序的規(guī)劃,分析,設(shè)計(jì)和實(shí)施,更能進(jìn)一步使我對(duì)這門語言有深刻的理解和更好的得到鞏固,更能對(duì)我所學(xué)的知識(shí)得到檢驗(yàn)。</p><p>  由于是第一次用C++編寫,所以水平有限此系統(tǒng)還有許多不夠完整和嚴(yán)密性,

6、敬請(qǐng)老師指正!</p><p>  關(guān)鍵詞 學(xué)生成績(jī)管理,數(shù)組,單鏈表</p><p><b>  目錄</b></p><p><b>  摘要I</b></p><p>  1 課程設(shè)計(jì)題目1</p><p><b>  2 需求分析1</b&g

7、t;</p><p><b>  3 概要設(shè)計(jì)1</b></p><p><b>  4 詳細(xì)設(shè)計(jì)1</b></p><p>  5 用戶使用說明20</p><p><b>  6 測(cè)試結(jié)果21</b></p><p><b>  7

8、 總結(jié)23</b></p><p><b>  參考文獻(xiàn)23</b></p><p><b>  學(xué)生成績(jī)管理問題</b></p><p><b>  1. 課程設(shè)計(jì)題目</b></p><p>  學(xué)生成績(jī)管理是學(xué)校教務(wù)管理的重要組成部分,其處理信息量很大,

9、本設(shè)計(jì)是對(duì)學(xué)生的成績(jī)管理做一個(gè)簡(jiǎn)單的模擬,用菜單選擇操作方式完成下列主要功能:</p><p>  (1) 登記學(xué)生成績(jī);</p><p>  (2) 查詢學(xué)生成績(jī);</p><p>  (3) 插入學(xué)生成績(jī);</p><p>  (4) 刪除學(xué)生成績(jī); </p><p>  要求對(duì)每個(gè)功能分別用函數(shù)實(shí)現(xiàn)。</p

10、><p><b>  2. 需求分析</b></p><p>  (1) 輸入數(shù)據(jù)為整型,學(xué)生信息不超過100條;</p><p>  (2) 輸出數(shù)據(jù)為整型;</p><p>  (3) 該系統(tǒng)可以實(shí)現(xiàn)學(xué)生信息增加,刪除,查找,排序,保存功能。</p><p>  3. 概要設(shè)計(jì) </p&

11、gt;<p>  為了實(shí)現(xiàn)以上功能,可從3個(gè)方面著手設(shè)計(jì)。</p><p>  (1) 主界面設(shè)計(jì),設(shè)計(jì)一個(gè)含有多個(gè)菜單項(xiàng)的主控菜單。</p><p>  (2) 存儲(chǔ)單元設(shè)計(jì)</p><p>  (3) 系統(tǒng)功能設(shè)計(jì)</p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p> 

12、 主要包括各部分函數(shù)功能,說明及流程圖,源程序。</p><p>  (1) 主函數(shù)int main()主要顯示主菜單;</p><p>  信息增加模塊void cla::sadd()主要用于學(xué)生成績(jī)的錄入;</p><p>  信息保存模塊void ssave()主要用于學(xué)生成績(jī)的保存;</p><p>  信息刪除模塊void srem

13、ove()主要用于信息刪除;</p><p>  信息排序模塊void staxis(),可根據(jù)不同情況進(jìn)行排序; </p><p>  信息讀取模塊void sload()可以顯示主菜單;</p><p>  信息查詢模塊void ssearch()可根據(jù)學(xué)號(hào)姓名進(jìn)行查找;</p><p>  信息修改模塊void samend()可用于信

14、息修改。</p><p>  (2) 成績(jī)管理系統(tǒng)重要函數(shù)調(diào)用調(diào)用關(guān)系如圖所示。</p><p>  其中成績(jī)排序模塊包括學(xué)號(hào)排序及數(shù)學(xué),語文,英語及總成績(jī)排序。 </p><p>  成績(jī)查詢模塊可根據(jù)學(xué)號(hào),姓名查詢。</p><p>  (3) 源程序 </p><p>  #include<ios

15、tream></p><p>  #include<iomanip> </p><p>  #include<fstream> </p><p>  #include<string> </p><p>  using namespace std; </p><p>  #de

16、fine max 100; </p><p>  class student </p><p><b>  { </b></p><p><b>  public: </b></p><p>  student *next; </p><p><b>  publi

17、c: </b></p><p>  string name;//姓名 </p><p>  long num;//學(xué)號(hào) </p><p>  float x,y,z;//數(shù)學(xué),語文,英語 </p><p>  float AA;//總分 </p><p>  void play()</p>&

18、lt;p>  { cout<<name<<"學(xué)生的學(xué)號(hào)是"<<num<<",數(shù)學(xué):"<<x<<",語文:"<<y<<",英 語:"<<z<<",總分:"<<AA<<endl;}; <

19、;/p><p>  student(string sname,long snum,int sx,int sy,int sz) </p><p><b>  { </b></p><p>  name=sname; </p><p>  num=snum; </p><p><b>  x=s

20、x; </b></p><p><b>  y=sy; </b></p><p><b>  z=sz; </b></p><p><b>  } </b></p><p><b>  }; </b></p><p> 

21、 class cla </p><p><b>  { </b></p><p><b>  public: </b></p><p>  cla()//構(gòu)造函數(shù) </p><p><b>  { </b></p><p><b>  stu

22、=0; </b></p><p><b>  sload(); </b></p><p><b>  } </b></p><p>  ~cla()//析構(gòu)函數(shù) </p><p><b>  { </b></p><p>  student

23、*p; </p><p><b>  p=stu; </b></p><p><b>  while(p) </b></p><p><b>  { </b></p><p>  p=p->next; </p><p>  delete stu;

24、</p><p><b>  stu=p; </b></p><p><b>  } </b></p><p><b>  stu=0; </b></p><p><b>  } </b></p><p>  void sadd()

25、; //添加 </p><p>  void sremove(); //刪除 </p><p>  void samend(); //修改 </p><p>  void ssearch(); //查詢 </p><p>  void staxis(); //排序 </p><p>  void ssave(); //

26、保存 </p><p>  void sload(); //讀取 </p><p><b>  //排序函數(shù) </b></p><p>  void pxh(); //按學(xué)號(hào)排序 </p><p>  void psx(); //按數(shù)學(xué)成績(jī)排序 </p><p>  void pyw(); //

27、按語文成績(jī)排序 </p><p>  void pyy(); //按英語成績(jī)排序 </p><p>  void pAA(); //按總成績(jī)排序 </p><p><b>  private: </b></p><p>  student *stu; //頭接點(diǎn) </p><p><b>

28、;  }; </b></p><p>  void cla::sadd()//添加 </p><p><b>  { </b></p><p>  student *q; </p><p>  string name1; </p><p>  long num1; </p>

29、<p>  int x1,y1,z1; </p><p>  system("cls"); </p><p>  cout<<"\n **增加的學(xué)生** \n"<<endl; </p><p>  cout<<"請(qǐng)輸入學(xué)生的(中間用空格間隔) "<&l

30、t;endl; </p><p>  cout<<"姓名 學(xué)號(hào) 數(shù)學(xué)成績(jī) 語文成績(jī) 英語成績(jī):"<<endl; </p><p>  cin>>name1>>num1>>x1>>y1>>z1; </p><p>  q=new student(name1,num1

31、,x1,y1,z1); </p><p>  q->next=0; </p><p>  q->AA=x1+y1+z1; </p><p><b>  if(stu) </b></p><p><b>  { </b></p><p>  student *t;

32、</p><p><b>  t=stu; </b></p><p>  if(t->num==num1) </p><p><b>  { </b></p><p>  cout<<"學(xué)號(hào)已存在,請(qǐng)重新輸入"<<endl; </p>

33、<p><b>  return; </b></p><p><b>  } </b></p><p>  while(t->next) </p><p><b>  { </b></p><p>  if(t->num==num1) </p>

34、<p><b>  { </b></p><p>  cout<<"學(xué)號(hào)已存在,請(qǐng)重新輸入"<<endl; </p><p><b>  return; </b></p><p><b>  } </b></p><p>

35、;  t=t->next; </p><p><b>  } </b></p><p>  t->next=q; </p><p><b>  } </b></p><p><b>  else </b></p><p><b> 

36、 { </b></p><p><b>  stu=q; </b></p><p><b>  } </b></p><p>  cout<<"輸入完畢"<<endl; </p><p><b>  } </b></

37、p><p>  void cla::sremove()//刪除 </p><p><b>  { </b></p><p>  system("cls"); </p><p>  int num1; </p><p>  cout<<"\n** 刪除學(xué)生信息

38、**\n"; </p><p>  cout<<"請(qǐng)輸入想要?jiǎng)h除學(xué)生的學(xué)號(hào):"; </p><p>  cin>>num1; </p><p>  //查找要?jiǎng)h除的結(jié)點(diǎn) </p><p>  student *p1,*p2; </p><p><b>  

39、p1=stu; </b></p><p>  while(p1) </p><p><b>  { </b></p><p>  if(p1->num==num1) </p><p><b>  break; </b></p><p><b>  

40、else </b></p><p><b>  { </b></p><p><b>  p2=p1; </b></p><p>  p1=p1->next; </p><p><b>  } </b></p><p><b>

41、;  } </b></p><p><b>  //刪除結(jié)點(diǎn) </b></p><p>  if(p1!=NULL)//若找到結(jié)點(diǎn),則刪除 </p><p><b>  { </b></p><p>  p1->play(); </p><p>  cout

42、<<"確定刪除嗎?[Y/N]"<<endl; </p><p>  char c;cin>>c; </p><p>  if(toupper(c)!='Y') return; </p><p>  if(p1==stu) //若要?jiǎng)h除的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) </p><p>

43、<b>  { </b></p><p>  stu=p1->next; </p><p>  delete p1; </p><p><b>  } </b></p><p>  else //若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn) </p><p><b>  { &l

44、t;/b></p><p>  p2->next=p1->next; </p><p>  delete p1; </p><p><b>  } </b></p><p>  cout<<"找到學(xué)號(hào)為"<<num1<<"的學(xué)生,并刪除\

45、n"; </p><p><b>  } </b></p><p>  else //未找到結(jié)點(diǎn) </p><p>  cout<<"未找到想要?jiǎng)h除的學(xué)生!\n"; </p><p><b>  } </b></p><p>  vo

46、id cla::samend()//修改 </p><p><b>  { </b></p><p>  system("cls"); </p><p>  long num1; </p><p>  cout<<"\n** 修改學(xué)生信息 **\n"; </p&g

47、t;<p>  cout<<"輸入要修改學(xué)生的學(xué)號(hào)"; </p><p>  cin>>num1; </p><p>  //查找要修改的結(jié)點(diǎn) </p><p>  student *p1,*p2; </p><p><b>  p1=stu; </b></

48、p><p>  while(p1) </p><p><b>  { </b></p><p>  if(p1->num==num1) </p><p><b>  break; </b></p><p><b>  else </b></p&g

49、t;<p><b>  { </b></p><p><b>  p2=p1; </b></p><p>  p1=p1->next; </p><p><b>  } </b></p><p><b>  } </b></p&g

50、t;<p>  if(p1!=NULL) </p><p><b>  { </b></p><p>  cout<<"學(xué)號(hào)是"<<num1<<"的學(xué)生的信息"<<endl; </p><p>  cout<<"姓名 &q

51、uot;<<p1->name<<"數(shù)學(xué)"<<p1->x<<"語文"<<p1->y<<"英語"<<p1->z<<endl; </p><p>  cout<<"請(qǐng)輸入修改后的信息:姓名 數(shù)學(xué)成績(jī) 語文成績(jī) 英語成績(jī)&

52、quot;<<endl; </p><p>  cin>>p1->name>>p1->x>>p1->y>>p1->z; </p><p>  p1->AA=p1->x+p1->y+p1->z; </p><p>  cout<<"修改成功

53、"<<endl; </p><p><b>  } </b></p><p>  else //未找到接點(diǎn) </p><p>  cout<<"未找到!\n"; </p><p><b>  } </b></p><p>

54、  void cla::ssearch()//查詢 </p><p><b>  { </b></p><p>  system("cls"); </p><p>  cout<<"\n** 查詢學(xué)生信息 **\n"<<endl; </p><p>  co

55、ut<<"請(qǐng)輸入查詢方式:"<<endl; </p><p>  cout<<"1.按學(xué)號(hào)查詢"<<endl; </p><p>  cout<<"2.按姓名查詢"<<endl; </p><p>  cout<<"

56、;3.返回"<<endl; </p><p>  char c; cin>>c; </p><p>  switch (c) </p><p><b>  { </b></p><p>  case '1': </p><p><b> 

57、 { </b></p><p>  long num1; </p><p>  cout<<"要查詢的學(xué)號(hào)"<<endl; </p><p>  cin>>num1; </p><p>  //查找要查詢的結(jié)點(diǎn) </p><p>  student *

58、p1,*p2; </p><p><b>  p1=stu; </b></p><p>  while(p1) </p><p><b>  { </b></p><p>  if(p1->num==num1) </p><p><b>  break; &l

59、t;/b></p><p><b>  else </b></p><p><b>  { </b></p><p><b>  p2=p1; </b></p><p>  p1=p1->next; </p><p><b>  }

60、 </b></p><p><b>  } </b></p><p>  if(p1!=NULL) </p><p><b>  { </b></p><p>  cout<<"學(xué)號(hào)是"<<num1<<"的學(xué)生的信息&qu

61、ot;<<endl; </p><p>  cout<<"姓名:"<<p1->name<<" 數(shù)學(xué):"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl;

62、</p><p>  cout<<"查詢完畢..."; </p><p><b>  } </b></p><p>  else //未找到接點(diǎn) </p><p>  cout<<"未找到!\n"; </p><p><b>

63、;  break; </b></p><p><b>  } </b></p><p>  case '2': </p><p><b>  { </b></p><p>  string name1; </p><p>  cout<<

64、;"要查詢的學(xué)生姓名"<<endl; </p><p>  cin>>name1; </p><p>  //查找要查詢的結(jié)點(diǎn) </p><p>  student *p1,*p2; </p><p><b>  p1=stu; </b></p><p>

65、;  while(p1) </p><p><b>  { </b></p><p>  if(p1->name==name1) </p><p><b>  break; </b></p><p><b>  else </b></p><p>

66、<b>  { </b></p><p><b>  p2=p1; </b></p><p>  p1=p1->next; </p><p><b>  } </b></p><p><b>  } </b></p><p>

67、  if(p1!=NULL) </p><p><b>  { </b></p><p>  cout<<name1<<"的學(xué)生的信息"<<endl; </p><p>  cout<<"學(xué)號(hào):"<<p1->num<<"

68、; 數(shù)學(xué):"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl; </p><p>  cout<<"查詢完畢..."; </p><p><b>  } </b>

69、;</p><p>  else //未找到接點(diǎn) </p><p>  cout<<"未找到!\n"; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  case '3&

70、#39;: return; </p><p><b>  } </b></p><p><b>  } </b></p><p>  void cla::pxh() //按學(xué)號(hào)排序 </p><p><b>  { </b></p><p>  stud

71、ent *p1,*p2; </p><p><b>  int n; </b></p><p><b>  p1=stu; </b></p><p><b>  n=1; </b></p><p>  while(p1->next) </p><p&g

72、t;<b>  { n++; </b></p><p>  p1=p1->next; </p><p><b>  } </b></p><p>  cout<<"共有"<<n<<"條信息..."<<endl; </p>

73、;<p><b>  int i; </b></p><p><b>  p1=stu; </b></p><p>  for(i=1;i<n;i++) </p><p><b>  { </b></p><p><b>  p1=stu; <

74、;/b></p><p>  if (p1->num>p1->next->num) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p><b>  { </b></p><p>  p2=p1->next; </p><p>  p1->next=p1->next->ne

75、xt; </p><p>  p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b>  stu=p2; </b></p><p><b>  } </b></p><p><b>  p1=stu; </b></p><p>  wh

76、ile(p1->next->next) //中間的交換 </p><p><b>  { </b></p><p><b>  p2=p1; </b></p><p>  p1=p1->next; </p><p>  if(p1->num>p1->next-&g

77、t;num) </p><p><b>  { </b></p><p>  p2->next=p1->next; </p><p>  p1->next=p1->next->next; </p><p>  p2->next->next=p1; </p><

78、p>  p1=p2->next; //交換 </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  p1=stu; </b></p>

79、<p><b>  do </b></p><p><b>  { </b></p><p>  p1->play(); </p><p>  p1=p1->next; </p><p><b>  }</b></p><p>

80、  while(p1); </p><p><b>  } </b></p><p>  void cla::psx()//按數(shù)學(xué)成績(jī)排序 </p><p><b>  { </b></p><p>  student *p1,*p2; </p><p><b> 

81、 int n; </b></p><p><b>  p1=stu; </b></p><p><b>  n=1; </b></p><p>  while(p1->next) </p><p><b>  { n++; </b></p>&

82、lt;p>  p1=p1->next; </p><p><b>  } </b></p><p>  cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b>  int i; </b><

83、;/p><p><b>  p1=stu; </b></p><p>  for(i=1;i<n;i++) </p><p>  { p1=stu; </p><p>  if (p1->x>p1->next->x) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p>  {

84、 p2=p1->next; </p><p>  p1->next=p1->next->next; </p><p>  p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b>  stu=p2; </b></p><p><b>  } </b></

85、p><p><b>  p1=stu; </b></p><p>  while(p1->next->next) //中間的交換 </p><p><b>  { p2=p1; </b></p><p>  p1=p1->next; </p><p>  if(

86、p1->x>p1->next->x) </p><p><b>  { </b></p><p>  p2->next=p1->next; </p><p>  p1->next=p1->next->next; </p><p>  p2->next->n

87、ext=p1; </p><p>  p1=p2->next; //交換 </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  p1=s

88、tu; </b></p><p><b>  do </b></p><p><b>  { </b></p><p>  p1->play(); </p><p>  p1=p1->next; </p><p><b>  }</b&

89、gt;</p><p>  while(p1); </p><p><b>  } </b></p><p>  void cla::pyw()//按語文成績(jī)排序 </p><p><b>  { </b></p><p>  student *p1,*p2; </p&

90、gt;<p><b>  int n; </b></p><p><b>  p1=stu; </b></p><p><b>  n=1; </b></p><p>  while(p1->next) </p><p><b>  { n++;&

91、lt;/b></p><p>  p1=p1->next;</p><p><b>  } </b></p><p>  cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b> 

92、 int i; </b></p><p><b>  p1=stu; </b></p><p>  for(i=1;i<n;i++) </p><p>  { p1=stu; </p><p>  if (p1->y>p1->next->y) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 <

93、;/p><p>  { p2=p1->next; </p><p>  p1->next=p1->next->next; </p><p>  p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b>  stu=p2; </b></p><p><b&g

94、t;  } </b></p><p><b>  p1=stu; </b></p><p>  while(p1->next->next) //中間的交換 </p><p><b>  { p2=p1; </b></p><p>  p1=p1->next; </

95、p><p>  if(p1->y>p1->next->y) </p><p><b>  { </b></p><p>  p2->next=p1->next; </p><p>  p1->next=p1->next->next; </p><p&g

96、t;  p2->next->next=p1; </p><p>  p1=p2->next; //交換 </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><

97、;p><b>  p1=stu; </b></p><p><b>  do </b></p><p><b>  { </b></p><p>  p1->play(); </p><p>  p1=p1->next; </p><p&g

98、t;<b>  }</b></p><p>  while(p1); </p><p><b>  } </b></p><p>  void cla::pyy()//按英語成績(jī)排序 </p><p><b>  { </b></p><p>  stu

99、dent *p1,*p2; </p><p><b>  int n; </b></p><p><b>  p1=stu; </b></p><p><b>  n=1; </b></p><p>  while(p1->next) </p><p&

100、gt;<b>  { </b></p><p>  n++; p1=p1->next; } </p><p>  cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b>  int i; </b>&

101、lt;/p><p><b>  p1=stu; </b></p><p>  for(i=1;i<n;i++) </p><p><b>  { </b></p><p><b>  p1=stu; </b></p><p>  if (p1->

102、z>p1->next->z) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p><b>  { </b></p><p>  p2=p1->next; </p><p>  p1->next=p1->next->next; </p><p>  p2->next=p1; /

103、/頭結(jié)點(diǎn)交換 </p><p><b>  stu=p2; </b></p><p><b>  } </b></p><p><b>  p1=stu; </b></p><p>  while(p1->next->next) //中間的交換 </p>

104、<p><b>  { </b></p><p><b>  p2=p1; </b></p><p>  p1=p1->next; </p><p>  if(p1->z>p1->next->z) </p><p><b>  { </b&

105、gt;</p><p>  p2->next=p1->next; </p><p>  p1->next=p1->next->next; </p><p>  p2->next->next=p1; </p><p>  p1=p2->next; //交換 </p><p>

106、;<b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  p1=stu; </b></p><p><b>  do </b></p>&

107、lt;p><b>  { </b></p><p>  p1->play(); </p><p>  p1=p1->next; </p><p><b>  } </b></p><p>  while(p1); </p><p><b>  }

108、</b></p><p>  void cla::pAA()//按總分排序 </p><p><b>  { </b></p><p>  student *p1,*p2; </p><p><b>  int n; </b></p><p><b> 

109、 p1=stu; </b></p><p><b>  n=1; </b></p><p>  while(p1->next) </p><p><b>  { </b></p><p>  n++; p1=p1->next; </p><p><

110、;b>  } </b></p><p>  cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b>  int i; </b></p><p><b>  p1=stu; </b><

111、;/p><p>  for(i=1;i<n;i++) </p><p>  { p1=stu; </p><p>  if (p1->AA>p1->next->AA) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p><b>  { </b></p><p>  p2=p1

112、->next; </p><p>  p1->next=p1->next->next; </p><p>  p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b>  stu=p2; </b></p><p><b>  } </b></p>

113、<p><b>  p1=stu; </b></p><p>  while(p1->next->next) //中間的交換 </p><p><b>  { </b></p><p><b>  p2=p1; </b></p><p>  p1=p1-

114、>next; </p><p>  if(p1->AA>p1->next->AA) </p><p><b>  { </b></p><p>  p2->next=p1->next; </p><p>  p1->next=p1->next->next; &l

115、t;/p><p>  p2->next->next=p1; </p><p>  p1=p2->next; //交換 </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b&g

116、t;</p><p><b>  p1=stu; </b></p><p><b>  do </b></p><p><b>  { </b></p><p>  p1->play(); </p><p>  p1=p1->next; &l

117、t;/p><p><b>  }</b></p><p>  while(p1); </p><p><b>  } </b></p><p>  void cla::staxis()//排序 </p><p><b>  { </b></p>

118、<p>  system("cls"); </p><p><b>  char c; </b></p><p>  cout<<"請(qǐng)選擇以何種方式排序:"<<endl; </p><p>  cout<<"1……以學(xué)號(hào)排序"<&l

119、t;endl; </p><p>  cout<<"2……以數(shù)學(xué)成績(jī)排序"<<endl; </p><p>  cout<<"3……以語文成績(jī)排序"<<endl; </p><p>  cout<<"4……以英語成績(jī)排序"<<endl;

120、 </p><p>  cout<<"5……以總分排序"<<endl; </p><p>  cout<<"6……返回"<<endl; </p><p>  cout<<"請(qǐng)選擇(1-6)"<<endl; </p><

121、;p><b>  cin>>c; </b></p><p>  switch (c) </p><p><b>  { </b></p><p>  case '1':pxh(); break; </p><p>  case '2':psx();

122、break; </p><p>  case '3':pyw(); break; </p><p>  case '4':pyy(); break; </p><p>  case '5':pAA(); break; </p><p>  case '6':return; <

123、;/p><p><b>  } </b></p><p><b>  } </b></p><p>  void cla::ssave() //保存到文件 </p><p><b>  { </b></p><p>  system("cls&qu

124、ot;); </p><p><b>  char c; </b></p><p>  cout<<"\n保存學(xué)生信息(將覆蓋原文件),是否繼續(xù)?[Y/N]:"; </p><p><b>  cin>>c; </b></p><p>  if(toupp

125、er(c)!='Y') return; </p><p>  ofstream tfile("date.txt",ios_base::binary); </p><p>  student *p=stu; </p><p>  while(p)// 寫入文件 </p><p><b>  { &l

126、t;/b></p><p>  tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z; </p>&l

127、t;p>  tfile<<endl; </p><p>  p=p->next; </p><p><b>  } </b></p><p>  tfile.close(); </p><p>  cout<<"保存完畢..."<<endl; </

128、p><p><b>  } </b></p><p>  void cla::sload() //讀取 </p><p><b>  { </b></p><p>  student *p; </p><p><b>  p=stu; </b></p&

129、gt;<p><b>  while(p) </b></p><p><b>  { </b></p><p>  stu=p->next; </p><p>  delete p; </p><p><b>  p=stu; </b></p>

130、<p><b>  } </b></p><p>  ifstream tfile("date.txt",ios_base::binary); </p><p>  string name1; </p><p>  long num1; </p><p>  int x1,y1,z1; &

131、lt;/p><p>  tfile>>name1>>num1>>x1>>y1>>z1; </p><p>  while(tfile.good()) </p><p><b>  { </b></p><p><b>  //創(chuàng)建學(xué)生接點(diǎn) </b&g

132、t;</p><p>  student *s; </p><p><b>  s=stu; </b></p><p>  s=new student(name1,num1,x1,y1,z1); </p><p>  s->next=0; </p><p>  s->AA=x1+y1+

133、z1; </p><p>  if(stu) //若已經(jīng)存在結(jié)點(diǎn) </p><p><b>  { </b></p><p>  student *p2; </p><p><b>  p2=stu; </b></p><p>  while(p2->next) //查

134、找尾結(jié)點(diǎn) </p><p><b>  { </b></p><p>  p2=p2->next; </p><p><b>  } </b></p><p>  p2->next=s; //連接 </p><p><b>  } </b>&

135、lt;/p><p>  else //若不存在結(jié)點(diǎn)(表空) </p><p><b>  { </b></p><p>  stu=s; //連接 </p><p><b>  } </b></p><p>  tfile>>name1>>num1>

136、>x1>>y1>>z1; </p><p><b>  } </b></p><p>  tfile.close(); </p><p>  cout<<"\n學(xué)生信息已經(jīng)裝入...\n"; </p><p><b>  } </b>&l

137、t;/p><p>  int main() </p><p>  { system ("color 3f");</p><p>  system ("mode con:cols=1000"); </p><p><b>  char c; </b></p><p&g

138、t;<b>  cla a; </b></p><p><b>  do </b></p><p><b>  { </b></p><p>  cout<<"\n 學(xué) 生 成 績(jī) 管 理 系 統(tǒng) \n"; </p><p>  cout<

139、<"**************************************\n"; </p><p>  cout<<" 作者:數(shù)學(xué)11-1班2011027040:任樹成\n"; </p><p>  cout<<" 1……增加學(xué)生 \n"; </p><p>  co

140、ut<<" 2……刪除學(xué)生 \n"; </p><p>  cout<<" 3……修改學(xué)生 \n"; </p><p>  cout<<" 4……查詢學(xué)生信息 \n"; </p><p>  cout<<" 5……排序 \n"; </

141、p><p>  cout<<" 6……保存信息 \n"; </p><p>  cout<<" 7……讀取信息 \n"; </p><p>  cout<<" 8……退出 \n"; </p><p>  cout<<"******

142、********************************\n"; </p><p>  cout<<"請(qǐng)選擇(1-8):"; </p><p><b>  cin>>c; </b></p><p>  switch(c) </p><p><b> 

143、 { </b></p><p>  case '1': a.sadd();break; </p><p>  case '2': a.sremove();break; </p><p>  case '3': a.samend();break; </p><p>  case 

144、9;4': a.ssearch();break; </p><p>  case '5': a.staxis();break; </p><p>  case '6': a.ssave();break; </p><p>  case '7': a.sload();break; </p><

145、p><b>  } </b></p><p><b>  } </b></p><p>  while(c!='8'); </p><p><b>  return 0;</b></p><p><b>  }</b></p&g

146、t;<p><b>  5. 用戶使用說明</b></p><p>  進(jìn)入本系統(tǒng)之后,隨即顯示系統(tǒng)主菜單頁面。用戶可在該界面下輸入各子菜單前對(duì)應(yīng)的數(shù)字并按回車鍵,執(zhí)行相應(yīng)子菜單命令。</p><p>  查詢學(xué)生信息都是通過輸入編號(hào)并按回車鍵實(shí)現(xiàn)的,成績(jī)之間用空格隔開。學(xué)號(hào)輸入只能用數(shù)字輸入,并且學(xué)號(hào)只能是10位。姓名輸入符合中國(guó)人的姓名,只能用中文,

147、且最長(zhǎng)為5個(gè)漢字。</p><p><b>  6.測(cè)試結(jié)果</b></p><p>  系統(tǒng)運(yùn)行主界面如圖1所示。</p><p>  圖1學(xué)生成績(jī)管理系統(tǒng)界面</p><p>  在主菜單下,用戶輸入1后按回車鍵,運(yùn)行結(jié)果如圖2所示。</p><p>  圖2學(xué)生成績(jī)?cè)黾咏缑?lt;/p>

148、;<p>  在主菜單下,用戶輸入6后按回車鍵,運(yùn)行結(jié)果如圖3所示。</p><p>  圖3學(xué)生成績(jī)保存界面</p><p>  在主菜單下,用戶輸入4后按回車鍵,運(yùn)行結(jié)果如圖4所示。</p><p>  圖4學(xué)生成績(jī)查詢界面</p><p>  (4) 在主菜單下,用戶輸入5后按回車鍵,運(yùn)行結(jié)果如圖5所示。</p>

149、;<p>  圖5學(xué)生成績(jī)排序界面</p><p>  在主菜單下,用戶輸入3后按回車鍵,運(yùn)行結(jié)果如圖6所示。</p><p>  圖6學(xué)生修改排序界面</p><p>  (6) 在主菜單下,用戶輸入2后按回車鍵,運(yùn)行結(jié)果如圖7所示。</p><p>  圖7學(xué)生修改刪除界面</p><p>  (7)

150、 在主菜單下,用戶輸入8后按回車鍵,退出。</p><p><b>  7. 總結(jié)</b></p><p>  通過本次的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),讓我學(xué)會(huì)了把書本上的知識(shí)應(yīng)用到了實(shí)際中來。為了能更好的挑戰(zhàn)自己,我還在在完成老師要求的基礎(chǔ)上,增加了保存及用多種方式排序的子程序。雖然這一周中有過挫折和坎坷,有的問題一直到了最后才被解決,但是我認(rèn)為這未必就不是好事,這樣能鍛煉我的

151、意志,磨練我的耐心,失敗是成功之母,這話一點(diǎn)都沒錯(cuò),沒有失敗就沒有成功。</p><p><b>  參考文獻(xiàn)</b></p><p>  1.《C++程序設(shè)計(jì)》 錢能 清華大學(xué)出版社</p><p>  2.《C++程序設(shè)計(jì)試驗(yàn)指導(dǎo)》 錢能 清華大學(xué)出版社</p><p>  3.《C程序設(shè)計(jì)》 譚浩強(qiáng) 清華大學(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)論