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函数式编程
Jul 20 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
利用Python进行异常值分析实例代码
Dec 07 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
python读取图片任意范围区域
Jan 23 Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
python对接ihuyi实现短信验证码发送
May 10 Python
python学习将数据写入文件并保存方法
Jun 07 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 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
pw的一个放后门的方法分析
2007/10/08 PHP
php str_pad 函数用法简介
2009/07/11 PHP
php创建无限级树型菜单
2015/11/05 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
js实现九宫格布局效果
2020/05/28 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
2013英文求职信模板范文
2013/11/15 职场文书
精彩的推荐信范文
2013/11/26 职场文书
客户表扬信范文
2014/01/10 职场文书
运动会800米加油稿
2014/02/22 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
趣味运动会标语口号
2015/12/26 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书