[toc]
English: README-EN
整体架构: 尝试着使用了 MVC 的思想, Model 里面存放数据结构, View 里面存放显示系统, Controller 里面存放控制, 与数据库交流的所有信息.
登录: 把用户的 id 当作登录使用的 token.
订单的有效性: 在每个订单中, status = 1 代表这个订单是有效的, status = 0 代表这个订单是无效的(可能是过期的或者是被取消的), 取消订单就是意味着 set status = 0;
ID 分配: 客户和员工的 id 的分配为: id < 10000 为员工 id, id > 10000 为客户 id.
订单管理进程: 有一个守护进程 Book.bookd()
是用来作为监视房间状态的, 检查房间是否入住或者过期, 食物订单是否有效.
用户进入系统之后, 选择身份是员工还是客户, 可以进行选择是登录还是注册.
员工的功能有:
- 根据房间类型查找房间是状态(是有入住, 或者是空房).
- 根据房间 ID 查看房间状态,
- 查看所有现在已经入住的房间,
- 查看所有现在为空的房间,
- 查看所有预定的食物,
- 查看所有被预定的房间,
- 查看所有现有的食物.
客户的功能有:
- 根据房间类型预定房间,
- 根据房间 ID 预定房间,
- 预定从今天开始 3 天之内的食物,
- 修改隐私信息,
- 取消未入住的房间,
- 取消未到来的食物,
- 查看自己的房间订单信息,
- 查看自己的食物订单信息,
根据系统提示选择对应的序号进行相应的功能, 需要注意的是, 点菜的时候需要输入菜名而不是序号.
总共有 6 张表, 分别是:
-
stuff: 员工信息表
- id:
- name
- password
- telenumber
- UPDATED_TIME: 员工注册的时间点
-
guest: 客户信息表
- id
- name
- real name
- password
- telenumber
- passportId
- UPDATED_TIME: 客户注册的时间点
-
room: 房间信息表
- id: 房间 id, 后两位表示房间类型, 前两位表示房间楼层
- type: 房间类型
- status: 这个房间现在的状态.
-
food: 食物信息表
- id: 食物 id
- name: 食物名字
- food_time: 是一个集合, 从 1 到 7, 代表着星期几
- chef: 厨师名字
-
book_room: 房间订单
- id: 订单 id
- room_id: 房间 id
- guest_id: 客户 id
- start_time: 房间的开始时间
- duration: 房间的进行时间
- status: 表示这个订单的状态, 0 表示已经失效, 1 表示正在进行.
- order_time: 当下的时间点.
-
book_food: 食物订单
- id: 订单 id
- food_name: 食物名称
- guest_id: 客户 id
- food_time: 食物的供应时间
- status: 表示这个订单的状态, 0 表示已经失效, 1 表示正在进行.
- order_time: 当下的时间点.
Guest books room / food will generate raw information in book_room / book_food. Stuff can check book_room / book_food to know every room / food information.
初始的员工账户:
username
: "init_stuff",
password
: "init_stuff".
初始的客户账号:
username
: "init_guest",
password
: "init_guest".
在Controller.ENV
中填写本地数据库的 userName, passWord, DataBaseURL, 该系统会自动进行数据库初始化.