毕业设计(论文)-springboot教师工作量计算系统设计_第1页
毕业设计(论文)-springboot教师工作量计算系统设计_第2页
毕业设计(论文)-springboot教师工作量计算系统设计_第3页
毕业设计(论文)-springboot教师工作量计算系统设计_第4页
毕业设计(论文)-springboot教师工作量计算系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生毕业论文(设计)题目springboot教师工作量计算系统学院XXXXX专业班级XXXXX学生姓名XXXX指导教师XXXX撰写日期:2022年9月10日目录TOC\o"1-3"\h\u摘要 摘要随着教育事业的发展,对教学质量的评价不仅表现在学生质量上,而且还反映在教职工队伍素质上;为了提高教师的工作效率,分析了学校日常教学管理工作的统计特点,加强对教师绩效的考核,而绩效考核的主要指标是教师工作量的大小。因此需要做出套及时有效的系统,帮助教学管理人员对教师工作量进行管理和查询;解决由人工操作带来的许多错误和诸多不便,减轻管理人员的劳动强度,达到更好地利用资源,提高工作效率;同时也便于教师本人对工作量的查询及核实。在实际应用中,这套系统的必要性将得到充分的体现。论文针对在教师工作量计算系统信息数据规模大,管理员和教师用户需要对教师工作量涉及到的信息进行管理的需求,设计了教师工作量计算系统的框架,给出了教师工作量计算系统的总体设计,并对教师工作量计算系统的架构及关键模块的实现过程进行了详细论述。采用Java语言和MySQL数据库技术,基于springboot框架实现了一个完整系统的设计,为使用者提供了良好的教师工作量计算系统。关键词:教师工作量计算系统;Java;MySQL;springboot框架AbstractWiththedevelopmentofeducation,theevaluationofteachingqualityisnotonlyreflectedinthequalityofstudents,butalsoreflectedinthequalityofteachingstaff;Inordertoimprovetheworkefficiencyofteachers,thispaperanalyzesthestatisticalcharacteristicsofdailyteachingmanagementinschools,andstrengthenstheassessmentofteachers'performance.Themainindicatorofperformanceassessmentistheworkloadofteachers.Therefore,itisnecessarytomakeatimelyandeffectivesystemtohelpteachingmanagersmanageandquerytheworkloadofteachers;Solvemanyerrorsandinconveniencescausedbymanualoperation,reducethelaborintensityofmanagementpersonnel,achievebetteruseofresourcesandimproveworkefficiency;Itisalsoconvenientforteacherstoqueryandverifytheworkload.Inpracticalapplication,thenecessityofthissystemwillbefullyreflected.Inviewofthelargescaleofinformationdataintheteacherworkloadcalculationsystemandtheneedofadministratorsandteacheruserstomanagetheinformationinvolvedintheteacherworkload,thepaperdesignstheframeworkoftheteacherworkloadcalculationsystem,givestheoveralldesignoftheteacherworkloadcalculationsystem,anddiscussesindetailthearchitectureoftheteacherworkloadcalculationsystemandtheimplementationprocessofkeymodules.UsingJavalanguageandMySQLdatabasetechnology,acompletesystemdesignisimplementedbasedonthespringbootframework,providinguserswithagoodteacherworkloadcalculationsystem.Keywords:Teacherworkloadcalculationsystem;Java;MySQL;Springbootframework第1章绪论研究背景随着计算机技术的飞速发展,计算机在各行各业中的应用迅速普及,计算机的应用在工作量管理中同样也得到了飞速的发展。对于工作量管理最基层的管理之一工作量管理来说,利用计算机实现工作量管理等日常工作来提高办事效率,是适应当今社会发展要求,推动工作量管理领域现代化快速发展的必要条件。虽然工作量只是工作量管理工作的一个环节,但是工作量管理是一项琐碎、复杂而又十分细致的工作。日常等工作量非常的大,如果用手工来操作,不仅工作量大而且容易出现错误。而利用计算机就不同了,一个完善的工作量管理系统可以帮你解决所有这方面的问题。同时计算机具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长等。这些优点能够极大地提高工作量管理管理的效率达到事半功倍的效果。1.2研究意义我们现在所做的课题就是在目前的情形下,从学校的现有的条件实际出发,利用个人所拥有的计算机硬件设备和软件条件,从思想上,工作思维和工作方式做起,实现一整套关于学校用户工作量管理系统的软件来实现一些基本信息的维护。为学校的工作量管理人员减少点负担,从根本上解决用手工操作工作量大且容易出错的问题,同时,这也是学校工作量管理管理领域以后发展的必然趋势。1.3论文结构与章节安排论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对网站需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:第一章:引言。第一章主要介绍了课题研究的背景,系统开发的意义和本文的研究内容与主要工作。第二章:系统需求分析。第二章主要从系统的用户、功能等方面进行需求分析。第三章:系统设计。第三章主要对系统框架、系统功能模块、数据库进行功能设计。第四章:系统实现。第四章主要介绍了系统框架搭建、系统界面的实现。第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试第六章:总结第2章相关技术2.1开发技术本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,ElementUI组件库使页面快速成型。后端部分:采用SpringBoot作为开发框架,同时集成MyBatis、Redis等相关技术。2.2Java简介Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(EnterpriseJavaBeans)的全面支持,JavaservletAPI,JSP(Javaserverpages),和XML技术。Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。2.3MVVM模式MVVM是Model-View-ViewModel的简写。它本质上就是MVC的改进版。MVVM就是将其中的View的状态和行为抽象化,让我们将视图UI和业务逻辑分开。当然这些事ViewModel已经帮我们做了,它可以取出Model的数据同时帮忙处理View中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了诸如Binding、DependencyProperty、RoutedEvents、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。2.4B/S结构B/S(Browser/Server)比前身架构更为省事的架构。它借助Webserver完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果,不需要考虑不停装软件的问题。2.5MySQL数据库Mysql的语言是非结构化的,用户可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要\t"/item/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93/_blank"事务化处理的情况下,MySQL是管理内容最好的选择。并且因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,所以得到了普遍的应用。Mysql数据库在编程过程中的作用是很广泛的,为用户进行数据查询带来了方便。Mysql数据库的应用因其灵活性强,功能强大,所以在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简洁很多。数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据的存放是按固定格式,而不是无序的,其定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要是数据存储、修改和增加以及数据表的建立。为了保证系统数据的正常运行,一些有能力的处理者可以进行管理而不需要专业的人来处理。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。2.6SpringBoot框架介绍Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。第3章系统分析系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。3.1可行性分析(1)经济可行性:经济可行性在此仅代表网站的运维成本,开发成本不在此考虑。目前该模式下的教师工作量计算系统的数量日益增多,网上进行教师工作量计算的相关信息的查询管理变得平民化普及化,用户人数呈上升趋势,当用户人数庞大了,运维成本可以由广告费进行填补,包括开发成本。所以经济可行性没有问题。(2)操作可行性:此次项目设计参考了几个该模式下网站的开发案例,对他们的操作界面分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。因此操作可行性也没有问题。(3)技术可行性:技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时系统的技术更新换代的纳新性如何,开发时间成本费用比如何。现有的Java语言能够迎合所有电子商务系统的搭建,系统技术设备的可扩展性可以由springboot构架的资源优势予以促成。我采用了编译器eclipse+java+mysql用以运行整体程序。综上所述技术可行性也没有问题。(4)法律可行性:从开发者角度来看,springboot框架是网上开源且免费的,在知识产权方面不会产生任何法律纠纷。从用户使用角度来看,只要不再系统上贩卖违禁品,对系统做出条约协议,杜绝非法支付即可。综上所述法律可行性也没有问题。3.2系统流程分析业务流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。3.2.1数据增加流程用户成功登入系统后就能够实现增加数据的操作,增加数据的编号是特定的,系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证合法通过就显示增加数据成功了,相反的话,就没有增加成功,图2-1显示的就是在增加数据时的流程。图2-1数据增加流程图3.2.2数据修改流程数据修改时的流程和上面介绍的数据增加时的流程差不多,如图2-2所示。图2-2数据修改流程图3.2.3数据删除流程如果系统里面存在一些没有用的数据的话,相关的管理人员还可以对这些数据进行删除,图2-3就是数据删除时的流程图。图2-3数据删除流程图3.3系统功能分析3.3.1功能性分析按照教师工作量计算系统的角色,我划分为了教师用户和管理员模块这两大部分。教师用户模块:(1)注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现教师工作量等信息查询,就必须有这个系统的账号,如果没有账号的话,可以注册教师用户进行相关的操作,同时用户还可以通过“我的”这以按钮对个人信息以及操作的信息进行管控。(2)公告信息:教师可以在线上进行公告信息浏览等。(3)教师工作量:教师登录后可以点击教师工作量查看工作等详细信息。(4)教师工资:教师登录后可以查看和编辑教师的职称、评教等级、课程数量、教师学历、教师姓名、工资详情等进行提交相关信息。(5)课程信息:教师登录后可以对课程信息进行查看、安排,并对授课后课程信息进行总结上传。(6)课程资料:教师点击“课程资料”这个菜单按钮,可以对课程的资料进行查询、重置、删除、添加等相应操作。管理员管理模块:(1)人员管理:管理员可以对教师用户进行维护管理。(2)公告消息:可对公告消息进行查询、重置、删除、添加等相应操作。(3)教师工作量:可对教师的年度工作量进行查询、重置、删除、添加等相应操作。(4)教师工资:可对教师的工资信息进行查询、重置、删除、添加等相应操作。(5)课程信息:可对教师的课程信息进行查询、重置、删除、添加等相应操作。(6)课程资料:可对教师的课程资料信息进行查询、重置、删除、添加等相应操作。3.3.2非功能性分析教师工作量计算系统的非功能性需求比如教师工作量计算系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:表2-1教师工作量计算系统非功能需求表安全性主要指教师工作量计算系统数据库的安装,数据库的使用和密码的设定必须合乎规范。可靠性可靠性是指教师工作量计算系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。性能性能是影响教师工作量计算系统占据市场的必要条件,所以性能最好要佳才好。可扩展性比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。易用性用户只要跟着教师工作量计算系统的页面展示内容进行操作,就可以了。可维护性教师工作量计算系统开发的可维护性是非常重要的,经过测试,可维护性没有问题3.4系统用例分析通过3.3功能的分析,得出了本教师工作量计算系统的用例图:图3-4就是教师角色的用例展示。图3-4教师工作量计算系统教师角色用例图图3-5就是管理员角色的用例展示。图3-5教师工作量计算系统管理员角色用例图3.5本章小结本章主要通过对教师工作量计算系统的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个教师工作量计算系统要实现的功能。同时也为教师工作量计算系统的代码实现和测试提供了标准。第4章系统设计本章主要讨论的内容包括教师工作量计算系统的功能模块设计、数据库系统设计。4.1系统架构设计本教师工作量计算系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。图4-1教师工作量计算系统系统架构设计图表现层(UI):又称UI层,主要完成本教师工作量计算系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本教师工作量计算系统时的舒适度。UI的界面设计也要适应不同版本的教师工作量计算系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。业务逻辑层(BLL):主要完成本教师工作量计算系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。数据层(DL):由于本教师工作量计算系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本教师工作量计算系统的数据存储和管理功能。4.2系统功能模块设计4.2.1整体功能模块设计在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本教师工作量计算系统中的用例。那么接下来就要开始对本教师工作量计算系统的架构、主要功能和数据库开始进行设计。教师工作量计算系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。图4-2教师工作量计算系统功能模块图4.2.2用户模块设计本系统的用户包括管理员、教师。两种用户模块的功能基本是相同的,教师比管理员多了一个注册功能,所以以用户模块的结构图为例进行分析,用户模块结构图为例进行分析,如下图:图4-3用户模块结构图4.2.3教师工资管理模块设计教师工作量计算系统可以进行教师工资管理,教师用户可以在线查看工资详情,具体的结构图如下:图4-4在线留言模块结构图4.2.4课程信息管理模块设计教师工作量计算系统中,教师可以查看课程信息详情,管理员后台进行课程信息进行查询、重置、删除、添加等相应操作,其模块功能结构,具体的结构图如下:图4-5教师请假模块结构图4.3数据库设计数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。4.3.1数据库概念结构设计下面是整个教师工作量计算系统中主要的数据库表总E-R实体关系图。图4-6教师工作量计算系统总E-R关系图4.3.2数据库逻辑结构设计通过上一小节中教师工作量计算系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。access_token字段名称类型长度不是null主键字段说明token_idint11是是临时访问牌IDtokenvarchar64否否临时访问牌infotext0否否maxageint2是否最大寿命create_timetimestamp0是否创建时间update_timetimestamp0是否更新时间user_idint11是是用户编号announcement_information字段名称类型长度不是null主键字段说明announcement_information_idint11是否公告信息IDannouncement_novarchar64否否公告编号announcement_titlevarchar64否否公告标题publishervarchar64否否发布人release_datedate0否否发布日期announcement_contenttext0否否公告内容recommendint11是否智能推荐create_timedatetime0是否创建时间update_timetimestamp0是否更新时间auth字段名称类型长度不是null主键字段说明auth_idint11是是授权IDuser_groupvarchar64否否用户组mod_namevarchar64否否模块名table_namevarchar64否否表名page_titlevarchar255否否页面标题pathvarchar255否否路由路径positionvarchar32否否位置modevarchar32是否跳转方式addtinyint1是是是否可增加deltinyint1是是是否可删除settinyint1是是是否可修改gettinyint1是是是否可查看field_addvarchar500否否添加字段field_setvarchar500否否修改字段field_getvarchar500否否查询字段table_nav_namevarchar500否否跨表导航名称table_navvarchar500否否跨表导航optiontext0否否配置create_timetimestamp0是否创建时间update_timetimestamp0是否更新时间course_information字段名称类型长度不是null主键字段说明course_information_idint11是否课程信息IDcourse_novarchar64否否课程编号course_namevarchar64否否课程名称lecturerint11否否授课教师teachers_namevarchar64否否教师姓名teaching_timedatetime0否否授课时间lecture_sectionvarchar64否否授课课节remarkstext0否否备注信息recommendint11是否智能推荐create_timedatetime0是否创建时间update_timetimestamp0是否更新时间course_materials字段名称类型长度不是null主键字段说明course_materials_idint11是否课程资料IDcourse_novarchar64否否课程编号course_namevarchar64否否课程名称lecturerint11否否授课教师teachers_namevarchar64否否教师姓名teaching_timedatetime0否否授课时间lecture_sectionvarchar64否否授课课节information_documentsvarchar255否否资料文件course_summarytext0否否课程总结recommendint11是否智能推荐create_timedatetime0是否创建时间update_timetimestamp0是否更新时间hits字段名称类型长度不是null主键字段说明hits_idint10是是点赞IDuser_idint11是是点赞人create_timetimestamp0是否创建时间update_timetimestamp0是否更新时间source_tablevarchar255否否来源表source_fieldvarchar255否否来源字段source_idint10是是来源IDteacher_salary字段名称类型长度不是null主键字段说明teacher_salary_idint11是否教师工资IDtitle_namevarchar64否否标题名称teacher_informationint11否否教师信息teachers_namevarchar64否否教师姓名teacher_educationvarchar64否否教师学历academic_salaryvarchar64否否学历工资teacher_titlevarchar64否否教师职称title_salaryvarchar64否否职称工资number_of_coursesint11否否课程数量teaching_evaluation_gradevarchar64否否评教等级teaching_evaluation_bonusvarchar64否否评教奖金annual_salaryvarchar64否否年度工资salary_detailstext0否否工资详情recommendint11是否智能推荐create_timedatetime0是否创建时间update_timetimestamp0是否更新时间teacher_user字段名称类型长度不是null主键字段说明teacher_user_idint11是否教师用户IDteachers_namevarchar64否否教师姓名gender_of_teachersvarchar64否否教师性别teacher_idvarchar64是否教师工号name_of_departmentvarchar64否否院系名称class_namevarchar64否否班级名称teacher_educationvarchar64否否教师学历teacher_titlevarchar64否否教师职称examine_statevarchar16是否审核状态recommendint11是否智能推荐user_idint11是否用户IDcreate_timedatetime0是否创建时间update_timetimestamp0是否更新时间teacher_workload字段名称类型长度不是null主键字段说明teacher_workload_idint11是否教师工作量IDtitle_namevarchar64否否标题名称teacher_informationint11否否教师信息teachers_namevarchar64否否教师姓名number_of_studentsint11否否学生数量student_hoursvarchar64否否学生学时total_workloadvarchar64否否总工作量recommendint11是否智能推荐create_timedatetime0是否创建时间update_timetimestamp0是否更新时间upload字段名称类型长度不是null主键字段说明upload_idint11是否上传IDnamevarchar64否否文件名pathvarchar255否否访问路径filevarchar255否否文件路径displayvarchar255否否显示顺序father_idint11否否父级IDdirvarchar255否否文件夹typevarchar32否否文件类型user字段名称类型长度不是null主键字段说明user_idmediumint8是是用户IDstatesmallint1是是账户状态user_groupvarchar32否否所在用户组login_timetimestamp0是否上次登录时间phonevarchar11否否手机号码phone_statesmallint1是是手机认证usernamevarchar16是否用户名nicknamevarchar16否否昵称passwordvarchar64是否密码emailvarchar64否否邮箱email_statesmallint1是是邮箱认证avatarvarchar255否否头像地址create_timetimestamp0是否创建时间user_group字段名称类型长度不是null主键字段说明group_idmediumint8是是用户组IDdisplaysmallint4是是显示顺序namevarchar16是否名称descriptionvarchar255否否描述source_tablevarchar255否否来源表source_fieldvarchar255否否来源字段source_idint10是是来源IDregistersmallint1否是注册位置create_timetimestamp0是否创建时间update_timetimestamp0是否更新时间4.4本章小结整个教师工作量计算系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。第5章系统详细设计教师工作量计算系统的详细设计与实现主要是根据前面的教师工作量计算系统的需求分析和教师工作量计算系统的总体设计来设计页面并实现业务逻辑。主要从教师工作量计算系统界面实现、业务逻辑实现这两部分进行介绍。5.1用户功能模块5.1.1教师首页界面当进入教师工作量计算系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是公告信息,再往下是各种各样的系统信息,其主界面展示如下图5-1所示。图5-1教师首页界面图5.1.2个人管理界面用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。其个人信息界面展示如下图5-2所示。图5-2个人信息界面图个人信息逻辑代码如下:/***注册*@paramuser*@return*/@PostMapping("register")publicMap<String,Object>signUp(@RequestBodyUseruser){//查询用户Map<String,String>query=newHashMap<>();query.put("username",user.getUsername());Listlist=service.select(query,newHashMap<>()).getResultList();if(list.size()>0){returnerror(30000,"用户已存在");}user.setUserId(null);user.setPassword(service.encryption(user.getPassword()));service.save(user);returnsuccess(1);}/***用户ID:[0,8388607]用户获取其他与用户相关的数据*/@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="user_id")privateIntegeruserId;/***账户状态:[0,10](1可用|2异常|3已冻结|4已注销)*/@Basic@Column(name="state")privateIntegerstate;/***所在用户组:[0,32767]决定用户身份和权限*/@Basic@Column(name="user_group")privateStringuserGroup;/***上次登录时间:*/@Basic@Column(name="login_time")privateTimestamploginTime;/***手机号码:[0,11]用户的手机号码,用于找回密码时或登录时*/@Basic@Column(name="phone")privateStringphone;/***手机认证:[0,1](0未认证|1审核中|2已认证)*/@Basic@Column(name="phone_state")privateIntegerphoneState;/***用户名:[0,16]用户登录时所用的账户名称*/@Basic@Column(name="username")privateStringusername;/***昵称:[0,16]*/@Basic@Column(name="nickname")privateStringnickname;/***密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成*/@Basic@Column(name="password")privateStringpassword;/***邮箱:[0,64]用户的邮箱,用于找回密码时或登录时*/@Basic@Column(name="email")privateStringemail;/***邮箱认证:[0,1](0未认证|1审核中|2已认证)*/@Basic@Column(name="email_state")privateIntegeremailState;/***头像地址:[0,255]*/@Basic@Column(name="avatar")privateStringavatar;/***创建时间:*/@Basic@Column(name="create_time")@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateTimestampcreateTime;@Basic@TransientprivateStringcode;}5.1.3教师登录界面教师工作量计算系统中的前台上注册后的教师是可以通过自己的账户名和密码进行登录的,当教师输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到教师工作量计算系统的首页中;否则将会提示相应错误信息,教师登录界面如下图5-3所示。图5-3教师登录界面图教师登录的逻辑代码如下所示。/***登录*@paramdata*@paramhttpServletRequest*@return*/@PostMapping("login")publicMap<String,Object>login(@RequestBodyMap<String,String>data,HttpServletRequesthttpServletRequest){("[执行登录接口]");Stringusername=data.get("username");Stringemail=data.get("email");Stringphone=data.get("phone");Stringpassword=data.get("password");ListresultList=null;Map<String,String>map=newHashMap<>();if(username!=null&&"".equals(username)==false){map.put("username",username);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(email!=null&&"".equals(email)==false){map.put("email",email);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(phone!=null&&"".equals(phone)==false){map.put("phone",phone);resultList=service.select(map,newHashMap<>()).getResultList();}else{returnerror(30000,"账号或密码不能为空");}if(resultList==null||password==null){returnerror(30000,"账号或密码不能为空");}//判断是否有这个用户if(resultList.size()<=0){returnerror(30000,"用户不存在");}UserbyUsername=(User)resultList.get(0);Map<String,String>groupMap=newHashMap<>();groupMap.put("name",byUsername.getUserGroup());ListgroupList=userGroupService.select(groupMap,newHashMap<>()).getResultList();if(groupList.size()<1){returnerror(30000,"用户组不存在");}UserGroupuserGroup=(UserGroup)groupList.get(0);//查询用户审核状态if(!StringUtils.isEmpty(userGroup.getSourceTable())){Stringsql="selectexamine_statefrom"+userGroup.getSourceTable()+"WHEREuser_id="+byUsername.getUserId();Stringres=String.valueOf(service.runCountSql(sql).getSingleResult());if(res==null){returnerror(30000,"用户不存在");}if(!res.equals("已通过")){returnerror(30000,"该用户审核未通过");}}//查询用户状态if(byUsername.getState()!=1){returnerror(30000,"用户非可用状态,不能登录");}Stringmd5password=service.encryption(password);if(byUsername.getPassword().equals(md5password)){//存储Token到数据库AccessTokenaccessToken=newAccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-",""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);//返回用户信息JSONObjectuser=JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token",accessToken.getToken());JSONObjectret=newJSONObject();ret.put("obj",user);returnsuccess(ret);}else{returnerror(30000,"账号或密码不正确");}}5.1.4公告信息界面当点击导航栏上的“公告信息”的时候,就会进入对应的界面查看公告信息,公告信息界面如下图5-4所示。图5-4公告信息界面图5.1.5课程信息界面教师登录系统后可以点击“课程信息”菜单,对课程安排信息进行查看了解等,课程信息界面如下图5-5所示。图5-5课程信息界面图课程信息的逻辑代码如下:@PostMapping("/add")@TransactionalpublicMap<String,Object>add(HttpServletRequestrequest)throwsIOException{service.insert(service.readBody(request.getReader()));returnsuccess(1);}@TransactionalpublicMap<String,Object>addMap(Map<String,Object>map){service.insert(map);returnsuccess(1);}publicMap<String,Object>readBody(BufferedReaderreader){BufferedReaderbr=null;StringBuildersb=newStringBuilder("");try{br=reader;Stringstr;while((str=br.readLine())!=null){sb.append(str);}br.close();Stringjson=sb.toString();returnJSONObject.parseObject(json,Map.class);}catch(IOExceptione){e.printStackTrace();}finally{if(null!=br){try{br.close();}catch(IOExceptione){e.printStackTrace();}}}returnnull;}publicvoidinsert(Map<String,Object>body){StringBuffersql=newStringBuffer("INSERTINTO");sql.append("`").append(table).append("`").append("(");for(Map.Entry<String,Object>entry:body.entrySet()){sql.append("`"+humpToLine(entry.getKey())+"`").append(",");}sql.deleteCharAt(sql.length()-1);sql.append(")VALUES(");for(Map.Entry<String,Object>entry:body.entrySet()){Objectvalue=entry.getValue();if(valueinstanceofString){sql.append("'").append(entry.getValue()).append("'").append(",");}else{sql.append(entry.getValue()).append(",");}}sql.deleteCharAt(sql.length()-1);sql.append(")");("[{}]-插入操作:{}",table,sql);Queryquery=runCountSql(sql.toString());query.executeUpdate();}5.1.6课程资料界面教师点击“课程资料”菜单,可以对课程资料信息进行查看了解或下载等,课程资料界面如下图5-6所示。图5-6课程资料界面图课程资料界面逻辑代码如下:@RequestMapping(value={"/avg_group","/avg"}) publicMap<String,Object>avg(HttpServletRequestrequest){Querycount=service.avg(service.readQuery(request),service.readConfig(request));returnsuccess(count.getResultList());}5.1.7教师工作量界面当教师点击“教师工作量”菜单后就进入教师工作量界面,可以查看教师总工作量详细信息。教师工作量界面如下图5-7所示。图5-7教师工作量界面图5.1.8教师工资界面教师进入系统,可以在线查看教师工资、奖金等详细信息,教师工资界面如下图5-8所示。图5-8教师工资界面图5.2管理员功能模块5.2.1教师工资管理界面教师工作量计算系统中的可对教师的总工作量进行查询、重置、删除、添加等相应操作。界面如下图5-9所示。图5-9教师工资管理界面图教师工资管理界面逻辑代码如下:@RequestMapping(value={"/count_group","/count"})publicMap<String,Object>count(HttpServletRequestrequest){Querycount=service.count(service.readQuery(request),service.readConfig(request));returnsuccess(count.getResultList());}5.2.2人员管理界面教师工作量计算系统中的管理人员在“教师用户”这一菜单是中可以对注册的教师用户进行管控,这里以教师用户管理为例。界面如下图5-10所示。图5-10教师管理界面图教师用户管理界面关键代码如下:@RequestMapping("/get_list")publicMap<String,Object>getList(HttpServletRequestrequest){Map<String,Object>map=service.selectToPage(service.readQuery(request),service.readConfig(request));returnsuccess(map);5.2.3教师工资管理界面管理员可对教师的工资信息进行查询、重置、删除、添加等相应操作。,界面如下图5-11所示。图5-11教师工资管理界面图教师工资管理界面逻辑代码如下:@PostMapping("/upload")publicMap<String,Object>upload(@RequestParam("file")MultipartFilefile){("进入方法");if(file.isEmpty()){returnerror(30000,"没有选择文件");}try{//判断有没路径,没有则创建StringfilePath=System.getProperty("user.dir")+"\\target\\classes\\static\\upload\\";FiletargetDir=newFile(filePath);if(!targetDir.exists()&&!targetDir.isDirectory()){if(targetDir.mkdirs()){("创建目录成功");}else{log.error("创建目录失败");}}StringfileName=file.getOriginalFilename();Filedest=newFile(filePath+fileName);("文件路径:{}",dest.getPath());("文件名:{}",dest.getName());file.transferTo(dest);JSONObjectjsonObject=newJSONObject();jsonObject.put("url","/api/upload/"+fileName);returnsuccess(jsonObject);}catch(IOExceptione){("上传失败:{}",e.getMessage());}returnerror(30000,"上传失败");}5.2.4课程信息管理界面教师工作量计算系统中的管理人员在“课程信息”中可对教师的课程信息进行查询、重置、删除、添加等相应操作。其管理界面如下图5-12所示。图5-12课程信息管理界面图课程信息管理界面逻辑代码如下:@PostMapping("/set")@TransactionalpublicMap<String,Object>set(HttpServletRequestrequest)throwsIOException{service.update(service.readQuery(request),service.readConfig(request),service.readBody(request.getReader()));returnsuccess(1);}publicMap<String,String>readConfig(HttpServletRequestrequest){Map<String,String>map=newHashMap<>();map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));returnmap;}publicMap<String,String>readQuery(HttpServletRequestrequest){StringqueryString=request.getQueryString();if(queryString!=null&&!"".equals(queryString)){String[]querys=queryString.split("&");Map<String,String>map=newHashMap<>();for(Stringquery:querys){String[]q=query.split("=");map.put(q[0],q[1]);}map.remove(FindConfig.PAGE);map.remove(FindConfig.SIZE);map.remove(FindConfig.LIKE);map.remove(FindConfig.ORDER_BY);map.remove(FindConfig.FIELD);map.remove(FindConfig.GROUP_BY);map.remove(FindConfig.MAX_);map.remove(FindConfig.MIN_);returnmap;}else{returnnewHashMap<>();}}@Transactionalpublicvoidupdate(Map<String,String>query,Map<String,String>config,Map<String,Object>body){StringBuffersql=newStringBuffer("UPDATE").append("`").append(table).append("`").append("SET");for(Map.Entry<String,Object>entry:body.entrySet()){Objectvalue=entry.getValue();if(valueinstanceofString){sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");}else{sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");}}sql.deleteCharAt(sql.length()-1);sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));("[{}]-更新操作:{}",table,sql);Queryquery1=runCountSql(sql.toString());query1.executeUpdate();}publicStringtoWhereSql(Map<String,String>query,Booleanlike){if(query.size()>0){try{StringBuildersql=newStringBuilder("WHERE");for(Map.Entry<String,String>entry:query.entrySet()){if(entry.getKey().contains(FindConfig.MIN_)){Stringmin=humpToLine(entry.getKey()).replace("_min","");sql.append("`"+min+"`").append(">='").append(URLDecoder.decode(entry.getValue(),"UTF-8")).append("'and");continue;}if(entry.getKey().contains(FindConfig.MAX_)){Stringmax=humpToLine(entry.getKey()).replace("_max","");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论