《学生成绩管理系统讲解学习》由会员分享,可在线阅读,更多相关《学生成绩管理系统讲解学习(29页珍藏版)》请在金锄头文库上搜索。
1、学习一好资料1问题描述学生成绩管理系统学生成绩管理系统学生信息包拾学期、学号、班级、姓名,和语文、数学、英语、计算机四门课成绩。并 按班级、学期查询学生成绩,并能录入、修改,求学生平均成绩和总成绩,输出不及格科目, 按班级输出成绩单,按班级对学生成绩进行排序。2系统分析2.1题目要求学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、 英语和计算机)。主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计 报表(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)能
2、按班级,按课程,对学生成绩进行排序。要求:使用二进制文件方式存储数据,系统以菜单方式工作2. 2算法设计(1)创建主菜单(2)实现学生成绩信息录入(3)实现学生成绩信息修改(4)实现学生成绩信息查询(a)按学期、班级查询学生的成绩(b)按学号查询学生的成绩(c)查询不及格的科目和学生名单(5)实现学生成绩成绩统计(a)按班级统计学生的总分、平均分(b)按班级、课程对学生的总分进行排序(6)实现学生成绩信息浏览学习一好资料2. 3流程图2. 4关键问题难点:指针p、函数。解决:head=NULL无条件循环指针p指向新开辟的单元指针p是否为空是否输入学号p-num输出p-num是否为内存是否溢出输
3、入姓名p-name学习好资料 停止 for(i=0;isum=s:菜单 p-average= (float) s/3;主 函 数:int main()新建函数:infor*init()输入函数:infor *creat()显示函数:stmct mfor *view(sti-uct infor *head)删除函数:infor *delete(infor *head)按名字寻找函数:void lookup(infor *head) 保存函数:void save(infor *head) 按总分排序函数:infor *sort(infor *head)计算总分和均分函数:void zong(str
4、uct infor *head) 修改函:void chaiige(stHict infor *head)按学号排序函数:infor *index(infor *h)3系统实现3. 1题目一(源代码)# iiiclude# mclude#include define N 4struct uifbrint term;/定义学期(1或2)int no;/学号int clas;/定义班级(1或2班)char name9;/姓名float Chinese;/定义四门成绩float english;float math;float computer;学习一好资料stinct uifor *lnik;;i
5、iit n=0 ;*/函数功能:创建链表,录入学生的相关信息,此函数返回一个指向链表头的指针*stmct uifor *creat()stmct iiifbr *head=NULL.*p=NULL.*q=NULL;char c;fflush(stdm);printf (“是否要输入信息(y/n):);scanfV%c”.&c);p=q=(struet infor *)malloc(siz己of(struet infor); q=head;while(p!=NULL&c=V)n+;p=(struct infer *)inalloc(sizeof(stnict infor);printf (“请输
6、入要录入学生信息的学期:”);fflush(stdin);学期若学期scanf&p-term);只能为1或2while(p-term!=l & p-tenn?=2)getcharQ;printf (“输入错误!请重新输入:”);不为1或2,则输入有误scanfC%d=&pKmi);printf(/z请输入要录入学生成绩信息的班级J;学习一好资料fflush(stdin);能为1或2scanf(H%d,&p-clas);while(p-clas!=l & pclas !=2)getchaiQ;printf (”输入错误!请重新输入:”);scanf(”d”&pclas);printfC请输入该班
7、的学生信息!n”); 信息(包括学号、四门成绩)printfC请输入学生学号:“);fflush(stdin);scanfp%d:&p-no);printf(请输入学生姓名:”);fflush(stdin);scanfp-name);名printfC*请输入语文成绩(0-100):); scanf(n%f&p-chuiese);printfC请输入数学成绩(0-100):”); scanfCf&pniatli);printfC*请输入英语成绩(0-100):);scanf(,%f&p-english);printfC请输入计算机成绩(0-100):”); scanff%F; &p-comput
8、er);if (n=l)head=p;elseq-luik=p;q=p;printfC是否还要输入信息(y/11):);fflush(stdm);scanfp%c”,&c);班级只输入学生/输入学生姓输入四门成绩创建新结点学习好资料q-link=NULL;return(head);链表结尾/链表返回头指*/函数功能:实现对学生信息的修改*void change(stiuct uifor *head)struct uifor *p=head;chai ch.m;char name 9 ;/定义一个数组,存储学生的姓名int num;if (p=NULL) printf (”出错!请先输入学生信息
9、! ”);wh订e(l)/设置循坏控制printfCttt请选择要修改的信息!tn”);prmtf ( tttn );/输出要修改的信息printf(ttta.学号:E);printf(tttb、姓名:n”);printf(tttc、班级:n”);printf(tttd、成绩:E);prmtf(tttfflush(stdin);/清盘scanfp%ct&ch);if(ch=,a,)printf (你要修改的信息是:学号恤”);姓名修改学号按输入找不到信息学习好资料printfC请输入你要修改的学生姓名:”); scanf(n%s,name);if (strcmp(name,p-naine)=O
10、)printfL请输入该学生新的学号:“);新学号scanf(”cT;&pno);else printfC无法查找到该学生!n“);else if(ch=b)学号修改该班级学生的信息printfC你要修改的信息是:姓名!n”); printfC请输入你要修改的学生的学号:“); scaiif(%d,&num);if(num二二p-no)件printfC请输入该学生的姓名:”);scanfpname);生姓名else printfC无法查找到该学生!n”);else if(ch=c)printfC你要修改的信息是:班级!n”);改班级按/输入学号,判断条输入要做修改的学找不到信息按学号修prin
11、tfC请输入你要修改的学生的学号J; scaiif(M%d,&num);if(num=p-no)学习一好资料printf(,z请输入该学生的班级门;的班级scanfC%d”,pclas);else printf (”无法查找到该学生!n”);else if(ch=,d,)printfC你要修改的信息是:成绩!S);修改成绩printfC请输入你要修改的学生的学号:”);scaiif(%d,&num);if (num=p-no)printf (“请输入该学生新的语文成绩:“);scaiif(M%fp-cluiiese);printf (“请输入该学生新的数学成绩:“);scanf (“f, pmath);门成绩printf (“请输入该学生新的英语成绩:“);scaiif(H%fp-english);printf (“请输入该学生新的计算机成绩:“);scanf(M%fp-computer);else printf(无法查找该学生的信息!n);else printfC出错!nj;p=p-liiik;printf (,z是否还要继续修改信息(y/n):”);还要修改信息,跳出循坏fflush(stdm);if(m=getchai()=,n,)break;输入要做修改找不到信息/按学号/输入