python实现停车场管理系统

简介: python实现停车场管理系统

需求


停车场管理系统:若车辆到达,则显示汽车在停车场内或便道上的停车位置:若车辆离去,则显示汽车在停车场内停留的时间和应缴纳的费用,在便道停留不收费。

基本要求:

(1)要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息,汽车牌照号码及到达或离去的时刻:

(2)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理;

(3)栈以顺序结构实现,队列以链表实现。


代码


1. # -*- coding : utf-8 -*-
2. # @Author :shangyi
3. # @File : Text3.1.py
4. # @Software : PyCharm
5. import datetime
6. 
7. #存放进停车场的车牌和进入时间
8. idtime = {}
9. 
10. #存放进停车场外面通道的车牌和进入时间
11. idtime1 = {}
12. 
13. #用队列模拟停车场外便道
14. class Head:
15. def __init__(self):
16.         self.left = None
17.         self.right = None
18. 
19. 
20. class Node:
21. def __init__(self, value):
22.         self.value = value
23.         self.next = None
24. 
25. 
26. class Queue:
27. def __init__(self):
28. # 初始化节点
29.         self.head = Head()
30. 
31. def enqueue(self, value):
32. # 插入元素,先新建一个结点
33.         newnode = Node(value)
34.         p = self.head
35. if p.right:
36. # 如果head结点的右边不为None
37. # 说明队列中已经有元素了
38. 
39.             temp = p.right
40.             p.right = newnode
41.             temp.next = newnode
42. else:
43. # 队列为空,插入第一个元素
44.             p.right = newnode
45.             p.left = newnode
46. 
47. def dequeue(self):
48.         p = self.head
49. if p.left and (p.left == p.right):
50. # 这说明队列中已经有元素
51. # 但是这是最后一个元素
52.             temp = p.left
53.             p.left = p.right = None
54. return temp.value
55. elif p.left and (p.left != p.right):
56. # 说明队列中有元素,而且不止一个
57.             temp = p.left
58.             p.left = temp.next
59. return temp.value
60. 
61. else:
62. # 队列为空,抛出查询错误
63. raise LookupError('queue is empty')
64. 
65. def is_empty(self):
66. if self.head.left:
67. return False
68. else:
69. return True
70. 
71. def top(self):
72. # 查询目前队列中最早入队的元素
73. if self.head.left:
74. return self.head.left.value
75. else:
76. raise LookupError('queue is empty')
77. 
78. # 定义车辆
79. class car:
80. #车牌
81.     licensePlate = ""
82. #空余车位
83.     free_parking = 2
84. #通道空余位置
85.     free_site = 2
86. #用户选择
87. def user(self):
88. print('欢迎使用该停车系统:输入1停车,2离开,3退出')
89.         a = int(input())
90. return a
91. 
92. def entering(self):
93. 
94. if(car.free_parking<=0):
95. print("车位已满,请到在通道等候!")
96. if (car.free_site <= 0):
97. print("通道区已满,请误进入")
98. return 0,0
99. else:
100.                 car.licensePlate = input("请输入你的车牌号:")
101.                 car.free_site-=1
102. 
103.                 enter_time_hour = datetime.datetime.now().hour
104.                 enter_idtime = {car.licensePlate: enter_time_hour}
105. 
106. # 判断车辆是否已经在停车场中
107. while car.licensePlate in idtime1:
108. print("你输入的车牌有误,该车辆已经在停车场通道中!")
109.                     car.licensePlate = input("请输入你的车牌号:")
110. # 把车辆信息输入到车辆列表内
111. else:
112.                     idtime1.update(enter_idtime)
113. #print(idtime1)
114. 
115. # 返回1,说明可以进入停车场外通道
116. id = car.licensePlate
117. return 1,id
118. else:
119.             car.licensePlate = input("请输入你的车牌号:")
120. #获取当前电脑日期和时间
121. # enter_time_date = datetime.datetime.now().day
122.             enter_time_hour = datetime.datetime.now().hour
123.             enter_idtime = {car.licensePlate:enter_time_hour}
124. 
125. #判断车辆是否已经在停车场中
126. while car.licensePlate in idtime:
127. print("你输入的车牌有误,该车辆已经在停车场中!")
128.                 car.licensePlate = input("请输入你的车牌号:")
129. #把车辆信息输入到车辆列表内
130. else:
131.                 idtime.update(enter_idtime)
132. #print(idtime)
133. #空闲车位减少一个
134.             car.free_parking -= 1
135. #返回2,成功停车
136. id = car.licensePlate
137. return 2,id
138. 
139. #离开方法
140. def leaving(self):
141.         car.licensePlate = input("请输入你的车牌号:")
142. #不要定义在循环里面
143.         leave_time_date = datetime.datetime.now().day
144.         leave_time_hour = datetime.datetime.now().hour
145. 
146. print(leave_time_date,"日",leave_time_hour,"时离开")
147. 
148. if car.licensePlate in idtime: #是否在停车场
149. return 1,car.licensePlate,leave_time_hour
150. elif car.licensePlate in idtime1: #是否在停车通道
151. return 2,car.licensePlate
152. else:
153. print("该车辆不在该停车场或通道中,请重新输入你的车牌,或者退出程序!")
154. return 0,car.licensePlate
155. 
156. 
157. if __name__ == '__main__':
158. # 用栈模拟停车场
159.     parking_lot = []
160. 
161. # 停车通道
162.     queue = Queue()
163. 
164. # 主程序
165. while True:
166.         choose = car().user()
167. if choose == 1:
168.             enter = car().entering()
169. if(enter[0]==1):
170. print("停入停车场外通道")
171.                 queue.enqueue(enter[1])
172. # print(queue.top())
173. elif(enter[0]==2):
174. print("成功停车")
175.                 parking_lot.append(enter[1])
176. print("在停车辆:",parking_lot)
177. else:
178. print("请去往其他停车场")
179. 
180. elif choose == 2:
181.             leave = car().leaving()
182. # 在停车场,按照栈的先进后出,计算停车费
183. if(leave[0]==1):
184.                 temp=parking_lot[-1]
185. print("在停车辆:",parking_lot)
186. if leave[1] == temp:
187. print("停车费:",(leave[2]-idtime[car.licensePlate])*5+5,"元")
188.                     idtime.__delitem__(car.licensePlate)
189.                     car.free_parking+=1
190.                     parking_lot.pop()
191. print("成功离开停车场")
192. else:
193. print("堵车了,无法离开")
194. # 在通道,按照队列的先进先出
195. elif(leave[0]==2):
196.                 temp = queue.top()
197. if leave[1] == temp:
198.                     idtime1.__delitem__(car.licensePlate)
199.                     car.free_site+=1
200.                     queue.dequeue()
201. print("成功离开通道")
202. else:
203. print("堵车了,无法离开")
204. 
205. else:
206. print("欢迎下次使用!")
207. break
目录
相关文章
|
2月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
2月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
3月前
|
机器学习/深度学习 数据可视化 搜索推荐
基于python的汽车数据可视化、推荐及预测系统
本研究围绕汽车数据可视化、推荐及预测系统展开,结合大数据与人工智能技术,旨在提升用户体验与市场竞争力。内容涵盖研究背景、意义、相关技术如 Python、ECharts、协同过滤及随机森林回归等,探讨如何挖掘汽车数据价值,实现个性化推荐与智能预测,为汽车行业智能化发展提供支持。
|
3月前
|
存储 安全 数据管理
基于python的在线考试系统
本系统基于Python开发,旨在通过信息化手段提升各行业数据管理效率。系统具备良好的安全性、稳定性及可扩展性,支持数据高效处理与决策支持,适用于教育、医疗、旅游等多个领域,助力办公自动化与科学化管理,显著提升工作效率并降低错误率。
|
3月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
2月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。

推荐镜像

更多