停车管理系统

''' 停车管理系统设计:   # 1. 基础版本: # 属性: # 停车场最多停车数; max_car; # 当前停车数;cur_car; # 当前停车列表; car_list = []  # 方法: # 停车:park() # 1). 如果没有达到最多停车数,则允许停车;  2). 如果没有达到最多停车数,则允许停车;  # 出停车场:exit()  1). 判断该汽车是否进入,如果进入,则删除car_list里面相关的信息;  2). 如果该汽车从未进入, 则通知联系管理员;   # 2. 升级版本  1). 每辆汽车都有其属性, 包含: 车牌号,车主, 联系方式, 余额, 进入停车场时间, 出停车场时间; 2). 车主实现刷卡计时收费, 停车收费5元/小时;
#1.基础版本
class Parking_Lot(object):
    def __init__(self,max_car,cur_car,car_list):
        self.max_car=max_car
        self.cur_car=cur_car=len(self.car_list)
        self.car_list=car_list=[]
    def park(self):     #定义停车方法
        car_info=input('停车车辆信息:')
        if self.cur_car<self.max_car:  #当前停车数小于最大停车数
            print('允许停车')
            self.cur_car+=1    #当前停车数+1
            self.car_list.append(car_info)   #将该车辆信息录入
            print('%s车辆成功停车'%(car_info))
            print(self.car_list)
            return self.cur_car
        else:
            print('停车位已满,不允许停车')
            return self.cur_car
    def exit(self):        #定义出库方法
        car_info=input('出库车辆信息:')
        if  car_info in self.car_list:  #查看出库车辆是否存在
            self.car_list.remove(car_info)#移除该车辆信息
            self.cur_car-=1    #当前停车数-1
            print('%s车辆出库成功'%(car_info))
            print(self.car_list)
            return self.cur_car

        else:
            print('该汽车从未进入,请联系管理员!')
    def menu(self):
        while True:
            print('''
                        停车管理系统设计
                     1.停车
                     2.出库
                     3.退出
            ''')
            choice=input('请输入您的选择:')
            if choice=='1':
                self.park()
            elif choice=='2':
                self.exit()
            elif choice=='3':
                exit(0)
                break
            else:
                print('请输入正确的选择')

a=Parking_Lot(150,50,[])
a.menu()
#2.升级版本
import datetime
import random
class Cars(object):
    def __int__(self,plate_number,car_owner,phone,balance,start_time,end_time,parkingtime):
        self.plate_number=plate_number
        self.car_owner=car_owner
        self.phone=phone
        self.balance=balance
        self.start_time=start_time
    def __str__(self):
        return '车牌号:%s ,车主:%s, 联系方式:%s, 余额;%s, 进入时间:%s'%(self.plate_number,self.car_owner,
                self.phone,self.balance,self.start_time)

class Parking_Lot(object):
    def __init__(self,max_car,cur_car,car_list):
        self.max_car=max_car
        self.cur_car=cur_car=len(car_list)
        self.car_list=car_list=[]

    def park(self):
        car_plate_number = input('车牌号:')
        res = self.check(car_plate_number)  # 判断该车牌是否有停车记录
        if res is None:
            if self.cur_car < self.max_car:  # 判断停车场是否满位
                self.car_list.append(Cars(car_plate_number, input('车主:'),input('联系方式:'), int(input('余额:')), datetime.datetime.now()))
                print('停车成功!')
                self.cur_car+=1
                return self.car_list
            else:
                print('停车场已满!暂时不能停车。。。')
        else:
            print('车牌为%s车辆已停在停车场' % car_plate_number)
    def find(self):
        while True:
            print(''''' 
                    1.依据车牌查询  
                    2.退出查询 
                    ''')
            choice = int(input('Choice:'))
            if choice == 1:  # 依据车牌查询
                num = input('车牌号:')
                res = self.check(num)  # 判断该车牌号是否有停车记录
                if res is not None:
                    Cars.__str__(res)

                else:
                    print('车牌%s停车记录为空...' % num)
            elif choice == 2:
                break
            else:
                print('请输入正确选择...')

    def exit(self):
        car_plate_number=input('出库车辆车牌号:')

        if car_plate_number in self.car_list:
            self.pay()
            self.car_list.remove(car_plate_number)
            self.cur_car+=1
            print('%s车辆出库成功'%(car_plate_number))
            print(self.car_list)
            return self.cur_car

        else:
            print('该汽车从未进入,请联系管理员!')
    def pay(self):
        times=(datetime.datetime.now()-Cars.start_time).seconds
        if Cars.balance >=times/360:
            Cars.balance -=times/360
            print('自动付款成功')
        else:
            print('余额不足,请充值')
            Cars.balance += int(input('充值金额'))
            print('充值成功')
            Cars.balance -=times/360
            print('自动付费成功')
    def check(self, car_plate_number):
        for i in self.car_list:
            if car_plate_number == i.num:
                return i
        else:
            return None

    def menu(self):
        while True:
            print('''
                        停车管理系统设计
                     1.停车
                     2.查询
                     3.显示
                     4.出库
                     5.退出
            ''')
            choice=input('请输入您的选择:')
            if choice=='1':
                self.park()
            elif choice=='2':
                self.find()
            elif choice=='3':
                for i in self.car_list:
                    Cars.__str__(i)
            elif choice=='4':
                self.exit()
            elif choice=='5':
                exit(0)
                break
            else:
                print('请输入正确的选择')


a=Parking_Lot(150,50,[])
a.menu()

    原文作者:停车场模拟问题
    原文地址: https://blog.csdn.net/xijiao_jiao/article/details/80436075
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞