目录
1、项目背景
众所周知,收银台即各个商铺结算付款的地方,客户在此处完成结款并获得购物票据,也可以通过这个系统快速的查出顾客结账情况、商品信息、售货情况等,这也就是传统收银台的最主要功能。但与此同时,传统收银台也存在一些缺陷,比如:收款结算速度慢、易出差错、不宜进行商品调价、商品盘点效率低、用户体验感不好。基于以上描述,所以模拟实现了一个带有一些扩展功能的小型收银台项目。
2、核心功能
此次我做的小型收银台系统也结合传统收银台的功能,并在此基础上做了一定的扩展,主要功能包括:管理员可操作的员工管理与商品管理,以及售货员可操作的收银管理。整体功能框架如下:
1、登录模块
管理员与售货员输入自己的用户名与密码进行登录。根据用户身份不同,所具有的权限也不同,将会登录进不同的功能页面。
2、管理员界面
- 员工操作
查询员工基本信息、添加新员工、删除离职员工信息、更新员工信息
- 商品操作
按照条件查询商品信息、商品入库、过期商品的删除、商品信息变更、查看商品销售情况
3、售货员界面
查询商品库存信息、客户商品出售及取消出售、新增销售记录
3、数据库设计
结合本项目的功能,简单设计了以下几个表格
1、职工表
create table Employee(
id int, -- 员工编号
name varchar(20), -- 员工名字
gender varchar(3), -- 员工性别
birthday Date, -- 生日
password varchar(20), -- 员工密码
position varchar(10), -- 员工职位
telphone varchar(11), -- 联系方式
salary double(9,2) -- 联系方式
);
其中,将员工ID设置为主键,并添加非空、自增的属性
2、商品表
create table Goods(
GoodsID int, -- 商品编号
GoodsName varchar(20), -- 商品名称
GoodsType varchar(20), -- 商品类别:水果、烟酒、日常用品、副食等
ProductDate DATE, -- 商品生产日期
DeadDate DATE, -- 商品过期日期
Price double(9,2), -- 商品价格
Unit varchar(3), -- 计量单位
Inventory int, -- 库存量:商品剩余数量
AlarmValye int -- 报警值:低于该值时,应提醒管理员进货
);
3、售货记录表
create table SellRecord(
GoodsName varchar(20), -- 商品名称
GoodsPrice double(9, 2), -- 商品价格
Amount int, -- 售出数量
Unit varchar(3), -- 计量单位
SellTime Date, -- 售出时间
Operator varchar(20); -- 售货员
4、接口
1、界面
使用Duilib界面库,首先我们看一下传统的MFC界面库与Duilib库的区别:
传统的MFC界面库存在以下缺陷:
- 不美观
- 界面细节处理不好
- 开发效率低下
- 生成程序体积大
- MFC界面美化库使用HOOK技术,可能会导致系统不稳定或者引发其他错误
而Duilib是一款强大轻量级的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。提供所见即所得的开发工具UIDesigner,并且使用XML来描述界面风格,界面布局,具有以下技术特点:
- 界面与业务逻辑分离
- 使用XML配置界面
- 界面布局方式灵活多样
- 内置常用的控件
- 支持自定义控件
- 强大的控件组合能力,复杂功能可通过简单控件组合完成
- 支持ansi和unicode,支持多国家语言
- 内存占用小
此处只罗列部分Duilib库的优势点,但是要注意的是Duilib仅仅是基于Win32的一套UI库,并不是使用了Duilib后就不是Win32程序了,Duilib并不像MFC一样将所有东西全包了,它仅仅包装了UI部分,其它内容还需要Win32知识。
- 管理员操作界面
- 售货员操作界面
2、数据库操作类封装