




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課 程 設 計 報 告課程名稱 算法與程序設計 課題名稱 學生選修課程系統(tǒng) 專 業(yè) 信息與計算科學 班 級 1002班 學 號 姓 名 指導教師 2011年12 月 24 日湖 南 工 程 學 院課 程 設 計 任 務 書課程名稱 算法與程序設計 課 題 學生選修課程系統(tǒng) 專業(yè)班級 信息與計算科學1002班 學生姓名 學 號 指導老師 審 批 任務書下達日期 2011 年 12 月 8日任務完成日期 2012 年 1 月 7日一、設計內容與設計要求1設計內容:對課程算法與程序設計中的相關內容進行綜合設計或應用(具體課題題目見后面的供選題目)。題目1:學生選修課程系統(tǒng)(一)、課程設計題目:學生選
2、修課程系統(tǒng)(二)、目的與要求: 1、目的: (1)要求學生達到熟練掌握C+語言的基本知識和技能; (2)基本掌握面向對象程序設計的基本思路和方法; (3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。 2、基本要求: (1)要求利用面向對象的方法以及C+的編程思想來完成系統(tǒng)的設計; (2)要求在設計的過程中,建立清晰的類層次; (4)在系統(tǒng)的設計中,至少要用到面向對象的一種機制。 3、創(chuàng)新要求: 在基本要求達到后,可進行創(chuàng)新設計,如根據(jù)查找結果進行修改的功能。 4、寫出設計說明書 (三、)設計方法和基本原理: 1、問題描述(功能要求): 假定有n門課程,每門課程有課程編號,課程
3、名稱,課程性質,總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于60)自由選課。試設計一選修課程系統(tǒng),使之能提供以下功能:(1)系統(tǒng)以菜單方式工作(2)課程信息錄入功能(課程信息用文件保存)輸入(3)課程信息瀏覽功能輸出(4)查詢功能:(至少一種查詢方式)算法 按學分查詢 按課程性質查詢(5)學生選修課程(可選項)2、問題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: (1)分析系統(tǒng)中的各個實體之間的關系及其屬性和行為; (2)根據(jù)問題描述,設計系統(tǒng)的類層次; (3)完成類層次中各個類的描述(包括屬性和方法); (4)完成類中各個成員函數(shù)的定
4、義; (5)完成系統(tǒng)的應用模塊; (6)功能調試; (7)完成系統(tǒng)總結報告以及系統(tǒng)使用說明書。2設計要求:l 課程設計報告正文內容(包括系統(tǒng)設計要求,設計思路,系統(tǒng)功能模塊圖,系統(tǒng)流程圖,類的層次圖(包括類成員列表),調試過程,關鍵程序代碼,總結,參考書目等)。(一)需求分析系統(tǒng)設計目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖);輸入輸出的要求;(二)總體設計系統(tǒng)功能分析; 系統(tǒng)功能模塊劃分與設計(系統(tǒng)功能模塊圖)。(三)詳細設計數(shù)據(jù)庫需求分析 ;數(shù)據(jù)庫概念結構設計(ER圖);數(shù)據(jù)庫邏輯結構設計;類層次圖(四)界面設計與各功能模塊實現(xiàn)(五)系統(tǒng)調試調試問題出現(xiàn)的主要問題:編譯語法錯誤及修改,重點是運行
5、邏輯問題修改和調整(六)使用說明及編程體會說明如何使用你編寫的程序,詳細列出每一步的操作步驟。(七)關鍵源程序(帶注釋)l 書寫格式a要求用A4紙打印成冊b正文格式:一級標題用3號黑體,二級標題用四號宋體加粗,正文用小四號宋體;行距為22。c正文的內容:正文總字數(shù)要求在3000字左右(不含程序原代碼)。d封面格式如下頁。l 考核方式指導老師負責驗收程序的運行結果,并結合學生的工作態(tài)度、實際動手能力、創(chuàng)新精神和設計報告等進行綜合考評,并按優(yōu)秀、良好、中等、及格和不及格五個等級給出每位同學的課程設計成績。具體考核標準包含以下幾個部分:a平時出勤 (占10%)b系統(tǒng)需求分析、功能設計、數(shù)據(jù)結構設計及
6、程序總體結構合理與否(占10%)c程序能否完整、準確地運行,個人能否獨立、熟練地調試程序(占40%)d設計報告(占30%)注意:不得抄襲他人的報告(或給他人抄襲),一旦發(fā)現(xiàn),成績?yōu)榱惴?。e獨立完成情況(占10%)。l 課程驗收要求a判定算法設計的合理性,運行相關程序,獲得正確的數(shù)值結果。b回答有關問題。c提交課程設計報告。d提交軟盤(源程序、設計報告文檔)。e依內容的創(chuàng)新程度,完善程序情況及對程序講解情況打分。三、 教材及參考書 李春葆等著, C+ 語言程序設計題典,清華大學出版社;譚浩強著,C+面向對象程序設計,清華大學出版社;宛延闿編著,C+語言與面向對象程序設計,清華大學出版社,1998
7、;鄭阿奇主編,Visual C+實用教程,電子工業(yè)出版社,2000;譚浩強著,C語言程序設計(第三版),清華大學出版社;Brian Overland 著,董梁等譯.C+語言命令詳解(第二版).北京:電子工業(yè)出版社四、進度安排班級: 信息與計算科學:1001、1002、10031、 主講教師:王祝君2、 輔導教師:王祝君、聶 存 云3、 時間安排:第 16-17 周 星期二 8時:00分11時:30分 星期二 14時:00分17時:30分 星期六 8時:30分11時:30分 星期六 14時:30分17時:30分目錄第一章 課題簡述11設計內容及設計要求312系統(tǒng)需求分析7第二章 設計簡介及系統(tǒng)大
8、綱21設計簡介211學生端設計8212管理端設計822系統(tǒng)流程9第二章 詳細設計31數(shù)據(jù)庫需求分析932數(shù)據(jù)庫概念結構設計(ER圖)1033數(shù)據(jù)庫邏輯結構設計1034類層次圖1035界面設計與各功能模塊的實現(xiàn)11第三章 系統(tǒng)調試41調試及修改14總結14附錄 完整程序代碼15數(shù)理系課程設計評分表.25第一章 課題簡述系統(tǒng)需求分析當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。
9、計算機進行信息管理與信息管理系統(tǒng)的開發(fā)密切相關,系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好選課信息而設計的。學校作為一種信息資源的集散地,學生和課程繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的學校都是初步開始使用,甚至尚未使用計算機進行信息管理。根據(jù)調查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質的手工處理,對于選課情況的統(tǒng)計和查詢等往往采用對課程的人工檢查進行,對學生的選課權限、以及選課代號等用人工計算、手抄進行。數(shù)據(jù)信息處理工作量大,容易出錯;由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管學校都有計算機,但是尚未用于信息管理,沒有發(fā)揮
10、它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。數(shù)據(jù)處理手工操作,工作量大,出錯率高,出錯后不易更改。學校采取手工方式對學生選課情況進行人工管理,由于信息比較多,選課信息的管理工作混亂而又復雜;一般選課情況是記錄在文件上,課程的數(shù)目和代號也記錄在文件中,學校的工作人員也只是當時對它比較清楚,時間長了,如再要進行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費時、費力。如要對很長時間以前的選課進行更改就更加困難了?;谶@些問題,我認為有必要建立一個學生選課系統(tǒng)。本系統(tǒng)是針對高校學生的選修課程而設計,通過本系統(tǒng)高校學生可以很方便地進行自由選課。第二章 設計簡介及系統(tǒng)大綱2.1設計簡
11、介本系統(tǒng)的實現(xiàn),全部采用C+文件輸入輸出流,同時還借鑒了部分C語言的知識以及網(wǎng)上查閱的資料,系統(tǒng)設計主要分為學生端設計和管理端設計。2.1.1 學生端的設計1-瀏覽課程信息void Course:CourseInfoOutPut()2-查詢課程信息void Course:Search()void Course:SearchByCredithourvoid Course:SearchByCourseKind(string strtemp)void Course:SearchByCourseName3-退出系統(tǒng);2.1.2 管理端的設計1-錄入課程信息void Course:CourseInfoI
12、nput() 2-瀏覽課程信息void Course:CourseInfoOutPut()3-查詢課程信息void Course:Search()void Course:SearchByCredithourvoid Course:SearchByCourseKind(string strtemp)void Course:SearchByCourseName4-退出系統(tǒng)2.2 系統(tǒng)流程主 菜 單瀏覽課程查詢課程管理員菜單錄入課程退出系統(tǒng)瀏覽所有課程查詢課程信息學生菜單退出系統(tǒng)圖22系統(tǒng)流程圖第三章 詳細設計(1) 數(shù)據(jù)庫需求分析該程序主要包含一個Class類和一個main()函數(shù)。其中Class
13、類中有Input(),OutPut(),Search(),SearchByscore(float),SearchByKind(string),SearchByNmae(string)函數(shù)來實現(xiàn)各功能。像在Input()信息輸入函數(shù)中,ofstream outfile 創(chuàng)建一個文件輸出流對象語句就要用到系統(tǒng)庫函數(shù)fstream,而conio.h則是 Console (鍵盤和屏幕) 輸出輸入函數(shù)的頭文件,con - Console,io - input,output。程序中各功能函數(shù)如SearchBy (float)按分數(shù)查詢,SearchByKind(string)按性質查詢,和SearchBy
14、Name(string)按課程名稱,顯然是三個獨立的函數(shù),但其實現(xiàn)過程很像似。(2) 數(shù)據(jù)庫概念結構設計(ER圖)課程授課學時時編號名稱上級學時性質學分時 時總學分開課學期輸入入輸出顯示查找性質(3) 類層次圖主菜單 學生選修課程系統(tǒng)Course類Main函數(shù)Input()Output() SearchByscore()SearchByKind()管理員程系統(tǒng)4界面設計與各功能模塊實現(xiàn)(1)、功能實現(xiàn)的文件模塊: 在主函數(shù)中設置目錄顯示。設計一個友好、漂亮的界面,通過switch語句進行選擇進入相應的功能模塊,建立一個class類的對象a,用對象名調用class類的功能函數(shù),恰當?shù)氖褂们迤梁瘮?shù)
15、。通過對象a調用相應的成員函數(shù),如a.Input()、a.OutPut()、a.Search()等等,這些公有函數(shù)成員就是這個系統(tǒng)要求設計的功能模塊。各個功能函數(shù)的具體實現(xiàn)如下: 、 錄入函數(shù)模塊:首先,利用switch語句鑒別從鍵盤上輸入的數(shù)字,繞后分別執(zhí)行相應的void Mangers()和void Students()函數(shù),分別顯示不同的登錄界面。然后創(chuàng)建一個文件輸出流對象outfile,打開文件,判斷文件是否存在。通過while設一個無限循環(huán),當給出指定條件時退出。在循環(huán)中,調用cout函數(shù)來提示用戶輸入相應的信息,如課程編號、名稱、課程性質、總學時、授課學時、實驗或上機學時、學分、開
16、課學期等等。將需要的課程輸入完畢之后,可根據(jù)提示再輸入“q”,即可返回主菜單,重新進行功能的選擇。該步驟界面設計操作圖如下:(輸入“1”,根據(jù)提示輸入課程信息:)(輸入“2”,根據(jù)提示輸入課程信息:)顯示(瀏覽)函數(shù)模塊:該函數(shù)首先創(chuàng)建了輸入流文件對象infile,使用語句infile.open(file),然后定義一個string類型的二維數(shù)組,用來保存從文本內讀取的信息,用for循環(huán)保證保存不止一門課程的信息。最后,cout輸出顯示所有保存的信息。操作界面圖如下:查找功能,即按學分查找,按課程性質和按課程名稱查找,具體的實現(xiàn)如下:按課程性質查找:創(chuàng)建輸入流文件對象infile,然后定義一個
17、string類型的二維數(shù)組,用來保存從文本內讀取的信息,比較用戶輸入的字符和保存的信息中那些課程的性質相對應,將相應的課程信息進行輸出顯示,界面設計操作圖如下:按課程名稱查找:原理同上,如果用戶輸入的學分與所保存的信息想對應,則將對應的課程信息輸出顯示。輸入“0”可返回主菜單。具體程序見源程序清單。該步驟界面顯示如下:第四章 系統(tǒng)調試41調試及修改(1)、在運行程序時,要注意對應數(shù)據(jù)所設置的類型,是字符型,還是整形。在參閱同學的程序之后借鑒了void echo(char* szStr,int t=50)函數(shù),動態(tài)輸出結果; (2)、進行程序調試時,事先函數(shù)中沒有用到清屏,導致界面繁瑣不清晰。后
18、來在頭文件中加了#include,又在程序中適當?shù)靥砑恿藄ystem(cls)語句,這才使得界面顏色可以改變更加友好清晰??偨Y經過一個學期對C+面向對象程序設計的學習,我學習到了基本的理論知識,了解到了C+面向對象程序設計的基本知識,這些知識都為我的課程實踐和進一步學習打下了堅實的基礎。通過兩星期的C+程序設計實習,我從中受益匪淺,并且對C+面向對象程序設計這門課程有了更深一步的認識。在實習中,我們可以把這學期所學的理論知識和實踐聯(lián)系起來,在所要的課程設計中逐漸成才。雖然我們對這些C+語言知識運用還不是很熟練,但是我相信我們也能在滴水穿石中成才起來。發(fā)現(xiàn)問題,提出問題,解決問題,使我們從不足之
19、處出發(fā),尋找新的學習方向。在老師和同學的幫助下,通過自己查閱資料,終于完成了這次的課程設計。從剛開始的選擇程序,理解程序到后來的調試過程以及改進程序這個過程中,我遇到了各種各樣的困難和挫折,但最后通過查詢資料和向他人的請教,克服重重困難。由于時間的緊缺和對課本應用的不太熟悉等原因,程序不能做到想象中那樣美好,只能設計出一些簡單的部分。通過課程設計的訓練,我進一步學習和掌握了對程序的設計和編寫,從中體會到了面向對象程序設計的方便和巧妙。懂得了在編寫程序之前,要有明確的目標和整體的設計思想。另外有些具體細節(jié)也是相當?shù)闹匾?,這些寶貴的編程思想和從中摸索到的經驗,這些對我們以后的編程都會有很大的幫組。
20、經過這兩周實習,我獲得了許多在課堂上聽不到的知識,在這里我要謝謝老師給我們安排的課程設計實習,感謝老師對我們熱心的指導和幫助。這次課程設計讓我從分認識到了自己的不足,認識到了動手能力的重要性。我會在以后的學習中更加努力鍛煉自己,提高自己,讓自己寫出更完善的程序,為以的編程打好基礎!附錄 完整程序代碼#include#include#include#include#include#include using namespace std;class Courseprivate: int courseNumber; string courseName; string courseKind; int
21、coursePeriod; int schoolPeriod; int experimentPeriod; float credithour; string courseterm;public: void CourseInfoInput(); /信息輸入 void CourseInfoOutPut(); /信息輸出 void Search(); /查找信息 void SearchByCredithour(float); /按照學分查找 void SearchByCourseKind(string); /按照課程;類型查找 void SearchByCourseName(string);void
22、 echo(char* szStr,int t=50) for(int i=0;istrlen(szStr);i+)coutszStri; Sleep(t); /動態(tài)輸出結果const char* coursefile=C:course.txt; /將課程信息定位到C盤下的course.txt中!void Course:CourseInfoInput() /課程信息的錄入ofstream outcoursefile; /創(chuàng)建一個文件輸出流對象outcoursefile.open(coursefile); /打開文件if(!outcoursefile) /判斷文件是否存在cout 文件打開失敗!
23、 endl; return ;while(1) /無限循環(huán),給出指定條件退出 cout*課程信息*endl;cout* 按任意鍵開始信息錄入 *endl;cout* 輸入q退出 *endl; cout*endl;if(getch()=q)break;coutcourseNumber;coutcourseName;coutcourseKind;coutcoursePeriod;coutschoolPeriod;coutexperimentPeriod;coutcredithour; coutcourseterm;outcoursefilettttcourseNumber courseName c
24、ourseKind coursePeriod schoolPeriod experimentPeriod credithour coursetermendl;outcoursefile.close(); /關閉輸出流文件 void Course:CourseInfoOutPut() /課程信息的瀏覽 ifstream incoursefile; /創(chuàng)建輸入流文件對象incoursefile.open(coursefile); /打開if(!incoursefile) /判斷文件存在cout 文件讀取失敗; return ;cout 課程編號|課程名稱|課程性質|總學時|授課學時|實驗上機學時|
25、學分|開課學期n;string arrcourse100100; /定義一個string類型的二維數(shù)組,用來保存從文本內讀取的信息int line=0;memset(arrcourse,0,sizeof(arrcourse); /將數(shù)組清空while(!incoursefile.eof() /文件不為空的條件設置for(int j=0;jarrcourselinej;line+; for(int i=0;iline;i+)for(int j=0;j8;j+)cout arrcourseij t;cout endl;incoursefile.close();void Course:SearchB
26、yCredithour(float tempch)ifstream incoursefile; /創(chuàng)建輸入流文件對象incoursefile.open(coursefile); /打開if(!incoursefile) /判斷文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3arrcourseline4arrcourseline5arrcourseline6arrcourseline7; /文件流讀取數(shù)據(jù)line+;cout 課程編號|課程名稱|課程性質|總學時|授課學時|實驗上機學時|學分|開課學期n;for(i
27、nt i=0;iline;i+)if(atof(arrcoursei6.c_str()=tempch) /比較cout arrcoursei0 t arrcoursei1 t arrcoursei2 t arrcoursei3 t arrcoursei4 t arrcoursei5 tt arrcoursei6 t arrcoursei7n* endlcout nn;incoursefile.close();void Course:SearchByCourseKind(string strtemp)/課程類型查詢 ifstream incoursefile; /創(chuàng)建輸入流文件對象incours
28、efile.open(coursefile); /打開if(!incoursefile) /判斷文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3arrcourseline4arrcourseline5arrcourseline6arrcourseline7;line+;cout 課程編號|課程名稱|課程性質|總學時|授課學時|實驗上機學時|學分|開課學期n;for(int i=0;iline;i+)if(arrcoursei2=strtemp)cout arrcoursei0 t arrcoursei1 t ar
29、rcoursei2 t arrcoursei3 t arrcoursei4 t arrcoursei5 tt arrcoursei6 t arrcoursei7n* endl;cout nn;void Course:SearchByCourseName(string strtemp1) ifstream incoursefile; /創(chuàng)建輸入流文件對象incoursefile.open(coursefile); /打開if(!incoursefile) /判斷文件存在cout arrcourseline0arrcourseline1arrcourseline2arrcourseline3arr
30、courseline4arrcourseline5arrcourseline6arrcourseline7;line+;cout 課程編號|課程名稱|課程性質|總學時|授課學時|實驗上機學時|學分|開課學期n;for(int i=0;iline;i+)if(arrcoursei1=strtemp1)cout arrcoursei0 t arrcoursei1 t arrcoursei2 t arrcoursei3 t arrcoursei4 t arrcoursei5 tt arrcoursei6 t arrcoursei7n* endl;cout nn;void Course:Search(
31、)while(1) cout 選擇查詢方式: endl;cout (1).按課程類型查詢 endl;cout (2).按課程名稱查詢endl; cout (3).按學分查詢 endl;cout (0).返回i;switch(i)case 1: cout strtmp; SearchByCourseKind(strtmp); break;case 2: coutstrtmp1; SearchByCourseName(strtmp1); break;case 3: cout ftemp; SearchByCredithour(ftemp); break;if(i=0) break; void St
32、udents() int n,j,a,w=1,flag=0,i=3; char s8; char password=; do cout(nnEnter password:); j=0;while(1) a=getch(); if(a=13) break;sj=a; j+; cout(*);sj=0; if(!strcmp(s,password) /進行密碼匹配驗證 flag=1; break; else cout(nnError! You only have %d times! Enter again:n,i-1)0); if(!flag) cout(謝謝您的使用,你已3次輸入密碼錯誤!)n; switch(n) case 1:Excourse.CourseInfoOutPut();break; case 2:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSM 0057-2024“領跑者”評價技術要求 石油、石化及相關工業(yè)用的鋼制球閥
- T-ZJZYC 010-2024 中藥材產業(yè)合規(guī)管理規(guī)范
- 二零二五年度個人向新能源車輛制造商借款購買電動車的合同
- 歷年合同法司考備考輔導班師資聘用合同2025年度
- 2025年度集體土地租賃與特色小鎮(zhèn)建設合同
- 二零二五年度互聯(lián)網(wǎng)廣告聯(lián)盟合作協(xié)議合同
- 2025年度砂石場勞務人員薪酬及福利待遇合同
- 二零二五年度網(wǎng)紅獨家經紀合作協(xié)議模板
- 二零二五年度電子商務平臺支付清算合同范本
- 新能源汽車項目買賣合同
- 2025新譯林版英語七年級下單詞默寫表
- 部編版小學語文三年級下冊第六單元教材解讀及教學建議
- DB11T 1315-2015 綠色建筑工程驗收規(guī)范
- 山東省2024年夏季普通高中學業(yè)水平合格考試地理試題02(解析版)
- 《ISO 41001-2018 設施管理- 管理體系 要求及使用指南》專業(yè)解讀與應用指導材料之16:“8運行”(雷澤佳編制-2024)
- 2024智慧城市數(shù)據(jù)分類標準規(guī)范
- Linux系統(tǒng)管理與服務器配置-基于CentOS 7(第2版) 課件 第1章CentOS Linux 7系統(tǒng)的安裝與介紹
- 新目標英語中考一輪教材梳理復習教案
- 2022新教材蘇教版科學5五年級下冊全冊教學設計
- 光伏電氣設備試驗方案
- 2024-2025學年全國中學生天文知識競賽考試題庫(含答案)
評論
0/150
提交評論