联系方式:北京源智天下科技有限公司第二十一讲:简单学生成绩管理系统开发实例杨章伟e-mail:jtclass@163.com1-2北京源智天下科技有限公司联系方式:课程内容安排•需求分析•总体设计•功能模块实现•系统集成•系统实现1-3北京源智天下科技有限公司联系方式:需求分析•一个简单的学生成绩管理系统,主要包括成绩录入、计算总分和平均分、成绩排名和成绩查询几方面的功能。•根据如上的分析,下面给出简单学生成绩管理系统的主要实现功能:•提供成绩录入界面。•统计每个学生的总分和平均分。•按总分由大到小排出名次。•提供成绩查询功能,即任意输入一个学号,能够查找出该学生在班级中的排名及其考试成绩。1-4北京源智天下科技有限公司联系方式:总体设计•总体设计阶段即系统的概要设计,需要完成对系统结构的分析和设计,以及设计系统需要的主要数据结构。本节将基于需求分析的结果,给出了简单学生成绩管理系统的总体结构。•根据需求分析的结果,本系统至少要分为以下几个模块:main函数模块、成绩录入模块、成绩统计模块、成绩排名模块和成绩查询模块1-5北京源智天下科技有限公司联系方式:北京源智天下科技有限公司联系方式:成绩录入模块•成绩录入模块是简单成绩管理系统首先要执行的一个模块,只有当数据结构中存储有成绩等数据后才能进行其他的诸如统计、排名和查询等功能。1-7北京源智天下科技有限公司联系方式:代码清单•1voidsetData(Student&s)•2{•3cout输入学号,姓名,语文,数学,英语成绩:;//录入数据•4cins.numbers.names.chineses.maths.english;//接收输入并存储到成员变量中•5s.total=0;//初始化变量•6s.average=0;//初始化变量•7s.rank=0;//初始化变量•8}1-8北京源智天下科技有限公司联系方式:成绩统计模块•成绩统计模块需要建立在成绩录入模块的基础之上,当系统中已经包含一些数据记录后才能对这些成绩进行求总分、平均分等操作。本模块包含对输入的数据计算总分和计算平均分。1-9北京源智天下科技有限公司联系方式:=0,i=0Average+=(S[i].chinese+S[i].math+S[i].english)iN?Average/=(N*3)返回Average的值结束否是1-10北京源智天下科技有限公司联系方式:成绩排名模块在获得整个班级的总分和平均分之后,就可以对该班级中的同学按照其某个参数进行排名了。在该系统中,使用每位同学的平均成绩对其进行排名。前面内容提到过,排序算法有许多种,如冒泡排序、选择排序等,此处使用插入排序来实现。1-11北京源智天下科技有限公司联系方式:(StudentS[],intN)//插入法排序2{3intindex;//定义变量4Studentinserter;//创建对象5for(inti=1;iN;i++)//循环6{7inserter=S[i];//对象初始化8index=i-1;//变量初始化9while(index=0&&inserter.averageS[index].average)//比较10{11S[index+1]=S[index];//元素后移12index--;13}14S[index+1]=inserter;//插入该元素15}16for(intj=0;jN;j++)17S[j].rank=j+1;//设置排名18}1-12北京源智天下科技有限公司联系方式:成绩查询模块该系统中的成绩查询功能是根据用户输入的学生的学号作为关键字,在数据结构中进行查询,并将查询结果即该记录的位置返回。1-13北京源智天下科技有限公司联系方式:(StudentS[],intN,char*n)//成绩查询函数2{3for(inti=0;iN;i++)//在所有记录中查询4{5if(strcmp(S[i].number,n)==0)//找到6returni;//返回结果所在的位置7}8return-1;//没有找到9}1-14北京源智天下科技有限公司联系方式:=0strcmp(S[i].number,n)=0returnii++结束否iN?是是return-1否1-15北京源智天下科技有限公司联系方式:系统集成根据前面的学习,读者知道,在C++编写的程序中,首先执行的是main()主函数。因此,系统的集成可以在main()函数中实现。此外,读者知道,系统集成最好的方法是通过菜单的方式实现。因此,下面通过C++实现模拟菜单的功能。1-16北京源智天下科技有限公司联系方式:=1打印所有排名输入的命令不存在结束否是order=2成绩统计输出否是order=3成绩查询否是order=4退出系统否是否1-17北京源智天下科技有限公司联系方式:系统实现经过上述功能模块的实现和系统的集成的介绍后,读者就可以将这些代码通过VisualC++6.0的编译器编译,并最终形成可执行程序。VisualC++6.0中,可以通过控制台程序来实现该学生成绩管理系统。Win32控制台程序(Win32ConsoleApplication)是一类Windows程序,它不使用复杂的图形用户界面,程序与用户交互时通过一个标准的正文窗口,通过几个标准的输入输出流(I/OStreams)进行。本章所涉及的C++源程序都可以在控制台程序下运行。1-18北京源智天下科技有限公司联系方式:运行结果