基于SSM的教务管理系统

功能模块

在这里插入图片描述

登录界面

在这里插入图片描述

管理员端

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

教师端

在这里插入图片描述
在这里插入图片描述

学生端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分源码

  //登录表单处理
    @RequestMapping(value = "/login", method = {RequestMethod.POST})
    public String login(Userlogin userlogin) throws Exception {

        //Shiro实现登录
        UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(),
                userlogin.getPassword());
        Subject subject = SecurityUtils.getSubject();

        //如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常
        subject.login(token);

        if (subject.hasRole("admin")) {
            return "redirect:/admin/showStudent";
        } else if (subject.hasRole("teacher")) {
            return "redirect:/teacher/showCourse";
        } else if (subject.hasRole("student")) {
            return "redirect:/student/showCourse";
        }

        return "/login";
    }
 //  学生信息显示
    @RequestMapping("/showStudent")
    public String showStudent(Model model, Integer page) throws Exception {

        List<StudentCustom> list = null;
        //页码对象
        PagingVO pagingVO = new PagingVO();
        //设置总页数
        pagingVO.setTotalCount(studentService.getCountStudent());
        if (page == null || page == 0) {
            pagingVO.setToPageNo(1);
            list = studentService.findByPaging(1);
        } else {
            pagingVO.setToPageNo(page);
            list = studentService.findByPaging(page);
        }

        model.addAttribute("studentList", list);
        model.addAttribute("pagingVO", pagingVO);

        return "admin/showStudent";

    }
    <select id="findByPaging" parameterType="PagingVO" resultType="StudentCustom">
        select student.*, college.collegeName
        from student, college
        WHERE student.collegeID = college.collegeID
        limit #{toPageNo}, #{pageSize}
    </select>

 // 选课操作
    @RequestMapping(value = "/stuSelectedCourse")
    public String stuSelectedCourse(int id) throws Exception {
        //获取当前用户名
        Subject subject = SecurityUtils.getSubject();
        String username = (String) subject.getPrincipal();

        SelectedCourseCustom selectedCourseCustom = new SelectedCourseCustom();
        selectedCourseCustom.setCourseid(id);
        selectedCourseCustom.setStudentid(Integer.parseInt(username));

        SelectedCourseCustom s = selectedCourseService.findOne(selectedCourseCustom);

        if (s == null) {
            selectedCourseService.save(selectedCourseCustom);
        } else {
            throw new CustomException("该门课程你已经选了,不能再选");
        }

        return "redirect:/student/selectedCourse";
    }
//查询指定学生成绩
    public SelectedCourseCustom findOne(SelectedCourseCustom selectedCourseCustom) throws Exception {

        SelectedcourseExample example = new SelectedcourseExample();
        SelectedcourseExample.Criteria criteria = example.createCriteria();

        criteria.andCourseidEqualTo(selectedCourseCustom.getCourseid());
        criteria.andStudentidEqualTo(selectedCourseCustom.getStudentid());

        List<Selectedcourse> list = selectedcourseMapper.selectByExample(example);


        if (list.size() > 0) {
            SelectedCourseCustom sc = new SelectedCourseCustom();
            BeanUtils.copyProperties(list.get(0), sc);

            Student student = studentMapper.selectByPrimaryKey(selectedCourseCustom.getStudentid());
            StudentCustom studentCustom = new StudentCustom();
            BeanUtils.copyProperties(student, studentCustom);

            sc.setStudentCustom(studentCustom);

            return sc;
        }

        return null;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/570337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

F-47创建预付款请求

F-47创建预付款请求 需要删除 可以使用FB08 冲消即可

【SMART目标法】项目管理必会的思维分析工具 06

SMART分析方法&#xff0c;是让管理者的工作变被动为主动的一个很好的手段。实施目标管理不但是有利于员工更加明确高效地工作&#xff0c;更是为未来的绩效考核制定了目标和考核标准&#xff0c;使考核更加科学化、规范化&#xff0c;更能保证考核的公开、公平与公正。 “sma…

Java调用ffmpeg把rtsp视频流保存为MP4文件,并播放

前言:最近项目需要把rtsp的视频流截取保存为MP4文件。经过多方调研,最终找到方案:调用ffmpeg命令行完成转码。ffmpeg命令行确实稳定靠谱!ok,下面就开始分享代码。 1、环境工具准备 ffmpeg的程序和一个稳定的rtsp流 这是我的ffmpeg的版本。 我这里rtsp流用的海康硬盘录里…

制造业工厂数字化转型的具体方法

制造业工厂数字化转型是指将传统的制造业生产过程和管理方式应用数字技术进行改造和升级&#xff0c;以提高生产效率、降低成本、优化产品质量和提升企业竞争力。 制造业数字化转型基本概念&#xff1a; 1. 数字化生产&#xff1a;将传统工艺流程数字化&#xff0c;通过自动化设…

【Linux】:epoll

高级IO 一.各种接口二.工作模式 按照man手册的说法: 是为处理大批量句柄而作了改进的poll. 一.各种接口 快速认识接口&#xff1a; events可以是以下几个宏的集合&#xff1a; EPOLLIN : 表示对应的文件描述符可以读 (包括对端SOCKET正常关闭); EPOLLOUT : 表示对应的文件描…

智慧灯杆综合管理平台建设思路及系统方案设计

一、建设思路 智慧灯杆综合管理平台的建设旨在实现城市基础设施的智能化、信息化和高效化。在构建这一平台时&#xff0c;我们首先要明确其核心理念&#xff1a;以灯杆为载体&#xff0c;整合各类城市服务资源&#xff0c;通过先进的物联网技术和大数据分析&#xff0c;为城市…

欧美助听器市场热门品牌盘点,国产爱可声备受青睐

近年来&#xff0c;随着中国技术的不断进步和品质的提升&#xff0c;国产助听器品牌爱可声在欧美市场备受瞩目。在欧美国家助听器市场&#xff0c;有许多热门品牌分别为&#xff1a;峰力、斯达克、瑞声达、爱可声等。这些品牌凭借其悠久的历史、先进的技术和高品质的产品&#…

Python3:强大的编程语言及其广泛应用

点击下载《Python3&#xff1a;强大的编程语言及其广泛应用》 1. 前言 Python3作为一种强大的编程语言&#xff0c;凭借其简洁易读、功能丰富以及强大的扩展性&#xff0c;已经成为编程界的热门选择。本文将详细介绍Python3的主要特性、应用领域以及它在实际项目中的优势&…

胖东来的商业启示!2024创业赛道!2024创业新项目新商机!2024创业风口!2024普通人的创业机会!2024创业赚钱项目!

在中国零售业&#xff0c;胖东来是“神”一般的存在&#xff0c;不讲业绩&#xff0c;只讲幸福&#xff0c;却造就了全国最具人效和坪效的零售门店&#xff0c;都说胖东来成功的核心秘诀是“把人当人”。 当然胖东来的成功可不是偶然&#xff0c;它背后是于东来多年来的坚持与努…

提高在线考试成绩的备考技巧与建议

参加在线考试已经成为现代学习的一部分&#xff0c;它的便利性和灵活性为学生提供了更多的学习机会。然而&#xff0c;为了在在线考试系统中取得好成绩&#xff0c;备考技巧是非常重要的。 设置明确的学习目标 在备考在线考试之前&#xff0c;为自己设定明确的学习目标是非常重…

通义灵码-IDEA的使用教程

通义灵码-IDEA的使用教程 1、通义灵码是什么&#xff1f; 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&#…

【svgwrite 库简介,附代码】如何将 .ttf 字体文件转化为 .svg 矢量图形?

当涉及到字体和矢量图形时&#xff0c;.ttf 和 .svg 是两种不同的文件格式&#xff1a; .ttf (TrueType Font)&#xff1a; .ttf 文件是一种常见的字体文件格式&#xff0c;用于存储 TrueType 字体。TrueType 是一种字体轮廓的标准&#xff0c;它使用贝塞尔曲线描述字形&…

linux中git的使用

为什么要有git git相当于一个仓库可以让我们更好的去管理我们的代码&#xff0c;实现版本的控制&#xff0c;上传到云端仓库。有了git,就可以实现多人同时开发一个项目&#xff08;每个负责一部分代码&#xff0c;最后都上传到同一个仓库&#xff09;。 git github/gitee 的区…

羊大师分享,羊奶夏日里的养生佳品

羊大师分享&#xff0c;羊奶夏日里的养生佳品 羊奶&#xff0c;作为夏日里的养生佳品&#xff0c;确实拥有诸多益处。在炎炎夏日&#xff0c;人体面临着高温、湿度的双重考验&#xff0c;身体容易出现各种不适&#xff0c;而羊奶正好可以为我们提供多方面的滋养与保护。 羊奶…

UTONMOS:用区块链技术拓展商业边界在哪里?

引言 大约从 2021 年Web 3 这个新概念开始受到风险基金和科技圈的普遍关注。但如果你对过去几年区块链的发展历史足够了解&#xff0c;就应该已经意识到现在的 Web 3 并不是什么新技术&#xff0c;甚至不是旧技术的进步&#xff0c;它只是一个基于区块链技术的宏大构想。 我是…

光伏储能控制系统的功能策略

一、控制策略 1、功率控制策略 光伏阵列的输出功率受光照和温度影响&#xff0c;最大功率点是转换太阳能为电能的最高效点。MPPT控制器根据实时参数调整光伏阵列工作点&#xff0c;确保其始终处于最大功率输出状态&#xff0c;提高能量转换效率&#xff0c;增加发电量&#x…

产品经理好干吗?

赚钱的工作都不轻松吧&#xff0c;除非是家里资源好的。 产品经理的薪资还是可观的 &#xff0c;小白如何成为产品经理&#xff1f; 首先要有经验&#xff0c;有理论知识&#xff0c;对想从事产品经理相关岗位的人来说&#xff0c;这基本是个必考的证书了&#xff0c;感兴趣的…

【每天一个linux小知识】nslookup

往期文章 tailf 和 tail -f 目录 往期文章什么是 nslookup示例参考 什么是 nslookup nslookup全称 name server lookup nslookup 是一款常用的网络工具&#xff0c;用于查询 DNS 的记录。通过 nslookup&#xff0c;用户可以查找特定主机的 IP 地址、查询域名的 MX 记录&…

Seatunnel-web build:prod 报错 jsx问题

问题1 JSX element implicitly has type any because no interface JSX.IntrinsicElements exists. 问题剖析 在使用typescript的时候&#xff0c;在vue或react、node中报以上错误&#xff0c;是JSX 元素隐式具有类型 "any"&#xff0c;因为不存在全局类型 "J…

three.js 3D Banner实战

需求场景 1、加载glb模型 2、设置背景 3、让第一个模型转动&#xff0c;并调整模型的转动速度 4、设置模型的宽度。 遇到的问题 1、为什么加载的模型不能转动&#xff1f; 加载的glb模型需要加入到goup里面才能转动。 代码实施 <script setup> import * as THREE from…
最新文章