实验7输入输出流库_第1页
实验7输入输出流库_第2页
实验7输入输出流库_第3页
实验7输入输出流库_第4页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验内容程序 Ex_File: 用文件来实现一个学生记录的添加、查找等操作。提示 :学生记录用类CstudenRec表示,它的数据成员有:姓名、学号、3门课的成绩以及总平均分,成员函数记录显示Print、记录键盘输入Input 和数据校验 Validate 以及“ <<” >> ”运算符重载等。文件操作用CStuFile 类定义,成员函数有数据的添加Add、查找 Seek、显示 List 等。实验准备和说明( 1)在学习完第 2章内容之后进行本次实验。( 2)编写本次上机所需要的程序。实验步骤1.创建工作文件夹打开计算机,在“ D:Visual C+ 程序、 LiMin

2、g ”文件夹中创建一个新的子文件夹“实验7”。2.创建控制台应用程序项目Ex_File创建控制台应用程序项目Ex_File 的具体步骤如下。( 1)启动 Visual C+6.0。( 2) 选择“文件”“ 新建”菜单命令,显示出“新建”对话框。从列表框中选中Win32ConsoleApplication 项。(3)在“工程”编辑框中输入控制台应用程序项目名称Ex_File ,并将项目文件夹定位到“D:Visual C+ 程序实验 7”。(4)单击“确定”按钮,显示Win32应用程序向导对话框。选中An empty project项。单击“完成”按钮,系统将显示向导创建的信息,单击“确定”按钮将

3、自动创建此应用程序。3.添加 Ex_File.h 文件添加 Ex_File.h 文件的具体步骤如下。( 1)选择“文件”“新建”菜单命令,将“新建”对话框切换到“文件”标签页面,选中“C/C+Header File”文件类型,在文件编辑框中输入Ex_File.h ,单击“确定”按钮。( 2)在 Ex_File.h 中添加 CstudentRec 类代码:#include<iostream.h># include<iomanip.h># include<fstream.h># include<string.h>class CstudentRecpu

4、blic:CstudentRec(char*name,char*id,float score);CstudentRec()chFlag=N;默认构造函数CStudentRec();/默认析构函数void Input(void);/键盘输入,返回记录float Validate(void);/成绩数据的输入验证,返回正确值voidPrint(bool isTitle=false); /记录显示friendostream&operator<<(ostream&os,CStudentRec&stu);friendistream&operator>&g

5、t;(istream&is,CStudentRec&stu);char chFlag;/标志, A表示正常, N表示空char strName20;/姓名char strID10;/学号float fScore3;/3门成绩float fAve ;/总平均分 ;/CStudent 类的实现CStudentRec:CStudentRec(char*name,char*id,float score)strncpy(strName,name,20);strncpy(strID,id,10);fAve=0;for(ont i=0;i<3;i+)fScorei=scorei;fAv

6、e+=fScorei;fAve=float(fAve/3.0);chFlag='A'void CStudentRec:Input(void)cout<<" 姓名 "cin>>strName;cout<<" 学号 "cin>>strID;float fSum=0;for9int i=0;i<3;i+)cout<<" 成绩 "<<i+1<<": "fScorei+Validate();fSum+=fScorei;f

7、Ave=(float)(fSum/3.0);chFlag='A'float CStudentRec:Validate(void)int s;lchar buf80;float res;for(;)cin>>res;s=cin.rdstate();while(s)cin.clear();cin.getline(buf,80);cout<<" 非法输入,重新输入:";cin>>res;s=cin.rdstate();if(res<=100.0)&&(res>=0.0)break;elsecout&l

8、t;<" 输入的成绩超过范围!请重新输入:" ;return res;void CStudentRec:Print(bool isTitle)cout.setf(ios:left);if(isTitle)cout<<setw(20)<<" 姓名 "<<setw(10)<<" 学号 "<<"t 成绩 1"<<"t 成绩 2"<<"t 成绩 3"<<"t 平均分 &qu

9、ot;<<endl;cout<<setw(20)<<strName<<setw(10)<<strID;for(int i=0;i<3;i+)cout<<"t"<<fScorei;cout<<"t"<<fAve<<endl;ostream&operator<<(ostream&os,CStudentRec&stu)os.write(&stu.chFlag,sizeof(char);os.w

10、rite(stu.strName,sizeof(stu.strName);os.write(stu.strID,sizeof(stu.strID);os.write(char*)stu.fScore,sizeof(float)*3;os.write(char*)&stu.fAve,sizeof(float);return os;istrean& operator>>(istream& is,CStudentRec& stu)char name20,id10;is.read(&stu.chFlag,sizeof(char);is.read(na

11、me,sizeof(name);is,read(id,sizeof(id);is.read(char*)stu.fScore,sizeof(float)*3);is.read(char*)&stu.fAve,sizeof(float);strncpy(stu.strName,name,sizeof(name);strncpy(stu.strID,id,sizeof(name);return is;4.添加 Ex_File.cpp 文件,测试 CStudentRec 类添加 Ex_File.cpp 文件,测试 CStudentRec类的具体步骤如下。( 1)选择“文件”“新建”菜单命令,

12、将“新建”对话框切换到“文件”标签页面,选中“C+Source File ”文件类型,在文件编辑框中输入Ex_File.cpp,单击“确定”按钮。( 2)在 Ex_File.cpp 中添加 CStudentRec类的测试代码:#include<iostream.h>#include” Ex_File.h ”void main()float fScore=80,90,92;CStudentRec rec1(“ Ding”,”21050101”,fScore);Rec1.Print(true);CStudentRec rec2;Rec2.Input();Rec2.Print(true)

13、;(3)编译运行并测试, CStudentRec类的测试结果如图T7.1所示。试一试若将输入的学生记录保存在文件中,并从文件中读取记录,则这样的功能应如何实现?5添加 CStuFile 类代码添加 CStuFile 类代码的具体步骤如下。( 1)将工作区窗口切换到 FileView 页面,展示所有结点,双击 Ex_File.h 结点。( 2)在 Ex_File.h 文件后面添加以下 CStuFile 类代码:classCStuFilepublic:CStuFile(char*filename);CStuFile();void Add(CStudentRec &stu);int Seek

14、(char*id,CStudentRec &stu);int List(int nNum=-1);private:char*strFileName;CStuFile:CStuFile(char*filename)strFileName=new charstrlen(Filename)+1;strcpy(strFileName,filename);CStuFile: CStuFile()if(strFileName)deletestrFileName;void CStuFile:Add(CStudentRec stu)Fstream file(strFileName,ios:outlio

15、s:applios:binary);file<<stu;file.close();int CStuFile:Seek(char*id,CStudentRec&stu)int nRec= -1;Fstream file(strFileName,ios:inlios:nocreate);if(!file)cout<<”文件” <<strFileName<<”不能打开! n”;return nRec;int i=0;while(!file.eof()file>>stu;if(strcmp(id,stu.strID)=0)&&

16、amp;(stu.chFlag!= N )nRec = I;break;i+;file.close();return nRec;/列表显示 nNum 个记录, -1时全部显示,并返回文件中的记录数intCstuFile:List(int nNum)Fstream file(strFileName,ios:inlios:nocreate);/ 打开文件用于只读if(!file)cout<<”文件” <<strFileName<< “不能打开 !n ”;return 0;int nRec=0;if(nNum=-1)!(nNum>0)cout_setf(io

17、s:left);cout<<setw(6)<<”记录” <<setw(20)<< ”姓名” <<setw(10)<< ”学号”<< ”t 成绩 1t 成绩 2t 成绩 3t 平均分” <<endl;while (!file.eof()CstudentRec data;file>>data;if(data.chFlag=”A ”)nRec+;if(nNum=-1)|(nRec<=nNum)cout.setf(ios:left);cout<<setw(6)<<n

18、Rec;data.Print();file.close();return nRec;6.添加 CstuFile 类的测试代码添加 CstuFile 类的测试代码的具体步骤如下。(1)在工作区窗口的FileView 页面中,双击Ex_File.cpp 结点。(2)修改 Ex_File.cpp 文件的代码:#include<iostream.h>#include “Ex_File.h ”CstuFile theStu(“student.txt” );/定义一个全局对象void AddTo(int nNum)/ 输入多个记录CstudentRec stu;for(int i=0;i<nNum;i+)cout<<”请输入第” <<i+1<< ”记录:” <<endl;stu.Input();theStu.Add(stu);void main()AddTo(3);theStu.List();Cstudent one;if (heStu.Seek(“21050102” ,one)>=0)one Print(true);elsecout<<”没有找到 !n”;theStu.List();(3) 编译运行并测试,按运行的提示内容输入下列3哥记录数据:MaWenTao210

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论