




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、11常孝理N火孽EAST CHINA INSTITUTE OF TECHNOLOGY課程設(shè)計報告課程設(shè)計題目:學生選課系統(tǒng)學號1021113423姓名彭楚涵專業(yè)軟件工程(國際教育)班級10211134指導教師王志波2011年12月1日第一章:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計目的2第二章:算法分析 3第三章:結(jié)束語 8附:源代碼 93第一章:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計目的本課程設(shè)計是在學習面向?qū)ο蠡纠碚撝蟮膶嵺`教學環(huán)節(jié)。該實踐教學是軟件設(shè)計的綜合訓練,包括問題分析、總體結(jié)構(gòu)設(shè)計、用戶界面設(shè)計、程序設(shè)計基本技能和技巧。要求學生在設(shè)計中逐步提高程序設(shè)計能力,培養(yǎng)科學的軟件工作方法。學生通過課程設(shè)計在下述各
2、方面得到鍛煉:1能根據(jù)實際問題的具體情況,結(jié)合面向?qū)ο蟮幕纠碚摵突炯记?,正確分析問題,并能設(shè)計出解決問題的有效算法與程序。2提高程序設(shè)計和調(diào)試能力。學生通過上機實習,驗證自己設(shè)計的算法和程序的正確性。學會有效利用基本調(diào)試方法,迅速找出程序代碼中的錯誤并且修改,進一步提高程序設(shè)計水平。第二章:算法分析課程設(shè)計標題:學生選課系統(tǒng)要求: 假定有 n 門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學時,授課學時, 實驗或上機學時,學分, 開課學期等信息,學生可按要求(如總學分不得少于10)自由選課。試設(shè)計一選修課程系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作;2.課程信息錄入功能(課程信息
3、用文件保存); 3.課程信息瀏覽功能;4.查詢功能(至少一種查詢方式:按學分查詢、按課程性質(zhì)查詢); 5.學生選修課程。應(yīng)用程序功能的詳細說明:1. 首先根據(jù)設(shè)計要求,我定義了三個類:Class類,Control類,Menu類。Class類用來存放一系列課程的信息,以及一些獲取信息的get函數(shù);Control類是用來定義選課類的操作屬性,從Control 類里面來判斷并實現(xiàn)用戶所需要執(zhí)行的動作;Menu 類定義了菜單的操作,其中包括顯示菜單,顯示提示信息,獲取用戶從鍵盤初輸入的 信息并執(zhí)行。2. 對 Class 類的定義,首先我定義了一系列的設(shè)置相關(guān)課程信息的公有函數(shù),用來將 輸入的內(nèi)容傳給私
4、有函數(shù),還定義了一些常函數(shù),旨在于防止數(shù)據(jù)被其它函數(shù)調(diào)用時發(fā)生改變,同時將學分定義為浮點型,范圍在010 之間。3. 對Menu類的定義,我定義了一個獲取鍵盤輸入的函數(shù)getInput(),用于獲取數(shù)據(jù),并且還定義了界面友好的顯示目錄函數(shù),使得用戶進行操作更加方便,以及定義了一系列的顯示提示信息函數(shù),之所以將這些函數(shù)獨立分開,是為了在今后的修改中 更加清楚。4. 對 Control 類的定義,因為其目的是用于判斷并實現(xiàn)用戶所要執(zhí)行的操作,是學生系統(tǒng)的核心。一切從start()函數(shù)開始,通過switch語句判斷按下了哪個按鍵,然后執(zhí)行對應(yīng)的操作,在文件錄入這一方面,我定義了一個initIaliz
5、ation() 函數(shù),首先建立一個輸入流,打開文件,將用戶錄入的課程信息放入到變量中,再由變量放入文件中。其中的公有函數(shù)即課程設(shè)計所要求的功能部分:添加選課,瀏覽選課,查詢選課,保存文件。私有函數(shù)我用了鏈表,classList,用來一條一條記錄課程信息,方 便添加瀏覽以及查詢。兩種查詢方法都運用了迭代器的功能,迭代器的作用相當于指針,從鏈表的頭部一個個指向鏈表的末尾,用于瀏覽以及查詢部分。最后把迭代器指向的對象每個字段寫入文件中,文件名定義為classSave保存到程序的當前目錄下。5. 最后主函數(shù)的實現(xiàn),代碼十分簡單,先定義一個Control 類的對象,ControlClass,再通過con
6、trolClass.start()啟動整個程序。實現(xiàn)過程:1.菜單界面如圖1功詢 入翟查 所查質(zhì) 自3息分性息 -.=“&七廿12 3 4-5圖25請輸入操作對應(yīng)的序號圖12 .課程信息錄入界面如圖2程口信諜性E -j 1 接課孚時20息為0P 曲 學 ub機 稱上 程臉 課實課程性質(zhì)ms 學分3總學時40. 5開課學期law t請將三意鍵繼續(xù). . .3 .課程信息瀏覽界面 如圖3I , C :. Jsers Admi n strator.Wt N - LT P SC JSO z MD es*ctc c- Debu gC ppi .exe圖47圖34 .按學分查詢課程界面 如圖4請3.按課授
7、電一 1 2分號時為程的果課實課程三五miigt 學分3息學曠錮.5開課孚期law t5.按課程性質(zhì)查詢課程界面如圖5課生三五mii.t 學分3照迷程性質(zhì)查詢的結(jié)第號1課程02的學:uh機 為稱上忌學曠蛆.5開課率期law t6.存儲信息界面如圖6學生選課管理系統(tǒng) J J J JJy i_r J1”JI-111 11-I1,1J. i_r i_ri J 1-1 11 11 1-1 1-,1.J. .j a-rJl-l能功詢?nèi)氲圆椴橘|(zhì)息息分性息蘭,一一子呈一百3H12 3 4 5請輸入操作對應(yīng)的序號圖96流程圖:22第三章:結(jié)束語通過本次面向?qū)ο蟪绦蛟O(shè)計周,我對 C+位門語言有了更深的了解,也鞏
8、固了我的C+方面的知識。在課程設(shè)計題目拿到后,我做了一系列的知識儲備,并且詳細復習了課本,但是真正開始寫代碼卻發(fā)現(xiàn)自己缺乏一個系統(tǒng)的知識框架,導致很多時候不知道從哪下手,如何實現(xiàn)課程設(shè)計要求的函數(shù)功能。從這里我深深的感受到,課本上所學到的知識只是基礎(chǔ)中的基礎(chǔ),要真正意義上提升自己的水平,必須不斷地練習,所謂熟能生巧,在此次課程設(shè)計中,我運用了一些平時上課我忽略的一些知識,例如鏈表,并且在老師的指導下學會了使用迭代器,了解了其用處類似于指針。在這次課程設(shè)計中,我還深切感受到了要用面向?qū)ο蟮乃枷肴シ治鲂枨?,實現(xiàn)需求,還要設(shè)身處地貼近用戶實際使用。同時,我能順利完成這次課程設(shè)計,離不開老師的指導與同
9、學的幫助??傊?,我會在今后其他語言中的學習中,更加努力,在實踐方面同樣也會更加花功夫,以取得更好成績。附:源代碼#include #include #include #include #include #include using namespace std;class Class/ 定義了課程類的一些屬性public:void setClassNum(string classNumTemp);void setClassName(string classNameTemp);void setClassProperties(string classPropertiesTemp);void setT
10、otalClassNumber(int totalClassNumberTemp);void setCurrentClassNumber(int currentClassNumber);void setExpClassNumber(int expClassNumberTemp);void setCredit(double credit);void setRightTerm(string rightTermTemp);string getClassNum() const;string getClassName() const;string getClassProperties() const;i
11、nt getTotalClassNumber() const;int getCurrentClassNumber() const;int getExpClassNumber() const;double getCredit() const;string getRightTerm() const;private:string classNum;string className;string classProperties;int totalClassNumber;int currentClassNumber;int expClassNumber;double credit;string righ
12、tTerm;void Class:setClassNum(string classNumTemp) this-classNum = classNumTemp;void Class:setClassName(string classNameTemp) this-className = classNameTemp;void Class:setClassProperties(string classPropertiesTemp) this-classProperties = classPropertiesTemp;void Class:setTotalClassNumber(int totalCla
13、ssNumberTemp) this-totalClassNumber = totalClassNumberTemp;void Class:setCurrentClassNumber(int currentClassNumber) this-currentClassNumber = currentClassNumber;void Class:setExpClassNumber(int expClassNumberTemp) this-expClassNumber = expClassNumberTemp;void Class:setCredit(double credit) this-cred
14、it = credit;void Class:setRightTerm(string rightTermTemp) this-rightTerm = rightTermTemp;string Class:getClassNum() const/ 設(shè)置為常函數(shù)防止數(shù)據(jù)改變 return this-classNum;string Class:getClassName() const return this-className;string Class:getClassProperties() const return this-classProperties;int Class:getTotalC
15、lassNumber() constreturn this-totalClassNumber;int Class:getCurrentClassNumber() const return this-currentClassNumber;int Class:getExpClassNumber() const return this-expClassNumber;double Class:getCredit() const return this-credit;string Class:getRightTerm() const return this-rightTerm;class Menu/ 定
16、義了菜單類的操作public:char static getInput() /獲取輸入函數(shù)char key = cin.get();return key;void static showMenu()cout 學生選課管理系統(tǒng) endl;cout * endl;cout endl;cout 1 課程信息錄入 endl;cout 2 課程信息瀏覽功能 endl;cout 3 根據(jù)學分查詢 endl;cout 4 按課程性質(zhì)查詢 endl;cout 5 存儲信息 endl;cout endl;cout 請輸入操作對應(yīng)的序號 endl;cout * endl;void static clearScre
17、en() system(cls);void static pauseScreen() system(pause);void static showAddClass() cout 請輸入要添加的課程編號,課程名稱,課程性質(zhì),總學時,授課學時,實驗或上機學時,學分,開課學期等信息 endl;void static showBrowseClass() cout 所有課程的信息為 endl;void static showSearchByCredit() cout 按照學分查詢的結(jié)果為: endl;void static showSearchByClassProperties() cout 按照課程性
18、質(zhì)查詢的結(jié)果為: endl;void static showAddClassNum() cout n 請輸入課程編號 endl;void static showAddClassName() cout 請輸入課程名稱 endl;void static showAddClassProperties() cout 請輸入課程性質(zhì) endl;void static showAddTotalClassNumber() cout 請輸入總學時 endl;void static showAddCurrentClassNumber()cout 請輸入授課學時 endl;void static showAddE
19、xpClassNumber()cout 請輸入實驗或上機學時 endl;void static showAddCredit()cout 請輸入學分 endl;void static showAddRightTerm()cout 請輸入開課學期 endl;void static showLoadingSaving()cout 正在存儲數(shù)據(jù) endl;void static showSuccessedSaving()cout 數(shù)據(jù)存儲完畢 endl;void static showEachClassInfo(Class classTemp)cout 課程編號 classTemp.getClassN
20、um() ;cout 課程名稱 classTemp.getClassName() ;cout 課程性質(zhì) classTemp.getClassProperties() ;cout 總學時 classTemp.getTotalClassNumber()endl ;cout 授課學時 classTemp.getCurrentClassNumber() ;cout 實驗或上機學時 classTemp.getExpClassNumber() ;cout 學分 classTemp.getCredit() ;cout 開課學期 classTemp.getRightTerm()endl;cout addCla
21、ss();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:clearScreen();this-searchByClassProperties();Menu:pauseScreen();break;case 5:Menu:showLoad
22、ingSaving();if (this-saveClass()Menu:showSuccessedSaving();Menu:pauseScreen();Menu:pauseScreen();default:break; void initIalization()ifstream ifs;/ 文件輸入流ifs 相當于建立一個文件ifs.open(classSave.txt,ios_base:in); if (!ifs)Menu:pauseScreen(); return; Class classTemp;/class 類的一個對象classTempif (ifs.is_open()/ 系統(tǒng)內(nèi)
23、置函數(shù)判斷文件是否打開string classNum();/ 初始化 string className(); string classProperties(); int totalClassNumber(0); int currentClassNumber(0);int expClassNumber(0);double credit(0.0);string rightTerm(); while(!ifs.eof()ifs classNum className classProperties totalClassNumber currentClassNumber expClassNumber c
24、redit rightTerm;/從文件讀取的內(nèi)容放到對應(yīng)的變量里面classTemp.setClassNum(classNum);classTemp.setClassName(className);classTemp.setClassProperties(classProperties); classTemp.setTotalClassNumber(totalClassNumber);classTemp.setCurrentClassNumber(currentClassNumber);classTemp.setExpClassNumber(expClassNumber);classTemp
25、.setCredit(credit);classTemp.setRightTerm(rightTerm);classList.push_back(classTemp);/ 在末尾添加一個變量 ifs.close(); void addClass()/ 添加例如選課等操作Class classTemp;string classNum();string className();string classProperties();int totalClassNumber(0);int currentClassNumber(0);int expClassNumber(0);double credit(0
26、.0);string rightTerm();Menu:showAddClassNum();cin classNum;classTemp.setClassNum(classNum);Menu:showAddClassName();cin className;classTemp.setClassName(className);Menu:showAddClassProperties();cin classProperties;classTemp.setClassProperties(classProperties);Menu:showAddTotalClassNumber();cin totalC
27、lassNumber;classTemp.setTotalClassNumber(totalClassNumber);Menu:showAddCurrentClassNumber();cin currentClassNumber;classTemp.setCurrentClassNumber(currentClassNumber);Menu:showAddExpClassNumber();cin expClassNumber;classTemp.setExpClassNumber(expClassNumber);Menu:showAddCredit();cin credit;classTemp
28、.setCredit(credit);Menu:showAddRightTerm();cin rightTerm;classTemp.setRightTerm(rightTerm);classList.push_back(classTemp);void showAllClass()/* 一個迭代器從List 的頭部遍歷到List 的末尾 */for (list:iterator iter = classList.begin();iter != classList.end(); +iter) Menu:showEachClassInfo(*iter);void searchByCredit()list:iterator iter= classList.b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教育決策:大數(shù)據(jù)驅(qū)動下的學校治理與績效評價報告
- 房地產(chǎn)企業(yè)2025年財務(wù)風險控制與穩(wěn)健性發(fā)展策略報告
- 2025年元宇宙社交平臺用戶行為分析與互動模式研究報告
- 虛擬現(xiàn)實教育產(chǎn)品在職業(yè)院校計算機專業(yè)教學中的應(yīng)用效果報告
- 2025年元宇宙社交平臺社交圈層構(gòu)建與社區(qū)生態(tài)研究報告
- 2025年元宇宙基礎(chǔ)設(shè)施建設(shè)關(guān)鍵環(huán)節(jié):區(qū)塊鏈技術(shù)應(yīng)用現(xiàn)狀與展望報告
- 2025年江蘇省常州市八年級英語第二學期期末預測試題含答案
- 深度剖析2025年教育行業(yè)招生策略與行業(yè)競爭態(tài)勢分析報告001
- 保育員考試題目及答案2019
- 保安師傅考試試題及答案
- 生產(chǎn)工單結(jié)單管理制度
- 北京市2025年第一次普通高中學業(yè)水平合格性考試政治試題(原卷版)
- 2025年陜西、山西、青海、寧夏高考物理試卷真題(含答案解析)
- 2025年全國統(tǒng)一高考數(shù)學試卷(全國一卷)含答案
- 2025-2030中國過程自動化系統(tǒng)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析研究報告
- 2025-2030中國臘味行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資風險研究報告
- 2025年心理咨詢師資格考試試題及答案
- 北京市西城區(qū)三年級下學期數(shù)學期末試卷(含答案)
- 惜時教育主題班會課件
- T/CECS 10214-2022鋼面鎂質(zhì)復合風管
- 銀行證券化信貸資產(chǎn)管理辦法
評論
0/150
提交評論