面向对象程序设计实例——模拟网上购书的结帐功能

    首先得对这个问题进行分析,我们知道在网上买书的流程为输入会员号,如果不是会员则跳过,然后选择所要购买的书籍放如购书筐中,选择结束后,用户要求结帐,系统则根据用户的身份计算出他所需要付的钱数,整个系统很复杂,所以我在这里要解决的只是最后一步,既系统根据用户的身份计算出他所需要付的钱款。

    因为有三种不同身份的人,但是他们又有共同之处,比如姓名,购书人编号,地址,购书金额,因此我们设计一个基类buyer类,其他的类layfolk(普通人),member(会员),honoured_guest(贵宾)均由它派生而出。基类中定义构造函数和对所有购书者相同的操作,函数getbuyername()用于得到购书者的姓名,getaddress()用于得到购书者的地址,getpay()用来取出购书者应付的金额,getid()用来取出购书者的编号。由于各类购书者的数据内容不同,显示方法也不一样,因此在基类中将setpay&display定义为虚函数。基类定义如下:

class buyer

{

protected:

         char* name;

         int buyerID;

         char* address;

         double pay;

public:

         buyer();

         buyer(char* n,int b,char* a,double p);

         ~buyer();

         char* getbuyname();

         int getid();

         char* getaddress();

         double getpay();

         virtual void display()=0;

         virtual void setpay(double=0)=0;

};

    买书的过程中我们还需要得到关于书的一些基本情况,故我们还需要定义一个book类用来完成对书的一些基本操作。类book定义如下:

class book

{

protected:

         char* bookID;

         char* bookname;

         char* auther;

         char* publishing;

         double price;

public:

         book();

         book(char* bid,char* bn,char* au,char* pu,double pr);

         ~book();

         void display();

         char* getbookID();

         char* getbookname();

         char* getauther();

         char* getpublish();

         double getprice();

};

    在主函数中,我们建立了三个派生类的实例来证实程序的正确性,并假设已经选好两本书籍(book类对象),并将购书人的基本情况和书本的基本情况都显示出来,虽然在实际买书的过程中购书人的基本情况是不需要显示的,但我们将它显示出来只是为了证明程序的正确性和结果的可读性。

完整的程序如下:

//buy.h

#include <iostream.h>

#include <string.h>

class buyer

{

protected:

         char* name;

        

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值