版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1、課題目標(biāo)11.1 設(shè)計(jì)要求1.1.2 選題背景1.1.3 課題意義1.1.4 功能需求分析2.1.5 系統(tǒng)功能分析2.2、程序具體實(shí)現(xiàn)原理32.1 總體方案3.2.1.1 開發(fā)平臺(tái)3.2.1.2 基本原理4.2.1.3 數(shù)據(jù)結(jié)構(gòu)4.2.1.4 類的UML圖5.2.1.5 模塊說明6.2.2 程序各個(gè)功能說明7.2.2.1 程序結(jié)構(gòu)7.2.2.2 課程設(shè)計(jì)要求的實(shí)現(xiàn)9.3、調(diào)試報(bào)告143.1 遇到的問題及解決辦法1.43.2 程序調(diào)試及運(yùn)行結(jié)果1.5.4、總結(jié)195、參考文獻(xiàn)19附錄201、課題目標(biāo)1.1 設(shè)計(jì)要求假定有n門課程,每門課程有課程編號(hào),課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)
2、或上機(jī)學(xué)時(shí),學(xué)分,開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于10)自由選課。試設(shè)計(jì)一個(gè)選修課程系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作;2 .課程信息錄入功能(課程信息用文件保存);3 .課程信息瀏覽功能;4 .查詢功能(至少一種查詢方式:按學(xué)分查詢、按課程性質(zhì)查詢);5 .學(xué)生選修課程。6 .2選題背景當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最到好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信
3、息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好學(xué)生選課信息而設(shè)計(jì)的。隨著高校的多樣全面發(fā)展,學(xué)生的人數(shù)和課程的種類急速增加,傳統(tǒng)的選課管理模式已經(jīng)無法滿足當(dāng)前的實(shí)際需求,學(xué)生選課作為一種信息資源的集散地,包含很多的信息數(shù)據(jù)的管理。由于數(shù)據(jù)繁多,容易丟失,且不易查找。并且數(shù)據(jù)處理手工操作工作量大,出錯(cuò)率高,出錯(cuò)后不易更改,造成各種不便,總的來說,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的學(xué)校有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是學(xué)生選課管理信息系統(tǒng)的開發(fā)基本環(huán)境背景。7 .3課題意義基于以上問題,我們認(rèn)為有必要建立一個(gè)學(xué)生選課
4、管理信息系統(tǒng),使學(xué)生選課信息管理工作規(guī)范化、系統(tǒng)化、程序化,以避免學(xué)生選課管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改選課情況系統(tǒng)實(shí)現(xiàn)后,極大的方便對(duì)學(xué)生進(jìn)行選課和選課后班級(jí)的安排管理工作,學(xué)生選課信息的管理。避免在安排課程信息的滯后,減少信息交流的繁瑣過程及其帶來的額外開銷。促進(jìn)高校教育的計(jì)算機(jī)信息化進(jìn)程,提高高校的工作效率。并且對(duì)于系統(tǒng)本身而言,具有更高的使用性、安全性。能夠滿足學(xué)生選課,以及學(xué)生對(duì)選課信息的管理。同時(shí),通過該課程設(shè)計(jì),我們可以達(dá)到把C+取序設(shè)計(jì)理論知識(shí)更加的鞏固加深,加強(qiáng)動(dòng)手操作能力與實(shí)踐能力,學(xué)以致用,與現(xiàn)實(shí)生活中的應(yīng)用充分的結(jié)合起來,也實(shí)
5、現(xiàn)了知識(shí)的活學(xué)活用。8 .4功能需求分析一個(gè)完善的學(xué)生選課管理信息系統(tǒng)能夠極大的提高學(xué)生選課信息的管理效率,具有檢索迅速,查找方便,可靠性高,存儲(chǔ)量大,更新快,壽命長(zhǎng),成本低等優(yōu)點(diǎn)。本系統(tǒng)主要可以實(shí)現(xiàn)以下任務(wù)目標(biāo):1、系統(tǒng)可以準(zhǔn)確的記錄和查詢學(xué)生、老師以及所開設(shè)的課程的基本信息2、學(xué)生登錄系統(tǒng)后可以根據(jù)本專業(yè)制定的教學(xué)計(jì)劃進(jìn)行選課操作,可以查詢個(gè)人的基本信息性能需求:本學(xué)生信息管理系統(tǒng)要能夠抵御用戶可能的各種操作,包括修改、更新、刪除等操作,以保證軟件的可行性、穩(wěn)定性、健壯性,同時(shí)要對(duì)數(shù)據(jù)進(jìn)行檢驗(yàn),保證數(shù)據(jù)有效性,可操作性,安全性。同時(shí)普通用戶登錄只有瀏覽的權(quán)限。系統(tǒng)的非功能性需求:實(shí)用性:系
6、統(tǒng)以用戶需求為目標(biāo),以方便用戶為原則。根據(jù)用戶實(shí)際的需求情況,度身訂造一套先進(jìn)的局域網(wǎng)數(shù)據(jù)傳輸,從用戶角度出發(fā)盡可能的方使用戶使用,滿足基本的用戶需要,成為學(xué)校等通用的網(wǎng)絡(luò)軟件。高可靠性:一個(gè)實(shí)用的系統(tǒng)同時(shí)必須是可靠的,本設(shè)計(jì)通過合理而先進(jìn)的網(wǎng)絡(luò)設(shè)計(jì)以及軟、硬件的優(yōu)化選型,可保證系統(tǒng)數(shù)據(jù)傳輸?shù)恼_性。高安全性:在設(shè)計(jì)中,將充分利用網(wǎng)絡(luò)軟、硬件提供的各種安全措施,既可以保證用戶共享資源,同時(shí)也可保證關(guān)鍵數(shù)據(jù)的安全性??蓴U(kuò)展性及靈活性:系統(tǒng)的設(shè)計(jì)以方便未來業(yè)務(wù)的擴(kuò)展和系統(tǒng)擴(kuò)充為目標(biāo),系統(tǒng)要求能夠方便的升級(jí),充分保護(hù)系統(tǒng)的投資。智能型:系統(tǒng)在設(shè)計(jì)時(shí),充分考慮系統(tǒng)運(yùn)行的智能性,在使用系統(tǒng)一段時(shí)問后,系
7、統(tǒng)可以適應(yīng)于任何局域網(wǎng)。9 .5系統(tǒng)功能分析根據(jù)設(shè)計(jì)要求,我們認(rèn)為該系統(tǒng)應(yīng)該包括:(1)課程信息輸入功能;(2)課程信息瀏覽功能;(3)按學(xué)分查詢功能;(4)按課程性質(zhì)查詢功能;(5)數(shù)據(jù)保存功能;(6)正確退出系統(tǒng)功能。其中對(duì)于課程信息輸入功能可以有兩個(gè)實(shí)現(xiàn)途徑:直接在系統(tǒng)中根據(jù)提示輸入;根據(jù)系統(tǒng)的功能在相應(yīng)文件下建立text文件直接輸入課程信息。對(duì)于其余四個(gè)功能則主要是供學(xué)生選課使用。本程序?qū)⒄n程性質(zhì)統(tǒng)一規(guī)定為考試和考查兩種;數(shù)據(jù)保存功能是為了保證在系統(tǒng)中直接輸入的課程信息順利保存到text文件。2、程序具體實(shí)現(xiàn)原理2.1總體方案首先根據(jù)設(shè)計(jì)要求,我們定義了三個(gè)類:Class類,Contr
8、ol類,Menu類。Class類用來存放一系列課程的信息,以及一些獲取信息的get函數(shù);Control類是用來定義選課類的操作屬性,從Control類里面來判斷并實(shí)現(xiàn)用戶所需要執(zhí)行的動(dòng)作;Menu類定義了菜單的操作,其中包括顯示菜單,顯示提示信息,獲取用戶從鍵盤輸入的信息并執(zhí)行。針對(duì)Class類的定義,首先我們定義了一系列的設(shè)置相關(guān)課程信息的公有函數(shù),用來將輸入的內(nèi)容傳給私有函數(shù),其次定義了常函數(shù),目的是為了防止數(shù)據(jù)被其它函數(shù)調(diào)用時(shí)發(fā)生改變,同時(shí)將學(xué)分定義為浮點(diǎn)型,范圍在010之間。針對(duì)Menu類的定義,我們先定義了一個(gè)獲取鍵盤輸入的函數(shù)getInput(),用于獲取數(shù)據(jù),接著定義了界面友好的
9、顯示目錄函數(shù),使得用戶進(jìn)行操作更加方便,最后定義了一系列的顯示提示信息函數(shù)。為了使得在今后的修改中更加清楚方便,我們將這些函數(shù)獨(dú)立分開。針對(duì)Control類的定義,因?yàn)樗哪康氖怯糜谂袛嗖?shí)現(xiàn)用戶所要執(zhí)行的操作,是學(xué)生選課系統(tǒng)的核心。一切從start()函數(shù)開始,通過switch語句判斷按下了哪個(gè)數(shù)字鍵,然后執(zhí)行對(duì)應(yīng)的操作,在文件錄入這一方面,我定義了一個(gè)initIalization()函數(shù),首先建立一個(gè)輸入流,打開文件,將用戶錄入的課程信息放入到變量中,再由變量放入文件中。其中的公有函數(shù)即課程設(shè)計(jì)所要求的功能部分:添加選課,瀏覽選課,查詢選課,保存文件。私有函數(shù)我們用了鏈表,classLis
10、t,用來一條一條記錄課程信息,方便添加瀏覽以及查詢。兩種查詢方法都運(yùn)用了迭代器的功能,迭代器的作用相當(dāng)于指針,從鏈表的頭部一個(gè)個(gè)指向鏈表的末尾,用于瀏覽以及查詢部分。最后把迭代器指向的對(duì)象每個(gè)字段寫入文件中,文件名定義為classSave保存到程序的當(dāng)前目錄下。最后主函數(shù)的實(shí)現(xiàn),代碼十分簡(jiǎn)單,先定義一個(gè)Control類的對(duì)象,ControlClass,再通過controlClass.start()啟動(dòng)整個(gè)程序。2.1.1開發(fā)平臺(tái)操作系統(tǒng):Win7開發(fā)軟件:MirosoftVisualC+6.02.1.2基本原理2.1.3數(shù)據(jù)結(jié)構(gòu)表1數(shù)據(jù)結(jié)構(gòu)表數(shù)據(jù)名稱數(shù)據(jù)類型解釋classNumstring課程
11、編號(hào)classNamestring課程名稱classPropertiesstring課程性質(zhì)totalClassNumberInt總課時(shí)currentClassNumberInt授課學(xué)時(shí)expClassNumberInt上級(jí)或?qū)嶒?yàn)學(xué)時(shí)creditDouble學(xué)分rightTermstring開課學(xué)期2.1.4類的UML圖表2Class類的UML圖Class-ClassNum:string-ClassName:string-ClassProperties:string-TotalClassNumber:int-currentClassNumber:int-ExpClassNumber:int-c
12、redit:double-rightTerm:string+setClassNum(classNumTemp:string)+setClassName(classNameTemp:string)+setClassProperties(classPropertiesTemp:string)+setTotalClassNumber(totalClassNumberTemp:int)+setCurrentClassNumber(currentClassNumber:int)+setExpClassNumber(expClassNumberTemp:int)+setCredit(credit:doub
13、le)+setRightTerm(rightTermTemp:string)<<const>>+getClassNum():string<<const>>+getClassName():string<<const>>+getClassProperties():string<<const>>+getTotalClassNumber():int<<const>>+getCurrentClassNumber():int<<const>>+getExpClas
14、sNumber():int<<const>>+getCredit():double<<const>>+getRightTerm():string表3Menue類的UML圖Menue<<static>>+getInput():char<<static>>+showMenu():void<<static>>+clearScreen():void<<static>>+pauseScreen():void<<static>>+showA
15、ddClass():void<<static>>+showBrowseClass():void<<static>>+showSearchByCredit():void<<static>>+showSearchByClassProperties():void<<static>>+showAddClassNum():void<<static>>+showAddClassName():void<<static>>+showAddClassProperties
16、():void<<static>>+showAddCurrentClassNumber():void<<static>>+showAddExpClassNumber():void<<static>>+showLoadingSaving():void<<static>>+showSuccessedSaving():void<<static>>+showEachClassInfo(ClassclassTemp):void<<static>>+quit():
17、void表4Control類的UML圖Control-classList:list<Class>+Control()+Start():void+initIalization():void+addClass():void+quit():void+showAllClass():void+searchByCredit():void+searchByClassProperties():void+saveClass():bool2.1.5模塊說明(1)課程信息錄入。課程信息錄入應(yīng)包括:課程編號(hào)、課程名稱、課程性質(zhì)、總學(xué)時(shí)、授課學(xué)時(shí)、實(shí)驗(yàn)學(xué)時(shí)、學(xué)分、開課信息八個(gè)成員,為錄入以上信息,首先使用s
18、etClassNum、setClassName、setClassProperties、setTotalClassNumbersetCurrentClassNumbersetExpClassNumbersetCredit、setRightTerm輸出提示信息,其次使用addClass函數(shù)添加課程信息。(2)課程信息瀏覽。該功能主要是讀取所有的課程信息,在程序中首先通過getClassNum、getClassNamegetClassPropertiesgetTotalClassNumber、getCurrentClassNumbergetExpClassNumbeKgetCredit、getRig
19、htTerm/l個(gè)函數(shù)讀取課程信息的相關(guān)信息,設(shè)置為靜態(tài)成員函數(shù),防止已錄入的數(shù)據(jù)被篡改;其次使用showclassshoweachclassinfo函數(shù)顯示全部課程信息。(3)按學(xué)分查詢。首先使用getCredit函數(shù)得到課程的學(xué)分信息,其次使用searchByCredit函數(shù)輸出“按學(xué)分查詢”的提示信息;接著使用showAddCredit函數(shù)輸出“請(qǐng)輸入學(xué)分”的提示信息;最后使用showSearchByCredit函數(shù)將查詢結(jié)果輸出。(4)按課程性質(zhì)查詢。按照課程性質(zhì)的查詢實(shí)現(xiàn)了根據(jù)課程的性質(zhì)對(duì)課程的查詢,程序主要通過、showAddClassProperties、setClassProp
20、erties、getClassPropertiessearchByClassPropertiesshowSearchByClassProperties來實(shí)現(xiàn)對(duì)課程的查詢,同樣全部設(shè)置為靜態(tài)成員函數(shù),已經(jīng)錄入的數(shù)據(jù)部能被篡改,根據(jù)提示輸入就能得到想要查詢的內(nèi)容。(5)存儲(chǔ)信息。選擇存儲(chǔ)信息選項(xiàng)之后用showLoadingSaving函數(shù)進(jìn)行數(shù)據(jù)的存儲(chǔ),顯示正在存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)完畢后用showSuccessedSavingS數(shù)顯示輸出數(shù)據(jù)存儲(chǔ)完畢。(6)退出系統(tǒng)。一個(gè)完整的系統(tǒng)應(yīng)該包括退出系統(tǒng),在程序中使用quit函數(shù),在按數(shù)字鍵6后給出提示信息:“pressanykeytocontinue提示
21、使用者按任意鍵退出系統(tǒng)。2.2程序各個(gè)功能說明2.2.1 程序結(jié)構(gòu)將class類的屬性和行為進(jìn)行封裝:1 .Class的封裝classClass定義了課程類的一些屬性public:voidsetClassNum(stringclassNumTemp);/課程編號(hào)voidsetClassName(stringclassNameTemp);/課程名稱voidsetClassProperties(stringclassPropertiesTemp);/課程性質(zhì)voidsetTotalClassNumber(inttotalClassNumberTemp);/總學(xué)時(shí)voidsetCurrentClas
22、sNumber(intcurrentClassNumber);/授課學(xué)時(shí)voidsetExpClassNumber(intexpClassNumberTemp);/實(shí)驗(yàn)或上機(jī)學(xué)時(shí)voidsetCredit(doublecredit);/學(xué)分voidsetRightTerm(stringrightTermTemp);/開課信息/錄入函數(shù)設(shè)為常量函數(shù)防止信息被篡改stringgetClassNum()const;/課程編號(hào)錄入stringgetClassName()const;/課程名稱錄入stringgetClassProperties()const;/課程性質(zhì)錄入intgetTotalClas
23、sNumber()const;/總學(xué)時(shí)錄入intgetCurrentClassNumber()const;/授課學(xué)時(shí)錄入intgetExpClassNumber()const;/實(shí)驗(yàn)或上機(jī)學(xué)時(shí)錄入doublegetCredit()const;/學(xué)分錄入stringgetRightTerm()const;/開課信息錄入/class類的私有成員private:stringclassNum;/課程編號(hào)stringclassName;/課程名稱stringclassProperties;/課程性質(zhì)inttotalClassNumber;/總學(xué)時(shí)intcurrentClassNumber;/授課學(xué)時(shí)in
24、texpClassNumber;/上級(jí)或?qū)嶒?yàn)學(xué)時(shí)doublecredit;/學(xué)分stringrightTerm;/開課學(xué)期;2 .Menu類的封裝/menu類主要實(shí)現(xiàn)系統(tǒng)的主界面classMenupublic:charstaticgetInput();voidstaticshowMenu();/顯示菜單voidstaticclearScreen();/清屏voidstaticpauseScreen();暫停voidstaticshowAddClass();/顯示添加課程信息的提示語voidstaticshowBrowseClass();/voidstaticshowSearchByCredit
25、();/顯示按學(xué)分查詢的提示語voidstaticshowSearchByClassProperties();顯示按課程性質(zhì)查詢的提示語voidstaticshowAddClassNum();/顯示輸入課程編號(hào)的的提示語voidstaticshowAddClassName();/顯示增加課程名稱的提示語voidstaticshowAddClassProperties();/顯示輸入課程性質(zhì)的提示語voidstaticshowAddTotalClassNumber();/顯示輸入總學(xué)時(shí)的提示語voidstaticshowAddCurrentClassNumber();/顯示授課學(xué)時(shí)的提示語voi
26、dstaticshowAddExpClassNumber();顯示輸入實(shí)驗(yàn)學(xué)時(shí)的提示語voidstaticshowAddCredit();顯示輸入學(xué)分的提示語voidstaticshowAddRightTerm();/顯示開課學(xué)期的提示語voidstaticshowLoadingSaving();/顯示正在存儲(chǔ)信息的提示語voidstaticshowSuccessedSaving();/顯示信息已成功存儲(chǔ)voidstaticquit();/退出系統(tǒng)函數(shù)voidstaticshowEachClassInfo(ClassclassTemp);/調(diào)用class類中的對(duì)象顯示信息;3 .Control
27、類的封裝classControl/定義了選課類的操作屬性public:Control()voidstart();voidinitIalization();voidaddClass();voidquit();退出函數(shù)voidshowAllClass();voidsearchByCredit();voidsearchByClassProperties();boolsaveClass();private:list<Class>classList;;2.2.2 課程設(shè)計(jì)要求的實(shí)現(xiàn)/Class類中各成員函數(shù)的實(shí)現(xiàn)voidClass:setClassNum(stringclassNumTemp
28、)this->classNum=classNumTemp;/設(shè)置課程編號(hào)的實(shí)現(xiàn)voidClass:setClassName(stringclassNameTemp)this->className=classNameTemp;設(shè)置課程名稱的實(shí)現(xiàn)voidClass:setClassProperties(stringclassPropertiesTemp)this->classProperties=classPropertiesTemp;設(shè)置課程性質(zhì)的實(shí)現(xiàn)voidClass:setTotalClassNumber(inttotalClassNumberTemp)this->t
29、otalClassNumber=totalClassNumberTemp;設(shè)置總學(xué)時(shí)的實(shí)現(xiàn)voidClass:setCurrentClassNumber(intcurrentClassNumber)this->currentClassNumber=currentClassNumber;設(shè)置授課學(xué)時(shí)的實(shí)現(xiàn)voidClass:setExpClassNumber(intexpClassNumberTemp)this->expClassNumber=expClassNumberTemp;/設(shè)置上機(jī)或?qū)嶒?yàn)學(xué)時(shí)的實(shí)現(xiàn)voidClass:setCredit(doublecredit)this-&
30、gt;credit=credit;設(shè)置課程學(xué)分的實(shí)現(xiàn)voidClass:setRightTerm(stringrightTermTemp)this->rightTerm=rightTermTemp;設(shè)置開課學(xué)期的實(shí)現(xiàn)stringClass:getClassNum()const/設(shè)置為常函數(shù)防止數(shù)據(jù)改變r(jià)eturnthis->classNum;stringClass:getClassName()constreturnthis->className;stringClass:getClassProperties()constreturnthis->classPropertie
31、s;intClass:getTotalClassNumber()constreturnthis->totalClassNumber;intClass:getCurrentClassNumber()constreturnthis->currentClassNumber;intClass:getExpClassNumber()constreturnthis->expClassNumber;doubleClass:getCredit()constreturnthis->credit;stringClass:getRightTerm()constreturnthis->r
32、ightTerm;/Menu類各成員函數(shù)的實(shí)現(xiàn)charMenu:getInput()/獲取輸入函數(shù)金融數(shù)學(xué)考試大三下charkey=cin.get();returnkey;voidMenu:showMenu()cout<<"歡迎您進(jìn)入學(xué)生選課管理系統(tǒng)"<<endl;cout<<"*"<<endl;cout<<""<<endl;cout<<"1課程信息錄入"<<endl;cout<<"2課程信息瀏覽功
33、能"<<endl;cout<<"3根據(jù)學(xué)分查詢"<<endl;cout<<"4按課程性質(zhì)查詢"<<endl;cout<<"5存儲(chǔ)信息"<<endl;cout<<"6退出系統(tǒng)"<<endl;cout<<""<<endl;cout<<"請(qǐng)輸入操作對(duì)應(yīng)的序號(hào)"<<endl;cout<<"*&quo
34、t;<<endl;voidMenu:clearScreen()system("cls");voidMenu:pauseScreen()暫停system("pause");voidMenu:showAddClass()/顯示增添課程信息cout<<"請(qǐng)輸入要添加的課程編號(hào),課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)學(xué)時(shí),學(xué)分,開課學(xué)期等信息"<<endl;voidMenu:showBrowseClass()cout<<"所有課程的信息為"<<endl;voi
35、dMenu:showSearchByCredit()cout<<"按照學(xué)分查詢的結(jié)果為:"<<endl;voidMenu:showSearchByClassProperties()cout<<"按照課程性質(zhì)查詢的結(jié)果為:"<<endl;voidMenu:showAddClassNum()cout<<"n請(qǐng)輸入課程編號(hào)"<<endl;voidMenu:showAddClassName()cout<<"請(qǐng)輸入課程名稱"<<e
36、ndl;voidMenu:showAddClassProperties()cout<<"請(qǐng)輸入課程性質(zhì)"<<endl;voidMenu:showAddTotalClassNumber()cout<<"請(qǐng)輸入總學(xué)時(shí)"<<endl;voidMenu:showAddCurrentClassNumber()cout<<"請(qǐng)輸入授課學(xué)時(shí)"<<endl;voidMenu:showAddExpClassNumber()cout<<"請(qǐng)輸入實(shí)驗(yàn)或上機(jī)學(xué)時(shí)&q
37、uot;<<endl;voidMenu:showAddCredit()cout<<"請(qǐng)輸入學(xué)分"<<endl;voidMenu:showAddRightTerm()cout<<"請(qǐng)輸入開課學(xué)期"<<endl;voidMenu:showLoadingSaving()cout<<"正在存儲(chǔ)數(shù)據(jù)"<<endl;voidMenu:showSuccessedSaving()cout<<"數(shù)據(jù)存儲(chǔ)完畢"<<endl;vo
38、idMenu:quit()cout<<"pressanykeytocontinue"voidMenu:showEachClassInfo(ClassclassTemp)cout<<"課程編號(hào):"<<classTemp.getClassNum();cout<<"課程名稱:"<<classTemp.getClassName();cout<<"課程T質(zhì):"<<classTemp.getClassProperties();cout<&
39、lt;"總學(xué)時(shí):"<<classTemp.getTotalClassNumber();cout<<"授課學(xué)時(shí):"<<classTemp.getCurrentClassNumber();cout<<"實(shí)驗(yàn)學(xué)時(shí):"<<classTemp.getExpClassNumber();cout<<"課程學(xué)分:"<<classTemp.getCredit();cout<<"開課學(xué)期:"<<classTe
40、mp.getRightTerm();cout<<""<<endl;cout<<""<<endl;/Control類成員函數(shù)的實(shí)現(xiàn)voidControl:start()/start里面要做的事情就是初始化界面,等待用戶輸入,判斷輸入調(diào)用initIalization();while(1)Menu:clearScreen();Menu:showMenu();顯示了界面charkey=Menu:getInput();switch(key)case'1':/RJ斷是按下了哪個(gè)按鍵,然后執(zhí)行什么對(duì)應(yīng)的操
41、作Menu:clearScreen();Menu:showAddClass();this->addClass();cin.get();cin.get();break;case'2':Menu:clearScreen();Menu:showBrowseClass();this->showAllClass();Menu:pauseScreen();break;case'3':Menu:clearScreen();this->searchByCredit();Menu:pauseScreen();break;case'4':Menu:
42、clearScreen();this->searchByClassProperties();Menu:pauseScreen();break;case'6':Menu:clearScreen();this->quit();Menu:pauseScreen();break;case'5':Menu:showLoadingSaving();if(this->saveClass()Menu:showSuccessedSaving();Menu:pauseScreen();Menu:pauseScreen();default:break;voidCon
43、trol:initIalization()ifstreamifs;文件輸入流ifs相當(dāng)于建立一個(gè)文件ifs.open("classSave.txt",ios_base:in);if(!ifs)Menu:pauseScreen();return;ClassclassTemp;class類的個(gè)對(duì)象classTempif(ifs.is_open()系統(tǒng)內(nèi)置函數(shù)判斷文件是否打開stringclassNum("");初始化stringclassName("");stringclassProperties("");inttot
44、alClassNumber(0);intcurrentClassNumber(0);intexpClassNumber(0);doublecredit(0.0);stringrightTerm("");while(!ifs.eof()ifs>>classNum>>className>>classProperties>>totalClassNumber>>currentClassNumber>>expClassNumber>>credit>>rightTerm;/從文件讀取的內(nèi)容放
45、到對(duì)應(yīng)的變量里面classTemp.setClassNum(classNum);classTemp.setClassName(className);classTemp.setClassProperties(classProperties);classTemp.setTotalClassNumber(totalClassNumber);classTemp.setCurrentClassNumber(currentClassNumber);classTemp.setExpClassNumber(expClassNumber);classTemp.setCredit(credit);classTem
46、p.setRightTerm(rightTerm);classList.push_back(classTemp);/在末尾添加一個(gè)變量ifs.close();添加例如選課等操作voidControl:addClass()ClassclassTemp;stringclassNum("");stringclassName("");stringclassProperties("");inttotalClassNumber(0);intcurrentClassNumber(0);intexpClassNumber(0);doublecredi
47、t(0.0);stringrightTerm("");Menu:showAddClassNum();cin>>classNum;classTemp.setClassNum(classNum);Menu:showAddClassName();cin>>className;classTemp.setClassName(className);Menu:showAddClassProperties();cin>>classProperties;classTemp.setClassProperties(classProperties);Menu:s
48、howAddTotalClassNumber();cin>>totalClassNumber;classTemp.setTotalClassNumber(totalClassNumber);Menu:showAddCurrentClassNumber();cin>>currentClassNumber;classTemp.setCurrentClassNumber(currentClassNumber);Menu:showAddExpClassNumber();cin>>expClassNumber;classTemp.setExpClassNumber(e
49、xpClassNumber);Menu:showAddCredit();cin>>credit;classTemp.setCredit(credit);Menu:showAddRightTerm();cin>>rightTerm;classTemp.setRightTerm(rightTerm);classList.push_back(classTemp);voidControl:quit()退出函數(shù)exit(1);voidControl:showAllClass()list<Class>:iteratoriter=classList.begin();int
50、number=classList.size();for(inti=0;i<=number-2;i+)Menu:showEachClassInfo(*iter);iter+;3、調(diào)試報(bào)告3.1 遇到的問題及解決辦法程序最開始運(yùn)行時(shí),7條信息錄入完畢后輸出程序本該結(jié)束但并沒有結(jié)束,而是參照第6條的數(shù)據(jù)局部復(fù)制了一條數(shù)據(jù)從而影響了按照學(xué)分查詢的結(jié)果。組員之間經(jīng)過細(xì)致的檢查和多次的嘗試均未能改變程序的結(jié)果,自主不能解決時(shí)選擇請(qǐng)教老師解答疑難。在郭老師的幫助下,重新編寫程序B代替原有的程序Ao程序B:list<Class>:iteratoriter=classList.begin();
51、intnumber=classList.size();for(inti=0;i<=number-2;i+)Menu二showEachClassInfo(*iter);iter+;程序A:for(list<Class>:iteratoriter=classList.begin();iter!=classList.end();+iter)Menu:showEachClassInfo(*iter);在比較這兩段程序后,我們發(fā)現(xiàn)如果將程序B中for(inti=0;i<=number-2;i+)中的i的范圍改成i<=number-1,那么和程序A的效果是完全一樣的。但是,從
52、正向思維出發(fā)我們理解為i的上限可以是number-1,為達(dá)到系統(tǒng)要求,我們采取符合我們要求的B程序。在這個(gè)過程中,我們認(rèn)為C+的強(qiáng)大功能在于實(shí)現(xiàn)市級(jí)的操作問題,所編制的程序應(yīng)該為了解決問題而存在,更應(yīng)該和實(shí)際相符。解決完上述問題后,程序運(yùn)行后的結(jié)果中,7條信息沒有空隙使結(jié)果看起來極為擁擠,讓程序的使用者感到非常不舒服。為解決這一瑕疵,我們?cè)谳敵鰲l信息的完整數(shù)據(jù)后重復(fù)這樣的一句代碼:cout<<""<<endl;添加之后由原本的一句變?yōu)閮删?,完好的解決了之前看起來雜亂的問題。程序的結(jié)果就是在這樣一步一步的修改和調(diào)試中逐步變得接近我們想要的結(jié)果。最初的程
53、序我們沒有設(shè)計(jì)退出程序的代碼,所以整個(gè)學(xué)生選課系統(tǒng)看似并沒有結(jié)束。為使整個(gè)程序更具有完整性,在start函數(shù)進(jìn)行初始化時(shí)添加一段程序C,并在addClass函數(shù)之后添加語句voidquit()使系統(tǒng)結(jié)束。程序C:Menu二clearScreen();this->quit();Menu二pauseScreen();break;關(guān)于結(jié)果文本框的顯示背景顏色,我們想要選擇更符合人們審美和視覺傾向的藍(lán)色,為此,在程序的最后添加這樣一句語句:system("color1A");使得程序運(yùn)行結(jié)果的背景顏色由原本的黑色轉(zhuǎn)變?yōu)槲覀兿胍乃{(lán)色。至此,已基本完成程序的設(shè)計(jì),大致完成我們想
54、要的運(yùn)行結(jié)果。以上四點(diǎn)就是我們小組在學(xué)生選課系統(tǒng)中所遇到的問題,以及面對(duì)不同的問題做出的解決方案。3.2 程序調(diào)試及運(yùn)行結(jié)果請(qǐng)輸入操作對(duì)應(yīng)的序號(hào)1_豆_豆123456能功詢?nèi)肫詹榕酥辟|(zhì)息息分售心統(tǒng)滯出果褥艱e統(tǒng)按數(shù)字鍵1后出現(xiàn)課程信息錄入界面,根據(jù)提示依次輸入相關(guān)數(shù)據(jù),得到下圖二。力】fCsXDocuKciitszindSct±ingsVAdninistrzttorDebugCpp1.0x0請(qǐng)愉人摹添加的課程編號(hào),課程自稱,課程性質(zhì),開憂學(xué)期辱信息總干叼,接評(píng)-竽叼,客險(xiǎn)竽時(shí),'tR,-|g|x|請(qǐng)輸入課程編號(hào)爨港程名稱戛掣入課程性質(zhì)富篇人總學(xué)時(shí)詈輸入授課學(xué)時(shí)24請(qǐng)輸入實(shí)臉或
55、上機(jī)學(xué)時(shí)霜輸入學(xué)分,警開課學(xué)期圖2課程信息錄入功能的實(shí)現(xiàn)信息錄入完畢后選擇數(shù)字5選項(xiàng)進(jìn)行數(shù)據(jù)存儲(chǔ)得到圖三口苧生選諦官理系統(tǒng)息息容息統(tǒng)信值系課退(I覽功能質(zhì)查詢請(qǐng)輸入操作對(duì)應(yīng)的序號(hào)KMKXKMMXKMMXKMMXKMMXKMMXKMMXKMMKKMMKMMK11在存儲(chǔ)數(shù):圖3存儲(chǔ)信息功能的實(shí)現(xiàn)調(diào)用text文件按數(shù)字鍵2選擇瀏覽所有課程信息輸出所有課程信息,得到圖四。亟所直課程的信息為慷程編號(hào):則實(shí)驗(yàn)學(xué)時(shí)二國(guó)隔程編號(hào)海被實(shí)驗(yàn)學(xué)時(shí);如脆鬻:尸殳計(jì)噌然學(xué)分析課程性質(zhì):考試開課學(xué)期:大三下課程性質(zhì):考試開課學(xué)期;大一上授課學(xué)時(shí):40總學(xué)時(shí):罌授課學(xué)時(shí):唯牌程編號(hào);釀3實(shí)驗(yàn)學(xué)時(shí):10,程編號(hào)海04實(shí)驗(yàn)學(xué)時(shí)
56、小,程編號(hào)小颶實(shí)驗(yàn)學(xué)時(shí):10課程鑼:公共關(guān)系埠程軍分二2量爵變干息理論遙鼾英語課程性質(zhì):考查開課學(xué)期:大三下課程性質(zhì):考查開課學(xué)期:大三下課程性質(zhì):考試開簿學(xué)期;大一上下總學(xué)時(shí):皿總學(xué)時(shí):罌總學(xué)時(shí):獨(dú)總學(xué)時(shí):28授課學(xué)時(shí):60授課學(xué)時(shí);如授課學(xué)時(shí):如c:*C:Docu>entsandSEtting£Ad*in:L£tratnr桌面、新建文件夾DcbugTc+.cec情按任意鍵繼續(xù).Ld圖4課程信息瀏覽功能的實(shí)現(xiàn)按數(shù)字鍵3選擇按學(xué)分查詢,輸入學(xué)分為4查詢到學(xué)分為4的所有課程的課程信息得到圖五。按數(shù)字鍵4選擇按課程性質(zhì)查詢,輸入課程性質(zhì)為考試查詢到課程性質(zhì)是考試的所有課程
57、的課程信息得到圖六。圖6按課程性質(zhì)查詢功能的實(shí)現(xiàn)最后選擇數(shù)字鍵5退出學(xué)生選課系統(tǒng),得到圖七。*C:Docu>entsand號(hào)©!±111名3山(1»111運(yùn)11:/十01:桌面新建文件夾。1111810+-©區(qū)pPressanykeytocontinue圖7退出系統(tǒng)功能的實(shí)現(xiàn)4、心得體會(huì)雖然僅僅是幾天的課堂上機(jī)時(shí)間,然而我們?cè)谡n下也為這個(gè)課程設(shè)計(jì)做出很多的努力,尤其是在緊張的復(fù)習(xí)周,這足以證明著我們組每一個(gè)人對(duì)待C+課程設(shè)計(jì)的態(tài)度端正立場(chǎng)堅(jiān)定。作為非計(jì)算機(jī)專業(yè)的學(xué)生,我對(duì)C+勺了解僅限于皮毛,如若僅憑個(gè)人能力,這么短的時(shí)間內(nèi)我想無論如何都是做不出這
58、樣一個(gè)我自己看來還算是可以的數(shù)據(jù)庫(kù)設(shè)計(jì)的。能在規(guī)定的時(shí)間內(nèi)完成各個(gè)步驟要感謝組里的每一位組員,我們分工明確并且認(rèn)真完成自己的任務(wù)才得以實(shí)現(xiàn)了高效率。首先,我把自己的思路告訴我的組員,他們?cè)诳隙ㄎ业南敕ǖ耐瑫r(shí)為那些不太完美的地方提出的不一樣的見解,可謂是每一個(gè)人的good結(jié)合在一起就可以形成perfect。真正程序運(yùn)行的時(shí)候出現(xiàn)各種問題,需要反反復(fù)復(fù)的修改,最后在老師的幫助下我們基本上得到了想要的結(jié)果。在和同學(xué)交流的時(shí)候我發(fā)現(xiàn)我的專業(yè)知識(shí)并不是那么的牢固,我發(fā)揮自己優(yōu)勢(shì)的同時(shí)向別人學(xué)習(xí)以彌補(bǔ)自己的不足,正所謂三人行必有我?guī)煛R粋€(gè)人不可能十全十美,但我想要接近完美的自己。三個(gè)人的合作不可能是完美無
59、缺毫無瑕疵的,我們雖有著相同的目標(biāo),但在其中卻也有過分歧有過爭(zhēng)吵有過埋怨,更多的還是三人同心協(xié)力團(tuán)結(jié)一致把題目完成。往前翻看到那些親手碼上去的文字和截圖后的圖片還能感受到某一時(shí)刻階段性完工時(shí)自信滿滿的心理情緒,某一段因?yàn)橐粋€(gè)小問題卡住的無奈與思考,某一部分因?yàn)橐庖姴缓蠣?zhēng)吵的面紅耳赤。所有這些小心情都是我在這次課程設(shè)計(jì)途中收獲的小幸福,我們面臨著一年以后的畢業(yè),即使是吵架的時(shí)間也會(huì)覺得難能可貴,本科階段也許這樣的合作機(jī)會(huì)已經(jīng)不多了,這期間的種種情感都必然我的心理財(cái)富。我可能不會(huì)走上C+叫言程序設(shè)計(jì)的專業(yè)道路,可能不會(huì)讓其成為我的職業(yè),但計(jì)算機(jī)已經(jīng)成為現(xiàn)代社會(huì)職業(yè)人不可或缺的一種工具,這段時(shí)間的知識(shí)儲(chǔ)備所具有的能量也許會(huì)在未來的某一天顯現(xiàn)出來。我很感謝能有機(jī)會(huì)學(xué)習(xí)這樣一門課程經(jīng)歷這樣一次課程設(shè)計(jì),并且我在用心對(duì)待認(rèn)真去做,把它當(dāng)成一件事情去做,這種心理的成就感我覺得很滿足。5、參考文獻(xiàn)1 .鄭莉,董淵,何江舟.C+語言程序設(shè)計(jì)M.北京:清華大學(xué)出版社,2010.2 .譚浩強(qiáng).C+程序設(shè)計(jì)M.北京:清華大學(xué)出版社,20043 .陳維興.C+面向?qū)ο蟪绦蛟O(shè)計(jì)第三版M.北京:清華大學(xué)出版社,201
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于2025年度戰(zhàn)略規(guī)劃的市場(chǎng)開發(fā)合同2篇
- 股權(quán)轉(zhuǎn)讓與品牌授權(quán)2025年度協(xié)議(含品牌使用權(quán)和許可)2篇
- 2025年度茅臺(tái)酒定制酒生產(chǎn)及銷售合同3篇
- 2025年度鋁合金復(fù)合材料研發(fā)與應(yīng)用合同范本4篇
- 2025版冷鏈物流公司間資源共享合作協(xié)議3篇
- 2025年度高端商務(wù)酒店智能化升級(jí)改造工程合同3篇
- 2025年度消防車輛維修保養(yǎng)及消防器材供應(yīng)合同4篇
- 正德職業(yè)技術(shù)學(xué)院《園林植物栽培學(xué)實(shí)踐(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度高端珠寶定制買賣合同范本4篇
- 2025版住宅小區(qū)快遞柜場(chǎng)地租賃及快遞配送服務(wù)協(xié)議3篇
- 山東鐵投集團(tuán)招聘筆試沖刺題2025
- 真需求-打開商業(yè)世界的萬能鑰匙
- 2025年天津市政集團(tuán)公司招聘筆試參考題庫(kù)含答案解析
- GB/T 44953-2024雷電災(zāi)害調(diào)查技術(shù)規(guī)范
- 2024-2025學(xué)年度第一學(xué)期三年級(jí)語文寒假作業(yè)第三天
- 心律失常介入治療
- 6S精益實(shí)戰(zhàn)手冊(cè)
- 展會(huì)場(chǎng)館保潔管理服務(wù)方案
- 監(jiān)理從業(yè)水平培訓(xùn)課件
- 廣東省惠州市實(shí)驗(yàn)中學(xué)2025屆物理高二第一學(xué)期期末綜合測(cè)試試題含解析
- 搞笑朗誦我愛上班臺(tái)詞
評(píng)論
0/150
提交評(píng)論