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
目录
相关文章
|
20天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
219 55
|
2月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品安全追溯系统的深度学习模型
使用Python实现智能食品安全追溯系统的深度学习模型
71 4
|
9天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
102 66
|
30天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
155 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
2天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
11天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
42 5
|
1月前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习的果蔬识别系统实现
果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。
39 4
基于Python深度学习的果蔬识别系统实现
|
3月前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
148 61
|
2月前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
74 2
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
2月前
|
Python
Python之音乐专辑管理系统
音乐专辑管理系统是一款用于管理和维护音乐专辑信息的应用程序,支持添加、删除、修改和查询专辑详情(如专辑名、艺术家、发行日期及曲目列表)。系统运行需Python 3.x环境,硬件要求较低,适合个人及小型团队使用。
64 4