首页 分享 【程序填空】宠物管理

【程序填空】宠物管理

来源:萌宠菠菠乐园 时间:2024-11-17 14:46
题目描述

已知宠物类Pet的定义如下代码。宠物猫类Cat和宠物狗类Dog都是类Pet的派生类

类Cat增加数据成员:姓名(字符串)、食物(字符串),重载输出函数print,输出格式参考样例

类Dog增加数据成员:姓名(字符串)、犬大小(int),重载输出函数print,其中输出犬大小信息时,会根据犬大小值的123对应输出smallmediumbig,输出格式参考样例

其他参考框架代码

#include<iostream>
#include<string>
#include<cstring>
using namespace std;

class Pet { //基类,也是抽象类
protected:
    string kind; //宠物类型
    int ID;    //宠物编号,固定长度为5位正整数    
public:
    Pet(): kind("unset"), ID(-1) { }
    virtual void set(string tk, int ti)=0; //宠物必须设置类型和编号
    virtual void print()    { cout<<"NONE"<<endl; }
};

//完成类Cat和类Dog的填空

//主函数和输出的全局函数如下:
void print_pet(Pet &pr)
{    pr.print();    }

int main()
{    string tk, ts, tf;
    int t, ti, tt;
    char ptype;
    cin>>t;
    while (t--)
    {    cin>>ptype;
        if (ptype=='C')
        {    cin>>tk>>ti>>ts>>tf; //类型、编号、姓名、食物
            Cat cc(ts, tf);
            cc.set(tk, ti);
            print_pet(cc);
        }
        if (ptype=='D')
        {    cin>>tk>>ti>>ts>>tt; //类型、编号、姓名、犬大小
            Dog dd(ts, tt);
            dd.set(tk, ti);
            print_pet(dd);
        }
    }

         return 0;
}

输入

第一行输入t表示有t个宠物

接着输入t行,每行包含5个参数,含义如下:

第一个参数是单个大写字母表示宠物类型(C表示宠物猫,D表示宠物狗)

如果是宠物猫,接着的四个参数分别是:类型、编号、姓名、食物

如果是宠物猫,接着的四个参数分别是:类型、编号、姓名、犬大小

根据管理需要,宠物编号ID是固定5位正整数,不足5位则高位补0,且猫Cat编号首位为1,狗Dog编号首位为2

假设编号的输入数据不超过4位,例如输入猫的编号是33,则最后生成的猫编号是10033;例如输入狗的编号是44,则最后生成的狗编号是20044

输出

输出t行

每行都是调用全局函数print_pet实现输出

输入样例1 

4
C Cat 1 mimi fish
D Dog 2 lucky 2
D Chihuahua 3 wawa 1
C Garfield 4 fifi fishcan

输出样例1

Cat's ID=10001
mimi likes fish
Dog's ID=20002
lucky is medium
Chihuahua's ID=20003
wawa is small
Garfield's ID=10004
fifi likes fishcan

思路分析

对于程序填空题,我们需要通过观察主函数的类的创建看看有没有传入什么参数,还有类对象成员函数的调用情况,以及输出样例来确定我们补充的代码。

题目中谈到宠物编号的生成,可以直接通过相加的方法,猫咪从10000开始加,狗崽从20000开始加。

AC代码

class Cat :public Pet

{

protected:

string name, food;

public:

    Cat(string name,string food):name(name),food(food){

    }

    virtual void set(string tk, int ti)

    {

        kind = tk;

        ID = 10000 + ti;

    }

    virtual void print()

    {

        cout << kind << "'s ID=" << ID << endl << name << " likes " << food << endl;

    }

};

class Dog :public Pet

{

protected:

string name;

    int howbigisit;

public:

    Dog(string name,int big):name(name),howbigisit(big){

    }

    virtual void set(string tk, int ti)

    {

        kind = tk;

        ID = 20000 + ti;

    }

    virtual void print()

    {

        cout << kind << "'s ID=" << ID << endl << name << " is ";

if (howbigisit == 1)

            cout << "small" << endl;

else if (howbigisit = 2)

            cout << "medium" << endl;

else

            cout << "big" << endl;

    }

};

相关知识

springboot+vue宠物领养管理小程序【开题+程序+论文】
宠物健康管理小程序解决方案:让宠物健康触手可及
宠物健康管理小程序解决方案:软件定制开发
宠物爱心组织管理系统(程序+文档模板)
小程序+spring boot宠物健康管理系统 毕业设计
django宠物咖啡店管理系统(程序+开题报告)
(附源码)小程序宠物健康管理系统 毕业设计201738
宠物管理小程序:定制化开发,宠物主人的智能助手
django基于微信小程序的宠物医院宠物健康管理系统(程序+开题报告)
springboot+vue宠物救助管理系统【开题+程序+论文】

网址: 【程序填空】宠物管理 https://www.mcbbbk.com/newsview581255.html

所属分类:萌宠日常
上一篇: 问道宠物天技一览表
下一篇: 多态实现主人喂养宠物

推荐分享