四川应用型自考 四川自考【课程】【书籍】订购入口

面向对象上机考试题—宠物进笼

发布日期:2018-05-23 05:45:38 编辑整理:四川自考网 【字体:

  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<<color<<","<<food<<","<<weight<<endl; 
 }
};
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<<color<<","<<food<<","<<weight<<endl; 
 }
};
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<<color<<","<<food<<","<<weight<<endl; 
 }
};
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<<"笼子里没有动物"<<endl;
 else
 { 
 cage[n]=NONE;
 cout<<"已删除笼子里的动物"<<endl;
 } 
 cout<<endl;
 }
 void seek(int n)
 {
 if (cage[n]==NONE) cout<<"第"<<n<<"个笼子里没有动物"<<endl;
 if (cage[n]==CAT)
 {
 cout<<"第"<<n<<"个笼子里的动物为猫,";
 cats[n].ShowMe();
 }
 if (cage[n]==DOG)
 {
 cout<<"第"<<n<<"个笼子里的动物为狗,";
 dogs[n].ShowMe();
 }
 if (cage[n]==SNAKE)
 {
 cout<<"第"<<n<<"个笼子里的动物为蛇,"; 
 snakes[n].ShowMe();
 }
 cout<<endl; 
 }
 void count()
 { 
 cout<<"笼子里的猫总共有:"<<sum[0]<<"只"<<endl;
 cout<<"笼子里的狗总共有:"<<sum[1]<<"只"<<endl;
 cout<<"笼子里的蛇总共有:"<<sum[2]<<"只"<<endl;
 cout<<endl;
 }
};
void main()
{
 char c;
 Cat cat;
 Dog dog;
 Snake snake;
 Shelves shelves;
 int i=1,j;
 cout<<"这是关于往笼子里放动物的问题: "<<endl;
 cout<<endl;
 cout<<" 1: 往笼子里放猫;"<<endl;
 cout<<" 2: 往笼子里放狗;"<<endl;
 cout<<" 3: 往笼子里放蛇;"<<endl;
 cout<<" 4: 查询笼子里的动物;"<<endl;
 cout<<" 5: 删除笼子里的动物;"<<endl;
 cout<<" 6:统计笼子里的动物种类及数量;"<<endl;
 cout<<" 7: 退出程序;"<<endl;
 cout<<"------------------------------------------"<<endl;
 while(i)
 {
 cout<<"请选择您的*作:";
 cin>>I;
 switch(i)
 {
 case 1:
 cout<<" 往哪只笼子里面放: ";
 cin>>j;
 cin>>cat; 
 while (shelves.push_cat(cat, j)==0)
 {
 cout<<" 笼子里已有动物,请换一个笼子: ";
 cin>>j;
 }
 break;
 case 2:
 cout<<" 往哪只笼子里面放: ";
 cin>>j;
 cin>>dog; 
 while (shelves.push_dog(dog, j)==0)
 {
 cout<<" 笼子里已有动物,请换一个笼子: ";
 cin>>j;
 }
 break;
 case 3:
 cout<<" 往哪只笼子里面放: ";
 cin>>j;
 cin>>snake; 
 while (shelves.push_snake(snake, j)==0)
 {
 cout<<" 笼子里已有动物,请换一个笼子: ";
 cin>>j;
 }
 break;
 case 4: 
 cout<<" 查询哪只笼子: ";
 cin>>j;
 shelves.seek(j);
 break;
 case 5: 
 cout<<" 删除哪只笼子里的动物: ";
 cin>>j;
 shelves.del(j); break;
 case 6:
 shelves.count(); break;
 default: i=0; break;
 }
 cout<<endl;
 }
}

本文标签:四川自考 学习笔记 面向对象上机考试题—宠物进笼

转载请注明:文章转载自(http://www.sczk.sc.cn

本文地址:http://www.sczk.sc.cn/xxbj/452.html


《四川自考网》免责声明:

(一)由于考试政策等各方面情况的不断调整与变化,本网站所提供的考试信息仅供参考,请以省考试院及院校官方发布公布的正式信息为准。

(二)本站文章内容信息来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。联系邮箱:812379481@qq.com

四川自考便捷服务