当前位置: 首页 > news >正文

Java项目:springboot课程自动排课系统

作者主页:源码空间站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

 

相关文章:

  • 建设环境竣工验收网站/nba排名最新
  • 手机动态网站制作/广告网
  • 做网站设计哪家好/长沙关键词优化平台
  • 网站建设高级 上海/百度号码认证平台官网首页
  • 网站建设有必要做手机端吗/aso优化的主要内容为
  • 网站开发工程师就业前景/成都seo优化外包公司
  • 启动项目端口被占用无奈只能重启?程序员的电脑绝不允许重启!
  • Huffman二进制编码以及文本的压缩与解压
  • 单商户商城系统功能拆解51—应用中心—评价助手
  • 基于注解方式实现Spring Security忽略拦截
  • Leetcode 1792. 最大平均通过率 题解
  • k8s之多方面多维度的资源隔离和限制(namespace,LimitRange,ResourceQuota)
  • Himall商城更新插件列表\获取插件程序集文件\ 深复制IPlugin
  • 【Web前端HTML5CSS3】09、高度塌陷与 BFC
  • Java中toString方法的推荐实现方式
  • 构建系列之新一代利器Esbuild(上)
  • MIUI10国际版系统自定义字体设置办法
  • webpack 构建脚手架