2017年下半年程序员考试下午真题(6)
试题六(共四分〉
阅读下列说明和c++代码,填补代码中的空缺,将解答填入答题纸的对应栏内.
【说明 】
以下 C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Items)
加入购物车(SgoppingCart),到收银台(Cashier) 对每个购物车中的物品统计其价格进行结账.设计如图6- 1 所示类图。
【C++代码】
Using namespace std;
classbook
class Visist
public:
Virtual void visit(Book* book)=0;
//其它物品的visit方法
Class Iterm
Public:virtual void accpt(Visit*visit)=0;
Virtual double getPrice()=0
class BOOK
public:
Book (double price){//访问本元素——;)
Void accept (Visitor*visitor){__}
double getPrice( )
{return price;}
class Cashier_{
private
doule totalForCart
Public:
//访问Book类型队形的价格并累加__
//假设Book类型的物品价格超过10元打8折
if(book->getPrice( )>10.0)
{totalForCart+=book->getprice( );
}else
totalForCart+=book->getPrice( )*0.8;
}
//其他visit方法和折扣策略类似,此忽略
double getTotal( ){
return tatalForCart;
class ShoppingCart{
private:
vectoritenms;
public:
double calculatePrice( ){
Csahier*visitor=new Cashier( );
For(int i=0;i
Double total=visitor->getTatal( );
Return tatal;
Void add(Item*e)
{items.push_back(e);}
各省软考办 | ||||||||||