《C++課程設(shè)計(jì)_ (5)學(xué)生選修課選課管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《C++課程設(shè)計(jì)_ (5)學(xué)生選修課選課管理系統(tǒng)(13頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告學(xué)生選修課管理系統(tǒng)學(xué)生選修課管理系統(tǒng)專專 業(yè):業(yè): 電子信息工程電子信息工程 班班 級(jí):級(jí): 20072007 級(jí)級(jí) 1 1 班班 學(xué)學(xué) 號(hào):號(hào): 20070820242007082024 姓姓 名:名: 孫孫 曉曉 東東 指導(dǎo)教師:指導(dǎo)教師: 常常 耀耀 輝輝 二二 OOOO 八八 年年 六月三十日六月三十日- 1 -目目 錄錄一、一、 編程目的:1二、二、 設(shè)計(jì)要求:1三、三、 函數(shù)主體說(shuō)明:.1四、四、 運(yùn)行結(jié)果.9五、五、 流程圖:.10六、六、 總結(jié):10參考數(shù)目:11一、一、編程目的:編程目的: 建立一學(xué)生選修課選課管理系統(tǒng),并對(duì)它
2、進(jìn)行輸入、輸出、查詢、選課等操作。二、二、設(shè)計(jì)要求設(shè)計(jì)要求:1.系統(tǒng)以菜單方式工作2.課程信息錄入功能(課程信息用文件保存)輸入3.課程信息瀏覽功能輸出4.查詢功能:(至少一種查詢方式)算法5.按學(xué)分查詢- 2 -6.按課程性質(zhì)查詢7.學(xué)生選修課程(可選項(xiàng))三、三、函數(shù)主體說(shuō)明函數(shù)主體說(shuō)明:#include#include#include#includeusing namespace std;class Coursepublic: void input()coutnumber; coutcourse_name; coutcourse_kind; couttotal_time; coutlear
3、n_time; couttime; coutcredit_hour; coutcourse_time; void input_1(ifstream &ji) / 輸入別名引用輸入別名引用jicourse_namecourse_kind total_timelearn_timetimecredit_hourcourse_time; void display()coutnumbersetw(12)course_namesetw(5)course_kindsetw(10)total_timesetw(10)learn_timesetw(10)timesetw(13)credit_hoursetw(1
4、2)course_timeendl;void display(ofstream &jb) / 輸出別名引用輸出別名引用jbnumbersetw(10)course_namesetw(5)course_kindsetw(5) total_timesetw(5)learn_timesetw(5)timesetw(5)credit_hoursetw(10)course_timeendl; friend class Class_array;- 3 -private:int num; / 學(xué)號(hào)學(xué)號(hào)int number; / 編號(hào)編號(hào)char course_name40; / 課程名稱課程名稱char c
5、ourse_kind10; / 課程性質(zhì)課程性質(zhì)int total_time; / 總學(xué)時(shí)總學(xué)時(shí)int learn_time; / 授課學(xué)時(shí)授課學(xué)時(shí)int time; / 實(shí)驗(yàn)或上機(jī)學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)int credit_hour; / 學(xué)分學(xué)分char course_time40; / 開(kāi)課學(xué)期開(kāi)課學(xué)期;class Studentpublic: void input()coutnum;coutname; void input_1(ifstream &ji)jinumname; void display()cout學(xué)號(hào)學(xué)號(hào):numsetw(14)姓名姓名:nameendl; void disp
6、lay_1(ofstream &jb)jbnum name(pb+i)-num; if(pb+i)-num=-1) break; else ji(pb+i)-name;L+; ji.close(); Class_array(int a) / 建立學(xué)生課程建立學(xué)生課程 Course 數(shù)組數(shù)組 int i;L=0;ji.open(course.txt,ios:in);p=new Course30;for(i=0;i+) ji(p+i)-number;if(p+i)-number=-1) break;else (p+i)-input_1(ji); L+; ji.close(); Class_arra
7、y(int a,int b) / 建立學(xué)生已選課的建立學(xué)生已選課的 Course1 數(shù)組數(shù)組 int i;L=0;ji.open(course1.txt,ios:in);p=new Course20;for(i=0;i+)ji(p+i)-num;if(p+i)-num=-1) break;else ji(p+i)-number;(p+i)-input_1(ji);L+;- 5 -ji.close(); void display() / 輸出輸出 Student 數(shù)組數(shù)組 int i;for(i=0;idisplay(); void display_1() / 輸出輸出 Course 數(shù)組數(shù)組
8、int i; cout編號(hào)編號(hào) 課程名稱課程名稱 課程性質(zhì)課程性質(zhì) 總學(xué)時(shí)總學(xué)時(shí) 授課學(xué)時(shí)授課學(xué)時(shí) 實(shí)驗(yàn)或上機(jī)學(xué)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)時(shí) 學(xué)分學(xué)分 開(kāi)課學(xué)期開(kāi)課學(xué)期endl; for(i=0;idisplay(); void input() / course 課程信息錄入功能課程信息錄入功能,b 調(diào)用調(diào)用 (p+L)-input(); / 在數(shù)組最后增加數(shù)據(jù)在數(shù)組最后增加數(shù)據(jù) L+; void find_credit_hour() / 按學(xué)分查詢按學(xué)分查詢 int k,i;coutk;for(i=0;icredit_hour=k)(p+i)-display(); void find_course_ki
9、nd() / 按課程性質(zhì)查詢按課程性質(zhì)查詢 char a20;int i;couta; for(i=0;icourse_kind,a)=0) (p+i)-display(); void find(Class_array &c) / 按學(xué)生選修課程查詢按學(xué)生選修課程查詢 int k,i;- 6 -Course *b=c.p;coutk;for(i=0;inum=k)(pb+i)-display(); cout編號(hào)編號(hào) 課程名稱課程名稱 課程性質(zhì)課程性質(zhì) 總學(xué)時(shí)總學(xué)時(shí) 授課學(xué)時(shí)授課學(xué)時(shí) 實(shí)驗(yàn)或上機(jī)學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí) 學(xué)分學(xué)分 開(kāi)課學(xué)期開(kāi)課學(xué)期endl; for(i=0;inum=k) (b+i)-
10、display(); Course find_number() / 按課程編碼查詢按課程編碼查詢,b 調(diào)用調(diào)用 int k,i;coutk;for(i=0;inumber=k) break; return *(p+i); int total_credit(int i) / 計(jì)算某學(xué)生的總學(xué)分計(jì)算某學(xué)生的總學(xué)分,c 調(diào)用調(diào)用 int k,j=0;for(k=0;kL;k+) if(pk.num=i) j=j+pk.credit_hour;return j; void choose(Class_array &b) / 選課程序選課程序,c 調(diào)用調(diào)用 int i,k; Course p1; cout
11、i; b.display_1(); for(;) p1=b.find_number(); / 選課選課p1.num=i; / 將學(xué)號(hào)填到數(shù)據(jù)中將學(xué)號(hào)填到數(shù)據(jù)中pL=p1; / 將節(jié)點(diǎn)填到將節(jié)點(diǎn)填到 c 鏈表中鏈表中L+; k=total_credit(i); / 計(jì)算學(xué)號(hào)為計(jì)算學(xué)號(hào)為 i 的總學(xué)分的總學(xué)分- 7 - if(k=8) cout請(qǐng)繼續(xù)選課請(qǐng)繼續(xù)選課;else cout你的學(xué)分已超過(guò)你的學(xué)分已超過(guò) 8 分分!endl; break; void save() / student.txt保存文件函數(shù)保存文件函數(shù) int i,k=-1;jb.open(student.txt,ios:out
12、);if(!jb) cout錯(cuò)誤錯(cuò)誤endl;exit(1); for(i=0;idisplay_1(jb); jbk; jb.close(); void save_1() / course.txt保存文件函數(shù)保存文件函數(shù) int i,k=-1;jb.open(course.txt,ios:out);if(!jb) cout錯(cuò)誤錯(cuò)誤endl;exit(1); for(i=0;idisplay(jb); jbk; jb.close(); void save_2() / course1.txt保存函數(shù)保存函數(shù) int i,k=-1;jb.open(course1.txt,ios:out);if(!
13、jb) cout錯(cuò)誤錯(cuò)誤endl;exit(1); for(i=0;iL;i+)- 8 - jbnumdisplay(jb); jbk; jb.close(); private: Course *p; / Course 數(shù)組地址數(shù)組地址 Student *pb; / Student 數(shù)組地址數(shù)組地址 ifstream ji; / 輸入流輸入流 ofstream jb; / 輸出流輸出流 int L; / 長(zhǎng)度長(zhǎng)度;int main() Class_array a,b(1),c(1,2); int i,j;cout-學(xué)生選修課課程系統(tǒng)設(shè)計(jì)學(xué)生選修課課程系統(tǒng)設(shè)計(jì)-endl;for(;)cout1
14、新課程信息輸入新課程信息輸入 2 課程信息瀏覽課程信息瀏覽 3 查詢功能查詢功能 4 選課選課 5 結(jié)束結(jié)束endl;couti;if(i=1)cout-新課程信息輸入新課程信息輸入-endl;b.input();else if(i=2)cout-課程信息瀏覽課程信息瀏覽-endl; b.display_1();else if(i=3)cout-查詢功能查詢功能-endl;cout1 學(xué)分查詢學(xué)分查詢 2 課程性質(zhì)查詢課程性質(zhì)查詢 3 學(xué)生選修課程學(xué)生選修課程endl;coutj;if(j=1) cout-學(xué)分查詢學(xué)分查詢-endl;b.find_credit_hour();else if(j
15、=2) cout-課程性質(zhì)查詢課程性質(zhì)查詢-endl;b.find_course_kind();else if(j=3) - 9 -cout-學(xué)生選修課程學(xué)生選修課程-endl;a.find(c);else if(i=4)c.choose(b);else if(i=5)break;else cout無(wú)效輸入無(wú)效輸入endl; a.save(); b.save_1(); c.save_2();return 0;四、四、運(yùn)行結(jié)果運(yùn)行結(jié)果- 10 - 五、五、流程圖:流程圖:- 11 -開(kāi)始選擇功能課程信息瀏覽選課查詢功能課程錄入結(jié)束輸入課程信息瀏覽以選課程信息瀏覽進(jìn)行選課123455555六、六、
16、總結(jié)總結(jié): 剛開(kāi)始選題的時(shí)候就覺(jué)得這題有點(diǎn)難度,覺(jué)得不怎么好入手。首先是以菜單方式展開(kāi),就覺(jué)得怎么這么難。做的時(shí)候,就覺(jué)得更難了。其次是把一些以前分開(kāi)再的小題目合起來(lái),就覺(jué)得又難了許多。從未編過(guò)這樣的程序,就覺(jué)得僅這個(gè)就挺嚇人的。其中,有些函數(shù)就沒(méi)應(yīng)用過(guò),比如那輸入/輸出引用函數(shù),見(jiàn)都沒(méi)見(jiàn)過(guò),幸好有師兄們的幫忙,才能把程序弄完,這也覺(jué)得自己什么也沒(méi)學(xué)懂,也是我覺(jué)得自己與別人的差距,通過(guò)這次的設(shè)計(jì)我也覺(jué)得自己又有一點(diǎn)新的收獲,也了解了為什么學(xué)這門(mén)課程了,對(duì)其有了新認(rèn)識(shí)。在做程序設(shè)計(jì)前還必須把書(shū)本上的基本知識(shí)搞懂,程序設(shè)- 12 -計(jì)會(huì)用到書(shū)中的類做,對(duì)類的理解也不是很到位,一些概念的知識(shí)還沒(méi)有很好的理解,所以還需要借助書(shū)中的知識(shí)來(lái)加深對(duì)類的理解。 通過(guò)對(duì)其的編程,也理解了類這個(gè)新名詞在程序中的重要性。也知道了C 與 C+的重大區(qū)別,C+更使編程人員有了一個(gè)好的工具進(jìn)行編程??傊?,此次的程序設(shè)計(jì)是我們對(duì)系統(tǒng)(程序)設(shè)計(jì)的技巧、系統(tǒng)分析和類等許多知識(shí)的綜合應(yīng)用,大大提高思維了能力,為畢業(yè)設(shè)計(jì)和以后的工作打下了一個(gè)良好的基礎(chǔ)。工程完成時(shí)間:2008-6-28 孫曉東 電信 07參考數(shù)目參考數(shù)目 【1】譚浩強(qiáng), C+程序設(shè)計(jì) ,清華大學(xué)出版社,2006 年。