PDE实验报告.docx
《PDE实验报告.docx》由会员分享,可在线阅读,更多相关《PDE实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
PDE实验报告
附件(四)
深圳大学实验报告
课程名称:
程序设计实验与课程设计
实验项目名称:
类入门
学院:
计算机与软件学院
专业:
未分
指导教师:
白鉴聪
报告人:
谢伟雄学号:
2013150382班级:
08
实验时间:
2014年5月23日
实验报告提交时间:
2014-5-26
教务处制
一、实验目的与完成说明:
1.简单介绍本实验的主要目的
掌握类定义,类实现和类应用
2.说明本次实验中你完成了第几项要求(必填)
第一,第二和第三项要求
二、主要思路与方法:
1.对于本次实验,介绍最重要的函数或算法,并谈谈你对这些函数或算法的理解
Get函数,因为类中private的数据不能直接使用,所以得用get方法来使用这些数据,
保证数据的安全性
三.实验程序或内容:
1.针对每一项实验要求,给出编写的代码,可以粘贴全部代码,也可以只粘贴重要的代码(为了节省纸张),但代码必须完整,至少是完整的函数。
2.代码符合以下要求,评分更高:
a.排版整齐,可读性高
b.代码有注释,越详细越清晰越好
1类定义.
#include
usingnamespacestd;
classUltraman{//奥特曼的类声明
public:
intgetrank(){returnrank;};
intgethp(){returnhp;};
intgetdamage(){returndamage;};
intgetmoney(){returnmoney;};
intgetexp(){returnexp;};
voidinitial(int);
voiddisplay();
voidwin(int,int);//赢的情况
voidescape();//逃跑即输的情况
voidrestore();//补血的情况
voidupgrade();//升级的情况
voidattacked(int);//被攻击的情况
private:
//属性
intrank;//等级
inthp;//生命值
intdamage;//攻击力
intmoney;//持有金钱
intexp;//现有经验
};
classmonster{//小怪兽的类声明
public:
intgetrank(){returnrank;};
intgethp(){returnhp;};
intgetdamage(){returndamage;};
intgetmoney(){returnmoney;};
intgetexp(){returnexp;};
voidinitial(intrank);
voiddisplay();
voidattacked(int);//奥特曼攻击的情况
private:
intrank;//等级
inthp;//生命值
intdamage;//攻击力
intexp;//提供的经验
intmoney;//提供的金钱
};
2.类实现
#include
usingnamespacestd;
classUltraman{//奥特曼的类声明
public:
intgetrank(){returnrank;};
intgethp(){returnhp;};
intgetdamage(){returndamage;};
intgetmoney(){returnmoney;};
intgetexp(){returnexp;};
voidinitial(int);
voiddisplay();
voidwin(int,int);//赢的情况
voidescape();//逃跑即输的情况
voidrestore();//补血的情况
voidupgrade();//升级的情况
voidattacked(int);//被攻击的情况
private:
//属性
intrank;//等级
inthp;//生命值
intdamage;//攻击力
intmoney;//持有金钱
intexp;//现有经验
};
classmonster{//小怪兽的类声明
public:
intgetrank(){returnrank;};
intgethp(){returnhp;};
intgetdamage(){returndamage;};
intgetmoney(){returnmoney;};
intgetexp(){returnexp;};
voidinitial(intrank);
voiddisplay();
voidattacked(int);//奥特曼攻击的情况
private:
intrank;//等级
inthp;//生命值
intdamage;//攻击力
intexp;//提供的经验
intmoney;//提供的金钱
};
voidUltraman:
:
initial(intirank)//奥特曼的初始化函数
{
rank=irank;
hp=10*irank;
damage=3*irank;
money=10*irank;
exp=0;
}
voidmonster:
:
initial(intirank)//怪兽的初始化函数
{
rank=irank;
hp=20*irank;
damage=2*irank;
money=10*irank;
exp=10*irank;
}
void Ultraman:
:
display()//显示奥特曼状态的函数
{
cout<<"rank="< <<"hp="< <<"damage="< <<"exp="< <<"money="<}
voidmonster:
:
display()//显示怪兽状态的函数
{
cout<<"rank="< <<"hp="< <<"damage="< <<"exp="< <<"money="<}
voidmonster:
:
attacked(intUltramandamage)//奥特曼攻击的情况
{
hp-=Ultramandamage;
}
voidUltraman:
:
attacked(intmonsterdamage)//被攻击的情况
{
hp-=monsterdamage/2;
}
voidUltraman:
:
restore()//补血的情况
{
if((10*rank-hp)>money/10)
{
hp+=money/10;
money=money%10;
}
else
{
money-=(10*rank-hp)*10;
hp=10*rank;
}
}
voidUltraman:
:
escape()//逃跑的情况
{
money=0;
cout<<"lose"< }
voidUltraman:
:
win(intmonstermoney,intmonsterexp)//赢的情况
{
cout<<"win"< money+=monstermoney;
exp+=monsterexp;
}
voidUltraman:
:
upgrade()//升级的情况
{
exp-=10*rank;
rank++;
hp=10*rank;
damage=3*rank;
}
intmain()
{
intt,n,m,flag;
Ultramana;
monsterb;
cin>>t;
while(t--)
{
cin>>n>>m;//输入奥特曼和怪兽的等级
a.initial(n);//奥特曼的初始化
b.initial(m);//怪兽的初始化
a.display();//输出奥特曼状态
b.display();//输出怪兽状态
flag=true;
while(flag)//当战斗未结束就继续
{
b.attacked(a.getdamage());
if(b.gethp()>0)
{
a.attacked(b.getdamage());
if(a.gethp()<=10)
{
a.escape();
a.display();
flag=false;
}
elseif(a.gethp()<5*a.getrank())
a.restore();
}
else
{
a.win(b.getmoney(),b.getexp());
if(a.getexp()>=10*a.getrank())
a.upgrade();
a.display();
flag=false;
}
}//endwhileflag
}//endwhilet
return0;
}
3.类应用
#include
usingnamespacestd;
classUltraman{//奥特曼的类声明
public:
intgetrank(){returnrank;};
intgethp(){returnhp;};
intgetdamage(){returndamage;};
intgetmoney(){returnmoney;};
intgetexp(){returnexp;};
voidinitial(int);
voiddisplay();
voidwin(int,int);//赢的情况
voidescape();//逃跑即输的情况
voidrestore();//补血的情况
voidupgrade();//升级的情况
voidattacked(int);//被攻击的情况
private:
//属性
intrank;//等级
inthp;//生命值
intdamage;//攻击力
intmoney;//持有金钱
intexp;//现有经验
};
classmonster{//小怪兽的类声明
public:
intgetrank(){returnrank;};
intgethp(){returnhp;};
intgetdamage(){returndamage;};
intgetmoney(){returnmoney;};
intgetexp(){returnexp;};
voidinitial(int,char);
voiddisplay();
voidattacked(int);//奥特曼攻击的情况
private:
intrank;//等级
inthp;//生命值
intdamage;//攻击力
intexp;//提供的经验
intmoney;//提供的金钱
};
voidUltraman:
:
initial(intirank)//奥特曼的初始化函数
{
rank=irank;
hp=10*irank;
damage=3*irank;
money=10*irank;
exp=0;
}
voidmonster:
:
initial(intirank,chartype)//怪兽的初始化函数
{
if(type=='N')
{
rank=irank;
hp=10*irank;
damage=2*irank;
money=10*irank;
exp=10*irank;
}
elseif(type=='A')
{
rank=irank;
hp=5*irank;
damage=5*irank;
money=15*irank;
exp=15*irank;
}
elseif(type=='D')
{
rank=irank;
hp=25*irank;
damage=irank;
money=15*irank;
exp=15*irank;
}
elseif(type=='M')
{
rank=irank;
hp=11*irank;
damage=irank;
money=25*irank;
exp=25*irank;
}
}
void Ultraman:
:
display()//显示奥特曼状态的函数
{
cout<<"rank="< <<"hp="< <<"damage="< <<"exp="< <<"money="<}
voidmonster:
:
display()//显示怪兽状态的函数
{
cout<<"rank="< <<"hp="< <<"damage="< <<"exp="< <<"money="<}
voidmonster:
:
attacked(intUltramandamage)//奥特曼攻击的情况
{
hp-=Ultramandamage;
}
voidUltraman:
:
attacked(intmonsterdamage)//被攻击的情况
{
hp-=monsterdamage/2;
}
voidUltraman:
:
restore()//补血的情况
{
if((10*rank-hp)>money/10)
{
hp+=money/10;
money=money%10;
}
else
{
money-=(10*rank-hp)*10;
hp=10*rank;
}
}
voidUltraman:
:
escape()//逃跑的情况
{
money=0;
cout<<"lose"<}
voidUltraman:
:
win(intmonstermoney,intmonsterexp)//赢的情况
{
cout<<"win"< money+=monstermoney;
exp+=monsterexp;
}
voidUltraman:
:
upgrade()//升级的情况
{
while(exp>=10*rank)
{
exp-=10*rank;
rank++;
}
hp=10*rank;
damage=3*rank;
}
intmain()
{
intc,t,n,i,d,flag,lv[100];
charty[100];
Ultramana;
monsterb;
cin>>t;
while(t--)
{
d=1;
cin>>c;//输入奥特曼等级
a.initial(c);//奥特曼的初始化
a.display();//输出奥特曼状态
cin>>n;
for(i=0;i cin>>lv[i]>>ty[i];//输入怪兽等级和种类
i=0;
while(i {
b.initial(lv[i],ty[i]);
flag=true;
while(flag)//当战斗未结束就继续
{
b.attacked(a.getdamage());
if(b.gethp()>0)
{
a.attacked(b.getdamage());
if(a.gethp()<=10)
{
a.escape();
a.display();
flag=false;
}
elseif(a.gethp()<5*a.getrank())
a.restore();
}
else
{
a.win(b.getmoney(),b.getexp());
a.upgrade();
flag=false;
}
}//endwhileflag
i++;
if(a.gethp()<=10)break;
a.display();
}//endwhilen
}//endwhilet
return0;
}
四、实验结论:
根据你完成的每个实验要求,给出相应的实验结果图,并结合图来解析整个运行过程
类实现
先输入t表示有t个测试实例,接着t行输入奥特曼和怪兽的等级,每个实例输出4行结果,头两行是奥特曼和怪兽的初始状态,第3行是战斗结果,第4行是奥特曼的最终状态,结果跟要求的一样
类应用
第1行输入t表示有t个测试实例,对于每个测试实例,首行先输入奥特曼等级,接着下一行输入n,表示怪兽数量接着n行输入怪兽的等级和类型,输出奥特曼和每个怪兽的战斗结果,发现结果和要求的一样
五、实验体会:
(根据自己情况填写)
类定义和应用整体来说并不难,但需要注意一些内容,如private中的数据并不能直接使用,得应用get函数,同时类函数里面并不能够直接使用另一个类里面的数据,也就是说类与类之间是独立的,并不依靠另外的。
注:
“指导教师批阅意见”栏请单独放置一页
指导教师批阅意见:
成绩评定:
指导教师签字:
年月日
备注: