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

正文內(nèi)容

c語言學(xué)生成績管理系統(tǒng)設(shè)計(jì)報(bào)告(已修改)

2025-05-25 18:43 本頁面
 

【正文】 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)報(bào)告2015— 2016學(xué)年第二學(xué)期課程名稱 C語言程序設(shè)計(jì) 題 目 學(xué)生成績管理系統(tǒng) 學(xué)生姓名 XXX 學(xué) 號 XXX 專業(yè)班級 XXX 指導(dǎo)教師 XXX 合 作 者 XXX 2016年 6月 30日 學(xué)生成績管理系統(tǒng)本程序可實(shí)現(xiàn)對學(xué)生語數(shù)外三門課程成績的錄入與保存。 設(shè)計(jì)目的 本程序旨在訓(xùn)練讀者的基本編程能力,了解管理信息系統(tǒng)開發(fā)流程,熟悉C語言的各種語法、編寫流程、以及能夠熟練運(yùn)用各種算法、以及各種函數(shù)的使用。 功能描述本程序可實(shí)現(xiàn)的功能:(1) 錄入學(xué)生的成績(2) 輸出學(xué)生的成績(3) 添加學(xué)生的成績信息(4) 刪除指定學(xué)生的成績信息(5) 按照要求對學(xué)生成績信息進(jìn)行排序(6) 根據(jù)學(xué)號查詢指定學(xué)生的成績(7) 將學(xué)生的成績信息以文件形式保存 總體設(shè)計(jì) main()函數(shù):程序首先調(diào)用menu()函數(shù),顯示出系統(tǒng)主菜單,然后將menu()函數(shù)返回的從用戶讀取的選項(xiàng)k值賦予k,接著進(jìn)入switch—case語句進(jìn)入對應(yīng)選項(xiàng)函數(shù),若輸入錯誤沒有該選項(xiàng)則給出提示(default)以上過程為一個(gè)死循環(huán),直到用戶輸入0為止。menu()函數(shù):在屏幕上打印選項(xiàng)名稱,然后用一個(gè)int類型的變量接受從用戶輸入的選項(xiàng),最后將其return至主函數(shù)。score *creatlink()函數(shù):創(chuàng)建鏈表主要實(shí)現(xiàn)流程如下:print()函數(shù):先令P=head,使p指向第一個(gè)節(jié)點(diǎn),當(dāng)head=!NULL時(shí)說明沒有到鏈表尾端,那么就輸出p所指向的結(jié)構(gòu)數(shù)據(jù),然后讓p指向下一個(gè)節(jié)點(diǎn),直到發(fā)現(xiàn)p==NULL為止。而當(dāng)head==NULL說明鏈表中不存在數(shù)據(jù),直接停止輸出。score *add()函數(shù),添加新的學(xué)生信息,具體實(shí)現(xiàn)路程如流程圖所示(圖片制作時(shí)沒有加Y/N判斷,在判斷圖框中均為向左為真,向右為假):score *search()函數(shù):用來查詢學(xué)生成績,傳遞給函數(shù)指向鏈表的頭指針,查詢時(shí),如果找到與輸入相匹配的學(xué)號則打印此學(xué)生,反之則輸出“沒有任何學(xué)生資料!”:score *sortdata()函數(shù):該函數(shù)有學(xué)號、姓名、單科成績排序(冒泡排序法),實(shí)行過程如圖:save()函數(shù):用來保存數(shù)據(jù),首先從用戶輸入取得要保存的文件名,然后定義一個(gè)指向文件的指針,以讀寫方式打開文件。將寫生信息依次存入文件。score *load()函數(shù):用于讀取數(shù)據(jù),通過“r+”方式打開文件并判斷是否打開成功。具體實(shí)現(xiàn)如下:score *statistics()函數(shù):它能實(shí)現(xiàn)程序的統(tǒng)計(jì),通過switchcase語句選擇統(tǒng)計(jì)方式,通過循環(huán)計(jì)算總分或者平均分并打印出來,流程都是通過循環(huán),讓指針逐個(gè)遍歷整個(gè)鏈表,讀取相應(yīng)的數(shù)據(jù)并實(shí)現(xiàn)統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu):定義了一個(gè)包含學(xué)生成績信息的結(jié)構(gòu)體(struct scorenode{}),學(xué)生信息包括學(xué)號(number)、姓名(name[10])、語文、數(shù)學(xué)、英語成績(chinese、mathmatic、english)、以及指向下一個(gè)結(jié)構(gòu)體的鏈表指針(struct scorenode *next)。 main()函數(shù):主函數(shù)功能主要是讓程序選擇將要進(jìn)行的操作,通過menu()函數(shù)返回的選項(xiàng)進(jìn)入其他函數(shù)執(zhí)行。int menu(int k)函數(shù):此函數(shù)顯示主菜單內(nèi)容,需要一個(gè)int類型變量作為輸入要執(zhí)行的選項(xiàng)并返回給main()函數(shù)。score *creatlink()函數(shù):此函數(shù)用于創(chuàng)建鏈表,為了節(jié)省內(nèi)存空間,我們采用malloc()函數(shù)為結(jié)構(gòu)體分配動態(tài)內(nèi)存空間。另外考慮到學(xué)號不可能是0,所以用輸入0 的方式來判斷是否結(jié)束輸入,將最后的結(jié)構(gòu)體中的指針指向NULL,并返回一個(gè)指向鏈表第一個(gè)結(jié)構(gòu)的指針。void print(score *head)函數(shù):此函數(shù)返回值為空,知識為了在stdout流(屏幕)上打印出學(xué)生的成績信息,需要一個(gè)指向鏈表頭的指針來逐個(gè)向后打印。score *add(score *head , score *stu)函數(shù):為學(xué)生信息中添加新的學(xué)生資料,然后重新排序(按學(xué)號),并返回頭指針。傳入函數(shù)的head為鏈表頭指針,stu指針指的是要添加的位置。score *search(score *head)函數(shù):按照學(xué)號查找學(xué)生信息,需要鏈表頭指針并返回指向被搜索學(xué)生的指針。搜索原理就是從頭向后面依次檢索。score *dele(score *head)函數(shù):刪除指定學(xué)生的資料。傳入頭指針,在函數(shù)中創(chuàng)建變量儲存要刪除學(xué)生的學(xué)號,然后從頭向尾檢索,直至找到該學(xué)生并將其刪除,返回頭指針。score *sortdata(score *head)函數(shù):用于按要求(學(xué)號、姓名、單科成績)排序,最后返回頭指針,排序運(yùn)用老師上課時(shí)講過的冒泡排序法。int save(score *p1)函數(shù):將鏈表內(nèi)的數(shù)據(jù)以文件的形式儲存,傳入的p1指針一開始指向鏈表頭,隨著儲存順序一個(gè)一個(gè)地向后面指,直到NULL為止。函數(shù)內(nèi)部定義一個(gè)指向文件的指針*fp,用于寫入文件。score *load(score *head)函數(shù):讀取文件數(shù)據(jù),head為一個(gè)新建的鏈表頭指針,讀取文件數(shù)據(jù)之后令其保存至新建的鏈表之中,并返回頭指針。score *statistics(score *head)函數(shù):統(tǒng)計(jì)成績,可以統(tǒng)計(jì)總分、平均分、最高(低)分,返回操作后的鏈表首地址(頭指針)。 程序?qū)崿F(xiàn)include include includeinclude define LEN sizeof(struct scorenode)define DEBUG/*===========數(shù)據(jù)結(jié)構(gòu)==========*/struct scorenode{ int number。 //學(xué)生學(xué)號 char name[10]。 //學(xué)生姓名 float chinese。 //語文成績 float mathmatic。 //數(shù)學(xué)成績 float english。 //英語成績 struct scorenode *next。}。typedef struct scorenode score。 //定義結(jié)構(gòu)體變量typedef struct scorenode *scoreptr。 //定義結(jié)構(gòu)體變量指針int n,k。 /*n,k為全局變量,本程序中的函數(shù)均可以使用它,分別用于記數(shù)和標(biāo)記*//*==========創(chuàng)建鏈表==========*//*返回一個(gè)指向鏈表頭的指針*/score *creatlink(){ score*head。 score *p1,*p2,*p3,*max。 int i,j。 float fen。 char t[10]。 n=0。 p1=p2=p3=(score *)malloc(LEN)。head=p3。 //開辟一個(gè)新單元 printf(請輸入學(xué)生資料,輸0退出!\n)。 repeat1: printf(請輸入學(xué)生學(xué)號(學(xué)號應(yīng)大于0):)。 //輸入學(xué)號,學(xué)號應(yīng)大于0 scanf(%d,amp。p1number)。 while(p1number0) { getchar()。 printf(輸入錯誤,請重新輸入學(xué)生學(xué)號:)。 scanf(%d,amp。p1number)。 } //輸入學(xué)號為字符或小于0時(shí),程序報(bào)錯,提示重新輸入學(xué)號 if(p1number==0) goto end。 //當(dāng)輸入的學(xué)號為0時(shí),轉(zhuǎn)到末尾,結(jié)束創(chuàng)建鏈表 else { p3=head。 if(n0) { for(i=0。in。i++) { if(p1number!=p3number) p3=p3next。 else { printf(學(xué)號重復(fù),請重輸!\n)。 goto repeat1。 /*當(dāng)輸入的學(xué)號已經(jīng)存在,程序報(bào)錯,返回前面重新輸入*/ } } } } printf(請輸入學(xué)生姓名:)。 scanf(%s,amp。p1name)。 /*輸入學(xué)生姓名*/ printf(請輸入語文成績(0~100):)。 /*輸入語文成績,成績應(yīng)在0100*/ scanf(%f,amp。p1chinese)。 while(p1chinese0||p1chinese100) { getchar()。 printf(輸入錯誤,請重新輸入語文成績)。 /*輸入錯誤,重新輸入語文成績直到正確為止*/ scanf(%f,amp。p1chinese)。 } printf(請輸入數(shù)學(xué)成績(0~100):)。 /*輸入數(shù)學(xué)成績,成績應(yīng)在0100*/ scanf(%f,amp。p1mathmatic)。 while(p1mathmatic0||p1mathmatic100) { getchar()。 printf(輸入錯誤,請重新輸入數(shù)學(xué)成績)。 /*輸入錯誤,重新輸入數(shù)學(xué)成績直到正確為止*/ scanf(%f,amp。p1mathmatic)。 } printf(請輸入英語成績(0~100):)。 /*輸入英語成績,成績應(yīng)在0100*/ scanf(%f,amp。p1english)。 while(p1english0||p1english100) { getchar()。 printf(輸入錯誤,請重新輸入英語成績)。 scanf(%f,amp。p1english)。 } /*輸入錯誤,重新輸入英語成績直到正確為止*/ head=NULL。 while(p1number!=0) { n=n+1。 if(n==1) head=p1。 else p2next=p1。 p2=p1。 p1=(score *)malloc(LEN)。 printf(請輸入學(xué)生資料,輸0退出!\n)。 repeat2:printf(請輸入學(xué)生學(xué)號(學(xué)號應(yīng)大于0):)。 scanf(%d,amp。p1number)。 /*輸入學(xué)號*/ while(p1number0) { getchar()。 printf(輸入錯誤,請重新輸入學(xué)生學(xué)號:)。 scanf(%d,amp。p1number)。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1