请你用python语言和mysql语言编写一个门禁系统,要求能够通过门禁卡所录入的信息鉴别校内的学生老师和校外人员,学生老师的信息要求包括其姓名、专业、学号
时间: 2024-03-26 14:38:50 浏览: 12
好的,这个问题需要分为两部分来回答,一部分是门禁系统的设计,一部分是数据库的设计。我先来回答门禁系统的设计:
门禁系统设计:
```python
import mysql.connector
import time
# 连接数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="door_system"
)
mycursor = mydb.cursor()
# 创建表格
mycursor.execute("CREATE TABLE access_records (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), type VARCHAR(255), time TIMESTAMP)")
# 读取卡号信息
def read_card():
card_id = input("请输入卡号:")
# 根据卡号信息查询数据库中的人员信息
mycursor.execute("SELECT * FROM users WHERE card_id = %s", (card_id,))
user = mycursor.fetchone()
if user:
record_access(user[1], user[2], user[3])
else:
print("无效卡号!")
# 记录门禁卡刷卡信息
def record_access(name, type, student_id):
now = time.strftime('%Y-%m-%d %H:%M:%S')
sql = "INSERT INTO access_records (name, type, time) VALUES (%s, %s, %s)"
val = (name, type, now)
mycursor.execute(sql, val)
mydb.commit()
print("门禁卡刷卡成功!")
if type == '学生':
print("姓名:", name, " 学号:", student_id)
else:
print("姓名:", name, " 职工号:", student_id)
while True:
read_card()
```
数据库设计:
```mysql
CREATE DATABASE door_system;
USE door_system;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
type VARCHAR(255),
student_id VARCHAR(255),
card_id VARCHAR(255)
);
```
以上是一个简单的门禁系统的设计,可以根据需要进行优化和改进。需要注意的是,这个系统只是简单地写了一下数据库的连接和操作,实际应用中还需要考虑安全性、稳定性等方面的问题。