C++输入输出流实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳大学实验报告
实验课程名称:程序设计实验与课程设计
实验项目名称:实验10 C++流输入与流输出
学院:计软专业:计科
报告人:学号:班级: 3
同组人:无
指导教师:朱安民
实验时间:2014年6月16日提交时间:2014年6月16
声明:
本次实验内容由报告人和同组人独立完成,所有涉及到他人的工作均已说明。报告人和同组人均同意教师及学校为教学活动而引用本实验的内容,且无需事先征得同意和特别说明。
教务处制
一、实验目的
1.掌握标准输入输出(iostream库中标准对象cin、cout)的使用
2.掌握IO流类成员函数输入输出(cin.get, cin.getline, cin.read; cout.put, cout.write)的使用
3.掌握输出格式(标准控制符、IO流类成员函数、iomanip头文件中的控制符)控制方法
4.掌握磁盘文件的输入输出方法
二、实验说明和实验环境
1.在奥特曼类的基础上,编写一个程序,重载运算符“》”和“《”,使得用户可以直接(格式化)输出奥特曼的状态。在主程序中输入若干个(3个)奥特曼的状态,并分别将它们保存到文件RecordU.txt中。然后读取并显示文件中的内容。
2.奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display
在奥特曼的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0
在怪兽的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍
对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。
注意:为了实现运算符《重载,需要包含头文件
经常天降怪石会砸中奥特曼或怪兽,如果被幸运石砸中,就会处于“鸿运当头”状态,被砸对象除等级外其它属性全部翻倍;如果被厄运石砸中,就会陷入“倒霉透顶”状态,被砸对象除等级外其它属性全部减半。把“鸿运当头”封装成操作,并用重载运算符++来实现;“倒霉透顶”封装成操作,并用重载运算符--来实现。两个重载都需要用友元方法。
3.奥特曼和怪物经过一番战斗斗,需要中场休息,休息时把各自的属性值存放到一个文件中,休息结束时需要从文件中读取之前的状态继续战斗。
奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display
奥特曼和怪兽的属性值均来自于文件(文件的第一行是奥特曼的数据,初始状态为:等级是8,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0,文件的第二行是怪兽的数据,初始状态为等级是4,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍)对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。
把信息直接从文件读出来并赋值给奥特曼和怪兽,需要重载》运算符作为友元;
把奥特曼和怪兽的值写入文件,要求重载《运算符作为友元
三、实验分析设计
.
四、核心代码说明
第一题
#include
#include
using namespace std;
//类的定义与实现
class Ultraman
{
public:
Ultraman();
friend istream & operator >>(istream &input,Ultraman &u){input>>u.rank>>u.hp>>u.damage>>u.exp>>u.money;return input;} friend ostream & operator <<(ostream &output,Ultraman &u){output< int rank; int hp; int damage; int exp; int money; }; Ultraman::Ultraman() { rank=0; hp=0; damage=0; exp=0; money=0; } //主函数 int main() { Ultraman u1,u2,u3; ofstream outfile("RecordU.txt"); cin>>u1>>u2>>u3; outfile< outfile.close(); ifstream infile("RecordU.txt"); infile>>u1>>u2>>u3; cout< infile.close(); return 0; } 第二题 #include using namespace std; //奥特曼类 class Ultraman { public: void initial(int); void display(); friend ostream& operator<<(ostream& output,Ultraman& u){output<<"u rank="<