python实现汽车管理系统


Posted in Python onNovember 30, 2018

本文实例为大家分享了python实现汽车管理系统的具体代码,供大家参考,具体内容如下

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

2、定义一个管理类,完成对停车场的管理。停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按门外的便道上等待,一旦有车开走,则排在便道上的第一 辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

功能描述:

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

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

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

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

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

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

实现代码:

import datetime
class CarMessage(object):
  def __init__(self, num, owner, color, type, connect, money, endtime):
    # 汽车属性
    self.num = num
    self.color = color
    self.type = type
    self.owner = owner
    self.connect = connect
    self.money = money
    self.entime = endtime
 
  def __str__(self):
    print('车牌号:<%s> 车主:<%s> 颜色:<%s> 车型:<%s> 联系方式:<%s> 余额:<%s> 停车时间:<%s> '
       % (self.num, self.owner, self.color, self.type, self.connect, self.money, self.entime))
 
 
class Park(object):
  def init(self): # 对停车场初始化车辆
    self.car_list.append(CarMessage('001', 'python', '黑', '大卡', '123456789', 34, datetime.datetime.now()))
    self.car_list.append(
      CarMessage('002', 'hello', '黑', '小汽车', '123456789', 87, datetime.datetime.now() - datetime.timedelta(minutes=10)))
    self.car_list.append(
      CarMessage('003', 'java', '白', '小汽车', '123456789', 55, datetime.datetime.now() - datetime.timedelta(hours=1)))
    self.car_list.append(
      CarMessage('004', 'westos', '黑', '小卡', '123456789', 60, datetime.datetime.now() - datetime.timedelta(days=2)))
    self.car_list.append(
      CarMessage('005', 'root', '白', '中卡', '123456789', 24, datetime.datetime.now() - datetime.timedelta(minutes=60)))
 
  def __init__(self):
    self.max_car = 200
    self.car_list = []
    self.cur_car = len(self.car_list)
 
 
  def Menu(self):
    self.init()
    while True:
      print("""
          停车场管理系统
        1)停车
        2)取车
        3)余额查询
        4)显示已存放车辆
        5)查询
        6)编辑车辆信息
        7)退出
      
      """)
      choice = input("请输入你的选择:")
      if choice == '1':
        self.park()
      elif choice == '2':
        self.exit()
      elif choice == '3':
        car = input("请输入车牌号:")
        self.pay(car)
      elif choice == '4':
        for i in self.car_list:
          CarMessage.__str__(i)
      elif choice == '5':
        self.find()
      elif choice == '6':  #编辑车辆信息
        self.edit()
      elif choice == '7':
        exit(0)
      else:
        print('请输入正确选项!!!')
  def park(self):
    if self.cur_car<self.max_car:
      car_num = input('请输入你的车牌号:')
      res = self.check(car_num) # 判断该车牌是否有停车记录
      if res is None:
        self.car_list.append(CarMessage(car_num, input('车主:'), input('颜色:'), input('车型<小汽车、小卡、中卡和大卡>:'),
                   input('联系方式:'), int(input('余额')), datetime.datetime.now()))
        print('汽车可以进入')
      else:
        print('车辆已在停车场内部')
 
    else:
      print('车位已满,无法停车')
 
 
  def exit(self):
    car_num = input("请输入你的车牌号:")
    res = self.check(car_num)
    if res is not None:
      self.pay(res)
      self.car_list.remove(res)
      print('一路平安,出行平安')
 
    else:
      print('你的车辆不在停车场内部,请通知管理员!')
 
  def pay(self,car):
    # res = self.check(car)
    money = (datetime.datetime.now() - car.endtime).seconds / 60
    print("当前余额:%s" %(money))
    while True:
      if car.money >= money: # 判断余额是否够支付
        car.money -= money
        print('自动付款%s成功' % (money))
        break
      else:
        print('余额不足请充值')
        car.money += int(input('充值金额:'))
        print('充值成功')
 
  def check(self,car_num):
    for i in self.car_list:
      if car_num == i.num:
        return i
    else:
      return None
 
  def find(self):
    while True:
      print('''
      1)根据车牌查询
      2)根据车型查询
      3)返回
      ''')
      choice = input("请输入你的选择:")
      if choice == '1':
        num = input('车牌号:')
        res = self.check(num)
        if res is not None:
          CarMessage.__str__(res)
 
        else:
          print("查无此车!")
 
      elif choice == '2':
        type = input("车型<小汽车、小卡、中卡和大卡>:")
        if type in ['小汽车','小卡','中卡','大卡']:
          for i in self.car_list:
            if i.type == type:
              CarMessage.__str__(i)
        else:
          print('不存在%s这种车型'%(type))
 
 
      elif choice == '3':
        break
      else:
        print('请输入正确选项\n')
  def edit(self):  #更改车辆信息
    num= input('请输入车牌号:')
    res = self.check(num)
    if res is not None:
      CarMessage.__str__(res)
      print('信息修改:\n车牌号:%s'%(num))
      res.owner = input('车主:')
      res.clor = input('颜色:')
      while True:
        type = input("车型<小汽车、小卡、中卡和大卡>:")
        if type in ['小汽车', '小卡', '中卡', '大卡']:
          res.type = type
          break
        else:
          print('不存在%s这种车型,请重新输入\n' % (type))
 
      res.connect = input('联系方式:')
      res.money = int(input('余额:'))
      res.entime = datetime.datetime.strptime(input('进入停车场时间(eg:2018-05-21 11:14:10):'),
                          '%Y-%m-%d %H:%M:%S')
      print('信息修改成功...')
 
    else:
      print('没有车牌%s的车辆信息'%(num))
 
p = Park()
p.Menu()

功能三暂时有一些问题,还在学习中。

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

Python 相关文章推荐
python使用socket进行简单网络连接的方法
Apr 29 Python
Python定时执行之Timer用法示例
May 27 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
python配置grpc环境
Jan 01 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Python Django搭建网站流程图解
Jun 13 Python
仅用几行Python代码就能复制她的U盘文件?
Jun 26 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 #Python
Python版名片管理系统
Nov 30 #Python
Python unittest 简单实现参数化的方法
Nov 30 #Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 #Python
python3实现名片管理系统
Nov 29 #Python
Python中fnmatch模块的使用详情
Nov 30 #Python
pycharm 解除默认unittest模式的方法
Nov 30 #Python
You might like
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
Using the TextRange Object
2006/10/14 Javascript
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
python求质数的3种方法
2018/09/28 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
北京天润融通.net面试题笔试题
2012/02/20 面试题
商务日语毕业生自荐信
2013/11/23 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
党的群众路线学习材料
2014/05/16 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
会计岗位职责范本
2015/04/02 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技