# 计算机毕业设计辅导视频简介系统
## 1. 开题报告
### 1.1 研究背景
随着计算机技术的快速发展,越来越多的学生选择计算机相关专业作为自己的学习方向。毕业设计是计算机专业学生的重要环节,但许多学生在选题、设计、实现和论文撰写过程中遇到困难。因此,开发一个计算机毕业设计辅导视频系统,能够为学生提供系统的学习资源和指导,帮助他们顺利完成毕业设计。
### 1.2 研究意义
- **提高毕业设计质量**:通过视频辅导,学生可以更好地理解毕业设计的流程和技术要点。
- **节省时间**:学生可以通过观看视频快速掌握相关知识,减少摸索时间。
- **资源共享**:将优秀的毕业设计案例和经验分享给更多学生,促进学习交流。
### 1.3 研究目标
- 开发一个基于Web的毕业设计辅导视频系统,支持视频上传、分类、播放和评论功能。
- 实现用户管理、视频管理、评论管理等核心功能。
- 提供友好的用户界面和高效的视频播放体验。
### 1.4 研究方法
- **前端技术**:使用Vue.js构建用户界面,实现动态交互。
- **后端技术**:使用Spring Boot提供RESTful API,处理业务逻辑。
- **数据库**:使用MySQL存储用户、视频和评论数据。
- **视频存储**:使用本地存储或云存储(如阿里云OSS)保存视频文件。
---
## 2. 项目简介
计算机毕业设计辅导视频系统是一个基于Web的在线学习平台,旨在为计算机专业学生提供毕业设计相关的视频教程和资源。系统支持视频上传、分类展示、在线播放、评论互动等功能,帮助学生更好地完成毕业设计。
---
## 3. 系统功能
### 3.1 用户管理
- **用户注册与登录**:学生和教师可以注册账号并登录系统。
- **角色管理**:分为学生、教师和管理员三种角色,不同角色拥有不同权限。
### 3.2 视频管理
- **视频上传**:教师可以上传毕业设计辅导视频,填写视频标题、描述和分类。
- **视频分类**:按技术栈(如Java、Python、前端等)分类展示视频。
- **视频播放**:学生可以在线观看视频,支持暂停、快进、倍速播放等功能。
### 3.3 评论与互动
- **评论功能**:学生可以对视频进行评论,提出问题或分享心得。
- **点赞功能**:学生可以为喜欢的视频点赞。
### 3.4 后台管理
- **视频审核**:管理员审核教师上传的视频,确保内容质量。
- **用户管理**:管理员管理用户信息,处理违规账号。
- **数据统计**:统计视频播放量、评论数、点赞数等数据。
---
## 4. 数据库设计
### 4.1 ER图
```plaintext
+-----------------+ +-----------------+ +-----------------+
| User | | Video | | Comment |
+-----------------+ +-----------------+ +-----------------+
| user_id (PK) |<------| video_id (PK) |<------| comment_id (PK) |
| username | | title | | content |
| password | | description | | user_id (FK) |
| email | | category | | video_id (FK) |
| role | | file_path | | created_at |
| created_at | | user_id (FK) | +-----------------+
+-----------------+ | created_at |
+-----------------+
```
### 4.2 数据库表结构
#### 4.2.1 用户表(`user`)
| 字段名 | 类型 | 描述 |
|--------------|--------------|----------------|
| user_id | INT | 用户ID(主键) |
| username | VARCHAR(50) | 用户名 |
| password | VARCHAR(100) | 密码 |
| email | VARCHAR(100) | 邮箱 |
| role | ENUM | 角色(学生/教师/管理员) |
| created_at | DATETIME | 创建时间 |
#### 4.2.2 视频表(`video`)
| 字段名 | 类型 | 描述 |
|--------------|--------------|----------------|
| video_id | INT | 视频ID(主键) |
| title | VARCHAR(100) | 视频标题 |
| description | TEXT | 视频描述 |
| category | VARCHAR(50) | 视频分类 |
| file_path | VARCHAR(200) | 视频文件路径 |
| user_id | INT | 上传用户ID(外键) |
| created_at | DATETIME | 创建时间 |
#### 4.2.3 评论表(`comment`)
| 字段名 | 类型 | 描述 |
|--------------|--------------|----------------|
| comment_id | INT | 评论ID(主键) |
| content | TEXT | 评论内容 |
| user_id | INT | 用户ID(外键) |
| video_id | INT | 视频ID(外键) |
| created_at | DATETIME | 创建时间 |
---
## 5. 源码实现与讲解
### 5.1 视频上传(Spring Boot)
```java
@RestController
@RequestMapping("/video")
public class VideoController {
@Autowired
private VideoService videoService;
@PostMapping("/upload")
public ResponseEntity<String> uploadVideo(@RequestParam("file") MultipartFile file,
@RequestParam("title") String title,
@RequestParam("description") String description,
@RequestParam("category") String category,
HttpSession session) {
if (!file.isEmpty()) {
String filePath = "uploads/" + file.getOriginalFilename();
try {
file.transferTo(new File(filePath));
Video video = new Video();
video.setTitle(title);
video.setDescription(description);
video.setCategory(category);
video.setFilePath(filePath);
video.setUserId((Integer) session.getAttribute("user_id"));
videoService.addVideo(video);
return ResponseEntity.ok("Video uploaded successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Upload failed");
}
}
```
### 5.2 视频播放(前端)
```html
<video width="100%" controls>
<source src="${video.filePath}" type="video/mp4">
Your browser does not support the video tag.
</video>
```
### 5.3 评论功能(MyBatis)
```java
@Service
public class CommentService {
@Autowired
private CommentMapper commentMapper;
public void addComment(int userId, int videoId, String content) {
Comment comment = new Comment();
comment.setUserId(userId);
comment.setVideoId(videoId);
comment.setContent(content);
comment.setCreatedAt(new Date());
commentMapper.insert(comment);
}
}
```
---
## 6. 总结
计算机毕业设计辅导视频系统通过提供丰富的视频资源和互动功能,帮助学生更好地完成毕业设计。系统功能完善,操作简单,适合计算机专业学生使用。
---