智慧教育管理系统介绍和部署
适用人群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)