迷你停车场管理小系统
项目说明:有一个3层停车场,每一层共有5个车位,每层车位按照车牌号码尾号停入
预先数据:
cars=[['京A8E381','京A8E383','京A8E385','京A8E387','京A8E389'],['京A8E382','京A8E384'],['京A8E38N']]
车牌判断规则:
1,车牌长度等于7
2,车牌前2位必须要为中文和字母
3,车牌后5位至少存在一数字,不能全部为字母
4,对输入的车牌字符串进行去空格,字母转大写操作
def check_num(c):#车牌号是否正确
pattern = "^[\u4e00-\u9fa5]{1,1}[A-Za-z]+[A-Za-z0-9]*[\d]+[A-Za-z0-9]*$"
c = c.strip()
c = c.upper()
if len(re.findall(pattern, c)) != 0 and len(c)==7:
return 1
return 0
功能如下:
效果截图:
完整代码:
# _*_ coding : UTF-8 _*_
#开发人员 :简单极限
#开发时间 :2020/3/17 10:42
#文件名称 :Parking system
#开发工具 :PyCharm
import re
import time
def check_car_num(c):#开入车辆
c = c.strip()
c = c.upper()
if len(c)==7:
if check_num(c): # 车牌号是否正确
if check_car_number(c) == 1:#检测是否套牌车
print("发现已有相同车牌{}停放在停车场,请联系管理员是否为套牌车!".format(c))
else :
storey=find_storey(c)#计算该车停放楼层
if check_storey_empty(storey)==1:#该层是否满位
cars[storey-1].append(c)
cars_time[storey-1].append(time.time())
print("车辆[{}]停进[{}]楼停车场".format(c,storey))
else:
print("无法识别车牌号:{}".format(c))
else:
print("无法识别,车牌长度不等于7")
def check_num(c):#车牌号是否正确
pattern = "^[\u4e00-\u9fa5]{1,1}[A-Za-z]+[A-Za-z0-9]*[\d]+[A-Za-z0-9]*$"
c = c.strip()
c = c.upper()
if len(re.findall(pattern, c)) != 0 and len(c)==7:
return 1
return 0
def find_storey(c):#计算该车停放楼层
if re.findall(r'[0-9]',c[-1]):#验证最后一位是不是数字
if int(c[-1:])%2==0:
return 2
elif int(c[-1:])%2==1:
return 1
else:
return 3
def check_car_number(car_number):#检测是否套牌车
for one in range(len(cars)):
for two in cars[one]:
if two == car_number:
return 1
return 0
def check_storey_empty(storey):#该层是否满位
if len(cars[storey-1])!=5:
return 1
else:
print("本层车位已满,请停放其他地方")
def move_car(c):#开出车辆
for one in range(len(cars)):
time_index =-1
for two in cars[one]:
time_index=time_index+1
if two == c:
cars[one].remove(two)
print("车辆[{}]已开走".format(c))
#计算停车费
cal_parking_fee(time.time()-cars_time[one][time_index])
del cars_time[one][time_index]
return
print("没有找到车辆[{}]".format(c))
def cal_parking_fee(time):#计算停车费
if(time<10):
print("停车时长为:[{}]秒,未超过10秒,免费!".format(time))
elif(time<60):
print("停车时长为:[{}]秒,请缴纳10元离场!".format(time))
else:
print("停车时长为:[{}]秒,请缴纳100元离场!".format(time))
def find_car(c):#查找车辆
for one in range(len(cars)):
for two in cars[one]:
if two == c:
storey = find_storey(c) # 计算该车停放楼层
print("找到车辆[{}],当前停在[{}]楼".format(c,storey))
return
print("没有找到车辆[{}]".format(c))
if __name__ == "__main__":
cars=[['京A8E381','京A8E383','京A8E385','京A8E387','京A8E389'],['京A8E382','京A8E384'],['京A8E38N']]
# 统一设置启始时间
cars_time = [[time.time(), time.time(),time.time(), time.time(), time.time()], [time.time(), time.time()], [time.time()]]
print("============================")
print("+====迷你停车场管理小系统====+")
print("+============jdjx==========+")
print("| 1.查看停车情况 |")
print("| 2.开入车辆 |")
print("| 3.开出车辆 |")
print("| 4.查找车辆 |")
print("| 5.退出系统 |")
print("============================")
while True:
opt=(input("请输入服务编码:"))
if opt.isdigit()==True:
opt=int(opt)
if opt == 1:
print("停车场信息:")
for one in range(len(cars)):
print("{}楼已停放{}/5,车牌分别是:{}".format((one+1),len(cars[one]),cars[one]))
print("----------------------分割线-------------made in jdjx----------")
elif opt == 2:
c=input("请输入车牌号:")
check_car_num(c)
print("----------------------分割线-------------made in jdjx----------")
elif opt == 3:
c=input("请输入车牌号码:")
c = c.strip()
c = c.upper()
if check_num(c):
move_car(c)
else:
print("输入有误,核对后重新输入")
print("----------------------分割线-------------made in jdjx----------")
elif opt == 4:
c = input("请输入车牌号码:")
c = c.strip()
c = c.upper()
if check_num(c):
find_car(c)
else:
print("输入有误,核对后重新输入")
print("----------------------分割线-------------made in jdjx----------")
elif opt == 5:
print("退出程序")
exit()
else:
print("输入有误,没有找到服务")
else:
print("输入有误,不是数字")
end~
学习记录
2021/12/12 【add】收费模块