update bonus doc

This commit is contained in:
2024-05-19 11:20:13 +00:00
parent 8e4ef6a2af
commit 0b66edf683
3 changed files with 53 additions and 3 deletions

View File

@ -80,7 +80,7 @@
## 管理系统
### GUI 前端 *(1%)*
### GUI 前端 *(0.9%)*
提供一个用户友好的图形化前端Qt、Gtk、Web、Tcl/Tk 等均可)。基本要求为:
@ -90,3 +90,33 @@
- (可选)提供更方便的操作,如查询后提供一键订票等。
**注意:** 准备尝试此任务的同学请务必与助教联系并讨论自己的实现思路。
关于用户友好,这里有一些具体的要求:
- 查询车票后可以直接点击购票;
- 尽可能减少用户需要输入的内容;
- 除了对于普通用户友好,对于工作人员也要有友好的操作界面;
对于使用 Web 方式完成的前端包括使用Vue、React、Bootstrap、Electron 等框架),需要满足以下要求:
- 在不同电脑上应该可以同时运行多个前端(网页)并连接到同一后端(服务器),不会相互干扰,模拟现实情况下多用户场景;
- Web服务崩溃不能影响后端数据服务的正常运行
- 设计合理的方式来关闭或重启Web前端服务器或后端数据服务器而不是手动 kill 进程或者 Ctrl+C并保证处理完成已接收到的指令完成数据的保存。可以参考 `nginx -s restart`
- ~~不得使用 TesutoHime 作为模板~~
### 守护进程 *(0.1%)*
完成此任务需要先完成前置任务 GUI前端。
对于服务器来说,保证服务的稳定性是非常重要的。
在现代的linux系统中可以很容易地使用 systemd 等工具来管理服务,完成开机自动启动、崩溃自动重启、定时执行等任务。
在本任务中,你需要通过两个途径实现下面的几个功能:
- 在同一个数据目录下,能且仅能运行一个程序实例;
- 当程序崩溃时,能自动重启;
- 接受信号,如 `SIGTERM` 时,能够优雅关闭当前的程序实例。
途径分别是:
1. 在现代的linux中已经有一些工具发行版相关为我们提供了相关功能如 systemd。为你的程序编写 systemd service 文件,完成上面的功能。你也可以考虑使用其他的工具。
2. 手动实现一个简单的守护进程。参考 `fork` 等系统调用。