華北電力大學控制與計算機工程學院 尹婷婷
多應用消費卡發卡充值系統的設計與實現
華北電力大學控制與計算機工程學院 尹婷婷
本文選用智能CPU卡為消費應用載體,針對區域內一卡多用的需求在其上建立多重消費應用文件,同時具有金額消費和計次消費的功能;并采用C#編程語言在PC機終端開發出適用兩種消費功能的發卡充值系統軟件,以滿足持卡消費的需要。
CPU卡;消費;C#
隨著IC卡在日常生活中的廣泛應用,人們對各種優惠卡、充值消費卡的繁冗越來越感到不方便,因此,針對居民在學校、廠區等集中生活區將超市消費、停車計費、計次消費、優惠卡等多種應用統一到單一智能CPU卡上,以刷卡消費為支付手段,完成多重功能的IC卡應用的綜合。本系統將通過應用面向對象語言C#設計實現智能CPU卡的發卡和充值功能。
為滿足不同場合下持卡消費應用的整合需要,本系統首先對卡片文件結構進行規劃:在同一張CPU卡中建立相互獨立且具有良好安全性的應用文件、錢包文件及密鑰文件,從而保證了多種應用金額各自獨立的持卡消費應用。
其次,對發卡充值系統軟件的需求分析,得到系統的具體功能包括如下:為消費用戶提供CPU卡的發放、建檔管理;保證日常正常使用CPU卡必須的充值繳費;以及特殊情況下CPU卡掛失、持卡賬戶的注銷等。
另外,為加強系統的安全,防止惡意操作及刪改數據,保證數據安全;軟件自身管理功能還需要包括操作員權限管理及系統數據庫維護。
首先利用C#編程語言面向用戶的優勢設計友好的人機交互界面,根據系統軟件的功能需求規劃功能窗口,并進行具體的發卡、充值、充值記錄查詢、已經系統管理功能的實現。
表1 個人信息文件數據內容
表2 DF1-DF3下應用交易文件數據內容
表3 計次文件數據內容
其次針對多應用的特點設計功能完善的充值界面,以滿足對其中某一應用充費、充次的正確操作,同時建立完整詳細的數據存儲功能,以滿足對同一用戶的統一充值信息存儲、對不同用戶的同一應用的充值信息存儲。
再次是對CPU卡讀卡器、數據庫服務器的硬件連接及調用功能的開發:采用串口輪詢的方式獲得讀卡器的連接,并通過讀卡器接口函數進行功能應用開發;在數據庫服務器中建立本系統需要的各個數據表,并規劃數據關聯性。
最后是軟件程序的功能模塊封裝,將讀卡器應用、數據庫應用、系統管理應用作為獨立的模塊進行程序封裝,以便在窗口程序中直接進行調用。
不同于現在應用廣泛的邏輯加密卡通過內部集成電路對EEPROM的讀、擦、寫操作提供密碼保護,CPU卡帶有微處理器(CPU),其ROM中封裝有芯片操作系統(COS),為數據加密、解密提供快速的數學運算。
較之普通的邏輯加密卡,CPU卡能夠在片內操作系統(COS)的保護下自行建立需要的多級應用文件結構,并可以在各級應用文件中添加錢包文件存儲消費金額,添加密鑰文件保障消費安全;因此本系統選用CPU卡作為實現多應用持卡消費的媒介。
CPU卡的金融安全性由其卡中的微處理機和COS保障,每次消費應用在用戶和COS中需要進行多次的相互密碼驗證[1],可防止卡片的偽造威脅。CPU卡的應用安全性其文件系統在各級分劃以及每一級應用文件的相互區別成為本系統CPU卡文件結構的獨特性,從而在一定程度上保障了卡片的使用安全。
此處以兩種金融消費和一種計次消費為例,設計了多應用的CPU卡的文件系統結構:
圖1 文件結構
圖2 系統數據E-R圖
CPU卡的文件類型包括MF根目錄、DF子目錄、EF基本文件,EF包括交易文件、記錄文件和安全文件,見圖1。
在定義了卡片的文件結構之后,需要對文件的存儲內容做約定,根據對應消費應用的需要,規定各個文件的數據內容、數據長度和其他相關信息;在進行消費應用時,終端能夠按照約定的文件格式讀取消費者信息并進行消費操作。下面以個人信息文件、典型應用交易文件和計次文件為例,對其數據內容和長度作出概要性定義,如表1、表2、表3所示。
由于實際應用中的CPU卡的文件結構和文件數據內容涉及金融安全,本文中對CPU卡的規劃作出了簡化,僅作說明性介紹。
Visual C#是微軟針對.NET平臺設計的新的開發語言,從C和C++派生而來,其特點是簡單、現代、面向對象和類型;能夠高效完成桌面應用系統的開發。VS2008是一套完整的開發工具集,
在開發讀卡器應用時,選用的CPU卡讀卡器因廠家為方便開發,已經封裝了接口函數庫,在應用c#語言開發時,需要調用以C++編程語言編寫的動態鏈接庫(DLL,“Dynamic Link Library”)。
由于是非托管動態鏈接庫,調用時需要使用DllImport屬性,調用時以非托管動態鏈接庫作為靜態入口點公開,并提供對從非托管DLL導出的函數進行調用必需的信息。具體使用方法示例:
在調用CPU_init函數時,應用程序鏈接到R_Cpu.dll找到其中定義了的函數接口“cpu_init”,從而實現調用讀卡器封裝函數的功能。
4.3.1 讀卡器連接模塊
本系統選用的CPU卡讀卡器通過串口連接傳輸數據,在發卡充值系統界面進入時需要提供串口選擇和波特率設置功能。
基于對動態鏈接庫的統一調用,也為方便管理程序,本系統將涉及到讀卡器連接、CPU卡數據讀取及操作的函數統一到自定義公共類庫中,并將常用功能程序封裝起來,在窗口界面開發時直接進行調用。
需要封裝建立讀卡器的串口連接函數,關閉串口連接函數,CPU卡復位函數以及CPU卡數據讀取和存儲函數;其中數據讀取和存儲的函數設置參數,傳遞讀取返回的數據、需要存儲的數據以及發生錯誤時的錯誤代碼。
4.3.2 充值模塊
本模塊在系統窗口界面中進行開發,涉及到CPU卡賬戶的開戶、個人信息錄入及存儲到數據庫、CPU卡充值操作及充值記錄的數據庫存儲,另外還包括輔助功能如卡片掛失和個人信息變更等。
數據庫是本系統數據存儲的容器,是保證系統業務流程的根本;合理的數據庫結構設計可以提高數據存儲的效率,保證數據完整一致,也利于程序的實現。[2]
首先,在對數據信息的存儲時為精確的統計存檔用戶個人信息及充值記錄,本系統采用SQLServer2005數據庫管理系統作為開發工具,以實現IC卡管理、充值記錄查詢、檔案維護等功能。
其次,在系統功能分析之后,將系統的實際需求轉化為獨立的邏輯實體,并繪制出數據E-R圖以確定程序和數據表的實現,如圖2所示。
為精簡主體程序,在軟件開發中一般習慣將數據庫連接和數據存儲的程序封裝統一到獨立的公共類中,定義新的命名空間,需要調用數據庫時直接引用該命名空間下的函數。公共類中封裝的函數包括建立數據庫連接、執行SqlCommand命令、讀取指定數據表中的信息、創建DataSet對象、關閉數據庫連接等函數。
對本系統的整體測試可以通過各單一模塊的性能來衡量,測試環境需要搭建軟件運行所需的PC機終端、連接PC機的CPU卡讀卡器以及數據庫服務器。
運行軟件后將自動檢測CPU卡讀卡器連接和數據庫服務器的連接,檢測連接正常后進入登錄界面。
以預設的超級管理員身份登錄進入軟件,開始對系統功能的測試:
首先是系統軟件管理功能:超級管理員需要添加普通管理員,設置其操作權限——發卡權限、充值權限、卡片掛失權限、更改個人信息權限、賬戶注銷權限以及管理員密碼修改權限。在一般應用中普通管理員的登錄即可滿足系統的應用功能。
其次是系統發卡充值功能:對于未發行的CPU卡,系統在開戶、發卡過程中完成對卡片的初始化工作,并寫入用戶個人信息;系統讀卡時能夠辨識無效卡并警告管理員卡片不可用。測試充值功能主要在于測試寫入卡片金額(次數)的正確性,保證在需要的應用文件下的數據寫入,保證充值記錄信息在對應應用賬戶下的數據刷新;以及同時完成對數據庫充值記錄刷新的信息完整性:當遇到意外,卡片金額寫入異常時,充值記錄不再更新,并保存異常報告。
最后是對數據庫存儲充值記錄的調取測試:多次充值后查詢各次充值記錄均能夠完整無誤的顯示;數據庫對于意外關閉等情況均能良好應對。
經過多次測試,本系統軟件的各功能均可正常使用。
本文針對集中小區持卡消費的特點,結合CPU卡可進行多應用開發的功能概括了一卡多用的CPU卡文件系統設計思路,并規劃了發卡充值系統的軟件實現,通過測試證實軟件的可用性,并具備友好人機交互界面、易操作的優點。
[1]顧赟.CPU智能卡記次消費系統設計與實現[D].蘇州大學,2008.
[2]賈瀛.塘沽區地熱試驗研究中心基于IC卡熱水使用管理信息系統建設的設計與實現[D].天津大學,2008.
[3]王建偉,尹婷婷,林永君,朱振軍.應用CPU卡實現充電樁計費的研究[J].電子世界,2012(6):51-53.
尹婷婷(1986—),女,華北電力大學控制與計算機工程學院研究生在讀,研究方向:嵌入式在工業控制中的應用。