多应用消费卡发卡充值系统的设计与实现

时间:2022-05-23 08:49:20

多应用消费卡发卡充值系统的设计与实现

【摘要】本文选用智能CPU卡为消费应用载体,针对区域内一卡多用的需求在其上建立多重消费应用文件,同时具有金额消费和计次消费的功能;并采用C#编程语言在PC机终端开发出适用两种消费功能的发卡充值系统软件,以满足持卡消费的需要。

【关键词】CPU卡;消费;C#

1.前言

随着IC卡在日常生活中的广泛应用,人们对各种优惠卡、充值消费卡的繁冗越来越感到不方便,因此,针对居民在学校、厂区等集中生活区将超市消费、停车计费、计次消费、优惠卡等多种应用统一到单一智能CPU卡上,以刷卡消费为支付手段,完成多重功能的IC卡应用的综合。本系统将通过应用面向对象语言C#设计实现智能CPU卡的发卡和充值功能。

2.系统总体设计和分析

2.1 建立多应用CPU卡发卡充值系统的功能需求分析

为满足不同场合下持卡消费应用的整合需要,本系统首先对卡片文件结构进行规划:在同一张CPU卡中建立相互独立且具有良好安全性的应用文件、钱包文件及密钥文件,从而保证了多种应用金额各自独立的持卡消费应用。

其次,对发卡充值系统软件的需求分析,得到系统的具体功能包括如下:为消费用户提供CPU卡的发放、建档管理;保证日常正常使用CPU卡必须的充值缴费;以及特殊情况下CPU卡挂失、持卡账户的注销等。

另外,为加强系统的安全,防止恶意操作及删改数据,保证数据安全;软件自身管理功能还需要包括操作员权限管理及系统数据库维护。

2.2 多应用CPU卡发卡充值系统的具体功能介绍及实现思路

首先利用C#编程语言面向用户的优势设计友好的人机交互界面,根据系统软件的功能需求规划功能窗口,并进行具体的发卡、充值、充值记录查询、已经系统管理功能的实现。

其次针对多应用的特点设计功能完善的充值界面,以满足对其中某一应用充费、充次的正确操作,同时建立完整详细的数据存储功能,以满足对同一用户的统一充值信息存储、对不同用户的同一应用的充值信息存储。

再次是对CPU卡读卡器、数据库服务器的硬件连接及调用功能的开发:采用串口轮询的方式获得读卡器的连接,并通过读卡器接口函数进行功能应用开发;在数据库服务器中建立本系统需要的各个数据表,并规划数据关联性。

最后是软件程序的功能模块封装,将读卡器应用、数据库应用、系统管理应用作为独立的模块进行程序封装,以便在窗口程序中直接进行调用。

3.CPU卡基于多应用的文件结构设计

不同于现在应用广泛的逻辑加密卡通过内部集成电路对EEPROM的读、擦、写操作提供密码保护,CPU卡带有微处理器(CPU),其ROM中封装有芯片操作系统(COS),为数据加密、解密提供快速的数学运算。

较之普通的逻辑加密卡,CPU卡能够在片内操作系统(COS)的保护下自行建立需要的多级应用文件结构,并可以在各级应用文件中添加钱包文件存储消费金额,添加密钥文件保障消费安全;因此本系统选用CPU卡作为实现多应用持卡消费的媒介。

CPU卡的金融安全性由其卡中的微处理机和COS保障,每次消费应用在用户和COS中需要进行多次的相互密码验证[1],可防止卡片的伪造威胁。CPU卡的应用安全性其文件系统在各级分划以及每一级应用文件的相互区别成为本系统CPU卡文件结构的独特性,从而在一定程度上保障了卡片的使用安全。

此处以两种金融消费和一种计次消费为例,设计了多应用的CPU卡的文件系统结构:

3.1 卡片文件系统结构框架

CPU卡的文件类型包括MF根目录、DF子目录、EF基本文件,EF包括交易文件、记录文件和安全文件,见图1。

3.2 卡片文件中的数据内容

在定义了卡片的文件结构之后,需要对文件的存储内容做约定,根据对应消费应用的需要,规定各个文件的数据内容、数据长度和其他相关信息;在进行消费应用时,终端能够按照约定的文件格式读取消费者信息并进行消费操作。下面以个人信息文件、典型应用交易文件和计次文件为例,对其数据内容和长度作出概要性定义,如表1、表2、表3所示。

由于实际应用中的CPU卡的文件结构和文件数据内容涉及金融安全,本文中对CPU卡的规划作出了简化,仅作说明性介绍。

4.发卡充值系统实现

4.1 选用开发环境简介

Visual C#是微软针对.NET平台设计的新的开发语言,从C和C++派生而来,其特点是简单、现代、面向对象和类型;能够高效完成桌面应用系统的开发。VS2008是一套完整的开发工具集,

4.2 读卡器动态链接库的生成与移植

在开发读卡器应用时,选用的CPU卡读卡器因厂家为方便开发,已经封装了接口函数库,在应用c#语言开发时,需要调用以C++编程语言编写的动态链接库(DLL,“Dynamic Link Library”)。

由于是非托管动态链接库,调用时需要使用DllImport属性,调用时以非托管动态链接库作为静态入口点公开,并提供对从非托管DLL导出的函数进行调用必需的信息。具体使用方法示例:

[DllImport(“R_Cpu.dll”,EntryP-oint=“cpu_init”)]

public static extern int CPU_init(int arg1,int arg2,…);

在调用CPU_init函数时,应用程序链接到R_Cpu.dll找到其中定义了的函数接口“cpu_init”,从而实现调用读卡器封装函数的功能。

4.3 软件实现

4.3.1 读卡器连接模块

本系统选用的CPU卡读卡器通过串口连接传输数据,在发卡充值系统界面进入时需要提供串口选择和波特率设置功能。

基于对动态链接库的统一调用,也为方便管理程序,本系统将涉及到读卡器连接、CPU卡数据读取及操作的函数统一到自定义公共类库中,并将常用功能程序封装起来,在窗口界面开发时直接进行调用。

需要封装建立读卡器的串口连接函数,关闭串口连接函数,CPU卡复位函数以及CPU卡数据读取和存储函数;其中数据读取和存储的函数设置参数,传递读取返回的数据、需要存储的数据以及发生错误时的错误代码。

4.3.2 充值模块

本模块在系统窗口界面中进行开发,涉及到CPU卡账户的开户、个人信息录入及存储到数据库、CPU卡充值操作及充值记录的数据库存储,另外还包括辅助功能如卡片挂失和个人信息变更等。

数据库是本系统数据存储的容器,是保证系统业务流程的根本;合理的数据库结构设计可以提高数据存储的效率,保证数据完整一致,也利于程序的实现。[2]

首先,在对数据信息的存储时为精确的统计存档用户个人信息及充值记录,本系统采用SQLServer2005数据库管理系统作为开发工具,以实现IC卡管理、充值记录查询、档案维护等功能。

其次,在系统功能分析之后,将系统的实际需求转化为独立的逻辑实体,并绘制出数据E-R图以确定程序和数据表的实现,如图2所示。

为精简主体程序,在软件开发中一般习惯将数据库连接和数据存储的程序封装统一到独立的公共类中,定义新的命名空间,需要调用数据库时直接引用该命名空间下的函数。公共类中封装的函数包括建立数据库连接、执行SqlCommand命令、读取指定数据表中的信息、创建DataSet对象、关闭数据库连接等函数。

5.系统调试运行

对本系统的整体测试可以通过各单一模块的性能来衡量,测试环境需要搭建软件运行所需的PC机终端、连接PC机的CPU卡读卡器以及数据库服务器。

运行软件后将自动检测CPU卡读卡器连接和数据库服务器的连接,检测连接正常后进入登录界面。

以预设的超级管理员身份登录进入软件,开始对系统功能的测试:

首先是系统软件管理功能:超级管理员需要添加普通管理员,设置其操作权限——发卡权限、充值权限、卡片挂失权限、更改个人信息权限、账户注销权限以及管理员密码修改权限。在一般应用中普通管理员的登录即可满足系统的应用功能。

其次是系统发卡充值功能:对于未发行的CPU卡,系统在开户、发卡过程中完成对卡片的初始化工作,并写入用户个人信息;系统读卡时能够辨识无效卡并警告管理员卡片不可用。测试充值功能主要在于测试写入卡片金额(次数)的正确性,保证在需要的应用文件下的数据写入,保证充值记录信息在对应应用账户下的数据刷新;以及同时完成对数据库充值记录刷新的信息完整性:当遇到意外,卡片金额写入异常时,充值记录不再更新,并保存异常报告。

最后是对数据库存储充值记录的调取测试:多次充值后查询各次充值记录均能够完整无误的显示;数据库对于意外关闭等情况均能良好应对。

经过多次测试,本系统软件的各功能均可正常使用。

6.总结

本文针对集中小区持卡消费的特点,结合CPU卡可进行多应用开发的功能概括了一卡多用的CPU卡文件系统设计思路,并规划了发卡充值系统的软件实现,通过测试证实软件的可用性,并具备友好人机交互界面、易操作的优点。

参考文献

[1]顾赟.CPU智能卡记次消费系统设计与实现[D].苏州大学,2008.

[2]贾瀛.塘沽区地热试验研究中心基于IC卡热水使用管理信息系统建设的设计与实现[D].天津大学,2008.

[3]王建伟,尹婷婷,林永君,朱振军.应用CPU卡实现充电桩计费的研究[J].电子世界,2012(6):51-53.

作者简介:尹婷婷(1986—),女,华北电力大学控制与计算机工程学院研究生在读,研究方向:嵌入式在工业控制中的应用。

上一篇:金融业操作风险数据搜集策略的思考 下一篇:基于网络的远程广告信息系统的设计