识别使用Oracle 11g实现卡识别系统(oracle 11g卡)

识别使用Oracle 11g实现卡识别系统

随着科技的不断发展,传统的卡识别系统已经不能满足需求,更加智能、高效、安全的卡识别系统已经成为目前的发展趋势。Oracle 11g作为一种先进的关系型数据库管理系统,其强大的数据处理能力和高可靠性,为卡识别系统的研发提供了很好的支持。本文将介绍如何使用Oracle 11g实现卡识别系统的设计与开发。

一、需求分析

卡识别系统是一种常见的安全门禁系统,在许多场合得到广泛应用。该系统可以通过读卡器读取用户持有的门禁卡信息,并进行比对验证,最终决定是否允许用户进入指定的区域。本系统需要实现的功能如下:

1. 读取门禁卡信息:通过读卡器读取门禁卡内部存储的信息,包括用户姓名、身份证号、卡号等。

2. 校对门禁卡信息:将读取的门禁卡信息与数据库内存储的信息进行比对,校对其有效性。

3. 记录门禁记录:对于每次用户刷卡进出门禁区域,系统需要记录相关信息,包括用户姓名、身份证号、卡号、进出时间等。

4. 后台管理功能:管理员需要进行权限设置,包括添加、删除、权限修改等。

二、系统设计

在本系统设计中,我们将使用Oracle 11g作为数据库管理系统,并通过Java开发语言实现卡识别系统。系统包括以下模块:

1. 门禁卡识别模块:通过串口读取卡片信息,并将读取的信息传送至后台数据库进行校对比对。

2. 数据库管理模块:管理门禁卡信息数据库,包括用户信息、卡号信息等。

3. 系统管理模块:管理员对门禁卡识别系统进行后台管理、权限设置等操作。

三、详细实现

(1)门禁卡识别模块:

public class CardReader implements SerialPortEventListener {

//定义相关变量

static CommPortIdentifier portId;

static Enumeration portList;

InputStream inputStream;

SerialPort serialPort;

Thread readThread;

//打开串口

public void openSerialPort() throws Exception {

//获取串口

portList = CommPortIdentifier.getPortIdentifiers();

while (portList.hasMoreElements()) {

portId = (CommPortIdentifier) portList.nextElement();

//判断是否为串口

if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {

//判断是自定义的端口

if (portId.getName().equals(“COM1”)) {

break;

}

}

}

//打开串口

serialPort = (SerialPort) portId.open(“ReadPort”, 2000);

//设置串口参数

serialPort.setSerialPortParams(9600,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

//获取输入流

inputStream = serialPort.getInputStream();

//创建线程,开始读串口数据

readThread = new Thread(this);

readThread.start();

}

//关闭串口

public void closeSerialPort() {

if (serialPort != null) {

serialPort.close();

}

}

//读取串口数据

@Override

public void run() {

byte[] buffer = new byte[1024];

int len = -1;

try {

while ((len = inputStream.read(buffer)) > -1) {

//将读取到的卡片信息写入数据库中进行比对校验

}

} catch (IOException e) {

e.printStackTrace();

}

}

//接收串口数据

@Override

public void serialEvent(SerialPortEvent evt) {

if (evt.getEventType() == SerialPortEvent.DATA_AVLABLE) {

int data;

try {

while ((data = inputStream.read()) > -1) {

//获取到数据

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

(2)数据库管理模块:

CREATE TABLE CARD_INFO(

ID INT PRIMARY KEY NOT NULL,

USERNAME VARCHAR2(50),

CARDNO VARCHAR2(100)

);

//插入数据

INSERT INTO CARD_INFO(ID, USERNAME, CARDNO)

VALUES(1, ‘张三’, ‘12345678’);

INSERT INTO CARD_INFO(ID, USERNAME, CARDNO)

VALUES(2, ‘李四’, ‘654321’);

//查询数据

SELECT * FROM CARD_INFO;

(3)系统管理模块:

//添加用户

INSERT INTO CARD_INFO(ID, USERNAME, CARDNO)

VALUES(3, ‘王五’, ‘111111’);

//删除用户

DELETE FROM CARD_INFO WHERE ID=1;

//修改用户权限

UPDATE CARD_INFO SET USERNAME=’小明’ WHERE ID=2;

四、总结

通过本文的介绍,我们可以看出使用Oracle 11g实现卡识别系统是一种高效、稳定的技术方案。在实际开发中需要针对具体需求做出相应的修改和优化,从而实现更好地服务用户的目标。


数据运维技术 » 识别使用Oracle 11g实现卡识别系统(oracle 11g卡)