python實現(xiàn)汽車管理系統(tǒng)
本文實例為大家分享了python實現(xiàn)汽車管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
1、定義車輛類,屬性有車牌號、顏色、車型(小汽車、小卡、中卡和大卡)、到達(dá)的時間和離開的時間等信息和相關(guān)的對屬性做操作的行為。
2、定義一個管理類,完成對停車場的管理。停車場的具體要求:設(shè)停車場是一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進(jìn)出。汽車在停車場內(nèi)按門外的便道上等待,一旦有車開走,則排在便道上的第一 輛車即可開入;每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。
功能描述:
(1)添加功能:程序能夠添加到達(dá)停車場的車輛信息,要求車輛的車牌號要唯一,如果添加了重復(fù)編號的記錄時,則提示數(shù)據(jù)添加重復(fù)并取消添加。
(2)查詢功能:可根據(jù)車牌號、車型等信息對已添加的停車場中的車輛信息進(jìn)行查詢,如果未找到,給出相應(yīng)的提示信息,如果找到,則顯示相應(yīng)的記錄信息;
(3)顯示功能:可顯示當(dāng)前系統(tǒng)中所有車輛的信息,每條記錄占據(jù)一行。
(4)編輯功能:可根據(jù)查詢結(jié)果對相應(yīng)的記錄進(jìn)行修改,修改時注意車牌號的唯一性。
(5)刪除功能:主要實現(xiàn)對已添加的車輛記錄進(jìn)行刪除。如果當(dāng)前系統(tǒng)中沒有相應(yīng)的人員記錄,則提示“記錄為空!”并返回操作。
(6)統(tǒng)計功能:能統(tǒng)計停車場中車輛的總數(shù)、按車型、按到達(dá)時間進(jìn)行統(tǒng)計等。
實現(xiàn)代碼:
import datetime
class CarMessage(object):
def __init__(self, num, owner, color, type, connect, money, endtime):
# 汽車屬性
self.num = num
self.color = color
self.type = type
self.owner = owner
self.connect = connect
self.money = money
self.entime = endtime
def __str__(self):
print('車牌號:<%s> 車主:<%s> 顏色:<%s> 車型:<%s> 聯(lián)系方式:<%s> 余額:<%s> 停車時間:<%s> '
% (self.num, self.owner, self.color, self.type, self.connect, self.money, self.entime))
class Park(object):
def init(self): # 對停車場初始化車輛
self.car_list.append(CarMessage('001', 'python', '黑', '大卡', '123456789', 34, datetime.datetime.now()))
self.car_list.append(
CarMessage('002', 'hello', '黑', '小汽車', '123456789', 87, datetime.datetime.now() - datetime.timedelta(minutes=10)))
self.car_list.append(
CarMessage('003', 'java', '白', '小汽車', '123456789', 55, datetime.datetime.now() - datetime.timedelta(hours=1)))
self.car_list.append(
CarMessage('004', 'westos', '黑', '小卡', '123456789', 60, datetime.datetime.now() - datetime.timedelta(days=2)))
self.car_list.append(
CarMessage('005', 'root', '白', '中卡', '123456789', 24, datetime.datetime.now() - datetime.timedelta(minutes=60)))
def __init__(self):
self.max_car = 200
self.car_list = []
self.cur_car = len(self.car_list)
def Menu(self):
self.init()
while True:
print("""
停車場管理系統(tǒng)
1)停車
2)取車
3)余額查詢
4)顯示已存放車輛
5)查詢
6)編輯車輛信息
7)退出
""")
choice = input("請輸入你的選擇:")
if choice == '1':
self.park()
elif choice == '2':
self.exit()
elif choice == '3':
car = input("請輸入車牌號:")
self.pay(car)
elif choice == '4':
for i in self.car_list:
CarMessage.__str__(i)
elif choice == '5':
self.find()
elif choice == '6': #編輯車輛信息
self.edit()
elif choice == '7':
exit(0)
else:
print('請輸入正確選項?。?!')
def park(self):
if self.cur_car<self.max_car:
car_num = input('請輸入你的車牌號:')
res = self.check(car_num) # 判斷該車牌是否有停車記錄
if res is None:
self.car_list.append(CarMessage(car_num, input('車主:'), input('顏色:'), input('車型<小汽車、小卡、中卡和大卡>:'),
input('聯(lián)系方式:'), int(input('余額')), datetime.datetime.now()))
print('汽車可以進(jìn)入')
else:
print('車輛已在停車場內(nèi)部')
else:
print('車位已滿,無法停車')
def exit(self):
car_num = input("請輸入你的車牌號:")
res = self.check(car_num)
if res is not None:
self.pay(res)
self.car_list.remove(res)
print('一路平安,出行平安')
else:
print('你的車輛不在停車場內(nèi)部,請通知管理員!')
def pay(self,car):
# res = self.check(car)
money = (datetime.datetime.now() - car.endtime).seconds / 60
print("當(dāng)前余額:%s" %(money))
while True:
if car.money >= money: # 判斷余額是否夠支付
car.money -= money
print('自動付款%s成功' % (money))
break
else:
print('余額不足請充值')
car.money += int(input('充值金額:'))
print('充值成功')
def check(self,car_num):
for i in self.car_list:
if car_num == i.num:
return i
else:
return None
def find(self):
while True:
print('''
1)根據(jù)車牌查詢
2)根據(jù)車型查詢
3)返回
''')
choice = input("請輸入你的選擇:")
if choice == '1':
num = input('車牌號:')
res = self.check(num)
if res is not None:
CarMessage.__str__(res)
else:
print("查無此車!")
elif choice == '2':
type = input("車型<小汽車、小卡、中卡和大卡>:")
if type in ['小汽車','小卡','中卡','大卡']:
for i in self.car_list:
if i.type == type:
CarMessage.__str__(i)
else:
print('不存在%s這種車型'%(type))
elif choice == '3':
break
else:
print('請輸入正確選項\n')
def edit(self): #更改車輛信息
num= input('請輸入車牌號:')
res = self.check(num)
if res is not None:
CarMessage.__str__(res)
print('信息修改:\n車牌號:%s'%(num))
res.owner = input('車主:')
res.clor = input('顏色:')
while True:
type = input("車型<小汽車、小卡、中卡和大卡>:")
if type in ['小汽車', '小卡', '中卡', '大卡']:
res.type = type
break
else:
print('不存在%s這種車型,請重新輸入\n' % (type))
res.connect = input('聯(lián)系方式:')
res.money = int(input('余額:'))
res.entime = datetime.datetime.strptime(input('進(jìn)入停車場時間(eg:2018-05-21 11:14:10):'),
'%Y-%m-%d %H:%M:%S')
print('信息修改成功...')
else:
print('沒有車牌%s的車輛信息'%(num))
p = Park()
p.Menu()
功能三暫時有一些問題,還在學(xué)習(xí)中。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于python 的legend圖例,參數(shù)使用說明
這篇文章主要介紹了關(guān)于python 的legend圖例,參數(shù)使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
numpy如何按條件給元素賦值np.where、np.clip
這篇文章主要介紹了numpy如何按條件給元素賦值np.where、np.clip問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
Jupyter notebook運行Spark+Scala教程
這篇文章主要介紹了Jupyter notebook運行Spark+Scala教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
LyScript實現(xiàn)Hook隱藏調(diào)試器的方法詳解
LyScript?插件集成的內(nèi)置API函數(shù)可靈活的實現(xiàn)繞過各類反調(diào)試保護(hù)機(jī)制。本文將運用LyScript實現(xiàn)繞過大多數(shù)通用調(diào)試機(jī)制,實現(xiàn)隱藏調(diào)試器的目的,需要的可以參考一下2022-09-09
python算法學(xué)習(xí)之桶排序算法實例(分塊排序)
本代碼介紹了python算法學(xué)習(xí)中的桶排序算法實例,大家參考使用吧2013-12-12
深入學(xué)習(xí)Python中的上下文管理器與else塊
這篇文章主要給大家介紹了關(guān)于Python中上下文管理器與else塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08

