- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6 文件流和异常处理
班级 学号 姓名 成绩
一.实验目的
1.掌握文件流的打开、关闭及使用的使用方法
2解文本文件流与二进制文件流在操作上的区别二.实验内容
上机实验题一
设计一个管理图书目的简单程序,提供的基本功能包括:可连续将新书存入文件“book.dat”中,新书信息加入到文件的尾部;也可以根据输入的书名进行查找;把文件“book.dat”中同书名的所有书显示出来。为简单起见,描述一本书的信息包括:书号,书名,出版社和作者。
分析
可以把描述一本书的信息定义为一个Book类,它包含必要的成员函数。把加入的新书总是加入到文件尾部,所以,以增补方式打开输出文件。从文件中查找书时,总是从文件开始位置查找,以读方式打开文件。用一个循环语句实现可连续地将新书加入文件或从文件中查找指定的书名。由于是以一个Book类的实例进行文件输入输出的,所以,这文件的类型应该是二进制文件。
简化的参考程序如下:
#include iostream.h
#include string.h
#include fstream.h
class Book
{ long int num; //书号
char bookname[40]; //书名
char publicname[40]; //出版社
char name[20]; //作者
public:
Book()
{ num=0; bookname[0] =0;publicname[0] =0; name[0] =0;}
char * Getbookname(void) { return bookname ;}
char * Getpublicname (void) { return publicname ;}
char * Getname(void) { return name ;}
long Getnum(void ) { return num;}
void Setdata(long , char *,char *,char *);
void Show(void );
Book(long , char *,char *,char *);
};
void Book::Setdata(long nu , char *bn,char *p,char *n)
{ num = nu; strcpy(bookname,bn);
strcpy(publicname,p); strcpy(name,n);
}
void Book::Show(void )
{ cout书号:num\t书名:bookname\t;
cout出版社:publicname\t作者:name\n;
}
Book::Book(long nu, char * bp,char *p,char *n)
{ Setdata(nu , bp, p, n); }
void main(void)
{ Book b1,b2;
long nu;
char bn[40]; //书名
char pn[40]; //出版社
char na[20]; //作者
ifstream file1;
ofstream file3;
char flag = y;
while( flag==y ||flag==Y) { //由flag控制循环
int f;
cinf;
switch(f){
case 1: cout输入要查找的书名:; cinbn;
file1.open(book.dat,ios::in | ios::binary)//按读方式打开文件
while(!file1.eof() ){ int n;
file1.read((char *)b1,sizeof(Book));
n=file1.gcount();
if(n==sizeof(Book)){
if(strcmp(b1.Getbookname(),bn)==0) //显示书的信息
b1.Show();
} }
file1.close();
break;
case 2: cout输入书号:; cinnu;
cout输入书名:; cinbn;
cout输入出版社:; cinpn;
cout输入作者:; cinna;
b1.Setdata(nu,bn,pn,na);
file3.open(book.dat,ios::app|ios::b
文档评论(0)