python实现停车管理系统


Posted in Python onNovember 30, 2018

Python停车管理系统可实现车辆入库,按车牌号或者车型查询车辆,修改车辆信息,车辆出库时实现计费,按车型统计车辆数和显示全部车辆信息的功能

(1)定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。

(2)定义一个管理类,完成对停车场的管理。停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

功能描述

(1)添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据车牌号、车型等信息对已添加的停车场中的车辆信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;

(3)显示功能:可显示当前系统中所有车辆的信息,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意车牌号的唯一性。

(5)删除功能:主要实现对已添加的车辆记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。

(6)统计功能:能统计停车场中车辆的总数、按车型、按到达时间进行统计等。

先创建一个关于车的类模块setting_Car.py

import time
from setting_Manage import ParkManage

class Car(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("车牌号为:%s\n停车时长:%s\n本次消费:%.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="大卡"
 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

class ParkManage(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("车牌号信息有误,重新输入")
 break
 else:
 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)
 break
 else:
 print("未找到车牌号为%s的车辆" %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):
 """#显示车车辆信息"""
 if len(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("车型修改成功")
  break
 else:
 print("未找到车牌号为%s的车辆" % 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的车两成功删除"%car.car_number)


 def statistics(self):
 """统计车辆信息"""
 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("小汽车:%s\n"
  "小 卡:%s\n"
  "中 卡:%s\n"
  "大 卡:%s\n"
  %(sedan_car_number,pickup_truck_number,middle_truck_number,super_truck_number))

在main_fun.py中创建主函数并运行

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("请输入车牌号:")
 if check_car_number(car_number):
 car_owner=input("请输入车主姓名:")
 contact_way=input("请输入车主联系方式:")
 if check_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("输入信息不全")
  break
  else:
  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)
  break
 else:
 print("未找到车牌号为%s的车辆" % (car_number))

 elif choice=='6':
 parkmanage.statistics()
 elif choice=='7':
 print("欢迎下次使用!!!")
 exit()
 else:
 print("请输入正确的选项")


if __name__ == '__main__':
 main()

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python访问纯真IP数据库的代码
May 19 Python
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
python中readline判断文件读取结束的方法
Nov 08 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
python各种语言间时间的转化实现代码
Mar 23 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
python内置进制转换函数的操作
Jun 02 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 #Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 #Python
python实现图片识别汽车功能
Nov 30 #Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 #Python
python实现汽车管理系统
Nov 30 #Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 #Python
Python版名片管理系统
Nov 30 #Python
You might like
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
python实现每次处理一个字符的三种方法
2014/10/09 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
python和shell获取文本内容的方法
2018/06/05 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
2014年质检工作总结
2014/11/26 职场文书
心理健康教育主题班会
2015/08/13 职场文书
六年级数学教学反思
2016/02/16 职场文书
导游词幽默开场白
2019/06/26 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android