Python迷你停车场管理小系统-学习版

迷你停车场管理小系统

项目说明:有一个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】收费模块

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜bu菜

夏日炎炎 有你超甜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值