实验7输入输出流库_第1页
实验7输入输出流库_第2页
实验7输入输出流库_第3页
实验7输入输出流库_第4页
实验7输入输出流库_第5页
免费预览已结束,剩余9页可下载查看

付费下载

下载本文档

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

文档简介

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

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

3、建此应用程序。char chFlag;/标志,A 表示正常,N 表示空3.添加 Ex File.h 文件添加 Ex File.h 文件的具体步骤如下。(1)选择“文件新建”菜单命令,将“新建”对话框切换到“文件”标签页面,选中C/C+Header File ”文件类型,在文件编辑框中输入Ex_File.h,单击“确定”按钮。(2) 在 Ex_File.h 中添加 CstudentRec 类代码:#in clude# in cludevioma nip.h# in clude# in cludeclass Cstude ntRecpublic:Cstude ntRec(char* name,ch

4、ar*id,float score);Cstude ntRec()chFlag=N;CStudentRec();/默认析构函数ostrea m&operator(istream&i s,CStude ntRec&stu);void In put(void);/键盘输入,返回记录float Validate(void);/成绩数据的输入验证,返回正确值voidPrint(bool isTitle=false);/记录显示/默认构造函friendfriend/CStude nt 类的实现CStude ntRec:CStude ntRec(char* name,char*id

5、,floatscore) str ncpy(strName ,n ame,20);str ncpy(strlD,id,10);fAve=0;for(ont i=0;i strName;cout 学号;ci n strID;char strName20;/姓名char strlD10;/学号float fScore3;3 门成绩 ;float fAve ;总平均分float fSum=0;for9int i=0;i3;i+)cout 成绩i+l res;s=ci n.rdstate();while(s)ci n.clear();cin. getli ne(buf,80);fSum+=fScore

6、i;COUt非法输入,重新输入:”;cin res;s=c in .rdstate();if(res=O.O)break;elseCOUtvv输入的成绩超过范围!请重新输入:;return res;void CStudentRec:Print(bool isTitle)cout.setf(ios:left);if(isTitle)coutvsetw(20)vv 姓名setw(10)vv 学号t 成绩 1t成绩 3t 平均分endl;coutvsetw(20)vvstrNamevvsetw(10)vvstrlD;for(int i=0;i3;i+) couttvvfScorei;coutvtvv

7、fAveve ndl;ostream&operator(ostrea m&os,CStude ntRec&stu)成绩 2(istream& is,CStude ntRec & stu) char name20,id10;is.read(&stu.chFlag,sizeof(char);is.read( name,sizeof( name); is,read(id,sizeof(id);is.read(char*)stu.fScore,sizeof(float)*3); is.read(char* )&stu.fAve,sizeof(fl

8、oat);str ncpy(stu.strName, name,sizeof( name); str ncpy(stu.strlD,id,sizeof( name);return is;4.添加 Ex_File.cpp 文件,测试 CStudentRec 类添加 Ex_File.cpp 文件,测试 CStudentRec 类的具体步骤如下。(1)选择“文件新建”菜单命令,将“新建”对话框切换到“文件”标签页面,选中“C+SourceFile”文件类型,在文件编辑框中输入Ex_File.cpp,单击“确定”按钮。(2 )在 Ex_File.cpp 中添加 CStudentRec 类的测试代码:#

9、i nclude#include ” Ex_File.h ”void mai n() float fScore=80,90,92;CStude ntRec rec1(“ Di ng ”,” 21050101 ” ,fScore);Rec1.Pri nt(true);CStude ntRec rec2;Rec2.I nput();Rec2.Pri nt(true);编译运行并测试,CStudentRec 类的测试结果如图 T7.1 所示。试一试若将输入的学生记录保存在文件中,并从文件中读取记录,则这样的功能应如何实现?5 .添加 CStuFile 类代码添加 CStuFile 类代码的具体步骤如

10、下。(1)将工作区窗口切换到FileView 页面,展示所有结点,双击Ex_File.h 结点(2)在 Ex_File.h 文件后面添加以下 CStuFile 类代码:class CStuFilepublic:CStuFile(char*file name);CStuFile();void Add(CStude ntRec &stu);int Seek(char*id,CStude ntRec &stu);int List(int nNum=-1);private:char*strFileName;;CStuFile:CStuFile(char*file name)strFil

11、eName=new charstrle n(File name)+1;strcpy(strFileName,file name);CStuFile:CStuFile()if(strFileName)deletestrFileName;void CStuFile:Add(CStude ntRec stu)Fstream file(strFileName,ios:outlios:applios:bi nary);filestu;file.close();int CStuFile:Seek(char*id,CStude ntRec& stu)int n Rec= -1;Fstream fil

12、e(strFileName,ios:i nlios: no create);if(!file)cout ” 文件” vvstrFileNamevv”不能打开! nreturn n Rec;int i=0;while(!file.eof()filestu;if(strcmp(id,stu.strlD)=O)&(stu.chFlag!= N ) n Rec = I; break;i+;file.close();return n Rec;/列表显示 nNum 个记录,-1 时全部显示,并返回文件中的记录数intCstuFile:List(int nNum)Fstream file(strFi

13、leName,ios:i nlios: no create);/ 打开文件用于只读if(!file)cout0)cout_setf(ios:left);coutsetw(6)vv ” 记录” setw(20)vv ” 姓名” setw(10)vv ” 学号” ”t 成绩 1t 成绩 2t 成绩 3t 平均分” endl;while (!file.eof()Cstude ntRec data;filedata;if(data.chFlag= ” A”)n Rec+;if(n Num=-1)|( nRec=nNum)cout.setf(ios:left);coutsetw(6) n Rec;dat

14、a.Pri nt();file.close();return n Rec;6.添加 CstuFile 类的测试代码添加 CstuFile 类的测试代码的具体步骤如下。(1)在工作区窗口的 FileView 页面中,双击 Ex_(2)修改 Ex_File.cpp 文件的代码:#i nclude#i nclude“ Ex_File.h ”CstuFile theStu( “ stude nt.txt ”);void AddTo(i nt nNum)Cstude ntRec stu;for(i nt i=0;i n Num;i+)cout ”请输入第” vvi+1vv ” 记录: stu.Input();theStu.Add(stu);void mai n()AddT o(3);theStu 丄 ist();File.cpp 结点/定义一个全局对象/输入多个记录=0)one Pr in t(true);elsecout ”没有找到!n ” ;theStu 丄 ist();(3)编译运行并测试,按运行的提示内容输入下列3 哥记录数据:MaWen Tao21050101809085LiMi ng21050102758183YangYang210

温馨提示

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

评论

0/150

提交评论