学生成绩管理系统!程序运行总有毛病,帮忙改一下
#include<iostream>#include<string>
#define N 3
#define M 20
using namespace std;
class student //定义了一个学生类
{
public:
student(char name[20],int number,int chinesem,int mathm,int englishm);
student(student &A);
student(){flag=0;};
~student() {}
void addstudent(student *P); //增加一个学生信息
void deletestudent(); //删除一个学生信息
void changestudent(); //改变学生信息
void display(); //输出学生信息
void getstudent(); //输入学生信息
friend void inforstu(student *stu);
friend void addtionstu(student stu[]);
friend void deletionstu(student &stu);
friend void searchstu(student stu[]) ;
friend void namesearch(student st[]);
friend void numbersearch(student st[]);
friend void marksearch(student stu[]);
friend void maxsearch(student stu[]);
private: //该类包含了学生姓名,学号,语文、数学、英语成绩
char sname[20];
int schinese,smath,senglish,number;
int flag;
};
int continues(); //判断是否继续函数
static int NO=0;
student::student(char name[20],int number,int chinesem,int mathm,int englishm) //构造函数
{
strcpy(sname,name);
number=number;
schinese=chinesem;
smath=mathm;
senglish=englishm;
}
student::student(student &A) //拷贝构造函数
{
strcpy(sname,A.sname);
number=A.number;
schinese=A.schinese;
smath=A.smath;
senglish=A.senglish;
}
//增加学生信息 成员函数
void student::addstudent(student *P)
{
P->getstudent();
P->display();
}
//删除学生信息 成员函数
void student::deletestudent()
{
flag=0;
}
//输出学生信息 成员函数
void student::display()
{if(flag==1)
cout<<sname<<" "<<number<<" "<<schinese<<" "<<smath<<" "<<senglish<<endl;
}
//输入学生信息 成员函数
void student::getstudent()
{
cout<<"学生姓名:";
cin.getline(sname,20);
number=++NO;
cout<<"语文成绩:";
cin>>schinese;
cout<<"数学成绩:";
cin>>smath;
cout<<"英语成绩:";
cin>>senglish;
}
//修改信息函数 成员函数
void student::changestudent()
{int ins;
do{
cout<<"您想修改【姓名 请输入0】,【语文成绩 请输入2】,【数学成绩 请输入3】,【英语成绩 请输入4】"<<endl;
cin>>ins;
if(ins>=0&&ins<=4)
{
cout<<"请输入你想修改的的内容。"<<endl;
switch(ins)
{
case 0:cin.getline(sname,20);break;
case 2:cin>>schinese;break;
case 3:cin>>smath;break;
case 4:cin>>senglish;break;
}
}
else cout<<"您输入有误"<<endl;
}while( continues());
}
//判断继续操作函数
int continues()
{
int a=1;
do{
cout<<"您想继续操作吗?是请输入1,否则输入0"<<endl;
cin>>a;
if(a!=0&&a!=1)
{cout<<"您输入有误"<<endl;
a=-1;
}
}while(a==-1);
return a;
}
//查看所有学生信息
void inforstu(student stu[])
{
int i;
for(i=0;i<NO;i++)
stu[i].display();
}
//增加学生信息
void addtionstu(student stu[])
{
stu[NO++].getstudent();
}
//删除学生信息
void deletionstu(student &stu)
{ stu.deletestudent();}
//信息查询
void searchstu(student stu[]) //参数是指针
{
int i;
do{
cout<<"按姓名查询,请输入1;"<<endl;
cout<<"按学号查询,请输入2;"<<endl;
if(i==1||i==2)
switch(i)
{
case 1:namesearch(stu);break;
case 2:numbersearch(stu);break;
}
else cout<<"您输入错误。"<<endl;
}while(continues());
//姓名查找
void namesearch(student st[])
{ string name;
int i,s=0;
cout<<"请输入查询学生姓名:";
getline(cin,name);
for(i=0;i<NO;i++)
if(!strcmp(st[i].sname,name))
{s=1;
st[i].display();
}
if(s!=1)
cout<<"你要找的学生不存在"<<endl;
}
//学号查找
void numbersearch(student st[])
{ int num;
int i,s=0;
cout<<"请输入查询学生学号:";
cin>>num;
for(i=0;i<NO;i++)
if(st[i].number==num)
{s=1;
st[i].display();
}
if(s!=1)
cout<<"你要找的学生不存在"<<endl;
}
//成绩统计
void marksearch(student stu[])
{
int s=0,i,m,n,a;
cout<<"您想查哪一门课成绩:"
<<"语文【1】"
<<"数学【2】"
<<"英语【3】"<<endl;
cin>>a;
cout<<"你想查什么分数段的成绩(60 70)."<<endl;
cin>>m>>n;
switch(a)
{
case 1:{for(i=0;i<NO;i++)
if(stu[i].schinese>=a&&stu[i].schinese<=b)
stu[i].display};break;
case 2:{for(i=0;i<NO;i++)
if(stu[i].smath>=a&&stu[i].smath<=b)
stu[i].display};break;
case 3:{for(i=0;i<NO;i++)
if(stu[i].senglish>=a&&stu[i].senglish<=b)
stu[i].display};break;
}
}
//查询最高分
void maxsearch(student stu[])
{
int stumark[NO];
int i,j=0,max;
for(i=0;i<NO;i++)
stumark[i]=stu[i].schinese+stu[i].smath+stu[i].senglish;
max=stumark[0];
for(i=1;i<NO;i++)
if(max<stumark[i])
{
max=stumark[i];
j=i;
}
cout<<"您查询的结果为:"<<endl;
syu[j].display();
}
void main()
{
int i,j,n; //j表示查询内容
student students[N];
for(i=0;i<N;i++)
students[i].getline();
do{
cout<<"查看所有学生的信息【1】(【1】表示从键盘输入1);"<<endl;
cout<<"增加学生信息【2】"<<endl;
cout<<"删除学生信息【3】;"<<endl;
cout<<"修改学生信息【4】;"<<endl;
cout<<"学生信息查询【5】;"<<endl;
cout<<"学生成绩统计【6】;"<<endl;
cout<<"总分最高同学信息【7】"<<endl;
cin>>j;
if(i<=7&&i>=1)
switch(j)
{
case 1:inforstu(students);break;
case 2:addtionstu(students);break;
case 3:{cout<<"一共有"<<N<<"位同学,你想删除第几位同学信息:";
cin>>n;
deletionstu(students[n-1]);}break;
case 4:{cout<<"一共有"<<N<<"位同学,你想修改第几位同学信息:";
cin>>n;
changestu(students);}break;
case 5:searchstu(students);break;
case 6:marksearch(students);break;
case 7:max(students);break;
}
else cout<<"你输入有误!"<<endl;
}while(continues());
}