版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、河南城建學(xué)院C+程序設(shè)計(jì)課程設(shè)計(jì)設(shè)計(jì)題目:學(xué)生選修課程系統(tǒng)設(shè)計(jì)指導(dǎo)教師:郭力爭劉榮輝薛冰專業(yè):數(shù)學(xué)與應(yīng)用數(shù)學(xué)學(xué)生班級:1314101學(xué)生學(xué)號:131410111學(xué)生姓名:劉亞欣同組人:李菲馬小川數(shù)理學(xué)院2013年6月目錄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ā)平臺 .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.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 門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學(xué)時(shí), 授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開課學(xué)期等信息,學(xué)生可按要求(如總學(xué) 分不得少于 10)自由選課。試設(shè)計(jì)一個(gè)選修課程系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作;2.課程信息錄入功能(課程信息用文件保存) ;3.課程信息瀏覽功能;4.查詢功能(至少一種查詢方式:按學(xué)分查詢、按課程性質(zhì)查詢) ;5.學(xué)生選修課程。1.2選題背
3、景當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,這正是 計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最到好處在于利用它能夠 進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的 提高了其安全性。尤其對于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行 信息管理與信息管理系統(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ù)繁多,容易丟失,且不易查找
4、。并 且數(shù)據(jù)處理手工操作工作量大,出錯(cuò)率高,出錯(cuò)后不易更改,造成各種不便, 總的來說,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的學(xué)校有計(jì)算機(jī),但是尚 未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是學(xué)生選課管 理信息系統(tǒng)的開發(fā)基本環(huán)境背景。1.3課題意義基于以上問題,我們認(rèn)為有必要建立一個(gè)學(xué)生選課管理信息系統(tǒng),使學(xué)生 選課信息管理工作規(guī)范化、系統(tǒng)化、程序化,以避免學(xué)生選課管理的隨意性, 提高信息處理的速度和準(zhǔn)確性, 能夠及時(shí)、準(zhǔn)確、 有效的查詢和修改選課情況系統(tǒng)實(shí)現(xiàn)后,極大的方便對學(xué)生進(jìn)行選課和選課后班級的安排管理工作, 學(xué)生選課信息的管理。避免在安排課程信息的滯后,減少信息交流的繁瑣過
5、程 及其帶來的額外開銷。促進(jìn)高校教育的計(jì)算機(jī)信息化進(jìn)程,提高高校的工作效 率。并且對于系統(tǒng)本身而言,具有更高的使用性、安全性。能夠滿足學(xué)生選課, 以及學(xué)生對選課信息的管理。同時(shí),通過該課程設(shè)計(jì),我們可以達(dá)到把 C+程序設(shè)計(jì)理論知識更加的鞏固 加深,加強(qiáng)動(dòng)手操作能力與實(shí)踐能力,學(xué)以致用,與現(xiàn)實(shí)生活中的應(yīng)用充分的 結(jié)合起來,也實(shí)現(xiàn)了知識的活學(xué)活用。1.4 功能需求分析一個(gè)完善的學(xué)生選課管理信息系統(tǒng)能夠極大的提高學(xué)生選課信息的管理效 率,具有檢索迅速,查找方便,可靠性高,存儲(chǔ)量大,更新快,壽命長,成本 低等優(yōu)點(diǎn)。本系統(tǒng)主要可以實(shí)現(xiàn)以下任務(wù)目標(biāo):1、 系統(tǒng)可以準(zhǔn)確的記錄和查詢學(xué)生、老師以及所開設(shè)的課程
6、的基本信息2、 學(xué)生登錄系統(tǒng)后可以根據(jù)本專業(yè)制定的教學(xué)計(jì)劃進(jìn)行選課操作,可以查 詢個(gè)人的基本信息性能需求: 本學(xué)生信息管理系統(tǒng)要能夠抵御用戶可能的各種操作,包括修改、更新、 刪除等操作,以保證軟件的可行性、穩(wěn)定性、健壯性,同時(shí)要對數(shù)據(jù)進(jìn)行檢驗(yàn), 保證數(shù)據(jù)有效性,可操作性,安全性。同時(shí)普通用戶登錄只有瀏覽的權(quán)限。系 統(tǒng)的非功能性需求:實(shí)用性:系統(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ì)
7、以及軟、硬件的優(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)要求能夠方便的升級,充分保護(hù)系統(tǒng)的投資。智能型:系統(tǒng)在設(shè)計(jì)時(shí),充分考慮系統(tǒng)運(yùn)行的智能性,在使用系統(tǒng)一段時(shí) 間后,系統(tǒng)可以適應(yīng)于任何局域網(wǎng)。1.5 系統(tǒng)功能分析根據(jù)設(shè)計(jì)要求,我們認(rèn)為該系統(tǒng)應(yīng)該包括: ( 1)課程信息輸入功能;(2)課 程信息瀏覽功能;(3)按學(xué)分查詢功能;(4)按課程性質(zhì)查詢功能; (5)數(shù)據(jù) 保存功能;(6)正確退出系統(tǒng)功能。其中對于課程
8、信息輸入功能可以有兩個(gè)實(shí) 現(xiàn)途徑:直接在系統(tǒng)中根據(jù)提示輸入;根據(jù)系統(tǒng)的功能在相應(yīng)文件下建立 text 文件直接輸入課程信息。對于其余四個(gè)功能則主要是供學(xué)生選課使用。本 程序?qū)⒄n程性質(zhì)統(tǒng)一規(guī)定為考試和考查兩種;數(shù)據(jù)保存功能是為了保證在系統(tǒng) 中直接輸入的課程信息順利保存到 text 文件。2、程序具體實(shí)現(xiàn)原理2.1總體方案首先根據(jù)設(shè)計(jì)要求,我們定義了三個(gè)類:Class類,Control類,Menu類。Class類用來存放一系列課程的信息,以及一些獲取信息的get函數(shù);Control類是用來定義選課類的操作屬性,從Control類里面來判斷并實(shí)現(xiàn)用戶所需要執(zhí) 行的動(dòng)作;Menu類定義了菜單的操作,其
9、中包括顯示菜單,顯示提示信息,獲 取用戶從鍵盤輸入的信息并執(zhí)行。針對Class類的定義,首先我們定義了一系列的設(shè)置相關(guān)課程信息的公有函 數(shù),用來將輸入的內(nèi)容傳給私有函數(shù),其次定義了常函數(shù),目的是為了防止數(shù) 據(jù)被其它函數(shù)調(diào)用時(shí)發(fā)生改變,同時(shí)將學(xué)分定義為浮點(diǎn)型,范圍在010之間。針對Menu類的定義,我們先定義了一個(gè)獲取鍵盤輸入的函數(shù)getlnput(),用于獲取數(shù)據(jù),接著定義了界面友好的顯示目錄函數(shù),使得用戶進(jìn)行操作更加 方便,最后定義了一系列的顯示提示信息函數(shù)。為了使得在今后的修改中更加 清楚方便,我們將這些函數(shù)獨(dú)立分開。針對Control類的定義,因?yàn)樗哪康氖怯糜谂袛嗖?shí)現(xiàn)用戶所要執(zhí)行的操
10、 作,是學(xué)生選課系統(tǒng)的核心。一切從start()函數(shù)開始,通過switch語句判斷按下了哪個(gè)數(shù)字鍵,然后執(zhí)行對應(yīng)的操作,在文件錄入這一方面,我定義了一個(gè) initlalization()函數(shù),首先建立一個(gè)輸入流,打開文件,將用戶錄入的課程信息 放入到變量中,再由變量放入文件中。其中的公有函數(shù)即課程設(shè)計(jì)所要求的功 能部分:添加選課,瀏覽選課,查詢選課,保存文件。私有函數(shù)我們用了鏈表, classList,用來一條一條記錄課程信息,方便添加瀏覽以及查詢。兩種查詢方法 都運(yùn)用了迭代器的功能,迭代器的作用相當(dāng)于指針,從鏈表的頭部一個(gè)個(gè)指向 鏈表的末尾,用于瀏覽以及查詢部分。最后把迭代器指向的對象每個(gè)字
11、段寫入 文件中,文件名定義為classSave保存到程序的當(dāng)前目錄下。最后主函數(shù)的實(shí)現(xiàn),代碼十分簡單,先定義一個(gè)Control類的對象,ControlClass,再通過 controlClass.start()啟動(dòng)整個(gè)程序。2.1.1開發(fā)平臺操作系統(tǒng):Win7開發(fā)軟件:Mirosoft Visual C+ 6.02.1.2基本原理2.1.3數(shù)據(jù)結(jié)構(gòu)表1數(shù)據(jù)結(jié)構(gòu)表數(shù)據(jù)名稱數(shù)據(jù)類型解釋classNumstri ng課程編號classNamestri ng課程名稱classPropertiesstri ng課程性質(zhì)totalClassNumberInt總課時(shí)curre ntClassNumberIn
12、t授課學(xué)時(shí)expClassNumberInt上級或?qū)嶒?yàn)學(xué)時(shí)creditDouble學(xué)分rightTermstri ng開課學(xué)期2.1.4類的UML圖表2 Class類的UML圖Class-ClassNum: stri ng -ClassName: stri ng -ClassProperties: stri ng -TotalClassNumber: int -curre ntClassNumber: int -ExpClassNumber: int -credit: double -rightTerm: stri ng +setClassNum(classNumTemp: stri ng)
13、+setClassName(classNameTemp: stri ng) +setClassProperties(classPropertiesTemp: string) +setTotalClassNumber(totalClassNumberTemp: int) +setCurre ntClassNumber(curre ntClassNumber: int) +setExpClassNumber(expClassNumberTemp: int) +setCredit(credit: double) +setRightTerm(rightTermTemp: stri ng) +getCl
14、assNum():stri ng +getClassName():stri ng +getTotalClassNumber():i nt vvcon st+getCurre ntClassNumber():i nt vvcon st+getExpClassNumber():i nt c on st+getCredit() :double +getRightTerm() :stri ng表3 Menue類的UML圖Menue+getl nput():char +showMe nu(): void +clearScree n(): void +pauseScree n(): void +showA
15、ddClass():void +showBrowseClass():void +showSearchByCredit():void +showSearchByClassProperties():void +showAddClassNum():void vstatic+showAddClassName():void vstatic+showAddClassProperties():void +showAddCurre ntClassNumber():void +showAddExpClassNumber():void static+showLoadi ngSavi ng():void stati
16、c+showSuccessedSav in g():void +showEachClassl nfo(Class classTemp) :void +quit():void表4 Control類的UML圖Con trol-classList: list+Co ntrol()+Start():void+i nitlalizatio n( ):void+addClass():void+quit():void+showAIICIass():void+searchByCredit():void+searchByClassProperties():void+saveClass():bool2.1.5模塊
17、說明(1)課程信息錄入。課程信息錄入應(yīng)包括:課程編號、課程名稱、課程性 質(zhì)、總學(xué)時(shí)、授課學(xué)時(shí)、實(shí)驗(yàn)學(xué)時(shí)、學(xué)分、開課信息八個(gè)成員,為錄入以上信 息, 首 先使用 setClassNum、 setClassName、 setClassProperties、 setTotalClassNumbe、setCurrentClassNumbe、setExpCIassNumbe、setCredit、 setRightTerm輸出提示信息,其次使用addClass函數(shù)添加課程信息。(2)課程信息瀏覽。該功能主要是讀取所有的課程信息,在程序中首先通過 getClassNum、getClassName getCl
18、assProperties getTotalClassNumber、 getCurrentClassNumber getExpCIassNumbe、getCredit、getRightTerm 八個(gè)函數(shù) 讀取課程信息的相關(guān)信息,設(shè)置為靜態(tài)成員函數(shù),防止已錄入的數(shù)據(jù)被篡改; 其次使用showclass showeachclassinfo函數(shù)顯示全部課程信息。(3)按學(xué)分查詢。首先使用 getCredit函數(shù)得到課程的學(xué)分信息,其次使用searchByCredit函數(shù)輸出“按學(xué)分查詢”的提示信息;接著使用showAddCredit 函數(shù)輸出“請輸入學(xué)分”的提示信息;最后使用showSearchBy
19、Credit函數(shù)將查詢結(jié)果輸出。(4)按課程性質(zhì)查詢。按照課程性質(zhì)的查詢實(shí)現(xiàn)了根據(jù)課程的性質(zhì)對課程的 查詢,程序主要通過、showAddCIassProperties、setClassProperties、 getClassProperties searchByCIassProperties showSearchByCIassProperties 來 實(shí)現(xiàn)對課程的查詢,同樣全部設(shè)置為靜態(tài)成員函數(shù),已經(jīng)錄入的數(shù)據(jù)部能被篡 改,根據(jù)提示輸入就能得到想要查詢的內(nèi)容。(5) 存儲(chǔ)信息。選擇存儲(chǔ)信息選項(xiàng)之后用 showLoadi ngSav ing函數(shù)進(jìn)行數(shù)據(jù) 的存儲(chǔ),顯示正在存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)完畢后用
20、showSuccessedSavingS數(shù)顯示 輸出數(shù)據(jù)存儲(chǔ)完畢。(6) 退出系統(tǒng)。一個(gè)完整的系統(tǒng)應(yīng)該包括退出系統(tǒng), 在程序中使用 quit 函數(shù), 在按數(shù)字鍵6后給出提示信息“press any key to continue提示使用者按任意鍵 退出系統(tǒng)。2.2程序各個(gè)功能說明2.2.1 程序結(jié)構(gòu)將class類的屬性和行為進(jìn)行圭寸裝:1.Class的圭寸裝class Class定義了課程類的一些屬性public:void setClassNum(string classNumTemp);/ 課程編號void setClassName(string classNameTemp);/ 課程名稱v
21、oid setClassProperties(stri ng classPropertiesTemp);/ 課程性質(zhì)void setTotalClassNumber(int totalClassNumberTemp);/ 總學(xué)時(shí)void setCurrentClassNumber(int currentClassNumber);/ 授課學(xué)時(shí)void setExpClassNumber(int expClassNumberTemp);/ 實(shí)驗(yàn)或上機(jī)學(xué)時(shí)void setCredit(double credit);/ 學(xué)分void setRightTerm(string rightTermTemp)
22、;/ 開課信息/ 錄入函數(shù)設(shè)為常量函數(shù)防止信息被篡改string getClassNum() const;/ 課程編號錄入stri ng getClassName() con st;/ 課程名稱錄入stri ng getClassProperties() con st;/ 課程性質(zhì)錄入int getTotalClassNumber() const;/ 總學(xué)時(shí)錄入int getCurrentClassNumber() const;/ 授課學(xué)時(shí)錄入int getExpClassNumber() const;/ 實(shí)驗(yàn)或上機(jī)學(xué)時(shí)錄入double getCredit() const;/ 學(xué)分錄入 str
23、ing getRightTerm() const;/ 開課信息錄入/ class 類的私有成員private:stri ng classNum;/ 課程編號stri ng className;/ 課程名稱stri ng classProperties;/ 課程性質(zhì)int totalClassNumber;/ 總學(xué)時(shí)int currentClassNumber;/ 授課學(xué)時(shí)int expCIassNumber;/上級或?qū)嶒?yàn)學(xué)時(shí)double credit;/ 學(xué)分string rightTerm;/ 開課學(xué)期;2.Menu 類的封裝/menu 類主要實(shí)現(xiàn)系統(tǒng)的主界面class Menupublic
24、:char static getInput();void static showMenu();/ 顯示菜單void static clearScreen();/ 清屏void static pauseScreen();/ 暫停void static showAddClass();/ 顯示添加課程信息的提示語void static showBrowseClass();/void static showSearchByCredit();/ 顯示按學(xué)分查詢的提示語void static showSearchByClassProperties(); 顯示按課程性質(zhì)查詢的提示語void static s
25、howAddClassNum();/ 顯示輸入課程編號的的提示語 void static showAddClassName();/ 顯示增加課程名稱的提示語 void static showAddClassProperties();/ 顯示輸入課程性質(zhì)的提示語 void static showAddTotalClassNumber();/ 顯示輸入總學(xué)時(shí)的提示語 void static showAddCurrentClassNumber();/ 顯示授課學(xué)時(shí)的提示語 void static showAddExpClassNumber();/ 顯示輸入實(shí)驗(yàn)學(xué)時(shí)的提示語 void static s
26、howAddCredit();/ 顯示輸入學(xué)分的提示語 void static showAddRightTerm();/ 顯示開課學(xué)期的提示語 void static showLoadingSaving();/ 顯示正在存儲(chǔ)信息的提示語 void static showSuccessedSaving();/ 顯示信息已成功存儲(chǔ) void static quit();/ 退出系統(tǒng)函數(shù)void static showEachClassInfo(Class classTemp);/ 調(diào)用 class 類中的對象顯示信息 ;3 .Control 類的封裝class Control/ 定義了選課類的操作
27、屬性public:Control()void start();void initIalization();void addClass();void quit() ;/ 退出函數(shù)void showAllClass();void searchByCredit();void searchByClassProperties();bool saveClass();private:list classList;2.2.2課程設(shè)計(jì)要求的實(shí)現(xiàn)/Class 類中各成員函數(shù)的實(shí)現(xiàn)void Class:setClassNum(string classNumTemp) this-classNum = classNum
28、Temp;/ 設(shè)置課程編號的實(shí)現(xiàn)void Class:setClassName(string classNameTemp) this-className = classNameTemp;/ 設(shè)置課程名稱的實(shí)現(xiàn)void Class:setClassProperties(string classPropertiesTemp) this-classProperties = classPropertiesTemp;/ 設(shè)置課程性質(zhì)的實(shí)現(xiàn)void Class:setTotalClassNumber(int totalClassNumberTemp) this-totalClassNumber = tot
29、alClassNumberTemp;/ 設(shè)置總學(xué)時(shí)的實(shí)現(xiàn)void Class:setCurrentClassNumber(int currentClassNumber) this-currentClassNumber = currentClassNumber;/ 設(shè)置授課學(xué)時(shí)的實(shí)現(xiàn)void Class:setExpClassNumber(int expClassNumberTemp) this-expClassNumber = expClassNumberTemp;/ 設(shè)置上機(jī)或?qū)嶒?yàn)學(xué)時(shí)的實(shí)現(xiàn)void Class:setCredit(double credit)this-credit = cr
30、edit;/ 設(shè)置課程學(xué)分的實(shí)現(xiàn)void Class:setRightTerm(string rightTermTemp) this-rightTerm = rightTermTemp;/ 設(shè)置開課學(xué)期的實(shí)現(xiàn)string Class:getClassNum() const/ 設(shè)置為常函數(shù)防止數(shù)據(jù)改變 return this-classNum;string Class:getClassName() constreturn this-className;string Class:getClassProperties() constreturn this-classProperties;int Cl
31、ass:getTotalClassNumber() const return this-totalClassNumber;int Class:getCurrentClassNumber() const return this-currentClassNumber;int Class:getExpClassNumber() const return this-expClassNumber;double Class:getCredit() constreturn this-credit; string Class:getRightTerm() constreturn this-rightTerm;
32、 /Menu 類各成員函數(shù)的實(shí)現(xiàn) char Menu: getInput() / 獲取輸入函數(shù)金融數(shù)學(xué)考試大三下 char key = cin.get();void Menu: clearScreen() system(cls);void Menu: pauseScreen()/ 暫停system(pause);void Menu: showAddClass() / 顯示增添課程信息 cout 請輸入要添加的課程編號,課程名稱,課程性質(zhì),總學(xué) 時(shí),授課學(xué)時(shí),實(shí)驗(yàn)學(xué)時(shí),學(xué)分,開課學(xué)期等信息 endl;void Menu: showBrowseClass()cout 所有課程的信息為 endl;v
33、oid Menu: showSearchByCredit()cout 按照學(xué)分查詢的結(jié)果為: endl;void Menu: showSearchByClassProperties()cout 按照課程性質(zhì)查詢的結(jié)果為: endl;void Menu: showAddClassNum()cout n 請輸入課程編號 endl;void Menu: showAddClassName()cout 請輸入課程名稱 endl;void Menu: showAddClassProperties() cout 請輸入課程性質(zhì) endl; void Menu: showAddTotalClassNumber
34、() cout 請輸入總學(xué)時(shí) endl;void Menu: showAddCurrentClassNumber() cout 請輸入授課學(xué)時(shí) endl;void Menu: showAddExpClassNumber()cout 請輸入實(shí)驗(yàn)或上機(jī)學(xué)時(shí) endl;void Menu: showAddCredit()cout 歡迎您進(jìn)入學(xué)生選課管理系統(tǒng) endl;cout * endl;cout endl;cout 1 課程信息錄入 endl;cout 2 課程信息瀏覽功能 endl;cout 3 根據(jù)學(xué)分查詢 endl;cout 4 按課程性質(zhì)查詢 endl;cout 5 存儲(chǔ)信息 endl;
35、cout 6 退出系統(tǒng) endl;cout endl;cout 請輸入操作對應(yīng)的序號 endl;return key;void Menu: showMenu()cout * endl;,判cout 請輸入學(xué)分 endl;void Menu: showAddRightTerm()cout 請輸入開課學(xué)期 endl;void Menu: showLoadingSaving()cout 正在存儲(chǔ)數(shù)據(jù) endl;void Menu: showSuccessedSaving()cout 數(shù)據(jù)存儲(chǔ)完畢 endl;void Menu: quit()coutpress any key to continue;
36、void Menu: showEachClassInfo(Class classTemp)cout 課程編號 : classTemp.getClassNum() ;cout 課程名稱 : classTemp.getClassName();cout 課程性質(zhì) : classTemp.getClassProperties() ; cout 總學(xué)時(shí) : classTemp.getTotalClassNumber();cout 授課學(xué)時(shí) : classTemp.getCurrentClassNumber() ; cout 實(shí)驗(yàn)學(xué)時(shí) : classTemp.getExpClassNumber();cou
37、t 課程學(xué)分 : classTemp.getCredit();cout 開課學(xué)期 : classTemp.getRightTerm();cout endl;cout 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:Me
38、nu: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;void Control: initIalization(
39、)ifstream ifs;/ 文件輸入流 ifs 相當(dāng)于建立一個(gè)文件 ifs.open(classSave.txt,ios_base:in);if (!ifs)Menu:pauseScreen();return;Class classTemp;/class 類的一個(gè)對象 classTemp if (ifs.is_open()/ 系統(tǒng)內(nèi)置函數(shù) 判斷文件是否打開 string classNum( );/ 初始化 string className( );string classProperties( );int totalClassNumber(0);int currentClassNumber(
40、0);int expClassNumber(0);double credit(0.0);string rightTerm( );while(!ifs.eof()ifs classNum className classProperties totalClassNumber currentClassNumber expClassNumber credit rightTerm;/ 從文件讀取的內(nèi)容放到對應(yīng)的變量里面 classTemp.setClassNum(classNum); classTemp.setClassName(className); classTemp.setClassPropert
41、ies(classProperties); classTemp.setTotalClassNumber(totalClassNumber); classTemp.setCurrentClassNumber(currentClassNumber); classTemp.setExpClassNumber(expClassNumber); classTemp.setCredit(credit); classTemp.setRightTerm(rightTerm);classList.push_back(classTemp); 在末尾添加一個(gè)變量ifs.close();void Control: a
42、ddClass()/添加例如選課等操作Class classTemp;string classNum();string className();string classProperties();int totalClassNumber(0);int currentClassNumber(0);int expClassNumber(0);double credit(0.0);string rightTerm();Menu:showAddClassNum();cin classNum;classTemp.setClassNum(classNum);Menu:showAddClassName();c
43、in className;classTemp.setClassName(className); Menu:showAddClassProperties();cin classProperties; classTemp.setClassProperties(classProperties); Menu:showAddTotalClassNumber();cin totalClassNumber; classTemp.setTotalClassNumber(totalClassNumber); Menu:showAddCurrentClassNumber();cin currentClassNum
44、ber;classTemp.setCurrentClassNumber(currentClassNumber);Menu:showAddExpClassNumber();cin expClassNumber;classTemp.setExpClassNumber(expClassNumber);Menu:showAddCredit();cin credit;classTemp.setCredit(credit);Menu:showAddRightTerm();cin rightTerm;classTemp.setRightTerm(rightTerm); classList.push_back
45、(classTemp);void Control: quit()/退出函數(shù)exit(1);void Control: showAllClass()list:iterator iter = classList.begin();int number=classList.size();for(int i=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é)果。 組員之間
46、經(jīng)過細(xì)致的檢查和多次的嘗試均未能改變程序的結(jié)果,自主不能解決 時(shí)選擇請教老師解答疑難。在郭老師的幫助下,重新編寫程序 B 代替原有的程 序 A 。程序 B:list:iterator iter = classList.begin();int number=classList.size();for(int i=0; i=number-2;i+)Menu:showEachClassInfo(*iter);iter+;程序 A :for (list:iterator iter = classList.begin();iter!= classList.end(); +iter) Menu:showEa
47、chClassInfo(*iter); 功詢 白真柱摹 亠H H互孟:家12 12 3 3 4 4 5 5 6 6在比較這兩段程序后,我們發(fā)現(xiàn)如果將程序B中for(int i=0; i=number-2;i+)中的i的范圍改成i=number-1,那么和程序A的效果是完全 一樣的。但是,從正向思維出發(fā)我們理解為i的上限可以是number-1,為達(dá)到系統(tǒng)要求,我們采取符合我們要求的B程序。在這個(gè)過程中,我們認(rèn)為C+的強(qiáng)大功能在于實(shí)現(xiàn)市級的操作問題,所編制的程序應(yīng)該為了解決問題而存在,更 應(yīng)該和實(shí)際相符。解決完上述問題后,程序運(yùn)行后的結(jié)果中,7條信息沒有空隙使結(jié)果看起來極為擁擠,讓程序的使用者感到
48、非常不舒服。為解決這一瑕疵,我們在輸出 條信息的完整數(shù)據(jù)后重復(fù)這樣的一句代碼:cout quit();Men u:pauseScree n();break;關(guān)于結(jié)果文本框的顯示背景顏色,我們想要選擇更符合人們審美和視覺傾向的藍(lán)色,為此,在程序的最后添加這樣一句語句:system(color 1A);使得程序運(yùn)行結(jié)果的背景顏色由原本的黑色轉(zhuǎn)變?yōu)槲覀兿胍乃{(lán)色。至此,已基本完 成程序的設(shè)計(jì),大致完成我們想要的運(yùn)行結(jié)果。以上四點(diǎn)就是我們小組在學(xué)生選課系統(tǒng)中所遇到的問題,以及面對不同的 問題做出的解決方案。3.2程序調(diào)試及運(yùn)行結(jié)果CUmin(stratarDe5ktnpCUmin(stratarDe5
49、ktnp莊曲番5&5&盅0?0?分JTJT幄序ynynF FH HI I gCppgCpp .PVP-歡迎腔避八字生選評管理乎統(tǒng)圖1系統(tǒng)界面誕勲 監(jiān)入總學(xué)時(shí)性質(zhì)圖2課程信息錄入功能的實(shí)現(xiàn)信息錄入完畢后選擇數(shù)字5選項(xiàng)進(jìn)行數(shù)據(jù)存儲(chǔ)得到圖三5 5 * * CC XDociiaeikl:XDociiaeikl: s s UEHIUEHII I SetSet t t irigirig A AI II IJBXJBXnstnst i i #1#1 DTDT l l臭面 SkSk 姥艾件夫fclufclu e-M-e-M- exeexe- -TT u u rr n_R=n_R= u u u u n_wn_w
50、uuy y T*T* * * * u u * ixix inin irTiirTijojo m m n nm-m-誹功詢 入普直 息貝令性息練 信莓齋摞 毘嚀曙霑亠1 1 2 2 4 4 b b 6 6按數(shù)字鍵1后出現(xiàn)課程信息錄入界面,根據(jù)提示依次輸入相關(guān)數(shù)據(jù),得到 下圖二。| |: C:C: DodcuMenlrsDodcuMenlrs andand S SE EHI:XnHI:Xn匡EX.jlLdtokEX.jlLdtok:L:rij.L:rij.:fitfit Xci:LXci:L桌面 IDmbuCppIDmbuCpp l.l. es:ees:e請輸.人揀作對應(yīng)的序號睛接鉉意挺地鋼.-圖
51、3存儲(chǔ)信息功能的實(shí)現(xiàn)輻入實(shí)臉武上機(jī)學(xué)時(shí)怦頃課律95信息為實(shí)驗(yàn)學(xué)時(shí):加課程騙號:松驗(yàn)密臉単引鱗嚴(yán)計(jì)爭橫:數(shù)學(xué)分析縣翱霽下報(bào)瀚型上總學(xué)時(shí):e e 課程編號咱畫: : W W課程編號呵 實(shí)驗(yàn)空町油賓叢=公共關(guān)系龍彗:潛理論垛程性匝匕考查 開俅學(xué)覇:大三下人二下總字時(shí)M0M0總學(xué)時(shí)=b=b投農(nóng)學(xué)比:toto保栓編號油囲 實(shí)驗(yàn)孚屮W W課程編號:力0606去驗(yàn)壬葉汨粼高竽數(shù)學(xué)傑程性顧匕若查 開傑孕期二大三下垛程性質(zhì)二考試 開慄學(xué)期:大一上下總學(xué)時(shí):3 30 0總學(xué)時(shí):辭披俠學(xué)肘:2U2U調(diào)用text文件按數(shù)字鍵2選擇瀏覽所有課程信息輸出所有課程信息,得到 圖四。:人 *Cs*Cs XDocmenlzsX
52、Docmenlzs andand Seli:Seli: ingsj!Ldla3.M3LiB!-tTa.tingsj!Ldla3.M3LiB!-tTa.t orJ&orJ& W W 8f8fVDebngVc-M.VDebngVc-M. eseese情技芒憊鍵繼續(xù)-圖4課程信息瀏覽功能的實(shí)現(xiàn)按數(shù)字鍵3選擇按學(xué)分查詢,輸入學(xué)分為4查詢到學(xué)分為4的所有課程的 課程信息得到圖五。圖5按學(xué)分查詢功能的實(shí)現(xiàn)按數(shù)字鍵4選擇按課程性質(zhì)查詢,輸入課程性質(zhì)為考試查詢到課程性質(zhì)是 考試的所有課程的課程信息得到圖六。圖6按課程性質(zhì)查詢功能的實(shí)現(xiàn)最后選擇數(shù)字鍵5退出學(xué)生選課系統(tǒng),得到圖七圖7退出系統(tǒng)功能的實(shí)現(xiàn)4、心得體會(huì)
53、雖然僅僅是幾天的課堂上機(jī)時(shí)間,然而我們在課下也為這個(gè)課程設(shè)計(jì)做出 很多的努力,尤其是在緊張的復(fù)習(xí)周,這足以證明著我們組每一個(gè)人對待 C+ 課程設(shè)計(jì)的態(tài)度端正立場堅(jiān)定。作為非計(jì)算機(jī)專業(yè)的學(xué)生,我對 C+勺了解僅限于皮毛,如若僅憑個(gè)人能 力,這么短的時(shí)間內(nèi)我想無論如何都是做不出這樣一個(gè)我自己看來還算是可以 的數(shù)據(jù)庫設(shè)計(jì)的。能在規(guī)定的時(shí)間內(nèi)完成各個(gè)步驟要感謝組里的每一位組員, 我們分工明確并且認(rèn)真完成自己的任務(wù)才得以實(shí)現(xiàn)了高效率。首先,我把自己 的思路告訴我的組員,他們在肯定我的想法的同時(shí)為那些不太完美的地方提出 的不一樣的見解,可謂是每一個(gè)人的 good 結(jié)合在一起就可以形成 perfect 。真
54、 正程序運(yùn)行的時(shí)候出現(xiàn)各種問題,需要反反復(fù)復(fù)的修改,最后在老師的幫助下 我們基本上得到了想要的結(jié)果。在和同學(xué)交流的時(shí)候我發(fā)現(xiàn)我的專業(yè)知識并不 是那么的牢固,我發(fā)揮自己優(yōu)勢的同時(shí)向別人學(xué)習(xí)以彌補(bǔ)自己的不足,正所謂 三人行必有我?guī)?。一個(gè)人不可能十全十美,但我想要接近完美的自己。三個(gè)人的合作不可能是完美無缺毫無瑕疵的,我們雖有著相同的目標(biāo),但 在其中卻也有過分歧有過爭吵有過埋怨,更多的還是三人同心協(xié)力團(tuán)結(jié)一致把 題目完成。往前翻看到那些親手碼上去的文字和截圖后的圖片還能感受到某一 時(shí)刻階段性完工時(shí)自信滿滿的心理情緒,某一段因?yàn)橐粋€(gè)小問題卡住的無奈與 思考,某一部分因?yàn)橐庖姴缓蠣幊车拿婕t耳赤。所有這些
55、小心情都是我在這次 課程設(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í)間的知識 儲(chǔ)備所具有的能量也許會(huì)在未來的某一天顯現(xiàn)出來。我很感謝能有機(jī)會(huì)學(xué)習(xí)這 樣一門課程經(jīng)歷這樣一次課程設(shè)計(jì),并且我在用心對待認(rèn)真去做,把它當(dāng)成一 件事情去做,這種心理的成就感我覺得很滿足。5、參考文獻(xiàn)1 .鄭莉,董淵,何江舟.C+語言程序設(shè)計(jì)M.北京:清華大學(xué)出版社,2010.2 .譚
56、浩強(qiáng).C+程序設(shè)計(jì)M.北京:清華大學(xué)出版社,20043 .陳維興.C+面向?qū)ο蟪绦蛟O(shè)計(jì)第三版M.北京:清華大學(xué)出版社,20104 .李師賢.C+程序設(shè)計(jì)實(shí)驗(yàn)程序M.北京:高等教育出版社附錄源程序:#include #include #include #include #include #include using namespace std;/class 類的封裝class Class定義了課程類的一些屬性public:void setClassNum(string classNumTemp);/ 課程編號 void setClassName(string classNameTemp);/ 課
57、程名稱 void setClassProperties(stri ng classPropertiesTemp);/ 課程性質(zhì) void setTotalClassNumber(int totalClassNumberTemp);/ 總學(xué)時(shí) void setCurrentClassNumber(int currentClassNumber);/ 授課學(xué)時(shí) void setExpClassNumber(int expClassNumberTemp);/ 實(shí)驗(yàn)或上機(jī)學(xué)時(shí) void setCredit(double credit);/ 學(xué)分void setRightTerm(string right
58、TermTemp);/ 開課信息/ 錄入函數(shù)設(shè)為常量函數(shù)防止信息被篡改string getClassNum() const;/ 課程編號錄入 stri ng getClassName() con st;/ 課程名稱錄入 stri ng getClassProperties() con st;/ 課程性質(zhì)錄入 int getTotalClassNumber() const;/ 總學(xué)時(shí)錄入 int getCurrentClassNumber() const;/ 授課學(xué)時(shí)錄入 int getExpClassNumber() const;/ 實(shí)驗(yàn)或上機(jī)學(xué)時(shí)錄入 double getCredit() c
59、onst;/ 學(xué)分錄入 string getRightTerm() const;/ 開課信息錄入/ class 類的私有成員private:stri ng classNum;/ 課程編號stri ng className;/ 課程名稱stri ng classProperties;/ 課程性質(zhì)int totalClassNumber;/ 總學(xué)時(shí)int currentClassNumber;/ 授課學(xué)時(shí)int expCIassNumber;/上級或?qū)嶒?yàn)學(xué)時(shí) double credit;/ 學(xué)分 string rightTerm;/ 開課學(xué)期;/class類中各成員函數(shù)的實(shí)現(xiàn)void Class:
60、setClassNum(string classNumTemp)this-classNum = classNumTemp;/ 設(shè)置課程編號的實(shí)現(xiàn) void Class:setClassName(string classNameTemp) this-className = classNameTemp;/ 設(shè)置課程名稱的實(shí)現(xiàn) void Class:setClassProperties(string classPropertiesTemp) this-classProperties = classPropertiesTemp;/ 設(shè)置課程性質(zhì)的實(shí)現(xiàn)void Class:setTotalClassNu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《應(yīng)變式位移傳感器》課件
- 幼兒園教職工安全培訓(xùn)課件
- 二零二五年度大連二手房源信息深度查詢及分析服務(wù)協(xié)議3篇
- 二零二五版城市供水管道材料采購及安裝合同3篇
- 《學(xué)習(xí)力與執(zhí)行力》課件
- 二零二五年度體育場館餐飲與休閑娛樂服務(wù)合同樣本
- 2025年獼猴桃種植園土地租賃與農(nóng)業(yè)物聯(lián)網(wǎng)應(yīng)用合同4篇
- 二零二五年度智慧城市滅鼠項(xiàng)目管理合同2篇
- 二零二五版旅游特色小鎮(zhèn)店面經(jīng)營承包合同3篇
- 2025年度智能家居窗簾遠(yuǎn)程控制技術(shù)合同4篇
- 專升本英語閱讀理解50篇
- 施工單位值班人員安全交底和要求
- 中國保險(xiǎn)用戶需求趨勢洞察報(bào)告
- 數(shù)字化轉(zhuǎn)型指南 星展銀行如何成為“全球最佳銀行”
- 中餐烹飪技法大全
- 靈芝孢子油減毒作用課件
- 現(xiàn)場工藝紀(jì)律檢查表
- 醫(yī)院品管圈與護(hù)理質(zhì)量持續(xù)改進(jìn)PDCA案例降低ICU病人失禁性皮炎發(fā)生率
- 新型電力系統(tǒng)研究
- 烘干廠股東合作協(xié)議書
- 法院服務(wù)外包投標(biāo)方案(技術(shù)標(biāo))
評論
0/150
提交評論