请你帮我使用mysql设计一个程序
时间: 2024-03-16 21:43:59 浏览: 18
好的,下面是一个简单的停车场管理系统的MySQL数据库与Python程序的设计,供参考。
1. 停车场表 (parking_lot)
字段名 | 类型 | 描述
---|---|---
id | int | 停车场编号
name | varchar | 停车场名称
address | varchar | 停车场地址
total_spaces | int | 总车位数
available_spaces | int | 可用车位数
```mysql
CREATE TABLE parking_lot (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL,
total_spaces INT NOT NULL,
available_spaces INT NOT NULL
);
```
2. 停车位表 (parking_space)
字段名 | 类型 | 描述
---|---|---
id | int | 停车位编号
parking_lot_id | int | 所属停车场编号(外键)
status | int | 停车位状态(0:空闲,1:已占用)
```mysql
CREATE TABLE parking_space (
id INT PRIMARY KEY AUTO_INCREMENT,
parking_lot_id INT NOT NULL,
status INT NOT NULL,
FOREIGN KEY (parking_lot_id) REFERENCES parking_lot(id)
);
```
3. 车辆表 (vehicle)
字段名 | 类型 | 描述
---|---|---
id | int | 车辆编号
plate_number | varchar | 车牌号
enter_time | datetime | 进入停车场时间
exit_time | datetime | 离开停车场时间
parking_space_id | int | 所属停车位编号(外键)
```mysql
CREATE TABLE vehicle (
id INT PRIMARY KEY AUTO_INCREMENT,
plate_number VARCHAR(20) NOT NULL,
enter_time DATETIME NOT NULL,
exit_time DATETIME,
parking_space_id INT,
FOREIGN KEY (parking_space_id) REFERENCES parking_space(id)
);
```
4. Python程序实现
```python
import mysql.connector
from datetime import datetime
# 初始化数据库连接
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="parking_system"
)
# 获取游标
mycursor = mydb.cursor()
# 进入停车场
def enter_parking_lot(plate_number):
# 查询可用车位
mycursor.execute("SELECT id FROM parking_space WHERE status=0 LIMIT 1")
parking_space = mycursor.fetchone()
if parking_space is None:
print("停车场已满,请稍后再试")
return
# 更新停车位状态
mycursor.execute("UPDATE parking_space SET status=1 WHERE id=%s", (parking_space[0],))
mydb.commit()
# 插入车辆信息
enter_time = datetime.now()
sql = "INSERT INTO vehicle (plate_number, enter_time, parking_space_id) VALUES (%s, %s, %s)"
val = (plate_number, enter_time, parking_space[0])
mycursor.execute(sql, val)
mydb.commit()
print("车辆%s已停入停车位%s,停车开始时间:%s" % (plate_number, parking_space[0], enter_time))
# 离开停车场
def exit_parking_lot(plate_number):
# 查询车辆信息
mycursor.execute("SELECT id, enter_time, parking_space_id FROM vehicle WHERE plate_number=%s AND exit_time IS NULL", (plate_number,))
vehicle = mycursor.fetchone()
if vehicle is None:
print("未找到车辆%s,请检查车牌号是否正确或是否已离开停车场" % plate_number)
return
# 更新车辆信息
exit_time = datetime.now()
sql = "UPDATE vehicle SET exit_time=%s WHERE id=%s"
val = (exit_time, vehicle[0])
mycursor.execute(sql, val)
mydb.commit()
# 更新停车位状态
mycursor.execute("UPDATE parking_space SET status=0 WHERE id=%s", (vehicle[2],))
mydb.commit()
# 计算停车费用
duration = (exit_time - vehicle[1]).total_seconds() / 3600
mycursor.execute("SELECT hourly_rate FROM fee_rule WHERE %s BETWEEN start_time AND end_time", (exit_time.time(),))
hourly_rate = mycursor.fetchone()[0]
total_fee = round(duration * hourly_rate, 2)
print("车辆%s已离开停车位%s,停车结束时间:%s,停车费用:%s元" % (plate_number, vehicle[2], exit_time, total_fee))
# 测试
enter_parking_lot("粤B12345")
exit_parking_lot("粤B12345")
```
以上是一个简单的停车场管理系统的MySQL数据库与Python程序的设计,可以根据实际需求进行修改和优化。