學(xué)生成績管理系統(tǒng)設(shè)計(jì)_第1頁
學(xué)生成績管理系統(tǒng)設(shè)計(jì)_第2頁
學(xué)生成績管理系統(tǒng)設(shè)計(jì)_第3頁
學(xué)生成績管理系統(tǒng)設(shè)計(jì)_第4頁
學(xué)生成績管理系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

學(xué)生成績管理系統(tǒng)設(shè)計(jì)第一頁,共二十八頁,2022年,8月28日18.1學(xué)生成績管理系統(tǒng)功能本系統(tǒng)實(shí)現(xiàn)的功能:(1)錄入學(xué)生的成績,(2)輸出學(xué)生的成績(3)添加學(xué)生的成績信息(4)刪除指定學(xué)生的成績信息(5)按照要求對(duì)學(xué)生成績信息進(jìn)行排序(6)根據(jù)學(xué)號(hào)查詢指定學(xué)生的成績(7)將學(xué)生的成績信息保存到文件第二頁,共二十八頁,2022年,8月28日第三頁,共二十八頁,2022年,8月28日第四頁,共二十八頁,2022年,8月28日18.2功能模塊的描述

18.2.1數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)體說的定義如下:structscorenode{intnumber; /*學(xué)生學(xué)號(hào)*/charname[10]; /*學(xué)生姓名*/floatchinese; /*語文成績*/floatmathmatic; /*數(shù)學(xué)成績*/floatenglish; /*英語成績*/structscorenode*next;};typedefstructscorenodescore; 第五頁,共二十八頁,2022年,8月28日18.2.2main()主函數(shù)程序采用模塊化設(shè)計(jì),主函數(shù)是程序的入口,各模塊獨(dú)立,可分塊調(diào)整,均由主函數(shù)控制。采用while死循環(huán)和switch分支語句編寫菜單選擇控制各個(gè)模塊的功能,每個(gè)模塊的功能由簡單的基本函數(shù)構(gòu)成。第六頁,共二十八頁,2022年,8月28日18.2.3score*creatlink()創(chuàng)建動(dòng)態(tài)鏈表由于記錄并不是一次性全部輸入,而是隨時(shí)添加和刪除的,而預(yù)先開辟的空間數(shù)往往大于實(shí)際的記錄數(shù),浪費(fèi)內(nèi)存空間,因此使用動(dòng)態(tài)空間開僻函數(shù)malloc()為輸入的數(shù)據(jù)動(dòng)態(tài)分配內(nèi)存空間。第七頁,共二十八頁,2022年,8月28日18.2.4voidprint(score*head)顯示學(xué)生信息使用參數(shù)head傳遞鏈表的首地址,首先判斷鏈表是否為空,如果為空,則輸出提示信息;如果不為空,設(shè)一個(gè)指針變量p,先指向第一個(gè)結(jié)點(diǎn),輸出p所指的結(jié)點(diǎn),然后使p后移一個(gè)結(jié)點(diǎn),再輸出,直到鏈表的尾結(jié)點(diǎn)。第八頁,共二十八頁,2022年,8月28日18.2.5score*add(score*head,score*stu)向鏈表中添加學(xué)生數(shù)據(jù)該函數(shù)有兩個(gè)數(shù),head頭結(jié)點(diǎn)指向鏈表的首地址,stu指向新建立的結(jié)點(diǎn),向其中輸入數(shù)據(jù),然后添加到鏈表上,最后根據(jù)學(xué)生的學(xué)號(hào)進(jìn)行排序。第九頁,共二十八頁,2022年,8月28日18.2.6score*search(score*head)查詢學(xué)生成績由于在向鏈表中輸入數(shù)據(jù)、添加數(shù)據(jù)的時(shí)候,已經(jīng)對(duì)鏈表按學(xué)號(hào)從大到小排好序了,因此在進(jìn)行查找時(shí),只需要從鏈表的表頭開始進(jìn)行查詢。如果鏈表為空,則直接輸出提示信息;如果鏈表不為空,則按輸出的學(xué)號(hào)進(jìn)行查詢,查詢成功就輸出該學(xué)號(hào)學(xué)生的成績,否則輸出提示信息。第十頁,共二十八頁,2022年,8月28日18.2.7score*dele(score*head)刪除數(shù)據(jù)該函數(shù)根據(jù)輸入學(xué)生的學(xué)號(hào),在鏈表中進(jìn)行查找如果有匹配的,就將該學(xué)號(hào)的學(xué)生信息刪除掉。最后返回刪除后的鏈表的頭結(jié)點(diǎn)。第十一頁,共二十八頁,2022年,8月28日18.2.8score*sortdata(score*head)對(duì)數(shù)據(jù)進(jìn)行排序該函數(shù)提供了幾種排序方法,可以按照學(xué)生的學(xué)號(hào)進(jìn)行排序,按照學(xué)生的姓名,或者按照學(xué)生的單科成績進(jìn)行排序。使用switch-case語句根據(jù)用戶的選擇,判斷是按照學(xué)號(hào)、姓名或是單科成績使用交換法進(jìn)行排序。第十二頁,共二十八頁,2022年,8月28日18.2.9save(score*p1)保存數(shù)據(jù)在程序中的數(shù)據(jù)輸入和輸出是以終端為對(duì)象的,當(dāng)程序關(guān)閉后,數(shù)據(jù)也就丟失了,所以為了能隨時(shí)查閱數(shù)據(jù),必須將數(shù)據(jù)輸出到磁盤文件上保存起來,使用時(shí)人磁盤中讀入到內(nèi)存中,這就用到了磁盤文件的讀寫操作。第十三頁,共二十八頁,2022年,8月28日18.2.10score*load(score*head)從文件中讀取數(shù)據(jù)為了程序關(guān)閉后丟失,我們將數(shù)據(jù)保存到磁盤文件中,下一次對(duì)已經(jīng)有的數(shù)據(jù)進(jìn)行的時(shí)候可以直接從文件中讀取數(shù)據(jù)進(jìn)行操作。第十四頁,共二十八頁,2022年,8月28日18.2.11score*statistics(score*head)成績統(tǒng)計(jì)該函數(shù)主要實(shí)現(xiàn)了對(duì)學(xué)生成績統(tǒng)計(jì)的幾種方式:統(tǒng)計(jì)個(gè)人總分和平均分、統(tǒng)計(jì)單科平均分、統(tǒng)計(jì)總分最高分和最低分。第十五頁,共二十八頁,2022年,8月28日18.2.12intmenu(intk)菜單該函數(shù)主要提供一個(gè)系統(tǒng)顯示的界面,系統(tǒng)模塊進(jìn)行介紹,便于用戶進(jìn)行操作。第十六頁,共二十八頁,2022年,8月28日18.2.12用到的頭文件和全局變量#include<malloc.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineLENsizeof(structscorenode)#defineDEBUGintn,k;/*n,k為全局變量,本程序中的函數(shù)均可以使用它,分別用于記數(shù)和標(biāo)記*/第十七頁,共二十八頁,2022年,8月28日18.3程序代碼根據(jù)上一節(jié)對(duì)學(xué)生成績管理系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)的模塊功能的分析,并列出了實(shí)現(xiàn)各個(gè)模塊功能的函數(shù)以及它們的程序執(zhí)行N-S圖,下面是實(shí)現(xiàn)各個(gè)函數(shù)的程序代碼以及在程序運(yùn)行進(jìn)的運(yùn)行結(jié)果。第十八頁,共二十八頁,2022年,8月28日18.3.1主函數(shù)main代碼主函數(shù)main功能是通過調(diào)用creat,search,dele,add,print,ststistics,save,sortdata等函數(shù),實(shí)現(xiàn)學(xué)生成績查詢系統(tǒng)功能。第十九頁,共二十八頁,2022年,8月28日18.3.2創(chuàng)建鏈表函數(shù)creatlink函數(shù)creatlink的功能是創(chuàng)建鏈表,此函數(shù)帶回一個(gè)指向鏈表頭的指針。函數(shù)體中使用了goto語句,方便程序執(zhí)行過程中的跳轉(zhuǎn)。第二十頁,共二十八頁,2022年,8月28日18.3.3顯示學(xué)生信息函數(shù)print函數(shù)print的功能是顯示學(xué)生成績,即將所建立的學(xué)生成績鏈表打印出來。如果鏈表不為空時(shí),逐個(gè)打印出學(xué)生的學(xué)號(hào),姓名和各科成績。}第二十一頁,共二十八頁,2022年,8月28日18.3.4向鏈表中添加學(xué)生數(shù)據(jù)函數(shù)add函數(shù)add的功能是向已經(jīng)建立的鏈表中追加學(xué)生資料,并且將所有學(xué)生資料按學(xué)號(hào)排序。第二十二頁,共二十八頁,2022年,8月28日18.3.5查詢學(xué)生成績函數(shù)search函數(shù)search的功能是從鏈表中查詢輸入學(xué)號(hào)的學(xué)生信息。第二十三頁,共二十八頁,2022年,8月28日18.3.6刪除數(shù)據(jù)函數(shù)dele函數(shù)dele的功能是刪除輸入學(xué)號(hào)的學(xué)生信息。第二十四頁,共二十八頁,2022年,8月28日18.3.7對(duì)數(shù)據(jù)進(jìn)行排序函數(shù)sortdata函數(shù)sortdata的功能是對(duì)鏈表中的數(shù)據(jù)按照一定的要求進(jìn)行排序。本函數(shù)提供了幾種排序方法,使用switch-case語句根據(jù)用戶的選擇,判斷是按照學(xué)號(hào)、姓名或是單科成績使用交換法進(jìn)行排序。此函數(shù)帶回一個(gè)指向鏈表頭的指針第二十五頁,共二十八頁,2022年,8月28日18.3.8保存數(shù)據(jù)函數(shù)save函數(shù)save的功能是保存學(xué)生的資料到磁盤中,在程序關(guān)系以后,下次使用時(shí)不會(huì)丟失。第二十六頁,共二十八頁,2022年,8月28日18.3.9從文件中讀取數(shù)據(jù)函數(shù)load函數(shù)loadfile的功能是從文件讀入學(xué)生記錄。當(dāng)把學(xué)生記錄保

溫馨提示

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

評(píng)論

0/150

提交評(píng)論