#include <iostream>
#include <fstream>
#include <iomanip> //流格式控制预处理命令
using namespace std;
class Student
{
private:
int no;
char name[16];
int score;
public:
void Input()
{
cin>>no>>name>>score;
}
void Show() const
{
cout<<setw(16)<<no<<setw(18)<<name<<setw(16)<<score<<endl;
}
};
//学生管理类
class StudentManage
{
private:
static void Write(); //写入学生信息
static void Show(); //显示学生信息
public:
static void Run(); //运行学生管理
};
//管理类的部分实现
void StudentManage::Write() //写入学生信息
{
Student objStu; //学生对象
ofstream outFile("stud.dat",ios::binary|ios::app); //定义文件对象
if (!outFile)
{
cout<<"打开文件失败!"<<endl;
exit(1);
}
char flag='Y'; //判断是否继续输入的标志,初始化为'Y'
cout<<"输入学生信息数据(学号 姓名 成绩):"<<endl;
while (toupper(flag)=='Y')
{
objStu.Input(); //输入学生信息
outFile.write((char *)&objStu,sizeof(objStu)); //写入文件
cout<<"是否继续录入信息?(Y/N)";
cin>>flag;
}
outFile.close(); //关闭文件
}
void StudentManage::Show() //显示学生信息
{
Student objStu; //学生对象
ifstream inFile("stud.dat",ios::binary); //定义文件对象
if(!inFile)
{
cout<<"打开文件失败!"<<endl;
exit(2);
}
cout<<"显示学生信息"<<endl;
cout<<setw(16)<<"学号"<<setw(18)<<"姓名"<<setw(16)<<"成绩"<<endl;
inFile.read((char *)&objStu,sizeof(objStu)); //从文件读数据
while (!inFile.eof()) //循环显示学生信息
{
objStu.Show(); //显示学生信息
inFile.read((char *)&objStu,sizeof(objStu)); //从文件中读数
cout<<"jixu?"<<endl;
}
inFile.close(); //关闭文件
}
void StudentManage::Run()
{
int select; //临时变量
do
{
cout<<"选择(1.写入学生信息 2.显示学生信息 3 退出):";
cin>>select; //输入选择
switch (select)
{
case 1:
Write(); //写入学生信息
break;
case 2:
Show(); //显示学生信息
break;
case 3:
break; //退出
default: //其他情况,表示选择有误
cout<<"选择有误!"<<endl;
break;
}
}while(select!=3);
}
int main(void)
{
StudentManage::Run(); //运行学生管理
system ("PAUSE");
return 0;
}