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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
windows下添加Python环境变量的方法汇总
May 14 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
django之自定义软删除Model的方法
Aug 14 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
Python操作注册表详细步骤介绍
Feb 05 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
Python实现提取PDF简历信息并存入Excel
Apr 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使用反射插入对象示例分享
2014/03/11 PHP
PHP中比较时间大小实例
2014/08/21 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
Python从MP3文件获取id3的方法
2015/06/15 Python
浅谈scrapy 的基本命令介绍
2017/06/13 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python编写弹球游戏的实现代码
2018/03/12 Python
Python 通配符删除文件的实例
2018/04/24 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
python3 深浅copy对比详解
2019/08/12 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
详解Python 函数参数的拆解
2020/09/02 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
团拜会策划方案
2014/06/07 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
大学生暑期实践报告
2015/07/13 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Python各协议下socket黏包问题原理
2022/04/12 Python
win10更新失败无限重启解决方法
2022/04/19 数码科技
使用Redis实现分布式锁的方法
2022/06/16 Redis