栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

贵州大学oj C++ 第五次 11.自助餐计费

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

贵州大学oj C++ 第五次 11.自助餐计费

记录学习日常 代码可能有错 大家多多包涵 有好的建议提出的话 我会开心接纳 初学阶段

​某自助餐厅提供A、B、C三种套餐服务,原价分别为100元,120元和150元。对于不同顾客有不同的优惠规则如下:

(A)成年男顾客,所有套餐均不打折,此外收取套餐原价15%的服务费;

(B)成年女顾客,所有套餐打9折,此外收取套餐原价15%的服务费;

(C)老年人顾客,所有套餐打8.5折,此外收取套餐原价10%的服务费;

(D)未成年人顾客,所有套餐打7折,不收取服务费。

   根据以上需求,定义一个抽象的顾客类Customer,该类有一个数据成员:gender(string类型),用于描述顾客的性别。该类还有一个纯虚函数calculateCost(计算用餐费用函数),用于根据顾客选择的套餐,计算其应该支付的用餐费用并返回。

请根据以上描述完成下面的任务:

(1)请完成Customer类的定义,定义你认为必要的任何成员函数;

(2)请为Customer类定义三个公有派生类:AdultCustomer(成年顾客)、ElderlyCustomer(老年人顾客)和UnderAgeCustomer(未成年人顾客),在这三个类中根据上述规则分别实现纯虚函数calculateCost;

(3)在主函数中定义Customer类的指针并分别指向不同的派生类对象,调用calculateCost函数计算用餐费用并输出。

提示:

(1)calculateCost函数的原型可以定义为 double calculateCost(char set);根据参数set判断用户选择的套餐。

(2)Customer类的gender成员可定义为protected权限也可以定义为private权限。

(3)gender成员的初始化可以由基类的构造函数来完成,也可由派生类的构造函数来完成。如果由基类构造函数完成,派生类构造函数要为基类构造函数传递参数。

main函数已经完成,请根据main函数完成类的设计:

int main(){ 

AdultCustomer c1("male");            

AdultCustomer c2("female");  

ElderlyCustomer c3("male");

UnderAgeCustomer c4("female");

Customer *p;

char set1,set2,set3,set4;

cin>>set1>>set2>>set3>>set4;

p=&c1;

cout<calculateCost(set1)<

p=&c2;

cout<calculateCost(set2)<

p=&c3;

cout<calculateCost(set3)<

p=&c4;

cout<calculateCost(set4)<

return 0;

}

输入描述main函数直接创建了四个对象,因此只需要输入四个顾客选择的套餐即可

输出描述输出四个顾客的餐费,一行一个

样例输入输出:

A B A C
 

115
126
95
105

#include

using namespace std;

class Customer {
public:
    virtual double calculateCost(char set) const = 0;//纯虚函数
};

class AdultCustomer : public Customer {
    string gender;
public:
    AdultCustomer()=default;
    AdultCustomer(string g):gender(g) {}

    double calculateCost(char set) const {
        double expense = 0;//用于存储费用
        if (gender == "male") {
            if (set == 'A') {
                expense = 100 + 100 * 0.15;
            } else if (set == 'B') {
                expense = 120 + 120 * 0.15;
            } else {
                expense = 150 + 150 * 0.15;
            }
        } else if (gender == "female") {
            if (set == 'A') {
                expense = 100 * 0.9 + 100 * 0.15;
            } else if (set == 'B') {
                expense = 120 * 0.9 + 120 * 0.15;
            } else {
                expense = 150 * 0.9 + 150 * 0.15;
            }
        }
        return expense;
    }
};

class ElderlyCustomer : public Customer {
    string gender;
public:
    ElderlyCustomer()=default;
    ElderlyCustomer(string g):gender(g) {}

    double calculateCost(char set) const {
        double expense = 0;
        if (set == 'A') {
            expense = 100 * 0.85 + 100 * 0.1;
        } else if (set == 'B') {
            expense = 120 * 0.85 + 120 * 0.1;
        } else {
            expense = 150 * 0.85 + 150 * 0.1;
        }
        return expense;
    }
};

class UnderAgeCustomer : public Customer {
    string gender;
public:
    UnderAgeCustomer()=default;
    UnderAgeCustomer(string g):gender(g) {}

    double calculateCost(char set) const {
        double expense = 0;
        if (set == 'A') {
            expense = 100 * 0.7;
        } else if (set == 'B') {
            expense = 120 * 0.7;
        } else {
            expense = 150 * 0.7;
        }
        return expense;
    }
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号