10-C. 商旅信用卡(多重继承)

本文介绍了如何设计和实现一个旅程信用卡系统,该系统结合了旅程会员卡和信用卡的功能。系统包括旅程会员卡类、信用卡类以及旅程信用卡类,支持下单、消费、退款和积分兑换等操作。用户可以通过旅程信用卡在旅程网下单,同时获得旅程积分和信用卡积分。此外,信用卡积分还可以按照1:2的比例兑换为旅程积分。系统在处理信用卡消费时会检查是否超出信用额度。案例展示了具体的操作流程及输出结果。

10-多继承
题目描述
旅程会员卡,有会员卡号(int)、旅程积分(int),通过会员卡下订单,按订单金额累计旅程积分。

信用卡,有卡号(int)、姓名(string)、额度(int)、账单金额(float)、信用卡积分(int)。------请注意数据类型

信用卡退款m,账单金额-m,信用卡积分减去退款金额。

初始假设信用卡积分、旅程积分、账单金额为0。

生成旅程信用卡对象,输入卡信息,调用对象成员函数完成旅程网下单、信用卡刷卡、信用卡退款、信用卡积分兑换为旅程积分等操作。

根据上述内容,定义旅程会员卡类、信用卡类,从两者派生出旅程信用卡类并定义三个类的构造函数和其它所需函数。

通过旅程信用卡在旅程网下单,旅程积分和信用卡积分双重积分(即旅程积分和信用卡积分同时增加)。

旅程信用卡可以按 旅程积分:信用卡积分= 1:2 的比例将信用卡积分兑换为旅程积分。

信用卡消费金额m,若加已有账单金额超额度,则不做操作;否则,账单金额+m,信用卡积分按消费金额累加。

某旅游网站(假设旅程网)和某银行推出旅游综合服务联名卡—旅程信用卡,兼具旅程会员卡和银行信用卡功能。

输入
第一行:输入旅程会员卡号 信用卡号 姓名 额度

第二行:测试次数n

第三行到第n+2行,每行:操作 金额或积分

o m(旅程网下订单,订单金额m)

c m(信用卡消费,消费金额m)

q m (信用卡退款,退款金额m)

t m(积分兑换,m信用卡积分兑换为旅程积分)

输出
输出所有操作后旅程信用卡的信息:

旅程号 旅程积分

信用卡号 姓名 账单金额 信用卡积分

1000 2002 lili 3000
4
o 212.5
c 300
q 117.4
t 200

1000 312
2002 lili 395.1 195

#include<iostream>
 using namespace std;

 class vip
 {
 protected:
     int num;
     int points;//旅程积分
 public:
     vip():points(0){}
     vip(int n):num(n),points(0){}
 };

 class credit
 {
 protected:
     int num2,limit;
     int points2;//信用卡积分
     string name;
     float money;//账单金额
 public:
     credit():money(0),points2(0){}
     credit(int n,string na,int l):num2(n),name(na),limit(l),points2(0){}
 };

 class vipcredit:public vip,public credit
 {
 public:
     vipcredit(int n,int n2,string s,int l):vip(n),credit(n2,s,l){}
     void refund(float m)//退款
     {
         if(m<=money)
         {money-=m;points2-=(int)m;}
     }
     void order(float m)//下单
     {
         points+=(int)m;points2+=(int)m;money+=m;
     }
     void consume(float m)//信用卡消费
     {
         if(m+money<=limit)
         {
             money+=m;
             points2+=(int)m;
         }
     }
     void exchange(float m)//兑换
     {
         if(m<=points2)
         {
             points2-=(int)m;
             points+=(int)m/2;
         }
     }
     void display()
     {
         cout<<num<<" "<<points<<endl;
         cout<<num2<<" "<<name<<" "<<money<<" "<<points2<<endl;
     }
 };

 int main()
 {
     int num,num2,limit,n;
     string name,command;
     
     cin>>num>>num2>>name>>limit>>n;
     vipcredit v(num,num2,name,limit);
     while(n--)
     {
         float m;
         cin>>command>>m;
         if(command=="o")
             v.order(m);
         else if(command=="c")
             v.consume(m);
         else if(command=="q")
             v.refund(m);
         else if(command=="t")
             v.exchange(m);
     }
     v.display();
     return 0;
 }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值