作者主页:源码空间站2022
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
项目介绍
课程自动排课系统,该系统分两种角色:管理员与普通用户;
主要功能包括:
首页:查看分课、查看课表、查看空教室;
班级设置:添加班级、分配课程、编辑、删除课程;
教室设置:添加教室、编辑、删除;
课程设置:添加课程、编辑、删除;
教师设置:添加教师、编辑、删除;
排课管理:调整排课、删除排课;
用户管理:添加用户、编辑、删除;
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 8.0版本;
7.Redis数据库,redis配置已设置好,勿修改;
技术栈
1. 后端:Springboot+redis
2. 前端:html+layui+thymeleaf
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 将项目中application.properties配置文件中的数据库配置改为自己的配置
3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
4. 运行项目,输入http://localhost:8080/login.html 登录
运行截图
代码相关
排课管理控制器
@RestController
@RequestMapping("/arrange/")
public class ArrangeController {
@Autowired
private IArrangeService iArrangeService;
@RequestMapping("add")
public ServerResponse<String> add(Arrange arrange) {
return iArrangeService.add(arrange);
}
@RequestMapping("del")
public ServerResponse<String> del(Integer id) {
return iArrangeService.del(id);
}
@RequestMapping("update")
public ServerResponse<String> update(Arrange arrange) {
return iArrangeService.update(arrange);
}
@RequestMapping("find")
public ServerResponse<Arrange> find(Integer id) {
return iArrangeService.find(id);
}
@RequestMapping("findAll")
public ServerResponse<PageInfo<Arrange>> findAll(Integer pageNum, Integer pageSize) {
return iArrangeService.findAll(pageNum, pageSize);
}
}
排课逻辑
@Service
public class ArrangeServiceImpl implements IArrangeService {
@Autowired
private ArrangeMapper arrangeMapper;
@Autowired
private ClassesMapper classesMapper;
@Autowired
private CourseMapper courseMapper;
@Override
public ServerResponse<String> add(Arrange arrange) {
String classNames = arrange.getClassName();
String[] split = classNames.split("_");
ArrangeQuery query = new ArrangeQuery();
ArrangeQuery.Criteria criteria = query.createCriteria();
criteria.andCourseIdEqualTo(arrange.getCourseId())
.andSemeIdEqualTo(arrange.getSemeId());
int number = 0;
for (String s : split){
criteria.andClassNameLike("%"+s+"%");
number+=Integer.valueOf(classesMapper.selectOneByExample(new ClassesQuery()).getClassNumber());
}
query.setDistinct(true);
Arrange arrange2 = arrangeMapper.selectOneByExample(query);
if (arrange2 != null) {
return ServerResponse.createByErrorMessage("班级:"+arrange2.getClassName()+" 课程:"+arrange2.getCourseName()+" 已经存在分配");
}
arrange.setStatu(number);
CourseQuery query1 = new CourseQuery();
query1.createCriteria().andIdEqualTo(arrange.getCourseId());
arrange.setSrd(courseMapper.selectOneByExample(query1).getStatu());
int count = arrangeMapper.insertSelective(arrange);
if (count == 0) {
return ServerResponse.createByErrorMessage("分配失败");
}
return ServerResponse.createBySuccessMessage("分配成功");
}
@Override
public ServerResponse<String> del(Integer id) {
int count = arrangeMapper.deleteByPrimaryKey(id);
if (count > 0) {
return ServerResponse.createBySuccessMessage("删除成功");
}
return ServerResponse.createByErrorMessage("删除失败");
}
@Override
public ServerResponse<String> update(Arrange arrange) {
Arrange a = arrangeMapper.selectByPrimaryKey(arrange.getId());
int count = arrangeMapper.updateByPrimaryKeySelective(a);
if (count > 0) {
return ServerResponse.createBySuccessMessage("更新成功");
}
return ServerResponse.createByErrorMessage("更新失败");
}
@Override
public ServerResponse<Arrange> find(Integer id) {
return ServerResponse.createBySuccess(arrangeMapper.selectByPrimaryKey(id));
}
@Override
public ServerResponse<PageInfo<Arrange>> findAll(Integer pageNum, Integer pageSize) {
ArrangeQuery query = new ArrangeQuery();
PageHelper.startPage(pageNum, pageSize);
List<Arrange> list = arrangeMapper.selectByExampleWithRowbounds(query, new RowBounds((pageNum - 1) * 10, pageSize));
PageInfo<Arrange> pageInfo = new PageInfo<>(list);
pageInfo.setTotal(arrangeMapper.countByExample(query));
return ServerResponse.createBySuccess(pageInfo);
}
}
如果也想学习本系统,下面领取。回复:048springboot