首页>计算机>软件水平考试>模拟试题>正文
面向对象上机考试题(1)宠物进笼

www.zige365.com 2008-11-6 21:58:25 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

Anne的宠物小屋有12个笼子,每个笼子可以放不同的动物,但只能放1只或0只,包括
猫Cat,狗Dog,蛇Snake.
1,实现一个简单的管理系统,可增加、删除笼子中的宠物,查询每个笼子中存放的
宠物类型,(包括笼子为空的情况),统计笼中宠物的种类和数量.
2,定义描述宠物小屋的类shelves,其中有12笼子用于存放各种宠物.
3,定义虚拟基类Animal,包括纯虚函数ShowMe,显示每个宠物的情况,包括类型、颜色、
体重和喜爱的食物。
4,定义派生类Cat,Dog,Snake,具体实现上述纯虚函数。
5,重载输入‘>>'*作符,使得可能通过cin直接读入宠物颜色、体重和喜爱的
食物。
6,编写main函数,测试上述要求和各种功能。
*/

#include "Stdafx.h"
#include "iostream.h"
#include "string.h"
enum {NONE=0, CAT=1, DOG=2, SNAKE=3};

class Animal
{
protected:
char color[20];
char food[20];
double weight;
public:
virtual void ShowMe()=0;
};

class Cat:public Animal
{
public:
friend istream& operator>>(istream &is, Cat &cat);
void ShowMe()
{
cout<<"猫的颜色、喜欢的食物、体重分别为:";
cout<}
};

istream & operator>>(istream &is, Cat &cat)
{
cout<<" 请输入猫的颜色: ";
is>>cat.color;
cout<<" 喜爱的食物:";
is>>cat.food;
cout<<" 体重:";
is>>cat.weight;
return is;
}


class Dog:public Animal
{
public:
friend istream& operator>>(istream &is, Dog &Dog);
void ShowMe()
{
cout<<"狗的颜色、喜欢的食物、体重分别为:";
cout<}
};

istream& operator>>(istream &is, Dog &dog)
{
cout<<" 请输入狗的颜色: ";
is>>dog.color;
cout<<" 喜爱的食物:";
is>>dog.food;
cout<<" 体重:";
is>>dog.weight;
return is;
}

class Snake:public Animal
{
public:
friend istream& operator>>(istream &is, Snake &snake);
void ShowMe()
{
cout<<"蛇的颜色、喜爱的食物、体重分别为:";
cout<}
};

istream& operator>>(istream &is, Snake &snake)
{
cout<<" 请输入蛇的颜色: ";
is>>snake.color;
cout<<" 喜爱的食物: ";
is>>snake.food;
cout<<" 体重: ";
is>>snake.weight;
return is;
}

class Shelves
{
int cage[12];
int sum[3];
Cat cats[12];
Dog dogs[12];
Snake snakes[12];
// int flag[12];
// int sum_c, sum_d, sum_s;
public:
Shelves ()
{
for (int i=0; i<12; i++)
cage[i]=NONE;
for (i=0; i<4; i++)
sum[i]=0;
}

int push_cat(Cat &cat, int n)
{
cats[n] = cat;
if (cage[n]!=NONE) return 0;
else {
sum[0]++;
return cage[n]=CAT;
}
}

int push_dog(Dog &dog, int n)
{
dogs[n]=dog;
if (cage[n]!=NONE) return 0;
else{
sum[1]++;
return cage[n]=DOG;
}
}
int push_snake(Snake &snake, int n)
{
snakes[n]=snake;
if (cage[n]!=NONE) return 0;
else {
sum[2]++;
return cage[n]=SNAKE;
}
}

void del(int n)
{
if (cage[n]==CAT) sum[0]--;
if (cage[n]==DOG) sum[1]--;
if (cage[n]==SNAKE) sum[2]--;
if (cage[n]==NONE)
cout<<"笼子里没有动物"<else
{
cage[n]=NONE;
cout<<"已删除笼子里的动物"<}
cout<}

void seek(int n)
{
if (cage[n]==NONE) cout<<"第"<if (cage[n]==CAT)
{
cout<<"第"<cats[n].ShowMe();
}
if (cage[n]==DOG)
{
cout<<"第"<dogs[n].ShowMe();
}
if (cage[n]==SNAKE)

本新闻共2页,当前在第1页  1  2  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
08年11月软考英语考前练习试题及答案汇总
08年11月软考英语考前练习试题及翻译(1)
08年11月软考英语考前练习及解析(18)
08年11月软考英语考前练习试题及解析(17)
08年11月软考英语考前练习试题及解析(16)
08年11月软考英语考前练习试题及解析(15)