学生成绩综合管理系统.docx
《学生成绩综合管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩综合管理系统.docx(29页珍藏版)》请在咨信网上搜索。
1 问题描述 学生成绩管理系统 学生成绩管理系统 学生信息包含学期、学号、班级、姓名,和语文、数学、英语、计算机四门课成绩。并按班级、学期查询学生成绩,并能录入、修改,求学生平均成绩和总成绩,输出不及格科目,按班级输出成绩单,按班级对学生成绩进行排序。 2 系统分析 2.1 题目要求 学生成绩管理系统设计 学生成绩信息包含:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。 关键功效: (1) 能按学期、按班级完成对学生成绩录入、修改 (2) 能按班级统计学生成绩,求学生总分及平均分,设计并输出统计报表 (3) 能查询学生成绩,不及格科目及学生名单 (4) 能按班级输出学生成绩单 (5) 能按班级,按课程,对学生成绩进行排序。 要求:使用二进制文件方法存放数据,系统以菜单方法工作 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是否为@ 内存 是 否 溢出 输入姓名p->name 停止 for(i=0;i<3;i++) 输入 输入成绩 返回 p->sum=s; 菜单 p->average=(float)s/3; 主 函 数: int main() 新建函数:infor *init() 输入函数 :infor *creat() 显示函数: struct infor *view(struct infor *head) 删除函数: infor *delete(infor *head) 按名字寻求函数: void lookup(infor *head) 保留函数: void save(infor *head) 按总分排序函数: infor *sort(infor *head) 计算总分和均分函数: void zong(struct infor *head) 修改函:void change(struct infor *head) 按学号排序函数: infor *index(infor *h) 3 系统实现 3.1 题目一 (源代码) #include<stdio.h> #include<stdlib.h> #include <string.h> #define N 4 struct infor { int term; // 定义学期(1或2) int no; //学号 int clas; //定义班级(1或2班) char name[9]; //姓名 float chinese; //定义四门成绩 float english; float math; float computer; struct infor *link; }; int n=0 ; //****************************************************************************** //函数功效:创建链表,录入学生相关信息,此函数返回一个指向链表头指针 //****************************************************************************** struct infor *creat() { struct infor *head=NULL,*p=NULL,*q=NULL; char c; fflush(stdin); printf("是否要输入信息(y/n):"); scanf("%c",&c); p=q=(struct infor *)malloc(sizeof(struct infor)); q=head; while(p!=NULL&&c=='y') { n++; p=(struct infor *)malloc(sizeof(struct infor)); printf("请输入要录入学生信息学期:"); fflush(stdin); scanf("%d",&p->term); //学期只能为1或2 while(p->term!=1&&p->term!=2) { getchar(); printf("输入错误!请重新输入:"); //若学期不为1或2,则输入有误 scanf("%d",&p->term); } printf("请输入要录入学生成绩信息班级:"); fflush(stdin); //班级只能为1或2 scanf("%d",&p->clas); while(p->clas!=1&&p->clas!=2) { getchar(); printf("输入错误!请重新输入:"); scanf("%d",&p->clas); } printf("请输入该班学生信息!\n"); //输入学生信息(包含学号、四门成绩) printf("请输入学生学号:"); fflush(stdin); scanf("%d",&p->no); printf("请输入学生姓名:"); fflush(stdin); scanf("%s",p->name); //输入学生姓名 printf("请输入语文成绩(0-100):"); //输入四门成绩 scanf("%f",&p->chinese); printf("请输入数学成绩(0-100):"); scanf("%f",&p->math); printf("请输入英语成绩(0-100):"); scanf("%f",&p->english); printf("请输入计算机成绩(0-100):"); scanf("%f",&p->computer); if(n==1) //创建新结点 head=p; else q->link=p; q=p; printf("是否还要输入信息(y/n):"); fflush(stdin); scanf("%c",&c); } q->link=NULL; //链表结尾 return(head); //链表返回头指针 } //****************************************************************************** //函数功效:实现对学生信息修改 //****************************************************************************** void change(struct infor *head) { struct infor *p=head; char ch,m; char name[9]; //定义一个数组,存放学生姓名 int num; if(p==NULL)printf("犯错!请先输入学生信息!"); while(1) //设置循环控制 { printf("\t\t\t请选择要修改信息!\t\n"); printf("\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); // 输出要修改信息 printf("\t\t\t a、学号: \n"); printf("\t\t\t b、姓名: \n"); printf("\t\t\t c、班级: \n"); printf("\t\t\t d、成绩: \n"); printf("\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); fflush(stdin); //清盘 scanf("%c",&ch); if(ch=='a') { printf("你要修改信息是:学号!\n"); //按姓名修改学号 printf("请输入你要修改学生姓名:"); scanf("%s",name); if (strcmp(name,p->name)==0) { printf("请输入该学生新学号:"); //输入新学号 scanf("%d",&p->no); } else printf("无法查找到该学生!\n"); //找不到信息 } else if(ch=='b') //按学号修改该班级学生信息 { printf("你要修改信息是:姓名!\n"); printf("请输入你要修改学生学号:"); scanf("%d",&num); if(num==p->no) //输入学号,判定条件 { printf("请输入该学生姓名:"); scanf("%s",p->name); //输入要做修改学生姓名 } else printf("无法查找到该学生!\n"); //找不到信息 } else if(ch=='c') { printf("你要修改信息是:班级!\n"); //按学号修改班级 printf("请输入你要修改学生学号:"); scanf("%d",&num); if(num==p->no) { printf("请输入该学生班级:"); //输入要做修改班级 scanf("%d",p->clas); } else printf("无法查找到该学生!\n"); //找不到信息 } else if(ch=='d') { printf("你要修改信息是:成绩!\n"); //按学号修改成绩 printf("请输入你要修改学生学号:"); scanf("%d",&num); if(num==p->no) //输入学号 { printf("请输入该学生新语文成绩:"); scanf("%f",p->chinese); printf("请输入该学生新数学成绩:"); scanf("%f",p->math); //输入新四门成绩 printf("请输入该学生新英语成绩:"); scanf("%f",p->english); printf("请输入该学生新计算机成绩:"); scanf("%f",p->computer); } else printf("无法查找该学生信息!\n"); //找不到信息 } else printf("犯错!\n"); p=p->link; printf("是否还要继续修改信息(y/n):"); //判定,是否还要修改信息,跳出循环 fflush(stdin); if((m=getchar())=='n')break; } } //****************************************************************************** //函数功效:根据学号查询学生信息 //****************************************************************************** void checkno(struct infor *head) { //按学号查询学生成绩 struct infor *p; p=head; int num,i=0; printf("请输入你要查询学生学号:\n"); scanf("%d",&num); if(num==p->no) //输入学号,判定条件 { printf("--------------------------------------------------------------------------"); printf("\t学期\t学号\t班别\t姓名\t语文\t数学\t英语\t计算机\t\n"); printf("-------------------------------------------------------------------------\n"); printf("%d\t",p->term); printf("%d\t",p->no); printf("%d\t",p->clas); //输出学生班级 printf("%s\t",p->name); printf("%1f\t",p->chinese); //输出四门成绩 printf("%1f\t",p->math); printf("%1f\t",p->english); printf("%1f\t",p->computer); i=2; } if(i==0) printf("没找到该学生信息!"); //找不到信息 } void checkclass(struct infor *head) { int banji,i=0; struct infor *p=head; while(p!=NULL) //按班级查询学生成绩 { printf("请输入你要查询成绩班级:"); scanf("%d",&banji); if(banji==p->clas) { printf("请输出%d班全部同学成绩:",banji); printf("--------------------------------------------------------------------------"); printf("\t学期\t学号\t班别\t姓名\t语文\t数学\t英语\t计算机\t\n"); printf("-------------------------------------------------------------------------\n"); printf("%d\t",p->term); //输出要查询成绩班级 printf("%d\t",p->no); //输出查询成绩学生学号 printf("%d\t",p->clas); //输出要查询成绩班级 printf("%s\t",p->name); //输出要查询成绩学生姓名 printf("%1f\t",p->chinese); printf("%1f\t",p->math); //输出四门成绩 printf("%1f\t",p->english); printf("%1f\t",p->computer); printf("\n"); i=2; } p=p->link; if(i==0) printf("没找到学生信息!"); //输犯错误,找不到信息 } } void checkterm(struct infor *head) //定义按学期查找信息函数 { int xueqi,i=0; struct infor *p=head; while(p!=NULL) //设置循环控制 { //按学期查询学生成绩 printf("请输入你要查询成绩学期:"); scanf("%d",&xueqi); if(xueqi==p->term) { printf("请输出第%d学期全部班级信息:"); printf("--------------------------------------------------------------------------"); printf("\t学期\t学号\t班别\t姓名\t语文\t数学\t英语\t计算机\t\n"); printf("-------------------------------------------------------------------------\n"); printf("%d\t",p->term); printf("%d\t",p->no); printf("%d\t",p->clas); printf("%s\t",p->name); //输出姓名 printf("%1f\t",p->chinese); printf("%1f\t",p->math); printf("%1f\t",p->english); //输出四门成绩 printf("%1f\t",p->computer); printf("\n"); i=2; } p=p->link; if(i==0) printf("没找到学生信息!"); //找不到信息 } } void norich(struct infor *head) //定义一个函数,查找不及格学生 { struct infor *p; p=head; int num,i=0; float toa; printf("请输入要查询成绩学生学号:"); scanf("%d",&num); if(num==p->no) { printf("正在查询该学生成绩,请稍侯>>>>>\n"); //查询学生成绩,输出不及格科目 while(p!=NULL) { if(p->chinese<60) { printf("该学生语文不及格!\n"); printf("\n"); i++; } if(p->math<60) //输出该学生不及格科目 { printf("该学生数学不及格!\n"); printf("\n"); i++; } if(p->english<60) { printf("该学生英语不及格!\n"); //对各门成绩进行判定 printf("\n"); printf("\n"); i++; } if(p->computer<60) { printf("该学生计算机不及格!\n"); printf("\n"); i++; } if(i>0) printf("%s同学共有%d门成绩不及格!\n学号是:%d\n",p->name,i,p->no); printf("\n"); toa=p->chinese+p->math+p->english+p->computer; if(toa<240) printf("不及格学生名单为:%s ",p->name); //输出不及格学生名单 p=p->link; } } } void search(struct infor *head) //定义一个查询学生信息函数,调用各子函数,进行查询 { char k,ch; struct infor *p=head; while(p!=NULL) //设置循环控制条件 { //输出查询方法 printf("\t\t\t 你要选择何种方法查询成绩!\n"); printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t\t\t a、学号: \n"); printf("\t\t\t b、班级: \n"); printf("\t\t\t c、学期: \n"); printf("\t\t\t d、不及格学生: \n"); printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); fflush(stdin); scanf("%c",&k); switch(k) { case 'a':checkno(head);break; //调用学号函数 case 'b':checkclass(head);break; case 'c':checkterm(head);break; case 'd':norich(head);break; } printf("\n"); printf("是否还要继续查询学生信息(y/n):"); fflush(stdin); if((ch=getchar())=='n')break; //跳出循环,返回主菜单 } } //****************************************************************************** //函数功效:对学生成绩进行统计,按班级求总分及平均分 //****************************************************************************** void zong(struct infor *head) //对该班级学生成绩求总分、平均分 { float toa=0,ave=0; int i=0; struct infor *p=head; while(p!=NULL) { toa=p->chinese+p->math+p->english+p->computer; //输出学生总分和平均分成绩 ave=toa/N; printf("第%d个学生总分为:%1f!\n",i+1,toa); printf("\n"); printf("第%d个学生平均分:%1f!\n",i+1,ave); printf("\n"); printf("已经统计了第%d个学生成绩!\n",i+1); //统计完成 printf("\n"); i++; p=p->link; //指向下一个结点 } } void paixu(struct infor *head) //对该班级学生成绩进行排序 { int i=0,j; float a[10],t; //把结点信息输入到数组,然后排序 struct infor *p=head; while(p!=NULL) { a[i]=p->chinese+p->math+p->computer+p->english; i++; p=p->link; } for(j=0;j<4;j++) //用数组排序 for(i=0;i<3-j;i++) if(a[i]<a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; i++; } for(i=0;i<4;i++) //输出排序后总分 printf("%f ",a[i]); } void deal(struct infor * head) //按学号和班级对学生成绩进行统计 { struct infor *p; p=head; int clas; char ch1,ch2; printf("请输入要统计成绩班级(1或2):"); //输入要统计成绩班级 scanf("%d",&clas); printf("正在统计该班级学生总分,请稍侯!!!\n"); while(1) //设置循环控制条件 { zong(p); //调用总分函数 printf("是否还要继续统计其它学生成绩(y/n):"); fflush(stdin); if((ch1=getchar())=='n')break; } printf("是否要对该班学生成绩进行排序(y/n):"); fflush(stdin); //清盘 if((ch2=getchar()!='n')) {printf("正在对该班学生总分进行排序,请稍侯!!!\n"); paixu(p); //调用排序函数 printf("\n");} } //****************************************************************************** //函数功效:信息浏览,查看库中全部统计 //****************************************************************************** struct infor *view(struct infor *head) { struct infor *p; p=head; printf("-------------------------------------------------------------------------\n"); printf("学期\t学号\t班别\t姓名\t语文\t数学\t英语\t计算机\t\n"); printf("-------------------------------------------------------------------------\n"); while(p!=NULL) { printf("%d\t",p->term); //查询学期 printf("%d- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 综合 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文