这是一个用于管理作业和学生信息的系统,包含前端和后端两个部分。
homework-manager/
├── backend/ # 后端代码 (Go + Gin)
├── frontend/ # 前端代码 (Vue 3 + Element Plus)
├── README.md # 项目说明
└── start.bat # 启动脚本
- 老师登录认证
- 学生信息管理(增删改查)
- 任务/作业管理(增删改查)
- 任务状态跟踪
- 响应式界面设计
- Go 1.21+
- Gin Web 框架
- GORM ORM 框架
- MySQL 数据库
- Redis 缓存
- JWT 认证
- Vue 3
- Element Plus UI 组件库
- Pinia 状态管理
- Vue Router 路由管理
- Axios HTTP 客户端
确保已安装以下软件:
- Go 1.21+
- Node.js 16+
- MySQL 8.0+
- Redis 6.0+
- 创建 MySQL 数据库:
CREATE DATABASE shoushou CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 修改后端配置文件
backend/configs/local.yaml:
mysql:
host: "localhost"
port: 3306
user: "root"
password: "你的密码"
dbname: "shoushou"cd backend
go mod tidy
go run main.go后端将在 http://localhost:8080 启动
cd frontend
npm install
npm run dev前端将在 http://localhost:3000 启动
也可以直接运行项目根目录的 start.bat 脚本来同时启动前后端。
系统会自动创建默认管理员账户:
| 电话号码 | 密码 | 角色 |
|---|---|---|
| admin | admin123 | 管理员 |
- URL:
POST /backend/login - 请求体:
{
"telephone": "admin",
"password": "admin123"
}- 响应:
{
"code": 200,
"data": {
"token": "jwt_token",
"teacher": {
"id": 1,
"telephone": "admin",
"name": "管理员"
}
}
}- URL:
GET /api/students - 响应:
{
"code": 200,
"data": {
"students": [
{
"id": 1,
"username": "zhangsan",
"name": "张三",
"class": "计算机1班",
"grade": "大一"
}
]
}
}- URL:
POST /api/students - 请求体:
{
"username": "lisi",
"password": "123456",
"name": "李四",
"class": "计算机1班",
"grade": "大一"
}- URL:
PUT /api/students/:id - 请求体:
{
"username": "lisi",
"password": "newpassword",
"name": "李四",
"class": "计算机1班",
"grade": "大一"
}- URL:
DELETE /api/students/:id
- URL:
GET /api/tasks - 响应:
{
"code": 200,
"data": {
"tasks": [
{
"id": 1,
"name": "完成作业1",
"start_time": "2024-01-15T09:00:00.000Z",
"end_time": "2024-01-20T18:00:00.000Z",
"completed_count": 5,
"total_count": 10,
"status": "pending",
"teacher_id": 1,
"teacher": {
"id": 1,
"telephone": "admin",
"name": "管理员"
},
"students": [
{
"id": 1,
"username": "zhangsan",
"name": "张三",
"class": "计算机1班",
"grade": "大一"
}
]
}
]
}
}- URL:
POST /api/tasks - 请求体:
{
"name": "新任务",
"start_time": "2024-01-15T09:00:00.000Z",
"end_time": "2024-01-20T18:00:00.000Z",
"total_count": 10,
"student_ids": [1, 2, 3]
}- URL:
PUT /api/tasks/:id - 请求体: 同创建任务
- URL:
PUT /api/tasks/:id/status - 请求体:
{
"status": "completed"
}- URL:
DELETE /api/tasks/:id
- URL:
GET /api/tasks/:id/students - 响应:
{
"code": 200,
"data": {
"task_students": [
{
"task_id": 1,
"student_id": 1,
"completed": true,
"completed_at": "2024-01-15T10:30:00Z"
}
]
}
}- URL:
PUT /api/tasks/:id/students/:studentId/status - 请求体:
{
"completed": true
}- URL:
GET /api/tasks/:id/completion-stats - 响应:
{
"code": 200,
"data": {
"completed_count": 5,
"total_count": 10
}
}200: 成功400: 参数错误401: 未授权500: 服务器错误
- 使用 Gin 框架处理 HTTP 请求
- 使用 GORM 进行数据库操作
- 使用 JWT 进行用户认证
- 使用 Zap 进行日志记录
- 使用 Vue 3 Composition API
- 使用 Element Plus 组件库
- 使用 Pinia 进行状态管理
- 使用 Axios HTTP 客户端
MIT License