|
|
|
|
import os
|
|
|
|
|
import logging
|
|
|
|
|
import re # 正则表达式
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
# Sub module
|
|
|
|
|
from Car import Car, ParkManage, Model, Color
|
|
|
|
|
from User import User
|
|
|
|
|
from IO import *
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# from GUI import * # TODO
|
|
|
|
|
|
|
|
|
|
def menu_select(isAdmin, park):
|
|
|
|
|
"""显示菜单,返回str型操作码"""
|
|
|
|
|
if isAdmin == True:
|
|
|
|
|
# 管理员模式
|
|
|
|
|
while True:
|
|
|
|
|
os.system("cls")
|
|
|
|
|
print("""
|
|
|
|
|
***欢迎使用停车场管理系统***
|
|
|
|
|
## 管理员模式 ##
|
|
|
|
|
|
|
|
|
|
---北京第三区交通委提醒您---
|
|
|
|
|
| 道路千万条,安全第一条 |
|
|
|
|
|
| 行车不规范,亲人两行泪 |
|
|
|
|
|
---------------------------
|
|
|
|
|
本停车场总车位数:%3d 当前空闲车位数:%3d
|
|
|
|
|
|
|
|
|
|
1)停车
|
|
|
|
|
2)取车
|
|
|
|
|
3)显示车辆信息
|
|
|
|
|
4)查询车辆信息
|
|
|
|
|
5)编辑车辆信息
|
|
|
|
|
6)统计车辆信息
|
|
|
|
|
7)从文件加载车辆
|
|
|
|
|
|
|
|
|
|
8)切换至用户模式
|
|
|
|
|
9)关于
|
|
|
|
|
0)退出系统
|
|
|
|
|
""" % (park.max_car, park.max_car - len(park.carlist)))
|
|
|
|
|
c = input("请输入操作码(0~9):")
|
|
|
|
|
if re.match(r'(^\d$)', c):
|
|
|
|
|
if 0 <= int(c) <= 9: # c >= 0 and c <= 9
|
|
|
|
|
return c
|
|
|
|
|
else:
|
|
|
|
|
print("输入错误,请重试!")
|
|
|
|
|
else:
|
|
|
|
|
print("输入错误,请重试!")
|
|
|
|
|
'''
|
|
|
|
|
try:
|
|
|
|
|
c = int(input("请输入操作码(0~8):"))
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logging.exception(e)
|
|
|
|
|
c = -1
|
|
|
|
|
continue
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
elif isAdmin == False:
|
|
|
|
|
# 用户模式
|
|
|
|
|
while True:
|
|
|
|
|
os.system("cls")
|
|
|
|
|
print("""
|
|
|
|
|
***欢迎使用停车场管理系统***
|
|
|
|
|
## 用户模式 ##
|
|
|
|
|
|
|
|
|
|
---北京第三区交通委提醒您---
|
|
|
|
|
| 道路千万条,安全第一条 |
|
|
|
|
|
| 行车不规范,亲人两行泪 |
|
|
|
|
|
---------------------------
|
|
|
|
|
本停车场总车位数:%3d 当前空闲车位数:%3d
|
|
|
|
|
|
|
|
|
|
1)停车
|
|
|
|
|
2)取车
|
|
|
|
|
3)查询车辆信息
|
|
|
|
|
|
|
|
|
|
4)切换至管理员模式
|
|
|
|
|
5)关于
|
|
|
|
|
0)退出系统
|
|
|
|
|
""" % (park.max_car, park.max_car - len(park.carlist)))
|
|
|
|
|
c = input("请输入操作码(0~5):")
|
|
|
|
|
if re.match(r'(^\d$)', c):
|
|
|
|
|
if 0 <= int(c) <= 5: # c >= 0 and c <= 5
|
|
|
|
|
return c
|
|
|
|
|
else:
|
|
|
|
|
print("输入错误,请重试!")
|
|
|
|
|
else:
|
|
|
|
|
print("输入错误,请重试!")
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
try:
|
|
|
|
|
c = int(input("请输入操作码(0~5):"))
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print('请输入正确的操作码!')
|
|
|
|
|
logging.exception(e)
|
|
|
|
|
c = -1
|
|
|
|
|
continue
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
park = ParkManage() # 建立并初始化车库
|
|
|
|
|
user = User() # 初始化用户
|
|
|
|
|
park = load_from_file(park, filename="cars.csv")[0] # 从文件初始化车辆信息
|
|
|
|
|
|
|
|
|
|
# user.login()
|
|
|
|
|
# isAdmin = True # TODO DEBUG 测试用
|
|
|
|
|
isAdmin = False # 程序启动时直接进入用户模式
|
|
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
choice = menu_select(isAdmin, park=park)
|
|
|
|
|
if not isAdmin:
|
|
|
|
|
# 用户
|
|
|
|
|
if choice == '0':
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
write_to_file(park, filename="cars.csv") # 将车辆信息写入文件
|
|
|
|
|
print("Goodbye.\nHave a nice day!\n期待与您下一次的相遇! \n\n系统3秒后自动关闭...")
|
|
|
|
|
time.sleep(3)
|
|
|
|
|
exit(0)
|
|
|
|
|
elif choice == '1': # 停车
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
park.park(isAdmin)
|
|
|
|
|
elif choice == '2': # 取车
|
|
|
|
|
os.system("cls")
|
|
|
|
|
park.pickup()
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '3': # 查车
|
|
|
|
|
os.system("cls")
|
|
|
|
|
park.inquire()
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '4': # 切换到管理员模式
|
|
|
|
|
# isAdmin = True # DEBUG
|
|
|
|
|
os.system("cls")
|
|
|
|
|
isAdmin = user.login() # 管理员登录
|
|
|
|
|
continue
|
|
|
|
|
elif choice == '5': # 关于
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
print("""
|
|
|
|
|
停车场管理系统
|
|
|
|
|
Version:0.6.0
|
|
|
|
|
Copyright by Hzj.
|
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
|
|
""")
|
|
|
|
|
os.system("pause")
|
|
|
|
|
else:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
elif isAdmin:
|
|
|
|
|
# 管理员
|
|
|
|
|
if choice == '0': # 退出
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
write_to_file(park, filename="cars.csv") # 将车辆信息写入文件
|
|
|
|
|
print("Goodbye.\nHave a nice day!\n期待与您下一次的相遇! \n\n系统3秒后自动关闭...")
|
|
|
|
|
time.sleep(3)
|
|
|
|
|
exit(0)
|
|
|
|
|
elif choice == '1': # 停车
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
park.park(isAdmin)
|
|
|
|
|
elif choice == '2': # 取车
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
park.pickup()
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '3': # 显示车辆信息
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
park.display()
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '4': # 查询车辆信息
|
|
|
|
|
os.system("cls")
|
|
|
|
|
park.inquire()
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '5': # 编辑车辆信息
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
park.edit()
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '6': # 统计车辆信息
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
park.statistics()
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '7': # 从文件加载车辆
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
park = load_new_file(park=park)
|
|
|
|
|
os.system("pause")
|
|
|
|
|
elif choice == '8': # 切换到用户模式
|
|
|
|
|
isAdmin = False
|
|
|
|
|
elif choice == '9': # 关于
|
|
|
|
|
os.system("cls") # 清屏
|
|
|
|
|
print("""
|
|
|
|
|
停车场管理系统
|
|
|
|
|
Version:0.6.0
|
|
|
|
|
Copyright by Hzj.
|
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
|
|
""")
|
|
|
|
|
os.system("pause")
|
|
|
|
|
else:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
main()
|