
学生成绩信息标准管理系统.doc
《学生成绩信息标准管理系统.doc》由会员分享,可在线阅读,更多相关《学生成绩信息标准管理系统.doc(33页珍藏版)》请在咨信网上搜索。
1 问题描述 学生成绩管理系统 学生成绩管理系统 学生信息涉及学期、学号、班级、姓名,和语文、数学、英语、计算机四门课成绩。并按班级、学期查询学生成绩,并能录入、修改,求学生平均成绩和总成绩,输出不及格科目,按班级输出成绩单,按班级对学生成绩进行排序。 2 系统分析 2.1 问题定义 学生成绩管理系统设计 学生成绩信息涉及:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。 重要功能: (1) 能按学期、按班级完毕对学生成绩录入、修改 (2) 能按班级记录学生成绩,求学生总分及平均分,设计并输出记录报表 (3) 能查询学生成绩,不及格科目及学生名单 (4) 能按班级输出学生成绩单 (5) 能按班级,按课程,对学生成绩进行排序。 规定:使用二进制文献方式存储数据,系统以菜单方式工作 2.2开发工具 VC++6.0 2.3数据构造 typedef struct studentMark { int term; int classes; char name[10]; int number; char sex[7]; float chinese; float math; float english; float computer; struct studentMark *next; } MARK; 这是定义一种构造体,重要涉及学期,班级,姓名,学号,性别,语文成绩,数学成绩,英语成绩,计算机成绩,以及涉及一种构造体指针。此外还用了typedef这个核心字。因而,在程序背面也可以用MARK来定义构造体变量或构造体指针变量。 int term; 定义学期,学期只能是第一学期或者第二学期。 例如int 1;则表达第一学期。 int classes; 定义班级,班级只能是一班或者二班。 例如 int 2;则是表达定义为二班。 char name[10]; 定义姓名,在数组中存储字符串。 例如 char name[]=“yang”;则该学生姓名为yang int number; 定义学号,例如int 1;则该学生学号为1号。 char sex[7]; 定义姓别,其性别最大长度为7. 例如 char sex[]=“man”;阐明该学生为男生。同样可以这样定义女生。 float chinese; 定义语文成绩。 float math; 定义数学成绩。 float english; 定义英语成绩。 float computer; 定义计算机成绩。 struct studentMark *next; 定义一种构造体指针。 int main(); 主函数,程序入口。 void m(MARK *head); 主菜单函数原型,在函数m(head)中重要有选取创立学生成绩信息,查询学生成绩信息,修改学生成绩信息,记录学生成绩信息,输出学生成绩信息,存储学生成绩信息于文献,以及退出体统等选项可供顾客选取。 MARK *creat(void ); 创立函数函数原型,在函数creat()中顾客可以输入初始学生信息:其中涉及学生学期、班级、姓名、学号和性别以及学生语文、数学、英语和计算机等有关信息。 void searchMark(MARK *head); 查询菜单函数原型,在函数searchMark(head)中顾客可以自由选取是查询某一种学生成绩还是查询不及格学生成绩。而这通过调用函数searchMarkStusentone(head)和函数searchMarkFail(head)完毕操作。 void searchMarkStusentone(MARK *head); 查询某个学生成绩函数原型,在函数searchMarkStusentone(head)中顾客可以按学号或班级或者是按学期来查找某个学生成绩。通过函数searchnumber(head)和函数 searchclasses(head)以及函数searchterm(head)完毕操作。 void searchnumber(MARK *head) 按学号查找学生函数原型,; void searchclasses(MARK *head); 按班级查找学生函数原型, void searchterm(MARK *head); 按学期查找学生函数原型, void searchMarkFail(MARK *head); 查询没有及格学生函数原型,通过这个函数可以查找学生不及格科目及学生名单。 MARK *changeMark(MARK *head); 修改学生成绩信息函数原型,可以修改学生学期、班级、姓名、学号和性别以及学生语文、数学、英语和计算机等有关信息。 void conuntMark(MARK *head); 记录学生成绩函数原型,在函数conuntMark(head)中顾客可以记录学生总成绩以及平均成绩,通过调用函数totalMark(head)和函数aveMark(head)完毕操作。 void totalMark(MARK *head); 记录学生总成绩函数原型, void aveMark(MARK *head); 记录学生平均成绩函数原型, void printClassMark(MARK *head); 输出学生成绩信息函数原型,通过此函数可以输出学生学期、班级、姓名、学号和性别以及学生语文、数学、英语和计算机等有关信息到屏幕上。 void saveFileMark(MARK *head); 存储学生成绩信息于文献函数原型,通过此函数可以输出学生学期、班级、姓名、学号和性别以及学生语文、数学、英语和计算机等有关信息与文献中。 2.4算法描述 (1)创立主菜单 (2)实现学生成绩信息录入 (3)实现学生成绩信息查询 (4)实现学生成绩信息修改 (一)修改某个学生成绩 (a)按学期查询学生成绩 (b)按班级查询学生成绩 (c)按学号查询学生成绩 (二)查询不及格科目和学生名单 (5)实现学生成绩记录 (a)按班级记录学生总分。 (b)按班级记录学生平均分。 (6)实现学生成绩信息输出 (7)保存学生成绩信息于文献 (8)流程图如下: 2.5程序调试状况 (1)源程序如下: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #define MAR (struct studentMark *)malloc(sizeof(struct studentMark)) typedef struct studentMark { int term; int classes; char name[10]; int number; char sex[7]; float chinese; float math; float english; float computer; struct studentMark *next; } MARK; void m(MARK *head); MARK *creat(void ); void searchMark(MARK *head); void searchMarkStusentone(MARK *head); void searchnumber(MARK *head); void searchclasses(MARK *head); void searchterm(MARK *head); void searchMarkFail(MARK *head); MARK *changeMark(MARK *head); void conuntMark(MARK *head); void totalMark(MARK *head); void aveMark(MARK *head); void printClassMark(MARK *head); void saveFileMark(MARK *head); int main(void) { MARK *head=NULL; printf(" **********************************************\n"); printf(" ## 欢迎进入学生成绩信息管理系统##\n"); printf(" **********************************************\n"); printf("\n"); head=creat(); m(head); return(0); } void m(MARK *head ) { int choose; while(1) { printf("************************************\n"); printf(" 学生成绩信息管理\n"); printf("************************************\n"); printf(" 1创立成绩信息\n"); printf(" 2查询成绩信息\n"); printf(" 3修改成绩信息\n"); printf(" 4记录成绩信息\n"); printf(" 5按班级输出学生信息\n"); printf(" 6保存成绩信息于文献\n"); printf(" 7退出系统\n"); printf("************************************\n"); fflush(stdin); printf("请选取:"); scanf("%d",&choose); if(1==choose) head=creat(); else if(2==choose) searchMark(head); else if(3==choose) head=changeMark(head); else if(4==choose) conuntMark(head); else if(5==choose) printClassMark(head); else if(6==choose) saveFileMark(head); else printf("退出系统"); break; } } //创立一种学生成绩信息系统 MARK *creat() { MARK *head=NULL,*p1=NULL,*p2=NULL; char ch; fflush(stdin); printf("请问与否输入信息?(y 或n)\n"); scanf("%c",&ch); head=p1=p2=MAR; while(p1!=NULL && ch=='y') { p1=MAR; printf("请输入要录入学生信息学期(学期只能为 1 或 2 ):"); fflush(stdin); scanf("%d",&p1->term); while(p1->term!=1 && p1->term!=2) { getchar(); printf("输入错误!请重新输入:"); scanf("%d",&p1->term); } printf("请输入要录入学生成绩信息班级:"); fflush(stdin); scanf("%d",&p1->classes); while(p1->classes!=1 && p1->classes!=2) { getchar(); printf("输入错误!请重新输入:"); scanf("%d",&p1->classes); } printf("请输入该班学生信息!\n"); printf("请输入学生学号:"); fflush(stdin); scanf("%d",&p1->number); printf("请输入学生姓名:"); fflush(stdin); scanf("%s",p1->name); printf("请输入学生姓别:"); fflush(stdin); scanf("%s",p1->sex); fflush(stdin); printf("请输入语文成绩(0-100):"); scanf("%f",&p1->chinese); fflush(stdin); printf("请输入数学成绩(0-100):"); scanf("%f",&p1->math); fflush(stdin); printf("请输入英语成绩(0-100):"); scanf("%f",&p1->english); fflush(stdin); printf("请输入计算机成绩(0-100):"); scanf("%f",&p1->computer); p2->next=p1; p2=p1; printf("与否还要输入信息(y/n):"); fflush(stdin); scanf("%c",&ch); } p2->next = NULL; //链表结尾 return(head); } //查找学生成绩信息 void searchMark(MARK *head) { int choose1; while(1) { printf("************************************\n"); printf(" 查询学生成绩信息\n"); printf(" 1查询某个学生成绩\n"); printf(" 2查询不及格学生成绩\n"); printf(" 3返回主菜单\n"); printf("*************************************\n"); fflush(stdin); printf("请选取:"); scanf("%d",&choose1); if(1==choose1) searchMarkStusentone(head); else if(2==choose1) searchMarkFail(head); else printf("返回主菜单"); break; } } //修改学生成绩信息(按学期或按学号修改) MARK *changeMark(MARK *head) { int choose2; MARK *p=head->next; char name[10]; char ch; int number; printf("************************************\n"); printf(" 你所需要修改\n"); printf(" 1修改学号\n"); printf(" 2修改姓名\n"); printf(" 3修改班级\n"); printf(" 4修改性别\n"); printf(" 5修改成绩\n"); printf("*************************************\n"); fflush(stdin); printf("请选取:"); scanf("%d",&choose2); while(1) { while(p!=NULL) { if(1==choose2) { printf("你要修改信息是:学号!\n"); //按姓名修改学号 fflush(stdin); printf("请输入你要修改学生姓名:"); scanf("%s",name); if (strcmp(name,p->name)==0) { fflush(stdin); printf("请输入该学生新学号:"); //输入新学号 scanf("%d",&p->number); printf("修改学生学号后:\n"); printf("%s学生新学号是%d\n",p->name,p->number); break; } } else if(2==choose2) { printf("你要修改信息是:姓名!\n"); fflush(stdin); printf("请输入你要修改学生学号:"); scanf("%d",&number); if(number==p->number) //输入学号,判断条件 { fflush(stdin); printf("请输入该学生姓名:"); scanf("%s",p->name); //输入要做修改学生姓名 printf("修改学生姓名后:\n"); printf("%s是该学生新姓名\n",p->name); break; } } else if(3==choose2) { printf("你要修改信息是:班级!\n"); //按学号修改班级 fflush(stdin); printf("请输入你要修改学生学号:"); scanf("%d",&number); if(number==p->number) { fflush(stdin); printf("请输入该学生班级:"); //输入要做修改班级 scanf("%d",&p->classes); printf("修改班级后\n"); printf("该学生新班级为:%d\n",p->classes); break; } } else if(4==choose2) { printf("你要修改信息是:性别!\n"); //按学号修改性别 fflush(stdin); printf("请输入你要修改学生学号:"); scanf("%d",&number); if(number==p->number) { fflush(stdin); printf("请输入该学生性别:"); //输入要做修改性别 scanf("%s",p->sex); printf("修改该学生性别后\n"); printf("该学生新性别为:%s\n",p->sex); break; } } else if(5==choose2) { printf("你要修改信息是:成绩!\n"); //按学号修改成绩 fflush(stdin); printf("请输入你要修改学生学号:"); scanf("%d",&number); if(number==p->number) //输入学号 { fflush(stdin); printf("请输入该学生新语文成绩:\n"); scanf("%f",&p->chinese); fflush(stdin); printf("请输入该学生新数学成绩:\n"); scanf("%f",&p->math); //输入新四门成绩 fflush(stdin); printf("请输入该学生新英语成绩:\n"); scanf("%f",&p->english); fflush(stdin); printf("请输入该学生新计算机成绩:\n"); scanf("%f",&p->computer); printf("修改后成绩\n"); printf("该学生新语文成绩:%f\n",p->chinese); printf("该学生新数学成绩:%f\n",p->math); printf("请该学生新英语成绩:%f\n",p->english); printf("该学生新计算机成绩:%f\n",p->computer); break; } } else p=p->next; } printf("与否还要继续修改信息(y/n):\n"); //判断,与否还要修改信息,跳出循环 fflush(stdin); if((ch=getchar())=='n') break; } return(head); } //记录学生成绩总分和平均分 void conuntMark(MARK *head) { MARK *p=head->next; int classes; char ch1,ch2; fflush(stdin); printf("请输入要记录成绩班级(1或2):"); scanf("%d",&classes); printf("正在记录该班级学生总分,请稍侯!!!\n"); while(1) { totalMark(p); printf("与否还要继续记录其她学生成绩(y/n):"); fflush(stdin); if((ch1=getchar())=='n') break; } printf("与否记录该班级学生平均分?(y/n):"); fflush(stdin); if((ch2=getchar()!='n')) { printf("正在记录该班学生平均分进行记录,请稍侯!!!\n"); aveMark(p); //调用平均分函数 printf("\n"); } } //按班级输出学生信息 void printClassMark(MARK *head) { MARK *p; p=head->next; printf("***********************************************************************\n"); printf("学期\t学号\t班别\t姓名\t性别\t语文\t\t数学\t\t英语\t\t计算机\t\t\n"); printf("***********************************************************************\n"); while(p!=NULL) { printf("%d\t",p->term); printf("%d\t",p->number); printf("%d\t",p->classes); printf("%s\t",p->name); printf("%s\t",p->sex); printf("%f\t",p->chinese); printf("%1f\t",p->math); printf("%1f\t",p->english); printf("%1f\t",p->computer); p=p->next; printf("\n"); printf("**************************************************************************\n"); } } //保存学生成绩信息于文献 void saveFileMark(MARK *head) { char *fileName; FILE *stu; MARK *p=head->next; if(p==NULL) { printf("没有任何信息,请先存入信息!\n"); printf("请按任意键返回主菜单!\n"); getchar(); } else { fileName=(char *)malloc(sizeof(char)); fflush(stdin); printf("请输入你要保存文献名!\n"); gets(fileName); fileName=strcat(fileName,".txt"); stu=fopen(fileName,"wb+"); while(p!=NULL) { fprintf(stu,"%d %d",p->term ,p->classes ); fprintf(stu,"%s %d",p->name,p->number); fprintf(stu,"%s",p->sex ); fprintf(stu,"%f %f %f %f",p->chinese ,p->math ,p->english ,p->computer ); p=p->next ; } fclose(stu); printf("已经保存文献在%s中!\n",fileName); printf("请按任意键返回主菜单!\n"); getchar(); } } //查找某个学生成绩 void searchMarkStusentone(MARK *head) { char ch1,ch2; MARK *p=head->next; if(p==NULL) { printf("没有任何信息,请先存入信息!\n"); printf("请按任意键返回主菜单!\n"); getchar(); } else while(1) { printf(" 你要选取何种方式查询成绩!\n"); printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf(" a、学号: \n"); printf(" b、班级: \n"); printf(" c、学期: \n"); printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); fflush(stdin); scanf("%c",&ch1); switch(ch1) { case 'a':searchnumber(head);break; case 'b':searchclasses(head);break; case 'c':searchterm(head);break; } printf("\n"); printf("与否还要继续查询学生信息(y/n):"); fflush(stdin); if((ch2=getchar())=='n') break; } } //查询不及格学生 void searchMarkFail(MARK *head) { MARK *p=head->next ; char name[10]; int number,flag=0; int choose5; do { fflush(stdin); printf("请输入! (1按姓名查询 2按学号查询 3 返回)\n"); scanf("%d",&choose5); switch(choose5) { case 1 : fflush(stdin); printf("请输入要查找名字\n"); gets(name); while(p!=NULL) { if(!strcmp(name,p->name)) { printf("姓名 学号\n"); printf("%s %d\n",p->name ,p->number ); if(p->chinese <60) printf("%s 语文成绩不及格\n",p->name ); if(p->math <60) printf("%s 数学成绩不及格\n",p->name );- 配套讲稿:
如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。
关于本文