在编写学生信息管理系统时,想从文件读出成绩。3个成绩,前两个都正常,但是第三个却出现异常。
第三个数字,不论我输入什么,运行出来都是“2.37152e-322”。
希望大佬们能帮忙看一下,感激不尽。
代码如下:
#include
#include
#include
using namespace std;
class student{
public: //学生基本信息
string name;
string sex;
int number; //学号
double grade1; //平时成绩
double grade2; //期末成绩
double grade3; //综合成绩
};
student s[100];
void input(){
int i;
fstream file("student.txt", ios::out );//打开文件
for(i=0;i
cout
cin>>s[i].number;
cout<<"输入学生姓名:";
cin>>s[i].name;
cout<<"输入学生性别:";
cin>>s[i].sex;
cout<<"输入学生平时成绩"<
cin>>s[i].grade1;
cout<<"输入学生期末成绩"<
cin>>s[i].grade2;
cout<<"输入学生综合成绩"<
cin>>s[i].grade3;
file.write((char *)&s[i], sizeof(s[i]));//把该学生对象写入文件
}
file.close(); //关闭文件
}
int main()
{
void input();
cout<<endl<<endl;
cout<<" ****************一班学生信息管理系统*******************"<<endl<<endl;
string name,pwd;
cout<<"请输入班主任访问账号:";
cin>>name;
cout<<"请输入班主任访问密码:";
cin>>pwd;
cout<<"输入正确,欢迎访问!"<<endl<<endl;
cout<<"本班共20个学生"<<endl;
int key; char ch; string str; int flag=0;
do{
cout<<" **********主菜单: **********"<<endl
<<" ********** 1、录入学生信息 **********"<<endl
<<" ********** 2、查询学生信息 **********"<<endl
<<" ********** 3、删除学生信息 **********"<<endl
<<" ********** 4、修改学生信息 **********"<<endl
<<" ********** 5、排序学生信息 **********"<<endl
<<" ********** 0、退出系统 **********"<<endl<<endl;
cout<<"输入访问序号:";
cin>>key;
while(key<0&&key>5){
cout<<"输入错误,请重新输入:";
cin>>key;
}
if(key==0) break;
switch (key){
case 1://1、录入学生信息
{
cout<<" 录入学生信息"<<endl;
do{
input();
cout<<"输入y继续操作,输入其他返回上一页";
cin>>ch;
}while(ch=='y');
break;
}
case 2://查询学生信息
{
cout<<"查询学生信息"<<endl;
do{
int i;
cout<<"请输入要查询的学生的学号"<<endl;
cin>>i;
student stu[i];
fstream file("student.txt", ios::in);//打开文件
while(!file.eof())
{
file.read((char *)&stu[i], sizeof(stu[i]));
flag=1;
cout<<"学生姓名 性别 平时成绩 期末成绩 综合成绩"<<endl;
cout<<stu[i].name<<" \t"<<stu[i].sex<<"\t"<<stu[i].grade1<<" \t"<<stu[i].grade2<<"\t "<<stu[i].grade3<<"\t"<<endl;
break;
}
file.close();
cout<<"输入y继续操作,输入其他返回上一页";
cin>>ch;
}while(ch=='y');
break;
}
}
}while(key||ch==0);
}