【基于springBoot的教务管理以及抢课系统设计15000字(论文)】_第1页
【基于springBoot的教务管理以及抢课系统设计15000字(论文)】_第2页
【基于springBoot的教务管理以及抢课系统设计15000字(论文)】_第3页
【基于springBoot的教务管理以及抢课系统设计15000字(论文)】_第4页
【基于springBoot的教务管理以及抢课系统设计15000字(论文)】_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

[8]。而在界面端使用了jsp技术,并且用HTML标记和CSS样式来设计页面,将静态页面实现成动态页面,随时随地都可以查看数据。3.1.2经济可行性经济可行性主要是对项目销毁的金钱是否在可承受的范围内,进行一个分析,该项目采用的框架以及相关软件都是免费的,当然如何最终需要使用云服务器的话,需要租一个服务器,由于系统基本只有管理员来进行访问,并没有太大的访问量。经济来看,次项目花费的非常少。先从硬件上来说,到时候这个项目会部署到云端上。也就是说此项目不需要自己买服务器。我们只需要租用服务器即可。而租用服务器,开的可以租一个较为便宜的服务器。当服务器压力过大的时候可以进行一个升级。开始的时候我们的花费甚至不超过1000。而我们才用的数据库mysql也是免费的。系统linux也是免费的。当然了最后我们要买一个域名与我们的系统进行绑定,以便可以通过域名访问我们的网站。域名的价格有高有低。但是如果我们不去追求很好好的域名。大部分域名是非常便宜的。甚至可以达到10块钱以下一年。这样我们在硬件上其实花费的非常上。再说人力成本。此项目准备才有独立开发的模式。也就是说我自己一个人去开发。相当于没什么用人成本。独自一人即可完成这个项目。3.1.3技术可行性技术可行性。此项目所用到的技术大部分都是经过很多项目的检验。所使用到的技术非常的可靠。抢课最核心的就是要保证并发量。以及要保证不超售(也就是本来是100个课。不能让这个课被超过这个数量人数选走。这个我们技术的核心就是使用缓存进行一个实现。本文使用到的是redis来作为集中式缓存。3.1.4操作可行性3.2系统功能需求分析此系统主要有三种角色去进行一个使用,管理员、教师、学生。使用的功能为在学校所常用的。功能应该符合实际需求的。3.2.1学院管理:每个学校下基本会有好几个学院,这个时候我们就要对学院进行一个管理了。管理学院的信息等等一般的大学中,所以我们要拥有学院管理的功能,可以对添加学院,添加学院是是需要需要输入学院的名称,当然还有英文名称,并且每个学院名称应该是相同的。不能出现一样名字的学院,不便于区分。当然学院不能只有学院信息中不能只有名称这个信息这么简单,还需有有创建时间。以及学院详情等额外的信息。这些信息都要支持可以修改才行。但是一般情况下学院是不能删除的。因为学院会关联到其他数据。当其他数据进行显示时。如果查询不到之前所关联的那一个学院。就会出现问题。所有学院的删除其实是一个假删除,并没用从数据库中真正的去删除掉。而是在界面上隐藏掉了而已。前端进行展示时。需要通过接口去获取学院的数据列表。然后根据数据列表去进行一个展示。3.2.2专业管理:每个学院下面是有好几专业的。所以我们要实现管理专业的一个功能。每个专业肯定有它的一个名称。以及这个专业所关联的学院是什么。当然也需要进行一个关联的。例如:计算机学院下面会分网络工程专业,以及软件技术专业。等等。3.2.3班级管理:班级管理就更不用说了,添加班级是一个必须的功能。班级需要对专业进行一个关联。也就是说班级与专业的关系是一对多的关系。班级也会拥有班级名称。以及还会有班级人数等信息。课程安排时也是以班级为单位进行的一个安排。所以班级管理是重点中的重点。可以说学校的大部分活动的单位都是以班级主体的,比如课程安排一般也是以班级为主体进行一个设置等等3.2.4用户管理用户分为3种用户学生、管理员、老师三种。有学生就会有老师。而老师又是学校中非常重要的一个的一个角色。所以拥有老师管理功能是必须的。老师会拥有名字。等信息。可以添加老师,删除老师,和修改老师信息等功能。学生基本也是同类。需要对三种用户做一个同一的管理3.2.5课程管理为学生添加课程的时候需要选择课程。那么选择课程中的那些课程从那里来呢。就是要从课程管理这里进行一个添加。添加一个课程需要拥有课程的名称,以及上课的老师是哪一位老师。当然还有这个课是有多少学分。课程结束后,是可以有一个手动关闭的功能的。课程管理也算是教务系统中教务核心的一个功能了。此课程应该为可以添加什么新课程。以及新课程是哪一个老师上课,学分等信息3.2.6班级课程安排教务系统中离不开的一个点就是课程安排。课程安排要如何进行一个排课呢。第一点就是,一个时间内一个学生在一个时间段内,只能上一个课。所以选课时。如何这个班级这这个时间段内安排了课程。那么这个时间段内就不能再安排课程了。当然一个老师在同一时间内也只能上一个班的课程。当这个时间,这老师已经被安排了。其他课程那就不能再安排课程了。那么我们这么去记录我们的课程安排呢?我们需要专门的一个课程安排表去进行一个记录。例如安排的是哪一个学生。安排到了星期几的第几节课。已经安排的课程是什么。这个课是哪个老师上的。这些信息都要进行一个记录。页面展示课程的时候通过这些记录进行一个展示给登录的用户。此系统可以为指定的班级设置课程表。比如星期几上什么课等等。3.2.7抢课课程系统抢课系统是文本中的一个重点功能。抢课抢的就是我们常见的选修课之内的课程。老师可以去发布需要抢的课程是什么。以及上课的时间,以及课程介绍。课程的学分。当然还要记录是是哪个个老师发布的课程。还有课程是几号开始到几号结束。还有课程学分等信息。当然最重要的一点就是抢课开始的时间。以及名额有多少个。当然老师不能发布自己已经被安排课程的时间去发布选修课。以及学生如果这个时间段已经有了课程。那也不能进行选课。以上这些功能其实对性能的要求并不是太高。对性能要求比较高的是抢课系统。在我们常见的教务系统中。经常性一到抢课时候。系统就会出现崩溃。导致无法进行一个抢课。这是由于系统在设计的时候。没有去解决这个系统高并发问题。一旦到了抢课时间。系统顶不住大量的请求。就会崩溃。并且有可能会出现超选的问题,就是本来就只有50个名额,但是由于设计问题。导致抢到课的人数超出了这个限制。这个时候就需要一个这良好的设计。去应付告并发问题。这个时候我们需要引入消息队列的概率。消息队列即让抢课的信息以排队的方式我们一个个来进行处理。这样虽然用户可能会显示有点延迟。但是这样设计不会让我们的系统出现崩溃。不会出现所有人都选不了课的问题。这样就又出现了另外一个问题。哪怕让消息进行了一个排队。但是我们还是处理不了那么多的消息。这个时候,我们就可以引入消息熔断的概念。当队列中的人数实在是超过了我们的限制人数。我们进行直接让多余抢课的人数。显示异常。以免系统出现崩溃。那么我们是如何解决超选问题呢。如果我们每次帮一个用户进行选课时。都要去系统中查询选课剩余名额是否还足够。这些系统会非常的满。并且可能会出现多线程问题。导致数据错乱。这个时候我们需要引入缓存的概念。不需要我们每次都去数据库读取已经选课人数。来保证不会超抢。图3-1系统管理员用例图3.3数据需求分析(1)用户信息:这里的用户指教务系统中三种的用户类型都需要进行一个存储的操作。(2)学院信息:学院的信息进行需要进行存储以便进行一个展示。(3)专业信息:教务系统中个个专业的名称等信息需要进行存储(4)班级信息:存储教务系统中班级的各自信息(5)课程信息:当新建课程的时候。这个课程的信息需要进行一个存储。(6)班级上课安排表信息:也就是课表,这次存储的是学生具体的一个课程存储(7)抢课安排信息。当安排了选修课后。什么时候开始抢。以及其中的各种信息。进行存储(8)用户以抢课程信息,当用户抢到课程之后,以抢到的课程需要存储起来。4系统设计4.1系统总体结构设计图4-1系统工作原理图4.2数据库设计4.2.1概念模型根据我们的实际需求将教务系统进行一个拆分。拆分后为如图:实体名属性用户用户编号、用户名、密码、用户类型(管理员,老师,学生)学院学院编号,学院名字,学院创建时间,专业专业编号,所属学院,专业名字,专业创建时间,班级班级编号所属专业,班级名字,班级创建时间,课程课程编号,课程名字,课程老师,学分,创建时间上课安排表上课安排编号,安排的课程,安排所属的班级,安排上的是星期几,安排上的是第几节课抢课安排表安排课程什么时候开抢,安排的时候等信息抢课记录表抢到课之后,需要记录进行,这时由这个表进行一个记录表4-1实体属性表 这里将展示我们的教务系统表之间的一个关系ER图;图4-2整体结构E-R图4.2.2数据库表设计系统的实现需求数据库进行一个支持,使用SQLyog来作为我们的可视化数据库软件。我们需要创建对应教务系统的数据库表,我们使用MySQL5.7作为数据库。,来帮助我们的操作:图4-3数据库设计图对应的数据库设计为用户表-user列名类型长度是否主键是否唯一是否可空备注idint20YYNaccountvarchar50NYN用户账号(学号)passwordvarchar50NNNnamevarchar50NNN用户名称tyoeint10NNN用户类型create_timedatetimeNNN学院表-college列名类型长度是否主键是否唯一是否可空备注idint20YYNnamevarchar50NYNcreate_timedatetimeNNN专业表-major列名类型长度是否主键是否唯一是否可空备注idint20YYNcollege_idint20NNN学院外键namevarchar50NYN专业名称create_timedatetimeNNN班级表-myclass列名类型长度是否主键是否唯一是否可空备注idint20YYNmajor_idint20NNN专业IDnamevarchar50NYN班级名称create_timedatetimeNNN班级上课表-classschedule列名类型长度是否主键是否唯一是否可空备注idint20YYNmy_class_idint20NNN班级IDschedule_idint20NNN课程的IDweekint20星期几课程arrange_number安排的第几节课(枚举)namevarchar50NYN班级名称create_timedatetimeNNN课程表-schedule列名类型长度是否主键是否唯一是否可空备注idint20YYNteacher_idint20NNN老师idnamevarchar50NYN课程名字creditint20NNN学分is_overtinyint1NNN是否结课create_timedatetimeNNN抢课安排表列名类型长度是否主键是否唯一是否可空备注idint20YYNstudent_idint20NNN学生idschedule_idint50NYN课程IDscoreint20NNN课程得分is_passtinyint1NNN是否及格create_timedatetimeNNN抢课记录表列名类型长度是否主键是否唯一是否可空备注idint20YYNuser_idint20NNN用户idcourse_idint20NYN课程idclass_begins_timedatetime500NNN上课时间create_timedatetimeNNN5系统实现5.1系统登录界面5系统实现5.1系统登录界面用户登录的时候,需要填写预存的使用人员信息。看下图5.1,将在系统登陆页面账号的对应位置输入密码表单并填入登陆账号用户名与登录密码,然后再将所输入到的系统登陆账号用户名、密码进行与系统数据库信息中显示的登录用户信息进行匹配验证,提示不通过则为登录失败。图5.1用户登录界面系统登录流程如图5.2:图5.2用户登录流程图登录功能的核心代码如下:5.3首页展示首页界面图如图5.3所示。图5.3系统首页界面5.4专业管理模块实现管理员可以添加专业信息如下图5.4.1,可以为其添加专业:5.5课程管理模块实现图5.8前台用户订单管理界面这里可以查看班级课程,并且可以添加修改删除课程核心代码:5.7用户管理模块实现用户添加:图5.12商品管理页面主要实现代码如下:核心代码:6系统测试6.1概述系统测试是即为系统开发中非常重要的一环,甚至经常测试的时间大于开发的时间是很正常的事情,不进行测试的项目可以这样说:基本不能用。当出现bug时,轻则影响用户的体验。重则导致数据出现错乱。或者说是系统出现故障。导致系统根本使用不了的情况发生。测试时需要尽量的考虑的用户的使用流程使用情况。保证用户的体验是非常流程的。要尽力的去考虑数据的边界值问题。还要重安全的层次是去进行一个测试。当然测试中还要测试相应速度是否达到预置。不能我们测试一个功能,会卡顿非常久,这是极其不合理。比如数值在上面情况下是不允许输入的。实际上却输入超过。这个算是一个较为重要的一个bug。我们要避免这种情况的发生。我们对真实的一个用户使用情况进行一个模拟。思考我们如果是普通用户的话会如何去执行操作。大部分情况都需要包含进去。在测试的过程中也可以让我们发现其中不合理的地方。好进行一个体验的优化。6.2测试目的测试的目标和目的是确保系统能够进行一个正常的使用。让其我们从登录的使用上的一个流畅。以及测出漏洞的存在,防止我们系统被进行一个攻击。使系统的安全性进行升级。6.3测试用例的编写测试用例的编写需要先保证普通点击使用的流程不会出现报错,卡顿等等意料之外的情况发生。还要考虑的边界值的情况,例如用户的年龄。最低也只能是0。不能让其出现负数。这个时候我们就需要输入负数去进行一个测试。看会不会出现不能这样输入的提示。如果没有出现的话。并且点击超过。代表这个是有问题的。需要对这种情况进行一个修复。当修复完毕后还需要根据之前未通过的案例再次的进行一个测试。如果发现符合预期的话。代表这个问题就已经解决了。测试时所使用的环境如下windons10操作系统Tomcat8服务器8G内存I54300kcpu6.3测试用例6.3.1用户登录模块测试学院模块测试用例表如表6-1所示:表6-1登录模块测试用例表测试用例01功能模块管理员添加学院测试类型集成测试1、测试目的:测试管理员是否能成功的添加学院前置条件;登录管理员账号,进入到学院管理模块中,点击添加学院按钮测试:测试1;输入系统中一个不存在的学院名称。然后学院介绍中输入一些随意的介绍。点击保存测试2:输入一个之前系统中已经存在的学院名称,学院介绍中输入任何值测试3:输入空的学院名称,以及空的学院介绍。3、期望结果:期望1:保存成功,并且在学院管理的列表中显示刚才新添加的学院期望2:保持失保存失败,并且会提示当前学院名称以及存在。请更改名字期望3:会提示未输入学院名称,请输入后在进行尝试(3)登录失败:提示登录名或密码输入错误。4、实际结果:与预期结果相同。6.3.2班级管理模块测试部门管理功能测试表如表6-2、6-3所示:表6-2班级管理功能测试表测试用例02功能模块管理员添加班级测试类型集成测试1、测试目的:管理员是否能够在班级模块添加新的班级前置条件;登录管理员账号,点击班级管理标签。点击添加班级测试:测试1;班级名称输入一个不存在的班级名称,以及随意选择一个专业测试2:班级名称输入:纯数字的班级名称,不选专业尝试保存测试3:班级名称输入:全部为空格。选择一个专业3、期望结果:期望1:提示保存成功,自动调整的班级管理页面,显示刚才添加的班级期望2:会提示保存失败班级名称不能为全数字。期望3:会提示:请输入班级名称,以及选择专业4、实际结果:与预想相同表6-3设置班级课程功能高测试表测试用例03功能模块设置班级课程测试类型集成测试1、测试目的:老师是否可以正常的去设置班级的课程前置条件;登录老师账号,随意选择一个班级进入班级课程表.。测试:测试1:点击没课程的地方,添加一个这个时间段为被使用的课程。测试2:选择中已经拥有课程的地方,尝试添加新课程测试3:找一个没有课程的时间端,添加一个课程在这个时间段已经被使用的课程。3、期望结果:期望1:显示课程添加成功,并且在课表上进行一个展示期望2:会看不到保存按钮,因为这个时间已经拥有课程了期望3:将会找不到这个已经使用的课程,因为已经使用的课程是不会出现在添加列表中的4、实际结果:符合预想表6-4修改班级课程功能测试表测试用例06功能模块班级课程修改测试类型集成测试1、测试目的:使用教师账号是否能删除班级的课程。前置条件;登录教师账号,点击在班级列表中选择一个班级。进入一个已经选有课程的班级的管理页面测试:测试1:在课程表页面上面选择一个课程尝试进行一个进行修改,修改为其他可选课程测试2:选择一个课程,尝试去修改成不存在的一个在改时间段内已经其他班级使用的一个课程3、期望结果:期望1:成功,修改成功并且在课程表上会把刚才的课程变成修改过后的一个课程期望2:失败。将会在页面上看不到这个已经被其他班级这个时间段内已经安排的课程4、实际结果:符合预想6.3.3抢课模块测试抢课功能测试表如表6-4、6-5所示:表6-4员工管理功能测试表测试用例04功能模块添加抢课安排测试类型集成测试1、测试目的:是否能够正常的的进行添加抢课前置条件;登录教师账号,去到讲课管理页面测试:测试1:输入3学分,10名额,1天的后具体开始抢课时间。点击保存课程。测试2:输入-13,003名额。不输入抢课时间测试3:输入0,300名额,输入昨天的一个时间作为开始抢课时间测试4:学分不进行输入,也不输入时间3、期望结果:期望1:保存成功,并且会在抢课安排表上面进行一个展示期望2:失败,将会显示学分不在允许范围之内期望3:失败,会显示进行抢课时间不能为这个期望4:失败,将会提示需要输入学分4、实际结果:符合预想表6-5是否能正常抢课功能测试表测试用例05功能模块是否能正常抢课测试类型集成测试1、测试目的:学生是否能够实现能正常的抢课前置条件;老师账号发布一个抢课计划,到了抢课时间后,登录学生账号尝试进行一个抢课,并选择老师发布的哪个抢课计划。测试:测试1:账号还没抢过这个课,并且这个课的时候该账号的安排上也还没有。点击抢课测试2:该账号已经抢过这个课,尝试再次抢该课测试3:当该课程已选人数超过设定人数,再尝试抢这个老师安排的课程测试4:该账号未抢课程,当时该时间段已经被其他课程所占据3、期望结果:期望1:成功,将会在该学生的课程表上面进行一个展示。期望2:失败,找不到抢课按钮,因为该课程已经抢到了期望3:失败,抢课系统会提示人员已经满了期望4:失败,将会提示该时间已经安排了其他课程4、实际结果:符合预想6.3.6下载中心配置模块测试下载中心功能测试表如表6-6所示:表6-6下载中心功能测试表6.4测试分析测试分析对这个教务系统进行了多次的测试。使我们的教务管理系统符合我们预期设计。数据也在教务系统的意料之中。完全的符合我们的预期。此系统经过这些测试用例的测试。结论如下能够正常的教务系统进行一个增加,并且数据也是正常的专业管理功能也是在我们的意料之内进行一个运行班级课程安排功能安排课程时数据都是正常的,可以设置我们的班级课程。登录注册流程无误管理员在该教务系统中能够正常的添加老师账号与学生的账号。能保证学院管理、专业管理、班级管理、课程安排系统、课程安排系统、账号管理。正常使用总结与展望经过这段时间的写作,终于论文完成了。在写论文的期间学到了非常多的东西。开始确定技术栈时,并不知道自己需要用什么来完成这个系统,只能我网上在各种的技术博客,看了许多篇的博客,当然其实也大部分博客都写的意义不大。都是比较水多。甚至是错误的。我们需要在在其中去学会辨别是不是对的,是不是合理的。有没有可能是博客都作者理解错误了。我们要学会去分辨这些错误的信息。提取出正确的理解。还去看了非常多的视频教程。因为很多技术,之前并不会,而是边学习,边把学习到的东西运用到系统中。在这个过程中,是非常有意思的,能把学到的东西运用到实际的系统中,并且能够实际的成功允许。这个过程让我非常的激动。当然也参考了别人的论文。查看了别人对教务系统的一些理解,帮我开阔了自己的眼界。在这个过程中让我对系统架构的理解也更加的深刻的了。在这个过程中。有疑问时,也向许多的人进行了请教。得到了别人指导。在这个过程中,学习到了之前没有思考过的问题。掌握了很多问题的解决办法。开发时是从后台向前台开始写的。保证接口符合逻辑之后才开始去写前端的页面。最后对接接口,然后进行一个测试。最后不断的发现问题然后去解决问题。最终把系统进行了一个实现出来。这个教务系统目前完成的大致的功能,当然还有许多的细节需要进行一个更深入的完善,以及需要测试出更多隐藏的bug。并对bug进行一个一个修改。还有系统目前还是有存在一些问题的,比如有部分操作是否不够人性化。接口的安全性可能会存在一些问题。比如接口是否可能会被多次调用,导致数据错乱。系统的防护性做的不是非常的好,当系统被黑客进行攻击时,可能会被找出漏洞。数据的加密性是不是做的好不够好等等。还有很多的问题等待一个完善和解决。还有班级课程安排还没有时间的一个概念。目前安排课程只能以星期几为一个安排。后续需要加上安排的时间范围。所以,后面的的一个计划就是对这个教务系统的功能进行一个扩展。对接口的安全性需要进行一个进一步的提示,要避免接口的幂等性,也就是要防止接口被多次调用。对班级课程的安排功能进行一个升级,让其能够更细致的进行一个课程的安排对公告系统进行一个增强,使用公告系统能看查看已经阅公告的人数,也会提示还有谁还未查看公告。增加一个教师

温馨提示

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

最新文档

评论

0/150

提交评论