宋志强 付永杰
摘 要: 针对现有食堂IC卡售饭系统的不足,设计了新颖的非接触式IC卡就餐机管理系统,用户点菜后,食堂员工只需用手指轻触一体机主界面就能实现用户消费金额的自动计算,减少了计算错误,实现了用户的明白消费。系统采用C++ Builder开发。详细介绍了系统的主要模块及在C++ Builder静态调用动态链接库的方法。该系统具有一定的实用性和推广价值。
关键词: 就餐机; C++ Builder; 非接触式IC卡; 管理系统
中图分类号:TP311.52 文献标志码:A 文章编号:1006-8228(2013)08-28-02
0 引言
目前,各高校的数字化校园建设已进入实质性运行阶段,普遍的做法是在校园里采用校园卡作为电子货币和电子证件。校园卡大多采用非接触式IC卡[1]。孔慧芳等[2]为保证食堂就餐管理系统的主从机通信可靠性,设计了基于RS-485接口的多机通讯卡。文献[3]采用分布式高可用系统使校园IC卡在性能、安全等方面得到提高。文献[4-5]设计了基于单片机食堂售饭系统。现有的就餐系统为分布式结构,在每个售菜、售饭窗口都安放有一台就餐机,方便师生刷卡消费。但现有就餐机只能由工作人员人工输入消费金额才能完成扣款消费。缺点是如果消费人员在一个窗口点多个菜后,需食堂工作人员心算出消费的总金额,这对于食堂工作人员特别是上了年纪的员工而言,是一项艰巨的任务。现实中也的确经常有输错金额的情况发生,对此广大师生都有类似经历;另外一种情况是金额算对,但是输入时出错。现有的就餐机系统已不能满足广大师生及食堂工作人员的需求:食堂工作人员要求就餐机能比较的方便地实现金额的累计,而不需要心算,广大师生的要求是食堂工作人员每次都能算对、输入对消费金额,以便实现准确消费。为适应这种需求,我们研制了新一代食堂就餐机管理系统,极大地方便了食堂工作人员的使用,为广大师生提供了一个可视化消费的就餐机管理系统,实现了明明白白消费。
1 系统总体结构
基于非接触式IC卡的就餐机管理系统是在原有的食堂就餐系统基础上改进而成的,其系统结构如图1所示。系统前端是面向用户就餐的一体机及各窗口IC卡读写器,以代替传统的IC卡读写器。一体机通过交换机连接至一卡通网。管理工作站可完成用户IC卡的开户、注销、充值、挂失等操作,并能实现销售业绩查询及报表打印功能。用户可以通过用户自助终端通过银行圈存业务以实现对IC卡的充值操作。一体机提供触屏功能,食堂员工只需用手轻触一体机主界面上的各个菜名图片,系统即可自动实现用户消费金额的累加,食堂员工只需用手指点击一体机主界面上的“结算”按钮即可实现对用户IC卡的扣款操作。
2 IC卡读写器及非接触式IC卡介绍
IC卡读写器采用的是深圳市明华澳汉科技股份有限公司的产品,非接触式IC卡为Mifare 1卡,该卡为8K位的非接触式IC卡。该卡分为16个扇区,每个扇区为4块,共64块,按块号编址为0~63,每块16个字节,以块为存取单位,每个扇区有独立的一组密码及访问控制,具有防冲突机制。
Mifare 1卡的电气部分由一个天线和ASIC组成。其中天线和ASCI封装在卡片中,天线是只有几组绕线的线圈,很适于封装到卡片中。卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个8K位EEPROM组成。读写器向Mifare 1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与讯写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可作为电源为其他电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
3 就餐机管理系统设计
就餐机管理系统采用面向对象的设计思想和模块化的程序设计方法,使用C++ Builder 6作为开发工具,操作系统为Windows XP Professional。
3.1 系统主要模块
系统可包括IC卡管理、用户自助、菜谱管理、消费扣款、营业汇总、系统维护等模块。
其中IC卡管理模块可实现建卡、充值、挂失、销卡等功能。用户一旦挂失,系统将该卡列入黑名单,并更新各窗口一体机黑名单,以保护用户的经济利益。用户自助模块(用户自主终端功能)提供用户IC卡充值(圈存)及信息查询功能,采用触摸屏查询系统,主要为用户提供日常消费明细查询、修改查询密码、IC卡充值(圈存)等功能。菜谱管理模块用于制定或更新每天菜谱。消费扣款模块完成消费扣款。营业汇总模块实现汇总交易数据,实现消费金额的结算,生成相应的报表。系统维护模块自动完成历史数据备份,设置系统管理员密码、权限等。
3.2 动态链接库调用
明华公司提供动态链接库及读卡器使用手册[6]供软件开发人员使用,以便软件开发人员快速访问非接触式IC卡读写器及IC卡。但明华公司提供的动态链接库是通过Visual C++制作的,其对应的库文件(lib文件)为COFF格式,而C++ Builder使用OMF格式的库文件,即软件开发平台所要求的导入库格式与硬件供应商提供的库文件格式不兼容,若对原有的mwhrf.lib文件不作修改,则应用程序与动态库隐式链接时,会出现程序链接错误。本文采用静态调用动态链接库mwhrf.dll的方法[7],先使用C++ Builder中提供的导入库生成工具进行预处理,然后再链接、调用dll里面中的函数,步骤如下。
⑶ 将重新生成的导入库(mwhrf.lib)添加到C++Builder工程项目中。
经过上述三个步骤后,C++ Builder就可以调用mwhrf.dll的函数了。
3.3 管理系统软件设计
各窗口一体机主界面如图2所示,食堂员工只需用手指轻触主界面上的各个菜名图片,系统便能自动实现消费金额的累计,然后点击“结算”按钮实现扣款操作。
3.4 数据库设计
本系统数据库选用SQL Server 2000,C++ Builder通过TADOConnection、TADOTable、TADOQuery、TDataSource、TDBGrid等控件访问数据库。使用TADOConnection控件连接数据库时,最重要的一个步骤是设置它的ConnectionString属性。以窗体用到TADOConnection、TADOQuery、TDataSource、TDBGrid为例,设置TADOQuery控件的Connection属性为TADOConnection控件的名称(如ADOConnection1),设置TDataSource控件的DataSet属性为TADOQuery控件的名称(如ADOQuery1),设置TDBGrid控件的DataSource属性为TDataSource控件的名称(如DataSource1),在设置好DBGrid控件的列属性后,在TADOQuery控件的SQL属性中写SQL语句就可以访问数据库中的数据表,将数据显示到DBGrid。
4 结束语
基于非接触式IC卡的就餐机管理系统已投入试运行,相比之前的系统,用户普遍反映新系统界面友好,实现了明明白白消费,得到了用户的好评;食堂员工反映,新系统使他们从每次繁琐的“心算”中解放出来,可以更轻松地做好自己的本职工作,而不必担心发生计算错误。下一步工作的重点是扩展和完善该系统的功能。该系统在一体机成本下降后将具有一定的应用和推广前景。
参考文献:
[1] 刘守义.智能卡技术(第1版)[M].西安电子科技大学出版社,2004.
[2] 孔慧芳,杨连军.IC卡食堂就餐管理系统的多机异步通讯设计[J].安徽机电学院学报,1997.12(2):74-76
[3] 陈占伟.分布式高可用IC卡系统设计与实现[J].中国防伪报道,2009.1:34-35
[4] 张国栋.基于单片机食堂售饭系统的应用设计[D].中国海洋大学,2007.
[5] 王建国.学校食堂IC卡售饭机系统设计[J].电子世界,2012.15:20-21
[6] URF读写器使用手册[M/CD].深圳市明华澳汉科技股份有限公司,2003.
[7] 宋志强,山磊.集中控制型预付式保管箱系统的设计与实现[J].计算机工程与科学,2011.33(7):167-171