''' 停车管理系统设计: # 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()