迎新海报系统设计

目录

1. 综述

为了满足校方对于迎新的要求,我们社团需要设计一个可以让新生打开的系统。此系统应该 实现以下功能:

  • 实现 针对每个学生都可以生成一个专属海报。
  • 可以 让学生下载自己的专属海报
  • 允许 学生自行选择手机端和电脑端生成海报。

这些功能实现起来不是很难,但是由于工期较短,因此具有一定挑战性。

2. 第一版

这一版的作者是软件部部长。她使用java搭配网页技术实现了以上的基础目标,并为后面的 改版提供了基础代码。

2.1. 技术鉴赏

由于作者没有详细学习过java因此这里将会简单概括。

软件部部长实现的服务器技术栈如下:

  • java-Servlet :一个http服务器框架,使用路由方式实现对请求的分发。
  • web技术 :同时包含html、css、js,这些技术基本打包在一起。

2.2. 优势

web相关的代码质量较好,网页几乎可以达到启动服务器即可按照预设目标工作的要求。

java-servlet部分没有什么好说的。这是一个较为成熟的技术选择,servlet网络服务器性 能优异,并且编程简单。这一部分的软件选型是可行的,甚至是优秀的。

2.3. 劣势

尽管java-servlet的软件选择是一个亮点,但是存在没有考虑组员实际上不会java的现实。 导致后续维护困难。

web相关代码尽管有可移植性,但是不合适的地方也是有的,比如,把所有的html和css代码 打包在一起,甚至部分有内联的js,不具备模块化的特性,不好扩展。

另外,其为了方便运行服务,选择使用powershell脚本处理编译部署等等一系列流程,但也 正是由于这些脚本的存在,导致下一版开发时无法直接复用项目中的pwsh代码。

3. 第二版

这一版的作者是我,维修部部长。我做的主要工作是把这些代码向quart框架迁移。并完善 局域网连接能力。

3.1. 技术栈

本版本的主要改变就是把java代码更改为python代码进行部署。

  • python-quart 使用异步框架保证性能的同时使用python保证快速开发。
  • 浏览器端js 使用qrcodejs来实现二维码渲染,

3.2. 优势

使用python开发可以借助其强大的跨平台能力以及灵活的语法来快速迭代。

这个版本实现了一个基于网页URL的二维码生成,以此具备了本地扫码的能力。

3.3. 劣势

quart的性能相比起servlet框架实际上性能有所退步。

这一版尽管实现了扫码功能,但是问题在于,这个功能必须要新生扫码,新生明显是没有时 间干这事的。

4. 第三版

这一版的作者是量化部部长,他可以说是打通最后一公里的贡献,踢开了成功的临门一脚。 却也埋下了隐患。

4.1. 技术栈

几乎不变,但是增加了使用cpolar部署的内网穿透服务,以及针对现场环境部署的一键运行 脚本。

4.2. 优势

成功解决了新生不愿意连热点的问题,同时现场一键部署脚本的出现很好的解决了运行问题。

4.3. 劣势

为了实现以上效果,其使用AI编写了一系列运行用脚本,这些脚本不随项目一同打包,因此 无法直接使用,同时,由于脚本的分散,我们被迫维护了两个版本的代码。

一键部署脚本不具有可移植性。

5. 总结

我们成功的实现了一个简单的http服务器,并且维护其坚持过了新生报到的两天,其中犯下 了不少代码组织或软件架构上的错误,但是依旧有可取之处。

第一条经验,对于不需要长时间运行的所谓“一次性”软件,在编写时可以使用简单的,可 以快速迭代的编程语言。类似代码项目由于需求方的变更速度较快,未来维护工作量小,可 以使用尽可能简单,灵活的编程方式来完成。在这种项目要求下,软件不需要性能,安全, 正确,只需要完成工作即可。

第二条经验,不要把项目的运行的关键寄托在几个没有跨平台能力的脚本上,如果环境变更, 而脚本无法临场应变便无法完成其设计的使命。比如第一版中为了让应用可以快捷运行,使 用了powershell脚本来运行,这导致我的Linux机器无法运行。以及第三版中使用cmd编写的 运行脚本,同理。

日期: 2026-09-06 日 00:00

作者: 维修部部长

Created: 2026-09-06 日 22:17