前言
好久没写博客了,如今做完了一个收银系统,静下心来做一个简单的总结。虽然收银系统各种各样,到处都有,开源的也不少,但是自己亲手做了一遍以后也收获颇丰。相比其他收银软件,功能上没什么创新,主要在于客户要求界面美观友好,故此用WPF开发客户端,采用MVVMlight框架。服务端使用的是阿里云服务器,写成WebAPI供客户端使用,进行数据交互。下面仅介绍客户端:
项目结构
项目结构如下,分为Model、View、ViewModel、Core、LocalDB、Service、Toolkit。
MVVM就不介绍了。
LocalDB是对本地数据操作,使用的是SQLite,用于存储商品信息、未能及时上传的销售数据等需要存储在本地的数据。
Service是对服务端WebAPI的调用,账号登录、同步商品信息、上传数据等。
Core是一些主要功能的类库,如支付宝支付、微信支付、配置信息、日志等。
Toolkit是一些自定义的WPF控件。
流程
登录:因为是连锁超市,所以登录分账号登录(不同分店),和收银员登录,并且设计成可离线登录(账号信息加密存储到本地)。登录后进行数据同步,使本地的商品信息保持最新,并将未上传或上传失败的数据上传,登录后进入收银主界面。
收银主页:用扫码枪对商品进行扫码,获取条码后在本地数据库查询商品信息,并显示在界面的销售列表,商品条目可编辑。然后选取支付方式:支付宝、微信、现金,其中支付宝和微信通过扫取用户手机的付款码得到授权码,然后进行收款。支付完成后打印小票,同时开启新的线程上传此次销售单据,若失败则暂存本地,此外另一线程每隔一段时间查询本地是否有未上传数据,若有则及时上传,。收银主页同时具备挂单和取单功能,挂单:将当前的销售商品列表进行缓存;取单:取出缓存的商品列表。
销售单据:分本地销售查询和网络销售查询,顾名思义,本地是查询本机的销售单据(通过本地数据库查询),网络销售是查询该店的所有销售单据(通过服务器查询)。销售单据可查看详情,可进行退款处理(支付宝和微信则退回原付款账号),退款处理需要管理员进行确认,由于客服方管理员不常在超市,故此采用短信验证进行退款确认。
交接班:展示本次收银员的收银详情。
会员中心:会员添加等基本功能,详细功能在收银后台。
系统设置:小票打印机配置、商品同步、多屏、快捷键等功能。
总结
客户端功能不算多,做起来也挺快,收获主要在于两点:
1、进一步熟悉WPF和MVVMLight
2 、了解了经营超市一些业务,虽然看上去开超市不难的样子,经过这一轮的业务沟通,发现开超市的名堂也很多,尤其是开大型连锁超市更是如此,在此攒点经验,或许以后自己开家店能用得上呢,哈哈。
后面会有更多该项目的技术总结。