vault backup: 2026-04-25 14:43:39

This commit is contained in:
2026-04-25 14:43:39 +08:00
parent f05be3890e
commit 70a6e3d4ea
+129
View File
@@ -0,0 +1,129 @@
# 项目概述
👋
本作业要求实现一个在线学习管理平台的部分内容,涵盖前端与后端两部分。前端基于 React + TypeScript 技术栈构建,后端采用 Koa 开发。系统实现了用户登录认证、工作台数据可视化、课程管理、学生管理及学习总结展示等功能,支持数据的增删改查等操作。
# 二、功能需求
### 1. 登录认证
![](https://cloud-pic.wpsgo.com/dnhJS0pUekpNTlBOUFpsSXJncHJpa3JEWkpaM1ZTLzg4Tys5NWcrZE1kR0h3anJiZ3NYZW9XODBpUWovZ2VjT2w1TnhRZW5jbU4yZ3BCWmEweHgveHY1eXhDaDliV3M2ZU1nMGFZa2s1SzJ6VWNiT1RLVHVkc0hCeHJ5VHczRDZCdFltKzE0M0NMSS9RZEJ4YXVHcjV1UG1IWVBxbkhHUEhVUXNaV2oxRnhRZnlXWEN6NmFlN2lKRU4yaUdGRloxODltOTJXNU5KRm1qSmRrQlFkSm9iYVdKRHc0ZjU3ajhaZTl3Y3hsYjI0L3paZ280YWVNM3NBeUFUdWdCTXR6S1hWNlhrbXJmWDlKVFlDRk9zcWUrSnc9PQ==/attach/object/C3G74ARGAAQHM?)
- 实现用户登录表单(用户名 + 密码),调用后端接口进行认证。
- 未登录状态下访问其他页面自动跳转到登录页。
- 固定测试账号/密码:`admin` / `admin123`
### 2. 工作台(Dashboard)
![](https://cloud-pic.wpsgo.com/dnhJS0pUekpNTlBOUFpsSXJncHJpa3JEWkpaM1ZTLzg4Tys5NWcrZE1kR0h3anJiZ3NYZW9XODBpUWovZ2VjT2w1TnhRZW5jbU4yZ3BCWmEweHgveHY1eXhDaDliV3M2ZU1nMGFZa2s1SzJ6VWNiT1RLVHVkc0hCeHJ5VHczRDZCdFltKzE0M0NMSS9RZEJ4YXVHcjV1UG1IWVBxbkhHUEhVUXNaV2oxRnhRZnlXWEN6NmFlN2lKRU4yaUdGRloxODltOTJXNU5KRm1qSmRrQlFkSm9iYVdKRHc0ZjU3ajhaZTl3Y3hsYjI0L3paZ280YWVNM3NBeUFUdWdCTXR6S1hWNlhrbXJmWDlKVFlDRk9zcWUrSnc9PQ==/attach/object/FFPP6ARGAAACO?)
- 展示 4 个统计卡片:课程总数、学生总数、发布率、活跃率。
- 展示 4 个图表:
- **柱状图**:课程选课人数排行。
- **折线图**:近 7 天学习活跃度(学习人数 + 学习时长)。
- **饼图**:学生状态分布(活跃 / 非活跃)。
- **饼图**:课程分类分布。
### 3. 课程管理
![](https://cloud-pic.wpsgo.com/dnhJS0pUekpNTlBOUFpsSXJncHJpa3JEWkpaM1ZTLzg4Tys5NWcrZE1kR0h3anJiZ3NYZW9XODBpUWovZ2VjT2w1TnhRZW5jbU4yZ3BCWmEweHgveHY1eXhDaDliV3M2ZU1nMGFZa2s1SzJ6VWNiT1RLVHVkc0hCeHJ5VHczRDZCdFltKzE0M0NMSS9RZEJ4YXVHcjV1UG1IWVBxbkhHUEhVUXNaV2oxRnhRZnlXWEN6NmFlN2lKRU4yaUdGRloxODltOTJXNU5KRm1qSmRrQlFkSm9iYVdKRHc0ZjU3ajhaZTl3Y3hsYjI0L3paZ280YWVNM3NBeUFUdWdCTXR6S1hWNlhrbXJmWDlKVFlDRk9zcWUrSnc9PQ==/attach/object/S3WAAAZGAAQBM?)
- 展示课程列表,支持分页(默认 10 条每页,可调整)、按课程名/讲师搜索、按状态和分类筛选。
- 支持选课人数列的服务端排序。
- 支持新增、编辑、删除课程及课程发布/下架状态切换(点击删除的时候出现气泡确认框,其他地方同理)。
### 4. 学生管理
![](https://cloud-pic.wpsgo.com/dnhJS0pUekpNTlBOUFpsSXJncHJpa3JEWkpaM1ZTLzg4Tys5NWcrZE1kR0h3anJiZ3NYZW9XODBpUWovZ2VjT2w1TnhRZW5jbU4yZ3BCWmEweHgveHY1eXhDaDliV3M2ZU1nMGFZa2s1SzJ6VWNiT1RLVHVkc0hCeHJ5VHczRDZCdFltKzE0M0NMSS9RZEJ4YXVHcjV1UG1IWVBxbkhHUEhVUXNaV2oxRnhRZnlXWEN6NmFlN2lKRU4yaUdGRloxODltOTJXNU5KRm1qSmRrQlFkSm9iYVdKRHc0ZjU3ajhaZTl3Y3hsYjI0L3paZ280YWVNM3NBeUFUdWdCTXR6S1hWNlhrbXJmWDlKVFlDRk9zcWUrSnc9PQ==/attach/object/TIEQGAZGACQEG?)
- 展示学生列表,支持分页(默认 10 条每页,可调整)、按姓名/学号搜索、按班级和状态筛选。
- 支持新增、编辑、删除学生,可以进行多选课程。
### 5. 学习总结
![](https://cloud-pic.wpsgo.com/dnhJS0pUekpNTlBOUFpsSXJncHJpa3JEWkpaM1ZTLzg4Tys5NWcrZE1kR0h3anJiZ3NYZW9XODBpUWovZ2VjT2w1TnhRZW5jbU4yZ3BCWmEweHgveHY1eXhDaDliV3M2ZU1nMGFZa2s1SzJ6VWNiT1RLVHVkc0hCeHJ5VHczRDZCdFltKzE0M0NMSS9RZEJ4YXVHcjV1UG1IWVBxbkhHUEhVUXNaV2oxRnhRZnlXWEN6NmFlN2lKRU4yaUdGRloxODltOTJXNU5KRm1qSmRrQlFkSm9iYVdKRHc0ZjU3ajhaZTl3Y3hsYjI0L3paZ280YWVNM3NBeUFUdWdCTXR6S1hWNlhrbXJmWDlKVFlDRk9zcWUrSnc9PQ==/attach/object/M6PQGAZGAAQBQ?)
- 从服务端获取 Markdown 格式的学习总结内容,前端进行解析渲染展示。
- 内容存储于 `server/data/summary.md` 中,**需要修改这个文件内容为自己真实的「前端学习总结」。**
# 三、技术要求
### 前端
技术栈:Vite、React、TypeScript、Ant Design、Tailwind CSS 等(禁止使用第三方脚手架如 UmiJS 、飞冰、Ant Design Pro 等同类集成方案)。
### 后端
技术栈:Node.js、Koa、@koa/router、better-sqlite3、jsonwebtoken 等(给出代码中没有使用 ORM,如有需要可自行选择 Prisma 或 TypeORM 等),90% 的代码或接口已经提供,个别地方需要自己完善后端代码,例如下图:
![](https://cloud-pic.wpsgo.com/dnhJS0pUekpNTlBOUFpsSXJncHJpa3JEWkpaM1ZTLzg4Tys5NWcrZE1kR0h3anJiZ3NYZW9XODBpUWovZ2VjT2w1TnhRZW5jbU4yZ3BCWmEweHgveHY1eXhDaDliV3M2ZU1nMGFZa2s1SzJ6VWNiT1RLVHVkc0hCeHJ5VHczRDZCdFltKzE0M0NMSS9RZEJ4YXVHcjV1UG1IWVBxbkhHUEhVUXNaV2oxRnhRZnlXWEN6NmFlN2lKRU4yaUdGRloxODltOTJXNU5KRm1qSmRrQlFkSm9iYVdKRHc0ZjU3ajhaZTl3Y3hsYjI0L3paZ280YWVNM3NBeUFUdWdCTXR6S1hWNlhrbXJmWDlKVFlDRk9zcWUrSnc9PQ==/attach/object/BZ3NCBJGACQCE?)
如何启动后端项目?
```
cd server
npm install
npm start
# 服务端相关接口将在 http://localhost:3000/api/*** 提供
```
# 四、注意事项
🔔
**开发**
开发过程中,前端监听 5173 端口,此时浏览器打开 [`http://localhost:5173`](http://localhost:5173/) 访问,AJAX 请求也是向 5173 发送,但是因为真实的服务是在 3000,因此要**使用 Vite 把请求代理到3000**(前端的请求地址类似 /api/***)。
🔔
**生产**
前端代码执行 `npm run build` 打包后,默认会打包到 client/dist 目录中。正式环境中,要求打开 [`http://localhost:3000`](http://localhost:3000/) 可以直接查看打包后的项目(此时静态资源需要使用 Koa 来托管)。
👋
**格外注意**
由于批改作业需要,要求大家提交打包后的 course/client/dist 目录代码(实际开发中是不需要提交的)。
# 五、作业提交
1. 作业放置于 `week07/homework/course` 目录中,这个目录下有两个子目录,具体如下:
2. **client 目录**:前端项目,在该目录下的 package.json 文件中至少有两个命令,分别是 npm run dev 用于启动项目(端口5173),npm run build 用于打包项目。编译后静态资源使用 Koa 服务器进行托管。
3. **server 目录**:后端项目目录,放置老师提供的后端代码。
4. **视频要求**
5. **时长:**控制在 5 分钟内(如超过可适当加速,禁止其他剪辑)
6. **内容:**
7. **打包后的核心功能展示**(至少包含:学生管理的增删改查、工作台和学习总结界面展示)。
8. 你认为核心技术点的讲解或优化思考等。
9. 其他你希望老师看到的内容(若有)。
10. **录音:**
11. 视频开始前,请提前准备编辑好记事本,里面包含自己的学校,姓名和录制当天的日期。
12. 视频第一句话必须打开记事本,请晰说出:“我是「学校名称」的「姓名」,学号后四位是「XXXX」,今天是「日期」,现在开始我的实战演示”。
13. 操作的时候,介绍操作过程。
14. **命名:**`姓名_学号_在线学习后台.mp4`,视频放在「[武科大在线学习后台](https://f.kdocs.cn/g/IMnWCbXH/)」
15. **README.md**,**必须包含下面标题和内容:**
- **项目基本信息:**至少包含你的姓名、学校、学号。
- **开发任务索引:**列出你完成的任务清单。
- **核心技术实现:**简要说明你实现关键逻辑的思路。
- 其他你希望老师看到的内容(若有)。
# 六、作业批改
1. 进入 `week07/homework/course/client` 目录,执行 `npm i`,`npm run build`
2. 进入 `week07/homework/course/server` 目录,执行 `npm i`,`npm start`
3. 浏览器输入 [http://localhost:3000](http://localhost:3000/) 体验项目。
4. 查看视频、README.md、代码等信息。
5. 提交截止时间:等群通知