學(xué)生選修課系統(tǒng)_第1頁(yè)
學(xué)生選修課系統(tǒng)_第2頁(yè)
學(xué)生選修課系統(tǒng)_第3頁(yè)
學(xué)生選修課系統(tǒng)_第4頁(yè)
學(xué)生選修課系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、-PAGE . z課 程 設(shè) 計(jì) 報(bào) 告課程名稱 算法與程序設(shè)計(jì) 課題名稱 學(xué)生選修課程管理系統(tǒng) 專(zhuān) 業(yè)* 班 級(jí)* 學(xué) 號(hào)* 姓 名 * 指導(dǎo)教師* 20*年*月 * 日學(xué)生選修課程系統(tǒng)(一)、課程設(shè)計(jì)題目:學(xué)生選修課程系統(tǒng)二、目的與要求: 1、目的: 1要求學(xué)生到達(dá)熟練掌握C+語(yǔ)言的根本知識(shí)和技能; 2根本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的根本思路和方法; 3能夠利用所學(xué)的根本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問(wèn)題。 2、根本要求: 1要求利用面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來(lái)完成系統(tǒng)的設(shè)計(jì); 2要求在設(shè)計(jì)的過(guò)程中,建立清晰的類(lèi)層次; 4在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 3、創(chuàng)新要求

2、: 在根本要求到達(dá)后,可進(jìn)展創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)展修改的功能。 4、寫(xiě)出設(shè)計(jì)說(shuō)明書(shū) 三、設(shè)計(jì)方法和根本原理: 1、問(wèn)題描述功能要求: 假定有n門(mén)課程,每門(mén)課程有課程編號(hào),課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開(kāi)課學(xué)期等信息,學(xué)生可按要求如總學(xué)分不得少于60自由選課。試設(shè)計(jì)一選修課程系統(tǒng),使之能提供以下功能:1系統(tǒng)以菜單方式工作2課程信息錄入功能(課程信息用文件保存)輸入3課程信息瀏覽功能輸出4查詢功能:(至少一種查詢方式)算法按學(xué)分查詢按課程性質(zhì)查詢5學(xué)生選修課程(可選項(xiàng))2、問(wèn)題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問(wèn)題解決分為以下步驟: 1分析系統(tǒng)中的各個(gè)實(shí)體之

3、間的關(guān)系及其屬性和行為; 2根據(jù)問(wèn)題描述,設(shè)計(jì)系統(tǒng)的類(lèi)層次; 3完成類(lèi)層次中各個(gè)類(lèi)的描述包括屬性和方法; 4完成類(lèi)中各個(gè)成員函數(shù)的定義; 5完成系統(tǒng)的應(yīng)用模塊; 6功能調(diào)試; 7完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說(shuō)明書(shū)。四辯論與評(píng)分標(biāo)準(zhǔn): 1、完成根本功能:40分; 2、設(shè)計(jì)報(bào)告及使用說(shuō)明書(shū):40分; 3、設(shè)置錯(cuò)誤或者按照要求改變結(jié)果:10分;4、答復(fù)下列問(wèn)題:10分。五、參考文獻(xiàn)含實(shí)驗(yàn)指導(dǎo)書(shū)譚浩強(qiáng)編,清華大學(xué)朱戰(zhàn)立等著,人民郵電,;含實(shí)驗(yàn)指導(dǎo)書(shū)莉著,清華大學(xué) 錢(qián)能主編 ,清華大學(xué) 戴鋒編著,清華大學(xué) 呂日著,清華大學(xué)美國(guó) Harvey M.Deitel 等 六、課程設(shè)計(jì)時(shí)間安排1、班級(jí):*2、指導(dǎo)

4、教師:*3、時(shí)間安排:2021.12.272021. 1.20目 錄1.封面 12.任務(wù)書(shū) . 23.目錄 54.正文 65.附錄 .136. 評(píng)分表 26一、需求分析1.系統(tǒng)設(shè)計(jì)目的與意義:擁有大量學(xué)生資料數(shù)據(jù)的高校,急需一工具高效省時(shí)簡(jiǎn)單進(jìn)展必要的數(shù)據(jù)錄入與查詢管理,而學(xué)生選修課管理系統(tǒng)滿足了高校師生的要求。通過(guò)此系統(tǒng),學(xué)生和管理者都能高效省時(shí)地完成各項(xiàng)工作。2.系統(tǒng)功能需求:可通過(guò)此系統(tǒng)進(jìn)展學(xué)生選課,查詢,更改,刪除,數(shù)據(jù)保存等一系列的操作。二構(gòu)造設(shè)計(jì)1.系統(tǒng)構(gòu)造圖:學(xué)生選修課程管理系統(tǒng)學(xué)生登陸端管理者登陸端學(xué)生選課學(xué)生信息選課查詢?cè)黾訉W(xué)生增加課程刪除學(xué)生刪除課程學(xué)生信息選課查詢保存數(shù)據(jù)

5、退出系統(tǒng)退出保存2.系統(tǒng)功能模塊劃分與設(shè)計(jì)系統(tǒng)功能模塊圖:1錄入模塊:選擇登錄方式2顯示模塊:顯示已錄入的數(shù)據(jù)3查找模塊:按要求查找所要數(shù)據(jù)4刪除模塊:刪除查出所要?jiǎng)h去的數(shù)據(jù)5修改模塊:修改查出指定的數(shù)據(jù)6保存模塊:保存數(shù)據(jù)7退出模塊:退出系統(tǒng)系統(tǒng)的功能模塊圖主菜單menu()學(xué)生登錄custom()menu_1_1();menu_1_2();menu_1_3();menu_1_4();管理員登錄server()menu_2_1();menu_2_2();menu_2_3();menu_2_4();menu_2_5();menu_2_6();menu_2_7();menu_2_8();menu

6、_2_9();menu_2_0();3.3函數(shù)模塊說(shuō)明函數(shù)模塊功能函數(shù)模塊功能menu()選修課系統(tǒng)主界面和登入方式的選擇custom()選修課系統(tǒng)學(xué)生端的主界面和操作方式的選擇menu_1_1()學(xué)生選課,由學(xué)生根據(jù)所給定的課程進(jìn)展選課menu_1_2()學(xué)生情況,查看學(xué)生根本情況menu_1_3()選課情況,查看學(xué)生選課情況menu_1_4()退出系統(tǒng),使用完畢即可平安退出menu_2_1()增加學(xué)生,新參加一個(gè)選課學(xué)生menu_2_2()刪除學(xué)生,刪除特定的選課學(xué)生menu_2_3()增加課程,增加選課課程menu_2_4()刪除課程,刪除選課課程menu_2_5()填寫(xiě)成績(jī),為每一門(mén)選

7、修課添加學(xué)生成績(jī)menu_2_6()更改學(xué)分,更改選課課程的學(xué)分menu_2_7()學(xué)生情況,查看學(xué)生情況menu_2_8()選課情況,查看選課情況menu_2_9()保存數(shù)據(jù),修改完畢要保存數(shù)據(jù)到文件里去menu_2_0()退出系統(tǒng),使用完畢即可平安退出3.類(lèi)層次圖本程序共有3個(gè)大類(lèi),course 類(lèi),subject 類(lèi)和student類(lèi),其中student類(lèi)可以調(diào)用subject類(lèi)中的數(shù)據(jù)成員,進(jìn)展課程查詢,學(xué)生信息查詢;通過(guò)course 類(lèi)的數(shù)據(jù)成員,可以查閱到由course 類(lèi)定義的學(xué)生信息,以及規(guī)定的課程信息。其次是subject 類(lèi),subject類(lèi)也可以調(diào)用student類(lèi)中的數(shù)

8、據(jù)成員,查閱選課情況。可以說(shuō)3個(gè)類(lèi)之間是相互補(bǔ)充,相互調(diào)用的.類(lèi)層次圖:StudentSubjectCourse4.類(lèi)視圖:Int ma*course;char sname;int factcoursefloat average();int retfactcourse();int retma*course()Student類(lèi)Course類(lèi)char ame;float gradefloat readcredit()Subject類(lèi)int ma*student;int activestudnet;float credit;float averagerusultfloat getaverage()i

9、nt retma*student()void clractivestudnet()三、使用說(shuō)明及功能實(shí)現(xiàn)運(yùn)行界面及文字說(shuō)明:在VC6.0環(huán)境下運(yùn)行該程序,會(huì)有如下顯示:主菜單:可選擇操作項(xiàng) 1.學(xué)生選課登陸;2.系統(tǒng)管理登陸操作1:學(xué)生登陸功能 1:學(xué)生選課輸入1進(jìn)展選課操作2:系統(tǒng)管理登陸局部功能如下:功能 1:登陸界面:功能 2:增加學(xué)生輸入 1:功能 3:保存數(shù)據(jù)到硬盤(pán) 輸入9:四、系統(tǒng)調(diào)試1.調(diào)試問(wèn)題出現(xiàn)的主要問(wèn)題:(主要是編譯語(yǔ)法錯(cuò)誤及修改)如:1.第289行:輸入字符不對(duì),指針的不準(zhǔn)確定位。改為: coutN同學(xué)你已選stu.retfactcourse()門(mén)課,具體如下endl;2

10、.第257行:輸入語(yǔ)法錯(cuò)誤:retrun改為:return3.第268行: 輸入語(yǔ)法錯(cuò)誤:類(lèi)以分號(hào)完畢修改:在類(lèi)體后加分號(hào);五、實(shí)訓(xùn)心得課程設(shè)計(jì)是我們專(zhuān)業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,也是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過(guò)程千里之行始于足下,通過(guò)這次課程設(shè)計(jì),我深深體會(huì)到這句千古名言的真正含義現(xiàn)在認(rèn)真的進(jìn)展課程設(shè)計(jì),腳踏實(shí)地邁開(kāi)這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的根底程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí) ,發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)我們的實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.隨著科學(xué)技術(shù)開(kāi)展的日新月異,當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說(shuō)得是無(wú)處不在。因

11、此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握程序開(kāi)發(fā)技術(shù)是十分重要的,而C+語(yǔ)言又是最常見(jiàn),功能最強(qiáng)大的一種高級(jí)語(yǔ)言,因此做好C+語(yǔ)言課程設(shè)計(jì)是十分必要的。熟悉C+集成開(kāi)發(fā)環(huán)境的使用,為今后程序和調(diào)試奠定根底;也更加熟練了C+ 根本語(yǔ)法、程序的根本構(gòu)造和調(diào)試一般程序的方法。兩周的課程設(shè)計(jì)完畢了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。通過(guò)幾天的課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)效勞,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在

12、設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,這畢竟第一次真真的做程序設(shè)計(jì),難免會(huì)遇到過(guò)各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的缺乏之處,對(duì)一些前面學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠結(jié)實(shí),比方說(shuō)構(gòu)造體,指針通過(guò)這次課程設(shè)計(jì)之后,我們把前面所學(xué)過(guò)的知識(shí)又重新溫故了一遍。通過(guò)這次選修課程設(shè)計(jì),我在多方面都有所提高。我比擬熟練地掌握了類(lèi)的使用,知道什么時(shí)候該用類(lèi),怎樣用類(lèi),怎樣利用類(lèi)的封裝性來(lái)保護(hù)數(shù)據(jù),建立數(shù)據(jù)與數(shù)據(jù)相結(jié)合的思想。在設(shè)計(jì)過(guò)程中遇到了許多問(wèn)題,有不該犯的,習(xí)慣性的錯(cuò)誤,也有因一些知識(shí)還未掌握而犯的錯(cuò)誤,不過(guò)經(jīng)過(guò)一次次的檢查,修改,編譯,漸漸的錯(cuò)誤也就少了,懂得知識(shí)也多了,同時(shí)也使自

13、己更加細(xì)心和耐心培養(yǎng)了獨(dú)立思考的能力以及綜合運(yùn)用知識(shí)的能力,也體會(huì)到了學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情,從中也發(fā)現(xiàn)了自己平時(shí)學(xué)習(xí)的缺乏和薄弱之處,從而加以彌補(bǔ)。在此由要感我們的*教師.她嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我學(xué)習(xí)的典范;教師循循善誘的教誨和不拘一格的思路給予我無(wú)盡的啟迪;而她開(kāi)朗的個(gè)性和寬容的態(tài)度,在很大程度上幫助了我順利的完成了這次課程設(shè)計(jì).同時(shí)也感我的同學(xué)們,你們對(duì)我的幫助和支持,讓我倍感溫暖。由于本人的設(shè)計(jì)能力有限,在設(shè)計(jì)過(guò)程中難免出現(xiàn)錯(cuò)誤,懇請(qǐng)教師們多多指教!六、附錄程序源代碼如下:*include *include *include *include *include

14、using namespace std; /定義課程class course /*個(gè)學(xué)生所學(xué)的課程中的*一個(gè)public:charame20; /課程名稱float grade; /課程成績(jī)course *Ne*t; /指向下一個(gè)課程的指針;/學(xué)生類(lèi)class studentpublic:student()root = NULL;const int ma*course = 5;factcourse = 0;void readname(char N ); /讀入學(xué)生的void getname(char N); /得到學(xué)生的void wrecourse(char N,float score); /

15、要據(jù)課程名寫(xiě)入學(xué)生課程的成績(jī)float average(); /學(xué)生課程的平均成績(jī)void addcourse(char N,float g); /給學(xué)生增加一門(mén)課int findcourse(char N); /查找是否已有此課程,如果有返回,如果沒(méi)有返回int retfactcourse() return factcourse; /得到所學(xué)的課程數(shù)目course *retroot() return root; /利用鍵表將所有的課程保存起來(lái)int retma*course() return 5; /得到最多可學(xué)的課程數(shù)目void clrroot() /清零root = NULL;factc

16、ourse = 0;private:char sname20; /學(xué)生的int ma*course; /學(xué)生最多可以學(xué)五門(mén)課程int factcourse; /學(xué)生實(shí)際所學(xué)的課程數(shù)目course *root; /課程的根結(jié)點(diǎn)指針;void student:readname (char N)/讀入學(xué)生的 strcpy(sname,N); void student:getname(char N)/得到學(xué)生的 strcpy(N,sname); void student:wrecourse(char N,float score)/要據(jù)課程名寫(xiě)入學(xué)生課程的成績(jī)course *p = root;if(p=

17、NULL)return;if(p!=NULL)p = p-Ne*t;while(p)if(strcmp(p-ame,N)=0)p-grade = score;p = p-Ne*t;float student:average()/學(xué)生課程的平均成績(jī)float aver=0.0;course *p = root;while (p) aver = aver+p-grade; aver = aver/factcourse;return aver; void student:addcourse (char N,float g)/給學(xué)生增加一門(mén)課course *s = new course;s-Ne*t=

18、NULL;if(root = NULL)root = s;course *p = root;course *newcourse = new course;newcourse-Ne*t = p-Ne*t;p-Ne*t=newcourse;strcpy(newcourse-ame,N);newcourse-grade = g;factcourse+;int student:findcourse (char N)/查找是否已有此課程,如果有返回,如果沒(méi)有返回course *p = root;if(root=NULL)return 0;p = p-Ne*t;while(p) if(strcmp(p-a

19、me,N)=0)return 1;p = p-Ne*t;return 0; class studentdbpublic:student stu;studentdb *Ne*t; ;class studentnamepublic:char tname20; /學(xué)生的名字float result; /學(xué)生所得的該課程分?jǐn)?shù)studentname *Ne*t; ; /課程類(lèi)class subjectpublic:subject()first = NULL;ma*student=30;activestudnet=0; float readcredit(); /得到課程的學(xué)分void getcredit(

20、float a); /設(shè)置學(xué)分float getaverage(); /得到學(xué)生的平均成績(jī)float getresult(char N); /查找*個(gè)學(xué)生的成績(jī)void getkname(char N); /讀出課程的名稱void setkname(char N); /讀入課程的名稱studentname *retfirst() return first; /返回根結(jié)點(diǎn)void findstudent(studentdb *P); /根據(jù)該課程的名稱,尋找選這課程的學(xué)生int retactivestudent() return activestudnet; /返回實(shí)際學(xué)生數(shù)int retma*

21、student() return 30; /返回最多學(xué)生數(shù)void clractivestudnet() activestudnet = 0; /從文件中讀出來(lái)后將實(shí)際學(xué)生數(shù)清零private:int ma*student; /最多學(xué)生數(shù)int activestudnet; /實(shí)際學(xué)生數(shù)studentname *first; /學(xué)生float credit; /該課程的學(xué)分float averagerusult; /該課程的平均成績(jī)char kname20; /該課程的名稱;float subject:readcredit ()/得到課程的學(xué)分 return credit; void subj

22、ect:getcredit (float a)/設(shè)置學(xué)分 credit=a; float subject:getaverage()/得到學(xué)生的平均成績(jī)float k = 0.0;studentname *p;p=first-Ne*t;if(p=NULL)return 0;while(p)k = k + p-result;p = p-Ne*t ; return k/activestudnet; float subject:getresult (char N) /查找*個(gè)學(xué)生的成績(jī)studentname *p;p = first;while(p)if(strcpy(p-tname ,N)=0)re

23、turn p-result;p = p-Ne*t ; return -1; void subject:getkname (char N) /讀出課程的名稱 strcpy(N,kname); void subject:setkname (char N) /讀入課程的名稱 strcpy(kname,N); void subject:findstudent(studentdb *P) /根據(jù)該課程的名稱,尋找選這課程的學(xué)生studentname *newcode = new studentname;newcode-Ne*t=NULL;first = newcode;studentname *T =

24、first;studentdb *K = P-Ne*t;while(K)course *Y = K-stu.retroot();if(Y =NULL) K = K-Ne*t;continue; if(Y!=NULL)Y = Y-Ne*t;while(Y) if(strcmp(Y-ame,kname)=0)studentname *Acode = new studentname;char Name20;K-stu.getname(Name);strcpy(Acode-tname,Name);Acode-result = Y-grade;Acode-Ne*t = T-Ne*t;T-Ne*t = A

25、code;activestudnet = activestudnet + 1;break; Y = Y-Ne*t; K = K-Ne*t; return ; void tuichu()system(cls); coutendlendlendl; cout 你使用選修課小系統(tǒng)endl;cout 此軟件難免有缺乏之處,請(qǐng)諒解endl;cout 懇請(qǐng)您提出珍貴意見(jiàn)。! endl; getch();e*it(-1); /總菜單char menu()char a3,c,i;coutendlendlendl;cout 歡送來(lái)到選修課系統(tǒng) endlendl;cout 制作人:*;班級(jí):*; *:*endle

26、ndlendl;cout * endl;cout * * endl;cout * 選修課小系統(tǒng) * endl;cout * 操作方式: * endl;cout * 1.選修課系統(tǒng)學(xué)生端 * endl;cout * 2.選修課系統(tǒng)管理端 * endl;cout * * endl;cout * endlendl;cout 請(qǐng)選擇登入方式: a;if(strlen(a)=1)for(i=1;i=2;i+)c=i;if(c=a0)return c; /選修課系統(tǒng)端操作char custom()char A10;char b;char i;system(cls);coutendlendlendlendl

27、;cout endl;cout endl;cout 選修課系統(tǒng)學(xué)生端 endl;cout endl;cout 操作方式: endl;cout 1.學(xué)生選課. 2.學(xué)生情況. endl;cout endl;cout endl;cout 3.選課情況. 4.退出系統(tǒng). endl;cout endl;cout endlendl;cout 請(qǐng)選擇操作方式: A;if(strlen(A)=1)for(i=1;i=4;i+)b=i;if(b=A0) return b; char server()char A10;system(cls);char b;char i;int k = 0;coutendlend

28、lendlendl;cout endl;cout endl;cout 選修課系統(tǒng)管理端 endl;cout endl;cout .操作方式: endl;cout 1.增加學(xué)生 2.增加課程 endl;cout 3.刪除學(xué)生 4.刪除課程 endl;cout 5.填寫(xiě)成績(jī) 6.更改學(xué)分 endl;cout 7.學(xué)生情況 8.選課情況 endl;cout 9.保存數(shù)據(jù) 0.退出系統(tǒng) endl;cout endl;cout endl;cout 請(qǐng)選擇操作方式: A;if(strlen(A)=1)for(i=0;i=9;i+)b=i;if(b=A0)return b; struct subjectdb

29、subject sub;subjectdb *Ne*t;int menu_2_7(studentdb *P);int menu_2_9(studentdb *Y,subjectdb *P);int menu_2_8(subjectdb *P);/學(xué)生端功能函數(shù)int menu_1_1(studentdb *P,subjectdb *) /學(xué)生選課system(cls);cout 學(xué)生選課操作Ne*t;int i;char N20,M20;if(q!=NULL)cout 所有學(xué)生如下:endl;elsecout 對(duì)不起,暫時(shí)沒(méi)有學(xué)生!請(qǐng)先創(chuàng)立!請(qǐng)按任意鍵繼續(xù).stu.getname(N);cou

30、tNNe*t ; q = P-Ne*t;if(q=NULL)return 1;cout 請(qǐng)輸入學(xué)生:N;i=0;q=P-Ne*t;while(q)q-stu.getname(M);if(strcmp(N,M)=0)i+;q = q-Ne*t; int j=0,k=1;if(i=0)cout沒(méi)有這個(gè)學(xué)生! 請(qǐng)按任意鍵返回.1)cout共找到i個(gè)為N的學(xué)生endl;cout選擇第幾個(gè):k; if(ki|k=0)cout輸入有誤!按任意鍵繼續(xù)Ne*t;j=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0)j+;if(j=k)if(q-stu.retfactcou

31、rse()=q-stu.retma*course()cout所選課程已滿!按任意鍵繼續(xù)Ne*t;char N120;if(t!=NULL)cout所有課程如下:endl;cout課程名稱 學(xué)分endl; elsecout對(duì)不起,暫時(shí)沒(méi)有課程sub.getkname(N1);coutN1setw(26-strlen(N1)sub.readcredit()Ne*t ; char N220;cout 輸入你所要選的課程: N2;t = *-Ne*t;while(t)t-sub.getkname(N1);if(strcmp(N1,N2)=0)if(q-stu.findcourse(N2)=1)cout

32、此課程你已選過(guò)了,不能再選.按任意鍵繼續(xù)Ne*t;char NA20;while(t)t-sub.getkname(NA);if(strcmp(NA,N2)=0)if(t-sub.retactivestudent()=t-sub.retma*student ()cout此課程已選滿,不能選.按任意鍵繼續(xù)Ne*t; q-stu.addcourse(N2,0.0);cout選課成功!按任意鍵繼續(xù)Ne*t; cout沒(méi)有此課程!按任意鍵繼續(xù)Ne*t; return 1; int menu_1_2(studentdb *P,subjectdb *) /學(xué)生情況studentdb *q=P-Ne*t;c

33、har N20;system(cls);cout學(xué)生情況操作endl;int i;if(q!=NULL)cout所有學(xué)生選課信息如下: endlendl;cout 選課情況endl; elsecout對(duì)不起,暫時(shí)沒(méi)有學(xué)生!請(qǐng)按任意鍵繼續(xù).stu.getname(N);coutNsetw(25-strlen(N) 已選stu.retfactcourse() 門(mén)課Ne*t ; char M20;coutM;i=0;q=P-Ne*t;while(q)q-stu.getname(N);if(strcmp(N,M)=0)i+;q = q-Ne*t; int j=0,k=1;if(i=0)cout沒(méi)找到這

34、個(gè)學(xué)生!請(qǐng)按任意鍵繼續(xù).1)cout共找到i個(gè)為M的學(xué)生endl;coutk; if(ki|k=0)cout輸入有誤!按任意鍵繼續(xù).Ne*t;j=0;q=P-Ne*t;while(q)q-stu.getname(N);if(strcmp(N,M)=0)j+;if(j=k)course *T=q-stu.retroot();if(T=NULL)coutN同學(xué)你還未選課! 請(qǐng)按任意鍵繼續(xù).Ne*t;coutN同學(xué)你已選stu.retfactcourse()門(mén)課,具體如下endl;cout課程名稱 成績(jī)endl;while(T)coutameame)gradeNe*t; j=0; q = q-Ne*

35、t; cout請(qǐng)按任意鍵繼續(xù).Ne*t;char N20;system(cls);cout選課情況操作endl;if(q!=NULL)cout所有選課情況如下: endl;cout課程名稱 選課人數(shù)endl; elsecout對(duì)不起,暫時(shí)沒(méi)有課程!請(qǐng)按任意鍵繼續(xù).sub.getkname(N);coutNsetw(28-strlen(N)sub.retactivestudent()Ne*t ; cout請(qǐng)按任意鍵繼續(xù).endl;return 1; int menu_1_4(studentdb *,subjectdb *P) /退出系統(tǒng)menu_2_9(*,P);tuichu();return

36、0; /管理端功能函數(shù)int menu_2_1(studentdb *P) /增加學(xué)生char N20;system(cls);cout增加學(xué)生操作nendl;cout請(qǐng)輸入學(xué)生:N;coutendl增加學(xué)生操作成功,按任意鍵繼續(xù)Ne*t = P-Ne*t ;newnode-stu.readname(N);P-Ne*t = newnode ;return 1; int menu_2_2(subjectdb *P) /增加課程float k;char N20,M20;system(cls);cout增加課程操作endl;cout 請(qǐng)輸入課程名稱:N;coutNe*t;while(q)q-sub.

37、getkname(M);if(strcmp(N,M)=0)cout此課程已經(jīng)存在,按任意鍵繼續(xù)Ne*t; coutk;cout增加課程操作成功,按任意鍵繼續(xù)Ne*t = P-Ne*t ;newnode-sub.setkname(N);newnode-sub.getcredit(k);P-Ne*t = newnode ;return 1; int menu_2_3(studentdb *P) /刪除學(xué)生system(cls);cout刪除學(xué)生操作Ne*t;if(q=NULL)return 1;int i;char N20,M20;cout請(qǐng)輸入要?jiǎng)h除的學(xué)生:N;i=0;while(q)q-stu

38、.getname(M);if(strcmp(N,M)=0)i+;q = q-Ne*t; int j=0,k=1;if(i=0)cout沒(méi)有這個(gè)學(xué)生!請(qǐng)按任意鍵繼續(xù).1)cout共找到i個(gè)為N的學(xué)生endl;cout要?jiǎng)h除第幾個(gè):k; if(ki|kNe*t;studentdb *R = P;j=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0)j+;if(j=k)R-Ne*t = q-Ne*t;free(q);cout刪除學(xué)生操作成功,按任意鍵繼續(xù).Ne*t;R = R-Ne*t; return 1; int menu_2_4(subjectdb *P)

39、/刪除課程subjectdb *q=P-Ne*t;char N20;system(cls);cout刪除課程操作endl;if(q!=NULL)cout所有課程如下: endl;elsecerr對(duì)不起,暫時(shí)沒(méi)有課程!請(qǐng)按任意鍵繼續(xù).sub.getkname(N);coutNNe*t ; q = P-Ne*t;subjectdb *R = P;if(q=NULL)return 1;char M20;cout 請(qǐng)輸入要?jiǎng)h除的課程:M;while(q)q-sub.getkname(N);if(strcmp(N,M)=0)R-Ne*t = q-Ne*t;free(q);cout刪除課程操作成功,按任意

40、鍵繼續(xù)Ne*t;R = R-Ne*t; cout沒(méi)有此課程!請(qǐng)按任意鍵繼續(xù).Ne*t;char M20,N20,NA20;float score;system(cls);cout 填寫(xiě)成績(jī)操作endl;if(q!=NULL)cout課程名稱 選課人數(shù)endl;elsecout對(duì)不起,暫時(shí)沒(méi)有任何選修課程。請(qǐng)按任意鍵繼續(xù).sub.getkname(N);coutNsetw(28-strlen(N)sub.retactivestudent()Ne*t ; q = P-Ne*t;cout請(qǐng)輸入課程名稱:M;while(q)q-sub.getkname(N);studentname *K = q-su

41、b.retfirst();if(K!=NULL)K = K-Ne*t;if(strcmp(N,M)=0)if(K!=NULL)cout請(qǐng)?zhí)顚?xiě)選修M的學(xué)生成績(jī)endl;cout 成績(jī)endl; if(K=NULL)cout無(wú)任何信息!請(qǐng)按任意鍵繼續(xù).endl;while(K)couttnamescore;studentdb * = *-Ne*t;while(*)*-stu.getname(NA);if(strcmp(NA,K-tname)=0)*-stu.wrecourse(M,score);* = *-Ne*t; K = K-Ne*t; if(K=NULL)cout填寫(xiě)成績(jī)完畢!請(qǐng)按任意鍵繼續(xù)

42、.Ne*t; cout沒(méi)有此課程!請(qǐng)按任意鍵繼續(xù).endl;return 1; int menu_2_6(subjectdb *P) /更改學(xué)分float k;system(cls);cout更改學(xué)分操作Ne*t;char N20,M20;if(q!=NULL)cout 所有課程如下: endl;elsecout對(duì)不起,暫時(shí)沒(méi)有任何可選課程。請(qǐng)按任意鍵繼續(xù).sub.getkname(N);coutNNe*t ; q = P-Ne*t;cout請(qǐng)輸入要改的課程:M;while(q)q-sub.getkname(N);if(strcmp(N,M)=0)cout原來(lái)學(xué)分為:sub.readcredi

43、t()endl;cout現(xiàn)要更改為:k;q-sub.getcredit(k);cout更改課程學(xué)分成功,按任意鍵繼續(xù)Ne*t; cout無(wú)此課程!請(qǐng)按任意鍵繼續(xù).Ne*t;char N20;system(cls);cout學(xué)生情況操作endl;if(q!=NULL)cout所有學(xué)生如下: endl;elsecout對(duì)不起,暫時(shí)沒(méi)有學(xué)生!請(qǐng)按任意鍵繼續(xù).stu.getname(N);coutNendl;coutNe*t ; cout按任意鍵繼續(xù).Ne*t;char M20,N20;system(cls);cout選課情況操作endl;if(q!=NULL)cout所有選課情況如下: endl;c

44、out課程名稱 選課人數(shù)endl; elsecout對(duì)不起,暫時(shí)沒(méi)有課程!請(qǐng)按任意鍵繼續(xù).sub.getkname(N);coutNsetw(28-strlen(N)sub.retactivestudent()Ne*t ; q = P-Ne*t;cout請(qǐng)輸入課程名稱:M;while(q)q-sub.getkname(N);studentname *K = q-sub.retfirst();if(K!=NULL)K = K-Ne*t;if(strcmp(N,M)=0)system(cls);if(K=NULL)cerr無(wú)任何選課信息!請(qǐng)按任意鍵繼續(xù).endl;return 1;cout選修M課

45、的學(xué)生如下: endl;cout 成績(jī)endl;while(K)couttnametname)resultNe*t; cout請(qǐng)按任意鍵繼續(xù).Ne*t; cout無(wú)此課程!請(qǐng)按任意鍵繼續(xù).Ne*t;subjectdb * = P-Ne*t;system(cls);fstream file(subject.t*t,ios:out);while(*)file.write (char *)&(*-sub),sizeof(*-sub);* = *-Ne*t; file.close();fstream file1(student.t*t,ios:out);fstream file2(course.t*t,ios:out);while(Z)file1.write (char *)&(Z-stu),sizeof(Z-stu);int time = Z-stu.retfactcourse();course *co = Z-stu.retroot(),*co1;if(co!=NULL)co1 = co-Ne*t;while(time)file2.write(char *)(co1),sizeof(*co1);co1 = co1-Ne*t;time = time - 1; Z = Z-Ne*t; file2

溫馨提示

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

評(píng)論

0/150

提交評(píng)論