python实现停车场管理系统研究背景,基于python的停车场管理系统

  python实现停车场管理系统研究背景,基于python的停车场管理系统

  本文主要详细介绍用python实现的停车场管理系统。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  一、要求二。代码2.1初始化模块__init__.py2.2主程序模块main.py2.3停车管理模块ParkingManagementSystem.py2.4汽车元素模块Car.py三、运行3.1浏览所有信息3.2查询车辆信息3.3输入入库车辆3.4删除出库车辆3.5退出管理系统。本例分享python实现停车管理系统的具体代码,供大家参考。具体情况如下

  

目录

  1.设计一个停车位数量固定的停车场的管理系统;

  2.停车信息包括:编号、车牌号(如有)、类型、车位号、使用日期、入场时间、单价、费用、经手人。

  3.停车信息存储在数据文件中,程序至少实现功能:浏览、查询、入口、出口、导出、计费、系统菜单。

  4.按照面向对象的编程方法定义类:选择合适的数据存储结构,定义相应的数据元素类,选择合理的操作方法定义相应的算法实现类。

  

一、需求

  这个系统由四部分组成(4个py文件,其余为测试数据文件),放在一个文件夹中形成一个模块,如下图所示。

  

二、代码

  __init__的功能。py模块:这里的代码是在导入的时候自动执行初始化包。

  允许从package_name导入的模块数*

  _ _ all _ _=[ parking management system , Car]

  

2.1 初始化模块__init__.py

  #编码=utf-8

  从停车管理系统导入*

  来自汽车进口*

  定义主():

  #创建停车信息管理系统对象

  p=ParkingManagementSystem()

  #创建一个停车对象

  汽车=汽车()

  而True:

  打印()

  打印( * * * * * * * * * * * * * * * * * *欢迎来到:停车信息管理系统* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

  打印(-

  打印(-

  打印(-

  打印(-

  打印(-

  尝试:

  #接收输入指令

  Cmd=int(input(请输入指令编号:))

  # 1.浏览所有信息

  如果cmd==1:

  p.show _所有信息()

  # 2.查询车辆信息

  elif cmd==2:

  而True:

  打印(- 1。按车牌号搜索)

  打印(-)

                  print("------ 3.按使用日期查找 -----")

                      print("------ 4.按经手人查找 ------")

                      print("------ 5.查询历史记录 ------")

                      print("------ 6.返回上级菜单 ------")

                      query = int(input("请输入指令数字:"))

                      # 1.按车牌号查找

                      if query == 1:

                          query_results = p.query_by_car_number()

                          # 判定查询结果是否为空(False),是则不保存

                          if query_results:

                              decide = input("是否需要保存查询结果(输入:yes/no):")

                              if decide == "yes":

                                  p.save_query_results_to_file(query_results)

                      # 2.按车类型查找

                      elif query == 2:

                          query_results = p.query_by_car_type()

                          # 判定查询结果是否为空(False),是则不保存

                          if query_results:

                              decide = input("是否需要保存查询结果(输入:yes/no):")

                              if decide == "yes":

                                  p.save_query_results_to_file(query_results)

                      # 3.按使用日期查找

                      elif query == 3:

                          query_results = p.query_by_date()

                          # 判定查询结果是否为空(False),是则不保存

                          if query_results:

                              decide = input("是否需要保存查询结果(输入:yes/no):")

                              if decide == "yes":

                                  p.save_query_results_to_file(query_results)

                      # 4.按经手人查找

                      elif query == 4:

                          query_results = p.query_by_handler()

                          # 判定查询结果是否为空(False),是则不保存

                          if query_results:

                              decide = input("是否需要保存查询结果(输入:yes/no):")

                              if decide == "yes":

                                  p.save_query_results_to_file(query_results)

                      # 5.查询历史记录

                      elif query == 5:

                          p.query_history_results()

                      else:

                          break

              # 3.录入车辆信息

              elif cmd == 3:

                  # 接收停车车辆信息

                  parking_info = car.get_parking_info()

                  p.parking(parking_info)

              # 4.删除车辆信息

              elif cmd == 4:

                  p.driving_out()

              # 5.退出管理系统

              else:

                  # 保存停车信息的最大编号 id

                  car.save_id_to_file()

                  print("感谢使用停车场管理系统,再见!")

                  break

          except Exception as result:

              # 保存停车信息的最大编号 id

              car.save_id_to_file()

              # 保存停车信息

              p.save_to_file()

              print("感谢使用停车场管理系统,再见!")

              break

  if __name__ == "__main__":

      main()

  

  

2.3 停车管理模块ParkingManagementSystem.py

  

# coding = utf-8

  # 模块中的__all__属性:可以规定 模块中 from module_name import * 只能够导入的一些类、变量、函数名

  __all__ = [ParkingManagementSystem]

  import time

  class ParkingManagementSystem(object):

      """算法实现类:停车场信息管理系统"""

      def __init__(self):

          """对停车信息进行初始化"""

          # 测试时使用

          print("ParkingManagementSystem的__init__函数被调用")

          # 车位编号存放列表

          self.car_stall = []

          self.truck_stall = []

          # 所有停车信息存放列表

          self.total_info = []

          # 读取停车场数据

          try:

              with open("parking_data.txt", "r") as file:

                  for line in file.readlines():

                      # 将字符串转化为字典,遇到空行时跳过,防止eval()函数转化空行或者空字符时报错

                      try:

                          info_dict = eval(line)

                          self.total_info.append(info_dict)

                          if info_dict["car_type"] == "car":

                              self.car_stall.append(info_dict["p_number"])

                          else:

                              self.truck_stall.append(info_dict["p_number"])

                      except Exception as result:

                          continue

          except Exception as result:

              print("停车信息数据文件不存在!")

          # 测试时使用

          # print(self.car_stall)

          # print(self.truck_stall)

          # print(self.total_info)

      def parking(self, parking_info):

          """入场停车:传入停车信息,在空的车位中增加车辆信息,更新数据文件"""

          # 判断传入停车信息是否为 None

          # 需要完整代码请在文章文章底部添加微信,付费咨询

          passs

      def show_all_information(self):

          """输出所有停车场信息,按车位使用情况分类,同一分类中按编号升序排序"""

          # 初始化刷新数据

          # 需要完整代码请在文章文章底部添加微信,付费咨询

          pass

      def query_by_car_number(self):

          """按车牌号查找停车信息"""

          # 接收车牌编号

          # 需要完整代码请在文章文章底部添加微信,付费咨询

          pass

      def query_by_car_type(self):

          """按车类型查找停车信息"""

          # 接受车类型

          # 需要完整代码请在文章文章底部添加微信,付费咨询

         pass

      def query_by_date(self):

          """按使用日期查找停车信息"""

          # 接收查询日期

          date = input("请输入查询日期(格式参考:1998-06-06):")

          # 创建列表保存查询结果

          # 需要完整代码请在文章文章底部添加微信,付费咨询

         pass

      def query_by_handler(self):

          """按经手人查找停车信息"""

          # 接收经手人姓名

          handler = input("请输入经手人姓名:")

          # 需要完整代码请在文章文章底部添加微信,付费咨询

          pass

      def query_history_results(self):

          """查询停车场历史记录"""

          # 查询输入格式化

          # 需要完整代码请在文章文章底部添加微信,付费咨询

          print("id  car_type  p_number  car_number   handler   price    cost     entrance_time            exit_time")

      def driving_out(self):

          """出场:删除对应车位的车辆信息,更新数据文件"""

          # 接收出场时间

          exit_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

          # 接收车牌号

          car_number = input("请输入出场车辆车牌号(示例:京A88888):")

          # 遍历总停车信息列表,找到该条数据并将其移除列表

          pass

      def charging(self, info_dict):

          """计费: 传入停车信息,按小时计费"""

          # 接收车辆停车信息

          # 将时间由字符串格式转化为数字格式,以秒为单位

          exit_time = time.mktime(time.strptime(info_dict["exit_time"], "%Y-%m-%d %H:%M:%S"))

          entrance_time = time.mktime(time.strptime(info_dict["entrance_time"], "%Y-%m-%d %H:%M:%S"))

          # 计算停车时间,单位转化为小时

          pass

      def save_to_file(self):

          """将停车数据保存到文件"""

          # 打开数据文件,保存数据

          with open("parking_data.txt", "w") as file:

              for info_dict in self.total_info:

                  # 将字典转化为字符串保存

                  file.write(str(info_dict))

                  file.write("\n")

      def save_history_to_file(self, info_dict):

          """将已完成出场停车数据保存到文件"""

          # 打开数据文件,保存数据

          with open("history_data.txt", "a") as file:

              # 将字典转化为字符串保存

              file.write(str(info_dict))

              file.write("\n")

      def save_query_results_to_file(self, query_results):

          """将查询结果保存到指定数据文件"""

          # 接收输入文件名

          file_name = input("请输入要保存数据的文件名(格式:xxx.txt ):")

          with open(file_name, "a") as file:

              # 将数据转化为字符串保存

              file.write(str(query_results))

              file.write("\n")

          print("查询结果保存成功,文件名为:%s" % file_name)

      def print_func(self, info_dict, query_results):

          """格式化打印输出查询结果"""

          # 需要完整代码请在文章文章底部添加微信,付费咨询

          pass

  

  

2.4 车元素模块Car.py

  

# coding = utf-8

  # 模块中的__all__属性:可以规定 模块中 from module_name import * 只能够导入的一些类、变量、函数名

  __all__ = [Car]

  import time

  from ParkingManagementSystem import *

  class Car(ParkingManagementSystem):

      """数据元素类:定义一个关于车的类"""

      def __init__(self):

          """对车的属性进行初始化"""

          # 测试时使用

          print("Car 中__init__调用成功!")

          # 设定初始出场时间和消费金额为空

          self.exit_time = None

          self.cost = None

          # 初始编号 id 为 1

          self.id = 1

          # 读取文件中编号

          try:

              with open("count_id.txt", "r") as file:

                  self.id = int(file.read())

          except Exception as result:

              pass

          # 测试时使用

          print(self.id)

      def get_parking_info(self):

          """获取车辆停车信息"""

          # 调用父类中的属性

          ParkingManagementSystem.__init__(self)

          car_type = input("请输入车类型(car 或 truck):")

          # 判断车位是否已满,如已满则提示客户去其他停车场,如未满则分配一个车位给客户

          if car_type == "car":

              # 如车位已满,提醒客户去其他停车场,car类型的车位设定为100个

              if len(self.car_stall) >= 100:

                  print("小汽车车位已满,请去其他停车场。")

                  return

              # 如还有车位,则分配一个车位给客户

              else:

                  # 不同车型不同价位

                  price = 10

                  # 车位编号为:1-100

                  for i in range(100):

                      # 分配空着的车位编号

                      if i + 1 not in self.car_stall:

                          p_number = i + 1

                          self.car_stall.append(p_number)

                          print(self.car_stall)

                          break

          elif car_type == "truck":

              # 如车位已满,提醒客户去其他停车场,truck类型的车位设定为50个

              if len(self.truck_stall) >= 50:

                  print("货车车位已满,请去其他停车场。")

                  return

              # 如还有车位,则分配一个车位给客户

              else:

                  # 不同车型不同价位

                  price = 20

                  # 车位编号为:101-150

                  for i in range(100, 150):

                      # 分配空着的车位编号

                      if i + 1 not in self.truck_stall:

                          p_number = i + 1

                          self.truck_stall.append(p_number)

                          print(self.truck_stall)

                          break

          else:

              print("本停车场没有适合该车型的停车位,请重新输入!")

              return

          # 接收车位编号

          car_number = input("请输入车牌号(示例:京A88888):")

          # 接收经手人姓名

          handler = input("请输入经手人姓名:")

          # 接收入场时间

          entrance_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

          # 接收使用日期

          date = time.strftime("%Y-%m-%d", time.localtime())

          # 编号 id 自动增长

          self.id += 1

          # 保存该条停车信息到字典

          parking_info = {

              "id": self.id,

              "car_type": car_type,

              "car_number": car_number,

              "handler": handler,

              "p_number": p_number,

              "date": date,

              "entrance_time": entrance_time,

              "exit_time": self.exit_time,

              "price": price,

              "cost": self.cost

          }

          print(parking_info)

          # 返回车辆停车信息

          return parking_info

      def save_id_to_file(self):

          """保存停车信息的最大编号 id ,作为下次运行id增长的基础"""

          with open("count_id.txt", "w") as file:

              file.write(str(self.id))

  

  

三、运行测试

  

  

3.1 浏览所有信息

  

  

  

3.2 查询车辆信息

  3.2.1 按车牌号查找

  

  3.2.2 按车类型查找

  

  3.2.3 按使用日期查找

  

  3.2.4 按经手人查找

  

  3.2.5 查询历史记录

  

  

  

3.3 入场车辆录入

  

  

  

3.4 出场车辆删除

  

  

  

3.5 退出管理系统

  

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: