資源描述:
《學(xué)生成績管理系統(tǒng).docx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、1問題描述學(xué)生成績管理系統(tǒng)學(xué)生成績管理系統(tǒng)學(xué)生信息包括學(xué)期、學(xué)號、班級、姓名,和語文、數(shù)學(xué)、英語、計算機四門課成績。并按班級、學(xué)期查詢學(xué)生成績,并能錄入、修改,求學(xué)生平均成績和總成績,輸出不及格科目,按班級輸出成績單,按班級對學(xué)生成績進行排序。2系統(tǒng)分析2.1題目要求學(xué)生成績管理系統(tǒng)設(shè)計學(xué)生成績信息包括:學(xué)期,學(xué)號,班別,姓名,四門課程成績(語文、數(shù)學(xué)、英語和計算機)。主要功能:(1)能按學(xué)期、按班級完成對學(xué)生成績的錄入、修改(2)能按班級統(tǒng)計學(xué)生的成績,求學(xué)生的總分及平均分,設(shè)計并輸出統(tǒng)計報表(3)能查詢學(xué)生成績,不及格科目及
2、學(xué)生名單(4)能按班級輸出學(xué)生的成績單(5)能按班級,按課程,對學(xué)生成績進行排序。要求:使用二進制文件方式存儲數(shù)據(jù),系統(tǒng)以菜單方式工作2.2算法設(shè)計(1)創(chuàng)建主菜單(2)實現(xiàn)學(xué)生成績信息錄入(3)實現(xiàn)學(xué)生成績信息修改(4)實現(xiàn)學(xué)生成績信息查詢(a)按學(xué)期、班級查詢學(xué)生的成績(b)按學(xué)號查詢學(xué)生的成績(c)查詢不及格的科目和學(xué)生名單(5)實現(xiàn)學(xué)生成績成績統(tǒng)計(a)按班級統(tǒng)計學(xué)生的總分、平均分(b)按班級、課程對學(xué)生的總分進行排序(6)實現(xiàn)學(xué)生成績信息瀏覽2.3流程圖2.4關(guān)鍵問題難點:指針p、函數(shù)。解決:head=NULL無條件循
3、環(huán)指針p指向新開辟的單元指針p是否為空是否輸入學(xué)號p->num輸出p->num是否為@內(nèi)存是否溢出輸入姓名p->name停止for(i=0;i<3;i++)輸入輸入成績返回p->sum=s;菜單p->average=(float)s/3;主函數(shù):intmain()新建函數(shù):infor*init()輸入函數(shù):infor*creat()顯示函數(shù):structinfor*view(structinfor*head)刪除函數(shù):infor*delete(infor*head)按名字尋找函數(shù):voidlookup(infor*head)保存
4、函數(shù):voidsave(infor*head)按總分排序函數(shù):infor*sort(infor*head)計算總分和均分函數(shù):voidzong(structinfor*head)修改函:voidchange(structinfor*head)按學(xué)號排序函數(shù):infor*index(infor*h)3系統(tǒng)實現(xiàn)3.1題目一(源代碼)#include#include#include#defineN4structinfor{intterm;//定義學(xué)期(1或2)intno;//學(xué)
5、號intclas;//定義班級(1或2班)charname[9];//姓名floatchinese;//定義四門成績floatenglish;floatmath;floatcomputer;structinfor*link;};intn=0;//******************************************************************************//函數(shù)功能:創(chuàng)建鏈表,錄入學(xué)生的相關(guān)信息,此函數(shù)返回一個指向鏈表頭的指針//***************************
6、***************************************************structinfor*creat(){structinfor*head=NULL,*p=NULL,*q=NULL;charc;fflush(stdin);printf("是否要輸入信息(y/n):");scanf("%c",&c);p=q=(structinfor*)malloc(sizeof(structinfor));q=head;while(p!=NULL&&c=='y'){n++;p=(structinfor*)mal
7、loc(sizeof(structinfor));printf("請輸入要錄入學(xué)生信息的學(xué)期:");fflush(stdin);scanf("%d",&p->term);//學(xué)期只能為1或2while(p->term!=1&&p->term!=2){getchar();printf("輸入錯誤!請重新輸入:");//若學(xué)期不為1或2,則輸入有誤scanf("%d",&p->term);}printf("請輸入要錄入學(xué)生成績信息的班級:");fflush(stdin);//班級只能為1或2scanf("%d",&p->clas);
8、while(p->clas!=1&&p->clas!=2){getchar();printf("輸入錯誤!請重新輸入:");scanf("%d",&p->clas);}printf("請輸入該班的學(xué)生信息!");//輸入學(xué)生信息(包括學(xué)號、四門成績)prin