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