課程設計報告
課程名稱物件導向程式設計
課題名稱高校學籍管理系統
一、設計內容與設計要求
1.課程設計目的:
物件導向程式設計課程設計是集中實踐性環節之一,是學習完《物件導向程式設計》課程後進行的一次全面的綜合練習。要求學生達到熟練掌握c++語言的基本知識和技能;基本掌握物件導向程式設計的思想和方法;能夠利用所學的基本知識和技能,解決簡單的物件導向程式設計問題,從而提高動手程式設計解決實際問題的能力。
2.課題題目
高校學籍管理系統
3.設計要求:
⑴設計課題題目:每位同學根據自己學號除以4所得的餘數加一選擇相應題號的課題。換題者不記成績。
⑵根據自己對應的課題完成以下主要工作:①完成系統需求分析:主要包括系統設計目的與意義;系統功能需求(系統框圖);輸入輸出的要求等內容。
②完成系統總體設計:主要包括系統功能分析;系統功能模組劃分與設計(系統功能模組圖)。③完成系統詳細設計:
主要包括類層次圖;介面設計與各功能模組實現等累人。④完成系統除錯:主要包括除錯出現的主要問題,編譯語法錯誤及修改,重點是執行邏輯問題修改和調整。
⑤使用說明書及程式設計體會:說明系統的使用和操作步驟,詳細列出每一步的操作步驟。⑥附錄:
關鍵源程式(帶注釋),可以只選取程式主要部分。
⑶按規定格式完成課程設計報告,將其列印稿(a4紙)上交給老師存檔。
⑷不得抄襲他人程式、課程設計報告,每個人應體現自己的個性設計。
二、進度安排
第17周星期一 08時:00分——12時:00分
星期三 14時:00分——18時:00分
星期四 14時:00分——18時:00分
課題2:高校學籍管理系統
(一)、課程設計題目:
高校學籍管理系統
(二)、目的與要求:
1、目的:
(1)要求學生達到熟練掌握c++語言的基本知識和技能;
(2)基本掌握物件導向程式設計的基本思路和方法;
(3)能夠利用所學的基本知識和技能,解決簡單的物件導向程式設計問題。
2、基本要求:
(1)要求利用物件導向的方法以及c++的程式設計思想來完成系統的設計;
(2)要求在設計的過程中,建立清晰的類層次;
(3)在系統的設計中,至少要用到物件導向的一種機制。
3、創新要求:
在基本要求達到後,可進行創新設計,如根據查詢結果進行修改的功能。
4、寫出設計說明書
(三)、設計方法和基本原理:
1、問題描述(功能要求):
(1)能夠從螢幕上讀取乙個學生的資訊並將資訊存入到資料檔案中。
(2)能夠將指定的資訊從檔案中刪除。
(3)能夠按編號、姓名對學生的資訊進行檢索並將檢索結果顯示在螢幕上。
(4)可以統計全部學生的總成績,及其在班上的排名。
(5)能夠統計各科的平均成績及及格率。
(6)要求有錯誤提示功能,例如性別只能輸入男女,輸入錯誤提示重新輸入。
(7)如果檢索不到相應的資訊應提示使用者。
(8)擴充套件要求:能先行設定本學期的科目
每個學生資訊應該包括:姓名、學號、成績
成績資訊應該包括:科目數量、各科目名稱、各科目成績
2、問題的解決方案:
根據系統功能要求,可以將問題解決分為以下步驟:
(1)寫出需求分析(做什麼);
(2)分析系統中的各個實體之間的關係及其屬性和行為;
(3)根據問題描述,設計系統的類層次;
(4)完成類層次中各個類的描述(包括屬性和方法);
(5)完成類中各個成員函式的定義;
(6)使用者介面的設計;
(7)分析系統功能模組(系統流程圖);
(8)**編寫,功能除錯;
(9)完成系統總結報告以及系統使用說明書。
1. 程式的功能
這個程式的主要功能是能夠從螢幕上讀取乙個學生的資訊並將其資訊存入到資料檔案中;能夠將指定的資訊從檔案中刪除;能夠按編號、姓名對學生的資訊進行檢索並將檢索結果顯示在螢幕上;可以統計全部學生的總成績,及其在班上的排名;能夠統計各科的平均成績及及格率;要求有錯誤提示功能,例如性別只能輸入男女,輸入錯誤提示重新輸入,如果檢索不到相應的資訊應提示使用者該資訊不存在。
2、系統的設計目標
本系統要求工作人員輸入並儲存學生學籍的有關資訊,如:學生的姓名、學號、性別、年齡、班級等資訊。能夠在查詢學生資訊的時候根據提示項輸入所要查詢的型別,再根據提示輸入一項學生資訊進行查詢及修改,實現學生學籍的動態管理。
1. 系統功能分析
這個程式是用來對學生的學籍資料進行管理。主要功能包括:
a.能夠從螢幕上讀取乙個學生的資訊並將其資訊存入到資料檔案中;
b.能夠將指定的資訊從檔案中刪除;
c.能夠按編號、姓名對學生的資訊進行檢索並將檢索結果顯示在螢幕上;
d.可以統計全部學生的總成績,及其在班上的排名;
e.能夠統計各科的平均成績及及格率;
f.要求有錯誤提示功能,例如性別只能輸入男女,輸入錯誤提示重新輸入,如果檢索不到相應的資訊應提示使用者該資訊不存在。
2.系統功能模組劃分與設計
student類進行學生基本資訊的錄入及儲存,學生基本資訊包括姓名、學號、年齡、性別、班級、各科成績等。stu類裡定義了student類的子物件,不但繼承了student類的資料及函式,還能對資訊進行進一步的加工。如:
學生資訊的錄入、顯示、修改、查詢、刪除以及對學生成績進行統計,算出全部學生的總成績、班上排名、各科平均分和及格率等,main函式貫穿全域性,利用mune函式對程式的各部分進行掌控。
該程式應用了2個類,student類和stu類,其uml圖如下:
student類的uml圖
stu類的uml圖
4.1系統除錯過程中遇到的問題及解決方法
4.1.1資訊顯示時出錯
程式執行後出現以下介面
設定好科目資訊,錄入學生資訊後。選擇3,本應將之前錄入的資訊顯示出來的。
但沒有將所有的學生資訊顯示出來,而是只顯示了最後乙個同學的資訊。
經檢查發現,show函式裡沒有使用迴圈,導致每輸入乙個學生資訊時就會將前乙個的學生資訊覆蓋,所以只能輸入最後乙個學生的資訊。
資訊顯示的原有程式為:
void show
在stu類中再定義乙個show函式,使用迴圈,然後這個show函式裡呼叫student類中的show函式,便可以將所有的學生資訊顯示出來。
修改後的程式為:
void stu::show
}若是退出程式再執行,上來選擇3就應該將所有的資訊顯示出來,可是顯示的是亂碼。經檢查後發現,在錄入資訊後,儲存資訊時,沒有成功把資訊儲存到檔案
中。導致程式再次執行時開啟檔案後找不到相應的學生資訊,所以輸出了
亂碼。原程式中使用了c++中二進位制檔案的儲存方式,
而卻沒有對該儲存方式進行相應的函式宣告,造成未能成功儲存資訊。後經老師幫忙修改才得以將資訊儲存到檔案中。
修改後的程式,上來選擇3就可以將所有已錄入的學生資訊顯示出來。
4.1.2刪除、修改、檢索資訊時出錯
因為在資訊錄入時,儲存資訊的不對,致使要對資訊進行刪除、修改或檢索等操作時,都未能在開啟的檔案中找到相應的資訊,所以都不能對資訊進行這些操作。後經老師修改,都能正常顯示。
在執行修改模組時還出現了不該有的錯誤。修改學號的時候選擇「y」也不能修改就直接跳到下一步。
經檢查程式,發現將變數ch1寫成了ch,導致不能識別輸入的是否為「y」。
原程式為:
cout<<"是否要修改學號?(y/n)" cin>>ch1; if(ch=='y'||ch=='y') cout<<"請輸入新學號:以回車鍵結束" 修改後程式: cout<<"是否要修改學號?(y/n)" cin>>ch1; if(ch1=='y'||ch1=='y') cout<<"請輸入新學號:以回車鍵結束" 改正後的程式便可以對學號進行修改。 4.1.3統計資訊時出錯 在對已有的學生資訊進行統計時出現了幾個錯誤。 1. 計算全部學生總成績時,未對all進行初始化,導致輸出的是亂碼。 原程式為: void stu::tongji 物件導向程式設計 c 專案名稱 圖書管理系統設計 學校 學院 班級 姓名學號 同組成員者 完成時間 2010年12月28日 成績 指導教師簽名 時間 一 問題分析與功能定義 二十一世紀是資訊的社會,資訊作為社會最主要的資源,將成為戰略資源引起人們廣泛的關注。如何獲取資訊?圖書是我們最好的獲取資訊的方... 第1頁共2頁 9 編寫乙個控制台程式,要求 編寫乙個函式get scores 接受使用者輸入的語文 數學 物理 化學和英語5科成績,在main 中利用get scores 接受輸入,然後計算總成績與平均成績,main 與get scores 之間不得使用全域性變數通訊。10 編寫乙個控制台程式,使用... 面向過程程式設計都會把程式 放在main 裡面。對於物件導向程式設計,我們就是離開過程化的世界,將事物抽象成物件,對物件的屬性抽象成變數,動作 行為等抽象成方法。就像自然界一樣,子代繼承父輩的屬性和方法 同時介面可以更靈活的重寫多個類的方法,體現了多型性。老闆娘兼專案經理要求阿珠和阿花兩個程式設計師...物件導向程式設計圖書管理系統
物件導向程式設計
物件導向程式設計與面向過程程式設計