基于c语言的学生学籍管理系统
系統(tǒng)需求分析
1.1 設計目的
(1)體驗面向?qū)ο蟮木幊趟枷?#xff0c;了解封裝,繼承,多態(tài)的基本思想。
(2)熟練運用文件操作,函數(shù)定義與使用,頭文件引入,數(shù)組,類,循環(huán)結(jié)構(gòu),選擇結(jié)構(gòu),判斷結(jié)構(gòu)等基本工具進行架構(gòu)。
(3)體會開發(fā)流程,明白各個開發(fā)環(huán)節(jié)的意義以及作用。
1.2 需求分析
(1)學生學籍管理系統(tǒng)實現(xiàn)用戶基本對數(shù)據(jù)操作的功能有:學生信息的錄入、瀏覽、分類、排序、查詢、統(tǒng)計、刪除、修改、清空功能。還要求可以讀寫學生信息文件,以及實現(xiàn)退出功能。為與用戶交互,功能需要以菜單方式工作,供用戶選擇
1.3 用戶需求
(1)學生學籍信息讀寫文件功能;
(2)學生學籍信息錄入功能;
(3)學生學籍信息瀏覽、分類、排序功能;
(4)學生學籍信息查詢、統(tǒng)計功能;
(5)學生學籍信息刪除功能;
(6)學生學籍信息修改功能;
(7)學生學籍信息清空功能;
2 系統(tǒng)總體設計
針對一般學生學籍管理系統(tǒng)的需求,通過對學生信息內(nèi)容的分析,設計如圖 2.1 所示的數(shù)據(jù)結(jié)構(gòu):
2.1 數(shù)據(jù)結(jié)構(gòu)
圖 2.1 數(shù)據(jù)結(jié)構(gòu)
2.2 系統(tǒng)功能模塊設計
根據(jù)實際需求和整體設計,可以將系統(tǒng)功能分為以下模塊:
圖 2.2 系統(tǒng)功能結(jié)構(gòu)圖
通過在需求階段對系統(tǒng)的總體功能的要求,我們得到了這個學生學籍管理系統(tǒng)的總體功能結(jié)構(gòu),它應包括以下幾大基本功能:
(1)菜單功能實現(xiàn):系統(tǒng)顯示菜單界面與用戶形成交互。
(2)退出功能:用戶輸入指定數(shù)字實現(xiàn)退出功能。
(3)添加學生:選擇功能后,系統(tǒng)給出提示,進行操作添加。
(4)顯示學生:將文件中所有的學生信息顯示出來。
(5)刪除學生:按照學號刪除學生信息。
(6)查找學生:根據(jù)學號查找學生信息。
(7)修改學生信息:按照學號找到學生后對學生信息進行修改。
(8)按學號排序:根據(jù)學號對學生進行排序。
(9)按年級分類查看:按照年級顯示學生信息。
(10)清空數(shù)據(jù):清空文件里所有學生數(shù)據(jù)。
3 系統(tǒng)詳細設計
3.1 設計思想
(1)將管理操作類封裝:對信息操作的函數(shù)、記錄學生人數(shù)的變量、存儲學生信息的指針數(shù)組進行封裝。類內(nèi)成員包括:記錄人數(shù)的變量、學生的指針數(shù)組,構(gòu)造函數(shù)、顯示菜單、添加學生、退出程序、保存文件、文件是否為空的標志、統(tǒng)計人數(shù)、初始化、顯示學生、刪除學生、判斷學生是否存在、查找學生、修改學生、按學號排序、清空數(shù)據(jù)、按年級分類顯示、析構(gòu)函數(shù) 。
(2)將學生信息類封裝:對學生信息,包括類內(nèi)自帶的顯示信息,年級的成員函數(shù)封裝。類內(nèi)包括成員:顯示個人信息的成員函數(shù)、獲取年級名稱的成員函數(shù)、學號、姓名、性別、年級編號、班級、年齡等屬性。
3.2 程序內(nèi)部結(jié)構(gòu)
圖 3.2 程序內(nèi)部結(jié)構(gòu)圖
3.3 設計流程
(1)創(chuàng)建學生類
先創(chuàng)建學生類作為父類,然后定義各種成員屬性,類內(nèi)包含顯示年級函數(shù)和顯示自身信息函數(shù)。子類繼承學生抽象類,并重寫父類中的重虛函數(shù) 分別繼承出,大一,大二,大三,大四,四個子類。
(2)創(chuàng)建管理類
管理類負責的內(nèi)容如下:提供與用戶的溝通菜單界面、實現(xiàn)對職工增刪改查的操作、數(shù)組數(shù)據(jù)與文件的讀寫交互。
(3)菜單功能實現(xiàn)
在 StudentManager.h 中定義 ShowMenu()函數(shù)在 StudentManager.cpp 中實現(xiàn)顯示菜單功能,便于與用戶交互,利用序號將所有功能顯示出來,便于用戶選擇以及,進行后期的使用。在 main 函數(shù)中為管理操作的函數(shù)提供接口,創(chuàng)建實例對象,調(diào)用對象內(nèi)成員函數(shù)。
(4)退出功能
在 StudentManager.h 中定義 Exit_System();函數(shù)在 StudentManager.cpp 中實現(xiàn)函數(shù)功能,利用 exit(0);實現(xiàn)程序的退出操作。
(5)添加學生
在 StudentManager.h 中添加屬性以及成員函數(shù)。根據(jù)學生的人數(shù)加上添加后的人數(shù),開辟一塊新的空間記錄數(shù)據(jù)。系統(tǒng)整體利用指針數(shù)組實現(xiàn)數(shù)據(jù)的臨時保存,最終與文件的操作配合使用,使數(shù)據(jù)轉(zhuǎn)存到文件中。在 StudentManager.cpp 中構(gòu)造函數(shù)中初始化。在 StudentManager.cpp 中實現(xiàn)成員函數(shù)。
(6)保存文件
讀取當前的指針數(shù)組,然后將數(shù)組元素存入文件中。
(7)初始化學生
在初始化學生之前,要判斷學生文件狀態(tài),分為三種情況: 第一次使用文件未創(chuàng)建。 文件存在,但是為空文件。 文件和數(shù)據(jù)正常存在.
首先在 StudentManager.h 中添加標志文件是否為空的標志,若為空文件,或者文件不存在,則該 bool 類型的值返回 true,修改 StudentManager.cpp 中的構(gòu)造函數(shù)代碼,如果文件不存在,則初始化文件,文件不存在,或者為空的情況下,判斷文件是否為空的標志都為真,成功添加學生信息后更改文件不為空,初始化文件,初始化 Student* 類型的指針數(shù)組,將 Student 類型的地址存到 Student*中,在 StudentManager.cpp 中實現(xiàn)。
(8)顯示學生
基本思想就是遍歷輸出,按照需求可以按照不同的條件顯示。
(9)刪除學生
刪除學生之前判斷其是否存在,如果為空或者不存在,返回-1,如果存在,返回其下標,在 StudentManager.cpp 中實現(xiàn),根據(jù)成員屬性匹配的到數(shù)組的下標,便于后續(xù)索引類型的操作進行刪除,實現(xiàn)按照學號刪除。
(10)查找學生
按照學生編號,按照學生姓名,通過遍歷加判斷的方式查找。
(11)修改學生信息
按照編號對職工信息保存修改,利用 IsExist 函數(shù)獲取學生數(shù)組元素下標,然后對應進行修改,記錄保存。
(12)按學號排序
排序采用冒泡排序,前后兩兩比較,根據(jù)排序要求進行交換元素位置,達到排序目的。
(13)按年級分類查看
遍歷數(shù)組,匹配相應年級相應代碼,然后輸出每個年級下面的學生分類。
(14)清空數(shù)據(jù)
首先確認是否清空,然后打開文件,打開模式 ios::trunc 就是如果存在刪除文件并重新創(chuàng)建,關(guān)閉文件,判斷,如果指針數(shù)組不為空,那么將里面的指針釋放干凈,成員個數(shù)更新為零,將指針數(shù)組置為空,更新文件為空的標志。
3.4 開發(fā)流程
圖 3.4 開發(fā)流程圖
4 編碼實現(xiàn)
完整代碼:https://download.csdn.net/download/weixin_55771290/87394070
總結(jié)
以上是生活随笔為你收集整理的基于c语言的学生学籍管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sap,一句话入门
- 下一篇: 如何让aboboo 便携版在citrix