版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE1基于SpringBoot的学生学习行为分析系统设计中文摘要随着互联网的快速发展,信息化技术越来越成熟,人们通过系统网络和数据信息就能够进行相关数据的分析,也能够通过网络系统让更多的人快速直观的查看分析结果,非常方便实用。在学生信息繁多且复杂的学校环境中,通过网络系统对学生的学习行为情况进行智能分析至关重要,通过智能分析不但方便教学,而且分析效率高,能够及时进行科学的判断,以便做出相应教学计划的改变,能够极大的促进教育行业的发展。为了能够更好的分析学习行为状况,促进学习行为分析行业的发展,本文将使用Idea软件开发平台,以Java语言为基础,SpringBoot为开放框架设计Web端学习行为分析系统。该系统可以对学生的学习行为进行分析,调整老师和学生的基本信息,记录分析的内容,最终可以将分析结果以可视化图表的形式展现,极大提高了分析效率。本文系统经过测试,功能较为完善,能够满足学生信息分析的需求,且界面友好使用方便,具有较好的实用价值。关键词:学习行为;SpringBoot;Java;可视化目录中文摘要 I目录 III第一章绪论 11.1研究的背景及意义 11.2发展现状 11.3研究思路 11.4章节安排 1第二章关键技术简介 32.1开发环境简介 32.2MySQL数据库 32.3Tomcat服务器 32.4SpringBoot框架 32.5JavaScript 42.6ApacheShiro安全框架 4第三章系统分析 53.1需求调研 53.2可行性分析 53.2.1技术可行性 53.2.2经济可行性 53.2.3操作可行性 53.2.4法律可行性 63.3系统功能分析 63.3.1系统总体功能 63.3.2管理员用例图 63.3.2老师用户用例图 73.4系统性能分析 73.4.1系统的安全性 73.4.2数据的完整性 83.4.3系统的可扩展性 83.5系统界面分析 8第四章系统架构及数据库设计 94.1系统框架的设计思想 94.2系统总体框架 94.3数据库的分析与设计 94.3.1数据库的概念结构设计 104.3.2数据库的逻辑结构设计 104.3.3数据库连接原理 15第五章详细设计 165.1用户管理 165.2角色管理 215.3部门管理 225.4岗位管理 245.5学生考勤管理 265.6考试成绩管理 285.7综合评测管理 285.8综合成绩统计 29第六章系统测试 336.1系统测试环境 336.2功能测试 336.3性能测试 346.4测试结果 34结论 35参考文献 36INDEX\o"S"\c"2"\z"2052"第一章绪论1.1研究的背景及意义随着现代化科技的快速发展,计算机各项技术的不断创新意味着我们已经进入信息化时代。很多发达国家和一些发展中国家开始大规模地使用计算机代替人工进行数据分析工作。无论是国内还是国外,教育都是备受重视的行业,如何高效的提升教育质量,掌握学生的学习行为能力是一个重要的课题。而现如今通过系统网络对学生的学习情况进行统计和分析,让用户无论何时何地都可以快速高效的掌握学生学习情况的相关信息是非常有效的解决方法。1.2发展现状计算机编程技术起源于国外,在国外有大量的利用大数据进行数据分析的系统,它们已经形成了一种成熟的商业体系,但是对于校园学习行为这种商业开发价值较低的系统并没有过多的开发实例。随着互联网科技的快速发展,国内的编程技术也逐年提升,再加上我国对于教育行业更加重视,目前各高校基本都有属于自己的教务系统,但一般没有学习行为分析系统。近年来各国学者都有提出构建学习行为分析系统的思想,例如我国的仇焕青教授等就提出了学习行为大数据挖掘与分析系统的构建方案。1.3研究思路本文拟设计的学生学习行为分析系统可用于分析学生在各个阶段的学习状态和成绩情况,并能够成为提高学校教育决策的有力工具,为老师在个性化教学的实施中提供针对性意见。老师用户可以根据系统数据及时了解每个学生近期的学习状况用于做出课程的针对性调整,而学生用户可以随时随地查看自己的出勤率、成绩和每学期的综合评测等信息,直观的感受自身学习状态的进步或退步,以便于个人及时做出调整。本系统将通过学生出勤率、考试成绩、老师评价等方面对学生的学习行为做综合分析,最后得出学习行为状况。之前学习行为分析的结果记录都是纯粹的人工分析,手工记录,这样的分析模式不但落后,而且反应迟缓容易出错,通过建立学习行为分析系统可以方便快捷的处理学生信息,提高工作效率和教学质量。而且该系统操作简单,内容全面可以给用户带来个性化的视觉感受。1.4章节安排本文遵循软件工程开发思想对学习行为分析系统进行设计和开发。本文章节安排如下:第一章为绪论,本章着重介绍了学习行为分析系统研究的意义及背景,简要分析了当前国内外对于该项研究的现状以及开发研究的思路。第二章为关键技术简介,简要介绍了开发系统所使用的各项开发工具及技术。第三章为系统分析,在系统正式投入开发工作之前对系统的可行性,系统功能,系统性能等多个方面进行分析。第四章为系统架构及数据库设计,本章给出了系统的总体功能架构,以及数据库表的设计思路及实现过程。第五章为详细设计,本章详细介绍了实现系统各部分功能的具体方法和过程,以及核心代码的编写思路。第六章为系统测试,本章从系统功能和性能两个方面,列举出测试用例及测试结果,并做出总结。INDEX\o"S"\c"2"\z"2052"第二章关键技术简介2.1开发环境简介本系统的开发过程以Java语言作为后端系统开发的基石,使用HTML和JavaScript等多项前端技术开发用户页面,使用了Thymeleaf模板可单独对HTML页面在服务器访问。应用了当前比较主流的SpringBoot作为系统的开发框架。使用Idea软件平台作为程序开发工具,MySQL数据库存储数据以及Tomcat服务器进行网站支持,使用Shiro安全框架对系统做安全控制。2.2MySQL数据库MySQL是当下流行的关系型数据库,也是一款跨平台的、通用性极高的数据库系统,通常配合高级开发语言进行使用。由于MySQL是一种关系型数据库管理系统,它以表为单位存储相关数据,这样就增加了读取速度并提高了灵活性。MySQL数据库使用的SQL语言是用于访问数据库的标准化语言,简单易学。该数据库一般使用在中小型系统和对于数据的需求量不是太大,响应速度要求不是太高的系统中。2.3Tomcat服务器Tomcat是一款运行JavaScript程序的中间件服务器,使用Tomcat首先要安装和Tomcat同等位数相关的JDK,然后对JDK的环境变量进行配置,配置成功后,默认安装Tomcat服务器,将系统站放置在Tomcat的相应的文件夹下就能对服务器进行使用。2.4SpringBoot框架SpringBoot是一款开箱即用框架,它提供了多项默认的配置大量简化了开发者在项目中的工作量,让使用者能够更快的入门。它在主程序执行main函数时就可以运行,也可以打包应用为jar文件包并通过命令行使用java-jar命令来运行Web应用。它遵循"约定优先于配置"的原则,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。它的主要优点有:(1)具有推荐注解、自动配置、快速集成新技术的能力。(2)没有冗余代码的生成和XML配置的要求。(3)内嵌Tomcat、Jetty、Undertow等web容器,无需以war包形式部署,提供运行时的应用监控。2.5JavaScriptJavaScript是一种内嵌脚本语言。随着它的不断发展更新,目前已经被广泛应用于各类Web应用的开发,常用来为网页添加各式各样的动态功能。它能为用户提供更流畅美观的浏览效果。JavaScript使用最多的方式是作为脚本嵌入在HTML代码中来实现自身的功能。2.6ApacheShiro安全框架ApacheShiro是Java语言开发的一种安全框架。Shiro可以帮助我们完成认证、授权、Web的集成和缓存等功能。它可以完美的应用于JavaSE和JavaEE两种环境。它最大的特点是易于理解的JavaSecurityAPI,简单的身份认证和支持多种数据源以及对角色的简单授权。第三章系统分析3.1需求调研学习行为分析系统是根据具体学校的教学情况和学生学习情况设计的一个针对性分析系统,由计算机来代替人工执行一系列的操作。在系统分析中,如果所有的记录全部采用人工来分析,将会是一个特别繁琐的过程,并且记录过程也容易出错,一旦记录损毁,所有的组织活动就会引起混乱,所以采用计算机系统来分析整个学习行为的情况是非常有必要的,该系统能够将整个学习情况记录在计算机数据库中,将出错率尽可能减少,更方便,更高效的得出学生学习行为的分析结果。在系统设计开始之前,我计划到各类学习网站及学校实地问卷调研获取学生的公开信息作为数据源,目前已经掌握的数据来源有六安市金寨县长岭中学部分学生数据。3.2可行性分析任何系统的开发都会存在失败的风险,所以在系统开发之初要对各方面进行综合考虑和调研。3.2.1技术可行性本系统采用的是较为常见且熟悉的MySQL数据库作为数据的存储仓库,且系统的数据量较小。后端开发语言采用Java,前端则以HTML语言和Javascript语言为基础。所以在开发技术方面较为熟悉,能够熟练应用编程工具Idea,可以掌握大部分的编程开发技巧。所以本系统的开发在技术方面是可行的。3.2.2经济可行性经济可行性主要包括推定项目的开发费用,以及推定项目的开发费用是否高于预期总利润等。该系统的开发环境没有涉及收费项目,也没有参加商业运作。所以,本系统的开发在经济方面是可行的。3.2.3操作可行性由于科学技术的飞速发展,计算机已经普及到世界的各个地区,这就为系统使用人员在硬件方面解决了后顾之忧。另外,用户对于计算机的使用较之前相比已经有了很大的提升,对于系统的认识和使用能力也有显著地提高,这就为该系统的推广提供了良好的先决条件。同时,本系统界面设置较为人性化,布局合理,层次鲜明,用户操作起来比较简单,可以使用户无需进行学习便可熟练掌握其操作流程。所以,本系统在操作方面是可行的。3.2.4法律可行性整个系统开发过程中不存在抄袭,不用于其他项目,所有功能在法律上不存在侵权。所以,本系统在法律方面是可行的。通过上述所有分析,整个系统的开发难度适中,且不用于商业运作,从各方面综合考虑该系统的开发满足所有可行性的要求。3.3系统功能分析3.3.1系统总体功能本系统拟分为管理员用户角色和教师用户角色,不同的角色能够使用不同的功能模块。系统最大的特点就是功能全面,结构简单,该系统将实现以下基本功能:(1)管理员用户:①用户管理功能:该功能用来管理系统所有用户的各项基本信息,能够添加或删除用户等。②角色管理功能:可以查看用户权限并且修改权限。③部门管理功能:修改学校里的班级组成信息,可以修改班级信息等。④岗位管理功能:修改用户的岗位职责和身份。⑤字典管理功能:用来管理字段类型。(2)教师用户:①学生考勤管理功能:记录学生的考勤情况,显示出勤天数。②考试成绩管理功能:记录学生的各科考试成绩和平均成绩。③综合评级管理功能:老师用户对学生表现的综合评价。④综合成绩管理功能:通过出勤率、考试成绩以及老师评价等方面以可视化图表的形式展示对学生学习行为的分析结果。3.3.2管理员用例图管理员是系统的核心用户,管理员账户可以使用系统的所有功能,对其他账户也有控制和修改的权限。图3-1管理员用例图3.3.2老师用户用例图图3-2老师用户用例图3.4系统性能分析3.4.1系统的安全性本系统需要存储大量重要的学生信息,对于信息进行合理的保密技术,保证用户的使用安全是非常有必要的。所以在系统设计时拟采用ApacheShiro安全框架为系统提供安全保障。3.4.2数据的完整性在数据存储及分析时都需要保证数据的完整性,以免因为数据的缺失影响系统的分析结果或者更严重的后果,所以在系统开发时应该满足以下几点要求:(1)各种记录信息的内容不能为空。(2)各种数据间相互联系的正确性。(3)相同数据在不同记录中的一致性。3.4.3系统的可扩展性当前所设计的系统功能只是一小部分,为了在以后对系统功能及性能方面继续强化或扩展,应该考虑系统的可扩展性,并留有必要的接口以供后续改进。3.5系统界面分析系统的界面设计要符合用户逻辑思考顺序,美观大方,简洁易懂,对于用户提高工作效率有着重要的影响。(1)输出设计输出设计是用户通过对计算机输入信息以后,计算机经过了复杂的处理,然后在输出设备是显示处理结果的过程。输出的结果是什么样式,与代码的优化有关,代码执行效率高,输出结果就会清楚明了减少错误。(2)输入设计输入是用户对信息输入计算机系统的操作,通过键盘鼠标把需要的信息输入计算机,系统会对输入的部分经行处理。例如新用户注册,就需要通过系统输入注册人的姓名,年龄,身份号,电话号码等各种信息。通过设计,拟将系统页面分为三大部分。第一部分为用户登录注册界面,用户通过输入用户名和密码以及图形验证码进行登录。第二部分为功能选项展示界面,用户登录成功后会看到以下拉框形式排列的相应功能选项,用户只需点击特定功能按钮即可查看结果。第三部分为数据结果展示界面,用户点击指定功能选项后,会展示相应的执行结果,结果的展示方式为数据列表或可视化图形。
INDEX\o"S"\c"2"\z"2052"INDEX\o"S"\c"2"\z"2052"第四章系统架构及数据库设计4.1系统框架的设计思想本系统的设计思想关键在于简洁快速,在项目开始之前,需要先部署开发环境,不然项目无法运行。而配置环境,首选是使用集成的套件部署,即快捷且不容易出错,虽然也有不能灵活配置的缺点,但对于日常开发是完全足够的。常用的JSP集成套件有upupw、JSPstudy、xampp等。系统用户界面布局需要考虑技术性和合理性,还要符合艺术审美以及人文情怀,这才会直接影响用户的使用感受。4.2系统总体框架图4-1为该系统的总体框架图。系统分为教师和管理员两个用户角色,教师用户对应学生考勤管理,学生考试成绩管理,学生评级管理和综合成绩管理等四个功能。管理员用户则对应用户管理,角色权限管理,部门管理,学生行为管理和字典管理等五个功能。图4-1系统总体框架4.3数据库的分析与设计数据库作为计算机信息系统的核心技术,在系统开发中占据重要的地位。有了数据库系统的支持,系统才能进行信息的收集、整理、存储、检索、更新等操作。数据库的设计情况直接影响到整个系统的质量和效率。4.3.1数据库的概念结构设计(1)管理员信息E-R图图4-2管理员信息E-R图(2)老师用户信息E-R图图4-3老师用户信息E-R图4.3.2数据库的逻辑结构设计数据库概念模型独立于任何特定的数据库分析系统。因此,需要根据具体使用的数据库分析系统的特点进行转换。(1)用户信息表主要是记录了用户的基本信息。表结构如表4-1所示。表4-1用户信息表字段名数据类型长度允许空是否主键说明user_idint20否是用户IDdept_idint20否否部门序号login_namevarchar30否否登录账号user_namevarchar30否否登录昵称user_typevarchar2否否用户类型emailvarchar50否否邮箱phonenumbervarchar11否否手机号码sexvarchar1否否性别avatarvarchar100否否头像passwordvarchar50否否密码statusvarchar1否否账号状态create_byvarchar64否否创建者create_timedatetime0否否创建时间updata_byvarchar64否否更新者updata_timedatetime0否否更新时间(2)学生成绩表主要是记录了学生的成绩信息,表中包含学生的基本信息和考试信息,还有老师的评分等。表结构如表4-2所示。表4-2学生成绩信息表列名数据类型长度允许空是否主键说明score_codeint20否是学生编号st_namevarchar50否否姓名st_classvarchar50否否班级cls_languageint8否否语文cls_matchint8否否数学englishint8否否英语biologyint8否否生物chemistryint8否否化学physicsint8否否物理politicsint8否否政治sportsint8否否体育musicint8否否音乐artsint8否否美术averageint8否否平均成绩teacher_scoreint8否否老师评分create_timedatetime0否否创建时间update_timedatetime0否否更新时间(3)出勤表主要是记录了学生的出勤情况。表结构如表4-3所示。表4-3出勤信息表列名数据类型长度允许空是否主键说明at_codeint4否是出勤编号st_namevarchar50否否姓名attend_timeint0否否出勤次数create_timedatetime0否否创建时间update_timedatetime0否否更新时间(4)综合表主要是根据成绩表中的学生学号、平均成绩和老师评分以及出勤表中的出勤次数来计算综合成绩。表结构如表4-4所示。表4-4综合成绩表列名数据类型长度允许空是否主键说明at_codeint4否是出勤编号st_codevarchar50否否学生姓名外键averageint8否否平均成绩外键teacher_scoreint8否否老师评分外键attend_timeint8否否出勤次数外键(5)数据字典表主要记录了常用的学生信息以及成绩信息,通过键值对的方式与表中数据一一对应,方便在编程方法中通过回调函数在表中快速获取相关数据。表结构如表4-5所示。表4-5数据字典表列名数据类型长度允许空是否主键说明dict_codeint4否是出勤编号dict_sortvarchar50否否学生姓名外键dict_labelint8否否平均成绩外键dict_valueint8否否老师评分外键dict_typeint8否否出勤次数外键css_classvarchar100否否样式属性list_classvarchar100否否表格回显样式is_defaultchar1否否是否默认statuschar1否否状态create_byvarchar64否否创建者create_timedatetime0否否创建时间update_byvarchar64否否更新者update_timedatetime0否否更新时间(6)基于角色的访问控制权限(RBAC)。该系统拟设计用户权限控制功能,根据不同的用户角色,管理员可以给用户赋予不同的操作权限。该功能的实现需要设计以下数据库表:表4-6角色表列名数据类型长度允许空是否主键说明role_idbigint20否是角色idrole_namevarchar30否否角色名称role_keyvarchar100否否角色权限字符串role_sortint4否否显示顺序data_scopechar1否否数据范围statuschar1否否角色状态del_flagchar1否否删除标志create_byvarchar64否否创建者create_timedatetime0否否创建时间update_byvarchar64否否更新者update_timedatetime0否否更新时间表4-7角色部门表列名数据类型长度允许空是否主键说明role_idbigint20否是角色iddept_idbigint20否是部门id表4-8角色菜单表列名数据类型长度允许空是否主键说明role_idbigint20否是角色idmenu_idbigint20否是菜单id表4-9部门表列名数据类型长度允许空是否主键说明dept_idbigint20否是部门idparent_idbigint20是否父部门idancestorsvarchar50是否祖级列表dept_namevarchar30是否部门名称order_numint4是否显示顺序leadervarchar20是否负责人phonevarchar11是否联系电话emailvarchar50是否部门邮箱statuschar1是否部门状态del_flagchar1是否删除标志create_byvarchar64是否创建者create_timedatetime0是否创建时间update_byvarchar64是否更新者update_timedatetime0是否更新时间表4-10菜单表列名数据类型长度允许空是否主键说明menu_idbigint20否是菜单idmenu_namevarchar50否否菜单名称parent_idbigint20是否父菜单idorder_numint4是否显示顺序urlvarchar200是否请求地址targetvarchar20是否打开方式menu_typechar1是否菜单类型visiblechar1是否菜单显示状态permsvarchar100是否权限标识iconvarchar100是否菜单图标create_byvarchar64是否创建者create_timedatetime0是否创建时间update_byvarchar64是否更新者update_timedatetime0是否更新时间访问控制权限功能的实现步骤为:(1)通过4-6角色表中的role_id和data_scope(能够访问的数据范围,1为全部数据,2为自定义数据,3为本部门数据)属性决定了系统用户的访问权限。(2)表4-7角色部门表中记录了对应的角色id和部门id,角色id对应表4-6角色表中的角色id,部门id对应表4-9部门表中的部门id,以此来对应控制角色能够访问的部门信息。(3)表4-8角色菜单表中记录了对应的角色id和菜单id,角色id对应表4-6角色表中的角色id,菜单id对应表4-10菜单表中的菜单id,以此来对应控制角色能够访问的功能菜单。4.3.3数据库连接原理本系统采用JDBC方法与数据库进行连接操作,该方法的优势在于只需将MySQL数据库的jar包导入相应的工程中,就可以快速、便捷的与数据库取得连接。在编码中中,使用Class.forName()方法来加载驱动程序,再使用DriverManager的getConnection()方法就可以创建一个数据库连接。其操作步骤如图4-4所示:图4-4DAO模式类图第五章详细设计在系统开发的过程中,通过需求分析阶段明确了系统的设计需求,通过系统设计阶段明确了系统的总体框架以及数据库表的设计,接下来就到了系统编码设计阶段。系统编码阶段要融合此前各个阶段的工作成果,将设计阶段的理论架构转化为物理现实,因此系统编码阶段是对此前系统分析和设计的总结性工作,也是系统开发的关键步骤。5.1用户管理系统的用户管理功能是提供给管理员账户使用的功能,专门用于管理系统用户的个人账号和密码,可以对账户密码进行修改等。同时,在系统设计时也为普通用户设计了登录窗口,制作一个风格较好的登录窗户也是要经过反复的思考和设计,最后决定该系统采用的登陆界面采取窗口的样式和风格。如图5-1所示为用户登录界面。图5-1用户登录界面登录验证的部分核心代码如下:publicclassSysLoginControllerextendsBaseController
{
@GetMapping("/login")
publicStringlogin(HttpServletRequestrequest,HttpServletResponseresponse)
{
if(ServletUtils.isAjaxRequest(request))
{
returnServletUtils.renderString(response,"{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}");
}
return"login";
}
@PostMapping("/login")
@ResponseBody
publicAjaxResultajaxLogin(Stringusername,Stringpassword,BooleanrememberMe)
{
UsernamePasswordTokentoken=newUsernamePasswordToken(username,password,rememberMe);
Subjectsubject=SecurityUtils.getSubject();
try
{
subject.login(token);
returnsuccess();
}
catch(AuthenticationExceptione)
{
Stringmsg="用户或密码错误";
if(StringUtils.isNotEmpty(e.getMessage()))
{
msg=e.getMessage();
}
returnerror(msg);
}
}
@GetMapping("/unauth")
publicStringunauth()
{
return"error/unauth";
}
}通过Ajax技术实现web端与服务端数据库的异步传输,可以实现网页局部数据更新,效率更高。当用户输入用户名和密码时,通过Ajax实现快速传递、比对数据,如果用户表中的数据与用户输入数据比对成功则登录成功,否则会返回“用户或密码错误”的信息提示。图5-2则为登录成功后的系统主界面。在功能栏的用户管理界面主要用来管理不同身份的注册用户,这其中有学生、老师、学校领导等各个不同的用户。图5-2系统主页界面图5-3所示为用户管理界面。在该界面,管理员账户可以添加、删除账户,修改账户信息等。图5-3用户管理界面添加用户信息的部分核心代码如下:
@GetMapping("/add")
publicStringadd(ModelMapmmap)
{
mmap.put("roles",roleService.selectRoleAll());
mmap.put("posts",postService.selectPostAll());
returnprefix+"/add";
}
@RequiresPermissions("system:user:add")
@Log(title="用户管理",businessType=BusinessType.INSERT)
@PostMapping("/add")
@ResponseBody
publicAjaxResultaddSave(@ValidatedSysUseruser)
{
if(UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user.getLoginName())))
{
returnerror("新增用户'"+user.getLoginName()+"'失败,登录账号已存在");
}
elseif(UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
{
returnerror("新增用户'"+user.getLoginName()+"'失败,手机号码已存在");
}
elseif(UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
{
returnerror("新增用户'"+user.getLoginName()+"'失败,邮箱账号已存在");
}
user.setSalt(ShiroUtils.randomSalt());
user.setPassword(passwordService.encryptPassword(user.getLoginName(),user.getPassword(),user.getSalt()));
user.setCreateBy(ShiroUtils.getLoginName());
returntoAjax(userService.insertUser(user));
}通过系统的添加用户界面获取文本框中的内容信息,将用户信息添加至数据库的用户表中,并对于用户表中是否存在相同的账号,手机号及邮箱进行检索比对,若不存在相同的部分则添加成功。修改用户信息的部分核心代码如下:
@GetMapping("/edit/{userId}")
publicStringedit(@PathVariable("userId")LonguserId,ModelMapmmap)
{
mmap.put("user",userService.selectUserById(userId));
mmap.put("roles",roleService.selectRolesByUserId(userId));
mmap.put("posts",postService.selectPostsByUserId(userId));
returnprefix+"/edit";
}
@RequiresPermissions("system:user:edit")
@Log(title="用户管理",businessType=BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
publicAjaxResulteditSave(@ValidatedSysUseruser)
{
userService.checkUserAllowed(user);
if(UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
{
returnerror("修改用户'"+user.getLoginName()+"'失败,手机号码已存在");
}
elseif(UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
{
returnerror("修改用户'"+user.getLoginName()+"'失败,邮箱账号已存在");
}
user.setUpdateBy(ShiroUtils.getLoginName());
returntoAjax(userService.updateUser(user));
}通过数据库用户表获取用户ID,确定需要更新的用户。再通过系统的修改用户界面获取文本框中的修改内容信息,将修改后的用户信息添加至数据库的用户表中,并对于用户表中是否存在相同手机号及邮箱进行检索比对,若不存在相同的部分则修改成功。5.2角色管理图5-4为角色管理界面。角色管理功能主要是针对不同用户的身份进行权限的调整,这个功能可以查看所有的用户,而且可以看到不同用户对于系统的使用权限和创建时间,还可以查看该用户的使用状态,是否在线。默认最高权限为超级管理员角色。该权限访问功能的实现主要应用的是基于角色的访问控制框架(RBAC),在数据库中创建,用户表,角色表以及角色功能关联表等,管理员可以给用户赋予不同的角色,不同的角色关联的系统功能不同,所能够访问的系统页面也不同。图5-4角色管理界面实现角色访问控制权限的部分代码如下:
@GetMapping("/authDataScope/{roleId}")
publicStringauthDataScope(@PathVariable("roleId")LongroleId,ModelMapmmap)
{
mmap.put("role",roleService.selectRoleById(roleId));
returnprefix+"/dataScope";
}
@RequiresPermissions("system:role:edit")
@Log(title="角色管理",businessType=BusinessType.UPDATE)
@PostMapping("/authDataScope")
@ResponseBody
publicAjaxResultauthDataScopeSave(SysRolerole)
{
roleService.checkRoleAllowed(role);
role.setUpdateBy(ShiroUtils.getLoginName());
if(roleService.authDataScope(role)>0)
{
ShiroUtils.setSysUser(userService.selectUserById(ShiroUtils.getSysUser().getUserId()));
returnsuccess();
}
returnerror();
}
@GetMapping("/index")
publicStringindex(ModelMapmmap)
{
//取身份信息
SysUseruser=ShiroUtils.getSysUser();
//根据用户id取出菜单
List<SysMenu>menus=menuService.selectMenusByUser(user);
mmap.put("menus",menus);
mmap.put("user",user);
mmap.put("copyrightYear",Global.getCopyrightYear());
mmap.put("demoEnabled",Global.isDemoEnabled());
return"index";
}在创建用户时会给用户分配角色属性,通过从角色数据表中获取到当前登录用户的角色属性,通过第四章所述数据表之间的联系确定该用户对系统的使用权限,使用编码获取到相应权限即可在菜单栏根据用户身份信息取出对应的功能菜单信息。5.3部门管理图5-5为部门管理界面。部门管理功能可以对学校内部的部门组成进行调整,例如增加一个新的年级,增加一个新的班级或增加一个新的部门等。图5-5部门管理界面图5-6为添加部门窗口,正确填写添加信息后点击确定即可添加成功。 图5-6新增部门界面新增部门信息的部分核心代码如下:@GetMapping("/add/{parentId}")
publicStringadd(@PathVariable("parentId")LongparentId,ModelMapmmap)
{
mmap.put("dept",deptService.selectDeptById(parentId));
returnprefix+"/add";
}
@Log(title="部门管理",businessType=BusinessType.INSERT)
@RequiresPermissions("system:dept:add")
@PostMapping("/add")
@ResponseBody
publicAjaxResultaddSave(@ValidatedSysDeptdept)
{
if(UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
{
returnerror("新增部门'"+dept.getDeptName()+"'失败,部门名称已存在");
}
dept.setCreateBy(ShiroUtils.getLoginName());
returntoAjax(deptService.insertDept(dept));
}通过系统的添加部门界面获取文本框中的内容信息,将用户信息添加至数据库的部门表中,并对于部门表中是否存在相同的部门名称进行检索比对,若不存在相同的部分则添加成功。5.4岗位管理图5-7为系统的岗位管理页面。岗位管理功能主要是调整学生或者教师队伍的岗位情况,学校中老师的岗位发生变动的时候,可以通过这个功能进行重新设置岗位。图5-7岗位管理界面图5-8为修改岗位界面,正确填写修改信息后点击确定即可修改成功。图5-8调整岗位界面修改岗位信息的部分核心代码如下:
@GetMapping("/edit/{postId}")
publicStringedit(@PathVariable("postId")LongpostId,ModelMapmmap)
{
mmap.put("post",postService.selectPostById(postId));
returnprefix+"/edit";
}
@RequiresPermissions("system:post:edit")
@Log(title="岗位管理",businessType=BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
publicAjaxResulteditSave(@ValidatedSysPostpost)
{
if(UserConstants.POST_NAME_NOT_UNIQUE.equals(postService.checkPostNameUnique(post)))
{
returnerror("修改岗位'"+post.getPostName()+"'失败,岗位名称已存在");
}
elseif(UserConstants.POST_CODE_NOT_UNIQUE.equals(postService.checkPostCodeUnique(post)))
{
returnerror("修改岗位'"+post.getPostName()+"'失败,岗位编码已存在");
}
post.setUpdateBy(ShiroUtils.getLoginName());
returntoAjax(postService.updatePost(post));
}通过数据库岗位表获取岗位ID,确定需要更新的用户。再通过系统的修改岗位界面获取文本框中的修改内容信息,将修改后的用户信息添加至数据库的岗位表中,并对于岗位表中是否存在相同岗位及岗位编号进行检索比对,若不存在相同的部分则修改成功。5.5学生考勤管理图5-9为考勤管理界面。学生考勤管理功能主要是提供给老师用户使用的功能,针对学生学习过程中的出勤情况进行记录,例如学生如果有旷课或者请假等情况,可以通过该功能进行记录。图5-9考勤管理界面学生考勤功能的部分核心代码如下:通过查询数据库中考勤表的数据内容,将数据显示到页面上。@RequiresPermissions("app:attend:list")
@PostMapping("/list")
@ResponseBody
publicTableDataInfolist(AppAttendappAttend)
{
startPage();
List<AppAttend>list=appAttendService.selectAppAttendList(appAttend);
returngetDataTable(list);
}添加学生考勤数据。@GetMapping("/add")
publicStringadd()
{
returnprefix+"/add";
}
@RequiresPermissions("app:attend:add")
@Log(title="学生考勤",businessType=BusinessType.INSERT)
@PostMapping("/add")
@ResponseBody
publicAjaxResultaddSave(AppAttendappAttend)
{
returntoAjax(appAttendService.insertAppAttend(appAttend));
}
通过学生id修改学生考勤数据。
@GetMapping("/edit/{atCode}")
publicStringedit(@PathVariable("atCode")IntegeratCode,ModelMapmmap)
{
AppAttendappAttend=appAttendService.selectAppAttendById(atCode);
mmap.put("appAttend",appAttend);
returnprefix+"/edit";
}
@RequiresPermissions("app:attend:edit")
@Log(title="学生考勤",businessType=BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
publicAjaxResulteditSave(AppAttendappAttend)
{
returntoAjax(appAttendService.updateAppAttend(appAttend));
}
删除学生考勤数据。
@RequiresPermissions("app:attend:remove")
@Log(title="学生考勤",businessType=BusinessType.DELETE)
@PostMapping("/remove")
@ResponseBody
publicAjaxResultremove(Stringids)
{
returntoAjax(appAttendService.deleteAppAttendByIds(ids));
}
}5.6考试成绩管理图5-10为学生考试成绩管理界面。该功能是用来记录学生的考试成绩,这也是学生学习行为的重要参考,对于学生的学习行为分析有着至关重要的影响。图5-10考试成绩管理界面5.7综合评测管理图5-11为综合评测界面。综合评测是根据学生考试的平均成绩、出勤情况和老师评分三个方面以6:3:1的比例分析得出的结果,能够全面分析学生的学习行为。图5-11综合评测界面5.8综合成绩统计图5-12为综合成绩统计图表。该功能是对学生的学习情况进行全面的分析,利用Echar图表对分析结果进行可视化展示,让用户可以直观的看到学生的总体学习情况以及通过学生数据进行合理分析后的结果。对于学习情况的分析采用K均值聚类算法,该算法将学生信息分为K个分组,并随机选取K个对象作为初始的聚类中心,通过计算每个对象与聚类中心的距离从而得出分析结论。图5-12综合成绩统计界面以图5-12中的学生成绩变化情况为例介绍调用Echarts图表的部分核心代码:首先调用Echarts图表。varlineChart=echarts.init(document.getElementById("echarts-line-chart"));
varlineoption={
title:{
text:''
},
tooltip:{
trigger:'axis'
},
legend:{
data:['日常测试','每月月考','期中考试','期末考试','模拟考试']
},
grid:{
x:40,
x2:40,
y2:24
},
calculable:true,设置X轴。
xAxis:[
{
type:'category',
boundaryGap:false,
data:['初一(1)班','初一(2)班','初一(3)班','初二(1)班','初二(2)班','初二(3)班','初三(1)班']
}
],设置Y轴。
yAxis:[
{
type:'value',
}
],设置考试成绩线性变化数据。
series:[
{
name:'日常测试',
type:'line',
data:[98,99,97,80,84,90,99],
markLine:{
data:[
{type:'average',name:'平均值'}
]
}
},
{
name:'每月月考',
type:'line',
data:[89,90,92,89,98,90,70],
markLine:{
data:[
{type:'average',name:'平均值'}
]
}
},
{
name:'期中考试',
type:'line',
data:[80,96,72,99,80,70,98],
markLine:{
data:[
{type:'average',name:'平均值'}
]
}
},
{
name:'期末考试',
type:'line',
data:[61,80,90,88,78,80,90],
markLine:{
data:[
{type:'average',name:'平均值'}
]
}
}
,
{
name:'模拟考试',
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学第四学年(深度学习)图像识别模型训练测试题及答案
- 云南省楚雄州双柏县2026届初三下英语试题期中模拟试题含解析
- 山西省吕梁柳林县联考2026届初三(数学试题文)4月第一次综合练习试卷含解析
- 四川省乐山四中学2026届初三下学期第一次半月考语文试题试卷含解析
- 陕西省商洛市商南县2025-2026学年初三下学期研七考试英语试题含解析
- 云南省石林彝族自治县2025-2026学年初三物理试题二模试卷含解析
- 山东省潍坊市寿光世纪校2026届初三下学期期末教学质量检测试题英语试题含解析
- 浙江省湖州市南浔区重点名校2026届初三年级第一次联考试卷语文试题含解析
- 重庆市江津区七校2025-2026学年初三第一次暑假作业检测试题语文试题试卷含解析
- 2026年土壤酸化与管理对策
- 人教统编版六年级语文下册第二单元《习作:写作品梗概》公开课教学课件
- 2026年3月山东济南轨道交通集团运营有限公司社会招聘备考题库附参考答案详解(典型题)
- 2026内蒙古环投集团社会招聘17人笔试备考试题及答案解析
- 2026年高考物理二轮复习:专题16 热学(复习讲义)(全国适用)(原卷版)
- TSG 08-2026 特种设备使用管理规则
- 汉唐美术空间表现研究:以敦煌壁画为中心
- 两段式煤气发生炉项目环境影响评估报告
- 建功新时代做一名合格的共青团员
- JJF 1059.1-2012测量不确定度评定与表示
- 河北唐山遵化经济开发区工作岗位竞聘【共500题含答案解析】模拟检测试卷
- 第二章 运动的守恒量和守恒定律
评论
0/150
提交评论