学生综合测评系统C++设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院
《高级程序设计C++》
课程设计
题目:学生综合测评系统
院系:计算机科学与技术学院
专业年级:计算机科学与技术
学生姓名:学号:
指导教师:
2013年1月
目录
1.需求分析
本系统旨在便于学校管理和查阅学生信息并计算学生的考试成绩和名次以及综合测评成绩和名次。每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、高等数学、物理、英语三门单科成绩、、同学互评分、品德成绩、任课教师评分。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
程序的基本功能:
1.学生信息处理:
(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
(2) 插入(修改)同学信息。
(3) 删除同学信息。
(4) 浏览学生信息。
2.学生数据处理:
(1) 按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3 计算考试成绩,并计算考试名次。
(2) 学生测评数据输入并计算综合测评总分及名次。
(3) 学生数据管理。
(4) 学生数据查询。
3.学生综合信息输出
2.概要设计
根据需求分析中的描述,知道需要一个帐户类型,由于基本数据类型无法实现将一个用户的信息绑定在一起,所以需要定义一个抽象数据类型帐户,命名为Student,其定义如下:
class Student
{
public:
int num;um>>stud[i].name>>stud[i].sex>>stud[i].address
>>stud[i].phone>>stud[i].english>>stud[i].math
>>stud[i].physics>>stud[i].grade1
>>stud[i].grade2>>stud[i].grade3;
i++;
while(!());
();
cout<<"读取成功!"< } 以上为读取文件中学生信息的函数,当信息成功读取后才可进行修改或添加或删除,所以在许多外部函数里面都必须要有读取函数的功能为前提。 void save() { int i; char filename[20]; cout<<"将记录保存在文件夹!"< cout<<"请输入文件名:"; cin>>filename; ofstream outfile(filename); if(!outfile) { cerr<<"open error!"< } um<<" "< < < } (); cout<<"保存成功!"< } 在每次保存时都先按学号排序,保证信息是按学号从小到大的顺序存入文件。在输入、修改、添加和删除函数的末端都有保存函数以实现信息的保存。 void XG() { read(); begin:string find_name; int i; cout<<"请输入你要修改的学生名字:"< cin>>find_name; for(i=0;i if(stud[i].name==find_name) {……}ame!=find_name) { cout<<"can't find this name"< cout<<"请重新查找!"< goto begin; cout<<"请输入新的信息:"< cout<<"学号:"<<' ';cin>>stud[i].num; …… …… cout<<"修改成功,是否保存(y/n)"< cin>>press; switch(press) { case 'y' : save();break; default: cout<<"不保存!";break; } } 基于数组形式对数据进行修改。基本上所有函数都是基于数组进行操作,像删除函数是用循环先匹配类中的一个数据,找到之后再以此开始用对象数组后面的替换掉前一个,以实现删除功能。 string SC_name; cout<<"请输入你要删除的学生名字:"< int i=0; cin>>SC_name; while(stud[i].name!=SC_name && i i++; ame==SC_name) { for(int j=i;j { stud[i].num=stud[i+1].num; stud[i].name=stud[i+1].name; …… …… } } 考试成绩排名和综合测评成绩排名都是采用冒泡排序法实现: double temp[100]; for(int a=0;a temp[a]=stud[a].average; } double t; for(int j=0;j stud[p].ranking1=q+1;}}