学生成绩管理系统C++.docx
《学生成绩管理系统C++.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C++.docx(28页珍藏版)》请在冰豆网上搜索。
![学生成绩管理系统C++.docx](https://file1.bdocx.com/fileroot1/2022-10/12/c4a3a53b-4f08-4df3-ba4a-a22367f87346/c4a3a53b-4f08-4df3-ba4a-a22367f873461.gif)
学生成绩管理系统C++
学生成绩管理系统C++
计算机高级语言课程设计报告
——学生成绩管理系统
班级:
191142班
学号:
姓名:
日期:
2015年1月22日
一课程设计题目与要求
(包括题目与系统功能要求)
【实习内容】
C++语言,面向对象的分析与设计。
【基本要求】
学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生成绩的录入、删除、
查找及修改、成绩的统计分析等等。
请设计一个系统实现对学生成绩的管理。
系统要求实现以下功能:
(1)增加记录:
要求可以连续增加多条记录。
(2)删除一个学生的记录:
要求可以先查找,再删除。
删除前,要求用户确认。
(3)成绩修改:
若输入错误可进行修改;要求可以先查找,再修改。
(4)查找:
可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处
于指定分数段内的学生名单等等。
(5)统计分析:
对某个班级学生的单科成绩进行统计,求出平均成绩;求平均成绩要
求实现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。
求出
一门课程标准差和合格率;
(6)排序功能:
要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总
分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;
(7)文件操作:
可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成
绩重新写入文件;可以将排序好的信息写入新的文件。
【较高要求】
查找可以实现模糊查询,即输入名字的一部分,可以列出满足条件的所有记录。
再从这
个记录中进行二次选择。
二需求分析
【问题描述】
在编写过程中,主要的困难有:
1.模糊搜索(不能使用string中的find函数)需要自定义一个函数。
2.排序,需要自己学习算法。
【系统环境】
VisualC++
三概要设计
流程图如下:
四详细设计"
【增加记录】:
【删除记录】:
先查找出要删除的信息,然后再删除。
删除前要求用户是否确认删除。
确认则在数据库中删除然后会主菜单。
否则回主菜单。
【成绩修改】:
查找出用户所要修改的信息。
然后在数据库中将信息提取出来,修改前要求用户是否确认修改,若要修改,修改后回主菜单。
否则直接会主菜单。
【查找】:
查找分为某门成绩分数段查找和个人信息查找,个人信息查找支持模糊搜索。
可根据学号或姓名进行查找,查找后支持二次搜索。
【统计分析】:
统计分析主要是了解各科的总体情况,平均分、及格率、以及标准差。
即可查询单科也可查询全科。
【排序】
在主菜单中选择排序,然后系统先根据总成绩排序。
若总成绩相等,比较数学则按数学排序;若总成绩和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;
【退出系统】:
在主菜单中选择退出系统。
择结束程序。
【设计的类的代码】:
classmanagement{
private:
vectorstu;
public:
voidaddtxt();
voiddeletetxt();
voidchangetxt();
voidfindtxt();
voidfindtxt1();
voidptxt();
voidotxt();
voiditxt();
voidshow();
voidttxt();
voidttxt(int,int);
};
classstudent{
private:
stringm_id,m_name;
intm_math,m_eng,m_phy;
public:
student(string,string,int,int,int);
student(conststudent&);
~student(){};
stringgetId();
stringgetName();
intgetMath();
intgetEng();
intgetPhy();
inttotal();
studentoperator=(conststudent&);法比较粗糙。
七附录
#ifndefSTUDENT_H
#defineSTUDENT_H
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classstudent{
private:
stringm_id,m_name;
intm_math,m_eng,m_phy;
public:
student(string,string,int,int,int);etId())&&()==stu[i].getName())){
cout<<"数据库已有此人!
不能再添加!
"<p++;
}
}
if(p==0){
(s);
otxt();
}
cout<<"是否继续增加
(继续回复1。
否则回复0.)"<cin>>m;
if(m==0)break;
}
}
voidmanagement:
:
itxt(){etId()<();
}
voidmanagement:
:
show(){
cout<<"学号"<<'\t'<<'\t'<<"姓名"<<'\t'<<"数学"<<'\t'<<"英语"<<'\t'<<"物理"<<'\t'<<"总分"<for(inti=0;i<();i++){
cout<cout<}
}
voidmanagement:
:
findtxt(){etId()[j])break;
}
if(j==()){
(stu[i]);
p++;
cout<}
for(k=0;k<();k++){
if(m[k]!
=stu[i].getName()[k])break;
}
if(k==()){
(stu[i]);
p++;
cout<}
}
if(p==0)cout<<"对不起,没有您所查找的信息!
"<cout<<"是否进行二次搜索(
回复1进行。
否则回复0.)"<cin>>x;
if(x==1){
cout<<"请输入您二次查找学生的学号或姓名:
"<cin>>n;
for(a=0;a<();a++){
for(b=0;b<();b++){
if(n[b]!
=s[a].getId()[b])break;
}
if(b==()){
q++;
cout<
}
for(c=0;c<();c++){
if(n[c]!
=s[a].getName()[c])break;
}
if(c==()){
q++;
cout<
}
}
if(q==0)cout<<"对不起,没有您所查找的信息!
"<}
}
voidmanagement:
:
findtxt1(){etMath()>=a&&stu[i].getMath()<=b){
cout<p++;
}
}
if(p==0)cout<<"对不起,没有您所查范围的分数!
"<}
elseif(m=="英语"){
for(intj=0;j<();j++){
if(stu[j].getEng()>=a&&stu[j].getEng()<=b){
cout<p++;
}
}
if(p==0)cout<<"对不起,没有您所查范围的分数!
"<}
elseif(m=="物理"){
for(intk=0;k<();k++){
if(stu[k].getPhy()>=a&&stu[k].getPhy()<=b){
cout<p++;
}
}
if(p==0)cout<<"对不起,没有您所查范围的分数!
"<}
elsecout<<"没有其他的课程成绩!
"<}
voidmanagement:
:
deletetxt(){etId()||m==stu[i].getName()){
break;
}
}
cout<<"是否确定删除(
是回复1.否回复0.)"<cin>>x;
if(x==1){
vector:
:
iteratorit=()+i;
(it);
otx