1 概述。
随着商业、零售业,特别是连锁超市的迅猛发展,管理信息系统(MIS)在商业的销售管理中起着越来越重要的作用。POS系统即电子收款机系统(PointOfSellS),是MIS的重要组成部分。它的主要功能就是完成商品销售,并全面地记录销售信息,为管理人员提供营销数据,是各种分析、统计和进行决策的基础和依据。结合某超市的实际情况,采用前台POS机+后台服务器的工作模式,设计和开发了基于windows2000的POS销售系统[1].
2 POS系统总体架构。
本文开发的POS销售管理系统由前台POS机和后台服务器两大部分组成。服务器由高性能的PC机完成全部管理功能,而前台各个POS机只完成商品销售所必须的输人输出功能,不再配备硬盘和操作系统,采用无盘工作站模式工作。各POS机和后台PC机通过局域网进行数据交换,并将处理结果送到相应的POS机显示和打印。POS系统总体架构如图1所示。
前台POS机(包括钱箱)连接着票据打印机、条形码扫描仪和客显(客户价格显示器)。后台PC机连接着条形码打印机、普通打印机和盘点机[1].
3 POS系统后台数据库设计。
POS系统的后台数据库用来存储该系统的所有数据信息,包括商品资料、人员资料、销售资料等,是销售系统至关重要的组成部分。该文利用SQLServer2000设计了POS系统的数据库CSDATA,系统采用windowsNT与SQLServer认证用户身份,加强了数据库的安全性。本数据库主要包括以下一些核心数据库表。
1)用户信息表(CS一BL--USERINFO):包含用户编号、用户姓名、用户密码、用户级别(包括出纳、出纳组长、系统维护员和门店经理)、用户状态(包括销售、退货和已交班)、交易状态(销售、退货和出纳结帐)、交易日期等字段。
2)门店人员信息表(CS一BL--SHPPERSOMNF):包含用户编号、用户姓名、POS机编号、用户级别、正确的交易状态等字段。
3)商品基本资料表(CS一BL--GOODSINFO):包含商品条码、商品店内码、商品简称、商品规格、商品名称等字段。
4)商品定价表(CS一BL--STOREDIFFPRIC):包含差价类别、商品店内码、指导价等字段。
5)门店信息表(CS一BL--DEPARTINFO):包含门店编号、门店名称、差价类别等字段。
6)POS机信息表(CS_TBL--POSINF):包含门店编号、POS机编号、钱箱金额、最近使用出纳编号、当前状态、POS机网卡地址等字段。
7)销售流水主表(CS一BL--SALDETAIL--MN):包含销售流水、出纳编号、商品数量、合计金额、支付金额、销售褪货、找零金额等字段。
8)销售流水从表(CS_TBL--SALDETAIL--SuB):包含销售流水、序号、店内码、商品条码、商品数量、商品单价、商品小计等字段。
9)登陆流水信息表(CS一BL--LOGON):包含出纳编号、操作类型、门店编号、POS机号等字段。
10)商品库存信息表(CS--TBL--SHPSTOK--SuM):包含门店编号、店内码、商品数量等字段。
11)POS机维护信息表(CS_TBL--POSINF):包含门店代号、POS机号、当前状态、POS机网卡地址等字段。
4 POS系统的功能设计。
POS系统功能模块的设计是系统的总体框架,是程序设计的指南。根据系统的用户需求,在保证系统安全性的前提下,我们将POS系统划分为以下八个功能模块:权限认证、出纳销售、出纳结账、商品退货、POS机维护、打印机设置、POS系统设置和商品热键设置。如图2所示。下面就各个模块的具体功能做详细的阐述。
1)权限认证:出于安全性考虑,POS系统必须实行严格的权限管理,各种类型的用户只有验证身份后,才能使用各自权限范围以内的功能模块,并且对每一次的POS机使用人、使用时间、权限级别和放人备用金额量等都会保存到数据库中。
2)出纳销售:这是整个POS系统中最核心的部分,主要用来完成商品的销售。它详细地显示了顾客的购物清单、总计金额、实收金额、找零以及结帐的方式等主要信息,还包括当前出纳编号、当前日期、POS机编号和当前门店编号等辅助信息。
3)出纳结账:当换班或营业结束时,对本台POS机或当前出纳的销售情况进行简单查询、详细查询、结算并打印出销售清单。
4)商品退货:当顾客对所购商品要求退货时,出纳组长进人商品退货界面,输人顾客购物小票上的销售流水号,将显示出该流水号下所有商品的详细信息,然后就可以对所要求退货的商品进行退货了。
5)POS机维护:此模块完成系统中添加、修改、删除POS机的编号、MAC地址以及POS机的状态等。
6)打印机设置:用来设置销售小票的票头(连锁超市的名称)和票尾(顾客的注意事项、超市的店址、电话等信息)。
7)POS系统设置:对POS销售系统的一些设置,包括POS机基本键盘的设置、电子显示牌端口、打印方式(销售打印或结算打印)和POS编号的设置。
8)商品热键设置:对某些热销商品,可以在POS机的键盘上设置热键,销售时不用输人条码而直接按此热键就能输人该商品,这样可以提高销售速度。在这个界面里,可以完成商品热键的添加、删除、清空和查询等操作。
5 POS系统开发中的关键技术。
5.1无盘工作站。
在计算机网络中,由于无盘工作站具有网络系统安全性高、对网络资源有较大的控制权、易于维护、可对工作站所用的软件同时升级、减少开支等特点,无盘工作站在局域网中得到了广泛的应用。基于上述优点以及POS机的特点,该文所开发的POS销售系统采用无盘工作站模式工作,POS机利用网卡上的远程启动芯片RPLROM引导后台服务器上的操作系统,从而启动服务器上的POS应用软件来工作[2]o5.2ADO的使用。
ADo(MierosoftAetivexDat.objeets)是一个数据对象的集合,是c++Builder和SQLse二er相关联数据库系统中一种数据访问接口,它为应用程序提供了通过OLEDB提供者存取数据的能力,其模型如图3所示。C+BuilderADOExPresS组件封装了这些ADO对象的功能,并在C++Builder中以面向对象的形式实现其功能。在本系统的开发中,利用以下三个组件来实现应用程序和sQLserver数据库直接的连接及数据交换[2]:TADOCollllection:用于与ADO数据库建立连接;多个ADO数据集和命令组件能够共享这个连接来执行命令,获取数据以及对数据进行操作。
将ADocollnectioll的collnectiollstri雌属性设置为:Provider=SQLOLEDB.l;Password==sa;PersistSeeurityInfo=True;UserID=sa;InitialCatalog=CSData;DataSouree=SBSERVER.
TADOQue钾:用于获取和操作由一条有效的SQL语句产生的数据集,可以直接或通过TADOCollllectioll组件连接到数据库。
将ADoQue钾的collnectioll属性设置为:ADOCollnectioll.
TDatasource:用来描述数据源。数据控制控件必须和Tdatasource控件相联系才能从数据库中取得数据。将Datasource的Da-taset属性设置为:ADOQuery.
5.3程序设计中的面向对象技术。
由于面向对象技术集抽象性、封装性、继承性和多态性于一体,易于实现模块化、可复用、易维护、易扩充。类是面向对象程序设计中最重要的概念之一,它将相关的数据和函数封装起来形成一个整体,相当于一个数据结构。因此,在POS销售系统的开发过程中,针对此类软件的特点,从最基本的外围类、实体类和控制基类开始,编写了POS系统类库,为POS系统的开发奠定了基础,并为以后的软件维护和功能扩展以及其它类似软件的开发提供了丰富的资源。POS系统类库中类的继承关系如图4所示。
1)外围类:主要完成电子显示屏的数据显示、打印机打印、弹开钱箱、打印机走纸和切纸等功能,具体函数如下:
bool一faSteallShow(AnsistringContent,AnsistringCom);//显示
bool一faSteallprint(stringContent,intx,inty,StringFontName,intFontsize);//打印
bool一faSteallFliekCashBox();//弹开钱箱
bool一faSteallGopaper();刀走纸
bool一faSteallCutpaper();刀切纸
2)实体类:创建一个数据模型窗口,用来放置ADO组件,完成数据库连接和数据交换任务。
3)控制基类:完成数据库开发程序常用的操作,主要包括日期操作、提示对话框、字符串操作、人民币数字转换汉字、数据库操作等函数。
4)数据控制类:继承控制基类,主要对数据库操作,包括数据集操作函数、查询语句函数等。
5)POS系统基类:主要完成POS系统的基本操作,具体函数如下:
bool_fasteallAddsellGlideMN(StringSellGlide,Strinng Code,intGoodsNum,floatTotalMoney,floatPaymentMoney,intStatus,floatSPareMolley);//添加销售流水(主表)
bool_fasteallAddsellGlideSUB(StringSellGlide,intOrderNum,stringInsideCode,StringBarCode,intNum,floatPriee,floatSubTotal);//添加销售流水(从表)
bool_fasteallchastoekNum(stringshopcode,stringInsideCode,intGoodsNum,boolStatus)刀对多改库存数量
bool_fasteallchastatus(stringsh叩code,stringcode,intcodestatus);//修改出纳状态
bool_fasteallsetLoglnfo(stringcode,intoperator,stringSh叩Code,stringpOSCode);//添加操作流水
bool_fasteallchaPosstatusri(stringshopcode,stringPoscode,intstatus);修改pOS当前状态
float_fasteallcashBoxQue钾(stringshopcode,stringPosCode);刀查询钱箱金额
6 结束语。
本文结合某连锁超市的具体实际,以前台POS机+后台服务器模式开发了工作于无盘工作站下的POS销售系统,并在超市门店进行了试验,运行结果良好,完全满足客户要求。另外,在系统的开发中,完全采用面向对象技术,软件具有良好的开放性,易于日后功能扩展。