




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、11常孝理N火孽EAST CHINA INSTITUTE OF TECHNOLOGY課程設(shè)計報告課程設(shè)計題目:學(xué)生選課系統(tǒng)學(xué)號1021113423姓名彭楚涵專業(yè)軟件工程(國際教育)班級10211134指導(dǎo)教師王志波2011年12月1日第一章:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計目的2第二章:算法分析 3第三章:結(jié)束語 8附:源代碼 93第一章:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計目的本課程設(shè)計是在學(xué)習(xí)面向?qū)ο蠡纠碚撝蟮膶?shí)踐教學(xué)環(huán)節(jié)。該實(shí)踐教學(xué)是軟件設(shè)計的綜合訓(xùn)練,包括問題分析、總體結(jié)構(gòu)設(shè)計、用戶界面設(shè)計、程序設(shè)計基本技能和技巧。要求學(xué)生在設(shè)計中逐步提高程序設(shè)計能力,培養(yǎng)科學(xué)的軟件工作方法。學(xué)生通過課程設(shè)計在下述各
2、方面得到鍛煉:1能根據(jù)實(shí)際問題的具體情況,結(jié)合面向?qū)ο蟮幕纠碚摵突炯记?,正確分析問題,并能設(shè)計出解決問題的有效算法與程序。2提高程序設(shè)計和調(diào)試能力。學(xué)生通過上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計的算法和程序的正確性。學(xué)會有效利用基本調(diào)試方法,迅速找出程序代碼中的錯誤并且修改,進(jìn)一步提高程序設(shè)計水平。第二章:算法分析課程設(shè)計標(biāo)題:學(xué)生選課系統(tǒng)要求: 假定有 n 門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學(xué)時,授課學(xué)時, 實(shí)驗(yàn)或上機(jī)學(xué)時,學(xué)分, 開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于10)自由選課。試設(shè)計一選修課程系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作;2.課程信息錄入功能(課程信息
3、用文件保存); 3.課程信息瀏覽功能;4.查詢功能(至少一種查詢方式:按學(xué)分查詢、按課程性質(zhì)查詢); 5.學(xué)生選修課程。應(yīng)用程序功能的詳細(xì)說明:1. 首先根據(jù)設(shè)計要求,我定義了三個類:Class類,Control類,Menu類。Class類用來存放一系列課程的信息,以及一些獲取信息的get函數(shù);Control類是用來定義選課類的操作屬性,從Control 類里面來判斷并實(shí)現(xiàn)用戶所需要執(zhí)行的動作;Menu 類定義了菜單的操作,其中包括顯示菜單,顯示提示信息,獲取用戶從鍵盤初輸入的 信息并執(zhí)行。2. 對 Class 類的定義,首先我定義了一系列的設(shè)置相關(guān)課程信息的公有函數(shù),用來將 輸入的內(nèi)容傳給私
4、有函數(shù),還定義了一些常函數(shù),旨在于防止數(shù)據(jù)被其它函數(shù)調(diào)用時發(fā)生改變,同時將學(xué)分定義為浮點(diǎn)型,范圍在010 之間。3. 對Menu類的定義,我定義了一個獲取鍵盤輸入的函數(shù)getInput(),用于獲取數(shù)據(jù),并且還定義了界面友好的顯示目錄函數(shù),使得用戶進(jìn)行操作更加方便,以及定義了一系列的顯示提示信息函數(shù),之所以將這些函數(shù)獨(dú)立分開,是為了在今后的修改中 更加清楚。4. 對 Control 類的定義,因?yàn)槠淠康氖怯糜谂袛嗖?shí)現(xiàn)用戶所要執(zhí)行的操作,是學(xué)生系統(tǒng)的核心。一切從start()函數(shù)開始,通過switch語句判斷按下了哪個按鍵,然后執(zhí)行對應(yīng)的操作,在文件錄入這一方面,我定義了一個initIaliz
5、ation() 函數(shù),首先建立一個輸入流,打開文件,將用戶錄入的課程信息放入到變量中,再由變量放入文件中。其中的公有函數(shù)即課程設(shè)計所要求的功能部分:添加選課,瀏覽選課,查詢選課,保存文件。私有函數(shù)我用了鏈表,classList,用來一條一條記錄課程信息,方 便添加瀏覽以及查詢。兩種查詢方法都運(yùn)用了迭代器的功能,迭代器的作用相當(dāng)于指針,從鏈表的頭部一個個指向鏈表的末尾,用于瀏覽以及查詢部分。最后把迭代器指向的對象每個字段寫入文件中,文件名定義為classSave保存到程序的當(dāng)前目錄下。5. 最后主函數(shù)的實(shí)現(xiàn),代碼十分簡單,先定義一個Control 類的對象,ControlClass,再通過con
6、trolClass.start()啟動整個程序。實(shí)現(xiàn)過程:1.菜單界面如圖1功詢 入翟查 所查質(zhì) 自3息分性息 -.=“&七廿12 3 4-5圖25請輸入操作對應(yīng)的序號圖12 .課程信息錄入界面如圖2程口信諜性E -j 1 接課孚時20息為0P 曲 學(xué) ub機(jī) 稱上 程臉 課實(shí)課程性質(zhì)ms 學(xué)分3總學(xué)時40. 5開課學(xué)期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 .按學(xué)分查詢課程界面 如圖4請3.按課授
7、電一 1 2分號時為程的果課實(shí)課程三五miigt 學(xué)分3息學(xué)曠錮.5開課孚期law t5.按課程性質(zhì)查詢課程界面如圖5課生三五mii.t 學(xué)分3照迷程性質(zhì)查詢的結(jié)第號1課程02的學(xué):uh機(jī) 為稱上忌學(xué)曠蛆.5開課率期law t6.存儲信息界面如圖6學(xué)生選課管理系統(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è)計題目拿到后,我做了一系列的知識儲備,并且詳細(xì)復(fù)習(xí)了課本,但是真正開始寫代碼卻發(fā)現(xiàn)自己缺乏一個系統(tǒng)的知識框架,導(dǎo)致很多時候不知道從哪下手,如何實(shí)現(xiàn)課程設(shè)計要求的函數(shù)功能。從這里我深深的感受到,課本上所學(xué)到的知識只是基礎(chǔ)中的基礎(chǔ),要真正意義上提升自己的水平,必須不斷地練習(xí),所謂熟能生巧,在此次課程設(shè)計中,我運(yùn)用了一些平時上課我忽略的一些知識,例如鏈表,并且在老師的指導(dǎo)下學(xué)會了使用迭代器,了解了其用處類似于指針。在這次課程設(shè)計中,我還深切感受到了要用面向?qū)ο蟮乃枷肴シ治鲂枨?,?shí)現(xiàn)需求,還要設(shè)身處地貼近用戶實(shí)際使用。同時,我能順利完成這次課程設(shè)計,離不開老師的指導(dǎo)與同
9、學(xué)的幫助。總之,我會在今后其他語言中的學(xué)習(xí)中,更加努力,在實(shí)踐方面同樣也會更加花功夫,以取得更好成績。附:源代碼#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 學(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 存儲信息 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ì),總學(xué)時,授課學(xué)時,實(shí)驗(yàn)或上機(jī)學(xué)時,學(xué)分,開課學(xué)期等信息 endl;void static showBrowseClass() cout 所有課程的信息為 endl;void static showSearchByCredit() cout 按照學(xué)分查詢的結(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 請輸入總學(xué)時 endl;void static showAddCurrentClassNumber()cout 請輸入授課學(xué)時 endl;void static showAddE
19、xpClassNumber()cout 請輸入實(shí)驗(yàn)或上機(jī)學(xué)時 endl;void static showAddCredit()cout 請輸入學(xué)分 endl;void static showAddRightTerm()cout 請輸入開課學(xué)期 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 總學(xué)時 classTemp.getTotalClassNumber()endl ;cout 授課學(xué)時 classTemp.getCurrentClassNumber() ;cout 實(shí)驗(yàn)或上機(jī)學(xué)時 classTemp.getExpClassNumber() ;cout 學(xué)分 classTemp.getCredit() ;cout 開課學(xué)期 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 相當(dāng)于建立一個文件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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 能源天然氣綜合利用項(xiàng)目建議書
- 2022年交通安全活動總結(jié)(15篇)
- 焦?fàn)t煤氣制甲醇項(xiàng)目建議書(模板)
- 建材物流園工程初步設(shè)計
- 既有供暖蒸汽管網(wǎng)及設(shè)施改造項(xiàng)目建議書(參考范文)
- 法制宣傳教育講座
- 四川省雅安市名山中學(xué)2023-2024學(xué)年高一上學(xué)期12月月考生物 含解析
- 美術(shù)教育生職業(yè)生涯規(guī)劃
- 幼兒識字教學(xué)設(shè)計及實(shí)施策略
- 濰坊護(hù)理職業(yè)學(xué)院《仿生智能材料》2023-2024學(xué)年第二學(xué)期期末試卷
- 工業(yè)硅行業(yè)可行性研究報告
- 水生態(tài)修復(fù)與保護(hù)概述
- 地鐵站白蟻防治施工方案
- 水暖工培訓(xùn)教材課件
- 神奇糖果店課件
- 年產(chǎn)30萬噸苯乙烯車間粗苯乙烯精餾工段的工藝設(shè)計畢業(yè)論文
- 股骨頸骨折一病一品課件
- 結(jié)腸鏡單人操作法插入技術(shù)與技巧模板
- 膝關(guān)節(jié)體格檢查
- 社會學(xué)知識競賽(58道含答案)
- 職業(yè)衛(wèi)生公告欄內(nèi)容
評論
0/150
提交評論