1 概 述
为了缓解销售旺季收款台的压力,节省顾客的时间,以吸引更多顾客,本文设计一种超市预收款系统。当顾客排队交款时,在一定位置由两到三人组成临时收款台,扫描商品并装袋,装袋完毕后扫描包装条码并将包装条码贴到袋子上放进特制的红色袋子中。若顾客还有商品则继续扫描并放入新袋子中,直至全部商品扫描完毕。确认后顾客提着带有防盗码的红色袋子到收款台交款。收款台解除防盗码后,扫描包装条码进行结账。
Windows CE属于嵌入式操作系统,可以定制为很多设备的操作系统,所以很适合于工业控制。随着微软对Windows CE的不断升级,产生了Pocket PC以及当前非常流行的Mobile 5.0。如今Windows CE 5.0也已成熟,更令人惊喜的是使用微软的Visual Studio.NET可以轻松地开发智能设备应用程序,而且它还集成了Pocket PC、Windows CE模拟开发环境。.NET Compact Framework是.NET Framework的子集,设计为运行在智能设备上,对受管代码和XML Web服务提供支持。这为开发者开发智能设备应用带来很大方便。
Web Service是微软提出的基于互联网的开发模型。所谓的Web Service是指由企业发布的实现其特别商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。
2 系统架构及工作原理
2.1 系统架构
系统主要涉及的硬件设备有:Symbol手持终端、AP(Access Point)、交换机、数据库、收款台、Novell文件服务器以及程序服务器等。涉及的软件主要有:Visual Studio.NET、运行在手持终端上的前台程序、WebSphere开发的数据库应用、收款台程序等。系统架构如图1所示。
2.2 工作原理
工作人员扫描顾客商品并装入购入袋中,每确认一笔商品明细数据通过Web Service方式提交给后台数据库。数据依次经过的设备为:手持终端→AP→交换机→路由器→交换机→数据库。
当购物袋装满时需扫描事先打印好的条码,并将条码贴在购物袋上并提交数据,此时程序服务器从数据库中读取数据并发送到。Novell文件服务器上。当顾客进行完预收款到达收款台后,收银员只需扫描购物袋上面的条码就可读出相应购物袋所有商品明细以及总金额,直接结账即可。在此架构中程序服务器和收款机都要先映射网络驱动器,以建立与Novell文件服务器的连接。
3 预收款系统的实现
本系统前台通过Visual Studio.NET来开发智能设备应用,通过Web Service连接WebSphere开发的后台处理应用,所有数据库操作在后台进行。
3.1 应用环境的搭建
集群具有高可用性、负载分发等特点,是保证系统性能和可靠性的主要手段之一。通过组建WebSphere应用服务器集群,能够有效地提升应用系统的可用性。由于预收款系统对系统即时性、可用性的要求都很高,搭建集群也就成为了必然。集群使预收款系统具有可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)等优点。
WAS(WebSphere Application Service)集群由一组应用服务器组成,每个服务器上部署了同样的应用程序。WAS ND提供水平集群和垂直集群两种形式。垂直集群是指同一机器上部署多个服务器,充分利用硬件资源;而水平集群则是利用多台机器资源,每台机器部署相同的应用。本例采用水平集群。
本案例采用WebSphere Application Server NetWorkDeployment 6.0.0.1版进行集群的搭建,同时安装IBMHTTP Server来提供Web服务。基于Apache的IBMHTTP Server是基于Apache Group开发的Apache Web服务器的Web服务器。IBM HTTP Server包括一些Apache Web服务器没有的功能,可运行在多种操作系统(如Linux、Windows、AIX等)上。IBM HTTP Server扩展了Apache的功能,使其能够使用IBM快速响应高速缓存加速器。拓扑结构如图2所示。
3.2 Web Service的开发
Web Service:所使用的是Internet上统一、开放的标准(如HTTP、XML、SOAP、WSDL等),可以在任何支持这些标准的环境(如Windows、Linux)中使用。SOAP(Simple Object Access Protocol,简单对象访问协议)是一个用于分散和分布式环境下网络信息交换的基于XML的通信协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通信。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛地访问。用于开发Web Service的工具很多,诸如Visual Studi-o.NET、Delphi高版本、WebSphere等等。本系统采用WebSphere开发,Java源代码。
3.3 手持终端智能设备的应用开发
Visual Studio 2005为开发可在基于Windows CE的智能设备(如Pocket PC和Smart Phone)上运行的软件提供了丰富的集成支持。用户可以使用Visual C#或Visu-al Basic来编写在.NETCompact Framework上运行的托管应用程序,使用Visual C++来编写本机的应用程序。无论选择何种语言,用户都将使用与开发PC程序时相同的代码编辑器、设计器和调试器界面,可以直接从智能设备项目中选择一个模板,然后开始编码。手持终端与电脑连接时需要同步软件——ActiveSyncsetupchs.exe,安装该软件后就可以和手持终端即时通信了。调试程序时可以选择直接运行在智能设备上,此时程序会自动安装在手持终端上,无需AP连接。开发的程序可以生成cab包,cab包可以直接安装在手持终端上,并生成可执行文件。默认情况下,手持终端如果没有电,系统就会恢复出厂设置,许多程序需要重新安装,给用户带来诸多不便。值得一提的是,Mobile公司推出了差异备份软件,安装软件前对系统状态进行扫描记录,安装应用软件后再次扫描,软件将两次扫描的差异记录下来并保存成文件,把文件放在手持终端Application目录下。每次冷启动设备,应用程序都会自动安装。
3.4 预收款系统的部署
首先,安装WAS。安装完毕后选择“概要表创建”向导,在“概要表类型选择”对话框中选择“创建DeploymentManager概要表”。在“节点、主机和单元名”对话框中,主机名要输入IP地址,一直单击“下一步”即可完成安装。在程序菜单中启动概要表。启动界面消失后在浏览器中输入地址http://ip9060/ibm/console即可进入管理控制台。登录管理控制台后,点击“服务器”,可以看到集群、集群拓扑等信息。
其次,安装各个节点。选择“概要表创建”向导,在“概要表类型选择”对话框中选择“创建应用程序服务器概要表”,一直单击“下一步”即可完成安装。在程序菜单中启动概要表。以同种方式在其他节点上安装应用程序服务器概要表并启动。
最后,为了提高静态页处理效率,需要安装IBM HT-TP Server以及WAS插件。安装后修改并运行插件bin下的configurewebserverl.bat,Web服务器会添加到配置管理器中。可进入管理控制台点击“服务器”,打开Web服务器查看刚添加的服务。至此,安装已结束。然后进行集群的搭建。进人管理控制台,点击“系统管理”进入节点;添加节点,选择类型为受管制节点,输入节点IP地址和JMX端口号即可。此时控制台会与节点建立映射关系。用此方法添加其他各节点,添加完所有节点后,控制台会把各节点的默认服务serverl自动添加到系统中,可以将其删除。然后需要把刚添加的节点作为组管理起来,就是群的概念。点击“服务器”,进入“集群配置”,单击“添加”按钮,输人群的名称,然后选择刚添加过的节点,保存也可建立多个群。搭起集群环境后无需进入单个节点进行管理,在管理控制台可以进行统一管理。例如要设置某个节点的环境变量,可以单击“环境”,选择WebSphere变量,选择相应的节点进行配置。在整个集群环境中,若要发布应用程序,只需要在部署管理控制台发布应用。应用可以选择需要使用的集群,选择完毕后集群内所有成员节点都会有份应用;同时,应用也发布到IBM HTTP Server上,这样该应用所有动态页面提交给负载最低的可用节点,静态页面或数据提交给IBM HTTP Server来处理。至此,一个简单的基于容器的集群已搭建完成。本系统还需要操作数据库,建立数据库驱动、配置数据源都会在所有成员节点上同步完成。集群维护起来也很方便,随时可以添加、删除节点,灵活易扩展。添加节点后只需要把节点加入到相应的群中,保存后该节点就会享有该群上的所有应用,包括数据源信息。
JSP(JaVa Server Pages)是一种动态网页技术标准。Servlet是Java技术对CGI编程的回答。支持JSP/Serv-let的Web服务器有很多,选择合适的Web服务器对于构建JSP网站是非常重要的。常用的web服务器有:Al-laire JRun、ApacheTomcat、BEA Web logic ApplicationServer、IBM WebSphere Application Server、iPlanet WebServet、JavaServer Web Development Kit(JSWDK)以及Java Web Server等。
4 预收款系统的使用
输入相应的会员信息和密码进入预收款界面。输入时,按回车键光标会自动跳转到下一个输入框,身份验证无误后进入主界面,如图3(a)所示。其中一位顾客一个流水,系统会自动生成。此时可以扫描商品,如图3(b)所示。
扫描后会显示商品详细信息:名称、单价/单位、数量、总金额。按Z键可以看到商品在列表框中,再次按Z键可以返回信息框。若顾客有不要的商品,可以选中相应商品明细按X键删除。最近扫描的商品总排在列表首行,按Z键时默认显示最近一次扫描的商品信息。若要查看先前扫描过的商品信息,可以选中列表中相应记录按Z键。数量默认为1,若要输入数量按A键。
输入完数量按回车键,此时扫描商品条码。装袋完成后点击B。扫描包装条码后,继续装袋。顾客的所有商品装袋结束后按C键(预结),当提示“提交成功”时该顾客的商品信息将发送到收款台。此后可对下一名顾客中进行预收款。若在提交前想查看当前顾客所有的商品信息(前提是都已小结),可选择操作菜单中的流水明细,最方便的是按快捷键E。按F1退出该窗口返回到主界面。若要查看某一包装袋的商品明细,可选择菜单中的小结明细。扫描包装袋上的条码就会出现该袋所盛商品的明细。按F1退出该窗口返回到主界面。若顾客有些商品(如大袋大米、卫生纸等)不能包装,则需到收款台另行扫描收款。若顾客还有未包装商品,但想知道所有商品(不论包装还是未包装)的明细,可选择菜单中的总金额或按快捷键G。“包装额”中显示该顾客所有包装商品应收款,“其他”是不方便包装商品应收款,“总金额”为该顾客到款台总付款。操作员扫描未包装商品,结束后告知顾客该付多少钱。若操作员需修改密码,可选择操作菜单中的“修改密码”。
结 语
本文详细介绍了超市预收款系统的架构及设计,并阐明了该系统的使用方法。本系统可以灵活应用于各超市以及大型卖场的促销活动时期。对消费者来说,不仅拥有了更好的购物环境,还大大节省了宝贵的时间(这正是本系统的创新性所在);对商场来说,收款速度的提高意味着商品销售量的增长,将会带来更多的利润。由此可见,无论是商场还是消费者,超市预收款系统都能够合理、有效地为之服务,具有良好的应用前景。