數(shù)據(jù)結(jié)構(gòu)-課程設(shè)計(jì)--學(xué)生管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計(jì)</p><p>  設(shè)計(jì)題目  學(xué)生管理系統(tǒng) </p><p>  設(shè)計(jì)時(shí)間  2012.12.31 至 2012.1.6 </p><p>  學(xué)生姓名  </p><p>  學(xué)生學(xué)號(hào) 

2、 </p><p>  所在班級(jí)  </p><p>  指導(dǎo)教師  </p><p><b>  學(xué)生管理系統(tǒng)</b></p><p><b>  需求分析</b></p><p&g

3、t;  課程設(shè)計(jì)題目:運(yùn)用數(shù)據(jù)結(jié)構(gòu)編一C++程序,實(shí)現(xiàn)對(duì)學(xué)生信息的管理,主要包括主控程序、學(xué)生檔案管理子系統(tǒng)、學(xué)生成績(jī)管理子系統(tǒng)、學(xué)生宿舍管理子系統(tǒng)。</p><p>  課程設(shè)計(jì)的基本要求:設(shè)計(jì)好算法,使之能順利實(shí)現(xiàn)對(duì)學(xué)生信息的管理,實(shí)用。</p><p>  課程設(shè)計(jì)的任務(wù):通過(guò)此系統(tǒng)可以實(shí)現(xiàn)如下功能:</p><p>  添加學(xué)生信息:包括學(xué)生的姓名,學(xué)號(hào),班

4、級(jí),宿舍號(hào)以及其C++、多媒體技術(shù)、高等數(shù)學(xué)、大學(xué)英語(yǔ)、大學(xué)體育等成績(jī);</p><p>  刪除學(xué)生信息:可以根據(jù)其姓名、學(xué)號(hào)、班級(jí)、宿舍號(hào)和其成績(jī)進(jìn)行刪除;</p><p>  查詢(xún)學(xué)生信息:可以根據(jù)其姓名、學(xué)號(hào)、班級(jí)、宿舍號(hào)和其成績(jī)進(jìn)行查詢(xún);</p><p>  輸出所有學(xué)生信息:可以顯示所有錄入到系統(tǒng)中的學(xué)生的信息。</p><p>

5、  軟硬件運(yùn)行環(huán)境及開(kāi)發(fā)工具</p><p>  本次課程設(shè)計(jì)主要是在Visual C++6.0下做的, Visual C++是Microsoft公司的功能強(qiáng)大的Windows應(yīng)用程序開(kāi)發(fā)環(huán)境。由于Visual C++與Windows同為Microsoft公司的產(chǎn)品,它與Windows操作系統(tǒng)的結(jié)合將更加緊密。目前,Visual C++是Windows平臺(tái)下開(kāi)發(fā)應(yīng)用程序最重要的開(kāi)發(fā)環(huán)境之一。Visual C++既

6、能支持C語(yǔ)言程序,又能C++運(yùn)行程序,C++程序通常無(wú)需修改,或稍作修改,即可在其他計(jì)算機(jī)系統(tǒng)上運(yùn)行。</p><p><b>  概要設(shè)計(jì)</b></p><p>  (1)、課程設(shè)計(jì)思想</p><p>  學(xué)生管理系統(tǒng)是由單鏈表來(lái)完成的,它的主要思想是先將你的具體信息錄入到文件中,如果要查詢(xún)的話(huà)就是從文件中讀取出來(lái)的,然后我的查詢(xún)是由多種

7、方式來(lái)查詢(xún)的,可以通過(guò)姓名,學(xué)號(hào),班級(jí),宿舍號(hào)或成績(jī);刪除也是通過(guò)多種方式實(shí)現(xiàn)的,也是根據(jù)用戶(hù)輸入的姓名,學(xué)號(hào),班級(jí),宿舍號(hào)或者成績(jī);最后還有一個(gè)顯示所有學(xué)生的信息,可以把所有錄入的學(xué)生信息顯示出來(lái)。這個(gè)系統(tǒng)整個(gè)思想就是如此。編程時(shí)考慮得還不是很周全,還需要不斷完善。</p><p><b> ?。?)、模塊設(shè)計(jì)</b></p><p>  本課題主要分為5個(gè)模塊,即

8、:</p><p>  (1) void add(CList &stulist)模塊,其作用是向系統(tǒng)中添加學(xué)生的信息;</p><p>  (2) void display(CList &stulist)模塊,其作用是顯示所有錄入的學(xué)生的信息;</p><p>  (3) void lookup(CList &stulist)模塊,其作用是按

9、照一定的條件查找學(xué)生的信息;</p><p>  (4) void deletes(CList &stulist)模塊,其作用是刪除滿(mǎn)足一定條件的學(xué)生的信息。</p><p><b>  其流程圖如下:</b></p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p>  本課題分為六個(gè)

10、部分:構(gòu)造單鏈表,顯示所有學(xué)生信息的函數(shù),添加學(xué)生信息的函數(shù),查找學(xué)生信息的函數(shù),刪除學(xué)生信息的函數(shù),主函數(shù)的設(shè)計(jì)。</p><p><b>  構(gòu)造單鏈表</b></p><p>  單鏈表有連個(gè)部分組成,即鏈表的結(jié)點(diǎn)類(lèi)和鏈表類(lèi),其代碼如下:</p><p>  class CNode //結(jié)點(diǎn)類(lèi)</p>

11、<p><b>  { </b></p><p><b>  public: </b></p><p><b>  CNode()</b></p><p><b>  {</b></p><p><b>  pdata=0;</b

12、></p><p><b>  pnext=0;</b></p><p><b>  }</b></p><p>  CNode(CNode &n); </p><p>  void inputdata(CData *pd){pdata=pd;} </p><p&g

13、t;  void shownode(){pdata->show();} </p><p>  CData *getdata(){return pdata;} </p><p>  friend class CList; </p><p><b>  private: </b></p><p>  CData *pd

14、ata; </p><p>  CNode *pnext; </p><p><b>  };</b></p><p>  CNode::CNode(CNode &n) //拷貝構(gòu)造函數(shù)</p><p><b>  { </b></p><p> 

15、 pdata=n.pdata;</p><p>  pnext=n.pnext;</p><p><b>  } </b></p><p>  class CList //鏈表類(lèi)</p><p><b>  { </b></p><p>&

16、lt;b>  public: </b></p><p>  CList(){phead=0;}</p><p>  ~CList(){deletelist();}</p><p>  void addnode(CNode *pnode);</p><p>  void deletelist();</p><

17、;p>  CNode *deletenode(CNode *pnode);</p><p>  CNode *lookup(CData &data);</p><p>  CNode *getlisthead(){return phead;}</p><p>  void showlist();</p><p>  CNode

18、*getnext(CNode *pnode);</p><p><b>  private: </b></p><p>  CNode * phead;</p><p><b>  };</b></p><p>  顯示所有學(xué)生信息的函數(shù)</p><p><b> 

19、 代碼如下:</b></p><p>  void display(CList &stulist) </p><p><b>  { </b></p><p>  stulist.showlist(); </p><p>  cout<<endl; </p><p>

20、;  cout<<"按任意鍵返回主菜單"; </p><p>  getchar();getchar(); </p><p><b>  }</b></p><p><b>  添加學(xué)生信息的函數(shù)</b></p><p><b>  代碼如下:</b&

21、gt;</p><p>  void add(CList &stulist) </p><p><b>  { </b></p><p>  CNode *p; </p><p>  Student *s; </p><p>  char c[17],n[17],nam[17]; <

22、/p><p>  double e,cp,m,ce,sm,cg,mar;float aver; </p><p>  cout<<"請(qǐng)輸入姓名(輸入0結(jié)束):"; </p><p>  cin.ignore(); </p><p>  cin.getline(nam,17); </p><p&g

23、t;  while(strcmp(nam,"0")) </p><p><b>  { </b></p><p>  cout<<"輸入學(xué)號(hào):";cin.getline(n,17); </p><p>  cout<<"輸入班級(jí):";cin.getline(c,

24、17); </p><p>  cout<<"輸入宿舍:";cin>>e; </p><p>  cout<<"輸入C++成績(jī):";cin>>cp; </p><p>  cout<<"輸入多媒體技術(shù)成績(jī):";cin>>m; </

25、p><p>  cout<<"輸入大學(xué)英語(yǔ)成績(jī):";cin>>ce;</p><p>  cout<<"輸入高等數(shù)學(xué)成績(jī):";cin>>sm; </p><p>  cout<<"輸入大學(xué)體育成績(jī):";cin>>cg; </p>

26、<p>  aver=(cp+m+ce+sm+cg)/5; </p><p>  s=new Student; </p><p>  s->set(c,n,nam,e,cp,m,ce,sm,cg,mar,aver); </p><p>  p=new CNode; </p><p>  p->inputdata(s)

27、; </p><p>  stulist.addnode(p); </p><p>  cout<<"記錄添加成功."<<endl; </p><p>  cout<<"請(qǐng)輸入姓名(輸入0結(jié)束):"; </p><p>  cin.ignore(); </p&g

28、t;<p>  cin.getline(nam,17); </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  查找學(xué)生信息的函數(shù)</b></p><p><b>  代碼如下:</b&

29、gt;</p><p>  void lookup(CList &stulist) </p><p><b>  { </b></p><p>  CNode *plook; </p><p>  char name[17]; </p><p>  cout<<"請(qǐng)輸

30、入你要查找的姓名(輸入0結(jié)束):"; </p><p>  cin.ignore(); </p><p>  cin.getline(name,17); </p><p>  while(strcmp(name,"0")) </p><p><b>  { </b></p>&

31、lt;p>  Student s; </p><p>  s.set("0","0",name,0,0,0,0,0,0,0,0); </p><p>  plook=stulist.lookup(s); </p><p>  if(plook) </p><p><b>  { <

32、/b></p><p>  plook->shownode(); </p><p><b>  } </b></p><p><b>  else </b></p><p>  cout<<"對(duì)不起,在學(xué)生記錄中查找不到"<<name<&

33、lt;"的記錄."<<endl; </p><p>  cout<<"請(qǐng)輸入你要查找的姓名(輸入0結(jié)束):"; </p><p>  cin.getline(name,17); </p><p><b>  } </b></p><p><b> 

34、 }</b></p><p><b>  刪除學(xué)生信息的函數(shù)</b></p><p><b>  代碼如下:</b></p><p>  void deletes(CList &stulist) </p><p><b>  { </b></p>

35、<p>  CNode *plook; </p><p>  char name[17]; </p><p>  cout<<"請(qǐng)輸入要?jiǎng)h除的記錄的學(xué)生姓名(輸入0結(jié)束):"; </p><p>  cin.ignore(); </p><p>  cin.getline(name,17); &l

36、t;/p><p>  while(strcmp(name,"0")) </p><p><b>  { </b></p><p>  Student s; </p><p>  s.set("0","0",name,0,0,0,0,0,0,0,0); </p&

37、gt;<p>  plook=stulist.lookup(s); </p><p>  if(plook) </p><p><b>  { </b></p><p>  plook->shownode(); </p><p>  stulist.deletenode(plook); </p&

38、gt;<p>  cout<<name<<"的記錄已經(jīng)刪除.\n"; </p><p><b>  } </b></p><p><b>  else </b></p><p>  cout<<"對(duì)不起,在學(xué)生記錄中查找不到"<

39、<name<<"的記錄.\n"<<endl; </p><p>  cout<<"請(qǐng)輸入要?jiǎng)h除的記錄的學(xué)生姓名(輸入0結(jié)束):"; </p><p>  cin.getline(name,17); </p><p><b>  } </b></p>

40、<p><b>  }</b></p><p><b>  主函數(shù)的設(shè)計(jì)</b></p><p><b>  代碼如下:</b></p><p>  void operate(CList &stulist) </p><p><b>  { &

41、lt;/b></p><p>  int choice; </p><p><b>  do </b></p><p><b>  { </b></p><p>  system("cls"); </p><p>  cout<<&quo

42、t; 歡迎使用學(xué)生管理系統(tǒng) \n"; </p><p>  cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" </p><p>  <<" 1.輸出所有學(xué)生記錄\n&quo

43、t; </p><p>  <<" 2.增加學(xué)生記錄\n" </p><p>  <<" 3.刪除學(xué)生記錄\n" </p><p>  <<"

44、 4.查詢(xún)學(xué)生記錄\n" </p><p>  <<" 0.退出\n" </p><p>  <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; </p><

45、;p>  cout<<"提示:按0-4進(jìn)行選擇"; </p><p>  cin>>choice; </p><p>  cout<<endl; </p><p>  switch(choice) </p><p>  {case 1:display(stulist);break;

46、 </p><p>  case 2:add(stulist);break; </p><p>  case 3:deletes(stulist);break; </p><p>  case 4:lookup(stulist);break; </p><p>  case 0:storefile(stulist);break; </p

47、><p>  default:cout<<"輸入錯(cuò)誤,請(qǐng)重新輸入您的選擇:"; </p><p><b>  } </b></p><p>  }while(choice!=0); </p><p><b>  } </b></p><p>

48、;  int main() </p><p><b>  { </b></p><p>  CList stulist; </p><p>  loadfile(stulist); </p><p>  operate(stulist); </p><p>  return 0; </p&g

49、t;<p><b>  }</b></p><p><b>  調(diào)試分析與測(cè)試結(jié)果</b></p><p>  執(zhí)行程序后,首先向系統(tǒng)中錄入三位同學(xué)的信息,然后顯示三個(gè)人的信息,運(yùn)行后的界面如下:</p><p>  圖4.1 錄入三個(gè)學(xué)生信息后的運(yùn)行結(jié)果</p><p>  然后增加

50、一個(gè)學(xué)生的信息再輸出,結(jié)果如下圖:</p><p>  圖4.2 添加一個(gè)學(xué)生后的運(yùn)行結(jié)果</p><p>  接著再任意刪除一個(gè)學(xué)生的信息,輸出結(jié)果如下圖:</p><p>  圖4.3 刪除一個(gè)學(xué)生后的運(yùn)行結(jié)果</p><p>  最后查詢(xún)“shiqi”的信息,結(jié)果如下圖:</p><p>  圖4.4 查詢(xún)的結(jié)果

51、</p><p><b>  課設(shè)總結(jié)</b></p><p>  本次課程設(shè)計(jì)使我了解到了有關(guān)VC++的真實(shí)案例,當(dāng)然也使我學(xué)到的不少的知識(shí),也提高了我的實(shí)際動(dòng)手能力。由于之前對(duì)VC++的知識(shí)沒(méi)有足夠的掌握,使我在實(shí)驗(yàn)的最初階段遇到了不小的困難,但是隨著實(shí)驗(yàn)的進(jìn)行,隨著問(wèn)題的一步步被我解決了,我由衷的感到高興,因?yàn)槲矣终莆樟艘恍┲R(shí)。實(shí)驗(yàn)過(guò)程中我更好地掌握了單鏈表等

52、相關(guān)涉及的知識(shí)點(diǎn),運(yùn)用這些知識(shí)點(diǎn)編寫(xiě)程序代碼。調(diào)試程序中,我們常常會(huì)不注意細(xì)節(jié)性的問(wèn)題。例如:變量沒(méi)有初始化、沒(méi)有定義、少分號(hào)、少頭文件等這些細(xì)節(jié)性的錯(cuò)誤。這此問(wèn)題只是細(xì)小的問(wèn)題,但不容忽視,它可能會(huì)影響到全部程序的運(yùn)行。查找主要代碼無(wú)誤后,若調(diào)試程序還存在錯(cuò)誤的話(huà),我們就需要關(guān)注這此細(xì)節(jié)性問(wèn)題了。要規(guī)范化程序,這樣就很容易查找出細(xì)節(jié)性的問(wèn)題。一個(gè)好的程序應(yīng)該是一個(gè)所占空間小、運(yùn)行時(shí)間短、其他性能也好的算法。然而,實(shí)際上很難做到十全十美

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論