C++程序纠错:可以运行,但总是进入到死循环……而且文件的写入也有问题……
#include<string>#include<fstream>#include<iostream>usingnamespacestd;classstudent{pub...
#include<string>
#include<fstream>
#include<iostream>
using namespace std;
class student
{
public:
char name[30]; //学生姓名
char intime[100]; //入学时间
char offtime[100]; //离校时间
char reason[100]; //离校原因
char number[10]; //学号
char grade[40]; //年级
char Class; //班级
char fee; //学费金额
student()//构造函数及其初始化
{
name[0]='?';
intime[0]='?';
offtime[0]='?';
reason[0]='?';
number[10]=0;
grade[40]='?';
Class=0;
fee=0;
}
void Create_xueji()
{
int i;
cout<<"现在创建学生学籍信息表\n";
student stu[100]; //类的对象数组
ofstream xuejifile;
xuejifile.open("XUEJI.txt",ios::app);
if(!xuejifile)//调用重载算符函数测试流
{
cerr<<"打开文件错误!"<<endl;
abort();//结束
}
xuejifile<<"信息科学与工程学院学生学籍信息"<<endl;
cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";
cout<<"请按顺序输入学生的\n学号,姓名,年级,班级\n入学时间,学费金额,离校时间(如果仍未离校则填写“暂无”),离校原因(如果仍未离校则填写“暂无”)。"<<endl;
cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n";
for(i=0;cin>>stu[i].number>>stu[i].name>>stu[i].grade>>stu[i].Class>>stu[i].intime>>stu[i].fee>>stu[i].offtime>>stu[i].reason;i++) {
xuejifile<<"学号"<<stu[i].number<<"\t";
xuejifile<<"姓名"<<stu[i].name<<"\t";
xuejifile<<"年级"<<stu[i].grade<<"\t";
xuejifile<<"班级"<<stu[i].Class<<"\t";
xuejifile<<"入学时间"<<stu[i].intime<<"\t";
xuejifile<<"学费金额"<<stu[i].fee<<"\t";
xuejifile<<"离校时间"<<stu[i].offtime<<"\t";
xuejifile<<"离校原因"<<stu[i].reason<<"\t\n";
}
xuejifile.close();
}
void main()
{
student stu[50];
char k;
do{
cout<<"********************************"<<'\n';
cout<<"\t欢迎进入班级信息管理系统\n";
cout<<"********************************"<<'\n';
cout<<"\t1:学生学籍创建"<<'\n';
cout<<"\t2.学生学籍查询"<<'\n';
cout<<"\t3:学生学籍修改"<<'\n';
cout<<"\t4:学生毕业查询"<<'\n';
cout<<"\t5.学生成绩单创建"<<'\n';
cout<<"\t6.学生成绩查询"<<'\n';
cout<<"\t7.学生成绩修改"<<'\n';
cout<<"\t8.学生缴费信息创建"<<'\n';
cout<<"\t9.学生缴费信息查询"<<'\n';
cout<<"\t10.学生缴费信息修改"<<'\n';
cout<<"\t11:学生课表创建(包括选课)"<<'\n';
cout<<"\t12:学生课表查询"<<'\n';
cout<<"\t13:学生课表修改"<<'\n';
// cout<<"\t14.学生奖学金\n";
cout<<"\t0:退出管理"<<'\n';
cout<<"********************************"<<'\n';
cout<<"请输入你要进行的管理"<<'\n';
cin>>k;
cout<<"\n\n";
switch(k)
{
case '1':Create_xueji();break;
default:cout<<"错误指令,请从新输入"<<"\n";break;
}
}while(k!=0);
} 展开
#include<fstream>
#include<iostream>
using namespace std;
class student
{
public:
char name[30]; //学生姓名
char intime[100]; //入学时间
char offtime[100]; //离校时间
char reason[100]; //离校原因
char number[10]; //学号
char grade[40]; //年级
char Class; //班级
char fee; //学费金额
student()//构造函数及其初始化
{
name[0]='?';
intime[0]='?';
offtime[0]='?';
reason[0]='?';
number[10]=0;
grade[40]='?';
Class=0;
fee=0;
}
void Create_xueji()
{
int i;
cout<<"现在创建学生学籍信息表\n";
student stu[100]; //类的对象数组
ofstream xuejifile;
xuejifile.open("XUEJI.txt",ios::app);
if(!xuejifile)//调用重载算符函数测试流
{
cerr<<"打开文件错误!"<<endl;
abort();//结束
}
xuejifile<<"信息科学与工程学院学生学籍信息"<<endl;
cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";
cout<<"请按顺序输入学生的\n学号,姓名,年级,班级\n入学时间,学费金额,离校时间(如果仍未离校则填写“暂无”),离校原因(如果仍未离校则填写“暂无”)。"<<endl;
cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n";
for(i=0;cin>>stu[i].number>>stu[i].name>>stu[i].grade>>stu[i].Class>>stu[i].intime>>stu[i].fee>>stu[i].offtime>>stu[i].reason;i++) {
xuejifile<<"学号"<<stu[i].number<<"\t";
xuejifile<<"姓名"<<stu[i].name<<"\t";
xuejifile<<"年级"<<stu[i].grade<<"\t";
xuejifile<<"班级"<<stu[i].Class<<"\t";
xuejifile<<"入学时间"<<stu[i].intime<<"\t";
xuejifile<<"学费金额"<<stu[i].fee<<"\t";
xuejifile<<"离校时间"<<stu[i].offtime<<"\t";
xuejifile<<"离校原因"<<stu[i].reason<<"\t\n";
}
xuejifile.close();
}
void main()
{
student stu[50];
char k;
do{
cout<<"********************************"<<'\n';
cout<<"\t欢迎进入班级信息管理系统\n";
cout<<"********************************"<<'\n';
cout<<"\t1:学生学籍创建"<<'\n';
cout<<"\t2.学生学籍查询"<<'\n';
cout<<"\t3:学生学籍修改"<<'\n';
cout<<"\t4:学生毕业查询"<<'\n';
cout<<"\t5.学生成绩单创建"<<'\n';
cout<<"\t6.学生成绩查询"<<'\n';
cout<<"\t7.学生成绩修改"<<'\n';
cout<<"\t8.学生缴费信息创建"<<'\n';
cout<<"\t9.学生缴费信息查询"<<'\n';
cout<<"\t10.学生缴费信息修改"<<'\n';
cout<<"\t11:学生课表创建(包括选课)"<<'\n';
cout<<"\t12:学生课表查询"<<'\n';
cout<<"\t13:学生课表修改"<<'\n';
// cout<<"\t14.学生奖学金\n";
cout<<"\t0:退出管理"<<'\n';
cout<<"********************************"<<'\n';
cout<<"请输入你要进行的管理"<<'\n';
cin>>k;
cout<<"\n\n";
switch(k)
{
case '1':Create_xueji();break;
default:cout<<"错误指令,请从新输入"<<"\n";break;
}
}while(k!=0);
} 展开
3个回答
展开全部
读入信息的for()循环没判断啊
更多追问追答
追问
额……我仿照while(cin>>a){outfile<<a;}这种类型写的。当输入Ctrl-z时跳出循环
追答
#include
#include
#include
using namespace std;
class student
{
public:
char name[30]; //学生姓名
char intime[100]; //入学时间
char offtime[100]; //离校时间
char reason[100]; //离校原因
char number[10]; //学号
char grade[40]; //年级,
char Class; //班级
char fee; //学费金额
student()//构造函数及其初始化
{
name[0]='\0';//初始化,将就下吧
intime[0]='\0';
offtime[0]='\0';
reason[0]='\0';
number[0]=0;
grade[0]='\0';//40是超出界限了,你以为给他赋值个字符就能初始化整个串吗?
Class=0;
fee=0;
}
}; //这里类定义结束,分号不能少
void Create_xueji()
{
int i;
cout>stu[i].number>>stu[i].name>>stu[i].grade>>stu[i].Class>>
stu[i].intime>>stu[i].fee>>stu[i].offtime>>stu[i].reason;
xuejifile<<"学号"<<stu[i].number<<"\t";
xuejifile<<"姓名"<<stu[i].name<<"\t";
xuejifile<<"年级"<<stu[i].grade<<"\t";
xuejifile<<"班级"<<stu[i].Class<<"\t";
xuejifile<<"入学时间"<<stu[i].intime<<"\t";
xuejifile<<"学费金额"<<stu[i].fee<<"\t";
xuejifile<<"离校时间"<<stu[i].offtime<<"\t";
xuejifile<<"离校原因"<<stu[i].reason<<"\t\n";
}
xuejifile.close();
}
你student类定义在哪结束的?我这给你改了下可以运行了,你看看有什么问题吧,我没仔细看
展开全部
试试把for 改成下面这样,把输入的语句 放到for里
for(i=0;i != 100;++i) //这里的100是由于你前面总共有 100 stu 对象.
{
cin>>stu[i].number>>stu[i].name>>stu[i].grade>>stu[i].Class>>stu[i].intime>>stu[i].fee>>stu[i].offtime>>stu[i].reason;
xuejifile<<"学号"<<stu[i].number<<"\t";
xuejifile<<"姓名"<<stu[i].name<<"\t";
xuejifile<<"年级"<<stu[i].grade<<"\t";
xuejifile<<"班级"<<stu[i].Class<<"\t";
xuejifile<<"入学时间"<<stu[i].intime<<"\t";
xuejifile<<"学费金额"<<stu[i].fee<<"\t";
xuejifile<<"离校时间"<<stu[i].offtime<<"\t";
xuejifile<<"离校原因"<<stu[i].reason<<"\t\n";
}
for(i=0;i != 100;++i) //这里的100是由于你前面总共有 100 stu 对象.
{
cin>>stu[i].number>>stu[i].name>>stu[i].grade>>stu[i].Class>>stu[i].intime>>stu[i].fee>>stu[i].offtime>>stu[i].reason;
xuejifile<<"学号"<<stu[i].number<<"\t";
xuejifile<<"姓名"<<stu[i].name<<"\t";
xuejifile<<"年级"<<stu[i].grade<<"\t";
xuejifile<<"班级"<<stu[i].Class<<"\t";
xuejifile<<"入学时间"<<stu[i].intime<<"\t";
xuejifile<<"学费金额"<<stu[i].fee<<"\t";
xuejifile<<"离校时间"<<stu[i].offtime<<"\t";
xuejifile<<"离校原因"<<stu[i].reason<<"\t\n";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原因在于Create_xueji()函数中这个for循环的问题
for(i=0;cin>>stu[i].number>>stu[i].name>>stu[i].grade>>stu[i].Class>>stu[i].intime>>stu[i].fee>>stu[i].offtime>>stu[i].reason;i++)
for循环的第二段分句就是判断结束条件如for(i=0;i<10;i++)即是当i为10的时候就跳出循环,你的没有判断退出,明白?
for(i=0;cin>>stu[i].number>>stu[i].name>>stu[i].grade>>stu[i].Class>>stu[i].intime>>stu[i].fee>>stu[i].offtime>>stu[i].reason;i++)
for循环的第二段分句就是判断结束条件如for(i=0;i<10;i++)即是当i为10的时候就跳出循环,你的没有判断退出,明白?
追问
额……我仿照while(cin>>a){outfile<<a;}这种类型写的。当输入Ctrl-z时跳出循环。。。好像和什么EOF文件结束符有关……我是新手,不知道这样用行不行。
追答
额 输入输出流不怎么清楚 一般都不这样做的 while里面可以加判断来跳出while,你可以看看标准库里对cin>>返回值的定义是什么的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询