张建峰,陈琼莺,禹谢华(福建师范大学闽南科技学院,福建 泉州 362332)
便捷式SM系统的设计与开发
张建峰,陈琼莺,禹谢华
(福建师范大学闽南科技学院,福建 泉州 362332)
摘 要:随着现阶段各类中小型商铺对商品管理需求的日益增多,设计和实现便捷式SM(salesystem management)系统显得尤为重要。本系统将涉及到商铺中所有带条形码的商品信息管理,数据统计,表格图形显示,消息推送等功能。应用目前流行的java语言,jsp技术,微信平台等方式,实现中小型商家实时零距离接触商品,账单,利润报表等功能,提供给商家一个贴心的小助手。
关键词:便捷式;SM系统;设计;开发
在当今科技发展迅速的世界中,产品进销存系统的设计与实现方式已经较大程度上满足了商家在这方面的需求,不仅涉及到网络技术的应用,更是将信息化数据时代普及到中小型商铺世界中。这种系统的开发重点主要集中于能在不同地点,不同时间,不同人员实时对自己商铺的商品管理,销售情况,库存情况等了解和操作,系统还可通过微信平台,向用户提供类型查询接口,真正实现对话式商品管理,在交互方式上迈出了极大一步,且在将来会越来越便捷,越来越普及。
本系统采用B/S结构,它是(Browser/Server,浏览器/服务器模式)的简称,是网页技术发展后的一种访问网络结构模式,网页浏览器是客户端最主要的应用软件。这种模式具有很大的便捷性,实现了统一的客户端,能将所开发的系统功能实现的核心部分集中到web服务器上,在很大程度上简化了应用系统的开发、维护以及使用。所以客户机上只需要安装一个浏览器(Browser),如谷歌浏览器(Chrome)火狐浏览器(Firefox)或IE浏览器(Internet Explorer),服务器可以安装Oracle数据库、MySQL数据库或 SQL Server数据库。浏览器通过Web Server同数据库进行数据访问和操作。这样就大大简化了客户端电脑载荷,俗称廋客户端。减轻了开发人员在系统维护与升级上的成本与工作量,减少了用户的总体成本。
浏览器/服务器模式的一个最大的优点就是可以在任何时间,任何地点进行网络操作而不用安装任何专门的应用软件。只要有一台能上网的电脑或手机就能使用,真正实现客户端无需维护的功能。而且系统扩展性非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。
在设计本系统时,最先考虑的当然是系统的需求分析,主要针对系统的几个核心模块进行拆分,将系统整体拆分成几个小模块,细化设计,测试,然后将各个小模块重新再拼接起来,即从大到小,再从小到大的设计思路。
系统总体模块图如图1。
便捷式SM系统主要分为三个大模块:系统后台管理,系统前台使用,微信平台。由这三个大方向入手,使得设计变得清晰,然后再将各个大模块进行细分。
系统后台分为用户管理和商品管理。
(1)用户管理的设计采用RBAC(Role Based Access Control)模式,是“基于角色的权限管理”,由于本系统涉及到不同的角色对应使用不同的功能,因此需要对用户进行权限设置,权限设置机制可以分为三个实体,分别是用户实体,角色实体,功能实体。关系图如图2。
由于RBAC实现了用户与访问权限的逻辑分离,因此它极大的方便了权限管理。例如,如果一个用户的职位发生变化,只要将用户当前的角色去掉,加入代表新职务或新任务的角色即可,角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,并且委派用户到角色不需要很多技术,可以由行政管理人员来执行,而配置权限到角色的工作比较复杂,需要一定的技术,可以由专门的技术人员来承担,但是不给他们委派用户的权限,这与现实中情况正好一致。
(2)商品管理模块,包括商品类别,商品信息,商店信息,商店商品,订单记录,利润报表等。各个实体都具有各自的相关属性,以商品实体为例,其模型主要代码如下:
//商品类型,在数据库中存的是商品类别的外键id,java语言中是以整个对象为属性
而封装好对象后,向数据库插入一件商品时,核心代码如下:
页面效果图如图3:
在页面效果中,我们看到商品类别是以下列框的形式展现的,表明当新增一个商品记录之前,必须先将商品类型表中的记录取出,显示在新增对话框中让用户选择,而不是将商品类型的选项写死在页面代码中,这样的设计方式提供了良好的系统维护性和交互性。而商品类型在页面中的获取方式是使用了javascript的异步请求方式,它相对于同步请求具有极大的特性。
区别如下:
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
因此,在本系统的设计中,页面基本上采用的都是ajax异步请求,核心代码如下:
总的来说,虽然使用异步执行模式在编程序时十分复杂,但可以实现多任务并行执行,使执行的效率大大提高。接下来需要设计的则是订单查询和商品统计报表。
(1)订单查询,即当消费者付款时,生成的一条记录,内容包括营业员,消费者,订单号,总价格,折扣,订单时间,订单商品,订单支付等。列表形式如图4:
由图4可知,在操作一栏有订单商品和订单支付按钮,订单商品表示此消费者在本次购买中的所有商品信息,订单支付表示消费者使用的支付方式,支付方式有现金支付,会员卡支付等。
(2)商品统计报表,采用表格和图形两种方式展现,以日期yyyy-mm-dd和月份yyyy-mm两种方式查询,日期查询返回的是某一天的销售情况和利润情况,而月份查询方式即显示某一个月的销售情况和利润情况,如图5所示:
两种选择,让用户体验更好,让用户了解更清晰,表格显示与图形显示,更直观,对比更强烈。
后台系统管理核心内容的实现重点就在于两大块,即基于角色的权限管理和商品相关信息的怎删改查。权限管理侧重于本系统的安全性考虑,商品相关信息管理便是系统要实现的主要功能。
当后台的大部分功能设计完成后,要实现前台的一个POS机功能就显的简单多啦,由于商品的销售在录入系统时,都有一个条形码的属性,因此,本系统在使用过程中需要用到一个条形码扫描设备,它将扫描口对着商品的条形码进行扫描,设备会自动将商品条形码输入到页面的条形码输入框中,POS机操作界面如图7:
使用设备扫描条形码,设备自动在图中的条形码输入框中输入数值串,并在上方显示商品信息,默认购买数量为1,营业员可以手动修改数量,也可以继续扫除同类型商品条形码,系统自动计算价格,显示在图中相应位置,系统设有会员卡制度,会员等级的不同,打折率也不一样,系统自动计算折扣后的总价并显示出来,用户可以选择支付方式,当消费者付整百时,营业员在付款输入框输入100,如图,付款输入框右侧会自动显示找零多少,这也是系统设计的一个贴心计算器。在这个营业员操作界面中,步骤也是相对简单。PC端的设计大致到此就完成了,当然还有一些细节还没有介绍,开发者在后期测试时有对其进行详细的解决,比如商品查重,数据类型转换,数据库优化等。
最后,本系统最体现便捷性的一个重点就在于利用微信平台,注册申请微信订阅号,利用第三方微信接口设计,转接url访问到本系统中,商家就可以随时随地的使用手机微信进行对商品的销售情况进行查询和其它操作了。
大致步骤为:申请微信订阅号,进入开发者中心,填写相应的信息,最关键的是填写服务器配置,一个便是本系统对接微信的一个url访问接口,还有一个Token令牌,具体使用方式可查看微信官方提供的开发文档,微信订阅号的主要功能就是,用户向订阅号发送文本信息,微信平台将信息转发给本系统,本系统接受用户发送的信息后,进行后台处理,结果返回给微信平台,微信平台再将该结果转发给用户。流程图如图8:
这里的用户指的是商家,商家在进行订阅号查询是,必须先进行用户名密码验证,防止非本系统用户偷窥商家机密,即商家在进行发送查询关键词时,系统返回提示语:“请输入用户名和密码,以逗号隔开”,用户向订阅号输入用户名密码后,转发给本系统,系统进行数据库查询用户表后,若查询到结果,则允许用户继续查询,否则,提示用户无法查询,请重新验证。在用户名密码正确的情况下,用户可以根据关键字:“今日利润查询”,“本月利润查询”,“XX商品销售量”,“XX商品库存量”等进行查询。至此,真正体现了商家零距离管理和查询商品的功能,实现本系统便捷性的操作。
在设计系统的过程中,遇到过诸多问题,比如权限管理,如何合理的设置角色的权限是一个头疼的问题,系统最终采用逗号分隔式,将某角色所具备的所有权限以逗号的方式连接成一个字符串,存储在表的一个字段中,每次验证角色的权限时,使用split(“,”)的方式,将其分隔成权限数组。应该还有更好的方式,因此这一模块还有待更深入的研究,系统的安全性在对外公网的发布中还有待进一步测试,最关键的是要防止XSS攻击,它是web中最常见的javascript脚本攻击,因此后台在接受数据时,一定要进行一些特殊字符的过滤和转义。除此之外,在页面的显示效果也有待加强,布局的合理以及美工效果。当然,在微信端,本系统具有极大的可扩展性,后期还可以对系统进行APP开发,接口统一使用WEB的HTTP请求方式。在条件允许的情况下,还可以进行微信服务号开发,服务号与订阅号的差别主要在于是否有自定义菜单,访问更加方便,可以直接点击自定义菜单操作查询,无需进行发送信息查询。提高用户的体验效果,这也是系统在后期开发的一个展望。
基金项目:国家级“大学生创新性实验计划项目”(批准号:201412992003);福建省教育厅科研资助项目(批准号:JA13369);福建师范大学闽南科技学院“青年骨干教师重点培养对象”基金资助项目(批准号:mkq201008)
作者简介:张建峰(1991-),男,福建寿宁人,本科,研究方向:网络工程,计算机应用,人工智能。