宋志強 付永杰
摘 要: 針對現(xiàn)有食堂IC卡售飯系統(tǒng)的不足,設計了新穎的非接觸式IC卡就餐機管理系統(tǒng),用戶點菜后,食堂員工只需用手指輕觸一體機主界面就能實現(xiàn)用戶消費金額的自動計算,減少了計算錯誤,實現(xiàn)了用戶的明白消費。系統(tǒng)采用C++ Builder開發(fā)。詳細介紹了系統(tǒng)的主要模塊及在C++ Builder靜態(tài)調用動態(tài)鏈接庫的方法。該系統(tǒng)具有一定的實用性和推廣價值。
關鍵詞: 就餐機; C++ Builder; 非接觸式IC卡; 管理系統(tǒng)
中圖分類號:TP311.52 文獻標志碼:A 文章編號:1006-8228(2013)08-28-02
0 引言
目前,各高校的數(shù)字化校園建設已進入實質性運行階段,普遍的做法是在校園里采用校園卡作為電子貨幣和電子證件。校園卡大多采用非接觸式IC卡[1]??谆鄯嫉萚2]為保證食堂就餐管理系統(tǒng)的主從機通信可靠性,設計了基于RS-485接口的多機通訊卡。文獻[3]采用分布式高可用系統(tǒng)使校園IC卡在性能、安全等方面得到提高。文獻[4-5]設計了基于單片機食堂售飯系統(tǒng)?,F(xiàn)有的就餐系統(tǒng)為分布式結構,在每個售菜、售飯窗口都安放有一臺就餐機,方便師生刷卡消費。但現(xiàn)有就餐機只能由工作人員人工輸入消費金額才能完成扣款消費。缺點是如果消費人員在一個窗口點多個菜后,需食堂工作人員心算出消費的總金額,這對于食堂工作人員特別是上了年紀的員工而言,是一項艱巨的任務?,F(xiàn)實中也的確經(jīng)常有輸錯金額的情況發(fā)生,對此廣大師生都有類似經(jīng)歷;另外一種情況是金額算對,但是輸入時出錯?,F(xiàn)有的就餐機系統(tǒng)已不能滿足廣大師生及食堂工作人員的需求:食堂工作人員要求就餐機能比較的方便地實現(xiàn)金額的累計,而不需要心算,廣大師生的要求是食堂工作人員每次都能算對、輸入對消費金額,以便實現(xiàn)準確消費。為適應這種需求,我們研制了新一代食堂就餐機管理系統(tǒng),極大地方便了食堂工作人員的使用,為廣大師生提供了一個可視化消費的就餐機管理系統(tǒng),實現(xiàn)了明明白白消費。
1 系統(tǒng)總體結構
基于非接觸式IC卡的就餐機管理系統(tǒng)是在原有的食堂就餐系統(tǒng)基礎上改進而成的,其系統(tǒng)結構如圖1所示。系統(tǒng)前端是面向用戶就餐的一體機及各窗口IC卡讀寫器,以代替?zhèn)鹘y(tǒng)的IC卡讀寫器。一體機通過交換機連接至一卡通網(wǎng)。管理工作站可完成用戶IC卡的開戶、注銷、充值、掛失等操作,并能實現(xiàn)銷售業(yè)績查詢及報表打印功能。用戶可以通過用戶自助終端通過銀行圈存業(yè)務以實現(xiàn)對IC卡的充值操作。一體機提供觸屏功能,食堂員工只需用手輕觸一體機主界面上的各個菜名圖片,系統(tǒng)即可自動實現(xiàn)用戶消費金額的累加,食堂員工只需用手指點擊一體機主界面上的“結算”按鈕即可實現(xiàn)對用戶IC卡的扣款操作。
2 IC卡讀寫器及非接觸式IC卡介紹
IC卡讀寫器采用的是深圳市明華澳漢科技股份有限公司的產品,非接觸式IC卡為Mifare 1卡,該卡為8K位的非接觸式IC卡。該卡分為16個扇區(qū),每個扇區(qū)為4塊,共64塊,按塊號編址為0~63,每塊16個字節(jié),以塊為存取單位,每個扇區(qū)有獨立的一組密碼及訪問控制,具有防沖突機制。
Mifare 1卡的電氣部分由一個天線和ASIC組成。其中天線和ASCI封裝在卡片中,天線是只有幾組繞線的線圈,很適于封裝到卡片中??ㄆ腁SIC由一個高速(106KB波特率)的RF接口,一個控制單元和一個8K位EEPROM組成。讀寫器向Mifare 1卡發(fā)一組固定頻率的電磁波,卡片內有一個LC串聯(lián)諧振電路,其頻率與訊寫器發(fā)射的頻率相同,在電磁波的激勵下,LC諧振電路產生共振,從而使電容內有了電荷,在這個電容的另一端,接有一個單向導通的電子泵,將電容內的電荷送到另一個電容內儲存,當所積累的電荷達到2V時,此電容可作為電源為其他電路提供工作電壓,將卡內數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。
3 就餐機管理系統(tǒng)設計
就餐機管理系統(tǒng)采用面向對象的設計思想和模塊化的程序設計方法,使用C++ Builder 6作為開發(fā)工具,操作系統(tǒng)為Windows XP Professional。
3.1 系統(tǒng)主要模塊
系統(tǒng)可包括IC卡管理、用戶自助、菜譜管理、消費扣款、營業(yè)匯總、系統(tǒng)維護等模塊。
其中IC卡管理模塊可實現(xiàn)建卡、充值、掛失、銷卡等功能。用戶一旦掛失,系統(tǒng)將該卡列入黑名單,并更新各窗口一體機黑名單,以保護用戶的經(jīng)濟利益。用戶自助模塊(用戶自主終端功能)提供用戶IC卡充值(圈存)及信息查詢功能,采用觸摸屏查詢系統(tǒng),主要為用戶提供日常消費明細查詢、修改查詢密碼、IC卡充值(圈存)等功能。菜譜管理模塊用于制定或更新每天菜譜。消費扣款模塊完成消費扣款。營業(yè)匯總模塊實現(xiàn)匯總交易數(shù)據(jù),實現(xiàn)消費金額的結算,生成相應的報表。系統(tǒng)維護模塊自動完成歷史數(shù)據(jù)備份,設置系統(tǒng)管理員密碼、權限等。
3.2 動態(tài)鏈接庫調用
明華公司提供動態(tài)鏈接庫及讀卡器使用手冊[6]供軟件開發(fā)人員使用,以便軟件開發(fā)人員快速訪問非接觸式IC卡讀寫器及IC卡。但明華公司提供的動態(tài)鏈接庫是通過Visual C++制作的,其對應的庫文件(lib文件)為COFF格式,而C++ Builder使用OMF格式的庫文件,即軟件開發(fā)平臺所要求的導入庫格式與硬件供應商提供的庫文件格式不兼容,若對原有的mwhrf.lib文件不作修改,則應用程序與動態(tài)庫隱式鏈接時,會出現(xiàn)程序鏈接錯誤。本文采用靜態(tài)調用動態(tài)鏈接庫mwhrf.dll的方法[7],先使用C++ Builder中提供的導入庫生成工具進行預處理,然后再鏈接、調用dll里面中的函數(shù),步驟如下。
⑶ 將重新生成的導入庫(mwhrf.lib)添加到C++Builder工程項目中。
經(jīng)過上述三個步驟后,C++ Builder就可以調用mwhrf.dll的函數(shù)了。
3.3 管理系統(tǒng)軟件設計
各窗口一體機主界面如圖2所示,食堂員工只需用手指輕觸主界面上的各個菜名圖片,系統(tǒng)便能自動實現(xiàn)消費金額的累計,然后點擊“結算”按鈕實現(xiàn)扣款操作。
3.4 數(shù)據(jù)庫設計
本系統(tǒng)數(shù)據(jù)庫選用SQL Server 2000,C++ Builder通過TADOConnection、TADOTable、TADOQuery、TDataSource、TDBGrid等控件訪問數(shù)據(jù)庫。使用TADOConnection控件連接數(shù)據(jù)庫時,最重要的一個步驟是設置它的ConnectionString屬性。以窗體用到TADOConnection、TADOQuery、TDataSource、TDBGrid為例,設置TADOQuery控件的Connection屬性為TADOConnection控件的名稱(如ADOConnection1),設置TDataSource控件的DataSet屬性為TADOQuery控件的名稱(如ADOQuery1),設置TDBGrid控件的DataSource屬性為TDataSource控件的名稱(如DataSource1),在設置好DBGrid控件的列屬性后,在TADOQuery控件的SQL屬性中寫SQL語句就可以訪問數(shù)據(jù)庫中的數(shù)據(jù)表,將數(shù)據(jù)顯示到DBGrid。
4 結束語
基于非接觸式IC卡的就餐機管理系統(tǒng)已投入試運行,相比之前的系統(tǒng),用戶普遍反映新系統(tǒng)界面友好,實現(xiàn)了明明白白消費,得到了用戶的好評;食堂員工反映,新系統(tǒng)使他們從每次繁瑣的“心算”中解放出來,可以更輕松地做好自己的本職工作,而不必擔心發(fā)生計算錯誤。下一步工作的重點是擴展和完善該系統(tǒng)的功能。該系統(tǒng)在一體機成本下降后將具有一定的應用和推廣前景。
參考文獻:
[1] 劉守義.智能卡技術(第1版)[M].西安電子科技大學出版社,2004.
[2] 孔慧芳,楊連軍.IC卡食堂就餐管理系統(tǒng)的多機異步通訊設計[J].安徽機電學院學報,1997.12(2):74-76
[3] 陳占偉.分布式高可用IC卡系統(tǒng)設計與實現(xiàn)[J].中國防偽報道,2009.1:34-35
[4] 張國棟.基于單片機食堂售飯系統(tǒng)的應用設計[D].中國海洋大學,2007.
[5] 王建國.學校食堂IC卡售飯機系統(tǒng)設計[J].電子世界,2012.15:20-21
[6] URF讀寫器使用手冊[M/CD].深圳市明華澳漢科技股份有限公司,2003.
[7] 宋志強,山磊.集中控制型預付式保管箱系統(tǒng)的設計與實現(xiàn)[J].計算機工程與科學,2011.33(7):167-171