C++学生成绩管理系统设计程序.docx
《C++学生成绩管理系统设计程序.docx》由会员分享,可在线阅读,更多相关《C++学生成绩管理系统设计程序.docx(19页珍藏版)》请在冰豆网上搜索。
C++学生成绩管理系统设计程序
#include
#include
#include
#include
using namespace std;
class Student//定义一个学生类;
{public:
Student(long n=100000,string na="无",string se="男",int a=18,float m=0,float e=0,float c=0):
num(n),name(na),sex(se),age(a),math(m),english(e),cpp(c){};
long num;
string name;
string sex;
int age;
float math;
float english;
float cpp;
};
//显示所有学生的信息与成绩;
void display()
{
Student stud[80];
int i;
ifstream infile("学生信息.dat",ios:
:
in);//已输入的方式打开文件“学生信息.dat”;
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
cout<:
left);//设置输出格式为左对齐;
cout<<"_____________________________________________________________"< cout< for(i=0;i<80;i++)
{
infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
if(stud[i].num==100000) continue;
else
{ cout<:
left);
cout< cout< }cout<<"_____________________________________________________________"< infile.close();
}
//按学生学号查看单个学生信息;
void search_by_num()
{Student stud[80];
int i;
long n;
ifstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
cout<<"请输入学生的学号:
"< cin>>n;
cout<<"该学生信息如下:
"< for(i=0;i<80;i++)
{infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
}
for(i=0;i<80;i++)
{
if(stud[i].num==n)
{cout<<" * * * * * * * * * * * * * * "< cout<<" 学号:
"< cout<<" 姓名:
"< cout<<" 性别:
"< cout<<" 年龄:
"< cout<<" 数学:
"< cout<<" 英语:
"< cout<<" C++ :
"< cout<<" * * * * * * * * * * * * * * "<
}
infile.close();
}
//按学生姓名查看单个学生的信息
void search_by_name()
{Student stud[80];
int i;
string name1;
ifstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
cout<<"请输入学生的名字:
"< cin>>name1;
for(i=0;i<80;i++)
{infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
}
for(i=0;i<80;i++)
{ if(stud[i].name==name1)
{cout<<" * * * * * * * * * * * * * * "< cout<<" 学号:
"< cout<<" 姓名:
"< cout<<" 性别:
"< cout<<" 年龄:
"< cout<<" 数学:
"< cout<<" 英语:
"< cout<<" C++ :
"< cout<<" * * * * * * * * * * * * * * "< }
}
infile.close();
}
//增加学生信息与成绩;
void add()
{Student studx;
ofstream outfile1("增加信息.dat");//建立一个“增加信息.dar”文件;
if(!
outfile1)
{cerr<<"open error!
"< exit
(1);
}
cout<<"添加成绩记录:
"< cout<<"学号:
";
cin>>studx.num;
cout<<"姓名:
";
cin>>studx.name;
cout<<"性别:
";
cin>>studx.sex;
cout<<"年龄:
";
cin>>studx.age;
cout<<"数学:
";
cin>>studx.math;
cout<<"英语:
";
cin>>studx.english;
cout<<"C++:
";
cin>>studx.cpp;
//将增加的学生信息先存入“增加文件.dar”中;
outfile1<<" "< outfile1.close();
}
//将增加的学生信息保存到“学生信息.dat”中;
void save_to_information()
{Student studx;
ifstream infile("增加信息.dat");
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
ofstream outfile("学生信息.dat",ios:
:
app);//以文件输出的方式打开”学生信息.dat“并将写入的信息保存到原文件的末尾;
if(!
outfile)
{cerr<<"open error!
"< exit
(1);
}
infile>>studx.num>>studx.name>>studx.sex>>studx.age>>studx.math>>studx.english>>studx.cpp;
outfile<<" "< infile.close();
outfile.close();
cout<<"增加信息成功!
"<//按学生学号修改信息;
void change_by_num()
{Student stud[80];
int i;
long num1;
long nu;
string se;
int ag;
float ma;
float en;
float cp;
ifstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
cout<<"请输入你想修改信息的学生学号:
"< cin>>num1;
for(i=0;i<80;i++)
{infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
}
infile.close();
ofstream outfile("学生信息.dat",ios:
:
out);
if(!
outfile){cerr<<"open file error!
";exit
(1);}
cout<<"请输入修改数据:
"< cout<<"学号:
";
cin>>nu;
cout<<"性别:
";
cin>>se;
cout<<"年龄:
";
cin>>ag;
cout<<"数学:
";
cin>>ma;
cout<<"英语:
";
cin>>en;
cout<<"C++:
";
cin>>cp;
for(i=0;i<80;i++)
{if(stud[i].num==num1&&stud[i].num!
=100000)
{stud[i].num=nu;stud[i].sex=se;stud[i].age=ag;stud[i].math=ma;stud[i].english=en;stud[i].cpp=cp;}//当输入的数字等于某个学生的学号并且学号不能等于100000时,将输入的信息赋值给该学生;
if(stud[i].num!
=100000) outfile<<" "<
} cout<<"修改成功!
"<}
//按学生姓名修改学生信息;
void change_by_name()
{Student stud[80];
int i;
string name1;
long nu;
string na;
string se;
int ag;
float ma;
float en;
float cp;
ifstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
cout<<"请输入学生姓名:
"< cin>>name1;
for(i=0;i<80;i++)
{infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
}
infile.close();
ofstream outfile("学生信息.dat",ios:
:
out);
if(!
outfile){cerr<<"open file error!
";exit
(1);}
cout<<"请输入修改数据:
"< cout<<"学号:
";
cin>>nu;
cout<<"性别:
";
cin>>se;
cout<<"年龄:
";
cin>>ag;
cout<<"数学:
";
cin>>ma;
cout<<"英语:
";
cin>>en;
cout<<"C++:
";
cin>>cp;
for(i=0;i<80;i++)//这两条语句的作用同按学号修改数据;
{if(stud[i].name==name1&&stud[i].num!
=100000){stud[i].num=nu;stud[i].sex=se;stud[i].age=ag;stud[i].math=ma;stud[i].english=en;stud[i].cpp=cp;}
if(stud[i].num!
=100000) outfile<<" "<
}cout<<"修改成功!
"< outfile.close();
}
//按学号删除学生信息;
void del_by_num()
{Student stud[80];
int i;
long num1;
ifstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
cout<<"请输入学生学号:
"< cin>>num1;
for(i=0;i<80;i++)
{infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
}
infile.close();
ofstream outfile("学生信息.dat",ios:
:
out);
if(!
outfile){cerr<<"open file error!
";exit
(1);}
for(i=0;i<80;i++)
{if(stud[i].num!
=num1&&stud[i].num!
=100000)//如果学生学号不等于输入的学号和100000,才保存信息;
{outfile<<" "< }
} cout<<"删除成功!
"< outfile.close();
}
//按学生姓名删除学生信息;
void del_by_name()
{Student stud[80];
int i;
string name1;
ifstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
cout<<"请输入学生姓名:
"< cin>>name1;
for(i=0;i<80;i++)
{infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
}
infile.close();
ofstream outfile("学生信息.dat",ios:
:
out);
if(!
outfile){cerr<<"open file error!
";exit
(1);}
for(i=0;i<80;i++)
{if(stud[i].name!
=name1&&stud[i].num!
=100000)//作用同按学号删除学生信息;
outfile<<" "< }
cout<<"删除成功!
"<
outfile.close();
}
//按总分进行排名;
void Ranked_by_total_score()
{int i,j;
Student stud[80];
float total[80];
float temp;
long temp_num;
string temp_name;
string temp_sex;
float temp_math;
float temp_english;
float temp_cpp;
fstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit
(1);
}
for(i=0;i<80;i++)
{infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].age>>stud[i].math>>stud[i].english>>stud[i].cpp;
total[i]=stud[i].math+stud[i].english+stud[i].cpp;
}
for(j=0;j<80;j++)
for(i=0;i<79-j;i++)
if(total[i] {temp=total[i];total[i]=total[i+1];total[i+1]=temp;
temp_name=stud[i].name; stud[i].name=stud[i+1].name; stud[i+1].name=temp_name;
temp_num=stud[i].num; stud[i].num=stud[i+1].num; stud[i+1].num=temp_num;
temp_sex=stud[i].sex; stud[i].sex=stud[i+1].sex; stud[i+1].sex=temp_sex;
temp_math=stud[i].math; stud[i].math=stud[i+1].math; stud[i+1].math=temp_math;
temp_english=stud[i].english; stud[i].english=stud[i+1].english;stud[i+1].english=temp_english;
temp_cpp=stud[i].cpp; stud[i].cpp=stud[i+1].cpp;stud[i+1].cpp=temp_cpp;
}
cout<<"---------------------------------------------------------------"< cout<<"名次 姓名 学号 性别 数学 英语 C++ 总分"< for(i=0;i<80;i++)
{if(stud[i].num==100000)break;
cout<:
left);
cout<
}
cout<<"---------------------------------------------------------------"<
infile.close();}
//按数学成绩排名;
void Ranked_by_math()
{Student stud[80];
int i,j;
long temp_num;
string temp_name;
string temp_sex;
float temp_math;
fstream infile("学生信息.dat",ios:
:
in);
if(!
infile)
{cerr<<"open error!
"< exit(1