面向对象程序设计实验报告班级:计算机科学与技术11-5学号:201101050505姓名:高冉冉日期:2012/7/2题目3:1.问题描述:假设有图书类Book,包括书名、出版社名称、作者姓名、图书定价等数据成员。编程序完成Book类的设计,从键盘读入10本图书的各项数据,并将这10本图书的相关数据写入磁盘文件book.dat中,然后从book.dat中读出各图书数据,计算所有图书的总价值,并显示每本图书的详细信息,每本图书的信息显示在一行上。2.实现代码:#includeiostream#includefstream#includeiomanip#includestring.husingnamespacestd;classBook{private:charbookName[20];//书名charpublishingHouse[20];//出版社charwriter[20];//作者doubleprice;//定价public:Book(){}doublegetPrice(){returnprice;}//获得书的定价friendistream&operator(istream&is,Book&a);friendostream&operator(ostream&os,Book&a);};istream&operator(istream&is,Book&a){isa.bookNamea.publishingHousea.writera.price;returnis;}ostream&operator(ostream&os,Book&a){ossetiosflags(ios::left)setw(20)a.bookNamesetw(20)a.publishingHousesetw(20)a.writersetw(10)a.priceendl;returnos;}intmain(){Bookbook[10];inti;doublesum=0;//10本图书的总价值fstreamioFile;ioFile.open(G:\\book.dat,ios::out);cout请分别输入10本书的书名\t出版社\t作者\t定价endl;//从键盘读入10本书的信息,并计算书的总价值并把书的信息写入文件for(i=0;i10;i++){cinbook[i];sum+=book[i].getPrice();ioFilebook[i];}ioFile.close();ioFile.open(G:\\book.dat,ios::in|ios::binary);coutendlendl;cout--------下面是10本书的信息--------endlendl;coutsetiosflags(ios::left)setw(20)书名setw(20)出版社setw(20)作者setw(10)定价endl;for(i=0;i10;i++)//从文件中读入书的信息并输出{ioFilebook[i];coutbook[i];}coutendl所有图书的总价值是:sumendl;ioFile.close();return0;}3.程序测试(运行结果):4.总结:通过这个题目,我对文件的读入、写入加深了了解。本来私有成员是指针类型,不过每次输入超过七个字符时,程序就会提前终止运行,不完善处是,书名中不能有空格。尝试用过getline()、write(),不过要么出现死循环,要么终止运行,这说明文件这章的内容掌握的不好,还要继续学习!