學生選課系統(tǒng)C++_第1頁
學生選課系統(tǒng)C++_第2頁
學生選課系統(tǒng)C++_第3頁
學生選課系統(tǒng)C++_第4頁
學生選課系統(tǒng)C++_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計報告課程設計題目: 學生選課系統(tǒng)設計 學 號:9姓 名:王潔專 業(yè):軟件工程班 級:指導教師:許志文 2012年 6 月28 日課程設計評分表學生姓名: 王潔 班級: 學號:9課程設計題目:學生選課系統(tǒng)設計項目內(nèi)容滿分實 評選題能結合所學課程知識、有一定的能力訓練。符合選題要求(5人一題)10工作量適中,難易度合理10能力水平能熟練應用所學知識,有一定查閱文獻及運用文獻資料能力10理論依據(jù)充分,數(shù)據(jù)準確,公式推導正確10能應用計算機軟件進行編程、資料搜集錄入、加工、排版、制圖等10能體現(xiàn)創(chuàng)造性思維,或有獨特見解10成果質(zhì)量總體設計正確、合理,各項技術指標符合要求。10說明書綜述簡練完整

2、,概念清楚、立論正確、技術用語準確、結論嚴謹合理;分析處理科學、條理分明、語言流暢、結構嚴謹、版面清晰10設計說明書欄目齊全、合理,符號統(tǒng)一、編號齊全。格式、繪圖、表格、插圖等規(guī)范準確,符合國家標準10有一定篇幅,字符數(shù)不少于500010總 分100指導教師評語: 指導教師簽名: 年 月 日一面向對象程序設計課程設計的目的本課程設計是在學習面向對象基本理論之后的實踐教學環(huán)節(jié)。該實踐教學是軟件設計的綜合訓練,包括問題分析、總體結構設計、用戶界面設計、程序設計基本技能和技巧。要求學生在設計中逐步提高程序設計能力,培養(yǎng)科學的軟件工作方法。學生通過課程設計在下述各方面得到鍛煉:1能根據(jù)實際問題的具體情

3、況,結合面向對象的基本理論和基本技巧,正確分析問題,并能設計出解決問題的有效算法與程序。2提高程序設計和調(diào)試能力。學生通過上機實習,驗證自己設計的算法和程序的正確性。學會有效利用基本調(diào)試方法,迅速找出程序代碼中的錯誤并且修改,進一步提高程序設計水平。題目10 學生選課系統(tǒng)設計假定有n門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于10)自由選課。試設計一選修課程系統(tǒng),使之能提供以下功能: 系統(tǒng)以菜單方式工作v 課程信息錄入功能(課程信息用文件保存)輸入v 課程信息瀏覽功能輸出v 查詢功能:(至少一種查詢方式)

4、算法v 按學分查詢l 按課程性質(zhì)查詢l 學生選修課程(可選項)v#include #include #include #include #include #include #include /定義課程struct course /某個學生所學的課程中的某一個char cname20; /課程名稱float grade; /課程成績course *Next; /指向下一個課程的指針;/學生類class studentpublic:student()root = NULL;const maxcourse = 5;factcourse = 0;void readname(char N ); /讀入學

5、生的姓名void getname(char N); /得到學生的姓名void wrecourse(char N,float score); /要據(jù)課程名寫入學生課程的成績float average(); /學生課程的平均成績void addcourse(char N,float g); /給學生增加一門課int findcourse(char N); /查找是否已有此課程,如果有返回1,如果沒有返回0int retfactcourse()return factcourse; /得到所學的課程數(shù)目course *retroot()return root; /利用鍵表將所有的課程保存起來int r

6、etmaxcourse()return 5; /得到最多可學的課程數(shù)目void clrroot() /清零root = NULL;factcourse = 0;private:char sname20; /學生的姓名int maxcourse; /學生最多可以學五門課程int factcourse; /學生實際所學的課程數(shù)目course *root; /課程的根結點指針;void student:readname (char N)/讀入學生的姓名strcpy(sname,N);void student:getname(char N)/得到學生的姓名strcpy(N,sname);void st

7、udent:wrecourse(char N,float score)/要據(jù)課程名寫入學生課程的成績course *p = root;if(p=NULL)return;if(p!=NULL)p = p-Next;while(p)if(strcmp(p-cname,N)=0)p-grade = score;p = p-Next;float student:average()/學生課程的平均成績float aver=0.0;course *p = root;while (p)aver = aver+p-grade;aver = aver/factcourse;return aver;void st

8、udent:addcourse (char N,float g)/給學生增加一門課course *s = new course;s-Next=NULL;if(root = NULL)root = s;course *p = root;course *newcourse = new course;newcourse-Next = p-Next;p-Next=newcourse;strcpy(newcourse-cname,N);newcourse-grade = g;factcourse+;int student:findcourse (char N)/查找是否已有此課程,如果有返回1,如果沒有

9、返回0course *p = root;if(root=NULL)return 0;p = p-Next;while(p)if(strcmp(p-cname,N)=0)return 1;p = p-Next;return 0;/struct studentdbstudent stu;studentdb *Next;struct studentnamechar tname20; /學生的名字float result; /學生所得的該課程分數(shù)studentname *Next;/課程類class subjectpublic:subject()first = NULL;maxstudent=30;a

10、ctivestudnet=0;float readcredit(); /得到課程的學分void getcredit(float a); /設置學分float getaverage(); /得到學生的平均成績float getresult(char N); /查找某個學生的成績void getkname(char N); /讀出課程的名稱void setkname(char N); /讀入課程的名稱studentname *retfirst()return first; /返回根結點void findstudent(studentdb *P); /根據(jù)該課程的名稱,尋找選這課程的學生int re

11、tactivestudent()return activestudnet; /返回實際學生數(shù)int retmaxstudent()return 30; /返回最多學生數(shù)30void clractivestudnet()activestudnet = 0; /從文件中讀出來后將實際學生數(shù)清零private:int maxstudent; /最多學生數(shù)int activestudnet; /實際學生數(shù)studentname *first; /學生名單float credit; /該課程的學分float averagerusult; /該課程的平均成績char kname20; /該課程的名稱;fl

12、oat subject:readcredit ()/得到課程的學分return credit;void subject:getcredit (float a)/設置學分credit=a;float subject:getaverage()/得到學生的平均成績float k = 0.0;studentname *p;p=first-Next;if(p=NULL)return 0;while(p)k = k + p-result;p = p-Next ;return k/activestudnet;float subject:getresult (char N) /查找某個學生的成績student

13、name *p;p = first;while(p)if(strcpy(p-tname ,N)=0)return p-result;p = p-Next ;return -1;void subject:getkname (char N) /讀出課程的名稱strcpy(N,kname);void subject:setkname (char N) /讀入課程的名稱strcpy(kname,N);void subject:findstudent(studentdb *P) /根據(jù)該課程的名稱,尋找選這課程的學生studentname *newcode = new studentname;newco

14、de-Next=NULL;first = newcode;studentname *T = first;studentdb *K = P-Next;while(K)course *Y = K-stu.retroot();if(Y =NULL)K = K-Next;continue;if(Y!=NULL)Y = Y-Next;while(Y)if(strcmp(Y-cname,kname)=0)studentname *Acode = new studentname;char Name20;K-stu.getname(Name);strcpy(Acode-tname,Name);Acode-re

15、sult = Y-grade;Acode-Next = T-Next;T-Next = Acode;activestudnet = activestudnet + 1;break;Y = Y-Next;K = K-Next;return ;/void tuichu()system(cls);coutnnttt謝謝你使用選修課小系統(tǒng)t再見nnendl;coutnt 如果你覺得此軟件有修改及補充之處,請按以下方式聯(lián)系我們,nt提出你的寶貴意見.我們將不斷地改進并及時的公布新版本。謝謝!nnendl;couttt聯(lián)系方式:ntt 姓名:王潔nntt 電話:0000-nntt Email:

16、nntt 學校地址:東華理工大學t郵政編碼:nnnendl;getch();exit(-1);/總菜單char menu()int k=0;char a3,c,i;system(cls);coutendlendl;coutttttC+課程設計課題nnendl;couttt*ntt* *ntt* 選修課小系統(tǒng) *ntt* *ntt* *ntt* 操作方式: *ntt* 1.選修課系統(tǒng)學生端 *ntt* *ntt* 2.選修課系統(tǒng)管理端 *ntt* *ntt*nendl;while(1)couta;if(strlen(a)=1)for(i=1;i=2;i+)c=i;if(c=a0)return c

17、;cerrnntttt輸入有誤!n2)system(cls);cerrnnntt提示:錯誤輸入次數(shù)超過三次,你將被強制退出!nnendl;couttt按任意鍵繼續(xù)endl;getch();tuichu();/選修課系統(tǒng)端操作char custom()char A10;char b;char i;int k = 0;system(cls);coutnnnttntt選修課系統(tǒng)學生端 ntt ntt 操作方式:. ntt1.學生選課. ntt2.學生情況. ntt3.選課情況. ntt4.退出系統(tǒng). ntt nttnendl;while(1)coutA;if(strlen(A)=1)for(i=1;

18、i=4;i+)b=i;if(b=A0) return b;cerrntttt輸入有誤!n2)system(cls);cerrnnttt提示:錯誤輸入超過三次!你將被強制退出!nendl;couttt按任意鍵繼續(xù)endl;getch();tuichu();char server()char A10;char b;char i;int k = 0;system(cls);coutnnnttntt ntt 選修課系統(tǒng)管理端 ntt ntt .操作方式: ntt 1.增加學生 2.增加課程 ntt 3.刪除學生 4.刪除課程 ntt 5.填寫成績 6.更改學分 ntt 7.學生情況 8.選課情況 nt

19、t 9.保存數(shù)據(jù) 0.退出系統(tǒng) ntt nttnendl;while(1)coutA;if(strlen(A)=1)for(i=0;i=9;i+)b=i;if(b=A0)return b;cerrntttt輸入有誤!n2)cerr錯誤輸入超過三次!n;exit(-1);/密碼檢查void password()int k=0,i;char A=;char B10;char a;system(cls);for(i=0;i8;i+)coutendl; while(k=2)printf(ttt請輸入管理員密碼:);i=0;while(1)a=getch();if(a=13)break;Bi=a;i+;

20、printf(*);Bi=0;if(strcmp(A,B)=0)return;elsek+;cerrnnttt密碼輸入錯誤!請重新輸入!n=3)system(cls);cerrnnttt輸入錯誤密碼超過三次!請按任意鍵退出.endl;getch();tuichu();/struct subjectdbsubject sub;subjectdb *Next;int menu_2_7(studentdb *P);int menu_2_9(studentdb *Y,subjectdb *P);int menu_2_8(subjectdb *P);/學生端功能函數(shù)int menu_1_1(studen

21、tdb *P,subjectdb *X) /學生選課system(cls);coutnntttt學生選課操作Next;int i;char N20,M20;if(q!=NULL)coutnnntt所有學生名單如下:nendl;elsecerrnnntt對不起,暫時沒有學生名單!請按任意鍵繼續(xù).stu.getname(N);coutttttN;coutNext ;q = P-Next;if(q=NULL)return 1;coutN;i=0;q=P-Next;while(q)q-stu.getname(M);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;i

22、f(i=0)coutnntt沒有這個學生! 請按任意鍵返回.1)coutnntt共找到i個姓名為N的學生endl;coutk;if(ki|k=0)cerrnttt輸入有誤!按任意鍵繼續(xù)Next;j=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0)j+;if(j=k)if(q-stu.retfactcourse()=q-stu.retmaxcourse()coutntt所選課程已滿!按任意鍵繼續(xù)Next;char N120;system(cls);if(t!=NULL)coutnnntt所有課程如下:endl;coutntttt課程名稱tt 學分endl;

23、elsecerrnnntt對不起,暫時沒有課程sub.getkname(N1);couttttt N1setw(26-strlen(N1)sub.readcredit()Next ;char N220;coutN2;t = X-Next;while(t)t-sub.getkname(N1);if(strcmp(N1,N2)=0)if(q-stu.findcourse(N2)=1)coutntt此課程你已選過了,不能再選.按任意鍵繼續(xù)Next;char NA20;while(t)t-sub.getkname(NA);if(strcmp(NA,N2)=0)if(t-sub.retactivestu

24、dent()=t-sub.retmaxstudent () coutntt此課程已選滿,不能選.按任意鍵繼續(xù)Next;q-stu.addcourse(N2,0.0);coutnntt選課成功!按任意鍵繼續(xù)Next;cerrntt沒有此課程!按任意鍵繼續(xù)Next;return 1;int menu_1_2(studentdb *P,subjectdb *X) /學生情況studentdb *q=P-Next;char N20;system(cls);coutnntttt學生情況操作endl;int i;if(q!=NULL)coutnnntt所有學生選課信息如下:nendlendl;couttt

25、 姓名ttt選課情況nendl;elsecerrnnntt對不起,暫時沒有學生名單!請按任意鍵繼續(xù).stu.getname(N);couttt Nsetw(25-strlen(N) 已選 stu.retfactcourse() 門課 Next ;char M20;coutM;i=0;q=P-Next;while(q)q-stu.getname(N);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;if(i=0)coutnttt沒找到這個學生!請按任意鍵繼續(xù).1)coutntt共找到i個姓名為M的學生endl;coutk;if(ki|k=0)cerrnttt

26、輸入有誤!按任意鍵繼續(xù).Next;j=0;q=P-Next;while(q)q-stu.getname(N);if(strcmp(N,M)=0)j+;if(j=k)system(cls);course *T=q-stu.retroot();if(T=NULL)coutnnntttN同學你還未選課! 請按任意鍵繼續(xù).Next;coutnnnttN同學你已選stu.retfactcourse()門課,具體如下nnendl;coutttt課程名稱tt成績nendl;while(T)coutttt cnamecname)gradeNext;j=0;q = q-Next;coutntt請按任意鍵繼續(xù).N

27、ext;char N20;system(cls);coutnntttt選課情況操作endl;if(q!=NULL)coutnnntt所有選課情況如下:nendl;coutnttt課程名稱tt選課人數(shù)nendl;elsecerrnnntt對不起,暫時沒有課程!請按任意鍵繼續(xù).sub.getkname(N);couttttNsetw(28-strlen(N)sub.retactivestudent()Next ;coutntt請按任意鍵繼續(xù).endl;return 1;int menu_1_4(studentdb *X,subjectdb *P) /退出系統(tǒng)menu_2_9(X,P);tuichu

28、();return 0;/管理端功能函數(shù)int menu_2_1(studentdb *P) /增加學生char N20;system(cls);coutnntttt增加學生操作nendl;coutN;coutendltt增加學生操作成功,按任意鍵繼續(xù)Next = P-Next ;newnode-stu.readname(N);P-Next = newnode ;return 1;int menu_2_2(subjectdb *P) /增加課程float k;char N20,M20;system(cls);coutnntttt增加課程操作nendl;coutN;coutNext;while(

29、q)q-sub.getkname(M);if(strcmp(N,M)=0)coutntt此課程已經(jīng)存在,按任意鍵繼續(xù)Next;coutk;coutntt增加課程操作成功,按任意鍵繼續(xù)Next = P-Next ;newnode-sub.setkname(N);newnode-sub.getcredit(k);P-Next = newnode ;return 1;int menu_2_3(studentdb *P) /刪除學生system(cls);coutnntttt刪除學生操作Next;if(q=NULL)return 1;int i;char N20,M20;coutN;i=0;while

30、(q)q-stu.getname(M);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;if(i=0)cerrntt沒有這個學生!請按任意鍵繼續(xù).1)coutntt共找到i個姓名為N的學生endl;coutk;if(ki|kNext;studentdb *R = P;j=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0)j+;if(j=k)R-Next = q-Next;free(q);coutntt刪除學生操作成功,按任意鍵繼續(xù).Next;R = R-Next;return 1; int menu_2_4(subjectdb *P) /刪除課程subjectdb *q=P-Next;char N20;system(cls);coutnntttt刪除課程操作endl;if(q!=NULL)coutnnntt所有課程如下:nendl;elsecerrnnntt對不起,暫時沒有課程!請按任意鍵繼續(xù).sub.getkname(N);coutttttNNext ;q = P-Next;subjectdb *R = P;if(q=NULL)return 1;char M20;coutM;while(q)q-sub.getkname(N);if(strcm

溫馨提示

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

評論

0/150

提交評論