案例超市收银系统.pptx
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7页 共#页
目录
目退录出
三、案例设计
1.类的设计 ➢ 根据上述的设计思想,设计了“商品类”、“货架类”
和“收银台类”3个类,这3个类的声明部分在文件 “counter.h”中实现,3个类的成员函数的实现部分在 文件“counter.cpp”中完成。其中商品类(CGoods类) 负责完成商品信息的存储、获取、复制等任务;货架 类(CStore类)负责完成库中商品的入库、出库、查 询及显示等任务;收银台类(CCounter类)负责完成 商品的结账、找零等任务。 ➢ 另外在counter.h文件中还定义了一个表示货架商品对 象的结构SStoreElement,它有两个成员,一个是商品 对象的指针,一个是此类商品的数量。货架中的每个 商品都是这个结构类型的。
• 案例效果如图所示。
2页 共#页
目录
目退录出
超市收银系统案例效果图1
3页 共#页
目录
目退录出
超市收银系统案例效果图2
4页 共#页
目录
目退录出
➢ 功能说明
• 显示超市库存商品信息。
• 显示购物流程提示信息。
• 实现收款过程,反复输入所购各种
商品的索引号和购买数量,直到输
入商品索引号“1”,结束购物流 程。
➢ 购物篮管理就是一个小型的货架管理,可以用货架 类来实现。
➢ 收银管理实现商品的结账、找零等任务。需要建立 一个收银台类,通过调用相应的函数来实现。
6页 共#页
目录
目退录出
➢ 其中,需要注意以下一些问题:
• 从货架拿货时,应该将商品拿一部分出去,通
过将商品“复制”一份出去来实现。
• “货架”上有形形色色的商品,因此,这个类
• 实现收银,根据顾客所交现金,自
动找零。
5页 共#页
目录
目退录出
二、案例分析
➢ 在本案例中,超市收银系统应具备四大基本功能: 商品管理、货架管理、购物篮管理和收银管理。
➢ 货架管理实现库中某种商品的入库、出库、查询及 显示等功能。需要建立一个货架类,通过调用相应 的函数来实现。
➢ 每种商品有单价、条形码、商品名称等属性。商品 管理类实现了设置、获取商品信息、复制商品信息 等功能。
CStore类的结构
14页 共#页
目录
目退录出
15页 共#页
目录
目退录出
16页 共#页
目录
目退录出
17页 共#页
目录
目退录出
18页 共#页
目录
目退录出
(4)CCounter类(收银台类)的设计 CCounter类的结构如图所示。
CCounter
-*m_pBasket : CStore -m_dCash : double +CCounter(in *pBasket : CStore) +virtual ~CCounter() +Bill() : double +Count(in dCash : double) : double +GetCash() : double
需要向量这个容器来容纳这些商品。向量中仅 存储商品对象是不够的,因为商品没有量的概 念,到底容器中包含多少件此类商品还需要用 另外一个变量来表示,通过把商品对象和商品 数量集成到一个结构体中来实现。
• 如何构建购物篮对象?仔细想一下,“购物篮”
就是一个小型的货架,因此可以用“货架”类 模拟一个购物篮。
案例十六 超市收银系统
本案例知识要点 ➢ 格式化输出 ➢ 结构体的使用 ➢ 类的设计和使用 ➢ 类指针的使用 ➢ 函数重载 ➢ 向量的使用 ➢ 虚函数
1页 共#页
目录
目退录出
一、案例需求
➢ 案例描述
• 模拟“美特好”超市收款过程,根
据货物清单,选定所购货物种类和 数量,实现收银结账。 ➢ 案例效果图
CCounter类的结构
19页 共#页
目录
目退录出
20页 共#页
目录
目退录出
21页 共#页
目录
目退录出
22页 共#页
目录
目退录出
2.主程序设计开始显示超市所有商品的信息输入欲购买商 品的索引号输入欲购买商品的数量继续购买商品吗?去收 银台结账结束NY
(1)函数设计
CStore
-m_vStore : vector<pStoreElement>
+CStore()() +virtual ~CStore()() +AddGoods(in *pGoods : CGoods, in iNum : int) : bool +QueryGoods(in &strName : string) : int +QueryGoods(in iIndex : int) : int +DeleteGoods(in &strName : string, in iNum : int) : int +DeleteGoods(in iIndex : int, in iNum : int) : int +DeleteAllGoods() +* GetAllGoods() : vector<pStoreElement> +GetGoods(in iIndex : int) : pStoreElement +GetGoods(in &strName : string) : pStoreElement +Print()()
10页 共#页
目录
目退录出
11页 共#页
目录
目退录出
12页 共#页
目录
Fra Baidu bibliotek
目退录出
结构体tagStoreElement的结构
<<结构>>tagStoreElement +*pGoods : CGoods +iNum : int
13页 共#页
目录
目退录出
(3)CStore类(货架类)的设计
CStore类的结构如图所示。
8页 共#页
目录
目退录出
9页 共#页
目录
目退录出
CGoods类结构图
CGoods -m_iIndex : int -m_strName : string -m_dUnitPrice : double +CGoods(in iIndex : int, in strName : string, in dUnitPrice : double) +~CGoods() +GetName() : string +GetIndex() : int +GetUnitPrice() : double +SetUnitPrice(in dUnitPrice : double) +*Clone() : CGoods