python實(shí)現(xiàn)停車(chē)管理系統(tǒng)
Python停車(chē)管理系統(tǒng)可實(shí)現(xiàn)車(chē)輛入庫(kù),按車(chē)牌號(hào)或者車(chē)型查詢車(chē)輛,修改車(chē)輛信息,車(chē)輛出庫(kù)時(shí)實(shí)現(xiàn)計(jì)費(fèi),按車(chē)型統(tǒng)計(jì)車(chē)輛數(shù)和顯示全部車(chē)輛信息的功能
(1)定義車(chē)輛類,屬性有車(chē)牌號(hào)、顏色、車(chē)型(小汽車(chē)、小卡、中卡和大卡)、到達(dá)的時(shí)間和離開(kāi)的時(shí)間等信息和相關(guān)的對(duì)屬性做操作的行為。
(2)定義一個(gè)管理類,完成對(duì)停車(chē)場(chǎng)的管理。停車(chē)場(chǎng)的具體要求:設(shè)停車(chē)場(chǎng)是一個(gè)可停放n輛汽車(chē)的狹長(zhǎng)通道,且只有一個(gè)大門(mén)可供汽車(chē)進(jìn)出。
汽車(chē)在停車(chē)場(chǎng)內(nèi)按門(mén)外的便道上等待,一旦有車(chē)開(kāi)走,則排在便道上的第一輛車(chē)即可開(kāi)入;每輛停放在車(chē)場(chǎng)的車(chē)在它離開(kāi)停車(chē)場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。
功能描述
(1)添加功能:程序能夠添加到達(dá)停車(chē)場(chǎng)的車(chē)輛信息,要求車(chē)輛的車(chē)牌號(hào)要唯一,如果添加了重復(fù)編號(hào)的記錄時(shí),則提示數(shù)據(jù)添加重復(fù)并取消添加。
(2)查詢功能:可根據(jù)車(chē)牌號(hào)、車(chē)型等信息對(duì)已添加的停車(chē)場(chǎng)中的車(chē)輛信息進(jìn)行查詢,如果未找到,給出相應(yīng)的提示信息,如果找到,則顯示相應(yīng)的記錄信息;
(3)顯示功能:可顯示當(dāng)前系統(tǒng)中所有車(chē)輛的信息,每條記錄占據(jù)一行。
(4)編輯功能:可根據(jù)查詢結(jié)果對(duì)相應(yīng)的記錄進(jìn)行修改,修改時(shí)注意車(chē)牌號(hào)的唯一性。
(5)刪除功能:主要實(shí)現(xiàn)對(duì)已添加的車(chē)輛記錄進(jìn)行刪除。如果當(dāng)前系統(tǒng)中沒(méi)有相應(yīng)的人員記錄,則提示“記錄為空!”并返回操作。
(6)統(tǒng)計(jì)功能:能統(tǒng)計(jì)停車(chē)場(chǎng)中車(chē)輛的總數(shù)、按車(chē)型、按到達(dá)時(shí)間進(jìn)行統(tǒng)計(jì)等。
先創(chuàng)建一個(gè)關(guān)于車(chē)的類模塊setting_Car.py
import time from setting_Manage import ParkManage class Car(ParkManage): """一個(gè)關(guān)于車(chē)的類""" 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): """根據(jù)時(shí)間計(jì)費(fèi)""" 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時(shí)%.0f分%.0f秒"%(h,m,s) consumption = ((park_time) / 3600) * 5 self.balance -= consumption print("車(chē)牌號(hào)為:%s\n停車(chē)時(shí)長(zhǎng):%s\n本次消費(fèi):%.2f元\n卡里余額:%.2f元\n" % (self.car_number,P_time, consumption, self.balance)) def __str__(self): if self.car_model=='0': self.car_model="小汽車(chē)" elif self.car_model=='1': self.car_model="小卡" elif self.car_model=='2': self.car_model="中卡" elif self.car_model=='3': self.car_model="大卡" 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)
創(chuàng)建一個(gè)關(guān)于管理系統(tǒng)的類模塊setting_Manage.py
import time class ParkManage(object): """創(chuàng)建一個(gè)關(guān)于停車(chē)的類""" def __init__(self,max_car=100,): #定義最大停車(chē)輛數(shù) self.max_car=max_car self.car_list = [] self.cur_car=len(self.car_list) def info(self): """ #顯示系統(tǒng)功能信息""" print(""" ————————————————————————— |***歡迎進(jìn)入車(chē)輛管理系統(tǒng)***| ————————————————————————— {1} {2} 1)添加車(chē)輛信息{3}{2} {0} {2} 2)查詢車(chē)輛信息{3}{2} {0} {2} 3)顯示車(chē)輛信息{3}{2} {0} {2} 4)編輯車(chē)輛信息{3}{2} {0} {2} 5)刪除車(chē)輛信息{3}{2} {0} {2} 6)統(tǒng)計(jì)車(chē)輛信息{3}{2} {0} {2} 7)退出系統(tǒng){3}{2} {1} """.format("-"*40,"="*40,"|"," "*16)) def add_car(self,car): """#添加車(chē)輛信息""" entrance_time = time.ctime() car["entrance_time"]=entrance_time for Car in self.car_list: if Car.car_number == car.car_number: print("車(chē)牌號(hào)信息有誤,重新輸入") break else: self.car_list.append(car) print("車(chē)牌號(hào)為%s的車(chē)入庫(kù)成功" %car.car_number) def search_By_Number(self): """#按車(chē)牌號(hào)查詢""" car_number=input("請(qǐng)輸入你您要查找的車(chē)牌號(hào):") for car in self.car_list: if car.car_number==car_number: print(car) break else: print("未找到車(chē)牌號(hào)為%s的車(chē)輛" %car_number) def search_By_Model(self): """#按車(chē)型查詢""" car_model=int(input("(小汽車(chē):0,小卡:1,中卡:2,大卡:3)\n請(qǐng)輸入您要查找的車(chē)型:")) 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("未找到相關(guān)車(chē)輛信息") else: print("輸入有誤,請(qǐng)重新輸入") def searchCar(self): """#查找車(chē)輛信息""" print(""" 1)按車(chē)牌號(hào)查找 2)按車(chē)型查找 """) search_chioce=input("輸入您要查找的方式:") if search_chioce == '1': self.search_By_Number() elif search_chioce=='2': self.search_By_Model() else: print("輸入有誤,請(qǐng)重新輸入") def display(self): """#顯示車(chē)車(chē)輛信息""" if len(self.car_list)!=0: for car in self.car_list: print(car) else: print("車(chē)庫(kù)為空") def change_Carinfo(self): """#修改車(chē)輛信息""" car_number = input("請(qǐng)輸入你您要查找的車(chē)牌號(hào):") for car in self.car_list: if car.car_number == car_number: index=self.car_list.index(car) change=int(input("(修改信息的序號(hào):\n車(chē)主0,\n聯(lián)系方式1,\n車(chē)顏色2,\n車(chē)型3)\n輸入你要修改的信息序號(hào):")) if change==0: new_info=input("輸入新的信息:") self.car_list[index].car_owner=new_info print("車(chē)主名修改成功") break elif change==1: new_info=input("輸入新的信息:") self.car_list[index].contact_way=new_info print("聯(lián)系方式修改成功") break elif change==2: new_info=input("輸入新的信息:") self.car_list[index].car_color=new_info print("車(chē)顏色修改成功") break elif change==3: new_info=input("輸入新的信息:") self.car_list[index].car_model=new_info print("車(chē)型修改成功") break else: print("未找到車(chē)牌號(hào)為%s的車(chē)輛" % car_number) def delete_car(self,car): """刪除車(chē)輛信息""" exit_time=time.ctime() car["exit_time"]=exit_time car.slot_card() self.car_list.remove(car) print("車(chē)牌號(hào)為%s的車(chē)兩成功刪除"%car.car_number) def statistics(self): """統(tǒng)計(jì)車(chē)輛信息""" sedan_car_number=0 pickup_truck_number=0 middle_truck_number=0 super_truck_number=0 for 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+=1 else: print("小汽車(chē):%s\n" "小 卡:%s\n" "中 卡:%s\n" "大 卡:%s\n" %(sedan_car_number,pickup_truck_number,middle_truck_number,super_truck_number))
在main_fun.py中創(chuàng)建主函數(shù)并運(yùn)行
import re from setting_Car import Car from setting_Manage import ParkManage def check_car_number(car_number): #判斷車(chē)牌號(hào)是否合法 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): #判斷手機(jī)號(hào)是否合法 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("請(qǐng)輸入你要的功能:") if choice=='1': check_error_list=[] car_number=input("請(qǐng)輸入車(chē)牌號(hào):") if check_car_number(car_number): car_owner=input("請(qǐng)輸入車(chē)主姓名:") contact_way=input("請(qǐng)輸入車(chē)主聯(lián)系方式:") if check_contact_way(contact_way): car_color=input("請(qǐng)輸入車(chē)顏色:") car_model=input("請(qǐng)輸入車(chē)型(小汽車(chē):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("輸入信息不全") break else: car = Car(car_number, car_owner, contact_way, car_color, car_model) parkmanage.add_car(car) else: print("手機(jī)號(hào)無(wú)效") else: print("車(chē)牌號(hào)不合法") elif choice=='2': parkmanage.searchCar() elif choice =='3': parkmanage.display() elif choice=='4': parkmanage.change_Carinfo() elif choice=='5': car_number = input("輸入您要?jiǎng)h除的車(chē)輛的車(chē)牌號(hào):") for car in parkmanage.car_list: if car.car_number == car_number: parkmanage.delete_car(car) break else: print("未找到車(chē)牌號(hào)為%s的車(chē)輛" % (car_number)) elif choice=='6': parkmanage.statistics() elif choice=='7': print("歡迎下次使用?。。?) exit() else: print("請(qǐng)輸入正確的選項(xiàng)") if __name__ == '__main__': main()
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開(kāi)發(fā)》。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python圖書(shū)管理系統(tǒng)
- Python實(shí)現(xiàn)GUI學(xué)生信息管理系統(tǒng)
- Python實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- python實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
- python3.6+django2.0開(kāi)發(fā)一套學(xué)員管理系統(tǒng)
- python實(shí)現(xiàn)外賣(mài)信息管理系統(tǒng)
- python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- Python學(xué)生成績(jī)管理系統(tǒng)簡(jiǎn)潔版
- python學(xué)生信息管理系統(tǒng)
- Python簡(jiǎn)易版停車(chē)管理系統(tǒng)
相關(guān)文章
編寫(xiě)自定義的Django模板加載器的簡(jiǎn)單示例
這篇文章主要介紹了編寫(xiě)自定義的Django模板加載器的簡(jiǎn)單示例,Django是各色人氣Python框架中最為著名的一個(gè),需要的朋友可以參考下2015-07-07Python3使用requests包抓取并保存網(wǎng)頁(yè)源碼的方法
這篇文章主要介紹了Python3使用requests包抓取并保存網(wǎng)頁(yè)源碼的方法,實(shí)例分析了Python3環(huán)境下requests模塊的相關(guān)使用技巧,需要的朋友可以參考下2016-03-03Python?opencv進(jìn)行圓形識(shí)別(圓檢測(cè))實(shí)例代碼
最近工作的項(xiàng)目上需要檢測(cè)圖像中是否有圓形,下面這篇文章主要給大家介紹了關(guān)于Python?opencv進(jìn)行圓形識(shí)別(圓檢測(cè))的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05使用Python3+PyQT5+Pyserial 實(shí)現(xiàn)簡(jiǎn)單的串口工具方法
今天小編就為大家分享一篇使用Python3+PyQT5+Pyserial 實(shí)現(xiàn)簡(jiǎn)單的串口工具方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02pytorch .detach() .detach_() 和 .data用于切斷反向傳播的實(shí)現(xiàn)
這篇文章主要介紹了pytorch .detach() .detach_() 和 .data用于切斷反向傳播的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12對(duì)python中執(zhí)行DOS命令的3種方法總結(jié)
今天小編就為大家分享一篇對(duì)python中執(zhí)行DOS命令的3種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助一起。一起跟隨小編過(guò)來(lái)看看吧2018-05-05python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10