在线教育项目之课程信息功能

举报
tea_year 发表于 2025/09/19 11:28:26 2025/09/19
【摘要】 智慧教育管理系统介绍和部署适用人群1. 在校学生,小白用户,想学习知识的2. 有点基础,想要通过项目实操提高自己的开发能力的3. 找不到完整项目跟着练的4. 网上项目比较大,会提供资料,太大了,吃不了它可以学习到的技能1. 学会常用技术栈的使用2. 独立开发项目3. 学会前端的开发流程4. 学会后端的开发流程5. 学会数据库的设计6. 学会前后端接口调用方式7. 学会多模块之间的关联

智慧教育管理系统介绍和部署

适用人群1. 在校学生,小白用户,想学习知识的

2. 有点基础,想要通过项目实操提高自己的开发能力的3. 找不到完整项目跟着练的

4. 网上项目比较大,会提供资料,太大了,吃不了

可以学习到的技能

1. 学会常用技术栈的使用

2. 独立开发项目

3. 学会前端的开发流程

4. 学会后端的开发流程

5. 学会数据库的设计

6. 学会前后端接口调用方式

7. 学会多模块之间的关联。

新增功能

创建课程信息表

SQL
CREATE TABLE `course` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '课程名称',
`content` text COLLATE utf8mb4_unicode_ci COMMENT '课程介绍',
`score` int(10) DEFAULT NULL COMMENT '课程学分',
`teacher_id` int(10) DEFAULT NULL COMMENT '授课教师',
`num` int(10) DEFAULT NULL COMMENT '开班人数',
`time` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '上课时间',
`location` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '上课地点',
`college_id` int(10) DEFAULT NULL COMMENT '所属学院',
`already_num` int(10) DEFAULT NULL COMMENT '已选人数',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程信息表';

Entity

TypeScript
package com.example.entity;

import lombok.Data;

@Data
public class Course {

private Integer id;
private String name;
private String content;
private Integer score;
private Integer teacherId;
private Integer num;
private String time;
private String location;
private Integer collegeId;
//已选人数
private Integer alreadyNum;
//教师名称
private String teacherName;
//院校名称
private String collegeName;

}

前端

Manager.vue

修改Manager.vue,添加课程信息导航

XML
<el-menu-item index="/course">
<el-icon><Reading /></el-icon>
<span>课程信息</span>
</el-menu-item>

路由

添加course路由

TypeScript
{ path: 'course', component: () => import('@/views/manager/Course.vue')},

Course.vue

将资料Course.vue添加到views/manager中

[Course.vue]

后端

查询所有老师

TeacherController

新增课程的时候要选择老师,所以添加查询所有老师的功能

TypeScript
/**
* 查询所有
*/
@GetMapping("/selectAll")
public Result selectAll() {
List<Teacher> list = teacherService.selectAll();
return Result.success(list);
}

TeacherServiceImpl

TypeScript
@Override
public List<Teacher> selectAll() {
return teacherMapper.selectAll();
}

新增课程信息

CourseController

Java
package com.example.controller;

/**
* 课程信息前端请求的接口入口
*/
@RestController
@RequestMapping("/course")
public class CourseController {
@Resource
private CourseService courseService;

/**
* 新增
*/
@PostMapping("/add")
public Result add(@RequestBody Course course) {
courseService.add(course);
return Result.success();
}
}

CourseService

TypeScript
package com.example.service;

public interface CourseService {
void add(Course course);
}

CourseServiceImpl

Java
package com.example.service.impl;

@Service
public class CourseServiceImpl implements CourseService {
@Autowired
private CourseMapper courseMapper;
@Override
public void add(Course course) {
courseMapper.insert(course);
}
}

CourseMapper

Java
package com.example.mapper;

import com.example.entity.Course;
import org.apache.ibatis.annotations.Insert;

public interface CourseMapper {

@Insert("insert into course(name, content, score, teacher_id, num, time, location, college_id, already_num) " +
"values(#{name}, #{content}, #{score}, #{teacherId}, #{num}, #{time}, #{location}, #{collegeId}, #{alreadyNum}")
void insert(Course course);
}


分页查询和条件查询

CourseController

Java
/**
* 分页查询
*/
@GetMapping("/selectPage")
public Result selectPage(String name,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize) {
PageInfo<Course> pageInfo = courseService.selectPage(course, pageNum, pageSize);
return Result.success(pageInfo);
}

CourseServiceImpl

Java
@Override
public PageInfo<Course> selectPage(Course course, Integer pageNum, Integer pageSize) {
List<Course> list;
PageHelper.startPage(pageNum, pageSize);
// 表示当前登录的是教师这个角色
if (ObjectUtil.isNotEmpty(course.getTeacherId())) {
Integer teacherId = course.getTeacherId();
if (ObjectUtil.isNotEmpty(course.getName())) {
list = courseMapper.selectByNameAndTeacherId(course.getName(), teacherId);
} else {
list = courseMapper.selectAllByTeacherId(teacherId);
}
} else {
if (ObjectUtil.isNotEmpty(course.getName())) {
list = courseMapper.selectByName(course.getName());
} else {
list = courseMapper.selectAll();
}
}
return PageInfo.of(list);
}

CourseMapper

Python

@Select("SELECT c.*,t.`name` teacherName,g.`name` collegeName FROM course c " +
"LEFT JOIN teacher t ON c.teacher_id=t.id " +
"LEFT JOIN college g ON c.college_id=g.id " +
"WHERE c.`name` LIKE CONCAT('%',#{name},'%') AND t.id = #{teacherId}")
List<Course> selectByNameAndTeacherId(String name, Integer teacherId);

@Select("SELECT c.*,t.`name` teacherName,g.`name` collegeName FROM course c " +
"LEFT JOIN teacher t ON c.teacher_id=t.id " +
"LEFT JOIN college g ON c.college_id=g.id " +
"WHERE t.id = #{teacherId}")
List<Course> selectAllByTeacherId(Integer teacherId);
@Select("SELECT c.*,t.`name` teacherName,g.`name` collegeName FROM course c " +
"LEFT JOIN teacher t ON c.teacher_id=t.id " +
"LEFT JOIN college g ON c.college_id=g.id " +
"WHERE c.`name` LIKE CONCAT('%',#{name},'%')")
List<Course> selectByName(String name);

@Select("SELECT c.*,t.`name` teacherName,g.`name` collegeName FROM course c " +
"LEFT JOIN teacher t ON c.teacher_id=t.id " +
"LEFT JOIN college g ON c.college_id=g.id ")
List<Course> selectAll();

更新功能

CourseController

SQL
/**
* 更新
*/
@PutMapping("/update")
public Result update(@RequestBody Course course) {
courseService.updateById(course);
return Result.success();
}

CourseServiceImpl

Java
@Override
public void updateById(Course course) {
courseMapper.updateById(course);
}

CourseMapper

Java
@Update("update course set name = #{name}, content = #{content},score = #{score}," +
"teacher_id = #{teacherId}, num = #{num},time = #{time},location = #{location}," +
"college_id = #{collegeId}, already_num = #{alreadyNum} where id = #{id}")
void updateById(Course course);

删除功能

CourseController

SQL
/**
* 根据id删除
*/
@DeleteMapping("/deleteById/{id}")
public Result deleteById(@PathVariable Integer id) {
courseService.deleteById(id);
return Result.success();
}

CourseServiceImpl

Java
@Override
public void deleteById(Integer id) {
courseMapper.deleteById(id);
}

CourseMapper

Java
@Delete("delete from course where id = #{id}")
void deleteById(Integer id);


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。