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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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()