




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目:學(xué)生選課系統(tǒng) 學(xué) 號(hào) 姓 名 彭楚涵專 業(yè) 軟件工程(國(guó)際教育)班 級(jí) 指導(dǎo)教師 王志波 2011年 12 月 1 日目 錄第一章:面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)目的本課程設(shè)計(jì)是在學(xué)習(xí)面向?qū)ο蠡纠碚撝蟮膶?shí)踐教學(xué)環(huán)節(jié)。該實(shí)踐教學(xué)是軟件設(shè)計(jì)的綜合訓(xùn)練,包括問(wèn)題分析、總體結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、程序設(shè)計(jì)基本技能和技巧。要求學(xué)生在設(shè)計(jì)中逐步提高程序設(shè)計(jì)能力,培養(yǎng)科學(xué)的軟件工作方法。學(xué)生通過(guò)課程設(shè)計(jì)在下述各方面得到鍛煉:1能根據(jù)實(shí)際問(wèn)題的具體情況,結(jié)合面向?qū)ο蟮幕纠碚摵突炯记桑_分析問(wèn)題,并能設(shè)計(jì)出解決問(wèn)題的有效算法與程序。2提高程序設(shè)計(jì)和調(diào)試能力
2、。學(xué)生通過(guò)上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法和程序的正確性。學(xué)會(huì)有效利用基本調(diào)試方法,迅速找出程序代碼中的錯(cuò)誤并且修改,進(jìn)一步提高程序設(shè)計(jì)水平。第二章:算法分析課程設(shè)計(jì)標(biāo)題:學(xué)生選課系統(tǒng)要求:假定有n門(mén)課程,每門(mén)課程有課程編號(hào),課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開(kāi)課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于10)自由選課。試設(shè)計(jì)一選修課程系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作;2.課程信息錄入功能(課程信息用文件保存);3.課程信息瀏覽功能;4.查詢功能(至少一種查詢方式:按學(xué)分查詢、按課程性質(zhì)查詢);5.學(xué)生選修課程。應(yīng)用程序功能的詳細(xì)說(shuō)明:1. 首先根據(jù)設(shè)計(jì)要
3、求,我定義了三個(gè)類: Class類,Control類,Menu類。Class類用來(lái)存放一系列課程的信息,以及一些獲取信息的get函數(shù);Control類是用來(lái)定義選課類的操作屬性,從Control類里面來(lái)判斷并實(shí)現(xiàn)用戶所需要執(zhí)行的動(dòng)作;Menu類定義了菜單的操作,其中包括顯示菜單,顯示提示信息,獲取用戶從鍵盤(pán)初輸入的信息并執(zhí)行。2. 對(duì)Class類的定義,首先我定義了一系列的設(shè)置相關(guān)課程信息的公有函數(shù),用來(lái)將輸入的內(nèi)容傳給私有函數(shù),還定義了一些常函數(shù),旨在于防止數(shù)據(jù)被其它函數(shù)調(diào)用時(shí)發(fā)生改變,同時(shí)將學(xué)分定義為浮點(diǎn)型,范圍在010之間。3. 對(duì)Menu類的定義,我定義了一個(gè)獲取鍵盤(pán)輸入的函數(shù)getI
4、nput(),用于獲取數(shù)據(jù),并且還定義了界面友好的顯示目錄函數(shù),使得用戶進(jìn)行操作更加方便,以及定義了一系列的顯示提示信息函數(shù),之所以將這些函數(shù)獨(dú)立分開(kāi),是為了在今后的修改中更加清楚。4. 對(duì)Control類的定義,因?yàn)槠淠康氖怯糜谂袛嗖?shí)現(xiàn)用戶所要執(zhí)行的操作,是學(xué)生系統(tǒng)的核心。一切從start()函數(shù)開(kāi)始,通過(guò)switch語(yǔ)句判斷按下了哪個(gè)按鍵,然后執(zhí)行對(duì)應(yīng)的操作,在文件錄入這一方面,我定義了一個(gè)initIalization()函數(shù),首先建立一個(gè)輸入流,打開(kāi)文件,將用戶錄入的課程信息放入到變量中,再由變量放入文件中。其中的公有函數(shù)即課程設(shè)計(jì)所要求的功能部分:添加選課,瀏覽選課,查詢選課,保存文
5、件。私有函數(shù)我用了鏈表,classList,用來(lái)一條一條記錄課程信息,方便添加瀏覽以及查詢。兩種查詢方法都運(yùn)用了迭代器的功能,迭代器的作用相當(dāng)于指針,從鏈表的頭部一個(gè)個(gè)指向鏈表的末尾,用于瀏覽以及查詢部分。最后把迭代器指向的對(duì)象每個(gè)字段寫(xiě)入文件中,文件名定義為classSave,保存到程序的當(dāng)前目錄下。5. 最后主函數(shù)的實(shí)現(xiàn),代碼十分簡(jiǎn)單,先定義一個(gè)Control類的對(duì)象,ControlClass,再通過(guò)controlClass.start()啟動(dòng)整個(gè)程序。實(shí)現(xiàn)過(guò)程:1.菜單界面 如圖1圖12.課程信息錄入界面 如圖2圖23.課程信息瀏覽界面 如圖3圖34按學(xué)分查詢課程界面 如圖4圖45.按課
6、程性質(zhì)查詢課程界面 如圖5圖56存儲(chǔ)信息界面 如圖6圖6流程圖:主 菜 單課 程 信 息 錄 入課 程 信 息 瀏 覽根 據(jù) 學(xué) 分 查 詢根據(jù) 課程信息 查詢存 儲(chǔ) 文 件第三章:結(jié)束語(yǔ)通過(guò)本次面向?qū)ο蟪绦蛟O(shè)計(jì)周,我對(duì)C+這門(mén)語(yǔ)言有了更深的了解,也鞏固了我的C+方面的知識(shí)。在課程設(shè)計(jì)題目拿到后,我做了一系列的知識(shí)儲(chǔ)備,并且詳細(xì)復(fù)習(xí)了課本,但是真正開(kāi)始寫(xiě)代碼卻發(fā)現(xiàn)自己缺乏一個(gè)系統(tǒng)的知識(shí)框架,導(dǎo)致很多時(shí)候不知道從哪下手,如何實(shí)現(xiàn)課程設(shè)計(jì)要求的函數(shù)功能。從這里我深深的感受到,課本上所學(xué)到的知識(shí)只是基礎(chǔ)中的基礎(chǔ),要真正意義上提升自己的水平,必須不斷地練習(xí),所謂熟能生巧,在此次課程設(shè)計(jì)中,我運(yùn)用了一些
7、平時(shí)上課我忽略的一些知識(shí),例如鏈表,并且在老師的指導(dǎo)下學(xué)會(huì)了使用迭代器,了解了其用處類似于指針。在這次課程設(shè)計(jì)中,我還深切感受到了要用面向?qū)ο蟮乃枷肴シ治鲂枨?,?shí)現(xiàn)需求,還要設(shè)身處地貼近用戶實(shí)際使用。同時(shí),我能順利完成這次課程設(shè)計(jì),離不開(kāi)老師的指導(dǎo)與同學(xué)的幫助??傊視?huì)在今后其他語(yǔ)言中的學(xué)習(xí)中,更加努力,在實(shí)踐方面同樣也會(huì)更加花功夫,以取得更好成績(jī)。附:源代碼#include <iostream>#include <list>#include <string>#include <iterator>#include <algorithm&g
8、t;#include <fstream>using namespace std;class Class/定義了課程類的一些屬性public:void setClassNum(string classNumTemp);void setClassName(string classNameTemp);void setClassProperties(string classPropertiesTemp);void setTotalClassNumber(int totalClassNumberTemp);void setCurrentClassNumber(int currentClass
9、Number);void setExpClassNumber(int expClassNumberTemp);void setCredit(double credit);void setRightTerm(string rightTermTemp);string getClassNum() const;string getClassName() const;string getClassProperties() const;int getTotalClassNumber() const;int getCurrentClassNumber() const;int getExpClassNumbe
10、r() const;double getCredit() const;string getRightTerm() const;private:string classNum;string className;string classProperties;int totalClassNumber;int currentClassNumber;int expClassNumber;double credit;string rightTerm;void Class:setClassNum(string classNumTemp)this->classNum = classNumTemp;voi
11、d Class:setClassName(string classNameTemp)this->className = classNameTemp;void Class:setClassProperties(string classPropertiesTemp)this->classProperties = classPropertiesTemp;void Class:setTotalClassNumber(int totalClassNumberTemp)this->totalClassNumber = totalClassNumberTemp;void Class:set
12、CurrentClassNumber(int currentClassNumber)this->currentClassNumber = currentClassNumber;void Class:setExpClassNumber(int expClassNumberTemp)this->expClassNumber = expClassNumberTemp;void Class:setCredit(double credit)this->credit = credit;void Class:setRightTerm(string rightTermTemp)this-&g
13、t;rightTerm = rightTermTemp;string Class:getClassNum() const/設(shè)置為常函數(shù)防止數(shù)據(jù)改變r(jià)eturn this->classNum;string Class:getClassName() constreturn this->className;string Class:getClassProperties() constreturn this->classProperties;int Class:getTotalClassNumber() constreturn this->totalClassNumber;in
14、t Class:getCurrentClassNumber() constreturn this->currentClassNumber;int Class:getExpClassNumber() constreturn this->expClassNumber;double Class:getCredit() constreturn this->credit;string Class:getRightTerm() constreturn this->rightTerm;class Menu/定義了菜單類的操作public:char static getInput()
15、/獲取輸入函數(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;
16、cout << "3 根據(jù)學(xué)分查詢 " << endl;cout << "4 按課程性質(zhì)查詢 " << endl;cout << "5 存儲(chǔ)信息 " << endl;cout << " " << endl;cout << " 請(qǐng)輸入操作對(duì)應(yīng)的序號(hào) " << endl;cout << " *" << endl;void static c
17、learScreen()system("cls");void static pauseScreen()system("pause");void static showAddClass()cout << "請(qǐng)輸入要添加的課程編號(hào),課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開(kāi)課學(xué)期等信息" << endl; void static showBrowseClass()cout << "所有課程的信息為" << endl;void static showSe
18、archByCredit()cout << "按照學(xué)分查詢的結(jié)果為:" << endl;void static showSearchByClassProperties()cout << "按照課程性質(zhì)查詢的結(jié)果為:" << endl;void static showAddClassNum()cout << "n請(qǐng)輸入課程編號(hào)" << endl;void static showAddClassName()cout << "請(qǐng)輸入課程名稱&quo
19、t; << endl;void static showAddClassProperties()cout << "請(qǐng)輸入課程性質(zhì)" << endl;void static showAddTotalClassNumber()cout << "請(qǐng)輸入總學(xué)時(shí)" << endl;void static showAddCurrentClassNumber()cout << "請(qǐng)輸入授課學(xué)時(shí)" << endl;void static showAddExpClassN
20、umber()cout << "請(qǐng)輸入實(shí)驗(yàn)或上機(jī)學(xué)時(shí)" << endl;void static showAddCredit()cout << "請(qǐng)輸入學(xué)分" << endl;void static showAddRightTerm()cout << "請(qǐng)輸入開(kāi)課學(xué)期" << endl;void static showLoadingSaving()cout << "正在存儲(chǔ)數(shù)據(jù)" << endl;void static s
21、howSuccessedSaving()cout << "數(shù)據(jù)存儲(chǔ)完畢" << endl;void static showEachClassInfo(Class classTemp)cout << "課程編號(hào)" << classTemp.getClassNum() ;cout << "課程名稱" << classTemp.getClassName() ;cout << "課程性質(zhì)" << classTemp.getCla
22、ssProperties() ;cout << "總學(xué)時(shí)" << classTemp.getTotalClassNumber()<<endl ;cout << "授課學(xué)時(shí)" << classTemp.getCurrentClassNumber() ;cout << "實(shí)驗(yàn)或上機(jī)學(xué)時(shí)" << classTemp.getExpClassNumber() ;cout << "學(xué)分" << classTemp.get
23、Credit() ;cout << "開(kāi)課學(xué)期" << classTemp.getRightTerm()<<endl; cout << "" <<endl;class Control/定義了選課類的操作屬性public:Control()void start()/start里面要做的事情就是初始化界面,等待用戶輸入,判斷輸入調(diào)用initIalization();while(1)Menu:clearScreen();Menu:showMenu();/顯示了界面char key = Menu:get
24、Input();switch(key)case '1': /判斷是按下了哪個(gè)按鍵,然后執(zhí)行什么對(duì)應(yīng)的操作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->se
25、archByCredit();Menu:pauseScreen();break;case '4':Menu:clearScreen();this->searchByClassProperties();Menu:pauseScreen();break;case '5':Menu:showLoadingSaving();if (this->saveClass()Menu:showSuccessedSaving();Menu:pauseScreen();Menu:pauseScreen();default:break;void initIalization
26、()ifstream ifs;/文件輸入流ifs 相當(dāng)于建立一個(gè)文件ifs.open("classSave.txt",ios_base:in);if (!ifs)Menu:pauseScreen();return;Class classTemp;/class 類的一個(gè)對(duì)象 classTempif (ifs.is_open()/系統(tǒng)內(nèi)置函數(shù) 判斷文件是否打開(kāi)string classNum("");/初始化string className("");string classProperties("");int total
27、ClassNumber(0);int currentClassNumber(0);int expClassNumber(0);double credit(0.0);string rightTerm("");while(!ifs.eof()ifs >> classNum >> className >> classProperties >> totalClassNumber>> currentClassNumber >> expClassNumber >> credit >> rig
28、htTerm;/從文件讀取的內(nèi)容放到對(duì)應(yīng)的變量里面classTemp.setClassNum(classNum);classTemp.setClassName(className);classTemp.setClassProperties(classProperties);classTemp.setTotalClassNumber(totalClassNumber);classTemp.setCurrentClassNumber(currentClassNumber);classTemp.setExpClassNumber(expClassNumber);classTemp.setCredit
29、(credit);classTemp.setRightTerm(rightTerm);classList.push_back(classTemp);/在末尾添加一個(gè)變量ifs.close();void addClass()/添加例如選課等操作Class classTemp;string classNum("");string className("");string classProperties("");int totalClassNumber(0);int currentClassNumber(0);int expClassNum
30、ber(0);double credit(0.0);string rightTerm("");Menu:showAddClassNum();cin >> classNum;classTemp.setClassNum(classNum);Menu:showAddClassName();cin >> className;classTemp.setClassName(className);Menu:showAddClassProperties();cin >> classProperties;classTemp.setClassProperti
31、es(classProperties);Menu:showAddTotalClassNumber();cin >> totalClassNumber;classTemp.setTotalClassNumber(totalClassNumber);Menu:showAddCurrentClassNumber();cin >> currentClassNumber;classTemp.setCurrentClassNumber(currentClassNumber);Menu:showAddExpClassNumber();cin >> expClassNumb
32、er;classTemp.setExpClassNumber(expClassNumber);Menu:showAddCredit();cin >> credit;classTemp.setCredit(credit);Menu:showAddRightTerm();cin >> rightTerm;classTemp.setRightTerm(rightTerm);classList.push_back(classTemp);void showAllClass()/*一個(gè)迭代器從List的頭部遍歷到List的末尾*/for (list<Class>:ite
33、rator iter = classList.begin();iter != classList.end(); +iter)Menu:showEachClassInfo(*iter);void searchByCredit()list<Class>:iterator iter= classList.begin();double credit(0);Menu:showAddCredit();cin >> credit;Menu:showSearchByCredit();for (iter; iter != classList.end(); iter+)if (credit = iter->getCredit()Menu:showEachClassInfo(*iter);void searchByClassProperties()list<Clas
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東協(xié)和學(xué)院《產(chǎn)能成本決策虛擬仿真實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 商丘職業(yè)技術(shù)學(xué)院《天然提取物與生物活性物質(zhì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 濟(jì)寧2025年山東濟(jì)寧市直教育系統(tǒng)校園招聘55人(曲阜師范大學(xué)站)筆試歷年參考題庫(kù)附帶答案詳解
- 揚(yáng)州環(huán)境資源職業(yè)技術(shù)學(xué)院《數(shù)據(jù)可視化與數(shù)據(jù)新聞》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南體育職業(yè)技術(shù)學(xué)院《Java語(yǔ)言程序設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 瀘州職業(yè)技術(shù)學(xué)院《中國(guó)畫(huà)》2023-2024學(xué)年第二學(xué)期期末試卷
- 泰安2025年山東泰安岱岳區(qū)事業(yè)單位初級(jí)綜合類崗位招聘103人筆試歷年參考題庫(kù)附帶答案詳解-1
- 《負(fù)數(shù)的初步認(rèn)識(shí)》教學(xué)設(shè)計(jì)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)蘇教版
- 浙江商業(yè)職業(yè)技術(shù)學(xué)院《石油工程專業(yè)認(rèn)知專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北科技大學(xué)《通信電路設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- (高清版)DZT 0004-2015 重力調(diào)查技術(shù)規(guī)范(150 000)
- 子癇前期危險(xiǎn)因素篩查策略
- 燃?xì)膺^(guò)戶協(xié)議書(shū)
- 射頻同軸電纜簡(jiǎn)介
- 《勞動(dòng)專題教育》課件-勞動(dòng)的產(chǎn)生
- 中央經(jīng)濟(jì)會(huì)議2024原文及解釋
- 新高考化學(xué)2024備考選擇題高頻熱點(diǎn)專項(xiàng)突破16 弱電解質(zhì)的電離平衡
- 2021年古包頭市昆都侖區(qū)水務(wù)公司招聘考試試題及答案
- 關(guān)于中小企業(yè)“融資難”問(wèn)題的對(duì)策研究-基于臺(tái)灣經(jīng)驗(yàn)和啟示
- 固體廢棄物管理培訓(xùn)
- 硬件工程師職業(yè)生涯規(guī)劃
評(píng)論
0/150
提交評(píng)論