您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > 学生综合测评系统-C++设计报告
上海电力学院《高级程序设计C++》课程设计题目:学生综合测评系统院系:计算机科学与技术学院专业年级:计算机科学与技术学生姓名:学号:20111695指导教师:2013年1月目录目录.................................................................................................21.需求分析...............................................................................32.概要设计...............................................................................43.详细设计...............................................................................64.用户使用手册.......................................................................94.1环境设置....................................................................................94.2操作步骤..................................................................................105.程序创新点............................................错误!未定义书签。6.使用的主要技术....................................错误!未定义书签。7.总结.......................................................错误!未定义书签。附录..................................................................错误!未定义书签。1.需求分析本系统旨在便于学校管理和查阅学生信息并计算学生的考试成绩和名次以及综合测评成绩和名次。每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、高等数学、物理、英语三门单科成绩、、同学互评分、品德成绩、任课教师评分。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。程序的基本功能:1.学生信息处理:(1)输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。(2)插入(修改)同学信息。(3)删除同学信息。(4)浏览学生信息。2.学生数据处理:(1)按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次。(2)学生测评数据输入并计算综合测评总分及名次。(3)学生数据管理。(4)学生数据查询。3.学生综合信息输出2.概要设计根据需求分析中的描述,知道需要一个帐户类型,由于基本数据类型无法实现将一个用户的信息绑定在一起,所以需要定义一个抽象数据类型帐户,命名为Student,其定义如下:classStudent{public:intnum;//学号stringname;//姓名stringsex;//性别stringaddress;//家庭住址stringphone;//联系电话doubleenglish;//英语成绩doublemath;//数学成绩doublephysics;//物理分数doubleaverage;//考试成绩doublegrade1;//同学互评分doublegrade2;//品德成绩doublegrade3;//任课教室评分doublegradesum;//综合测评成绩intranking1;//考试名次intranking2;//综合测评名次};为了方便外部函数进行操作,以上全为共有变量。定义一个对象数组Studentstud[100];方便对Student类中数据进行输入和输出以及排序等等功能。外部操作函数有:voidread()//从文件中读取学生信息函数voidshow()//显示学生信息函数voidsave()//保存学生信息函数voidSR()//输入学生信息函数voidSC()//删除学生信息函数voidTJ()//添加学生信息函数voidXG()//修改学生信息函数voidPM1()//计算考试成绩以及排名函数voidPM2()//计算综合测评成绩以及排名函数voidsn()//按学生学号查找学生信息voidsm()//按学生姓名查找学生信息voidFire()//学生信息管理界面voidstatistics()//学生成绩统计管理界面voidinquiry()//学生查询管理界面voidabout()//关于系统界面voidthanks()//退出程序界面主函数为学生测评系统主界面3、详细设计voidread(){charfilename[20];cout从文件中读取信息!endl;cout请输入文件名:endl;cinfilename;cout请问要读取几名学生信息:endl;cinn;ifstreaminfile;infile.open(filename,ios::in|ios::out);if(!infile){cerropenerror!endl;exit(1);}inti=0;do{infilestud[i].numstud[i].namestud[i].sexstud[i].addressstud[i].phonestud[i].englishstud[i].mathstud[i].physicsstud[i].grade1stud[i].grade2stud[i].grade3;i++;}while(!infile.eof());infile.close();cout读取成功!endl;}以上为读取文件中学生信息的函数,当信息成功读取后才可进行修改或添加或删除,所以在许多外部函数里面都必须要有读取函数的功能为前提。voidsave(){inti;charfilename[20];cout将记录保存在文件夹!endl;cout请输入文件名:;cinfilename;ofstreamoutfile(filename);if(!outfile){cerropenerror!endl;}//保存时按学号排序,采用冒泡排序法实现数组内的排序……for(i=0;in;i++){outfilestud[i].numstud[i].namestud[i].sexstud[i].addressstud[i].phonestud[i].englishstud[i].mathstud[i].physicsstud[i].grade1stud[i].grade2stud[i].grade3endl;}outfile.close();cout保存成功!endl;}在每次保存时都先按学号排序,保证信息是按学号从小到大的顺序存入文件。在输入、修改、添加和删除函数的末端都有保存函数以实现信息的保存。voidXG(){read();begin:stringfind_name;inti;cout请输入你要修改的学生名字:endl;cinfind_name;for(i=0;in;i++)if(stud[i].name==find_name){……}//输出修改前学生信息if(stud[i].name!=find_name){coutcan'tfindthisnameendl;cout请重新查找!endl;gotobegin;}cout请输入新的信息:endl;cout学号:'';cinstud[i].num;…………cout修改成功,是否保存?(y/n)endl;cinpress;switch(press){case'y':save();break;default:cout不保存!;break;}}基于数组形式对数据进行修改。基本上所有函数都是基于数组进行操作,像删除函数是用循环先匹配类中的一个数据,找到之后再以此开始用对象数组后面的替换掉前一个,以实现删除功能。stringSC_name;cout请输入你要删除的学生名字:endl;inti=0;cinSC_name;while(stud[i].name!=SC_name&&in)i++;//查找判断if(stud[i].name==SC_name){for(intj=i;jn+1;j++){stud[i].num=stud[i+1].num;stud[i].name=stud[i+1].name;…………}}考试成绩排名和综合测评成绩排名都是采用冒泡排序法实现:doubletemp[100];for(inta=0;an;a++)//计算考试成绩并赋值给temp{stud[a].average=(stud[a].english+stud[a].math+stud[a].physics)/3;temp[a]=stud[a].average;}doublet;for(intj=0;jn;j++)//temp中的考试成绩按从大到小冒泡排序{for(intk=0;kn-1-j;k++){f(temp[k]temp[k+1]){t=temp[k];temp[k]=temp[k+1];temp[k+1]=t;}}}for(intq=0;qn;q++)//判定考试成绩名次{for(intp=0;pn;p++){if(stud[p].average==temp[q])stud[p].ranking1=q+1;}}最后各种界面函数通过switch语句进行调用,以实现各种功能来完成此系统:voidFire()//学生信息管理系统界面{while(choose!=0){//输出界面样式略。cout\t\t请输入0-5之间的任意一数字:'';cinchoose;switch(choose){case1:system(cls);SR();break;case2:system(cls);SC();break;case3:system(cls);TJ();break;case4:system(cls);XG();break;case5:system(cls);show();break;default:cout\t\t输入错误或返回主界面'\n';break;}}}4、用户使用手册4.1环境设置将已创建扩展名为cpp在VC6.0中运行即可,如图所示。4.2操作步骤编译每个扩展名为.cpp的文件,如果有编译错误,则根据提示修改,否则编译成功。最后编译、连接和运行测试程序文件,输入数据并测试程序的各种操作。如图所示。在当前的Dos窗口中,输入要执行的功能号码,如输入1,然后单击回车,则显示如图所示。此为学生信息管理界面,输入要执行的功能号码,如输入1,然后单击回车,则显示如图所示。按提示输入3个学生信息并保存至文件1.txt中,完成后返回学生信息管理界面,输入要执行的功能号码,如输入5,然后单击回车,然后输入文件名1.txt和要读取几名学生信息,如输入3,则显示如图所示。如上所示,按照提示内容输入功能号并回车确认就能正确使用本系统。5、使用的主要技术文本文件的读写、数组。6、总结经过一个学期对《C++程序设计》的学习,我学习到了基本
本文标题:学生综合测评系统-C++设计报告
链接地址:https://www.777doc.com/doc-6035125 .html