国家工信部网站备案实名:湖北自考网 为考生提供湖北自考信息服务,仅供学习交流使用,官方信息以湖北教育考试院为准。

湖北自考网

网站首页 自考专业 自考院校 考场查询 成绩查询 网上报名 考生平台
专题:
自考报名时间 考试时间 自考单科网课 模拟考试 教材大纲 免考办理 转考办理 实践考核 毕业申请 学位英语培训 学位申请 专升本 成人高考 中专
湖北自考在线 湖北学位英语培训班 湖北成人高考报名 湖北自考视频免费领取
当前位置:湖北自考网 > 北大“面向对象程序设计”上机试题(含答案) -自考串讲笔记

北大“面向对象程序设计”上机试题(含答案) -自考串讲笔记

湖北自考网 来源: 时间:2008-11-08 15:25:06

  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

结束
本文标签
特别声明:1.凡本网注明稿件来源为“湖北自考网”的,转载必须注明“稿件来源:湖北自考网(www.hbzkw.com)”,违者将依法追究责任;
2.部分稿件来源于网络,如有不实或侵权,请联系我们沟通解决。最新官方信息请以湖北省教育考试院及各教育官网为准!
限时,免费获取学历提升方案

已帮助10w万+意向学历提升用户成功上岸

  • 毛泽东思想概论

    毛泽东思想概论

    培训优势:课时考点精讲+刷题+冲刺,熟练应对考试题型。全程督促学习,安排好学习计划。 毛泽东思想概论...自考培训
  • 英语二

    英语二

    本课程既是一门语言实践课程,也是拓宽知识、了解世界文化的重要素质课程,它以培养学习者的综合语言应用能力为目标,使他们在学习、工作和社会交往中能够使用英语进行有效的交流。 英语二...自考培训
  • 马克思主义基本原理概论

    马克思主义基本原理概论

    本书包括两个部分:自学考试大纲和基本原理。主要内容有,马克思主义是关于工人阶级和人类解放的科学,物质世界及其发展规律,认识的本质及其规律,人类社会及其发展规律,资本主义的形成及其发展,资本主义发展的历史进程,社会主义社会及其进程,共产主义社会及其进程等。 马克思主义基本原理概论...自考培训
  • 思想道德修养与法律基础

    思想道德修养与法律基础

    《思想道德修养与法律基础》课具有鲜明的政治性、思想性、理论性、针对性、科学性、知识性以及实践性和修养性。它包罗政治、思想、道德、心理本质、学习成才和法律本质等内容,指导和回答大学生在人生、抱负、信念等方面遍及关心和迫切需要解决的问题。 思想道德修养与法律基础...自考培训
  • 中国近代史纲要

    中国近代史纲要

    “中国近现代史纲要”全国高等教育自学考试指定教材,依据中央审定的普通高等学校“中国近现代史纲要”编写大纲以及马克思主义理论研究和建设工程重点教材《中国近现代史纲要》,结合自学考试的特点设计了十章,集中讲述1840年鸦片战争爆发一直到2007年中国共产党第十七次全国代表大会召开的160多年的中国近现代历史。 中国近代史纲要...自考培训
微信公众号 考试交流群
湖北自考网微信公众号

扫一扫关注微信公众号

随时获取湖北省自考政策、通知、公告以及各类学习资料、学习方法、课程。