学生成绩信息管理系统样本_第1页
学生成绩信息管理系统样本_第2页
学生成绩信息管理系统样本_第3页
学生成绩信息管理系统样本_第4页
学生成绩信息管理系统样本_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。西安文理学院信息工程学院软件编程课程设计报告设计题目:学生成绩管理系统课程设计学生学号:专业班级:物联网工程一班学生姓名:张旺阳学生成绩:指导教师(职称):课题工作时间:-11-25至-12-9信息工程学院软件编程课程设计任务书学生姓名张旺阳学号专业班级物联网工程一班设计题目学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)能按班级,按课程,对学生成绩进行排序。指导教师:日期:11月25日成绩评定表学生姓名:张旺阳学号:专业/班级:物联网工程一班类别合计分值各项分值评分标准实际得分合计得分备注平时表现1010按时参加设计指导,无违反纪律情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。报告质量3515报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。5课题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全面的总结,得出有价值的结论或结果。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩:分指导教师:(签字)日期:年月日目录1.概述 11.1课题背景 11.2系统功能 31.3设计要求 42.概要设计 52.1系统功能模块 52.2各模块流程图 63.详细设计 83.1程序中使用的数据结构 83.2函数列表 104.设计结果与分析 125.总结与体会 15参考文献 X附录主要程序代码 X1.1课题背景随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上运行的各种软件在解决生活中的实际问题中起到重大的作用,而当前在编写应用程序时,c++以其高效及灵活性成为大多数程序设计者的首选,其次对于普通用户者,利用c++语言设计出适用的小型软件对解决生活中的繁琐问题有很大的作用。在学校或班级,教师经常会对某次考试中的所有学生的成绩进行统计和管理,由于学生数目经常繁多,因此在处理统计学生总成绩和平均成绩时工作会相对繁琐,因此针对这种情况,同时我分析了成绩管理所需要的功能,在利用C++语言及VC++6.0程序运行平台之下,设计一种小型的学生成绩管理系统。1.2系统功能录入修改求总分求平均分查询排序1.3设计要求学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)能按班级,按课程,对学生成绩进行排序。要求:使用二进制文件方式存储数据,系统以菜单方式工作第二章概要设计2.1系统功能模块(1)创立主菜单(2)实现学生成绩信息录入(3)实现学生成绩信息查询(4)实现学生成绩信息修改(一)修改某个学生的成绩(a)按学期查询学生的成绩(b)按班级查询学生的成绩 (c)按学号查询学生的成绩 (二)查询不及格的科目和学生名单(5)实现学生成绩统计(a)按班级统计学生的总分。 (b)按班级统计学生的平均分。(6)实现学生成绩信息输出(7)保存学生的成绩信息于文件2.2系统功能流程图第三章详细设计3.1主要数据结构typedefstructstudentMark{ intterm; intclasses; charname[10]; intnumber; charsex[7]; floatchinese; floatmath; floatenglish; floatcomputer;structstudentMark*next;}MARK;这是定义一个结构体,主要包括学期,班级,姓名,学号,性别,语文成绩,数学成绩,英语成绩,计算机成绩,以及包括一个结构体指针。另外还用了typedef这个关键字。因此,在程序的后面也能够用MARK来定义结构体变量或结构体指针变量。intterm;定义学期,学期只能是第一学期或者第二学期。例如int1;则表示第一学期。 intclasses;定义班级,班级只能是一班或者二班。例如int2;则是表示定义为二班。 charname[10];定义姓名,在数组中存放字符串。例如charname[]=”yang”;则该学生的姓名为yang intnumber;定义学号,例如int1;则该学生学号为1号。 charsex[7];定义姓别,其性别最大长度为7.例如charsex[]=”man”;说明该学生为男生。同样能够这样定义女生。 floatchinese;定义语文成绩。 floatmath;定义数学成绩。 floatenglish;定义英语成绩。 floatcomputer;定义计算机成绩。structstudentMark*next;定义一个结构体指针。3.1.1主函数intmain();主函数,程序的入口。voidm(MARK*head);主菜单的函数原型,在函数m(head)中主要有选择创立学生成绩信息,查询学生成绩信息,修改学生成绩信息,统计学生成绩信息,输出学生成绩信息,存储学生成绩信息于文件,以及退出体统等选项可供用户选择。MARK*creat(void);创立函数的函数原型,在函数creat()中用户能够输入初始的学生信息:其中包括学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。3.1.2查询函数voidsearchMark(MARK*head);查询菜单的函数原型,在函数searchMark(head)中用户能够自由选择是查询某一个学生的成绩还是查询不及格学生的成绩。而这经过调用函数searchMarkStusentone(head)和函数searchMarkFail(head)完成操作。voidsearchMarkStusentone(MARK*head);查询某个学生成绩的函数原型,在函数searchMarkStusentone(head)中用户能够按学号或班级或者是按学期来查找某个学生的成绩。经过函数searchnumber(head)和函数searchclasses(head)以及函数searchterm(head)完成操作。voidsearchnumber(MARK*head)按学号查找学生的函数原型,;voidsearchclasses(MARK*head);按班级查找学生的函数原型,voidsearchterm(MARK*head);按学期查找学生的函数原型,voidsearchMarkFail(MARK*head);查询没有及格的学生的函数原型,经过这个函数能够查找学生不及格科目及学生名单。3.1.3修改函数MARK*changeMark(MARK*head);修改学生成绩信息的函数原型,能够修改学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。3.1.4统计函数voidconuntMark(MARK*head);统计学生成绩的函数原型,在函数conuntMark(head)中用户能够统计学生的总成绩以及平均成绩,经过调用函数totalMark(head)和函数aveMark(head)完成操作。3.1.5输出函数voidtotalMark(MARK*head);统计学生总成绩的函数原型,voidaveMark(MARK*head);统计学生平均成绩的函数原型,voidprintClassMark(MARK*head);输出学生成绩信息的函数原型,经过此函数能够输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息到屏幕上。voidsaveFileMark(MARK*head);存储学生成绩信息于文件的函数原型,经过此函数能够输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息与文件中。第四章设计结果及分析4.1程序设计结果4.1.1源程序如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#defineMAR(structstudentMark*)malloc(sizeof(structstudentMark))typedefstructstudentMark{ intterm; intclasses; charname[10]; intnumber; charsex[7]; floatchinese; floatmath; floatenglish; floatcomputer;structstudentMark*next;}MARK;voidm(MARK*head);MARK*creat(void);voidsearchMark(MARK*head);voidsearchMarkStusentone(MARK*head);voidsearchnumber(MARK*head);voidsearchclasses(MARK*head);voidsearchterm(MARK*head);voidsearchMarkFail(MARK*head);MARK*changeMark(MARK*head);voidconuntMark(MARK*head);voidtotalMark(MARK*head);voidaveMark(MARK*head);voidprintClassMark(MARK*head);voidsaveFileMark(MARK*head);intmain(void){ MARK*head=NULL;printf("**********************************************\n");printf("##欢迎进入学生成绩信息管理系统##\n");printf("**********************************************\n"); printf("\n"); head=creat(); m(head); return(0);}voidm(MARK*head){ intchoose; 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(); elseif(2==choose) searchMark(head); elseif(3==choose) head=changeMark(head); elseif(4==choose) conuntMark(head); elseif(5==choose) printClassMark(head); elseif(6==choose) saveFileMark(head); else printf("退出系统"); break; }}//创立一个学生成绩信息系统MARK*creat(){MARK*head=NULL,*p1=NULL,*p2=NULL; charch; 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);}//查找学生成绩信息voidsearchMark(MARK*head){ intchoose1; 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); elseif(2==choose1) searchMarkFail(head); else printf("返回主菜单"); break; }}//修改学生成绩信息(按学期或按学号修改)MARK*changeMark(MARK*head){ intchoose2; MARK*p=head->next; charname[10]; charch; intnumber; 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; } } elseif(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; } } elseif(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; } } elseif(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; } } elseif(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);}//统计学生成绩总分和平均分voidconuntMark(MARK*head){MARK*p=head->next; intclasses; charch1,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"); }}//按班级输出学生信息voidprintClassMark(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"); }}//保存学生成绩信息于文件voidsaveFileMark(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(); }}//查找某个学生的成绩voidsearchMarkStusentone(MARK*head){ charch1,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; }}//查询不及格学生voidsearchMarkFail(MARK*head){ MARK*p=head->next; charname[10]; intnumber,flag=0; intchoose5; do { fflush(stdin); printf("请输入!(1按姓名查询2按学号查询3返回)\n"); scanf("%d",&choose5); switch(choose5) { case1: 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); if(p->english<60) printf("%s的英语成绩不及格\n",p->name); if(p->computer<60) printf("%s的计算机成绩不及格\n",p->name); flag++; } printf("\n"); p=p->next; } if(flag==0) printf("没有你要找的信息!\n"); break; case2: fflush(stdin); printf("请输入你想要查找的学号:\n"); scanf("%d",&number);while(p!=NULL) { if(number==p->number) { 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); if(p->english<60) printf("%s的英语成绩不及格\n",p->name); if(p->computer<60) printf("%s的计算机成绩不及格\n",p->name); flag++; } printf("\n"); p=p->next; } if(flag==0) printf("没有你要找的信息!\n"); break; case3: printf("请按任意键返回!\n"); getchar(); break;default: printf("你输入的有误!!请重新选择\n"); break; } }while(choose5!=1&&choose5!=2&&choose5!=3); printf("按任意键返回!\n"); getchar();}//按学号查询voidsearchnumber(MARK*head){MARK*p=head->next;intnumber,i=0;printf("请输入你要查询的学生学号:\n"); scanf("%d",&number); while(p!=NULL) { if(number==p->number) { printf("-------------------------------------------------------------------------\n"); printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n"); printf("-------------------------------------------------------------------------\n"); 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("%1f\t",p->chinese); printf("%1f\t",p->math); printf("%1f\t",p->english); printf("%1f\t",p->computer); i=2; } p=p->next; }if(i==0) printf("没找到该学生的信息!");}//按班级查询成绩voidsearchclasses(MARK*head){intclasses,i=0; MARK*p=head->next;printf("请输入你要查询成绩的班级:");scanf("%d",&classes);printf("请输出%d班所有同学的成绩:\n",classes);printf("------------------------------------------------------------------------\n"); printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n");printf("-------------------------------------------------------------------------\n");while(p!=NULL) { if(classes==p->classes) { 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("%1f\t",p->chinese); printf("%1f\t",p->math); printf("%1f\t",p->english); printf("%1f\t",p->computer); printf("\n"); printf("\n"); i=2; }p=p->next; } if(i==0) printf("没找到学生信息!\n");}//按学期查询voidsearchterm(MARK*head){intterm,i=0; MARK*p=head->next; printf("请输入你要查询成绩的学期:"); scanf("%d",&term);printf("请输出第%d学期所有班级的信息:\n");printf("------------------------------------------------------------------------\n"); printf("\t学期\t学号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论