北大“面向?qū)ο蟪绦蛟O(shè)計”上機試題(含答案) -自考串講筆記
1、Annie的寵物小屋里有12個籠子,每個籠子可以放不同的動物,包括貓,狗和蛇,但同一時刻一個籠子只能放0只或1只寵物,本題要求完成:
(1)實現(xiàn)一個簡單的管理系統(tǒng),可以增加,刪除指定籠子中的寵物,查詢每個籠子中存放寵物的情況,統(tǒng)計寵物的種類和數(shù)量。
?。?)定義描述寵物小屋的類Shelves,其中包括12個籠子用于存放各種寵物;
(3)定義虛擬基類Animal,至少包含純虛函數(shù)Showme;
(4)定義派生類Cat,Dog,Snake,具體實現(xiàn)上述純虛函數(shù)showme,顯示該寵物的種類,名稱,著色,體重和喜歡的食物。
?。?)重載輸入>>操作符,使得可以通過cin直接讀入寵物的著色,體重,和喜歡的食物;
?。?)編寫main函數(shù),測上述所要求的各種功能;
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?”;//由于不想重寫所以就改了數(shù)字;
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.部分稿件來源于網(wǎng)絡(luò),如有不實或侵權(quán),請聯(lián)系我們溝通解決。最新官方信息請以湖北省教育考試院及各教育官網(wǎng)為準(zhǔn)!
-
112023-03湖北自考《運輸保險》精選習(xí)題及答案匯總湖北自考《運輸保險》精選習(xí)題及答案匯總
-
112023-03湖北自考《運輸保險》精選習(xí)題及答案(5)湖北自考《運輸保險》精選習(xí)題及答案(5)
-
112023-03湖北自考《運輸保險》精選習(xí)題及答案(4)湖北自考《運輸保險》精選習(xí)題及答案(4)
-
112023-03湖北自考《運輸保險》精選習(xí)題及答案(3)湖北自考《運輸保險》精選習(xí)題及答案(3)
-
112023-03湖北自考《運輸保險》精選習(xí)題及答案(2)湖北自考《運輸保險》精選習(xí)題及答案(2)
-
112023-03湖北自考《運輸保險》精選習(xí)題及答案(1)湖北自考《運輸保險》精選習(xí)題及答案(1)
已幫助10w萬+意向?qū)W歷提升用戶成功上岸
-
毛澤東思想概論
培訓(xùn)優(yōu)勢:課時考點精講+刷題+沖刺,熟練應(yīng)對考試題型。全程督促學(xué)習(xí),安排好學(xué)習(xí)計劃。 毛澤東思想概論...自考培訓(xùn) -
英語二
本課程既是一門語言實踐課程,也是拓寬知識、了解世界文化的重要素質(zhì)課程,它以培養(yǎng)學(xué)習(xí)者的綜合語言應(yīng)用能力為目標(biāo),使他們在學(xué)習(xí)、工作和社會交往中能夠使用英語進行有效的交流。 英語二...自考培訓(xùn) -
馬克思主義基本原理概論
本書包括兩個部分:自學(xué)考試大綱和基本原理。主要內(nèi)容有,馬克思主義是關(guān)于工人階級和人類解放的科學(xué),物質(zhì)世界及其發(fā)展規(guī)律,認(rèn)識的本質(zhì)及其規(guī)律,人類社會及其發(fā)展規(guī)律,資本主義的形成及其發(fā)展,資本主義發(fā)展的歷史進程,社會主義社會及其進程,共產(chǎn)主義社會及其進程等。 馬克思主義基本原理概論...自考培訓(xùn) -
思想道德修養(yǎng)與法律基礎(chǔ)
《思想道德修養(yǎng)與法律基礎(chǔ)》課具有鮮明的政治性、思想性、理論性、針對性、科學(xué)性、知識性以及實踐性和修養(yǎng)性。它包羅政治、思想、道德、心理本質(zhì)、學(xué)習(xí)成才和法律本質(zhì)等內(nèi)容,指導(dǎo)和回答大學(xué)生在人生、抱負(fù)、信念等方面遍及關(guān)心和迫切需要解決的問題。 思想道德修養(yǎng)與法律基礎(chǔ)...自考培訓(xùn) -
中國近代史綱要
“中國近現(xiàn)代史綱要”全國高等教育自學(xué)考試指定教材,依據(jù)中央審定的普通高等學(xué)?!爸袊F(xiàn)代史綱要”編寫大綱以及馬克思主義理論研究和建設(shè)工程重點教材《中國近現(xiàn)代史綱要》,結(jié)合自學(xué)考試的特點設(shè)計了十章,集中講述1840年鴉片戰(zhàn)爭爆發(fā)一直到2007年中國共產(chǎn)黨第十七次全國代表大會召開的160多年的中國近現(xiàn)代歷史。 中國近代史綱要...自考培訓(xùn)
掃一掃關(guān)注微信公眾號
隨時獲取湖北省自考政策、通知、公告以及各類學(xué)習(xí)資料、學(xué)習(xí)方法、課程。