北大“面向对象程序设计”上机试题(含答案) -自考串讲笔记
1、Annie的宠物小屋里有12个笼子,每个笼子可以放不同的动物,包括猫,狗和蛇,但同一时刻一个笼子只能放0只或1只宠物,本题要求完成:
(1)实现一个简单的管理系统,可以增加,删除指定笼子中的宠物,查询每个笼子中存放宠物的情况,统计宠物的种类和数量。
(2)定义描述宠物小屋的类Shelves,其中包括12个笼子用于存放各种宠物;
(3)定义虚拟基类Animal,至少包含纯虚函数Showme;
(4)定义派生类Cat,Dog,Snake,具体实现上述纯虚函数showme,显示该宠物的种类,名称,着色,体重和喜欢的食物。
(5)重载输入>>操作符,使得可以通过cin直接读入宠物的着色,体重,和喜欢的食物;
(6)编写main函数,测上述所要求的各种功能;
Main.cpp
#include<iostream>
#include“animal.h”
using std::cout;
using std::cin;
using std::endl;
int main()
{
Shelves * shelves=new Shelves;
Cat *cat;
Dog *dog;
Snake *snake;
int n;
int i=0;
char ch;
while(i!=5)
{
cout<<“ please chiose(1-5):”<<endl;
cout<<“ 1:add an animal”<<endl;
cout<<“2:delete an animal”<<endl;
cout<<“ 3:query”<<endl;
cout<<“4:stat”<<endl;
cout<<“5:exit”<<endl;
cin>>i;
switch(i)
{
case 1:
cout<<“which cage?”;
cin>>n;
cout<<“c:cat d:dog s:snake”<<endl;
cout<<“please choise an animal:”;
cin>>ch;
switch(ch)
{
case'c':
cat=new Cat;
cin>>*cat;
if(!shelves ->add(n,cat))
cat->deleteme();
break;
case'd':
dog=new Dog;
cin>>*dog;
if(!shelves->add(n,dog))
dog->deleteme();
break;
case's':
snake=new Snake;
cin>>*snake;
if(!shelves->add(n,snake))
snake->deleteme();
break;
default:
cout<<“ your choise is wrong”<<endl;
break;
}
break;
case 3:
cout<<“ thich cage ?”;
cin>>n;
shelves->query(n);
break;
case 2:
cout<<“which cage?”;//由于不想重写所以就改了数字;
cin>>n;
shelves->Delete(n);
break;
case 4:
shelves->stat();
break;
case 5:
break;
}
}
return 0;
}
Animal.h
#ifndef ANIMAL_H
#define ANIMAL_H
#include<iosfwd>
class Animal
{
public:
virtual void showme()=0;
virtual void deleteme()=0;
~Animal(){}
protected:
char *name ;
char *color;
float weight;
char *food;
int type;
};
class Cat:public Animal
{
public:
Cat();
void showme();
static int number();
friend std::istream & operator >>(std::istream & is,Cat &cat);
void deleteme();
~Cat();
private:
static int Catnum;
};
class Dog:public Animal
{
public:
Dog();
void showme();
static int number();
friend std::istream & operator>>(std::istream & is,Dog &dog);
void deleteme();
~Dog();
private:
static int Dognum;
};
class Snake:public Animal
{
public:
Snake();
void showme();
static int number();
friend std::istream & operator>>(std::istream & is ,Snake &snake);
void deleteme();
~Snake();
private:
static int Snakenum;
};
class Shelves
{
public:
Shelves();
int add(int n,Animal *animal);
void Delete(int n);
void query(int n);
void stat();
private:
Animal * shelves[12];
};
#endif
Animal.cpp
#include<iostream>
#include“animal.h”
using std::cout;
using std::cin;
using std::endl;
int Cat::Catnum=0;
Cat::Cat()
{
type=0;
weight=0;
name=new char[20];
color =new char [20];
food=new char [20];
Catnum++;
}
void Cat::showme()
{
cout<<“I am a Cat.”<<endl;
cout<<“ My name is ”<<name<<endl;
cout<<“ My color is ”<<color<<endl;
cout<<“My weight is ”<<weight<<endl;
cout <<“ My favorite foood is ”<<food <<endl;
return ;
}
int Cat::number()
{
return Catnum;
}
std::istream & operator>>(std::istream & is ,Cat &cat)
{
cout<<“ the cat's name is :”;
is>>cat.name;
cout<<endl<<“the cat's color is:”;
is>>cat.color;
cout<<endl<<“ the cat's weight is :”;
is>>cat.weight;
cout<<endl<<“the cat's fovarite food is :”;
cin>>cat.food;
return is;
}
void Cat::deleteme()
{
Catnum——;
}
Cat::~Cat()
{
}
int Dog::Dognum=0;
Dog::Dog()
{
type=1;
name=new char [20];
color =new char [20];
food=new char [20];
weight=0;
Dognum++;
}
void Dog::showme()
{
cout<<endl<<“I am a Dog”<<endl;
cout<<“My name is ”<<name<<endl;
cout<<“ My color is ”<<color<<endl;
cout<<“My weight is ”<<weight<<endl;
cout<<“My favorite food is ”<<food<<endl;
return ;
}
int Dog::number()
{
return Dognum;
}
std::istream & operator>>(std::istream &is ,Dog &dog)
{
cout<<“the dog's name is”;
is>>dog.name;
cout<<endl<<“ the dog's color is ”;
is>>dog.color;
cout<<endl<<“the dog's weight is ”;
is>>dog.weight;
cout<<endl<<“the dog's fovarite food is:”;
is>>dog.food;
return is;
}
void Dog::deleteme()
{
Dognum——;
}
Dog::~Dog()
{}
int Snake::Snakenum=0;
Snake::Snake()
{
type=2;
name=new char [20];
color=new char [20];
food=new char [20];
Snak
2.部分稿件来源于网络,如有不实或侵权,请联系我们沟通解决。最新官方信息请以湖北省教育考试院及各教育官网为准!
-
112023-03湖北自考《运输保险》精选习题及答案汇总湖北自考《运输保险》精选习题及答案汇总
-
112023-03湖北自考《运输保险》精选习题及答案(5)湖北自考《运输保险》精选习题及答案(5)
-
112023-03湖北自考《运输保险》精选习题及答案(4)湖北自考《运输保险》精选习题及答案(4)
-
112023-03湖北自考《运输保险》精选习题及答案(3)湖北自考《运输保险》精选习题及答案(3)
-
112023-03湖北自考《运输保险》精选习题及答案(2)湖北自考《运输保险》精选习题及答案(2)
-
112023-03湖北自考《运输保险》精选习题及答案(1)湖北自考《运输保险》精选习题及答案(1)
已帮助10w万+意向学历提升用户成功上岸
-
毛泽东思想概论
培训优势:课时考点精讲+刷题+冲刺,熟练应对考试题型。全程督促学习,安排好学习计划。 毛泽东思想概论...自考培训 -
英语二
本课程既是一门语言实践课程,也是拓宽知识、了解世界文化的重要素质课程,它以培养学习者的综合语言应用能力为目标,使他们在学习、工作和社会交往中能够使用英语进行有效的交流。 英语二...自考培训 -
马克思主义基本原理概论
本书包括两个部分:自学考试大纲和基本原理。主要内容有,马克思主义是关于工人阶级和人类解放的科学,物质世界及其发展规律,认识的本质及其规律,人类社会及其发展规律,资本主义的形成及其发展,资本主义发展的历史进程,社会主义社会及其进程,共产主义社会及其进程等。 马克思主义基本原理概论...自考培训 -
思想道德修养与法律基础
《思想道德修养与法律基础》课具有鲜明的政治性、思想性、理论性、针对性、科学性、知识性以及实践性和修养性。它包罗政治、思想、道德、心理本质、学习成才和法律本质等内容,指导和回答大学生在人生、抱负、信念等方面遍及关心和迫切需要解决的问题。 思想道德修养与法律基础...自考培训 -
中国近代史纲要
“中国近现代史纲要”全国高等教育自学考试指定教材,依据中央审定的普通高等学校“中国近现代史纲要”编写大纲以及马克思主义理论研究和建设工程重点教材《中国近现代史纲要》,结合自学考试的特点设计了十章,集中讲述1840年鸦片战争爆发一直到2007年中国共产党第十七次全国代表大会召开的160多年的中国近现代历史。 中国近代史纲要...自考培训
扫一扫关注微信公众号
随时获取湖北省自考政策、通知、公告以及各类学习资料、学习方法、课程。