大一小弟,第一次搞项目,请请教一个问题,谢谢了.
void addstudent( )//增加学生
{
int tag=1;char choice;
while(tag)
{
cout<<"增加学生:"<<endl;
cout<<"请输入学生学号:";
int n;
student *s;
cin>>n;
s=query1(n);
if(s==NULL)
cout<<"该学号已经存在!"<<endl;
else
{ cout<<"请输入学生姓名:";
char na[6];
cin>>na;
top++;
stu[top].addstudent(n,na);
}
int tag1=1;
while(tag1)
{
cout<<"想继续操作吗?(y/n)"<<endl;
cin>>choice;
if(choice=='y')
{tag=1;tag1=0;}
else
if(choice=='n')
{tag=0;tag1=0;}
else
{tag1=1;tag=1;cout<<"输入错误,请重新输入!"<<endl;}
}
}
}
小弟想了几个小时都没想出到低是哪错了,无论我输入的是'Y'还是'N',程序总是继续执行操作,哪位大哥大姐帮忙下,这是我第一次搞项目,不想就这么失败了.谢谢了.
所有代码在下面,因为我是刚测试,所以可能还有很多错误,所有请大家先把这个问题给解决了,由于大一菜菜,编得不好,献丑了.
# include<iostream.h>
# include<iomanip.h>
# include<fstream.h>
# include<string.h>
const int Maxs=10;
//using namespace std;
class student//学生类
{
private:
int tag;//删除标记,1已删除,0未删除
char name[6];//姓名
int num;//学号
float english;//英语成绩
float chinese;//语文成绩
float math;//数学成绩
public:
student(){}//构造函数
int gettag()const//获取删除标记
{
return tag;
}
char *getname()//获取姓名
{
return name;
}
int getnum()const//获取学号
{
return num;
}
float getenglish()const//获取英语成绩
{
return english;
}
float getchinese()const//获取语文成绩
{
return chinese;
}
float getmath()const//获取数学成绩
{
return math;
}
void settag(const int t)//设置删除标记
{
tag=t;
}
void setname(const char *n)//设置姓名
{
strcpy(name,n);
}
void setnum(const int n)//设置学号
{
num=n;
}
void setenglish(const float e)//设置英语成绩
{
english=e;
}
void setchinese(const float c)//设置语文成绩
{
chinese=c;
}
void setmath(const float m)//设置数学成绩
{
math=m;
}
float getsum()//求总分
{
return (english+math+chinese);
}
float getaverage()//求平均分
{
return float(getsum()/3);
}
void disp()//输出学生信息
{
cout<<"姓名:"<<name<<endl<<"学号:"<<num<<endl<<"英语成绩:"<<english<<endl<<"语文成绩:"<<chinese<<endl
<<"数学成绩:"<<math<<endl<<"总分:"<<getsum()<<endl<<"平均分:"<<getaverage()<<endl;
}
void addstudent(int n,char *na,float e=0,float m=0,float c=0)//增加学生
{
tag=0;
strcpy(name,na);
num=n;
english=e;
math=m;
chinese=c;
}
void delstudent()//删除学生
{
tag=1;
}
};
class sdatabase//学生库类
{
private:
int top;//数据指针
student stu[Maxs];//数据记录
public:
sdatabase()//构造函数,把数据从文件读到内存
{
student s;
top=-1;
fstream file("student.txt",ios::in);
while(1)
{
file.read((char *)&s,sizeof(s));
if(!file) break;
top++;
stu[top]=s;
}
file.close();
}
~sdatabase()//析构函数,把数据从内存写到文件
{
fstream file("student.txt",ios::out);
for(int i=0;i<=top;i++)
if(stu[i].gettag()==0)
file.write((char *)&stu[i],sizeof(stu[i]));
file.close();
}
student *query1(int n)//判断函数
{
for(int i=0;i<=top;i++)
if(stu[i].getnum()==n&&stu[i].gettag()==0)
return NULL;
return &stu[i];
}
student *query2(int n)//判断函数
{
for(int i=0;i<=top;i++)
if(stu[i].getnum()==n&&stu[i].gettag()==0)
return &stu[i];
return NULL;
}
void addstudent( )//增加学生
{
int tag=1;char choice;
while(tag)
{
cout<<"增加学生:"<<endl;
cout<<"请输入学生学号:";
int n;
student *s;
cin>>n;
s=query1(n);
if(s==NULL)
cout<<"该学号已经存在!"<<endl;
else
{ cout<<"请输入学生姓名:";
char na[6];
cin>>na;
top++;
stu[top].addstudent(n,na);
}
int tag1=1;
while(tag1)
{
cout<<"想继续操作吗?(y/n)"<<endl;
cin>>choice;
if(choice=='y')
{tag=1;tag1=0;}
else
if(choice=='n')
{tag=0;tag1=0;}
else
{tag1=1;tag=1;cout<<"输入错误,请重新输入!"<<endl;}
}
}
}
void delstudent( )//删除学生
{ int tag;char choice;
while(tag)
{
cout<<"减少学生:"<<endl;
cout<<"请输入学生学号:";
int n;
cin>>n;
student *s;
s=query2(n);
if(s==NULL)
cout<<"该学号不存在!"<<endl;
else
(*s).delstudent();
int tag1=1;
while(tag1)
{
cout<<"想继续操作吗?(y/n)"<<endl;
cin>>choice;
if(choice=='y')
{tag=1;tag1=0;}
else if(choice=='n')
{tag=0;tag1=0;}
else
{tag1=1;cout<<"输入错误,请重新输入!"<<endl;}
}
}
}
说我帖子内容过长,就放在下面了.