实验9 输入与输出流——学生信息管理
目的
1. 掌握流的概念。
2. 掌握文件的打开与关闭。
3. 掌握文件的读写操作。
实验内容与要求
建立一个文本文件“students.txt”,打开该文件,向其添加学生信息并显示学生资料信息。要求可反复输入、显示。
实验任务分解

指导
1. 建立工程
(1) 新建一个win32 Console Application的工程:
打开VC++开发软件,从[文件]菜单中点击[新建]菜单项,出现如图所示:
在右上角的工程下输入该工程的名称,如 c13,并设置该工程所保存的路径。
最后点击确定。

(2) 当确定后会出现要你选择工程类型的对话框,如图所示:请选择一个空的工程,即第一个选项。

(3) 当单击确定后,工程建立完毕,接下来建立程序源文件,请再单击[文件]菜单下的[新建]出现原先出现的对话框,请选择 “文件”选项卡中的c++ source file选项,并取名,如c13

(4) 当确定后,就进入了源代码的编辑窗口,如图所示:
2. 学生信息类
(1) 声明学生信息类:STUDENT。
class STUDENT{
}
(2) 定义描述学生信息的私有变量:如学生编号、学生名字、学生性别、专业名称、班级名称、年级名称、家庭住址、电话号码等。
(3) 学生信息输入的方法,依次输入相关信息,由于要被主函数调用,定义为公有方法。
void srBh(){ //输入编号
cout<<"请输入学生编号:";
cin>>bh;
cout<<endl;
}
(4) 学生信息输出的方法。
void scXX(){ //输出学生信息
cout<<"你输入的学生信息如下:"<<endl;
cout<<"学生编号:"<<bh<<" ";
}
3. 记事本类
(1) 声明记事本类:NOTEBOOK。
class NOTEBOOK{
}
(2) 定义文件名、流对象,创建学生类对象“STUDENT s;”。
private:
char filename[20];
fstream f;
STUDENT s;
(3) 构造方法:
NOTEBOOK(char *f){
strcpy(filename,f);
}
(4) 创建文件的方法:creat( )。
f.open(filename, ios::in|ios::trunc);
f.close();
(5) 添加记录方法:append( )。
f.open(filename, ios::in|ios::app);
if(!f){
cerr<<"文件不能打开!"<<endl;
return false;
}else{
f<<"学生编号:"<<s.bh<<"学生姓名:"<<s.mz<<"学生性别:"<<s.xb;
f<<"专业名称:"<<s.zy<<"年级:"<<s.nj<<"班级:"<<s.bj;
f<<"家庭住址:"<<s.dz<<"电话号码:"<<s.dh<<endl;
}
(6) 显示记录方法:display( )。
f.open(filename, ios::in|ios::app);
if(!f){
cerr<<"文件不能打开!"<<endl;
return;
}else{
f.seekg(0);
while(!f.eof()){
f.getline(p,100);
cout<<p<<endl;
}
}
f.close();
4. 主函数
(1) 在主函数创建记事本实例,并指定文本文件为“students.txt“。
NOTEBOOK b("students.txt");
(2) 循环输入操作指令,根据指令完成创建、增加、显示功能。
while(true){
cout << "请选择操作:";
cin>>w;
switch(w){
case 1:b.creat();break;
}

