### 软件技术发展前言+实验报告+选课系统
#### 实验背景与目的
随着信息技术的快速发展,软件技术也在不断进步。本实验旨在通过一个具体的项目——选课系统的开发,帮助学生深入理解软件工程的基本原理和技术,并熟练掌握前后端分离的开发模式。
#### 实验目的
1. **理解项目开发流程**:通过实际参与项目开发,熟悉从需求分析到最终部署上线的每一个环节。
2. **掌握前后端分离开发模式**:学习如何将用户界面与后端服务相分离,提高系统的可维护性和扩展性。
3. **掌握前后端数据交互方式**:了解并应用常见的前后端通信技术,如 RESTful API 或 GraphQL。
4. **掌握学生选课业务逻辑**:针对选课系统的具体业务场景,设计合理的数据结构和业务处理流程。
#### 课程目标
1. **理解前后端分离模块数据交互方式**:掌握前后端之间数据传输的标准格式,如 JSON。
2. **掌握前后端分离的开发模式**:能够独立完成前端界面的设计与实现,以及后端服务的构建。
3. **掌握学生管理、课程管理、学生选课业务逻辑**:通过对这些业务逻辑的学习,提升解决实际问题的能力。
4. **提高学生编码能力**:通过实践锻炼,提高编程技能和代码质量。
#### 实验任务
1. **前端页面设计**:
- 设计登录页面:用于用户的身份验证。
- 设计首页:展示系统的主要功能入口。
- 设计图书管理页面:用于展示和管理图书信息。
- 设计学生管理页面:用于展示和管理学生信息。
2. **后台框架搭建**:采用 Spring Boot + MyBatis 技术栈,搭建项目的基础框架。
3. **后台模块开发**:
- 实现登录功能:确保用户能够安全地进行身份验证。
- 实现课程管理功能:支持课程信息的增加、删除、修改和查询。
- 实现学生管理功能:支持学生信息的增加、删除、修改和查询。
- 实现学生选课功能:允许学生选择课程,并记录选课信息。
#### 实验要求
1. **理解前后端数据交互方式**:确保前后端之间的数据交换准确无误。
2. **前端页面设计美观**:页面布局合理,视觉效果良好。
3. **后台返回数据格式统一**:后端接口返回的数据格式需保持一致,方便前端解析。
4. **提交项目**:按时完成项目开发,并提交最终成果。
#### 实验设计
##### 前端核心代码
**选课页面实现**
- HTML 结构:使用表格形式展示选课信息,包括课程名称、学分、学期及操作按钮(删除)。
- JavaScript 逻辑:通过 AJAX 请求后端接口,完成课程的添加和编辑操作。例如,`addAndEditUser()` 方法用于处理课程的添加逻辑,其中涉及到从 `sessionStorage` 获取当前用户的 ID,以及向服务器发送 POST 请求来保存选课信息。
```javascript
addAndEditUser() {
var student = JSON.parse(sessionStorage.getItem("student"));
var stuId = student.stuId;
$.ajax({
url: "http://localhost:8080/select/add",
type: "post",
data: {
studentId: stuId,
courseId: this.courseId,
termTime: this.termTime
},
success: function(resp) {
this.closeDialog();
this.termTime = "";
this.getUserList();
}
});
}
```
##### 后端核心代码
**SelectCourseMapper 类**
- 使用 MyBatis 框架定义了几个关键的数据库操作方法,包括查询选课列表、增加选课和删除选课。
```java
public interface SelectCourseMapper {
@Select("select selectid, coursename,c.score,termtime from selectcourse sc inner join course c on sc.courseid = c.courseid where studentid = #{sutId}")
public ArrayList<SelectCourseVO> selectCourseList(int stuId);
@Insert("insert into selectcourse(studentid, courseid, termtime) values(#{studentId}, #{courseId}, #{termTime})")
public void addSelectCource(SelectCourse selectCourse);
// 假设还有删除选课的方法实现
}
```
通过以上内容的介绍,我们可以看到在选课系统的开发过程中,不仅涉及到了前端技术的应用,还涵盖了后端服务的设计与实现。学生通过完成该项目,可以全面掌握软件开发过程中的关键技术点,并加深对软件工程的理解。