C 學生信息管理系統設計報告.doc_第1頁
C 學生信息管理系統設計報告.doc_第2頁
C 學生信息管理系統設計報告.doc_第3頁
C 學生信息管理系統設計報告.doc_第4頁
C 學生信息管理系統設計報告.doc_第5頁
免費預覽已結束,剩余14頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄目錄 1 引言 1 2 設計依據及框圖 2 2 1 設計思想 2 2 2 設計框圖 用戶界面 2 3 各模塊功能及主要模塊的流程圖 11 3 1 各模塊功能 11 3 2 主要流程圖 14 4 軟件調試分析 15 4 1 錯誤分析 15 4 2 系統特點及缺點 15 5 結語 16 參考文獻 17 摘要摘要 這一款學生信息管理小系統采用面向對象的設計方法 主要是面對管理端 管 理者可以通過密碼登錄進入系統對學生的各類數據統進行管理和維護 在主界面中 主要設置了 8 個基本功能 增加學生 顯示全部學生 計算平均成績 刪除一個學 生 按年級輸出學生信息 按性別輸出學生信息 按姓名檢索學生 按總分進行排 序 這些功能基本上能滿足學生管理的基本要求 此程序可以初步體現課程設計的 目標 采用 Visual C 作為開發工具 界面簡單友好 操作方便易行 便于維護 是 一個功能比較完善的管理系統 關鍵字關鍵字 學生系統 繼承 重載 派生 1 1 引言引言 隨著我國經濟與計算機技術的日益發展 信息化技術逐漸取代傳統人工作 業 而學生也不例外 由于學生信息管理系統應用范圍之廣 版本各式各樣 功能不盡管理系統相同 如何做出一個比較出眾的學生系統 是對程序員的一 種考驗 這其中選擇一種合適的程序設計語言 一個開發平臺和編程思想是至 關重要的 而建成一個數字化的學生信息管理系統 進行統一的管理 管理者 就會對學生情況得到及時準確的了解 并根據具體情況提供及時的查詢與修改 這樣 就可以使學生的管理變得更為高效 本系統是從學生信息管理系統最基 本的功能進行設計和開發 設計希望用 VC 編寫一個界面美觀流暢學生信息管理系統 管理者能夠使用 它對學生數據進行基本的查詢 增加 刪除 修改等 而且程序運行結果正確 操 作方便 界面美觀 邏輯層次清楚 程序結構合理 程序代碼精簡易懂 管理者通過密碼登錄進入學生信息管理系統 根據需要可以實現以下功能 增加 學生 顯示全部學生 計算平均成績 刪除一個學生 按年級輸出學生信息 按性 別輸出學生信息 按姓名檢索學生 按總分進行排序 該學生信息管理系統是采用面向對象的程序設計思想 選擇 C 語言進行編寫 的 整個程序由一個學生基類和兩個年級派生類 若干個函數及主函數構成的 使用面向對象的程序設計方法是設計一個復雜的軟件系統時 首要的問題是確 定該系統是有哪些對象組成的 并且設計這些對象 本學期 專業開設了 C 面向對象課程設計 為我們提供了一個既動手又動腦 獨立實踐的機會 這就要求根據所學的 C 程序設計原理與程序設計的知識 能夠 針對一個小型的學生信息管理系統 進行系統的任務分析 系統設計 運行調試等 完成題目要求的功能 學會運用 Visual C 6 0 設計學生信息管理系統 從而達到 了解設計一個小型應用系統的目的 提高適應實際 實踐編程的能力 2 2 設計依據及框圖 設計依據及框圖 2 1 設計思想設計思想 學生信息管理系統是一個管理學生數據的服務平臺 它應該包括登錄界面 通 過輸入密碼 核對正確進而進入主菜單界面 然后通過需要選擇不同的操作 最終 能夠達到查詢 增添 刪除等功能 2 2 設計框圖 用戶界面設計框圖 用戶界面 2 2 1 通過對需求的分析和設計 我初步構造了程序的結構框圖 如圖 2 1 開始 登錄界面 年 級 輸 出 錄 入 信 息 平 均 成 績 顯 示 學 生 刪 除 學 生 性 別 輸 出 姓 名 檢 索 總 分 排 序 結 束 程 序 圖 2 1 設計框圖 2 2 2 根據各模塊功能的逐步展開與分析 我完成了程序的全部代碼設計 詳 見附錄 在一次次的調試完善后 成功運行了這個學生管理系統 1 這個系統是作為管理端存在的 為了保證信息的隱蔽性及安全性 防止人為 破壞 所以設計一個登錄界面 需要輸入的密碼核實正確后方能進入主菜單操作 以此來確保只有預先獲得密碼有管理權限的人才能使用該系統 在此還設定了登錄 次數不得多于三次 否則強制退出程序 這里將管理員輸入的密碼通過 if else 語 句判斷是否等于 code 預先定義在后臺存儲的 若相等則跳轉至主界面 否則提 示重新輸入 代碼如下 3 lab1 system cls cout endl endl endl cout co if co code goto lab2 else if s 4 cout 已登錄三次 請退出 endl return 0 else goto lab1 2 在輸入事先設定的密碼 經檢查正確 就到了主菜單界面 如下圖 功能選 擇通過管理員輸入數字 使用 switch 語句來判斷接收 從而能夠進入各個子菜單 圖 2 1 主菜單圖 lab2 system cls cout t t t 歡迎使用學生信息管理系統 endl endl cout 1 錄入信息 endl cout 2 顯示全部學生 endl cout 3 計算平均成績 endl cout 4 刪除一個學生 endl cout 5 按年級輸出學生信息 endl cout 6 按性別輸出學生信息 endl cout 7 按姓名檢索學生 endl cout 8 按總分排序 endl cout 9 結束程序運行 endl endl cout getin switch getin 4 注 lab2 是一個標簽 能通過之后的 goto lab2 從各級子菜單快速地跳轉回來 3 case1 是錄入信息菜單 p i 是存儲學生信息的數組對象 同樣通過 switch 語句判斷選擇 可以不限次地分別錄入一 二年級的學生信息 完成后自動保存并 返回主菜單 這里用類類型的指針變量指向已存在的最后一個記錄 追加到最后一 個記錄后面 然后通過指針指向對象的成員函數 set 從鍵盤上輸入信息 用 new 開辟一段空間以存放該類型的對象 而統計創建的對象個數的變量 i 則進行自加運 算 最后指針指回頭結點 增加學生信息 界面如下 case 1 錄入信息 lab3 system cls cout 1 錄入一年級生信息 endl cout 2 錄入二年級生信息 endl cout 3 返回上一級菜單 endl cout c1 switch c1 case 1 p i new Student1 p i set i goto lab3 case 2 p i new Student2 p i set i goto lab3 default goto lab2 break 5 圖 2 2 錄入信息 2 圖 5 case2 為顯示信息菜單 先通過 for 循環語句并利用類指針 從類數組第一 個對象開始調用 display 來顯示 直到全部學生顯示完畢 最后指針指回頭結點 停止操作并返回主菜單 case 2 顯示全部信息 system cls cout 學生信息 n 學號 姓名 性別 male female 語文 英語 數學 年 n for j 0 jdisplay cout c2 switch c2 case 1 case 2 case 3 default goto lab2 圖 2 3 信息顯示圖 6 case3 計算平均成績 輸入需查詢學生的學號 在 for 循環中用 if 語句及指 針來搜尋與之匹配的信息 如果存在則通過函數 getsum 取總成績 再計算出平均 成績并用指針 p j display 輸出 否則給出錯誤提示信息并返回主菜單返回主 菜單后 case 3 計算平均成績 lab4 system cls cout endl endl cout t t t 計算平均成績 endl endl cout xh for j 0 jgetnum xh double sum ave sum p j getsum 6 ave sum 3 cout 學號 姓名 語文 英語 數學 平均成績 endl cout getnum getname getch geten getma ave endl else cout 此學生不存在 請重新輸入 endl goto lab4 注 這里的 lab4 為了便于返回重新查詢設的標簽 與 goto lab4 結合起來用 圖 2 4 查詢成績圖 7 case4 為刪除學生 可以按照姓名或者學號刪除 當管理員輸入相應選擇后 程序對應先通過查找記錄 再對對應對象信息做刪除 同樣采用 for 循環跟 if 語句 每刪除一個學生變量 i 就進行自減運算 是對象個數及時得到改正 最后指針指向 頭結點 按照學號刪除的代碼如下 int xuehao cout xuehao for j 0 jgetnum xuehao for int del j del i del p del p del 1 i cout n 成功刪除 n cout c3 switch c3 7 case 1 case 2 case 3 default goto lab2 圖 2 5 刪除信息 1 圖 8 case5 是按年級輸出學生 管理員選擇所需年級后 用指針變量 p j 定位在 年級號 id 所匹配的第一個對象處 接著執行 display 函數顯示信息 j 后繼續查 找 用 j i 保證指針不超出范圍 i 作為變量統計學生錄入個數 case 5 按年級輸出學生信息 system cls cout t t t 按年級輸出學生信息 endl endl cout 1 按一年級生輸出學生信息 endl cout 2 按二年級生輸出學生信息 endl endl cout c5 switch c5 case 1 cout 學號 姓名 性別 語文 英語 數學 年齡 endl for j 0 jgetid 1 p j display cout c5 switch c5 case 1 case 2 case 3 default goto lab2 case 2 cout 學號 姓名 性別 語文 英語 數學 年齡 endl for j 0 jgetid 2 p j display cout c5 switch c5 case 1 case 2 case 3 default goto lab2 default cout n 輸入錯誤 n break cout c5 switch c5 case 1 case 2 case 3 default goto lab2 圖 2 6 1 年級輸出圖 9 case6 按性別輸出 也同樣指針 p j 指向對象的函數 getsex 取性別來與 female 或 male 比較 相等則調用 display 函數輸出學生信息 界面如下 圖 2 7 性別輸出圖 9 10 case7 按姓名檢索信息 管理員輸入查詢姓名后 系統利用類指針 從頭開 始 p i getname xingm 存放輸入姓名的變量 查找配對的對象 如果 if 語句 返回真值則執行 display 函數 接著 switch 接收任何數字返回主菜單 最后指針指 向頭結點 case 7 system cls cout xingm for j 0 jgetname xingm p j display cout c7 switch c7 case 1 case 2 case 3 default goto lab2 11 case8 按總分升序排序 使用 for 循環用指針變量 p ci 指向對象的成員函 數 getsum 取總分 將第一個對象依次和其他對象的比較 若前者總分大于后者 則通過兩個中間變量 htp 和 ztp 把二者的學號與總分對換 以此類推直到排序完成 接著用 hao j zong j 輸出信息 case 8 按總分排序 int ci for ci 0 cigetnum zong ci p ci getsum for n 0 n i n for m n 1 mzong m htp hao m hao m hao n hao n htp ztp zong m zong m zong n zong n ztp system cls cout endl endl cout t t t 按總分排序 endl endl 10 cout 學生學號 總分 n for j 0 j i j cout hao j zong j endl cout c8 switch c8 case 1 case 2 case 3 default goto lab2 圖 2 8 總分排序圖 12 case9 退出程序 用 system cls 清屏 break 語句跳出 至此整個程序運行即 switch 語句結束 最后 由于 main 函數定義為 int 型 要記得加上 return 0 語句 而程序中使用了輸入輸出流 iostream string 類型等 頭文件應該包括 include include include include include using namespace std 這其中每個 case 后要加上 break 語句以便終止 switch 語句的執行 另外在一 些經常需要跳轉到的地方如主菜單處設為標簽 lab 之后使用 goto 語句即可跳轉至 此處 11 3 各模塊功能及主要模塊的流程圖各模塊功能及主要模塊的流程圖 3 1 各模塊功能各模塊功能 1 整個程序中構造了一個學生基類 它應該包括學生的共有屬性 而兩個年級 學生作為派生類 可以從基類中繼承共有的成員 并在此基礎上增加了年級的特性 其中學生基類中的函數如表 1 表 3 1 基類模塊表 getid 取年級號 用于識別一二年級 set 在派生類中調用 錄入信息 display 在派生類中調用 顯示信息 getnum 取學號 getname 取姓名 getsum 取成績總分 getsex 取性別 getch 取語文成績 geten 取英語成績 getma 取數學成績 Student getborth 取出生時間 該程序采用的是類類型來處理學生的所有基本信息 通過對設計要求的分析構 造基類 Student 信息中應包含的學號 姓名 性別等就作為數據成員 而派生類一 二年級學生繼承了基類的一些屬性 如姓名 學號等 但由于所處的年級不同 需 要增加 id 號來識別年級 而且它應該根據選擇自動生成 不需要人為的錄入 所以 getid set display 三個函數分別加上關鍵字 virtual 使其成為純虛函數 留待派生類定義調用同名函數卻能實現不同的功能 這就體現了 C 的多態性 既 用不著重載函數 也能通過指針去調用派生類對象中的成員函數 另外增加構造函 數 Student 并對其數據成員進行賦初值 但 id 不用賦值 留待派生類分別進行 定義 而其余的 8 個函數則是用來取對象的數據 代碼如下 class Student public int id 一二年級識別 int num string name 12 string sex double ch en ma 成績 int borth int age Student virtual int getid 0 一二年級識別 virtual void set 0 純虛函數 在派生類中調用 virtual void display 0 int getnum 取學號 string getname 取姓名 double getsum 取總成績 string getsex 取性別 double getch 取各科成績 double geten double getma int getborth Student Student 基類構造 num 0 name No name ch 0 en 0 ma 0 borth 1900 int Student getnum 取學號 return num string Student getname return name string Student getsex return sex double Student getsum return ch en ma double Student getch return ch double Student geten return en double Student getma return ma int Student getborth return borth 2 而在派生類中我分別定義了五個函數 主要是要體現錄入 顯示功能和重載 模塊如表 3 2 表 3 2 學生 1 類模塊表 getid 取 id 1 為一年級學生 set 錄入一年級學生信息 display 顯示一年級學生信息 ostream 一年級生識別 Student1 Student1 構造 int getid 一年級生識別 void set void display friend ostream void Student1 set 錄入信息函數 cout 輸入一年級生信息 n num name sex ch en ma borth Student1 Student1 Student1 構造 id 1 int Student1 getid return id void Student1 display 顯示信息 cout n 一年級生 n id num name sex ch en ma 2009 borth endl 一年級生類中重載輸入輸出符 ostream 14 return in 3 2 主要流程圖主要流程圖 1 程序運行 管理員進入登錄界面 需輸入密碼 后臺通過其密碼與數據庫中 的比較 通過驗證后方可進入主菜單界面 否則重新輸入 共有三次機會 之后結 束程序 流程圖如下所示 是 開始 密碼 進入主菜單 s 3 結束 否 是 否 圖 3 1 登錄流程圖 2 當從主菜單中選擇要進行的操作后 分別進入子界面 比如錄入信息界面 操作流程圖如下所示 15 否 是 開始 選擇 1 錄入一年級生 選擇 2 結束 否 是 錄入一年級生返回 圖 3 2 錄入流程圖 4 軟件調試分析軟件調試分析 4 1 錯誤分析錯誤分析 整個的代碼編寫和程序運行的過程中 我遇到了很多困難 一開始會心煩氣躁 不想往下寫 但在調試解決了一個個錯誤之后 我學習到很多東西 主要出現的錯 誤如下 1 起初對派生類的概念沒有搞清楚 基類中的函數無法調用 在將其改為虛函 數之后 問題解決了 2 輸入密碼驗證時 設置最多能登錄三次 否則結束運行 但是卻出現無法跳 出循環的情況 經過檢查后發現 for 語句一直執行返回操作 應在密碼驗證超過 三次之后加上輸出提示 已登錄三次 請退出 及結束語句 return 0 3 由于主函數過長 導致 沒有劃分清楚 結果提示文件沒有結束 在添 加之后解決了這一問題 4 最初是在 Word 文檔中編寫代碼 使用了中文的標點符號 到了 VC 無法運 行 認識到 原來任何一個細小的問題都會牽連整個程序 所以任何方面都要仔仔 細細 不能粗心大意 16 4 2 系統特點及缺點系統特點及缺點 系統最終基本實現一個小型學生管理系統的主要要求 它代替了人工作業的復 雜繁瑣和易錯 體現數字化的方便高效 每一步操作系統都會給出提示 能夠記錄 學生的重要信息 并及時實現增添 刪除 修改 查詢等功能 而平均成績等能自 動計算準確 當輸入錯誤時 系統提示并允許重新更改 凸顯了人性化 同時 系統還是暴露了許多缺點 首先 界面不美觀 缺乏特點 另外異常處 理效果差 強制退出會導致資料丟失 而網絡功能的欠缺 使其只能在單片機上運 行 無法實現資源共享 數據安全仍然沒有得到完善的解決 單一的密碼識別無法 做到萬無一失 用戶權限應該有更好的控制措施 這些都需要在今后的運行調試中 去慢慢改進 結合更多的新技術 5 5 結語結語 經過一個月的努力 我的課程設計任務終于完成了 在這次設計中我不但溫 故了以前學過的知識 更學到了很多新的知識 對對象這個概念有了比較全面的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論