校园一卡通系统实现指导文档
一、 准备工作
1 附加数据库
在校园一卡通系统文件中提供该系统的SQL Server2005数据库文件,将次数据库文件附加到数据库中,如不能附加成功,本系统系统了数据库语句文件,运行该文件也可生成同样的数据库。

2 搭建校园一卡通环境
搭建门禁环境,如在《物联网虚拟仿真实验平台》中需拖入14443相关设备,如在《物联网实验台》中需连接14443读写器硬件设备(具体如何连接这里不阐述)。
二、 功能实现
1 相关类介绍
在该系统中存在几个比较重要的两个文件夹,一个是ObjClass文件夹,该文件夹的相关类主要是对数据库的一些基本操作,另一个文件夹则是Tools文件夹,则是对14443读写器的一些相关操作。下面会详细的介绍这些类:
DBConnection.cs
该类的主要作用是连接数据库,并且反正数据库的相关对象。

在上述构造函数中,存在一个字符串,该字符串是连接数据库的字符串。
Server=localhost,表示本地(需连接其他电脑的数据库,就必须输入该电脑的IP地址,且该电脑的远程数据库服务必须开启);database = database_125K表示数据库的名称;uid=sa;pwd = 123;表示数据库的sa用户和sa用户密码(如不一样则必须进行修改,否则无法连接数据库);

DBOperate.cs
该类主要是执行Sql语句,并且返回相关的数据信息。具体提供了如下方法,如需要进行详细了解,可自行查看源代码。

StudentInfo.cs
该类则是学生的基本信息类,包含学生的基本属性,已经对数据库的增删改查等。

4.RFID.cs
该类则提供对14443读写器的一些相关操作,比如串口操作,密钥操作,读写操作等等。详细可查看源代码

2 功能介绍
1 连接数据库
在Program.cs类中,实例化相关数据库,使系统连接数据库。

2 串口操作
frmConnectPort窗体。

程序运行时,会先进行串口设置,设置好串口后,才会进行主窗体。
实例化RFID.cs对象

获取所有串口

打开串口
在窗体的打开串口事件中,打开14443设备的串口。

3 主窗体
主窗体提供了各个功能。

4 发卡功能
FrmHairpin窗口,提供了学生的基本信息和卡号。

发卡功能主要的实现思路有一个计时器,实时的监控读取读写器中的校园一卡通卡,然后从数据库中进行查询。如已登记则给出提示,否则就显示校园一卡通的卡片信息。
主要代码如下:

读取到校园一卡通卡号之后,输入学生基本信息,将此信息写入到数据库中,即可完成注册。
主要代码如下:

5 充值功能
FrmRechargeable窗口,提供了对学生金额的充值。

充值功能与发卡原理类似,有计时器会实时的读取校园一卡通卡号,如读取到则会将次卡号从数据库中进行查询,如果查询成功并且该卡已注册,则会显示该卡的基本信息。
计时器:rfid.GetCardID()方法读取校园一卡通的卡号,如读取到则返回卡号,否则返回空。
GetInformation()方法则是显示该卡的学生基本信息。

充值:调用RFID.cs类中的Recharge()方法,进行充值。并且更新数据库中该用户的基本信息。

6 消费功能
消费功能有食堂消费(frmMessConsume窗口)、澡堂消费(frmBathConsume窗口)、商店消费(frmShopConsume窗口)。
校园一卡通管理系统中提供了这三种消费方式,不过原理都是一样的,所以只介绍食堂消费。
食堂消费的界面

食堂消费中也有一个计时器会实时的读取校园一卡通卡号,如读取到卡片,将到数据库中进行查询,如查询成功显示该卡的学生信息,否则提示失败。

当读取到卡片时,根据需求扣除多少金额,则会调用RFID.cs类中的CutPayment()方法,进行扣除操作,并且更新数据库的该学生信息。

7 挂失
frmImpower挂失窗体

挂失功能与之前充值、消费等功能类似,这里就不详细的阐述了,读卡方式和查询数据库方式都是一样的,唯一不同的是重新办理一张新的卡,然后修改相应的信息。
8 退卡
frmDelete窗体

原理与办卡、充值、消费类似,当读取到校园一卡通时,将此卡片的信息注销掉,并且从数据库中将此信息进行删除。

