软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2017年下半年程序员考试下午真题试题(案例分析)
考试中心《2017年下半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2017年下半年
试题题型【分析简答题】
试题内容

阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。

图6-1类图
问题:6.1【C++代码】
usingnamespacestd;
classBook;
classVisitor{
public:
virtualvoidvisit(Book*book)=0;
//其它物品的visit方法
};

classItem{
public:virtualvoidaccept(Visitor*visitor)=0;
virtualdoublegetPrice()=0;
};

classBook(1){
private:doubleprice;
public:
Book(doubleprice){//访问本元素
(2);
}
voidaccept(Visitor*visitor){
(3);
}
doublegetPrice(){returnprice;}
};
classCashier(4){
private;
doubletotalForCart;
public:
//访问Book类型对象的价格并累加
(5){
//假设Book类型的物品价格超过10元打8折
if(book->getPrice()<10.0){
totalForCart+=book->getPrice();
}else
totalForCart+=book->getPrice()*0.8;
}
//其它visit方法和折扣策略类似,此处略
doublegetTotal(){
returntotalForCart;
}
};

classShoppingCart{
private:
vector<item*>items;
public:
doublecalculatePrice(){
Cashier*visitor=newCashier();

for(inti=0;i<items.size();i++)
(6);
}
doubletotal=visitor->getTotal();
returntotal;
}

voidadd(Item*e){
items.push_back(e);
}
};


相关试题

推荐文章
合作网站内容