freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

vc學(xué)生成績管理系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-課程設(shè)計(jì)(已修改)

2025-08-19 14:55 本頁面
 

【正文】 vc學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)課程設(shè)計(jì)vc學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)一、需求分析本演示程序用TC編寫,主要用到的數(shù)據(jù)結(jié)構(gòu)是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)。因?yàn)閷W(xué)生成績管理系統(tǒng)需要經(jīng)常更新,修改數(shù)據(jù)。根據(jù)這個(gè)特點(diǎn)我們采用了鏈?zhǔn)酱鎯Y(jié)構(gòu)。它是一種動態(tài)存儲結(jié)構(gòu)。根據(jù)數(shù)據(jù)的特點(diǎn),每一條記錄包含多個(gè)屬性,我們定義了一個(gè)結(jié)構(gòu)體Student。開發(fā)目的如下:能對成績進(jìn)行錄入和修改;能計(jì)算每個(gè)學(xué)生的平均成績以及各門功課的平均成績;能根據(jù)學(xué)號來查相應(yīng)的學(xué)生成績;能根據(jù)學(xué)生成績的高低進(jìn)行排名。輸入的形式和輸入值的范圍:學(xué)生的學(xué)號和姓名都為字符型,長度分別為6和5。輸入的學(xué)號最多只能有5位,輸入的姓名最多只能有4位。否則會出現(xiàn)亂碼。學(xué)生的成績在0100之內(nèi)。 輸出的形式:以二進(jìn)制的形式存儲在你指定的硬盤里。程序所能達(dá)到的功能:每一條記錄包括一個(gè)學(xué)生的學(xué)號、姓名、3門成績、平均成績。輸入功能:可以一次完成無數(shù)條記錄的輸入。顯示功能:完成全部學(xué)生記錄的顯示。查找功能:完成按姓名查找學(xué)生記錄,并顯示。排序功能:按學(xué)生平均成績進(jìn)行排序。插入功能:按平均成績高低插入一條學(xué)生記錄。保存功能:將學(xué)生記錄保存在任何自定義的文件中,如保存在:c:\score。讀取功能:將保存在文件中的學(xué)生記錄讀取出來。有一個(gè)清晰美觀界面來調(diào)用各個(gè)功能 測試數(shù)據(jù):numnameScore1Score2Score310001xing88988610002wang99698710003gong789989二、概要設(shè)計(jì)為了實(shí)現(xiàn)上述程序功能,需要定義結(jié)構(gòu)體的抽象數(shù)據(jù)類型和全局變量:ADT Student {數(shù)據(jù)對象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}數(shù)據(jù)關(guān)系:R1={ai1,ai|ai1, ai∈D,i=2,…,n}基本操作: IntiList(amp。L) 操作結(jié)果:構(gòu)造一個(gè)空的線性表L GetElem(L,i,amp。e) 初始條件:線性表L已存在,1≤i≤ListLength(L)。 操作結(jié)果:用e返回L中第i個(gè)數(shù)據(jù)元素的值。 ListInsert(amp。L,I,e) 初始條件:線性表L已存在,1≤i≤ListLength(L)+1。 操作結(jié)果:在L中第i個(gè)位置之前插入新的數(shù)據(jù)元素e,L的長度加1。 ListDelete(amp。L,I,e) 初始條件:線性表L已存在且非空,1≤i≤ListLength(L)。 操作結(jié)果:刪除L中第i個(gè)數(shù)據(jù)元素,并用e返回其值,L的長度減1。}ADT Student下面是我們定義的結(jié)構(gòu)體數(shù)組。整個(gè)鏈?zhǔn)酱鎯Y(jié)構(gòu)中,所有在存儲的記錄(一個(gè)學(xué)生的信息)在物理位置上是不相鄰的,是通過指針把各個(gè)結(jié)點(diǎn)聯(lián)系在一起。每一個(gè)結(jié)點(diǎn)包含一條記錄,包括學(xué)生的學(xué)號、姓名、三科的成績、平均成績、總分等等,存儲下面所定義的結(jié)構(gòu)體數(shù)組里面。這個(gè)結(jié)構(gòu)體數(shù)組貫穿整個(gè)系統(tǒng),可以說是整個(gè)系統(tǒng)的核心。typedef struct stu /*定義結(jié)構(gòu)體數(shù)組用于緩存數(shù)據(jù)*/{char num[6]。char name[5]。int score[3]。int sum。float average。int order。struct stu *next。}STUDENT。三、詳細(xì)設(shè)計(jì)整個(gè)系統(tǒng)除了主函數(shù)外,另外還有10個(gè)函數(shù),實(shí)現(xiàn)八大功能:輸入功能、顯示功能、查找功能、排序功能、插入功能、保存功能、讀取功能。各個(gè)函數(shù)的詳細(xì)設(shè)計(jì)說明分別如下: 主函數(shù) main()利用無限次循環(huán)for(。)和switch()實(shí)現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)來調(diào)用相應(yīng)的函數(shù)。 初始化函數(shù) STUDENT *init()這是一個(gè)無參函數(shù),里面只有一個(gè)語句,它的作用是使鏈表初始化,使head的值為NULL。比如:沒有這個(gè)函數(shù)的話,在你沒有輸入任何數(shù)據(jù)的情況下,去執(zhí)行顯示功能的時(shí)候會顯示一些亂碼! 菜單選擇函數(shù) int menu_select()。這是一個(gè)無參函數(shù),主要實(shí)現(xiàn)“功能選擇”的界面,在這個(gè)界面里有顯示系統(tǒng)的九大功能,根據(jù)每個(gè)功能前面的序號進(jìn)行選擇,中間還顯示系統(tǒng)當(dāng)前的時(shí)間。等執(zhí)行完每一個(gè)函數(shù)功能后,按任一鍵回到主界面也要通過這個(gè)函數(shù)來實(shí)現(xiàn)! 輸入記錄函數(shù) STUDENT *create()這是一個(gè)無參函數(shù),用來執(zhí)行第學(xué)生成績記錄的輸入,當(dāng)學(xué)生為0時(shí)停止輸入,函數(shù)結(jié)束后,帶回一個(gè)指向鏈表頭的指針head。算法:先聲明一個(gè)首節(jié)點(diǎn)head,并將headnext設(shè)為NULL。每輸入一個(gè)數(shù)據(jù)就聲明一個(gè)新節(jié)點(diǎn)p,把pnext設(shè)為NULL,并且鏈接到之前列表的尾端。 顯示記錄函數(shù) void print(STUDENT *head)這是一個(gè)不返回值的有參函數(shù),形參為“鏈表頭的指針”,負(fù)責(zé)對全部學(xué)生成績記錄的輸出,不足之處就是不能對學(xué)生成績進(jìn)行分頁顯示。算法:先將p結(jié)點(diǎn)的指針指向第一個(gè)結(jié)點(diǎn),將p結(jié)點(diǎn)(即第一個(gè)結(jié)點(diǎn))的數(shù)據(jù)輸出。然后再將p結(jié)點(diǎn)的指針指向p指針的的指針(即下一結(jié)點(diǎn)),將p結(jié)點(diǎn)(即第一結(jié)點(diǎn))的數(shù)據(jù)輸出。重復(fù)執(zhí)行此步聚直到p指針指向NULL為止。 查找記錄函數(shù) void search(STUDENT *head)這是一個(gè)不返回值的有參函數(shù),形參為“鏈表頭的指針”,實(shí)現(xiàn)按學(xué)號對某個(gè)學(xué)生進(jìn)行查找,并顯示所查找到的記錄。算法:采用線性查找法往下一個(gè)節(jié)點(diǎn)查找。輸入所要查找的學(xué)生的學(xué)號s,設(shè)一個(gè)指針變量p,先指向第一個(gè)結(jié)點(diǎn),當(dāng)strcmp(pname,s) amp。amp。 p != NULL時(shí),使p后移一個(gè)結(jié)點(diǎn),如果p!=NULL,輸出p所指的結(jié)點(diǎn)。Status GetElem _L(LinkList L,int i,ElemTypeamp。e) {// L為帶頭結(jié)點(diǎn)的單鏈表的頭指針// 當(dāng)?shù)趇個(gè)元素存在時(shí),其值賦給e并返回OK,否則返回ERRORP=Lnext。j=1。 //初始化,p指向第一個(gè)結(jié)點(diǎn),j為計(jì)數(shù)器While(pamp。amp。ji) { //順指針向后查找,直到p指向第i個(gè)元素或p為空P=Lnext。++j。}If(!p||ji)return ERROR。 //第i個(gè)元素不存在e=pdata。 //取第i個(gè)元素return OK。} 刪除記錄函數(shù) STUDENT *delete(STUDENT *head)這是一個(gè)有參函數(shù),形參為“鏈表頭的指針”,先輸入要刪除的學(xué)生記錄的學(xué)號,找到后顯示該學(xué)生信息,等確認(rèn)后便可按“Y”進(jìn)行刪除。算法:從p指向的第一個(gè)結(jié)點(diǎn)開始,檢查該結(jié)點(diǎn)中的num值是否等于輸入的要求刪除的那個(gè)學(xué)號。如果相等就將該結(jié)點(diǎn)刪除,如不相等,就將p后移一個(gè)結(jié)點(diǎn),再如此進(jìn)行下去,直到遇到表尾為止。Status ListDelete _L(LinkListamp。L,int i,ElemTypeamp。e) {//在帶頭結(jié)點(diǎn)的單鏈線性表L中,刪除第i個(gè)元素,并由e返回其值p=L。J=0。while(pnextamp。amp。ji1){//尋找第i個(gè)結(jié)點(diǎn),并令P指向其前趨p=pnext。++j。}if(!(pnext)||ji1)return ERROR。 //刪除位置不合理q=pnext。pnext=qnext。 //刪除并釋放結(jié)點(diǎn)e=qdata。free(q)。return OK。} //ListDelete_L排序函數(shù) STUDENT *sort(STUDENT *head)這是一個(gè)有參函數(shù),形參為“鏈表頭的指針”,按學(xué)生成績的平均分高低進(jìn)行排序,還可以顯示名次。 插入函數(shù) STUDENT *insert(STUDENT *head,STUDENT *new)這是一個(gè)有參函數(shù),形參有兩個(gè),一個(gè)是“鏈表頭的指針”,一個(gè)是“待插入指針”,按照原來成績平均分的高低進(jìn)行插入,插入后會重新進(jìn)行排序,并返回。算法:先將學(xué)生的成績按平均分由高分到低分進(jìn)行排序,再插入一個(gè)新生的結(jié)點(diǎn),要
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1