




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. 目錄TOC o 1-3 h z uHYPERLINK l _Toc1238474661系統需求分析 PAGEREF _Toc123847466 h 14HYPERLINK l _Toc1238474672總體設計 PAGEREF _Toc123847467 h 15HYPERLINK l _Toc1238474683詳細設計 PAGEREF _Toc123847468 h 16HYPERLINK l _Toc1238474694界面設計與各功能模塊實現 PAGEREF _Toc123847469 h 19HYPERLINK l _Toc1238474705 系統調試 PAGEREF _To
2、c123847470 h 23HYPERLINK l _Toc1238474716 實驗心得體會 PAGEREF _Toc123847471 h 24HYPERLINK l _Toc1238474727附:源程序 PAGEREF _Toc123847472 h 251系統需求分析1、本系統是針對高校學生的選修課程而設計,通過本系統高校學生可以很方便地進展自由選課。主要的問題描述是功能要求:n門課程,每門課程有課程,課程名稱,課程性質,總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求如總學分不得少于60自由選課。2、主要要現的功能如下:課程信息錄入功能:能根據提示將各課程的相
3、關信息進展輸入并保存; 課程信息瀏覽功能:能將已經錄入并保存的信息進展瀏覽;查詢功能:可根據不同的查詢方式查詢相應的課程信息。其中查詢方式有按學分查詢和按課程性質查詢兩種;系統流程圖如下:輸入與功能對應的的數字判斷有否開場執行相應功能完畢是否3、輸入輸出要求:系統以菜單方式工作。用戶根據每一個功能模塊輸入相應容,然后進展相應的操作。如需進展其他操作,可返回主菜單。輸出的容要有一個良好的界面,使用戶看清楚明白。2總體設計1、系統功能分析本系統主要由一個Class類及其五個成員函數組成。課題所要求的功能由各個函數分別得以實現。首先,在Class類定義了一些成員變量,用來保存課程,課程名稱,課程性質
4、,總學時,授課學時,實驗或上機學時,學分,開課學期等信息,還對它的成員變量進展了聲明,如:然后,在類外,通過作用域運算符將類聲明的成員函數定義,以及進展相應的操作,以實現相應的功能。主要包括功能要求中的五大功能,即信息輸入、信息瀏覽、按學分查詢課程、按課程性質查詢課程等。最后,在主函數中設置目錄顯示。用switch瓜分不同的功能選項。系統根據用戶輸入的符號,調用相應的成員函數,完成功能的實現。2、各個模塊之間的關系如下列圖:學生選修課程系統設計Course類Main函數InputOutput SearchByscoreSearchByKind3詳細設計數據庫需求分析該程序主要包含一個Class
5、類和一個main()函數。其中Class類中有Input(),OutPut(),Search(),SearchByscore(float),SearchByKind(string)函數來實現各功能。像在Input()信息輸入函數中,ofstream outfile 創立一個文件輸出流對象語句就要用到系統庫函數fstream,而conio.h則是 Console (鍵盤和屏幕) 輸出輸入函數的頭文件,con - Console,io - input,output。程序中各功能函數如SearchBy(float)按分數查詢和 SearchByKind(string)按性質查詢,顯然是兩個獨立的函數
6、,但其實現過程很像似。數據庫概念構造設計ER圖課程授課學時時名稱上級學時性質學分時 時總學分開課學期輸入入輸出顯示查找數據庫邏輯構造設計類層次圖課程課程課程名字課程性質總學時授課學時實驗或上機學時 學分開課學期課程信息錄入功能課程信息瀏覽功能查詢功能按學分查詢按課程性質查詢學生選修課程4界面設計與各功能模塊實現1、功能實現的文件模塊: 在主函數中設置目錄顯示。設計一個友好、漂亮的界面,通過switch語句進展選擇進入相應的功能模塊,建立一個class類的對象a,用對象名調用class類的功能函數,恰當的使用清屏函數。通過對象a調用相應的成員函數,如a.Input()、a.OutPut()、a.
7、Search()等等,這些公有函數成員就是這個系統要求設計的功能模塊。各個功能函數的具體實現如下: 錄入函數模塊:首先,創立一個文件輸出流對象outfile,翻開文件,判斷文件是否存在。通過while設一個無限循環,當給出指定條件時退出。在循環中,調用cout函數來提示用戶輸入相應的信息,如課程、名稱、課程性質、總學時、授課學時、實驗或上機學時、學分、開課學期等等。將需要的課程輸入完畢之后,可根據提示再輸入f,即可返回主菜單,重新進展功能的選擇。該步驟界面設計操作圖如下:(輸入1”,根據提示輸入課程信息:)顯示瀏覽函數模塊:該函數首先創立了輸入流文件對象infile,使用語句infile.op
8、en(file),然后定義一個string類型的二維數組,用來保存從文本讀取的信息,用for循環保證保存不止一門課程的信息。最后,cout輸出顯示所有保存的信息。操作界面圖如下:查找功能,即按學分查找和按課程性質查找,具體的實現如下:按課程性質查找:創立輸入流文件對象infile,然后定義一個string類型的二維數組,用來保存從文本讀取的信息,比擬用戶輸入的字符和保存的信息中那些課程的性質相對應,將相應的課程信息進展輸出顯示,界面設計操作圖如下:按課程學分查找:原理同上,如果用戶輸入的學分與所保存的信息想對應,則將對應的課程信息輸出顯示。輸入0可返回主菜單。具體程序見源程序清單。該步驟界面顯
9、示如下:5 系統調試1、 在查找功能函數當中,剛開場我輸入的課程性質用數字代替,而后面我的查找函數在進展輸入比擬時是用漢字進展比擬的,這樣就導致了查找錯誤,剛開場我找了好久也找不出來,后來還是在同學的幫助下終于找到了這個錯誤,并改正。輸出了正確的結果。2、在class類當中我剛開場把成員變量如課程性質只簡單的設置為字符型char,當在類外進展初始化時出現了錯誤,因為把要獲得字符串的函數只簡單的設置為字符型是不行的,它的返回得不到一個字符串,要把其設置string類型或者數組類型,這樣就可以通過編譯了。 3、進展程序調試時,事先函數中沒有用到清屏,導致界面繁瑣不清晰。后來在頭文件中加了#incl
10、ude,又在程序中適當地添加了system(cls)語句,這才使得界面友好清晰。6 實驗心得體會心得 連續三天的課程設計終于要接近尾聲了。雖然接下來還要面臨緊的期末考試,但總算可以稍微松一口氣。說實話,每次做課程設計、寫實驗報告,我都好上火長痘好幾天。本來因為上學期的課程設計沒有認真做,在網上下載了一篇類似的題目,自己作了一些修改,便跑去辯論,被教師當眾批評,心里羞愧得要死!心里暗下決心,這次試驗報告一定要自己寫,不管寫得多差,只要自己很努力地認真在寫就好了。這次題目初看不是很難,一個類,一些成員變量,幾個成員函數,將它們組合起來就OK了??墒窃綄懴氯?,便覺得處處是難題。到最后感覺自己像處在一
11、個大迷宮里,四周到處是出口,走近了一看,卻發現那只是上面畫著門的墻壁我只會定義一個類和它的成員變量以及成員函數,但要要有N門課程呢,還要能顯示你所輸入的課程信息,還要按要求將分類不同的信息挑選出來天哪,這可怎么辦呢?看來,要將自己輸入的信息有記錄地保存起來就好了??墒墙處煕]教這個呀后來才知道相關容在C語言教科書上有,上學期的課程設計也有涉及到,但由于上次的沒有認真做,所以對該知識點沒有印象。還跑去圖書館找資料,找到了相關容,可是,辯論的時間也逼近了第三天上午進實驗室,問同學,發現已經有人將這個題目完整地做了出來,我不得不感慨人家的才思敏捷。也難怪哦,人家是腳踏實地,C語言的根底打得好,誰讓我上
12、學期玩去了呢?呵教師在實驗室里鼓勵大家積極辯論,我盯著自己的作品,這個連半成品都談不上的程序,這能去辯論嗎?教師也沒要求必須辯論,要不,直接copy他們的程序寫了實驗報告交差完事了!但這不跟上學期一樣了么?我這近三天的寢食難安不都白熬了么?去辯論吧,就算給自己的付出一個結果吧教師很仁慈,我的那個程序對于題目要求根本沒什么意義,也就是說我根本沒完成任務。估計教師是看我熬了這三天太可憐了,勉強讓我過了。實驗做完了,心情還是有點沉重,但沒上次那樣難過了。畢竟自己寫的,通過思考,查資料,還是學到了不少東西的,對C語言也進展了穩固。我要盡快將所缺的知識填補上來,然后再下次的課程設計中打個漂亮的勝仗!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); /按照學分查找void SearchByCourseKind(string); /按照課程;類型查找;const char* coursefile=C:course.t*t; /將課程信息定位到C盤下的course.t*t中!void Course:CourseInfoInput() /課程信息的錄入ofstream outcoursefile; /創立一個文件輸出流對象outcoursefile.open(coursefile); /翻開文件if(!outcoursefile) /判斷文件是否存在cou
15、t 文件翻開失敗! endl;return ;while(1) /無限循環,給出指定條件退出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(); /關閉輸出流文件void Course:CourseInfoOutPut() /課程信息的瀏覽ifstream incoursefile; /創立輸入流文件對象incoursefile.open(coursefile); /翻開if(!incoursefile) /判斷文件存在cout 文件讀取失敗;return ;cout 課程 | 課程名稱 | 課程性質 | 總學時 | 授課學時 | 實驗上機學時 | 學分|開課學期n;string arrcour
17、se100100; /定義一個string類型的二維數組,用來保存從文本讀取的信息int line=0;memset(arrcourse,0,sizeof(arrcourse); /將數組清空while(!incoursefile.eof() /文件不為空的條件設置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; /創立輸入流文件對象incoursefile.open(coursefile); /翻開if(!incoursefile) /判斷文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3arrcourseline4arrcourseline5arrcourseline6; /文件流讀取數據line+;cout 課程 | 課程名稱 | 課程性質 | 總學時 | 授課學時 | 實驗上機學時 | 學分|開課學期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; /創立輸入流文件對象incoursefile.open(coursefile); /翻開if(!incoursefile) /判斷文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3arrcourseline4arrcourseline5arrcourseline6;line+;cout 課程 | 課程名稱 | 課程性質 | 總學時 | 授課學時 | 實驗上機學時 | 學分|開課學期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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公樓房地產買賣居間協議
- 旅游目的地規劃與產品設計試題
- 社會保險費征繳工作方案
- 制藥工程學課程設計(原料藥生產示例)
- 單面支模施工技術
- 劍橋少兒英語二級單詞表
- 乳汁生成和分泌
- 領導力培訓與團隊建設實戰案例分享
- 音樂節中的國際觀眾吸引力提升策略
- 音樂創作中的數學原理-節奏與旋律的數學分析
- 夫妻 股權轉讓協議
- 數據鏈系統與技術(第2版) 課件 第1、2章 數據鏈的基本概念、數據鏈的發展歷程
- 鹽霧試驗測試報告
- 香港員工手冊
- (完整版)動火作業施工方案
- 財務部崗位廉潔風險點及防范措施匯總表
- 托物言志文章講評評改
- 古代漢語Ⅰ學習通課后章節答案期末考試題庫2023年
- 西方經濟學吉林大學期末考試題庫答案 2023春
- 超級電容器基礎知識
- 內部創業基礎智慧樹知到答案章節測試2023年湖南大學
評論
0/150
提交評論