版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、. 目錄TOC o 1-3 h z uHYPERLINK l _Toc1238474661系統(tǒng)需求分析 PAGEREF _Toc123847466 h 14HYPERLINK l _Toc1238474672總體設(shè)計(jì) PAGEREF _Toc123847467 h 15HYPERLINK l _Toc1238474683詳細(xì)設(shè)計(jì) PAGEREF _Toc123847468 h 16HYPERLINK l _Toc1238474694界面設(shè)計(jì)與各功能模塊實(shí)現(xiàn) PAGEREF _Toc123847469 h 19HYPERLINK l _Toc1238474705 系統(tǒng)調(diào)試 PAGEREF _To
2、c123847470 h 23HYPERLINK l _Toc1238474716 實(shí)驗(yàn)心得體會(huì) PAGEREF _Toc123847471 h 24HYPERLINK l _Toc1238474727附:源程序 PAGEREF _Toc123847472 h 251系統(tǒng)需求分析1、本系統(tǒng)是針對(duì)高校學(xué)生的選修課程而設(shè)計(jì),通過本系統(tǒng)高校學(xué)生可以很方便地進(jìn)展自由選課。主要的問題描述是功能要求:n門課程,每門課程有課程,課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開課學(xué)期等信息,學(xué)生可按要求如總學(xué)分不得少于60自由選課。2、主要要現(xiàn)的功能如下:課程信息錄入功能:能根據(jù)提示將各課程的相
3、關(guān)信息進(jìn)展輸入并保存; 課程信息瀏覽功能:能將已經(jīng)錄入并保存的信息進(jìn)展瀏覽;查詢功能:可根據(jù)不同的查詢方式查詢相應(yīng)的課程信息。其中查詢方式有按學(xué)分查詢和按課程性質(zhì)查詢兩種;系統(tǒng)流程圖如下:輸入與功能對(duì)應(yīng)的的數(shù)字判斷有否開場執(zhí)行相應(yīng)功能完畢是否3、輸入輸出要求:系統(tǒng)以菜單方式工作。用戶根據(jù)每一個(gè)功能模塊輸入相應(yīng)容,然后進(jìn)展相應(yīng)的操作。如需進(jìn)展其他操作,可返回主菜單。輸出的容要有一個(gè)良好的界面,使用戶看清楚明白。2總體設(shè)計(jì)1、系統(tǒng)功能分析本系統(tǒng)主要由一個(gè)Class類及其五個(gè)成員函數(shù)組成。課題所要求的功能由各個(gè)函數(shù)分別得以實(shí)現(xiàn)。首先,在Class類定義了一些成員變量,用來保存課程,課程名稱,課程性質(zhì)
4、,總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開課學(xué)期等信息,還對(duì)它的成員變量進(jìn)展了聲明,如:然后,在類外,通過作用域運(yùn)算符將類聲明的成員函數(shù)定義,以及進(jìn)展相應(yīng)的操作,以實(shí)現(xiàn)相應(yīng)的功能。主要包括功能要求中的五大功能,即信息輸入、信息瀏覽、按學(xué)分查詢課程、按課程性質(zhì)查詢課程等。最后,在主函數(shù)中設(shè)置目錄顯示。用switch瓜分不同的功能選項(xiàng)。系統(tǒng)根據(jù)用戶輸入的符號(hào),調(diào)用相應(yīng)的成員函數(shù),完成功能的實(shí)現(xiàn)。2、各個(gè)模塊之間的關(guān)系如下列圖:學(xué)生選修課程系統(tǒng)設(shè)計(jì)Course類Main函數(shù)InputOutput SearchByscoreSearchByKind3詳細(xì)設(shè)計(jì)數(shù)據(jù)庫需求分析該程序主要包含一個(gè)Class
5、類和一個(gè)main()函數(shù)。其中Class類中有Input(),OutPut(),Search(),SearchByscore(float),SearchByKind(string)函數(shù)來實(shí)現(xiàn)各功能。像在Input()信息輸入函數(shù)中,ofstream outfile 創(chuàng)立一個(gè)文件輸出流對(duì)象語句就要用到系統(tǒng)庫函數(shù)fstream,而conio.h則是 Console (鍵盤和屏幕) 輸出輸入函數(shù)的頭文件,con - Console,io - input,output。程序中各功能函數(shù)如SearchBy(float)按分?jǐn)?shù)查詢和 SearchByKind(string)按性質(zhì)查詢,顯然是兩個(gè)獨(dú)立的函數(shù)
6、,但其實(shí)現(xiàn)過程很像似。數(shù)據(jù)庫概念構(gòu)造設(shè)計(jì)ER圖課程授課學(xué)時(shí)時(shí)名稱上級(jí)學(xué)時(shí)性質(zhì)學(xué)分時(shí) 時(shí)總學(xué)分開課學(xué)期輸入入輸出顯示查找數(shù)據(jù)庫邏輯構(gòu)造設(shè)計(jì)類層次圖課程課程課程名字課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí) 學(xué)分開課學(xué)期課程信息錄入功能課程信息瀏覽功能查詢功能按學(xué)分查詢按課程性質(zhì)查詢學(xué)生選修課程4界面設(shè)計(jì)與各功能模塊實(shí)現(xiàn)1、功能實(shí)現(xiàn)的文件模塊: 在主函數(shù)中設(shè)置目錄顯示。設(shè)計(jì)一個(gè)友好、漂亮的界面,通過switch語句進(jìn)展選擇進(jìn)入相應(yīng)的功能模塊,建立一個(gè)class類的對(duì)象a,用對(duì)象名調(diào)用class類的功能函數(shù),恰當(dāng)?shù)氖褂们迤梁瘮?shù)。通過對(duì)象a調(diào)用相應(yīng)的成員函數(shù),如a.Input()、a.OutPut()、a.
7、Search()等等,這些公有函數(shù)成員就是這個(gè)系統(tǒng)要求設(shè)計(jì)的功能模塊。各個(gè)功能函數(shù)的具體實(shí)現(xiàn)如下: 錄入函數(shù)模塊:首先,創(chuàng)立一個(gè)文件輸出流對(duì)象outfile,翻開文件,判斷文件是否存在。通過while設(shè)一個(gè)無限循環(huán),當(dāng)給出指定條件時(shí)退出。在循環(huán)中,調(diào)用cout函數(shù)來提示用戶輸入相應(yīng)的信息,如課程、名稱、課程性質(zhì)、總學(xué)時(shí)、授課學(xué)時(shí)、實(shí)驗(yàn)或上機(jī)學(xué)時(shí)、學(xué)分、開課學(xué)期等等。將需要的課程輸入完畢之后,可根據(jù)提示再輸入f,即可返回主菜單,重新進(jìn)展功能的選擇。該步驟界面設(shè)計(jì)操作圖如下:(輸入1”,根據(jù)提示輸入課程信息:)顯示瀏覽函數(shù)模塊:該函數(shù)首先創(chuàng)立了輸入流文件對(duì)象infile,使用語句infile.op
8、en(file),然后定義一個(gè)string類型的二維數(shù)組,用來保存從文本讀取的信息,用for循環(huán)保證保存不止一門課程的信息。最后,cout輸出顯示所有保存的信息。操作界面圖如下:查找功能,即按學(xué)分查找和按課程性質(zhì)查找,具體的實(shí)現(xiàn)如下:按課程性質(zhì)查找:創(chuàng)立輸入流文件對(duì)象infile,然后定義一個(gè)string類型的二維數(shù)組,用來保存從文本讀取的信息,比擬用戶輸入的字符和保存的信息中那些課程的性質(zhì)相對(duì)應(yīng),將相應(yīng)的課程信息進(jìn)展輸出顯示,界面設(shè)計(jì)操作圖如下:按課程學(xué)分查找:原理同上,如果用戶輸入的學(xué)分與所保存的信息想對(duì)應(yīng),則將對(duì)應(yīng)的課程信息輸出顯示。輸入0可返回主菜單。具體程序見源程序清單。該步驟界面顯
9、示如下:5 系統(tǒng)調(diào)試1、 在查找功能函數(shù)當(dāng)中,剛開場我輸入的課程性質(zhì)用數(shù)字代替,而后面我的查找函數(shù)在進(jìn)展輸入比擬時(shí)是用漢字進(jìn)展比擬的,這樣就導(dǎo)致了查找錯(cuò)誤,剛開場我找了好久也找不出來,后來還是在同學(xué)的幫助下終于找到了這個(gè)錯(cuò)誤,并改正。輸出了正確的結(jié)果。2、在class類當(dāng)中我剛開場把成員變量如課程性質(zhì)只簡單的設(shè)置為字符型char,當(dāng)在類外進(jìn)展初始化時(shí)出現(xiàn)了錯(cuò)誤,因?yàn)榘岩@得字符串的函數(shù)只簡單的設(shè)置為字符型是不行的,它的返回得不到一個(gè)字符串,要把其設(shè)置string類型或者數(shù)組類型,這樣就可以通過編譯了。 3、進(jìn)展程序調(diào)試時(shí),事先函數(shù)中沒有用到清屏,導(dǎo)致界面繁瑣不清晰。后來在頭文件中加了#incl
10、ude,又在程序中適當(dāng)?shù)靥砑恿藄ystem(cls)語句,這才使得界面友好清晰。6 實(shí)驗(yàn)心得體會(huì)心得 連續(xù)三天的課程設(shè)計(jì)終于要接近尾聲了。雖然接下來還要面臨緊的期末考試,但總算可以稍微松一口氣。說實(shí)話,每次做課程設(shè)計(jì)、寫實(shí)驗(yàn)報(bào)告,我都好上火長痘好幾天。本來因?yàn)樯蠈W(xué)期的課程設(shè)計(jì)沒有認(rèn)真做,在網(wǎng)上下載了一篇類似的題目,自己作了一些修改,便跑去辯論,被教師當(dāng)眾批評(píng),心里羞愧得要死!心里暗下決心,這次試驗(yàn)報(bào)告一定要自己寫,不管寫得多差,只要自己很努力地認(rèn)真在寫就好了。這次題目初看不是很難,一個(gè)類,一些成員變量,幾個(gè)成員函數(shù),將它們組合起來就OK了??墒窃綄懴氯?,便覺得處處是難題。到最后感覺自己像處在一
11、個(gè)大迷宮里,四周到處是出口,走近了一看,卻發(fā)現(xiàn)那只是上面畫著門的墻壁我只會(huì)定義一個(gè)類和它的成員變量以及成員函數(shù),但要要有N門課程呢,還要能顯示你所輸入的課程信息,還要按要求將分類不同的信息挑選出來天哪,這可怎么辦呢?看來,要將自己輸入的信息有記錄地保存起來就好了??墒墙處煕]教這個(gè)呀后來才知道相關(guān)容在C語言教科書上有,上學(xué)期的課程設(shè)計(jì)也有涉及到,但由于上次的沒有認(rèn)真做,所以對(duì)該知識(shí)點(diǎn)沒有印象。還跑去圖書館找資料,找到了相關(guān)容,可是,辯論的時(shí)間也逼近了第三天上午進(jìn)實(shí)驗(yàn)室,問同學(xué),發(fā)現(xiàn)已經(jīng)有人將這個(gè)題目完整地做了出來,我不得不感慨人家的才思敏捷。也難怪哦,人家是腳踏實(shí)地,C語言的根底打得好,誰讓我上
12、學(xué)期玩去了呢?呵教師在實(shí)驗(yàn)室里鼓勵(lì)大家積極辯論,我盯著自己的作品,這個(gè)連半成品都談不上的程序,這能去辯論嗎?教師也沒要求必須辯論,要不,直接copy他們的程序?qū)懥藢?shí)驗(yàn)報(bào)告交差完事了!但這不跟上學(xué)期一樣了么?我這近三天的寢食難安不都白熬了么?去辯論吧,就算給自己的付出一個(gè)結(jié)果吧教師很仁慈,我的那個(gè)程序?qū)τ陬}目要求根本沒什么意義,也就是說我根本沒完成任務(wù)。估計(jì)教師是看我熬了這三天太可憐了,勉強(qiáng)讓我過了。實(shí)驗(yàn)做完了,心情還是有點(diǎn)沉重,但沒上次那樣難過了。畢竟自己寫的,通過思考,查資料,還是學(xué)到了不少東西的,對(duì)C語言也進(jìn)展了穩(wěn)固。我要盡快將所缺的知識(shí)填補(bǔ)上來,然后再下次的課程設(shè)計(jì)中打個(gè)漂亮的勝仗!7附
13、:源程序#include#include#include#include#includeusing namespace std;class Courseprivate:int courseNumber;string courseName;string courseKind;int coursePeriod;int schoolPeriod;int e*perimentPeriod;float credithour;string courseterm;public:void CourseInfoInput(); /信息輸入void CourseInfoOutPut(); /信息輸出void Se
14、arch(); /查找信息void SearchByCredithour(float); /按照學(xué)分查找void SearchByCourseKind(string); /按照課程;類型查找;const char* coursefile=C:course.t*t; /將課程信息定位到C盤下的course.t*t中!void Course:CourseInfoInput() /課程信息的錄入ofstream outcoursefile; /創(chuàng)立一個(gè)文件輸出流對(duì)象outcoursefile.open(coursefile); /翻開文件if(!outcoursefile) /判斷文件是否存在cou
15、t 文件翻開失??! endl;return ;while(1) /無限循環(huán),給出指定條件退出cout *課程信息*n;cout 按任意鍵開場信息錄入 n;cout 輸入q退出 n;if(getch()=q)break;coutcourseNumber;coutcourseName;coutcourseKind;coutcoursePeriod;coutschoolPeriod;coute*perimentPeriod;coutcredithour; coutcourseterm;outcoursefilecourseNumber courseName courseKind coursePeri
16、od schoolPeriod e*perimentPeriod credithour endl;outcoursefile.close(); /關(guān)閉輸出流文件void Course:CourseInfoOutPut() /課程信息的瀏覽ifstream incoursefile; /創(chuàng)立輸入流文件對(duì)象incoursefile.open(coursefile); /翻開if(!incoursefile) /判斷文件存在cout 文件讀取失敗;return ;cout 課程 | 課程名稱 | 課程性質(zhì) | 總學(xué)時(shí) | 授課學(xué)時(shí) | 實(shí)驗(yàn)上機(jī)學(xué)時(shí) | 學(xué)分|開課學(xué)期n;string arrcour
17、se100100; /定義一個(gè)string類型的二維數(shù)組,用來保存從文本讀取的信息int line=0;memset(arrcourse,0,sizeof(arrcourse); /將數(shù)組清空while(!incoursefile.eof() /文件不為空的條件設(shè)置for(int j=0;jarrcourselinej;line+; for(int i=0;iline;i+)for(int j=0;j7;j+)cout arrcourseij t;cout endl;incoursefile.close();void Course:SearchByCredithour(float tempch
18、)ifstream incoursefile; /創(chuàng)立輸入流文件對(duì)象incoursefile.open(coursefile); /翻開if(!incoursefile) /判斷文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3arrcourseline4arrcourseline5arrcourseline6; /文件流讀取數(shù)據(jù)line+;cout 課程 | 課程名稱 | 課程性質(zhì) | 總學(xué)時(shí) | 授課學(xué)時(shí) | 實(shí)驗(yàn)上機(jī)學(xué)時(shí) | 學(xué)分|開課學(xué)期n;for(int i=0;iline;i+)if(atof(arrc
19、oursei6.c_str()=tempch) /比擬cout arrcoursei0 t arrcoursei1 t arrcoursei2 t arrcoursei3 t arrcoursei4 t arrcoursei5 t arrcoursei6n endl;cout nn;incoursefile.close();void Course:SearchByCourseKind(string strtemp)/課程類型查詢ifstream incoursefile; /創(chuàng)立輸入流文件對(duì)象incoursefile.open(coursefile); /翻開if(!incoursefile) /判斷文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3arrcourseline4arrcourseline5arrcourseline6;line+;cout 課程 | 課程名稱 | 課程性質(zhì) | 總學(xué)時(shí) | 授課學(xué)時(shí) | 實(shí)驗(yàn)上機(jī)學(xué)時(shí) | 學(xué)分|開課學(xué)期n;for(int i=0;iline;i+)if(arrcoursei2=strtemp)cout arrcoursei0 t arrcoursei1 t arrcoursei2t arrcoursei3 t arrcoursei
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023三年級(jí)語文下冊(cè) 第七單元 語文園地配套教案 新人教版
- 自招保安合同(2篇)
- 唐詩《墨梅》課件
- 經(jīng)營杠桿 課件
- 西京學(xué)院《數(shù)字邏輯與數(shù)字電路》2022-2023學(xué)年期末試卷
- 幼兒園小班音樂 《大魚和小魚》課件
- 西京學(xué)院《建設(shè)法規(guī)》2022-2023學(xué)年第一學(xué)期期末試卷
- HF均相離子交換膜
- 西京學(xué)院《廣告攝影與攝像》2023-2024學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《房地產(chǎn)開發(fā)經(jīng)營與管理》2022-2023學(xué)年第一學(xué)期期末試卷
- WS-T 390-2012 醫(yī)院急診科規(guī)范化流程
- 心源性卒中診斷和治療
- 鋼棧橋及平臺(tái)檢查驗(yàn)收標(biāo)準(zhǔn)
- 污水處理工程監(jiān)理大綱(附多圖)
- 人教版八年級(jí)上冊(cè)英語全冊(cè)教案(完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 保潔服務(wù)技能比武方案
- 醫(yī)療機(jī)構(gòu)腸道門診工作自查用表參考范本
- T∕CGMA 033001-2018 壓縮空氣站能效分級(jí)指南
- 《汽車維護(hù)》教案全套 課程單元設(shè)計(jì)
- 有創(chuàng)呼吸機(jī)講義PPT通用課件
- 電子信息系統(tǒng)機(jī)房基礎(chǔ)設(shè)施運(yùn)行維護(hù)規(guī)范》(QPBC 00009-2016)
評(píng)論
0/150
提交評(píng)論