您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > C++程序设计学生成绩管理系统
·课程设计题目:学生成绩管理-1-第1章系统概要1.1系统介绍设计一个学生管理系统,能够实现学生信息输入,并对这些信息进行处理并输出。1.2基本功能要求从键盘输入某班级若干个学生的学号、姓名、三门课(语文、数学、英语)的成绩,分别实现如下功能;(1)统计每个学生的总分和平均分。(2)按总分由大到小排出名次。(3)打印出成绩在全班平均分以上的学生名单和数据信息。(4)任意输入一个学号或姓名,能够查找出该学生在班级中的排名及其考试成绩。本系统是根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以及方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按成绩对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提。能根据学生的姓名或学号来查询该学生的资料。-2-第2章设计思路与算法2.1程序功能结构图图2-1学生成绩管理系统功能图学生成绩管理统设置班级人数输入学生信息统计平均分和总分对学生成绩排序统计高于班级平均成绩学生查找利用学号查找学生利用姓名查找学生利用姓名查找学生打印学生信息主菜单-3-2.2各模块介绍学生成绩管理系统包括七个模块:输入学生资料,输出学生资料,统计总分和平均分,按学生总成绩或平均成绩排序,打印平均分高于班级平均分的学生信息,按姓名或学号查找,菜单选择这七个模块既相互联系又相互独立。各模块功能介绍1)输入模块(voidsetdata(studentstu[])):主要功能是用来对学生的成绩进行输入。使用该功能可以输入所有学生的信息、资料等。具体包括学生的班级,学号,姓名,各科成绩。2)输出模块(voidprint(studentstu[],inti)):主要功能是用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息、资料等。具体包括学生的班级,学号,姓名,各科成绩,总成绩和平均成绩。3)统计模块(voidcount(studentstu[])):主要功能是用来对学生的成绩进行计算。在系统已经录入了学生资料成绩的前提下,使用该功能可以计算出每个学生的总成绩和平均成绩。4)排序模块(voidsort(studentstu[])):按学生平均成绩进行排列模块块,此模块的主要功能是用来对学生的平均成绩进行排序,这样在统计名次是就比较方便。在系统保存学生资料的前提下,使用此功能能快速统计出学生的名次情况。5)打印平均分高于班级平均分的学生信息模块(voidgetaverage(studentstu[])):主要功能是输出学生平均分高于等于班级平均分的学生信息。6)查找模块(voidsearch1(studentstu[],char*a)按学号查找voidsearch2(studentstu[],char*b)按姓名查找):主要功能是用来查找学生资料,在系统输入学生资料的前提下,想查找某个学生的资料,我们只要知道他的学号或姓名,输入学号或姓名后,系统可以帮我们把他的信息输出。7)菜单模块(intselect1()):主要功能是用来选择哪种操作。根据提示可对学生信息进行处理。-4-第3章源程序代码#includeiostream.h//输入输出流的头文件/********************************************文件包含命令,strcmp函数存放在string.h文件中。********************************************/#includestring.h//字符串处理的头文件#includewindows.hintn;//设置一个全局变量structstudent//声明学生信息的结构体{charnumber[20];//学生的学号:20个字符长度charname[30];//学生的名字:20个字符长度charc[5];//学生的班级:5个字符长度doublemath;//数学成绩doublechinese;//语文成绩doubleenglish;//英语成绩doubletotal;//总分doubleaverage;//平均分intrank;//排名}s;voidsetdata(studentstu[]);//输入信息voidcount(studentstu[]);//统计平均分和总分voidsort(studentstu[]);//排序voidgetaverage(studentstu[]);//求出平均分voidprint(studentstu[],inti);//打印输出voidsearch1(studentstu[],char*a);//按学号查找voidsearch2(studentstu[],char*b);//按姓名查找intselect1();//主菜单-5-intselect2();//菜单voidmain(){system(color1A);/*************************************设置默认的控制台前颜色。颜色属性由两个十六进制数字指定,第一个为背景,第二个为前景。每个数字可以是以下任何值之一:0=黑色;1=蓝色;2=绿色;3=浅绿色;4=红色;5=紫色;6=黄色;7=白色;8=灰色;9=淡蓝色;,A=淡绿色;B=淡浅绿色;C=淡红色;D=淡紫色;E=淡黄色;F=亮白色。例如system(color1A)为背景为蓝色,前景为淡绿色,即字体为淡绿色。****************************************/coutendl;cout\t\t\t\t欢迎使用学生管理系统endl;coutendl;externintn;student*stu;cout班级人数是:;cinn;stu=newstudent[n];setdata(stu);for(;;)//实现重复循环选择{switch(select1())//调用菜单选择函数{case1:count(stu);{-6-cout学号\t姓名\t班级\t语文:\t数学:\t英语:\t总分:\t平均分:endl;for(inti=0;in;i++)coutstu[i].number\tstu[i].name\tstu[i].c\tstu[i].chinese\tstu[i].math\tstu[i].english\tstu[i].total\tstu[i].averageendl;}break;case2:sort(stu);{for(intm=0;mn;m++)print(stu,m);//实现按总分排序打印}break;case3:getaverage(stu);//实现成绩在平均分以上的打印break;case4:switch(select2()){case1:{chara[20];cout您要查询的学生学号;cina;search1(stu,a);break;}case2:{charb[20];cout您要查询的学生姓名;-7-cinb;search2(stu,b);break;}}break;case5:cout\t再见!谢谢您的使用。\n;return;}}}voidsetdata(studentstu[])//输入学生的数据{for(inti=0;in;i++){cout下面输入第i+1位同学的数据:endl;cout输入学号:;cinstu[i].number;cout输入姓名:;cinstu[i].name;cout输入班级:;cinstu[i].c;cout语文成绩:;cinstu[i].chinese;cout数学成绩:;cinstu[i].math;cout英语成绩:;cinstu[i].english;}}/***************************************打印学生信息***************************************/voidprint(studentstu[],inti)//打印{cout学号\t姓名\t班级\t语文:\t-8-数学:\t英语:\t总分:\t平均分:\t排名:endl;coutstu[i].number\tstu[i].name\tstu[i].c\tstu[i].chinese\tstu[i].math\tstu[i].english\tstu[i].total\tstu[i].average\tstu[i].rankendl;}/**************************************计算总分和平均分***************************************/voidcount(studentstu[]){for(inti=0;in;i++){stu[i].total=stu[i].math+stu[i].chinese+stu[i].english;//计算一个总分,记录在tatal里面stu[i].average=stu[i].total/3;//计算一个平均分,记录在average里面}}/*************************************利用冒泡法对学生的成绩排序,并得出排名。*************************************/voidsort(studentstu[])//冒泡法排序{count(stu);for(inti=0;in;i++)for(intj=0;jn-1-i;j++){if(stu[j].totalstu[j+1].total){s=stu[j];stu[j]=stu[j+1];stu[j+1]=s;-9-}}for(intk=0;kn;k++)stu[k].rank=k+1;//设置排名}/***********************************打印成绩高于等于班级平均成绩的学生信息。***********************************/voidgetaverage(studentstu[]){sort(stu);doublea;doublesum=0;for(inti=0;in;i++)sum=sum+stu[i].average;a=(sum/n);for(intj=0;jn;j++)if(stu[j].average=a)print(stu,j);}/***************************************通过学号查找学生信息。***************************************/voidsearch1(studentstu[],char*a){sort(stu);for(inti=0;in;i++){if(strcmp(stu[i].number,a)==0)/*****************************************-10-Strcmp()函数简介;原型:externintstrcmp(constchar*s1,constchar*s2);所在头文件:string.h功能:比较字符串s1和s2。一般形式:strcmp(字符串1,字符串2)说明:当s1s2时,返回值0;当s1==s2时,返回值=0;当s1s2时,返回值0;即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:ABaAcomputercompare特别注意:strcmp(const
本文标题:C++程序设计学生成绩管理系统
链接地址:https://www.777doc.com/doc-7028638 .html