选课管理系统_第1页
选课管理系统_第2页
选课管理系统_第3页
选课管理系统_第4页
选课管理系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

PAGE181引言1.1课题研究的目的和意义随着现在计算机的高速发展,基本上每个学生都有一台电脑,我们已经完完全全地进入到了网络时代,可以说网络已经改变了我们的生活方式,提高了我们的工作效率,学会使用电脑已经成为了我们每个人的必备技能。在我国,基本上每个大学的在校生都在一到三万人,来管理这么多的学生选课不是一件简单的事情。这时网上选课成为了趋势,一个完善的选课系统不仅仅只能选课,还需具备学生管理、教师管理、课程管理的功能。往往学生选课都集中在某个时间段,一个性能良好的选课系统,需要在这个时间段内能够承受住三到四万的请求量。所以,一个功能齐全,性能良好的选课系统可以给高校的学生、教师带来极大的便利,提高工作效率。1.2开发环境介绍(1)CPU:Corei5及以上。(2)内存:4G。(3)开发平台:Windows10。(4)开发语言:Java,HTML,JS。(5)数据库:MySQL。(6)开发工具:IntelliJIDEA,JetBrainsWebStorm。(7)运行环境:谷歌浏览器。1.3相关技术介绍1.3.1SpringBoot框架SpringBoot的出现简化了之前Spring各种繁杂的配置,使开发者从繁杂的配置中解放了出来,从而避免使用大量的注解或者XML,可以实现快速开发上手简单,直接封装了MyBatis、JPA、Kafka、Redis等常用的组件。以下我们阐述以下SpringBoot的各种特性:(1)可以快速构建项目。(2)可以很好的输出很多的形式服务,RESTAPI、WebSocket、Web、Tasks。(3)内嵌Tomcat、Jetty等容器。(4)支持热启动、热部署。(5)自动管理依赖、自带应用监控。SpringBoot高度集成的特点给我们开发带来的很大的简便,但是也是因为高度集成的特点,让我们在开发过程中无法了解到底层的实现,在排查问题的过程中给我们造成了不便,当使用SpringBoot框架来开发大型的项目时,我们会深刻的体会到这一点,它只是将Spring复杂的操作封装了起来,不需要我们手动去操作,所以说要想熟练的使用SpringBoot来开发项目,还需要我们扎实的基本功,对Spring底层的基本原理要有深刻的理解。1.3.2Vue.JS简介Vue.JS是目前主流的框架之一,Vue.JS的作者是尤雨溪,是中国人自己开发的前端框架。Vue.JS与两款流行的全端框架Angular,React相比,Vue属于轻量级框架,但是它们三者都是为Web应用服务的。三大框架的出现,让Web应用服务开发进入到了前后端分离的时代。此系统正是采用Vue作为全端框架,主要因为该框架轻量、入门简单,它可以与Element-UI快速配合构建前端框架。另外一方面,Vue不仅简单易学,还很容易与其他库和其他已经完成的项目进行整合。Vue的主要几方面的特点有:(1)简洁:Vue的代码其他框架代码相比更为简洁,而且通俗易懂。(2)轻量:Vue是一款轻量级的框架,API易于理解,还提供了很多便捷的指令和属性。(3)快速:Vue的源码大小只有72.9kb,开发者可以自由选择相应的解决方案。(4)模块化:结合了CommonJS、RequireJS、SeaJS等第三方模块构建工具,可以很容易与其他项目快速进行整合。(5)组件化:Vue可以将html、CSS、JS代码整合在一个.Vue的文件中,这样可以使整个项目变的更加简洁,可以使代码的可维护性提高,这是Vue的一个非常突出的优点。1.3.3Redis简介Redis是一款非关系型的数据库,多种多样的数据结构,使得Redis可以在很多场景下使用。Redis被使用最多的是被用作缓存,比如,秒杀场景、热点数据通过Redis作为缓存,把数据库中的数据同步到Redis中,可以使系统的性能提升几百倍。在某些场景下,我们需要保证数据的持久化,而Redis是完全的内存数据库,无法长期保存数据,这个时候我们可以利用Redis持久化的特点,定期的通过异步的方式将Redis中的数据持久化到磁盘中。因为Redis是在内存中操作的,它的处理速度高出磁盘数据库好几百倍,目前处理读写操作的键值对数据库最快的可以说是Redis,Redis每秒可以处理超10万次读写操作。Redis最突出的是它具有丰富的数据结构,这是其他键值对数据库无法匹及的,我们可以使用它的数据结构来实现各种各样的功能,比如,点赞、消息队列、统计访问系统的IP、分布式锁等。1.3.4Kafka简介Kafka作为一款分布式的发布-订阅消息系统,得到了很多互联网公司和开发人员的认可,在2010年12份成为了Apache开源项目。目前使用最多的还有ActiveMQ、RabbitMQ等消息系统,他们的性能也都很优越,与Kafka相比较有一些相同之处,都可以订阅发布消息。他们的不同之处在于Kafka是一个现代化的分布式系统,底层使用Scala语言编写,支持集群的方式来工作,可扩展性高。Kafka可以保证数据的可靠传递,具有持久性、可靠性的特点,消息可以通过异步的方式持久化到磁盘中,并且可以进行数据备份防止数据丢失。Kafka的四大特性:(1)可扩展性:Kafka集群支持热扩展。(2)持久性、可靠性:Kafka具有消息确认的功能,保证消息的完整性,消息可以持久化到硬盘。(3)容错性:Kafka集群部分节点失败不会影响整体的工作状态。(4)高并发:Kafka并发性能优越,可以保证上万个客户端同时进行读写。Kafka可以做哪些事情?Kafka常用的使用场景有:异步处理、应用解耦、流量削峰、日志处理。Kafka与SpringBoot集成非常简单,我们只需要在配置文件中指定producer、consumer、topic等组件信息即可。2选课系统可行性分析可行性研究在整个系统开发中是很重要的一部分,在项目启动前,我们需要调查市场上对该系统需求。在系统完成之后,我们需要对系统进行分析研究,而且也会针对一些分析出来的可行性研究的目标和实现进行下一步的安排,提出一些系统的逻辑和一些可能解决的方案。2.1经济可行性该系统主要是面对高等学校的,目前的功能已满足高校学生选课的需求。该系统操作简单,易上手。但是,所有的软件系统都是需要经济的支持,此系统开发成本较低,一个开发人员足以完成此系统的开发,使用都是免费的开源框架。对于在校生来说,可以免费使用该系统,不会给学生带来经济上的压力。综上可知,对于系统的开发成本以及系统面向的用户群体来说,该系统已经具备经济可行性的条件。2.2技术可行性选课管理系统采用的是目前世界上最为流行的Java语言,Java是一种面向对象的语言。Java语言之所以如此火爆,主要是因为它的两个非常显著的特点:具有跨平台的能力,“一次编写,到处运行”,另外一个就是自动垃圾回收,开发者不需要手动进行垃圾回收。并且还具有:抽象、封装、继承、多态等四大特性。本系统主要的难点在于选课这个功能,几乎所有的高校的学生数量在一到三万人之间,而且选课的时间点都比较固定,这样短时间内两三万的请求量会给数据库带来极大的压力,严重的话会造成整个系统的崩溃。为解决此问题采取了Redis中间件作为缓存,在学生发送请求选课之前将课程信息加载到缓存中进行减库存操作,然后采用Kafka进行异步减库存操作,不直接操作数据库减库存,这样可以在很短的时间内减轻数据库的压力。采取流行的技术,对以往的系统维护也有好处。2.3操作可行性系统的操作性对于用户来说是很重要的,一个完美的系统是需要建立在用户体验上的。该系统是一个web网站,用户可以在任何一台电脑上的任何一款浏览器访问。对于管理人员来说,该网站用来管理学生和教师的信息,也就是修改、删除学生和教师的信息。所有操作都是很方便简洁,直观明了,网络选课系统已经具备了操作可行性的条件。3系统需求分析3.1系统相关的功能需求分析选课系统的设计主要为了方便高校教师管理学生信息以及方便学生选课,目前所有的高校也都有自己的选课系统,但大多数系统都比较老,所使用的技术也比较陈旧,对后期管理与维护带来了极大的阻碍。据我调查,很多高校的选课系统无法满足学校学生请求量,经常造成系统的崩溃,因此设计一款系统稳定,界面优美的选课系统是很有必要的。该系统有以下几个功能模块:(1)登录、注册功能。(2)课程管理模块。(3)学生、教师信息管理模块。(4)学生选课功能。(5)课程查询功能。3.2系统的设计方案我所设计的选课系统是通过SpringBoot搭建后端架,使用Vue搭建前端框架,Element-UI前端组件库来构建前端页面,实现了快速开发。数据库采用的是MySQL,通过SQL语句进行建表,使用NavicatPremium可视化工具来管理维护表结构。后端接口测试使用的是Postman工具。3.3系统的开发设计思路以及方法系统的开发设计思路以及解决方法有以下几点:1、通过SpringBoot、Vue搭建前后端框架。2、基本页面的开发。(1)通过Element-UI全端组件库构建全端页面。(2)登录、注册功能通过MD5对用户密码进行加密、解密操作,防止用户密码被窃取。(3)编写其他模块的增删改查功能。3、使用SQL语句进行表结构的创建。4、防作弊功能开发(1)通过IP限流的方式,阻止学生恶意发送选课请求。(2)使用随机字符串Path,防止学生越过登录直接进行选课。5、秒杀选课功能的开发。(1)通过Redis内存数据库,将课程信息预加载到内存中,快速处理选课请求。(2)利用消息中间件Kafka来异步处理选课信息,将选课的结果异步的添加到MySQL数据中。6、通过Postman进行后端接口的测试,前端接口联调。7、测试阶段,Bug修复。4系统概要设计4.1系统的主要功能一个比较完善的系统肯定要具备各种各样的功能模块,一个模块有一个功能,一个好的系统是建立在用户体验上面的。我的系统主要分为三大模块,登录、注册模块、选课模块、管理员模块,每个模块下又有多个功能:(1)注册。(2)登录。(3)课程列表查看课程信息。(4)课程查询,查找所要选的课程。(5)消息通知,学生成功选课后通知该课程的老师。(6)学生管理。(7)教师管理。本系统的主要功能如图4-1:选课系统选课系统管理员模块登录、注册模块管理员模块登录、注册模块选课模块注册账号登录账号消息通知选课功能课程查询课程列表教师管理学生管理注册账号登录账号消息通知选课功能课程查询课程列表教师管理学生管理图4-1系统功能图4.2系统功能模块组织结构(1)登录、注册模块,登录分为:学生登录、教师登录、管理员登录。(2)选课模块,可以查看课程信息、搜索课程、学生用户可以进行选课。(3)管理员模块,管理员模块只有管理员角色才能访问,管理员具有学生信息和教师信息修改的权限。4.3数据库设计4.3.1数据库设计概要数据是需要我们存储在数据库中的,数据对于一个人、对于一个企业甚至一个国家都是非常重要的,往往一个系统开发的过程中表结构的设计是最先开始的,一个设计良好的表结构,可以提高后面接口开发的效率。表结构设计的好不好,是可以影响到整个系统的性能的,在设计数据表的时候就要尽量优化表结构,尽量避免为后面接口开发带来不便,避免在代码层面优化性能。数据库设计的原则:(1)数据冗余和处理速度二者是不可兼得的,需要我们在两者之间找到一个平衡点,这个需要根据我们的系统的需求来把握。(2)做到每列都具有原子性,每个字段都要表达清楚,注释做好,每列尽量使用一个字段。(3)表和字段的关系,最好做到第三范式。(4)尽量避免null值出现,在定义字段时把字段定义为notnull。(5)一般情况下我们能使用整数尽量使用整数,因为字符的排序很复杂,所以在选择字段类型时尽量使用整数。4.3.2数据库的详细设计本系统的数据库设计共有3张表,用户表是一张冗余表,用于存放学生信息、教师信息以及管理员信息,由status字段来区分用户角色,课程表course用来存放课程信息,学生-课程表order用来存放学生成功选课后的信息。(1)用户表字段:用户名、密码、用户真实姓名、年龄、学工号、身份、性别。(2)课程表:课程号、课程名、教师名、课程描述、选课开始时间、选课结束时间、学分、课程数量。(3)学生-课程表:选课时间、课程号、学分、学生姓名,课程名。4.3.3数据库的概念设计选课系统的数据库的E-R图图4-2学生-教师实体图4-3用户实体图4-4学生-课程实体图4-5课程实体图4-5总体E-R图4.3.4数据库的表结构(1)学生-教师表结构,如表4-1所示:表4-1学生-教师表(cu_student表)字段属性长度注释不为空主键student_idbigint128学生ID是是courseNoint128课程号是否teacher_namevarchar128教师名是否(2)用户表结构,如表4-2所示:表4-2用户表(user表)字段属性长度注释不为空主键idint128用户ID是是usernamevarchar128用户名是否passwordnumberstatussexgradenamevarcharvarcharvarcharintvarcharvarchar1281282010128128用户密码学工号身份性别年级真实姓名是是是是是是否否否否否否(3)课程表结构,如表4-3所示:表4-3课程表(course表)字段属性长度注释不为空主键courseNoint128课程号是是teacherNamevarchar128教师名是否courseDesstartTimeendTimecourseHourstockvarchardatetimedatetimeintint1280010128课程描述选课时间选课结束学分课程数量是是是是是否否否否否(4)学生-课程表结构,如表4-4所示:表4-4学生-课程表(orders表)字段属性长度注释不为空主键idbigint128ID是是courseNoint128课程号是否namevarchar128学生姓名是否courseNamecourseHourcreateTimevarcharintdatetime128100课程名学分选课时间是是是否否否5选课系统实现5.1选课系统登录界面(1)登录界面很简单明了(2)新用户必须通过注册才能进行登录(3)学生账号、教师账号、管理员账号系统登录界面的效果图如图5-1所示:图5-1选课系统登录界面效果图5.2学生登录模块学生账号登录后会进入课程列表界面,此时会看到所有课程信息,所有课程都按类别分类,学生可以根据搜索框搜索自己想要选的课程,点击课程图片可以进入选课界面。图5-2选课系统课程列表界面效果图进入到选课界面后,会看到课程的状态,有三个状态:立即报名、课程量不足、课程时间结束。此处是整个系统的难点所在,解决方案如下:(1)高请求量造成系统崩溃。使用缓存来缓存数据,减少数据库的访问次数,使用Kafka异步消息处理,尽快返回请求。(2)防止恶意请求。使用IP限流的方式,来限制用户只能提交一次请求。(3)防止作弊选课。防止学生拿到/api/seckill/{courseNo}这个地址直接越过登录验证直接进行选课,使用了动态生成地址的方式,在学生登录的时候生成一个随机字符串存到Redis中,进入选课页面后将此随机字符串作为入参,比对Redis中是否存在此字符串,使用/api/{path}/seckill/{courseNo}作为选课的访问地址。图5-3选课系统选课界面效果图5.3管理员账号模块管理员账号界面有学生列表、教师列表两个小模块。管理员用户具有以下权限:(1)查找学生、教师信息,管理员可以根据学工号查找学生和教师的信息。(2)修改学生、教师信息,管理员可以根据用户id来修改指定的学生或教师的信息。(3)删除操作,管理员有权删除任何一个学生和教师的信息。图5-4选课系统管理员界面效果图5.4教师账号模块教师账号登录后可以进入课程列表界面,教师可以管理自己所带的课程,教师用户具有以下权限:(1)编辑课程信息,如果课程有误差可以修改课程信息。(2)删除课程,教师具有删除课程的权限。(3)添加课程,教师可以进行添加课程排课。(4)消息通知功能,当某个学生选了该老师的课程,在教师页面会出现消息弹框。(5)学生列表导出功能,代课老师可以将学生列表以Excel表格的形式导出。图5-5选课系统教师账号界面效果图消息弹框功能是使用WebSocket协议实现的,WebSocket是一种协议,属于应用层协议,与HTTP协议有相似之处,都是基于TCP协议实现的。WebSocket具有实时性强、节省带宽的特点。图5-6选课系统消息弹框界面效果图本系统的所有功能介绍完毕,这些功能完全可以满足一个三四万人的学校选课,后期会根据用户的需求进行版本的更新迭代。6选课系统的使用以及后期维护6.1选课系统使用说明6.1.1系统安装运行环境(1)Java是跨平台的。Linux,windows平台皆可访问。(2)本系统使用的是MySQL数据库,MySQL数据库是一个开源免费,轻量级的数据库,一般电脑完全可以使用。(3)本系统中我们使用到了Kafka消息中间件,Kafka是安装在虚拟机中的。Kafka是由Zookeeper管理的,在我们启动Kafka之前

温馨提示

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

评论

0/150

提交评论