版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計</p><p> 設(shè)計題目 學(xué)生管理系統(tǒng) </p><p> 設(shè)計時間 2012.12.31 至 2012.1.6 </p><p> 學(xué)生姓名 </p><p> 學(xué)生學(xué)號
2、 </p><p> 所在班級 </p><p> 指導(dǎo)教師 </p><p><b> 學(xué)生管理系統(tǒng)</b></p><p><b> 需求分析</b></p><p&g
3、t; 課程設(shè)計題目:運用數(shù)據(jù)結(jié)構(gòu)編一C++程序,實現(xiàn)對學(xué)生信息的管理,主要包括主控程序、學(xué)生檔案管理子系統(tǒng)、學(xué)生成績管理子系統(tǒng)、學(xué)生宿舍管理子系統(tǒng)。</p><p> 課程設(shè)計的基本要求:設(shè)計好算法,使之能順利實現(xiàn)對學(xué)生信息的管理,實用。</p><p> 課程設(shè)計的任務(wù):通過此系統(tǒng)可以實現(xiàn)如下功能:</p><p> 添加學(xué)生信息:包括學(xué)生的姓名,學(xué)號,班
4、級,宿舍號以及其C++、多媒體技術(shù)、高等數(shù)學(xué)、大學(xué)英語、大學(xué)體育等成績;</p><p> 刪除學(xué)生信息:可以根據(jù)其姓名、學(xué)號、班級、宿舍號和其成績進(jìn)行刪除;</p><p> 查詢學(xué)生信息:可以根據(jù)其姓名、學(xué)號、班級、宿舍號和其成績進(jìn)行查詢;</p><p> 輸出所有學(xué)生信息:可以顯示所有錄入到系統(tǒng)中的學(xué)生的信息。</p><p>
5、 軟硬件運行環(huán)境及開發(fā)工具</p><p> 本次課程設(shè)計主要是在Visual C++6.0下做的, Visual C++是Microsoft公司的功能強大的Windows應(yīng)用程序開發(fā)環(huán)境。由于Visual C++與Windows同為Microsoft公司的產(chǎn)品,它與Windows操作系統(tǒng)的結(jié)合將更加緊密。目前,Visual C++是Windows平臺下開發(fā)應(yīng)用程序最重要的開發(fā)環(huán)境之一。Visual C++既
6、能支持C語言程序,又能C++運行程序,C++程序通常無需修改,或稍作修改,即可在其他計算機系統(tǒng)上運行。</p><p><b> 概要設(shè)計</b></p><p> (1)、課程設(shè)計思想</p><p> 學(xué)生管理系統(tǒng)是由單鏈表來完成的,它的主要思想是先將你的具體信息錄入到文件中,如果要查詢的話就是從文件中讀取出來的,然后我的查詢是由多種
7、方式來查詢的,可以通過姓名,學(xué)號,班級,宿舍號或成績;刪除也是通過多種方式實現(xiàn)的,也是根據(jù)用戶輸入的姓名,學(xué)號,班級,宿舍號或者成績;最后還有一個顯示所有學(xué)生的信息,可以把所有錄入的學(xué)生信息顯示出來。這個系統(tǒng)整個思想就是如此。編程時考慮得還不是很周全,還需要不斷完善。</p><p><b> ?。?)、模塊設(shè)計</b></p><p> 本課題主要分為5個模塊,即
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)模塊,其作用是刪除滿足一定條件的學(xué)生的信息。</p><p><b> 其流程圖如下:</b></p><p><b> 詳細(xì)設(shè)計</b></p><p> 本課題分為六個
10、部分:構(gòu)造單鏈表,顯示所有學(xué)生信息的函數(shù),添加學(xué)生信息的函數(shù),查找學(xué)生信息的函數(shù),刪除學(xué)生信息的函數(shù),主函數(shù)的設(shè)計。</p><p><b> 構(gòu)造單鏈表</b></p><p> 單鏈表有連個部分組成,即鏈表的結(jié)點類和鏈表類,其代碼如下:</p><p> class CNode //結(jié)點類</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 //鏈表類</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<<"請輸入姓名(輸入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é)號:";cin.getline(n,17); </p><p> cout<<"輸入班級:";cin.getline(c,
24、17); </p><p> cout<<"輸入宿舍:";cin>>e; </p><p> cout<<"輸入C++成績:";cin>>cp; </p><p> cout<<"輸入多媒體技術(shù)成績:";cin>>m; </
25、p><p> cout<<"輸入大學(xué)英語成績:";cin>>ce;</p><p> cout<<"輸入高等數(shù)學(xué)成績:";cin>>sm; </p><p> cout<<"輸入大學(xué)體育成績:";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<<"請輸入姓名(輸入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<<"請輸
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<<"對不起,在學(xué)生記錄中查找不到"<<name<&
33、lt;"的記錄."<<endl; </p><p> cout<<"請輸入你要查找的姓名(輸入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<<"請輸入要刪除的記錄的學(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<<"對不起,在學(xué)生記錄中查找不到"<
39、<name<<"的記錄.\n"<<endl; </p><p> cout<<"請輸入要刪除的記錄的學(xué)生姓名(輸入0結(jié)束):"; </p><p> cin.getline(name,17); </p><p><b> } </b></p>
40、<p><b> }</b></p><p><b> 主函數(shù)的設(shè)計</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.查詢學(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<<"輸入錯誤,請重新輸入您的選擇:"; </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)試分析與測試結(jié)果</b></p><p> 執(zhí)行程序后,首先向系統(tǒng)中錄入三位同學(xué)的信息,然后顯示三個人的信息,運行后的界面如下:</p><p> 圖4.1 錄入三個學(xué)生信息后的運行結(jié)果</p><p> 然后增加
50、一個學(xué)生的信息再輸出,結(jié)果如下圖:</p><p> 圖4.2 添加一個學(xué)生后的運行結(jié)果</p><p> 接著再任意刪除一個學(xué)生的信息,輸出結(jié)果如下圖:</p><p> 圖4.3 刪除一個學(xué)生后的運行結(jié)果</p><p> 最后查詢“shiqi”的信息,結(jié)果如下圖:</p><p> 圖4.4 查詢的結(jié)果
51、</p><p><b> 課設(shè)總結(jié)</b></p><p> 本次課程設(shè)計使我了解到了有關(guān)VC++的真實案例,當(dāng)然也使我學(xué)到的不少的知識,也提高了我的實際動手能力。由于之前對VC++的知識沒有足夠的掌握,使我在實驗的最初階段遇到了不小的困難,但是隨著實驗的進(jìn)行,隨著問題的一步步被我解決了,我由衷的感到高興,因為我又掌握了一些知識。實驗過程中我更好地掌握了單鏈表等
52、相關(guān)涉及的知識點,運用這些知識點編寫程序代碼。調(diào)試程序中,我們常常會不注意細(xì)節(jié)性的問題。例如:變量沒有初始化、沒有定義、少分號、少頭文件等這些細(xì)節(jié)性的錯誤。這此問題只是細(xì)小的問題,但不容忽視,它可能會影響到全部程序的運行。查找主要代碼無誤后,若調(diào)試程序還存在錯誤的話,我們就需要關(guān)注這此細(xì)節(jié)性問題了。要規(guī)范化程序,這樣就很容易查找出細(xì)節(jié)性的問題。一個好的程序應(yīng)該是一個所占空間小、運行時間短、其他性能也好的算法。然而,實際上很難做到十全十美
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--學(xué)生籍貫管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--學(xué)生信息管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計——學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---學(xué)生學(xué)籍管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--- 學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---成績管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--學(xué)生成績管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---學(xué)生成績管理系統(tǒng)(部分)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--航班管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計—機場管理系統(tǒng)
評論
0/150
提交評論