




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
學生成績管理系統設計第一頁,共二十八頁,2022年,8月28日18.1學生成績管理系統功能本系統實現的功能:(1)錄入學生的成績,(2)輸出學生的成績(3)添加學生的成績信息(4)刪除指定學生的成績信息(5)按照要求對學生成績信息進行排序(6)根據學號查詢指定學生的成績(7)將學生的成績信息保存到文件第二頁,共二十八頁,2022年,8月28日第三頁,共二十八頁,2022年,8月28日第四頁,共二十八頁,2022年,8月28日18.2功能模塊的描述
18.2.1數據結構結構體說的定義如下:structscorenode{intnumber; /*學生學號*/charname[10]; /*學生姓名*/floatchinese; /*語文成績*/floatmathmatic; /*數學成績*/floatenglish; /*英語成績*/structscorenode*next;};typedefstructscorenodescore; 第五頁,共二十八頁,2022年,8月28日18.2.2main()主函數程序采用模塊化設計,主函數是程序的入口,各模塊獨立,可分塊調整,均由主函數控制。采用while死循環和switch分支語句編寫菜單選擇控制各個模塊的功能,每個模塊的功能由簡單的基本函數構成。第六頁,共二十八頁,2022年,8月28日18.2.3score*creatlink()創建動態鏈表由于記錄并不是一次性全部輸入,而是隨時添加和刪除的,而預先開辟的空間數往往大于實際的記錄數,浪費內存空間,因此使用動態空間開僻函數malloc()為輸入的數據動態分配內存空間。第七頁,共二十八頁,2022年,8月28日18.2.4voidprint(score*head)顯示學生信息使用參數head傳遞鏈表的首地址,首先判斷鏈表是否為空,如果為空,則輸出提示信息;如果不為空,設一個指針變量p,先指向第一個結點,輸出p所指的結點,然后使p后移一個結點,再輸出,直到鏈表的尾結點。第八頁,共二十八頁,2022年,8月28日18.2.5score*add(score*head,score*stu)向鏈表中添加學生數據該函數有兩個數,head頭結點指向鏈表的首地址,stu指向新建立的結點,向其中輸入數據,然后添加到鏈表上,最后根據學生的學號進行排序。第九頁,共二十八頁,2022年,8月28日18.2.6score*search(score*head)查詢學生成績由于在向鏈表中輸入數據、添加數據的時候,已經對鏈表按學號從大到小排好序了,因此在進行查找時,只需要從鏈表的表頭開始進行查詢。如果鏈表為空,則直接輸出提示信息;如果鏈表不為空,則按輸出的學號進行查詢,查詢成功就輸出該學號學生的成績,否則輸出提示信息。第十頁,共二十八頁,2022年,8月28日18.2.7score*dele(score*head)刪除數據該函數根據輸入學生的學號,在鏈表中進行查找如果有匹配的,就將該學號的學生信息刪除掉。最后返回刪除后的鏈表的頭結點。第十一頁,共二十八頁,2022年,8月28日18.2.8score*sortdata(score*head)對數據進行排序該函數提供了幾種排序方法,可以按照學生的學號進行排序,按照學生的姓名,或者按照學生的單科成績進行排序。使用switch-case語句根據用戶的選擇,判斷是按照學號、姓名或是單科成績使用交換法進行排序。第十二頁,共二十八頁,2022年,8月28日18.2.9save(score*p1)保存數據在程序中的數據輸入和輸出是以終端為對象的,當程序關閉后,數據也就丟失了,所以為了能隨時查閱數據,必須將數據輸出到磁盤文件上保存起來,使用時人磁盤中讀入到內存中,這就用到了磁盤文件的讀寫操作。第十三頁,共二十八頁,2022年,8月28日18.2.10score*load(score*head)從文件中讀取數據為了程序關閉后丟失,我們將數據保存到磁盤文件中,下一次對已經有的數據進行的時候可以直接從文件中讀取數據進行操作。第十四頁,共二十八頁,2022年,8月28日18.2.11score*statistics(score*head)成績統計該函數主要實現了對學生成績統計的幾種方式:統計個人總分和平均分、統計單科平均分、統計總分最高分和最低分。第十五頁,共二十八頁,2022年,8月28日18.2.12intmenu(intk)菜單該函數主要提供一個系統顯示的界面,系統模塊進行介紹,便于用戶進行操作。第十六頁,共二十八頁,2022年,8月28日18.2.12用到的頭文件和全局變量#include<malloc.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineLENsizeof(structscorenode)#defineDEBUGintn,k;/*n,k為全局變量,本程序中的函數均可以使用它,分別用于記數和標記*/第十七頁,共二十八頁,2022年,8月28日18.3程序代碼根據上一節對學生成績管理系統的數據結構的模塊功能的分析,并列出了實現各個模塊功能的函數以及它們的程序執行N-S圖,下面是實現各個函數的程序代碼以及在程序運行進的運行結果。第十八頁,共二十八頁,2022年,8月28日18.3.1主函數main代碼主函數main功能是通過調用creat,search,dele,add,print,ststistics,save,sortdata等函數,實現學生成績查詢系統功能。第十九頁,共二十八頁,2022年,8月28日18.3.2創建鏈表函數creatlink函數creatlink的功能是創建鏈表,此函數帶回一個指向鏈表頭的指針。函數體中使用了goto語句,方便程序執行過程中的跳轉。第二十頁,共二十八頁,2022年,8月28日18.3.3顯示學生信息函數print函數print的功能是顯示學生成績,即將所建立的學生成績鏈表打印出來。如果鏈表不為空時,逐個打印出學生的學號,姓名和各科成績。}第二十一頁,共二十八頁,2022年,8月28日18.3.4向鏈表中添加學生數據函數add函數add的功能是向已經建立的鏈表中追加學生資料,并且將所有學生資料按學號排序。第二十二頁,共二十八頁,2022年,8月28日18.3.5查詢學生成績函數search函數search的功能是從鏈表中查詢輸入學號的學生信息。第二十三頁,共二十八頁,2022年,8月28日18.3.6刪除數據函數dele函數dele的功能是刪除輸入學號的學生信息。第二十四頁,共二十八頁,2022年,8月28日18.3.7對數據進行排序函數sortdata函數sortdata的功能是對鏈表中的數據按照一定的要求進行排序。本函數提供了幾種排序方法,使用switch-case語句根據用戶的選擇,判斷是按照學號、姓名或是單科成績使用交換法進行排序。此函數帶回一個指向鏈表頭的指針第二十五頁,共二十八頁,2022年,8月28日18.3.8保存數據函數save函數save的功能是保存學生的資料到磁盤中,在程序關系以后,下次使用時不會丟失。第二十六頁,共二十八頁,2022年,8月28日18.3.9從文件中讀取數據函數load函數loadfile的功能是從文件讀入學生記錄。當把學生記錄保
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疑難問題解析軟件設計師考試試題及答案
- 西方政治制度與教育多樣性的探索試題及答案
- 網絡工程師深入考點及2025年試題答案
- 網絡工程師考試重要文件及試題及答案
- 西方社交媒體對政治運動的推動作用試題及答案
- 選舉中候選人的形象塑造研究試題及答案
- 團隊協作與項目成功關系研究試題及答案
- 經濟危機對政策調整的影響試題及答案
- 解密西方政治制度的權力結構試題及答案
- 新能源汽車電池熱管理技術熱管理創新與產業鏈優化策略研究報告
- 武漢2025屆高中畢業生二月調研考試數學試題及答案
- 初級美甲考試試題及答案
- 2025年南郵面試試題及答案
- 2025年中考數學二輪復習:瓜豆原理(含解析)
- 借哪吒之魂鑄中考輝煌-中考百日誓師班會-2024-2025學年初中主題班會課件
- 男性健康與家庭責任的關系探討
- 2025年貴州貴陽軌道交通三號線工程建設管理有限公司招聘筆試參考題庫附帶答案詳解
- 房屋裝修拆除合同范本2025年
- 2025年上海市各區高三語文一模試題匯編之文言文一閱讀(含答案)
- 空調售后服務規劃
- 2024屆新高考語文高中古詩文必背72篇 【原文+注音+翻譯】
評論
0/150
提交評論