【开源】JAVA+Vue.js实现高校学生管理系统

news2024/12/23 17:45:34

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 学生管理模块
    • 2.2 学院课程模块
    • 2.3 学生选课模块
    • 2.4 成绩管理模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 学生表
      • 3.2.2 学院课程表
      • 3.2.3 学生选课表
      • 3.2.4 学生成绩表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询课程
    • 5.2 新增学生选课
    • 5.3 编辑学生选课
    • 5.4 课程打分
    • 5.5 安排补考
  • 六、免责说明


一、摘要

1.1 项目介绍

基于Vue+SpringBoot+MySQL的高校学生管理系统包含学院课程模块、学生选课模块、课程补考模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,高校学生管理系统基于角色的访问控制,给教务管理员、教师、学生使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

在这里插入图片描述

2.1 学生管理模块

学生管理模块帮助学校或教育机构更好地管理和监督学生的学习情况,提高教育质量,学生管理模块可以记录学生的个人基本信息、学习成绩、考勤状态等信息,有助于将学生数据保存,这些信息对于学校了解学生的情况、与家长沟通以及做出教育决策非常重要。学生管理模块帮助学校创建和发布课程,让学生了解他们的上课时间和内容,也可以使用它来管理考试,例如考试时间表和成绩统计,学生管理模块帮助学校更好地管理课堂,包括课堂内的互动、活动组织和学生评分,学生管理模块可以方便教师和家长之间的沟通,传达学生的在校表现和学习情况,学生管理模块能够帮助学校更好地管理和监督学生,提高教育质量,全面提高学生的成绩,有助于学生管理模式的促进发展。

2.2 学院课程模块

大学课程模块使学生和其他用户更容易找到、选择、管理和学习适合学生的内容,在现代社会,知识的代际变化非常快,有必要通过学习不断提高自己,传统的教育方式越来越难以满足大众化和个性化学习的需要,学院课程模块可以通过互联网技术和数据分析的方法,为学生提供更加多样化和灵活的学习资源和服务,学院课程模块为学生提供更全面、个性化和高效的学习模式,它可以提供好处,帮助您更好地满足时代对知识更新的需求。

2.3 学生选课模块

学生选课模块帮助学校更好地管理和安排教育资源,同时为学生提供更独立、更方便的选择体验,首先,学校可以通过学生选修科目模块实现对选修科目数据的实时监控和统计,掌握每节课的选考情况,对下学期的教学进度做出科学合理的决策。第二,学生可以通过学生选择模块自由选择自己感兴趣的课程,并可以实时查看选择结果,了解自己的选择情况,从而大大提高选修课的效率和准确性。最后,在学生选课模块中,学生可以看到班级介绍、班级评价等信息,从而更好地了解自己选择的班级的内容和特点,更好地规划自己的学习生活。

2.4 成绩管理模块

成绩管理模块帮助学生和教师更好地管理和理解学生的表现,对于学生来说,通过成绩管理模块,他们可以及时跟踪自己的成绩、考试时间表和各科的学习进度,从而全面掌握自己的学习情况,同时成绩管理模块为学生提供个性化的成绩报告,让他们更好地了解自己需要加强的地方。对于教师来说,成绩中心模块帮助他们快速准确地输入和组织学生的成绩信息,并根据学生的表现提供合理的评估和分析,这样教师可以及时发现学生的问题和困难,并根据目的进行指导和指导,有助于提高学生的学习效果和学业水平。此外成绩管理模块为教师提供了统计分析的功能,使他们能够更全面地了解班级或学院的学业情况,并制定更合理的教育计划和策略。


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 学生表

在这里插入图片描述

3.2.2 学院课程表

在这里插入图片描述

3.2.3 学生选课表

在这里插入图片描述

3.2.4 学生成绩表

在这里插入图片描述


四、系统展示

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


五、核心代码

5.1 查询课程

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询课程")
public Result<IPage<Curriculum>> getByPage(@ModelAttribute Curriculum curriculum ,@ModelAttribute PageVo page){
    QueryWrapper<Curriculum> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(curriculum.getTitle())) {
        qw.like("title",curriculum.getTitle());
    }
    if(!ZwzNullUtils.isNull(curriculum.getType())) {
        qw.eq("type",curriculum.getType());
    }
    if(!ZwzNullUtils.isNull(curriculum.getLevel())) {
        qw.eq("level",curriculum.getLevel());
    }
    IPage<Curriculum> data = iCurriculumService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Curriculum>>().setData(data);
}

5.2 新增学生选课

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增选课")
public Result<CourseSelection> insert(CourseSelection courseSelection){
    Curriculum curriculum = iCurriculumService.getById(courseSelection.getCurriculumId());
    if(curriculum == null) {
        return ResultUtil.error("课程不存在");
    }
    QueryWrapper<CourseSelection> oldQw = new QueryWrapper<>();
    oldQw.eq("curriculum_id",courseSelection.getCurriculumId());
    oldQw.eq("student_id",courseSelection.getStudentId());
    if(iCourseSelectionService.count(oldQw) > 0L) {
        return ResultUtil.error("已完成选课");
    }
    courseSelection.setTitle(curriculum.getTitle());
    courseSelection.setType(curriculum.getType());
    courseSelection.setContent(curriculum.getContent());
    courseSelection.setKnowledgePoints(curriculum.getKnowledgePoints());
    courseSelection.setWeeklyHours(curriculum.getWeeklyHours());
    courseSelection.setLevel(curriculum.getLevel());
    User student = iUserService.getById(courseSelection.getStudentId());
    if(student == null) {
        return ResultUtil.error("学生不存在");
    }
    courseSelection.setStudentName(student.getNickname());
    courseSelection.setGrade(BigDecimal.ZERO);
    courseSelection.setGradeUser("");
    courseSelection.setGradeTime("");
    courseSelection.setMakeupExam("");
    iCourseSelectionService.saveOrUpdate(courseSelection);
    return new ResultUtil<CourseSelection>().setData(courseSelection);
}

5.3 编辑学生选课

@RequestMapping(value = "/update", method = RequestMethod.POST)
@ApiOperation(value = "编辑选课")
public Result<CourseSelection> update(CourseSelection courseSelection){
    Curriculum curriculum = iCurriculumService.getById(courseSelection.getCurriculumId());
    if(curriculum == null) {
        return ResultUtil.error("课程不存在");
    }
    QueryWrapper<CourseSelection> oldQw = new QueryWrapper<>();
    oldQw.eq("curriculum_id",courseSelection.getCurriculumId());
    oldQw.eq("student_id",courseSelection.getStudentId());
    if(iCourseSelectionService.count(oldQw) > 0L) {
        return ResultUtil.error("已完成选课");
    }
    courseSelection.setTitle(curriculum.getTitle());
    courseSelection.setType(curriculum.getType());
    courseSelection.setContent(curriculum.getContent());
    courseSelection.setKnowledgePoints(curriculum.getKnowledgePoints());
    courseSelection.setWeeklyHours(curriculum.getWeeklyHours());
    courseSelection.setLevel(curriculum.getLevel());
    User student = iUserService.getById(courseSelection.getStudentId());
    if(student == null) {
        return ResultUtil.error("学生不存在");
    }
    courseSelection.setStudentName(student.getNickname());
    iCourseSelectionService.saveOrUpdate(courseSelection);
    return new ResultUtil<CourseSelection>().setData(courseSelection);
}

5.4 课程打分

@RequestMapping(value = "/check", method = RequestMethod.GET)
@ApiOperation(value = "打分")
public Result<CourseSelection> check(@RequestParam String id,@RequestParam BigDecimal grade){
    CourseSelection cs = iCourseSelectionService.getById(id);
    if(cs == null) {
        return ResultUtil.error("选课不存在");
    }
    User currUser = securityUtil.getCurrUser();
    cs.setGrade(grade);
    cs.setGradeUser(currUser.getNickname());
    cs.setGradeTime(DateUtil.now());
    if(grade.compareTo(BigDecimal.valueOf(60)) >= 0) {
        cs.setMakeupExam("无需补考");
    } else {
        cs.setMakeupExam("补考待安排");
    }
    iCourseSelectionService.saveOrUpdate(cs);
    return ResultUtil.success();
}

5.5 安排补考

@RequestMapping(value = "/make", method = RequestMethod.GET)
@ApiOperation(value = "安排补考")
public Result<CourseSelection> make(@RequestParam String id,@RequestParam String makeupExam){
    CourseSelection cs = iCourseSelectionService.getById(id);
    if(cs == null) {
        return ResultUtil.error("选课不存在");
    }
    cs.setMakeupExam(makeupExam);
    iCourseSelectionService.saveOrUpdate(cs);
    return ResultUtil.success();
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解动态内存管理!

目录 ​编辑 1.为什么要用动态内存分配 2.malloc和free 2.1 malloc 2.2 free 3.calloc和realloc 3.1 calloc 3.2 realloc 4.常见的动态内存的错误 4.1 对NULL的解引用操作 4.2 对动态内存开辟空间的越界访问 4.3 对非动态内存开辟空间用free释放 4.4 使用free释放动…

unity打包apk运行于google手机

第一次打包apk运行于Pixel 7 Pro 一直提示安装包无法安装 untiy版本2020.1.0f1 有两点需要注意 第一 Scrpting Backend 需要选择 IL2CPP 勾选 ARM64 第二 勾选 Custom Main Mainfest 在Assets -> Plugins -> Android文件夹下 AndroidMainfest 中增加android:export…

软件实例分享,饭店餐饮会员卡管理系统怎么弄会员充值怎么记账

软件实例分享&#xff0c;饭店餐饮会员卡管理系统怎么弄会员充值怎么记账 一、前言 以下软件教程以 佳易王餐饮会员管理系统软件V16为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、会员可以登记电子会员卡或使用vip卡片 2、卡类型可以自由…

[云原生] 二进制安装K8S一部分

一、单机matser预部署设计 目前Kubernetes最新版本是v1.25&#xff0c;但大部分公司一般不会使用最新版本。 目前公司使用比较多的&#xff1a;老版本是v1.15&#xff0c;因为v1.16改变了很多API接口版本&#xff0c;国内目前使用比较多的是v1.18、v1.20。 组件部署&#xff…

【网络安全】电竞选手Faker遭受DDOS攻击,为什么它一直存在,我们遇到ddos攻击怎么办?

二十年前中国红客们就在用的DDOS攻击&#xff0c;直到现在还依然是黑客们最爱的攻击方法&#xff0c;为什么它一直存在&#xff1f; Faker各位小伙伴们自然是相当熟悉了&#xff0c;素有着英雄联盟第一人之称的Faker&#xff0c;其所拥有的荣誉让无数职业选手望其项背&#xf…

LabVIEW开发J-TEXT实时控制系统

LabVIEW开发J-TEXT实时控制系统 随着核聚变研究的不断深入&#xff0c;对实验装置的控制系统提出了更高的要求&#xff0c;尤其是在实时控制和数据处理方面。J-TEXT&#xff08;Joint Texas Experimental Tokamak&#xff09;&#xff0c;作为一种先进的托卡马克装置&#xff…

Git基础(22):创建私人令牌和下拉代码

如何创建令牌和拉取项目代码 创建一个令牌&#xff0c;这里以gitee为例&#xff0c;注意将生成的令牌复制保存下拉 打开git bash 窗口&#xff0c;使用命令拉取项目 git clone https://oauth2:你的令牌项目地址(不要带https) #示例 git clone https://oauth2:845579xxxxxxxxx…

计算机组成原理(4)-----Cache的原理及相关知识点

目录 1.Cache的原理 2.Cache的性能 3.Cache和主存的映射方式 &#xff08;1&#xff09;全相联映射 &#xff08;2&#xff09;直接映射 &#xff08;3&#xff09;组相联映射 4.替换算法 (1)随机算法(RAND) (2)先进先出算法(FIFO) (3)近期最少使用(LRU) (4)最近不经…

基于springboot休闲娱乐代理售票系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把休闲娱乐代理售票管理与现在网络相结合&#xff0c;利用java技术建设休闲娱乐代理售票系统&#xff0c;实现休闲娱乐代理售票的信息化。则对于进一步提高休闲娱乐代理售票管理发展&#xff0c;丰富休闲娱乐代理售票管理经验能起到…

深入浅出JVM(一)之Hotspot虚拟机中的对象

本篇文章思维导图 对象的创建 对象的创建可以分为五个步骤:检查类加载,分配内存,初始化零值,设置对象头,执行实例构造器 类加载检查 HotSpot虚拟机遇到一条new指令,会先检查能否在常量池中定位到这个类的符号引用,检查这个类是否类加载过 没有类加载过就去类加载类加载过就进…

【前端素材】推荐实用的后台管理系统ebazer电商平台模板(附带源码)

一、需求分析 后台管理系统网站是指用于管理和控制网站、应用程序或系统后台运行的管理工具。它通常是网站或应用程序的管理者、管理员或内容编辑人员使用的界面&#xff0c;具有一系列功能来管理用户、内容、数据和系统设置。以下是后台管理系统网站的功能和特点&#xff1a;…

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(二)

文章目录 上一篇效果演示Puppeteer 修改浏览器的默认下载位置控制并发数错误重试并发控制 错误重试源码 上一篇 Puppeteer 使用实战&#xff1a;如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客&#xff08;一&#xff09; 效果演示 上一篇实现了一些基本功能&#xff0c;…

压缩感知为什么要进行“不相干欠采样”?

压缩感知理论的三个核心要素。1、不相干性信号欠采样&#xff1b;2、稀疏变换&#xff1b;3、非线性迭代重建。 为了通俗解释“不相干性信号欠采样”&#xff0c;我们可以借用一种生活中的例子——拼图。 例子 想象一下&#xff0c;我们有一张由数百片拼图块组成的完整画面。…

Java项目:20 基于SSM实现的支教管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 ssm支教管理系统&#xff08;前台后台&#xff09; 前台角色&#xff1a;支教学校志愿者 支教学校功能模块&#xff1a;支教学校查询报名职位…

Oracle conn / as sysdba遇到ORA-01031: insufficient privileges错误

背景 oracle 突然挂了&#xff0c;处于锁定状态&#xff0c;然后打算重新启动一下子。 遂 sqlplus /nolog conn / as sysdba 然后就出现了以下错误。。 ORA-01031: insufficient privileges 1.查了一圈&#xff0c;有说是 计算机 》 管理》本地用户和组》组》ORA_DBA&am…

《Linux运维总结:Ubuntu22.04忘记root密码解决方案》

一、解决方法 1、首先重新启动Ubuntu系统&#xff0c;然后快速按下shift键&#xff0c;以调出grub启动菜单&#xff0c;如下图所示&#xff1a; 2、在这里我们选择第二个&#xff08;Advance options for Ubuntu&#xff09;&#xff0c;选中后按下Enter键&#xff0c;如下图所…

三维GIS开发的就业前景

一、前言 三维GIS是一个伪概念,GIS是地理信息系统&#xff0c;三维GIS就是三维地理信息系统&#xff0c;在课本上&#xff0c;专业概念上&#xff0c;也没有这一说法吧&#xff0c;所以三维GIS&#xff0c;就是技术人员造概念拼凑造出来的&#xff0c;本质上就是GIS三维可视化…

车载软件架构Adaptive AUTOSAR —— 身份和访问管理和加密技术

车载软件架构Adaptive AUTOSAR —— 身份和访问管理和加密技术 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。…

FreeRTOS学习笔记——(任务调度)

这里写目录标题 一、开启任务调度器&#xff08;熟悉&#xff09;二、启动第一个任务&#xff08;熟悉&#xff09;2.1&#xff0c;prvStartFirstTask ()2.2&#xff0c; vPortSVCHandler () 三、任务切换&#xff08;掌握&#xff09; 一、开启任务调度器&#xff08;熟悉&…

【C++初阶】类和对象(中)

目录 一.类的6个默认成员函数 1.知识引入 ​编辑 2.构造函数 (1)概念 (2)语法特性 (3)特征 ①问题引入1 ②问题引入2 &#xff08;缺少默认构造函数&#xff09; 3.析构函数 (1)概念 (2)特性 4.拷贝构造函数 (1)概念 (2)特征 ①拷贝构造函数是构造函数的一…