《C++課程設計 學生選修課選課管理系統(tǒng)》由會員分享,可在線閱讀,更多相關《C++課程設計 學生選修課選課管理系統(tǒng)(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 程序設計基礎課程設計報告程序設計基礎課程設計報告學生選修課管理系統(tǒng)學生選修課管理系統(tǒng)專專 業(yè):業(yè): 電子信息工程電子信息工程 班班 級:級: 20072007 級級 1 1 班班 學學 號:號: 20070820242007082024 姓姓 名:名: 孫孫 曉曉 東東 指導教師:指導教師: 常常 耀耀 輝輝 二二 OOOO 八八 年年 六月三十日六月三十日- 1 -目目 錄錄一、一、 編程目的:1二、二、 設計要求:1三、三、 函數(shù)主體說明:.1四、四、 運行結果.9五、五、 流程圖:.10六、六、 總結:10參考數(shù)目:11一、一、編程目的:編程目的: 建立一學生選修課選課管理系統(tǒng),并對它
2、進行輸入、輸出、查詢、選課等操作。二、二、設計要求設計要求:1.系統(tǒng)以菜單方式工作2.課程信息錄入功能(課程信息用文件保存)輸入3.課程信息瀏覽功能輸出4.查詢功能:(至少一種查詢方式)算法5.按學分查詢- 2 -6.按課程性質(zhì)查詢7.學生選修課程(可選項)三、三、函數(shù)主體說明函數(shù)主體說明:#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; / 學號學號int number; / 編號編號char course_name40; / 課程名稱課程名稱char c
5、ourse_kind10; / 課程性質(zhì)課程性質(zhì)int total_time; / 總學時總學時int learn_time; / 授課學時授課學時int time; / 實驗或上機學時實驗或上機學時int credit_hour; / 學分學分char course_time40; / 開課學期開課學期;class Studentpublic: void input()coutnum;coutname; void input_1(ifstream &ji)jinumname; void display()cout學號學號: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) / 建立學生課程建立學生課程 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) / 建立學生已選課的建立學生已選課的 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編號編號 課程名稱課程名稱 課程性質(zhì)課程性質(zhì) 總學時總學時 授課學時授課學時 實驗或上機學實驗或上機學時時 學分學分 開課學期開課學期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() / 按學分查詢按學分查詢 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) / 按學生選修課程查詢按學生選修課程查詢 int k,i;- 6 -Course *b=c.p;coutk;for(i=0;inum=k)(pb+i)-display(); cout編號編號 課程名稱課程名稱 課程性質(zhì)課程性質(zhì) 總學時總學時 授課學時授課學時 實驗或上機學時實驗或上機學時 學分學分 開課學期開課學期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) / 計算某學生的總學分計算某學生的總學分,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; / 將學號填到數(shù)據(jù)中將學號填到數(shù)據(jù)中pL=p1; / 將節(jié)點填到將節(jié)點填到 c 鏈表中鏈表中L+; k=total_credit(i); / 計算學號為計算學號為 i 的總學分的總學分- 7 - if(k=8) cout請繼續(xù)選課請繼續(xù)選課;else cout你的學分已超過你的學分已超過 8 分分!endl; break; void save() / student.txt保存文件函數(shù)保存文件函數(shù) int i,k=-1;jb.open(student.txt,ios:out
12、);if(!jb) cout錯誤錯誤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錯誤錯誤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錯誤錯誤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; / 長度長度;int main() Class_array a,b(1),c(1,2); int i,j;cout-學生選修課課程系統(tǒng)設計學生選修課課程系統(tǒng)設計-endl;for(;)cout1
14、新課程信息輸入新課程信息輸入 2 課程信息瀏覽課程信息瀏覽 3 查詢功能查詢功能 4 選課選課 5 結束結束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 學分查詢學分查詢 2 課程性質(zhì)查詢課程性質(zhì)查詢 3 學生選修課程學生選修課程endl;coutj;if(j=1) cout-學分查詢學分查詢-endl;b.find_credit_hour();else if(j
15、=2) cout-課程性質(zhì)查詢課程性質(zhì)查詢-endl;b.find_course_kind();else if(j=3) - 9 -cout-學生選修課程學生選修課程-endl;a.find(c);else if(i=4)c.choose(b);else if(i=5)break;else cout無效輸入無效輸入endl; a.save(); b.save_1(); c.save_2();return 0;四、四、運行結果運行結果- 10 - 五、五、流程圖:流程圖:- 11 -開始選擇功能課程信息瀏覽選課查詢功能課程錄入結束輸入課程信息瀏覽以選課程信息瀏覽進行選課123455555六、六、
16、總結總結: 剛開始選題的時候就覺得這題有點難度,覺得不怎么好入手。首先是以菜單方式展開,就覺得怎么這么難。做的時候,就覺得更難了。其次是把一些以前分開再的小題目合起來,就覺得又難了許多。從未編過這樣的程序,就覺得僅這個就挺嚇人的。其中,有些函數(shù)就沒應用過,比如那輸入/輸出引用函數(shù),見都沒見過,幸好有師兄們的幫忙,才能把程序弄完,這也覺得自己什么也沒學懂,也是我覺得自己與別人的差距,通過這次的設計我也覺得自己又有一點新的收獲,也了解了為什么學這門課程了,對其有了新認識。在做程序設計前還必須把書本上的基本知識搞懂,程序設- 12 -計會用到書中的類做,對類的理解也不是很到位,一些概念的知識還沒有很好的理解,所以還需要借助書中的知識來加深對類的理解。 通過對其的編程,也理解了類這個新名詞在程序中的重要性。也知道了C 與 C+的重大區(qū)別,C+更使編程人員有了一個好的工具進行編程??傊?,此次的程序設計是我們對系統(tǒng)(程序)設計的技巧、系統(tǒng)分析和類等許多知識的綜合應用,大大提高思維了能力,為畢業(yè)設計和以后的工作打下了一個良好的基礎。工程完成時間:2008-6-28 孫曉東 電信 07參考數(shù)目參考數(shù)目 【1】譚浩強, C+程序設計 ,清華大學出版社,2006 年。