JayYoung2021 / booking-lite

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

booking-lite

简介

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

得益于前后端分离的设计,使用 REST API 可以更好地利用 HTTP 的请求方法、响应状态码等特性,降低了耦合度,增强了内聚度。

高覆盖的单元测试

存疑。

后端文档

详见 README-SERVER.md

前端文档

详见 README-CLIENT.md

API 文档

以默认配置为例,详见

  • Swagger: http://127.0.0.1:8000/docs#/
  • Redoc: http://127.0.0.1:8000/redoc

About


Languages

Language:Python 100.0%