识别使用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实现卡识别系统是一种高效、稳定的技术方案。在实际开发中需要针对具体需求做出相应的修改和优化,从而实现更好地服务用户的目标。