You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
6.7 KiB

6 months ago
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()