![]() |
#2
南国利剑2010-05-30 00:50
回复 楼主 xlongjlu
|
//头文件 "thief.h"
#ifndef THIEFH
#define THIEFH
#include <iostream.h>
class Thief
{
public:
Thief(float Ma) { MoneyAmount=Ma; }
void Display() { cout<<MoneyAmount<<endl; } //输出金钱数目
void SetMoneyAmount(float ma) { MoneyAmount=ma; } //设置金钱数目
private:
float MoneyAmount;
};
#endif
//头文件 "police.h"
#ifndef POLICEH
#define POLICEH
#include <iostream.h>
#include "thief.h"
#include "policeoffice.h"
class Police
{
public:
Police(float rew,char st[]): Reward(rew) { strcpy(Name,st); } //构造函数
void Arrest(Thief &); //逮捕小偷
float GetReward() { return Reward; } //返回奖励
char Name[20]; // 警察名字
private:
float Reward; //奖励
};
void Police::Arrest(Thief &t) //逮捕到小偷后警察奖金增加100 小偷金钱归零
{
Reward=Reward+100;
t.SetMoneyAmount(0.00);
}
#endif
//头文件 "policeoffice.h"
#ifndef POLICEOFFICE
#define POLICEOFFICE
#include <iostream.h>
#include "thief.h"
#include "police.h"
class PoliceOffice
{
public:
PoliceOffice(int Rep,int Num): Reputation(Rep),Number(Num) //构造函数
{
for(int i=0;i<Number;i++) //动态创建Number个police 对象
police[i] = NULL;
}
~PoliceOffice() //析构函数
{
for(int i=0;i<Number;i++)
delete police[i];
delete[] police;
}
void Initialize(); //设置警察的信息
Police* GetPolice(char st[]); //返回警察类指针
void Display(); //输出警察局信息
void SetReputation(); //设置声望 每逮捕一个小偷声望加1
private:
int Reputation;
int Number;
Police* police[];
};
void PoliceOffice::Initialize() //实现设置警察局中每个警察的信息
{
police = new Police*[Number];
for(int i=0;i<Number;i++)
{
char st[20];
cout<<"请输入警察名字:"<<endl;
cin>>st;
police[i] = new Police(0.0,st);
//Police(0.00,st);
}
}
Police * PoliceOffice::GetPolice(char st[]) //输入警察的name 返回指向该警察的指针
{
for(int j=0;j<3;j++)
{
if(strcmp(st,police[j].Name)>0)
return &police[i];
}
}
void PoliceOffice::SetReputation()
{
Reputation++;
}
void PoliceOffice::Display() // 输出警察局声望 警察奖金
{
cout<<"警察局的声望是:"<<Reputation<<endl;
for(int i=0;i<Number;i++)
cout<<"警察"<<police[i].Name<<"的奖金是:"<<police[i].GetReward()<<endl;
}
#endif
//主函数 "main.cpp"
#include <iostream.h>
#include <string.h>
#include "thief.h"
#include "police.h"
#include "policeoffice.h"
int main()
{
Thief t1(500),t2(800),t3(300),t4(1000); //创建四个Thief对象
PoliceOffice S(100,3);
S.Initialize();
Police *p=NULL; //创建指向Police 指针
char *name[3]={"p1","p2","p3"};
p=S.GetPolice(name[0]);
p->Arrest(t2);
S.SetReputation();
p->Arrest(t3);
S.SetReputation();
p=S.GetPolice(name[1]);
p->Arrest(t4);
S.SetReputation();
S.Display();
return 0;
}