为什么会出现abnormal program termination编译 组建无问题

#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
class student//定义学生类
{
public:
void addperson();
void display_all();
void search_name();
void search_num();
void classsort();
void countclass();
void student_delete();
void xiugai();
void updatenumber(int i);
int number();
private:
int num;
string name;
float cpp;
float english;
float maths;
};
void menu();
ifstream infile;
ofstream outfile;

void student::addperson()//添加成员的函数
{
outfile.open("student.txt",ios::out|ios::app);
if(! outfile) 
{
cout<<"文件打开错误"<<endl;
abort();
}


cout<<"请输入学号"<<endl;
cin>>num;

cout<<"请输入姓名"<<endl;
cin>>name;

cout<<"请输入C++成绩"<<endl;
cin>>cpp;

cout<<"请输入英语成绩"<<endl;
cin>>english;

  cout<<"请输入数学成绩"<<endl;
cin>>maths;

outfile<<num<<"\t"<<name<<"\t"<<cpp<<"\t"<<english<<"\t"<<maths<<"\t"<<endl;
outfile.close();
updatenumber(1);
cout<<"添加成员成功,按任意键返回主菜单"<<endl;
getchar();
getchar();

menu();
}
void student::display_all()//输出全部信息的函数
{  
int n;
n=number();
cout<<" 学号"<<" 姓名"<<" C++ "<<"英语成绩 "<<" 数学成绩"<<endl;
infile.open("student.txt",ios::in);
if(!infile) 
{
cout<<"文件打开错误"<<endl;
abort();
}

   
for(int i=0; i<n;i++)
{  
infile>>num>>name>>cpp>>english>>maths;
cout<<setw(5)<<num<<" "<<name<<" "<<cpp<<" "<<english<<" "<< maths<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
}
infile.close ();
cout<<"所有成员信息输出完毕,按任意键返回主菜单"<<endl;
  getchar();
getchar();

menu();
}
void student::search_name()//通过姓名查找学生
{  

int n;
n=number();
string temp;
cout<<"请输入需要查找学生的姓名"<<endl;
cin>>temp;
  infile.open("student.txt",ios::in);
if(!infile) 
{
cout<<"文件打开错误"<<endl;
abort();
}
for(int i=0; i<n;i++)
{
  infile>>num>>name>>cpp>>english>>maths;
if(temp==name)
{
cout<<" 学号 "<<"姓名 "<<"C++成绩 "<<"英语成绩 "<<"数学成绩"<<endl;
  cout<<setw(5)<<num<<" "<<name<<" "<<cpp<<" "<<english<<" "<<maths<<endl;
}
}
infile.close ();
cout<<"查找该学生信息完毕,按任意键返回主菜单"<<endl;
getchar();
getchar();

menu();
}
void student::search_num()//通过学号查找学生
{
int n;
n=number();
int temp;
cout<<"请输入需要查找学生的学号"<<endl;
cin>>temp;
infile.open("student.txt",ios::in);

{
cout<<"文件打开错误"<<endl;
abort();
}

for(int i=0; i<n;i++)
{
infile>>num>>name>>cpp>>english>>maths;
if(temp==num)
  {
cout<<" 学号 "<<"姓名 "<<"C++成绩 "<<"英语成绩 "<<"数学成绩"<<endl;
  cout<<setw(5)<<num<<" "<<name<<" "<<cpp<<" "<<english<<" "<<maths<<endl;
}
}
infile.close ();
cout<<"查找该学生信息完毕,按任意键返回主菜单"<<endl;
getchar();
getchar();

menu();
}
void student::countclass()//成绩管理的函数
{
int n;
n=number();
  student a[100];

  infile.open("student.txt",ios::in);
if(!infile) 
{
cout<<"文件打开错误"<<endl;
abort();
}
for(int i=0;i<n;i++)
{
infile>>num>>name>>cpp>>english>>maths;
a[i].num=num;
a[i].name=name;
a[i].cpp=cpp;
a[i].english=english;
a[i].maths=maths;
}
infile.close();
 cout<<"请输入科目 数学 英语 cpp"<<endl;
 string kemu;
 cin>>kemu;
 cout<<"请输入 分数 下限 上限"<<endl;
 float c,b;
 cin>>c>>b;
if (kemu=="cpp")
{
  cout<<" 姓名"<<" "<<"C++"<<endl;
  for(int i=0;i<n;i++)
  if((a[i].cpp>=c)&&(a[i].cpp<=b))
cout<<setw(5)<<a[i].name<<" "<<a[i].cpp<<endl;
}
else if(kemu=="英语")
{
  cout<<" 姓名"<<" "<<"英语"<<endl;
  for(int i=0;i<n;i++)
  if((a[i].english>=c)&&(a[i].english<=b))
cout<<setw(5)<<a[i].name <<" "<<a[i].english<<endl;
}
if (kemu=="数学")
{
  cout<<" 姓名 "<<" "<<"数学"<<endl;
  for(int i=0;i<n;i++)
  if((a[i].maths>=c)&&(a[i].maths<=b))
cout<<setw(5)<<a[i].name <<" "<<a[i].maths <<endl;
}
cout<<"成绩统计完毕,按任意键返回主菜单"<<endl;
getchar();
getchar();

menu();
}
void student::student_delete()//删除信息的函数
{
int n;
n=number();
  student a[100];
  infile.open("student.txt",ios::in);
if(!infile) 
{
cout<<"文件打开错误"<<endl;
abort();
}
for(int i=0;i<n;i++)
{
infile>>num>>name>>cpp>>english>>maths;
a[i].num=num;
a[i].name=name;
a[i].cpp=cpp;
a[i].english=english;
a[i].maths=maths;
}
infile.close();
  cout<<"请输入要需删除信息的姓名"<<endl;
  string temp;
  cin>>temp;
  for( i=0;i<n;i++)
  {  
if(temp==a[i].name)
  if(i==n-1)

break;
}
else
{
for(int j=i;j<n-1;j++)
{
a[j]=a[j+1];
}

break;
}
  }
  n--;
outfile.open("student.txt",ios::out|ios::app);
  for(i=0;i<n;i++)
{


outfile<<a[i].num<<"\t"<<a[i].name<<"\t"<<a[i].cpp<<"\t"<<a[i].english<<"\t"<<a[i].maths<<"\t"<<endl;

}
outfile.close();
updatenumber(-1);
  cout<<"删除信息完毕,按任意键返回主菜单"<<endl;
getchar();
getchar();

menu();
}

void student::xiugai()//修改信息的函数
{
int n;
n=number();
  student a[100];
  infile.open("student.txt",ios::in);
if(!infile) 
{
cout<<"文件打开错误"<<endl;
abort();
}
for(int i=0;i<n;i++)
{
infile>>num>>name>>cpp>>english>>maths;
a[i].num=num;
a[i].name=name;
a[i].cpp=cpp;
a[i].english=english;
a[i].maths=maths;
}
infile.close();
cout<<"请输入需要修改信息的学号"<<endl;
int temp;  
string temp2; 
cin>>temp;
for( i=0;i<n;i++)
{  
if(temp==a[i].num ) {cout<<"请选择修改的数据 学号 cpp 姓名 英语 数学"<<endl;break;}
}

cin>>temp2;
if(temp2=="学号")
{
cout<<"请输入修改后的学号"<<endl;
cin>>a[i].num ;
}
else if(temp2=="cpp") 
{
cout<<"请输入修改后的成绩"<<endl;
cin>>a[i].cpp ;
}
else if(temp2=="姓名") 
{
cout<<"请输入修改后的姓名"<<endl;
cin>>a[i].name ;
}
else if(temp2=="英语")

cout<<"请输入修改后的英语成绩"<<endl;
cin>>a[i].english ;
}
else if(temp2=="数学")  
{
cout <<"请输入修改后的数学成绩"<<endl;
cin>>a[i].maths ;
}

  outfile.open("student.txt",ios::out|ios::app);
  for(i=0;i<n;i++)
{
  outfile<<a[i].num<<"\t"<<a[i].name<<"\t"<<a[i].cpp<<"\t"<<a[i].english<<"\t"<<a[i].maths<<"\t"<<endl;

}
outfile.close();
  cout<<"修改息完毕,按任意键返回主菜单"<<endl;
getchar();
getchar();
menu();
}
void menu()
{

student s;
cout<<" 欢迎使用学生管理系统 "<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
cout<<" 请选择功能 "<<endl;
cout<<" 1.输出学生全部信息 2.修改信息 3.删除信息 4.按姓名查找学生 "<<endl;
cout<<" 5·按学号查找学生 6 成绩统计 7排序 8添加成员 "<<endl;
cout<<" 9.退出系统"<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
  cout<<"请输入功能的数字"<<endl;
int a;
cin>>a;
switch(a)
{
case 1: s.display_all();break;
case 2: s.xiugai();break;
case 3: s.student_delete();break;
  case 4: s.search_name();break;
case 5: s.search_num();break;
case 6: s.countclass();break;
case 7: s.classsort();break;
  case 8: s.addperson();break;
  case 9: exit(0);
}
}
void student::updatenumber (int n)
{  
infile.open("studentnumber.txt",ios::in);
if(!infile) 
{
cout<<"文件打开错误"<<endl;
abort();
}
int number=0;
infile>>number;
number+=n;
infile.close ();
outfile.open("studentnumber.txt",ios::out|ios::app);
outfile<<number;
outfile.close ();
}
int student::number()
{
infile.open("studentnumber.txt",ios::in);
if(!infile) 
{
cout<<"文件打开错误"<<endl;
abort();
}
int number;
infile>>number;
return number;
}

void main()
{  

menu();

}

作者: qq871634123   发布时间: 2011-06-13

一般说是有非法字符

作者: zhll879   发布时间: 2011-06-13

比如说

作者: qq871634123   发布时间: 2011-06-13