一个Python停车管理系统

要求:

停车管理系统设计:

# 1. 基础版本:
# 属性:
#     停车场最多停车数; max_car;
#     当前停车数;cur_car;
#     当前停车列表; car_list = []
# 方法:
#     停车:park()
#             1). 如果没有达到最多停车数,则允许停车;
              2). 如果没有达到最多停车数,则允许停车;
#     出停车场:exit()
              1). 判断该汽车是否进入,如果进入,则删除car_list里面相关的信息;
              2). 如果该汽车从未进入, 则通知联系管理员;

# 2. 升级版本
1). 每辆汽车都有其属性, 包含: 车牌号,车主, 联系方式, 余额, 进入停车场时间, 出停车场时间;
2). 车主实现刷卡计时收费, 停车收费5元/小时;


代码:

#!/usr/bin/env python
# coding:utf-8
import time

max_car = 5
cur_car = 0
car_lst = []


class car():
    def __init__(self, platenumber, owner, contantway, balance=20, time1=0, time2=0):
        self.platenumber = platenumber
        self.owner = owner
        self.contantway = contantway
        self.balance = balance
        self.time1 = time1
        self.time2 = time2

    def park(self):
        if len(car_lst) < max_car:
            self.time1 = time.time()
            car_lst.append(self)
            print('停车成功.')
        else:
            print('车库已满.')

    def exit(self):
        a = len(car_lst) - 1 if len(car_lst) == max_car else  len(car_lst)
        for i in range(0, a):
            if car_lst[i].platenumber == self.platenumber:
                carex = car_lst[i]
                car_lst.remove(car_lst[i])
                carex.time2 = time.time()
                tt = float((carex.time2 - carex.time1) / 3600)
                print('停车时间%f小时,停车费用%f元.' % (tt, float(tt / 5)))
            else:
                if i == len(car_lst) - 1:
                    print('该汽车从未进入, 请联系管理员.')


while True:
    cho = input(
        '''
        请选择功能:
        1.停车
        2.出车
        3.退出系统   
        '''
    )
    if cho == '3':
        break
    elif cho == '1':
        if len(car_lst) >= max_car:
            print('车库已满.')
        else:
            pla = input('输入车牌号:')
            own = input('输入车主名:')
            cw = input('输入联系方式:')
            c = car(pla, own, cw)
            c.park()
    elif cho == '2':
        if len(car_lst) == 0:
            print('车库为空, 请联系管理员.')
        else:
            pl = input('输入车牌号:')
            carr = car(pl, 0, 0)
            carr.exit()
    else:
        print('输入错误,请重新选择.')
    time.sleep(2)
    continue

这是一个可以停5辆车的车库。受题目要求限制,代码写得较为混乱,例如车库为空或车库已满这类特殊情况下,为了避免多余输入需要在方法外进行判断,导致代码可读性下降。

比较有意思的是exit方法中一开始我写的是:for i in range(0 , len(car_lst)-1)

如果车库里只有1辆车的话就是range(0,0),这样的话I会为空。

而如果用for i in range(0 , len(car_lst)),在车库停满时会提示超出范围。max_car = 5 ,range(0,5) 输出为0到4,不知道为什么会超出范围。好在解决办法简单,加入判断赋值语句a = len(car_lst) - 1 if len(car_lst) == max_car else  len(car_lst)解决了问题

你可能感兴趣的:(一个Python停车管理系统)