booking-lite 是一套简易的、前后端完整的酒店管理系统解决方案。
安装 Python
环境(version:3.7+)
打开命令行工具,键入以下命令:
git clone https://github.com/JayYoung2021/booking-lite.git back-end
进入项目目录,调用环境中的 pip 来安装依赖包:
cd back-end && pip install -r requirements.txt
为了方便快速上手,后端仅使用无需额外部署的 Sqlite3
数据库。
一切就绪后,再次从命令行中执行
uvicorn main:app --reload
如果一切顺利,您将在命令行中看到项目成功运行的信息。如果您没有修改代码,程序将默认在本地启动一个端口号为 5000 的端口用来监听请求。此时,我们访问 http://127.0.0.1:8000/docs#/
,将跳转到 Swagger
页面;访问 http://127.0.0.1:8000/redoc
,将跳转到 Redoc
页面。
安装 Node.js
(version:18.12.1+)
打开命令行工具,键入以下命令:
git clone https://github.com/Akaid0127/hotelms.git front-end
进入工程项目根目录后,键入以下命令:
cd front-end && npm install
因为前端是基于 Node.js
开发的,那么默认的本地服务启动的命令:
npm run serve
- 客房标准制定,包括房间号,房间面积,床位数量,住房单价
- 基本信息输入
- 剩余客房信息的查询
- 订房信息输入,包括客房编号,客房单价,顾客姓名,顾客身份证号码,顾客手机号,入住日期
- 订房信息的修改,增加,查询
- 客房居住费用结算的实现
- 系统的目标用户是酒店管理人员,管理人员可以管理包括自身的所有数据,但是他们之间的操作应有一定的限制。
- 房间和客户是所有数据的基础,两者通过订单产生联系。根据上述分析,管理人员可以管理这三者的数据,但是客户作为特殊的存在,管理人员对其操作同样应有限制。
- 密码使用哈希函数 bcrypt 加密,用于防止数据库泄露
- 后端登录使用 JWT,前端使用 SameSite cookies 中的 Lax,用于防止 CSRF 攻击
- 对数据库的操作使用 ORM 框架,用于防止 SQL 注入
- 后端默认使用 Python 的
html.escape
函数解析网页,用于防止 XSS 攻击
前后端分离最突出的优点是,假如将后端更换到其他框架甚至语言,前端都可以保持不变,反之亦是如此。
其次,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染,比如 JinJa2 等。服务端渲染的好处在于可以比较好地支持 SEO,但酒店管理系统作为内部使用的 CMS 中的一种,SEO 并不重要。因此,在前后端分离的情况下,前端用最熟悉的 Vue 写 JavaScript 和 CSS,而后端只需要关注自己的 API 即可。
得益于前后端分离的设计,使用 REST API 可以更好地利用 HTTP 的请求方法、响应状态码等特性,降低了耦合度,增强了内聚度。
存疑。
详见 README-SERVER.md
详见 README-CLIENT.md
以默认配置为例,详见
Swagger
:http://127.0.0.1:8000/docs#/
Redoc
:http://127.0.0.1:8000/redoc