版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-. z工學(xué)院數(shù)據(jù)構(gòu)造課程設(shè)計(jì)報(bào)告選題名稱(chēng): 學(xué)生成績(jī)管理系統(tǒng) 系院: 數(shù) 理學(xué) 院專(zhuān) 業(yè): 信息與計(jì)算科學(xué)班 級(jí): 計(jì)科1102班 姓 名: *連喜 學(xué) 號(hào): 1104101233 指導(dǎo)教師: 周 海 巖 學(xué)年學(xué)期: 2011 2012 學(xué)年 第 1 學(xué)期 2012 年 06 月 06 日【摘要】21世紀(jì),科學(xué)技術(shù)突飛猛進(jìn),經(jīng)濟(jì)知識(shí)和信息產(chǎn)業(yè)初見(jiàn)端倪,特別是信息技術(shù)和網(wǎng)絡(luò)技術(shù)的訊速開(kāi)展和廣泛應(yīng)用,對(duì)社會(huì)的政治,經(jīng)濟(jì),軍事,文化等領(lǐng)域產(chǎn)生越來(lái)越深刻。學(xué)生成績(jī)管理系統(tǒng)是一個(gè)教育單位不可缺少的局部,它的容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都至關(guān)重要。本論文表達(dá)到的學(xué)生成績(jī)管理系統(tǒng)是用IIS+ASP網(wǎng)頁(yè)編
2、程+ACCESS數(shù)據(jù)庫(kù)+DREAMWEAVER M* 2004+SQL查詢(xún)語(yǔ)言實(shí)現(xiàn)的。重點(diǎn)介紹了學(xué)生成績(jī)管理系統(tǒng)的實(shí)現(xiàn)過(guò)程:包括系統(tǒng)分析,系統(tǒng)調(diào)查,功能設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì),系統(tǒng)實(shí)現(xiàn),系統(tǒng)測(cè)試和調(diào)試等。本系統(tǒng)主要功能有查詢(xún)學(xué)生成績(jī)、單個(gè)添加學(xué)生成績(jī)、批量添加學(xué)生成績(jī)、刪除學(xué)生成績(jī)、管理頁(yè)面和修改管理員密碼等容。【關(guān)鍵詞】 成績(jī)管理;成績(jī)查詢(xún);C+目 錄中文摘要 。 11緒論 。 41.1 選題背景 。 51.2 需求分析 。 62總體設(shè)計(jì) 。 72.1程序設(shè)計(jì)組成框圖 。 82.2 模塊功能說(shuō)明 。92.3 程序流程圖 。102.4 主要函數(shù)之間相互調(diào)用 。 113 在設(shè)計(jì)過(guò)程中的感受 。12致。
3、 13參考文獻(xiàn)。 14附錄:源程序清單 。 15緒論1.1 選題背景為了提高高校學(xué)生信息的管理效率,方便對(duì)學(xué)生信息進(jìn)展管理、學(xué)校里面的學(xué)生和管理員方便去管理和查詢(xún)學(xué)生信息,如再要進(jìn)展查詢(xún),就得在眾多的學(xué)生信息中查找自己的成績(jī)信息,面對(duì)學(xué)院大量的學(xué)生信息,怎么可以即時(shí)而方便的管理,學(xué)生只要登錄本系統(tǒng)就可以查找到自己的成績(jī)信息,而管理員也方便去管理每學(xué)期的學(xué)生的成績(jī)信息。建立一個(gè)學(xué)生信息管理系統(tǒng),使學(xué)生信息管理工作規(guī)化,系統(tǒng)化,程序化,防止學(xué)生管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢(xún)和修改學(xué)生信息是必須而且十分迫切的工作。2.1 需求分析學(xué)生管理系統(tǒng)功能的信息量大,數(shù)據(jù)
4、平安性和性要求最高。本功能實(shí)現(xiàn)對(duì)專(zhuān)業(yè)信息、學(xué)生信息、教師信息情況信息的管理和統(tǒng)計(jì)、課程信息和成績(jī)信息查看及維護(hù)。系統(tǒng)管理員可以瀏覽、查詢(xún)、學(xué)生的根本信息,能添加、刪除和修改學(xué)生信息,這局部功能應(yīng)該由系統(tǒng)管理員執(zhí)行,但是,刪除*條專(zhuān)業(yè)根本信息記錄時(shí),應(yīng)實(shí)現(xiàn)對(duì)該專(zhuān)業(yè)的相關(guān)信息也級(jí)聯(lián)刪除。并且還應(yīng)具有查詢(xún),并打印輸出的功能設(shè)計(jì)不同用戶(hù)的操作權(quán)限和登陸方法、對(duì)所有用戶(hù)開(kāi)放的用戶(hù)提供學(xué)生成績(jī)信息查詢(xún)、由于本系統(tǒng)功能實(shí)現(xiàn)方面并不太復(fù)雜,所以上面只是相關(guān)的學(xué)生信息管理查詢(xún)的總體分析,具體實(shí)現(xiàn)就主要表達(dá)在學(xué)生管理,教師的管理和課程的管理這一塊,也就是重點(diǎn)實(shí)現(xiàn)查詢(xún)與添加學(xué)生信息,以及對(duì)成績(jī)信息管理。2總體設(shè)計(jì)1
5、程序設(shè)計(jì)組成框圖學(xué)生成績(jī)管理系統(tǒng)1.按班級(jí)輸出學(xué)生成績(jī)單2.按*查詢(xún)3.增加學(xué)生4.刪除學(xué)生5.按班級(jí)修改學(xué)生成績(jī)6.按班學(xué)期改學(xué)生成績(jī)7.保存所有學(xué)生信息8.顯示不及格學(xué)生成績(jī)9.按平均成績(jī)排序并輸出成績(jī)10.退出2模塊功能說(shuō)明1 輸出功能:完成全部學(xué)生記錄的顯示。2 查詢(xún)功能:輸入可以查詢(xún)學(xué)生的詳細(xì)信息。3 增加功能:增加新學(xué)生的信息。 4 刪除功能:刪除學(xué)生信息。5 修改功能:修改學(xué)生的錯(cuò)誤信息。6保存功能:保存已輸入信息。7讀取功能:讀取已輸入信息。8顯示功能:按要求顯示學(xué)生記錄。9 排序功能:按要求完成對(duì)學(xué)生信息的排序。 10 退出系統(tǒng)。3程序流程圖開(kāi)場(chǎng)輸入指令110學(xué)生成績(jī)單按*查
6、詢(xún)?cè)黾訉W(xué)生刪除學(xué)生按班級(jí)修改按學(xué)期修改保存信息不及格成績(jī)平均分排序退出123456789100完畢4主要函數(shù)之間相互調(diào)用如下:主函數(shù)main ()的調(diào)用switch(choice)case 1:OutputInformation();break; case 2:DesplayInfoBystudentName();break;case 3:p=Malloode();GetInformation(p); InsertOneNode(p); break;case 4:DeleteNodeBystudentNumber();break;case 5:ChangeMarkByName();break;
7、case 6:ChangeMarkByNumber();break;case 7:SaveLinkToFile();break;case 8:DesplayMarkSegment();break;case 9:positorByTotalMark();break;case 10:SaveLinkToFile();總 結(jié)首先經(jīng)過(guò)一周的編程實(shí)習(xí),并在后一段的報(bào)告總結(jié),我對(duì)數(shù)據(jù)構(gòu)造這門(mén)科有新的認(rèn)識(shí),本人實(shí)在是獲益不淺!要想編寫(xiě)一個(gè)準(zhǔn)確、高效并有使用價(jià)值的程序,一定先要對(duì)課本知識(shí)熟悉,還要掌握必要的上機(jī)操作能力,寫(xiě)程序其實(shí)很容易而關(guān)鍵在于調(diào)試程序。這次設(shè)計(jì),讓我重新掌握了數(shù)據(jù)構(gòu)造,而且還得到了用數(shù)據(jù)構(gòu)
8、造解決實(shí)際問(wèn)題的珍貴經(jīng)歷。其次, 通過(guò)此次編程我也發(fā)現(xiàn)了自己在學(xué)習(xí)中的錯(cuò)誤和缺乏,復(fù)習(xí)了以前學(xué)過(guò)的知識(shí)。同時(shí)也學(xué)到了一些沒(méi)學(xué)過(guò)的知識(shí),讓我從中收益非淺,也為期末考試準(zhǔn)備了一下!更重要的是培養(yǎng)了獨(dú)立思考問(wèn)題和解決問(wèn)題的能力,熟悉了一些根本操作和解決問(wèn)題的方法!致 因?yàn)槌醮谓佑|等原因此次設(shè)計(jì)遇到了許多問(wèn)題,我深刻體會(huì)到教師發(fā)揮的重要作用, 數(shù)據(jù)構(gòu)造程序?qū)ξ覀儊?lái)說(shuō)比擬難,在匆忙的學(xué)習(xí)中更是難上加難,似乎覺(jué)得自己僅是個(gè)匆匆過(guò)客,但在教師的幫助下我學(xué)會(huì)了如何調(diào)試,如何查找系統(tǒng)沒(méi)有提示的錯(cuò)誤,最后終于排除萬(wàn)難把程序搞定,體會(huì)到原來(lái)編程也挺有意思的快感.我想沒(méi)有教師的幫助我很難在短期把程序設(shè)計(jì)做的這樣好,在
9、此特地感教師的幫助。參 考 文 獻(xiàn)1 麗娟 . C語(yǔ)言程序設(shè)計(jì)教程第二版. :人民郵電 20092 刁成嘉 . C語(yǔ)言程序設(shè)計(jì)論文 D.:清華大學(xué) 20043 文軍,柳 . C語(yǔ)言程序設(shè)計(jì)教程M. :清華大學(xué) 20104 周啟海 . C語(yǔ)言程序設(shè)計(jì)報(bào)告R.:中國(guó)水利工程 20055 譚浩強(qiáng) . C程序設(shè)計(jì)第三版M.:清華大學(xué) 2005附 錄源程序清單#include#include#include#includetypedef struct STUDENTchar studentNumber10;/*學(xué)生*/char studentName20;/*學(xué)生*/char className20;/
10、*班級(jí)名稱(chēng)*/char yearName20;/*學(xué)期名稱(chēng)*/float mark1;/*第1門(mén)成績(jī)*/float mark2;/*第2門(mén)成績(jī)*/float mark3;/*第3門(mén)成績(jī)*/struct STUDENT *ne*t;STUDENT;STUDENT *headLink;/*鏈表表頭指針*/*以下是函數(shù)聲明*/void ReadInfoFormFile(void);void DesplayMenu(void);void CreateHeadLink(void);STUDENT *Malloode(void);void GetInformation(STUDENT *t);void O
11、utputInformation(void);void DesplayInfoBystudentName(void);void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber(void);void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DesplayMarkSegment(void);void positorByTotalMark(voi
12、d);int choose;/*用于承受用戶(hù)的選擇*/*主函數(shù)*/void main()CreateHeadLink();ReadInfoFormFile();DesplayMenu();/*函數(shù)功能:從文件中讀學(xué)生信息到鏈表中*/void ReadInfoFormFile(void)FILE *fp;STUDENT *p;fp=fopen(student.t*t,r);if(!fp)printf(文件不存在n);return;p=Malloode();while(fscanf(fp,%s%s%s%f%f%f,p-studentNumber,p-studentName,p-className,
13、&(p-mark1),&(p-mark2),&(p-mark3)0)InsertOneNode(p);p=Malloode();fclose(fp);/*函數(shù)功能:顯示菜單,根據(jù)用戶(hù)的輸入完成相應(yīng)的功能*/void DesplayMenu(void)STUDENT *p;printf(-請(qǐng)選擇相應(yīng)功能-nn);printf(| 1 按班級(jí)輸出學(xué)生成績(jī)單 |n);printf(| 2 按查詢(xún) |n);printf(| 3 增加學(xué)生 |n);printf(| 4 刪除學(xué)生 |n);printf(| 5 按班級(jí)修改學(xué)生成績(jī) |n);printf(| 6 按學(xué)期修改學(xué)生成績(jī) |n);printf(|
14、7 保存所有學(xué)生信息 |n);printf(| 8 顯示不及格學(xué)生成績(jī) |n);printf(| 9 按平均成績(jī)排序并輸出績(jī) |n);printf(| 10 退出 |nn);scanf(%d,&choose);/*取得用戶(hù)的選擇*/switch(choose)case 1:OutputInformation();/*顯示所有學(xué)生的信息*/break;case 2:DesplayInfoBystudentName();break;case 3:p=Malloode();/*先申請(qǐng)一個(gè)新結(jié)點(diǎn)*/GetInformation(p);/*要求用戶(hù)輸入信息到新結(jié)點(diǎn)中*/InsertOneNode(p);
15、/*將新結(jié)點(diǎn)加到鏈表中*/break;case 4:DeleteNodeBystudentNumber();/*根據(jù)用戶(hù)輸入的*刪除該學(xué)生*/break;case 5:ChangeMarkByName();/*根據(jù)用戶(hù)輸入的修改學(xué)生成績(jī)*/break;case 6:ChangeMarkByNumber();/*根據(jù)用戶(hù)輸入的*修改學(xué)生成績(jī)*/break;case 7:SaveLinkToFile();/*保存數(shù)據(jù)*/break;case 8:DesplayMarkSegment();/*顯示不及格的學(xué)生成績(jī)*/break;case 9:positorByTotalMark();/*按平均成績(jī)排
16、序*/break;case 10:SaveLinkToFile();/*保存數(shù)據(jù)后再退出*/free(headLink);break;default:break;DesplayMenu();/*遞歸調(diào)用*/*函數(shù)功能:建立鏈表表頭*/void CreateHeadLink(void)STUDENT *p;p=(STUDENT*)malloc(sizeof(STUDENT);headLink=p;p-ne*t=NULL;/*函數(shù)功能:申請(qǐng)一個(gè)新結(jié)點(diǎn),并將其初始化*/STUDENT *Malloode(void)STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(
17、STUDENT);if(p=NULL)return NULL;for(i=0;istudentNumberi=0;for(i=0;istudentNamei=0;for(i=0;iclassNamei=0;p-mark1=0.0;p-mark2=0.0;p-mark3=0.0;p-ne*t=NULL;return p;/*函數(shù)功能:取得用戶(hù)輸入的學(xué)生信息*/void GetInformation(STUDENT *t)printf(請(qǐng)輸入學(xué)生*:n);scanf(%s,t-studentNumber);printf(請(qǐng)輸入學(xué)生:n);scanf(%s,t-studentName);printf
18、(請(qǐng)輸入該生所在班級(jí):n);scanf(%s,t-className);printf(請(qǐng)輸入第1門(mén)成績(jī):n);scanf(%f,&(t-mark1);printf(請(qǐng)輸入第2門(mén)成績(jī):n);scanf(%f,&(t-mark2);printf(請(qǐng)輸入第3門(mén)成績(jī):n);scanf(%f,&(t-mark3);/*函數(shù)功能:在鏈表的結(jié)尾處增加一個(gè)結(jié)點(diǎn)*/void InsertOneNode(STUDENT *t)STUDENT *p;p=headLink;while(p-ne*t)p=p-ne*t;p-ne*t=t;/*函數(shù)功能:根據(jù)用戶(hù)輸入的學(xué)生顯示該學(xué)生的信息*/void DesplayInfo
19、BystudentName(void)STUDENT *p;char studentName20;char flag=0;p=headLink-ne*t;printf(請(qǐng)輸入學(xué)生:n);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf(*tt班級(jí)t成績(jī)1t成績(jī)1t成績(jī)3t總成績(jī)t平均成績(jī)nn);DesplayOneNode(p);flag=1;break;p=p-ne*t;if(!flag)printf(對(duì)不起,不存在為 %s 的學(xué)生n,studentName);/*函數(shù)功能:輸出一個(gè)結(jié)點(diǎn)的信
20、息*/void DesplayOneNode(STUDENT *t)printf(%st,t-studentNumber);printf(%st,t-studentName);printf(%st,t-className);printf(%.2ft,t-mark1);printf(%.2ft,t-mark2);printf(%.2ft,t-mark3);printf(%.2ft,t-mark1+t-mark2+t-mark3);printf(%.2ftn,(t-mark1+t-mark2+t-mark3)/3);/*函數(shù)功能:根據(jù)用戶(hù)輸入的*刪除該學(xué)生*/void DeleteNodeByst
21、udentNumber(void)char studentNumber10;STUDENT *p,*q;char flag=0;printf(請(qǐng)輸入要?jiǎng)h除的學(xué)生*:);scanf(%s,studentNumber);p=headLink;q=headLink-ne*t;while(q) if(strcmp(q-studentNumber,studentNumber)=0) p-ne*t=q-ne*t; free(q); flag=1; break; p=p-ne*t; q=q-ne*t; if(!flag)printf(不存在該*的學(xué)生n);return;printf(成功刪除n);/*函數(shù)功
22、能:顯示所有學(xué)生的信息*/void OutputInformation(void)STUDENT *p;p=headLink-ne*t;if(p=NULL)printf(現(xiàn)在沒(méi)有學(xué)生信息,請(qǐng)先輸入學(xué)生信息nn);return;printf(*tt班級(jí)t成績(jī)1t成績(jī)1t成績(jī)3t總成績(jī)t平均成績(jī)nn);while(p)DesplayOneNode(p);p=p-ne*t;/*函數(shù)功能:根據(jù)輸入的班級(jí)修改成績(jī)*/void ChangeMarkByName(void)STUDENT *p;int a;char studentName20;char flag=0;float mark1,mark2,ma
23、rk3;p=headLink-ne*t;printf(請(qǐng)輸入學(xué)生班級(jí):n);scanf(%d,&a);printf(請(qǐng)輸入學(xué)生:n);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf(請(qǐng)輸入新的第1門(mén)成績(jī):n);scanf(%f,&mark1);printf(請(qǐng)輸入新的第2門(mén)成績(jī):n);scanf(%f,&mark2);printf(請(qǐng)輸入新的第3門(mén)成績(jī):n);scanf(%f,&mark3);p-mark1=mark1;p-mark2=mark2;p-mark3=mark3;flag=1;p
24、rintf(修改成功n);break;p=p-ne*t;if(!flag)printf(對(duì)不起,不存在班級(jí)為 %s 的學(xué)生n,studentName);/*函數(shù)功能:根據(jù)輸入的學(xué)期修改成績(jī)*/void ChangeMarkByNumber(void)STUDENT *p;int b;char studentNumber20;char flag=0;float mark1,mark2,mark3;p=headLink-ne*t;printf(請(qǐng)輸入學(xué)生所在學(xué)期:n);scanf(%d,&b);printf(請(qǐng)輸入學(xué)生*:n);scanf(%s,studentNumber);while(p)if(
25、strcmp(p-studentNumber,studentNumber)=0)printf(請(qǐng)輸入新的第1門(mén)成績(jī):n);scanf(%f,&mark1);printf(請(qǐng)輸入新的第2門(mén)成績(jī):n);scanf(%f,&mark2);printf(請(qǐng)輸入新的第3門(mén)成績(jī):n);scanf(%f,&mark3);p-mark1=mark1;p-mark2=mark2;p-mark3=mark3;flag=1;printf(修改成功n);break;p=p-ne*t;if(!flag)printf(對(duì)不起,不存在學(xué)期為 %s 的學(xué)生n,studentNumber);/*函數(shù)功能:保存鏈表數(shù)據(jù)到文件中*
26、/void SaveLinkToFile(void)STUDENT *p;FILE *fp;p=headLink-ne*t;if(p=NULL)printf(現(xiàn)在沒(méi)有學(xué)生信息,請(qǐng)先輸入學(xué)生信息nn);return;fp=fopen(student.t*t,w+);if(!fp)printf(文件不存在n);return;while(p)fprintf(fp,%s %s %s %f %f %fn,p-studentNumber,p-studentName,p-className,p-mark1,p-mark2,p-mark3);p=p-ne*t;fclose(fp);/*函數(shù)功能:不及格學(xué)生成績(jī)
27、*/void DesplayMarkSegment(void)STUDENT *p;int count=0;p=headLink-ne*t;printf(60分以下(不及格)的學(xué)生成績(jī)?nèi)缦拢簄);printf(*tt班級(jí)t成績(jī)1t成績(jī)1t成績(jī)3t總成績(jī)t平均成績(jī)nn);while(p)if(6(int)(p-mark1/10)|(6(int)(p-mark2/10)|(6(int)(p-mark3/10)/*只要有一科不及格就認(rèn)為該生不及格*/count+;DesplayOneNode(p);p=p-ne*t;printf(不及格的學(xué)生一共有%d人n,count);/*函數(shù)功能:按平均成績(jī)排序
28、*/void positorByTotalMark(void)STUDENT e*change,*r,*p,*q;r=headLink-ne*t;if(r=NULL)printf(現(xiàn)在還沒(méi)學(xué)生信息,請(qǐng)先輸入學(xué)生信息n);return;while(r)/*兩層while循環(huán)實(shí)現(xiàn)排序*/p=r;q=r-ne*t;while(q)if(q-mark1+q-mark2+q-mark3)(p-mark1+p-mark2+p-mark3)strcpy(e*change.studentNumber,q-studentNumber);/*先復(fù)制q結(jié)點(diǎn)信息到e*change*/strcpy(e*change.s
29、tudentName,q-studentName);strcpy(e*change.className,q-className);e*change.mark1=q-mark1;e*change.mark2=q-mark2;e*change.mark3=q-mark3;strcpy(q-studentNumber,p-studentNumber);/*再?gòu)?fù)制p結(jié)點(diǎn)信息到q*/strcpy(q-studentName,p-studentName);strcpy(q-className,p-className);q-mark1=p-mark1;q-mark2=p-mark3;q-mark3=p-ma
30、rk3;strcpy(p-studentNumber,e*change.studentNumber);/*最后復(fù)制e*change結(jié)點(diǎn)信息到p*/strcpy(p-studentName,e*change.studentName);strcpy(p-className,e*change.className);p-mark1=e*change.mark1;p-mark2=e*change.mark2;p-mark3=e*change.mark3;q=q-ne*t;r=r-ne*t;OutputInformation();修改程序如下:/* 2015年12月7日編制 丹白工作室 */#includ
31、e#include#include#includetypedef struct STUDENTchar studentNumber10;/*學(xué)生*/char studentName20;/*學(xué)生*/char className20;/*班級(jí)名稱(chēng)*/char yearName20;/*學(xué)期名稱(chēng)*/float mark1;/*第1門(mén)成績(jī)*/float mark2;/*第2門(mén)成績(jī)*/float mark3;/*第3門(mén)成績(jī)*/struct STUDENT *ne*t;STUDENT;STUDENT *headLink;/*鏈表表頭指針*/*以下是函數(shù)聲明*/void ReadInfoFormFile(
32、void);void DesplayMenu(void);void CreateHeadLink(void);STUDENT *Malloode(void);void GetInformation(STUDENT *t);void OutputInformation(void);void DesplayInfoBystudentName(void);void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber(void);void ChangeMarkByName(vo
33、id);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DesplayMarkSegment(void);void positorByTotalMark(void);int choose;/*用于承受用戶(hù)的選擇*/*主函數(shù)*/int main(void)CreateHeadLink();ReadInfoFormFile();DesplayMenu();return 0;/*函數(shù)功能:從文件中讀學(xué)生信息到鏈表中*/void ReadInfoFormFile(void)FILE *fp;STUDENT *p;fp=fopen
34、(student.t*t,r);if(!fp)printf(tt數(shù)據(jù)構(gòu)造課程設(shè)計(jì) 丹白工作室ttn);printf(ttt調(diào)試:丹白工作室 ttn);printf(n);printf(ttt*學(xué)生成績(jī)管理系統(tǒng)*ttn);printf(n);return;p=Malloode();while(fscanf(fp,%s%s%s%f%f%f,p-studentNumber,p-studentName,p-className,&(p-mark1),&(p-mark2),&(p-mark3)0)InsertOneNode(p);p=Malloode();fclose(fp);/*函數(shù)功能:顯示菜單,根據(jù)
35、用戶(hù)的輸入完成相應(yīng)的功能*/void DesplayMenu(void)STUDENT *p;printf(tt-請(qǐng)選擇相應(yīng)功能-nn);printf(ttt| 0 輸入相應(yīng)學(xué)生信息 |n);printf(ttt| 1 按班級(jí)輸出學(xué)生成績(jī)單 |n);printf(ttt| 2 按查詢(xún) |n);printf(ttt| 3 增加學(xué)生 |n);printf(ttt| 4 刪除學(xué)生 |n);printf(ttt| 5 按班級(jí)修改學(xué)生成績(jī) |n);printf(ttt| 6 按學(xué)期修改學(xué)生成績(jī) |n);printf(ttt| 7 保存所有學(xué)生信息 |n);printf(ttt| 8 顯示不及格學(xué)生成績(jī)
36、|n);printf(ttt| 9 按平均成績(jī)排序并輸出績(jī) |n);printf(ttt| 10 退出 |nn);printf(tt-nn);printf(tt請(qǐng)您輸入您所選序號(hào):n);scanf(%d,&choose);/*取得用戶(hù)的選擇*/switch(choose)case 0:p=Malloode();/*先申請(qǐng)一個(gè)新結(jié)點(diǎn)*/GetInformation(p);/*要求用戶(hù)輸入信息到新結(jié)點(diǎn)中*/InsertOneNode(p);/*將新結(jié)點(diǎn)加到鏈表中*/break;case 1:OutputInformation();/*顯示所有學(xué)生的信息*/break;case 2:DesplayI
37、nfoBystudentName();break;case 3:p=Malloode();/*先申請(qǐng)一個(gè)新結(jié)點(diǎn)*/GetInformation(p);/*要求用戶(hù)輸入信息到新結(jié)點(diǎn)中*/InsertOneNode(p);/*將新結(jié)點(diǎn)加到鏈表中*/break;case 4:DeleteNodeBystudentNumber();/*根據(jù)用戶(hù)輸入的*刪除該學(xué)生*/break;case 5:ChangeMarkByName();/*根據(jù)用戶(hù)輸入的修改學(xué)生成績(jī)*/break;case 6:ChangeMarkByNumber();/*根據(jù)用戶(hù)輸入的*修改學(xué)生成績(jī)*/break;case 7:SaveLi
38、nkToFile();/*保存數(shù)據(jù)*/break;case 8:DesplayMarkSegment();/*顯示不及格的學(xué)生成績(jī)*/break;case 9:positorByTotalMark();/*按平均成績(jī)排序*/break;case 10:SaveLinkToFile();/*保存數(shù)據(jù)后再退出*/free(headLink);break;default:break;DesplayMenu();/*遞歸調(diào)用*/*函數(shù)功能:建立鏈表表頭*/void CreateHeadLink(void)STUDENT *p;p=(STUDENT*)malloc(sizeof(STUDENT);hea
39、dLink=p;p-ne*t=NULL;/*函數(shù)功能:申請(qǐng)一個(gè)新結(jié)點(diǎn),并將其初始化*/STUDENT *Malloode(void)STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(STUDENT);if(p=NULL)return NULL;for(i=0;istudentNumberi=0;for(i=0;istudentNamei=0;for(i=0;iclassNamei=0;p-mark1=0.0;p-mark2=0.0;p-mark3=0.0;p-ne*t=NULL;return p;/*函數(shù)功能:取得用戶(hù)輸入的學(xué)生信息*/void GetInf
40、ormation(STUDENT *t)printf(請(qǐng)輸入學(xué)生*:n);scanf(%s,t-studentNumber);printf(請(qǐng)輸入學(xué)生:n);scanf(%s,t-studentName);printf(請(qǐng)輸入該生所在班級(jí):n);scanf(%s,t-className);printf(請(qǐng)輸入第1門(mén)成績(jī):n);scanf(%f,&(t-mark1);printf(請(qǐng)輸入第2門(mén)成績(jī):n);scanf(%f,&(t-mark2);printf(請(qǐng)輸入第3門(mén)成績(jī):n);scanf(%f,&(t-mark3);/*函數(shù)功能:在鏈表的結(jié)尾處增加一個(gè)結(jié)點(diǎn)*/void InsertOneNo
41、de(STUDENT *t)STUDENT *p;p=headLink;while(p-ne*t)p=p-ne*t;p-ne*t=t;/*函數(shù)功能:根據(jù)用戶(hù)輸入的學(xué)生顯示該學(xué)生的信息*/void DesplayInfoBystudentName(void)STUDENT *p;char studentName20;char flag=0;p=headLink-ne*t;printf(請(qǐng)輸入學(xué)生:n);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf(*tt班級(jí)t成績(jī)1t成績(jī)1t成績(jī)3t總成績(jī)t
42、平均成績(jī)nn);DesplayOneNode(p);flag=1;break;p=p-ne*t;if(!flag)printf(對(duì)不起,不存在為 %s 的學(xué)生n,studentName);/*函數(shù)功能:輸出一個(gè)結(jié)點(diǎn)的信息*/void DesplayOneNode(STUDENT *t)printf(%st,t-studentNumber);printf(%st,t-studentName);printf(%st,t-className);printf(%.2ft,t-mark1);printf(%.2ft,t-mark2);printf(%.2ft,t-mark3);printf(%.2ft,
43、t-mark1+t-mark2+t-mark3);printf(%.2ftn,(t-mark1+t-mark2+t-mark3)/3);/*函數(shù)功能:根據(jù)用戶(hù)輸入的*刪除該學(xué)生*/void DeleteNodeBystudentNumber(void)char studentNumber10;STUDENT *p,*q;char flag=0;printf(請(qǐng)輸入要?jiǎng)h除的學(xué)生*:);scanf(%s,studentNumber);p=headLink;q=headLink-ne*t;while(q) if(strcmp(q-studentNumber,studentNumber)=0) p-n
44、e*t=q-ne*t; free(q); flag=1; break; p=p-ne*t; q=q-ne*t; if(!flag)printf(不存在該*的學(xué)生n);return;printf(成功刪除n);/*函數(shù)功能:顯示所有學(xué)生的信息*/void OutputInformation(void)STUDENT *p;p=headLink-ne*t;if(p=NULL)printf(現(xiàn)在沒(méi)有學(xué)生信息,請(qǐng)先輸入學(xué)生信息nn);return;printf(*tt班級(jí)t成績(jī)1t成績(jī)1t成績(jī)3t總成績(jī)t平均成績(jī)nn);while(p)DesplayOneNode(p);p=p-ne*t;/*函數(shù)功能
45、:根據(jù)輸入的班級(jí)修改成績(jī)*/void ChangeMarkByName(void)STUDENT *p;int a;char studentName20;char flag=0;float mark1,mark2,mark3;p=headLink-ne*t;printf(請(qǐng)輸入學(xué)生班級(jí):n);scanf(%d,&a);printf(請(qǐng)輸入學(xué)生:n);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf(請(qǐng)輸入新的第1門(mén)成績(jī):n);scanf(%f,&mark1);printf(請(qǐng)輸入新的第2門(mén)成績(jī)
46、:n);scanf(%f,&mark2);printf(請(qǐng)輸入新的第3門(mén)成績(jī):n);scanf(%f,&mark3);p-mark1=mark1;p-mark2=mark2;p-mark3=mark3;flag=1;printf(修改成功n);break;p=p-ne*t;if(!flag)printf(對(duì)不起,不存在班級(jí)為 %s 的學(xué)生n,studentName);/*函數(shù)功能:根據(jù)輸入的學(xué)期修改成績(jī)*/void ChangeMarkByNumber(void)STUDENT *p;int b;char studentNumber20;char flag=0;float mark1,mark
47、2,mark3;p=headLink-ne*t;printf(請(qǐng)輸入學(xué)生所在學(xué)期:n);scanf(%d,&b);printf(請(qǐng)輸入學(xué)生*:n);scanf(%s,studentNumber);while(p)if(strcmp(p-studentNumber,studentNumber)=0)printf(請(qǐng)輸入新的第1門(mén)成績(jī):n);scanf(%f,&mark1);printf(請(qǐng)輸入新的第2門(mén)成績(jī):n);scanf(%f,&mark2);printf(請(qǐng)輸入新的第3門(mén)成績(jī):n);scanf(%f,&mark3);p-mark1=mark1;p-mark2=mark2;p-mark3=mark3;flag=1;printf(修改成功n);b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度大型公共設(shè)施建設(shè)承攬施工合同范本
- 2025年度農(nóng)業(yè)科技研發(fā)合同擔(dān)保付款協(xié)議書(shū)
- 2025年度大數(shù)據(jù)分析服務(wù)股權(quán)收益權(quán)轉(zhuǎn)讓合同
- 2025年度建筑用木材加工與采購(gòu)合同
- 2025年度國(guó)際醫(yī)療旅游服務(wù)合同
- 2025年度市政排水及污水處理設(shè)施施工合同
- 2025年度噴灌系統(tǒng)設(shè)備融資租賃合同
- 2025年度澆樓板施工節(jié)能減排方案設(shè)計(jì)合同
- 2025年度養(yǎng)老服務(wù)業(yè)貸款合同參考范本
- 2025年度教育機(jī)構(gòu)品牌形象設(shè)計(jì)與推廣合同
- 2025年全國(guó)科技活動(dòng)周科普知識(shí)競(jìng)賽試題庫(kù)及答案
- 工廠生產(chǎn)區(qū)清潔流程及安全規(guī)范
- 化學(xué)丨百師聯(lián)盟2025屆高三1月一輪復(fù)習(xí)聯(lián)考(五)化學(xué)試卷及答案
- 2024年全國(guó)職業(yè)院校技能大賽中職(酒店服務(wù)賽項(xiàng))備賽試題庫(kù)(500題)
- 工程建設(shè)項(xiàng)目培訓(xùn)
- 高速公路巡邏車(chē)司機(jī)勞動(dòng)合同
- 2025中國(guó)大唐集團(tuán)內(nèi)蒙古分公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 充血性心力衰竭課件
- 2025年日歷(日程安排-可直接打印)
- 《VAVE價(jià)值工程》課件
- 分享二手房中介公司的薪酬獎(jiǎng)勵(lì)制度
評(píng)論
0/150
提交評(píng)論