[ Python](https://www.zalou.cn/tag/python)駐車場管理システムは、モデルに従って、車両の保管、ライセンスプレート番号またはモデルによる車両のクエリ、車両情報の変更、車両がライブラリを離れるときの請求の実現を実現できます[統計](https://www.zalou.cn/tag/tongji)車両の数とすべての車両情報を表示する機能
(1)車両カテゴリを定義します。属性には、ライセンスプレート番号、色、モデル(車、小、中、大)、到着時間と出発時間、および属性に作用するその他の情報と関連する動作が含まれます。
(2)駐車場の管理を完了するための管理カテゴリを定義します。駐車場の具体的な要件:駐車場は、n台の車を駐車できる狭くて長い通路であり、車が出入りするためのゲートは1つだけです。
車はドアの外の歩道にある駐車場で待機します。車が走り去ると、歩道の最初の車が車で入ることができます。駐車場に駐車するすべての車は、駐車場を出るときに押す必要があります。滞在期間は支払われます。
機能説明
(1)追加機能:[プログラム](https://www.zalou.cn/tag/chengxu)は、駐車場に到着する車両の情報を追加できるため、車両のナンバープレート番号は一意である必要があります。重複番号のレコードを追加すると、データの繰り返しを求められ、追加がキャンセルされます。
(2)照会機能:追加された駐車場の車両情報を、ライセンスプレート番号、車種などに従って照会します。見つからない場合は、対応するプロンプト情報が表示され、見つかった場合は、対応するレコード情報が表示されます。
(3)表示機能:現在のシステムのすべての車両の情報を表示することができ、各レコードは1行を占めます。
(4)編集機能:クエリ結果に応じて対応するレコードを変更できますので、変更の際はライセンスプレート番号の一意性に注意してください。
(5)削除機能:主に追加された車両記録の削除を実現します。現在のシステムに対応する人事記録がない場合は、「記録が空です!」というプロンプトが表示され、操作に戻ります。
(6)[統計](https://www.zalou.cn/tag/tongji)関数:[統計](https://www.zalou.cn/tag/tongji)駐車場内の車両の総数、車種、到着時間[統計](https://www.zalou.cn/tag/tongji)など。
まず、車関連のクラスモジュールsetting_Car.pyを作成します
import time
from setting_Manage import ParkManage
classCar(ParkManage):"""車についてのクラス"""
def __init__(self,car_number,car_owner,contact_way,car_color,car_model):super(Car, self).__init__()
self.car_number=car_number
self.car_owner=car_owner
self.contact_way=contact_way
self.car_color=car_color
self.car_model=car_model
self.balance=200
self.entrance_time =0
self.exit_time =0
def __setitem__(self, key, value):
self.__dict__[key]=value
def slot_card(self):"""時間ベースの請求"""
park_time=time.mktime(time.strptime(self.exit_time))- time.mktime(
time.strptime(self.entrance_time))
h=park_time//3600
m=(park_time-h*3600)//60
s=park_time-h*3600-m*60
P_time="%.0f%.0fポイント%.0f秒"%(h,m,s)
consumption =((park_time)/3600)*5
self.balance -= consumption
print("ライセンスプレート番号は:%sn駐車時間:%この消費をsn:%.2f元nカード残高:%.2f元n"%(self.car_number,P_time, consumption, self.balance))
def __str__(self):if self.car_model=='0':
self.car_model="車"
elif self.car_model=='1':
self.car_model="小さなカード"
elif self.car_model=='2':
self.car_model="ミディアムカード"
elif self.car_model=='3':
self.car_model="Kcal"return"%s %s %s %s %s %s"%(self.car_number,self.car_owner,self.contact_way,
self.car_color,self.car_model,self.entrance_time)
管理システムに関するクラスモジュールsetting_Manage.pyを作成します
import time
classParkManage(object):"""駐車場に関するクラスを作成する"""
def __init__(self,max_car=100,): #駐車車両の最大数を定義します
self.max_car=max_car
self.car_list =[]
self.cur_car=len(self.car_list)
def info(self):""" #システム機能情報の表示"""print("""
―――――――――――――――――――――――――
|***車両管理システムへようこそ***|
―――――――――――――――――――――――――
{1}{2}1) 車両情報を追加する{3}{2}{0}{2}2)車両情報の照会{3}{2}{0}{2}3)車両情報を表示する{3}{2}{0}{2}4)車両情報の編集{3}{2}{0}{2}5)車両情報を削除する{3}{2}{0}{2}6)統計車両情報{3}{2}{0}{2}7)出口システム{3}{2}{1}""".format("-"*40,"="*40,"|"," "*16))
def add_car(self,car):"""#車両情報を追加する"""
entrance_time = time.ctime()
car["entrance_time"]=entrance_time
for Car in self.car_list:if Car.car_number == car.car_number:print("ライセンスプレートの情報が間違っています。再入力してください")breakelse:
self.car_list.append(car)print("ライセンスプレート番号は%sの車は正常に倉庫に入れられました"%car.car_number)
def search_By_Number(self):"""#ライセンスプレート番号で検索"""
car_number=input("お探しのライセンスプレート番号を入力してください。")for car in self.car_list:if car.car_number==car_number:print(car)breakelse:print("ライセンスプレート番号が見つかりません%の車両"%car_number)
def search_By_Model(self):"""#車のモデルによるクエリ"""
car_model=int(input("(車:0,スモールカード:1、ミディアムカード:2、ラージカード:3)nお探しのモデルを入力してください。"))if car_model in[0,1,2,3]:for car in self.car_list:if car_model==int(car.car_model):print(car)else:print("関連する車両情報が見つかりません")else:print("入力エラー、再入力してください")
def searchCar(self):"""#車両情報を探す"""print("""
1) ライセンスプレート番号で検索
2) モデルで検索
""")
search_chioce=input("探している方法を入力してください。")if search_chioce =='1':
self.search_By_Number()
elif search_chioce=='2':
self.search_By_Model()else:print("入力エラー、再入力してください")
def display(self):"""#車両情報を表示する"""iflen(self.car_list)!=0:for car in self.car_list:print(car)else:print("ガレージが空")
def change_Carinfo(self):"""#車両情報を変更する"""
car_number =input("お探しのライセンスプレート番号を入力してください。")for car in self.car_list:if car.car_number == car_number:
index=self.car_list.index(car)
change=int(input("(情報のシリアル番号を変更する:n所有者0,n連絡先1,n車の色2,nモデル3)n変更する情報のシリアル番号を入力します。"))if change==0:
new_info=input("新しい情報を入力してください:")
self.car_list[index].car_owner=new_info
print("所有者名は正常に変更されました")break
elif change==1:
new_info=input("新しい情報を入力してください:")
self.car_list[index].contact_way=new_info
print("連絡先情報が正常に変更されました")break
elif change==2:
new_info=input("新しい情報を入力してください:")
self.car_list[index].car_color=new_info
print("車の色が正常に変更されました")break
elif change==3:
new_info=input("新しい情報を入力してください:")
self.car_list[index].car_model=new_info
print("モデルは正常に変更されました")breakelse:print("ライセンスプレート番号が見つかりません%の車両"% car_number)
def delete_car(self,car):"""車両情報を削除する"""
exit_time=time.ctime()
car["exit_time"]=exit_time
car.slot_card()
self.car_list.remove(car)print("ライセンスプレート番号は%sの車2が正常に削除されました"%car.car_number)
def statistics(self):"""統計車両情報"""
sedan_car_number=0
pickup_truck_number=0
middle_truck_number=0
super_truck_number=0for car in self.car_list:if car.car_model=='0':
sedan_car_number+=1
elif car.car_model=='1':
pickup_truck_number+=1
elif car.car_model=='2':
middle_truck_number+=1
elif car.car_model=='3':
super_truck_number+=1else:print("車:%sn""小さなカード:%sn""ミディアムカード:%sn""Kcal:%sn"%(sedan_car_number,pickup_truck_number,middle_truck_number,super_truck_number))
main_fun.pyにメイン[関数](https://www.zalou.cn/tag/hanshu)を作成し、実行します
import re
from setting_Car import Car
from setting_Manage import ParkManage
def check_car_number(car_number): #ライセンスプレート番号が合法かどうかを判断する
pattern = re.compile(u'[u4e00-u9fa5]?')
pattern1 = re.compile(u'[A-Z]+')
pattern2 = re.compile(u'[0-9]+')
match = pattern.search(car_number)
match1 = pattern1.search(car_number)
match2 = pattern2.search(car_number)if match and match1 and match2:return True
else:return False
def check_contact_way(contact_way): #電話番号が合法かどうかを判断する
pattern = re.compile(u'1[3|4|5|6|7|8|9]d{9}$')
match = pattern.search(contact_way)if match:return True
else:return False
def main():
parkmanage=ParkManage()while True:
parkmanage.info()
choice=input("必要な機能を入力してください:")if choice=='1':
check_error_list=[]
car_number=input("ライセンスプレート番号を入力してください:")ifcheck_car_number(car_number):
car_owner=input("オーナーの名前を入力してください:")
contact_way=input("オーナーの連絡先を入力してください:")ifcheck_contact_way(contact_way):
car_color=input("車の色を入力してください:")
car_model=input("車種を入力してください(車:0,スモールカード:1、ミディアムカード:2、ラージカード:3):")
check_error_list=[car_number,car_owner,contact_way,car_color,car_model]for info in check_error_list: #入力情報の完全性を判断する
if info=='':print("不完全な入力")breakelse:
car =Car(car_number, car_owner, contact_way, car_color, car_model)
parkmanage.add_car(car)else:print("無効な電話番号")else:print("ライセンスプレート番号は違法です")
elif choice=='2':
parkmanage.searchCar()
elif choice =='3':
parkmanage.display()
elif choice=='4':
parkmanage.change_Carinfo()
elif choice=='5':
car_number =input("削除する車両のライセンスプレート番号を入力します。")for car in parkmanage.car_list:if car.car_number == car_number:
parkmanage.delete_car(car)breakelse:print("ライセンスプレート番号が見つかりません%の車両"%(car_number))
elif choice=='6':
parkmanage.statistics()
elif choice=='7':print("次回もようこそ! ! !")exit()else:print("正しいオプションを入力してください")if __name__ =='__main__':main()
上記はこの記事の全内容です。あなたの研究に役立つことを願っています。また、[ウェブサイト](https://www.zalou.cn/tag/wangzhan)(zalou.cn)をサポートしていただければ幸いです。
Recommended Posts