版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在线家教预约系统的设计与实现摘要随着我国社会的迅速发展,有越来越多人可以接受到高等教育,人们对教育的重视力度也越来越大,家教这一行业也随着迅速发展。特别是在当下,新冠疫情的肆虐,孩子们的教育或多或少都受到了一定的影响,在线下的教育受到影响下,为满足疫情下学生们的教育问题,针对传统的家教预约方式受地点、时间等因素制约的情况,为了解决新形势下广大学生预约家教麻烦的问题,实现足不出户就可以完成家教的预约,特地开发了本在线家教预约系统。本系统旨在为学生提供一个预约家教的平台,学生登录后,可以发布自己的需求,并可以针对自己的需求进行编辑或删除。学生在找到想要预约的教师后,填写要预约的时间、地点、备注后实现对教师的预约。学生完成预约后,可以进到预约界面查看已经预约的信息。学生可以对老师做出相应的评价,学生与老师可以到讨论区选择讨论的板块后可以发帖进行讨论。本文主要着重深入阐述了在线家教预约服务系统的具体软件开发工作流程,以系统实践过程中的软件应用发展情况分析为主要软件开发的理论背景,基于B/S软件架构,运用了Jsp软件技术、java软件编程设计语言和Mysql软件数据库等基础软件工具进行了系统开发,通过LayUI在服务端页面实现了比较好的操作,充分有效保证了该预约系统的个人信息安全,保证了了系统的稳定性。该家教预约系统界面简洁,操作简单、方便。通过对系统的基本概述、系统功能分析、系统软件设计、数据库系统管理和子系统、系统测试等几个主要环节,详细性地说明了该系统的软件设计与系统开发工作流程,最后并对整个开发过程进行了总结,实现了在线家教预约的功能。关键字:在线家教预约,JSP技术,MYSQL数据库,Vue目录TOC\o"1-3"\h\u22572摘要 II8683Abstract III15722第1章绪论 174631.1概述 1209771.2国内外研究现状 1142111.3研究目的和意义 2151431.4论文的组织结构 34768第2章开发技术简介 599122.1BootStrap框架 555922.2SSM框架 554832.3VUE技术 65882.4LayUI 716780第3章需求分析 8225533.1系统性能分析 896563.1.1系统安全性 877983.1.2数据完整性 838643.1.3系统可扩展性 8280473.2系统功能分析 9159403.2.1用户功能 9205583.2.2管理员功能 10297943.3系统用例图 1114073.4可行性研究 13302843.4.1技术可行性 1389373.4.2运行可行性 1476063.4.3经济可行性 1429266第4章系统总体设计 1542664.1系统总体架构 15244584.2系统主要功能模块设计 16148154.2.1用户业务模块 17184194.2.2管理员系统管理模块 1812458第5章数据库设计 19161605.1数据库需求 19147135.2概念结构设计 20207625.3逻辑结构设计 2121775第6章详细设计 25192846.1系统的包结构 25312386.2系统的类结构 25127046.2.1类的设计 2559396.2.2系统中主要功能的类图及关系图 2631490第7章编码实现 3294547.1数据库表的设计与实现 32118577.2系统主要功能实现界面及关键代码 36100187.2.1用户登录界面 36159877.2.2发布需求界面 37289567.2.3在线预约界面 38136947.2.4查看预约信息界面 39165627.2.5查找教师界面 4035127.2.6讨论区发帖界面 42132347.2.7教师检索需求界面 43204337.2.8管理员用户管理界面 44291167.2.9公告管理界面 4520057.2.10讨论区管理界面 4630192第8章测试 47283138.1测试概述 47325438.2设计测试用例 48214348.3测试分析 518791第9章结论与展望 526919参考文献 54第1章绪论1.1概述现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时间变得更加地宝贵化,因为每天的每分钟,每秒钟这些时间都能让人们处理大批量的日常事务,这些场景,是之前的手工模式无法与之相抗衡的。在新冠疫情大肆流行的2020年,人们对互联网的依赖程度大大的增加。尤其是在线下授课受到制约的条件下,孩子们的学习对互联网的依赖度也大大增加,对于家教预约来说来说,传统的通过纸质文档查看信息并进行电话预约的方式已经落后了,依靠手工收集分析家教信息,不仅花费较长的工作时间,效率低下,在对记录各种信息的文档进行信息统计以及信息核对操作时,也不能及时保证信息的准确性,基于这样的办公低效率环境下,对于家教信息的处理就要提出新的解决方案。因为这个时代的信息一直都在高速发展,要是不抱着发展的观念看待事情,极有可能被这个市场快速遗忘,甚至被无情地淘汰掉。所以尽早开发一款在线家教预约系统进行信息的快速查看以及进行预约,既跟上了时代的发展脚步,也能让自己的核心竞争力有所提升。在移动互联网的迅速普及下,局域网的广泛应用,为构建基于ssm开发的在线家庭教育预约服务体系的设计和实现工作提供了良好的基础条件。在线的家教预约服务系统具有着其他任何人都无法比拟的诸多优点,网络资源共享、传播速度快等功能,使得学习者可以随时随地通过电脑等方式进行在线查看家教预约相关资料,并且教师们还可以通过电脑等方式进行在线查看家教预约资料,进行分析和发布资料,同时教育部门的管理员通过电脑等计算机对所有家教预约资料进行了全面的管理,大大提升了家教的管理工作效率。1.2国内外研究现状在线教育,是一种基于网络的学习。随着现代信息科学和技术的迅猛发展,互联网已然是当前这个社会时代发展的必备产物。它不仅深深地浸润在现代社会人们的日常生活和工作当中,同时促进了我们的学习形态和教育手段方式的变化与进步。特别是现如今的在线教育,在各行业和领域都已经得到了巨大的应用,得到了广泛人们的青睐。根据国外对线教育现状的分析,美国高等院校在线教育的战略地位正在逐步获得认可,无论从教学质量、发展速度、规模或者是普及率等多个方面,在线教育都已经被融入了到美国的高等教育中,逐渐发展为主流,成为美国高等教育体系重要组成部分。反观当时我国的现阶段网络教育,中国真正的现阶段网络教育开始于1994年国家制定和实施的教育科研互联网示范项目。现阶段网络教育已经在我国取得了一些发展,尽管其发展趋势缓慢,但依旧保持着上升的势态。国内首次提出的能够代表着互联网络教育未来发展战略方向的网络教育模式就是基于互联网的一种教育模式,在现代网络学习的条件和环境下,可以尽量最大限度地充分发挥学习者的自主性、积极性,既同时也可以对其他学习者进行个别化的学习,又同时也可以对其他学习者进行团队协作学习,这种网络教育模式相对来说比较关心和更加注重满足学习者每一个人的需求。在刚刚过去的十几年里,尽管远程教育课的建立和开设活动正处于蓬勃发展之中,但是我们学校的领导人及其老师们在网络上的认可程度并没有大幅提高。美国部分专门开设网络在线教育课程的中职高等院校对于学员能力进行各个培养阶段的评价,在他们完成网络在线教学之后会出现相应专业学分授予,这对于传统网络教育的课堂教学和考核评价方式已经引起了巨大的冲击。因为在线教育的学生成绩考核评价标准非常困难,在线教育的接受度和其合法性也往往得不到客观公正的衡量和评估,导致一些以前原本计划开展远程教育的中小型规模学校已经改变了本地区学校的长期发展策略,将不再计划开设远程教育在线的课程,即放弃了未来将在本地区学校开展远程教育的愿景。对于我国在线网络教育与国外传统网络教育的差异及其优劣,教学负责人根据国外网络教育的现状对其展开了更加主观地比较和评判,结果仁者见慈,但盲目地支持和抵抗都被认为是不可取的。总而言之,在线教育的脚步一定是越来越往前迈的,在线家教预约系统的研究已经得到了比较快的发展,随着研究的不断发展和深入,必将推动在线发展到一个新的高度。1.3研究目的和意义在当今互联网加的时代,一方面是信息的迅速发展,另一方面也是对传统行业进行筛选。能够继续发展的,肯定是那些能够充分运用互联网技术进行自身升级改革的行业。那些停步不前的行业只能就此结束,进而被大家所遗忘。此次设计的在线家教预约系统,它不仅能够让管理人员在增添信息,编辑信息等事务处理上,节省许多的时间,也会砍掉一部分的人工成本,节省不必要开支的资金。另外,此系统的操作界面是可视化的界面,管理人员无需付费培训就能尽快上手。在线家教预约系统的开发意义如下:(1)管理人员再也不用在查询信息上花费大量宝贵的时间了,通过信息关键词字段就可以在几秒内获取需要的信息,在各种突发事件面前管理人员也不用慌张,可以从容淡定地处理各种相关信息。(2)该系统在每天的24小时期间都是不会停止服务的,只要有操作信息的需求,每一个管理人员都能使用平常常用的360浏览器,或者百度浏览器,2345浏览器等大众浏览器都能登录系统,然后对需要操作的信息进行管理,同时也满足了用户在线进行查询家教信息,预订家教的需求。(3)有了这个在线家教预约系统,所有需要进行处理的数据不用在纸质版本的文档上进行记载,而是基于电脑进行信息录入。(4)家教管理方面的信息都是通过网站进行显示,其实质是这些信息都保存在网站对应的数据库里面。只要操作员不去恶意删除信息,那么这些信息将会永久保存。(5)在新冠肺炎全球流行的局势下,该在线家教预约系统极大地减少了用户与外界的身体交互,从而在一定程度上保证了用户的身体健康情况。1.4论文的组织结构编写在线家教预约系统相对应的论文,其实就是对开发完成的程序进行再次解读的过程。本论文从七个方面的内容讲解了开发的程序,具体内容如下:第一个部分:就一定是论文的绪论了,这个部分就是介绍在什么样的背景下开发的程序,以及这个程序开发出来具有什么意义等内容。第二个部分:就是介绍开发这个程序使用了什么技术,使用什么数据库保存程序的数据信息,程序开发的语言是使用的什么语言等内容。第三个部分:就是介绍这个程序开发在现实生活的可行性问题,也讲述了程序开发需要设置什么功能等内容。第四个部分:就是已经知晓程序的大致功能,需要对程序的功能进行更为严格的细分,也需要出具相应的功能模块图。第五个部分:就是数据库的设计了,针对系统的需求设计相应的数据库,包括数据库里数据表的设计等内容。第六个部分:就是详细设计阶段,在这一阶段要分析系统的包结构、类结构等设计出系统的整体架构。第七个部分:就是系统的编码实现阶段,需要使用编程语言完成程序的功能,完成程序的界面设计,最终以界面实现的效果图展示设计成果等内容。第八个部分:就是程序已经完成了开发的前提之下,需要测试程序的各个模块的衔接是否正常,程序各个功能能否在网络等一切外部条件正常的情况下运行,这期间要是出现任何错误都需要及时记录并在后期进行修补完善。第九个部分:就是论文最后的总结展望部分,描述遇到的问题,采用的解决思路等内容。
第2章开发技术简介2.1BootStrap框架Bootstrap是Twitter推出的一个开源的用于web前端开发的工具包,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言写成。Bootstrap是基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件。Bootstrap给用户写好测试了各种兼容、疑难问题,并构建了一套非常优秀成熟的响应式类,并及时提供了移动端优先的响应式系统,用户只需使用Bootstrap已经封装好的class。使用bootstrap大大改善了开发的效率和降低了维护成本。Bootstrap功能特点①跨设备,跨浏览器,可以兼容现代所有主流浏览器,框架包含了贯穿于整个库的移动设备优先的样式。②响应式设计Bootstrap的响应式设计能够自适应于不同分辨率的PC端、ipad和手机端,并且不同设备屏幕之间可以来回切换。③提供全面的组件Bootstrap包含了十几个可重用的组件,可用于创建图像、下拉菜单、导航、警告框、弹出框等,方便开发人员直接调用。2.2SSM框架在使用JavaEE语言进行后端项目开发的过程中,使用最普遍的框架便是SSM框架。Spring是一个开源柜架,是于2003年兴起的一个轻量級的java开发框架由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来。它是为了解決企业应用开发的复杂性而创造的,Sprng使用基本的JavaBean来完成以前只可由EJB完成的事情。但是,Spring的用途不仅限于服务端的开发。从简单性、可试性和松耦合的角度而言,任何java应用都可以从Spring中受益,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(ADP)的容器框架。
SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。MyBatis原本是apache的一个开源项目ibatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为MyBatis。Mybatis是一个基于Java的持久层框架。IBATIS提供的持久层框架包括SQLMaps和DataAccessObjects(DAO)Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的ⅩML或注解用于配置和原始映射,将接口和Java的POJOS(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。图2-2就是SSM框架原理图。图2-1SSM框架原理图2.3VUE技术在早期开发程序前端中,使用得最多的莫过于html/css/JavaScript三大剑客了。但随着技术的慢慢发展,前端能做的事情也是越来越多,也逐渐形成了工程化。按需加载、处理依赖、同时提供开发和生产环境,本地调试自动更新到浏览器等功能都可以由工程化前端实现。前端由此得到了极大的发展,也诞生了很大的前端框架,其中最为流行的是Vue、React和AngularJS三大框架。而Vue是一套用于构建用户界面的渐进式框架,Vue是一个轻量级的前端框架,他的核心只关注视图层,是一个构建数据的视图集合,它易于上手,支持数据双向绑定,学习曲线较为平缓,是一个十分适合作为新手前端学习的一个前端框架。图2-3描述了VUE框架的工作原理。详细见下图。图2-2VUE框架的工作原理图2.4LayUI事实上,layui更多是面向于后端开发者,所以在组织形式上毅然采用了几年前的以浏览器为宿主的类AMD模块管理方式,却又并非受限于CommonJS的那些条条框框,它拥有自己的模式,更加轻量和简单。layui定义为“经典模块化”,并非是刻意强调“模块”理念本身,而是有意避开当下JS社区的主流方案,试图以尽可能简单的方式去诠释高效。它的所谓经典,是在于对返璞归真的执念,它以当前浏览器普通认可的方式去组织模块。layui认为这种轻量的组织方式,仍然可以填补WebPack以外的许多场景。所以它坚持采用经典模块化,也正是能让人避开工具的复杂配置,重新回归到原生态的HTML/CSS/JavaScript本身。layui提供了丰富的内置模块,他们皆可通过模块化的方式按需加载,其中包括:layer、layDate、layPage、laytpl、table、form、upload、element、tree、layeditor、rate、carousel、flow、util、code等方便用户的使用。第3章需求分析3.1系统性能分析3.1.1系统安全性程序在使用中是不允许其他访问者随意窃取程序里面的隐秘信息,也不允许其他操作者越权操作其他管理用户操作的功能,要真正杜绝这些现象就必须在程序开发之前把程序的安全性给考虑进去。3.1.2数据完整性数据完整性是确保数据信息是否具有可靠性,是否具有参考价值的一个重要因素,数据信息只描述一部分,或者必有的数据信息反而为空等现象都是代表着这个数据信息不完整,有数据缺陷,这是个很严肃的问题,因为这样的数据信息跟垃圾信息没什么两样。说到数据完整性,不得不提最常用的程序表单功能。这些表单主要就是提取广大用户的数据信息的,需要广大用户根据表单上的要求,填写自己的姓名信息,以及自己的联系方式信息,有些也会有额外的信息填写要求,有必须要填的选项,也有不需要必填的选项。假如广大用户为了保护自己的隐私,或者不想受到其他人的骚扰,不填写必填项等信息,广大用户在最后提交此表单的时候,往往都是提交不了的。数据完整性不仅仅限于登记的数据要完整,它也需要程序里面的所有数据信息之间存在关联,而且这种联系也是要求不能出差错的。由于数据表之间也会存在一定的联系,所以同一个数据也会出现在另一个表格里面,那么这两个表格记录的同一个数据应该是一样的。不能够是同样的数据信息在不同表中不一样。3.1.3系统可扩展性所有的事物都是一直在发展的,我们开发软件也得带着发展的思维去进行软件开发操作,这样的话,开发出来的程序在应对管理所需时,也会相对应的进行程序升级与更新。不论是功能完善还是数据库升级都能在原来的基础上对原有程序进行迭代升级。让开发出来的程序能够走得越来越远。这也是广大用户对程序软件的使用要求。3.2系统功能分析本文的在线家教预约系统的设计与开发主要为了充分实现教师用户的功能和学生用户的功能以及管理员的管理功能这三大功能,下面将对教师与学生用户功能和管理员的管理功能做出详细的功能需求设计与分析。3.2.1用户功能用户进入到网站首页后,未注册只能浏览教师信息、学生信息、公告信息以及浏览讨论区。不能解锁其他功能。首页提供注册、登录功能,能够对用户输入的信息进行合法检查。针对学生用户,必须要进行注册登录后才能完成讨论功能与核心的预约功能等。并且,学生进行注册时,要填写正确的用户名、姓名、联系电话、就读学校、年级,如有漏填,要提示相应的信息。学生注册完后,必须要用正确的用户名与密码登录,如果有一项不正确则登陆失败并提示用户名或密码错误。学生登录后,可以发布需求,包括需求的标题、时间、地点、备注,同样漏填信息时,要进行相应的提示,以便预约的方便。学生在发布需求后,可以根据自己的需求变化来编辑已经发布的需求以及删除已经发布的需求。学生用户可以在教师页面浏览教师的大体信息,点击教师的头像后可以进入到教师的详情页面查看教师的个人简介以及对教师进行评价,如果学生未登录,则不能对老师进行评论,并提示用户登录学生账号。学生在教师页面可以搜索老师,可以单独输入要查找教师的毕业院校以及擅长科目来进行查找教师,同样也可以输入两者来查找同时符合两个条件的教师。学生只有在登录后才可以进行预约,如果未登录,则要提示用户登录学生账号。如果学生已经登录,则可以在教师详情页面进行对教师的预约,预约时要填写预约的时间、地点、备注,漏填同样要提示用户对应的信息。学生在完成预约后,可以进入到自己的预约信息界面查看已经完成的预约记录,包括预约的时间、地点、教师以及预约的状态。并可以删除预约记录。学生登录后,可以进入到自己的个人信息页面,对已经注册的信息进行修改。同学生的注册登录功能一样,教师也要填写用户名、密码、姓名、联系电话、教龄、擅长科目等进行注册。并用正确的用户名与密码才可以登录成功,否则一样的提示相应信息。同学生查看教师功能一样,教师可以查看学生的大体信息,点击学生头像后可以查看学生需求的具体信息。教师登录后,可以进入到检索需求界面,这时会把所有有需求的学生检索出来,教师也可以输入学生需要的科目来进行检索,这时会把所有有这一科需求的学生检索出来。同学生预约教师一样,教师必须登录后才可以预约学生,否则弹出相应的提示。教师可以找到有需求的学生进行预约,填写预约的时间、地点、备注,同样漏填要提示相应的信息。教师在完成预约后,可以进入到自己的预约信息界面查看已经完成的预约记录,包括预约的时间、地点、教师以及预约的状态。并可以删除预约记录。教师登录后,可以进入到自己的个人信息页面,对已经注册的信息进行修改。学生与教师登录后,可以进入到讨论区界面,输入要讨论的标题,选择讨论的板块以及输入内容后可以进行发帖,漏填则提示相应的信息。学生与老师可以在讨论区界面看到全部的帖子以及点击某一板块后只显示当前板块下的帖子,并可以看到当前帖子回帖的数量。点击某一个贴子时,可以进入到帖子的详情页面,在这一页面用以进行回帖讨论,输入内容为空则要提示不能为空的信息。用户可以在首页浏览管理员发布的公告的标题以及点击某一公告后进入到公告的详情页面进行查看。3.2.2管理员功能管理员登录后,可以对网站首页的焦点图进行管理,包括增加和删除焦点图。管理员点击用户管理界面后,可以显示出所有的用户以及可以通过查找具体的名字来查找用户,并可以删除用户。管理员可以通过发布公告的标题来查找公告,并针对已经发布的公告进行编辑、删除,并可以发布新公告。管理员可以通过板块的名字来查找板块,并针对已经发布的板块进行编辑、删除,并可以发布新的板块。管理员可以查看所有已经发布的帖子,包括帖子标题、板块、发布时间等信息,可以通过帖子的标题来查询帖子,并可以针对帖子设置和取消为精华帖。针对不同的帖子,管理员可以查看每一个帖子的回帖,并可以删除相应的回帖。同样也可以删除某一个帖子。管理员可以点击评论区显示出所有学生对老师的评价,包括评论的学生姓名、老师姓名评论内容等,可以针对某一个老师查询学生对其评价。管理员同样可以删除指定的评论。3.3系统用例图本在线家教预约系统目的是为用户提供一个良好的在线预约平台,以这一目的为需求,可以把系统的用户分为三种:学生用户、教师用户、管理员用户。他们的信息都被储存在数据库中。只有注册了学生或教师账户,才能使用系统为其开放的功能。管理员的权限最高,可以对系统进行维护以及对用户的管理。这三种用户的用例图如下图所示。学生用户用例图如下图图3-1所示。图3-1学生用户用例图教师用户用例图如图3-2所示。图3-2教师用户用例图管理员用户用例图如图3-3所示。图3-3管理员用例图3.4可行性研究需要使用大部分精力开发的在线家教预约系统为了充分降低开发风险,特意在开发之前进行可行性分析这个验证系统开发是否可行的步骤。本文就会从技术角度,经济角度,还有用户使用的程序的运行角度进行综合阐述。3.4.1技术可行性开发程序语言选择的是面向对象的,功能强大的,方便好用的Java语言,数据库的使用方面使用到了MYSQL数据库跟Navicat,由于自己之前接触过一些简单的程序开发方面的设计作品,所以对Myeclipse工具的使用比较熟练,对于数据库的操作技巧也有一定的积累。另外,程序开发需要在自己电脑上安装的软件并不多,在win10操作系统的大环境下,能够完全搭建好程序开发的操作环境,比如Myeclipse工具,MYSQL数据库工具,以及处理程序图片的Photoshop工具等都能安装在自己的电脑上。总的说来,开发这个程序在技术上是可以实现的。3.4.2运行可行性因为这个家教预约系统从开始开发到截止都是依据用户的需求来进行开发的,考虑到此程序软件是面向广大普通操作用户,鉴于他们的知识文化水平,特意开发出一个可操作性强的,能够很容易让使用用户上手的,具有可视化操作界面的一个程序软件。总体来来,这个系统站在用户运行程序的角度上分析,是不存在操作困难这个问题的。用户只要打开网站就可以免去专人培训进行程序功能操作。3.4.3经济可行性开发一个系统时我们需要考虑花费问题,我们必须考虑系统开发中所有的花费进行计算,我们要考虑到系统需不需要太大的资金。每一套系统的开发,都得花费一定的时间去研究。需要使用的软件也是有很多需要花钱。本系统使用的MyEclipse、MySQL数据库及GoogleChrome浏览器等软件都是网上均可以下载使用的,可以让开发人员免费使用,无需收费。从开发角度来说,成本低,因此具有经济可行性。综上所述,线上家教预约服务系统无论是在技术、经济还是运行上均具有非常强的可行性,而且开发这种预约程序也是很必要的。第4章系统总体设计4.1系统总体架构本在线家教预约系统由浏览器端、Web服务器端以及数据库端构成。用户可以通过浏览器访问本在线家教预约系统。Web服务端的功能是处理不同的业务,响应用户的各种请求,然后给用户提供各自需要的功能。考虑到用户之间的差异性以及系统的诸多因素,本在线家教预约系统主要基于B/S结构(Browser/Server,浏览器/服务器结构)B/S结构的一大特点就是用户可以在任何地方执行操作,没有安装任何软件的麻烦,只要可以连接到Internet就可以使用。这样就实现了客户端的零维护,系统的课扩展性也得到了大大的提高。B/S架构主要有两大优点,第一点,更新简洁:如果需要更新内容的话,对开发人员来说需要更改服务器的内容,但是对用户来说只需要刷新浏览器就可以完成更新。第二点,它支持多设备同步:所有数据都在网上,只要能够使用浏览器就可以完成使用。虽然基于B/S架构的系统也有一定的缺点与局限性,但是这些缺点相比较其优点来说完全可以忽略不计,对于本系统来说并不会产生一些不好的结果。这样一来对于本在线家教预约系统来说,采用B/S架构是最合适不过的。本在线家教预约系统的总体架构图如图4-1所示:图4-1系统总体架构图4.2系统主要功能模块设计根据本在线家教预约系统的功能,可以把本系统分为用户业务功能模块及系统管理员管理的系统管理功能模块,系统的模块层次图如图4-2所示。图4-2系统模块层次图4.2.1用户业务模块注册登录:学生与教师分别可以进行注册,注册时要填写必要的信息,如有漏填则给用户提示信息。学生于教师注册后凭借正确的用户名与密码进行登录,有一项不正确则要给用户提示信息。需求管理:学生登录后可以在自己的发布需求界面填写要发布需求的标题时间地点备注进行需求的发布,漏填要提示信息。发布玩需求后,学生可以编辑已经发布过的需求以及删除不想发布的需求。教师登录后可以进入到检索需求界面针对学生的需求进行精确地搜索从而进行进一步的操作。预约管理:学生登录后可以输入教师的毕业院校以及擅长科目等进行精确查找。找到合适的教师后,进入教师详情页面进行预约,输入要预约的时间、地点、备注进行预约。预约成功后可以在自己的预约信息界面查看预约记录,并可以删除预约记录。教师登录可以在自己的预约信息板块查看自己的预约情况。讨论区:学生与教师登陆后都可以进入到讨论区发帖进行讨论,发帖时要输入帖子的标题以及选择要发帖的板块,漏填同样给用户提示信息。学生与教师还可以在讨论区针对别人的贴子进行回帖进行讨论,回帖的内容为空则提示用户不能为空。个人信息管理:学生与教师登录后可以对自己的用户名、密码、联系电话等进行查看跟修改。评论:学生登录后可以进入到教师的详情页面对教师进行评论。4.2.2管理员系统管理模块焦点图管理:管理员登录后,可以对首页的焦点图进行新增或删除。用户管理:管理员可以根据用户的姓名查找某一个用户以及删除用户的信息。公告管理:管理员可以对网站的公告进行查找进而编辑已经发布的公告,同时可以新增或删除公告。板块管理:管理员可以对网站讨论区的板块进行修改、新增、查找以及删除操作。讨论区管理:管理员可以查看所有已经发布的帖子的具体信息,包括发帖人查看次数等,并针对帖子的好坏可以修改帖子为精华帖同样可以取消精华帖,同样也可以删已经发表的帖子。管理员也可以管理某一个帖子的回帖,可以删除其回帖。评论管理:管理员可以看到所有学生对教师的评价,以及可以查找教师的姓名进而得到某一个老师的具体评价,并根据需要可以删除对老师的评价。
第5章数据库设计5.1数据库需求一个好的数据库结构可以直接关系到应用程序开发的效果和优劣,数据库的设计都离不开对于表结构的设计,同样也离不开表与表之间的各种关系,以及系统开发需要设计的数据表内容等信息。在进行这次数据库的设计期间,还是会更加需要我多花时间对其进行思考,最终才能够将配套程序的数据库设计出来。本家教预约系统的数据字典如下图所示:图5-1数据元素数据字典图图5-2数据表数据字典图图5-3数据流数据字典图5.2概念结构设计E-R图是一种用于描述和显示各种数据类型之间关系的数据描述方法,E-R图可以使得我们能够完整地从其中映射出一个现实模型之间的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。属性:E-R图中的属性,是我们用来表示一个属性实体的基本属性,实体由多条属性相互作用组合所构成,属性拥有自己的数据类型,数据大小。属性的好坏决定了E-R图中实体的健全性、完整性和稳定性。关系:E-R图中的关系是指实体与实体之间的一种关系,用一个菱形来描述和表示实体间的关系,这些不同菱形关系的联系上有着一对多或多对多的数据联系,这些都构成了E-R图的关系,E-R图的这种关系紧密的连接了两个不同的实体,使得实体之间的关联性更加的显著、易懂。本在线家教预约系统的E-R图5-4所示:图5-4在线家教预约系统E-R图5.3逻辑结构设计从ER图的各个实体出发,我们可以把ER图中的各个实体转化为关系模型,也就是转化为表的结构。下面的图展示了各个实体转化为表的结果。名称数据类型长度描述字段ID数值型11需求唯一标识符学生ID字符型255学生编号标题字符型255需求的标题时间字符型255需求发布的时间地址字符型255预约的地址备注文本型预约进一步的信息说明表5-1需求信息表名称数据类型长度描述用户ID数值型11编号用户名字符型255用户名密码字符型255密码姓名字符型255姓名图片字符型255图片电话字符型255电话删除状态字符型255删除状态学校文本型学生就读学校跟老师的毕业院校工龄字符型255教师的工龄技能字符型255教师擅长的科目类型字符型255区分学生与教师年级字符型255学生的年级简介文本型教师的个人简介表5-2用户信息表名称数据类型长度描述公告ID数值型11公告唯一标识符标题字符型255公告的标题符照片字符型255公告的图片内容文本型公告的内容时间字符型255公告发布的时间表5-3公告信息表名称数据类型长度描述评论ID数值型11评论唯一标识符用户ID字符型255评论学生的编号教师ID字符型255被评论教师编号内容文本型评论的内容时间字符型255评论的时间表5-4评论信息表名称数据类型长度描述帖子ID数值型11帖子的唯一标识符用户ID字符型255评论用户的编号标题字符型255帖子标题内容文本型帖子内容时间字符型255时间查看次数字符型255帖子的查看次数删除字符型255帖子是否被删除表5-5帖子信息表名称数据类型长度描述回帖ID数值型11回帖的唯一标识符用户ID字符型255回帖用户编号帖子ID字符型255被回复帖子的编号内容文本型回帖内容时间字符型255回帖时间表5-6回帖信息表名称数据类型长度描述板块ID字符型11板块唯一标识符名字字符型255板块名称删除状态字符型255板块是否被删除表5-7板块信息表第6章详细设计6.1系统的包结构本在线家教预约系统的包结构总共分为五类,分别为bean包,它负责存放实体类,例如用户类、需求类、预约信息类等。DAO包,他负责跟数据库打交道,例如数据的增删改查等方法,mapping包下存放了与数据库交互的具体sql语句。Controller包,它负责处理前台发送过来的请求。Util包下存放的是一些工具类,比如日期转化类等。6.2系统的类结构6.2.1类的设计根据本系统的功能,将系统中的实体类分别设计成Article类、Demand类、Member类、News类、Pinlun类、Reply类、Section类、Yuyue类。Article类中的成员变量有id、memberid、title、content、savetime、lookcs、delstatus、sectionid、isjh。分别表示帖子的id,发帖人的id、帖子的标题、帖子的内容、发帖的时间、帖子的查看次数、帖子的删除状态、帖子对应板块的id、帖子是否为精华帖。Demand类中的成员变量有id、stid、title、savetime、addr、content,分别表示需求的id、发布需求学生的id、发布需求的标题、需求的地点以及内容。Member类中的成员变量有id、uname、upass、tname、filename、tel、utype、delstatus、school、skilled、workage、grade、content,分别表示用户的id、用户名、密码、真实姓名、头像、电话、用户类型、删除状态、学校、擅长的科目、工龄、年级、个人简介。News类中的成员变量有id、title、fiflename、content、savetime分表表示公告的id、公告的标题、公告的照片、公告的内容以及公告的发布时间。Pinlun类中的成员变量有id、memberid、tcid、content、savetime分别表示评论的id、发表评论学生的id、被评论教师的id、评论的内容以及评论时间。Reply类中的成员变量有id、memberid、articleid、content、savetime分别表示回帖的id、回帖人的id、回复帖子的id、回复的内容以及回复的时间。Section类中的成员变量有id、name、delstatus分别表示板块的id、名字以及删除状态。Yuyue类中的成员变量有id、stid、tcid、savetime、addr、content、flag、分别表示预约的id、预约学生的id、被预约老师的id、预约时间、预约的地址、预约的备注以及预约的状态。部分类之间的关系如下图6-1所示图6-1部分实体类之间的关系图6.2.2系统中主要功能的类图及关系图MemberDAO中的select、add、findbyid、update方法实现了在数据库中对用户的增删改查操作。MemberController中的login方法会通过用户名与密码调用DAO层中的select方法从数据库中查找对应的用户信息,如果找到就返回找到的用户并跳转到首页实现登录功能。涉及用户登录的类图及关系图如图6-2所示。图6-2登陆操作的类图及关系图YuyueDAO中有add、select、delete方法实现了在数据库中对预约信息的增删查操作,用户在前端页面填写好相应的信息后,封装到Yuyue类,然后会传给YuyueController,在YuyueController中会获取到当前要预约的用户然后调用yuyueadd方法,然后调用DAO中的add方法把预约的各种信息添加到数据库中,实现预约的功能。预约操作的类图及关系图如图6-3所示。图6-3预约操作的类图及关系图ArticleDAO中有add、delete、selectAll、update等方法对应帖子的增删改查方法。用户在前端选择好对应发帖的板块以及填写完各种信息后会封装到Article类中,然后信息会传到ArticleController中,获取要发帖的用户后调用ArticleAdd方法,进而调用DAO层中的add方法把发表的帖子信息存放到数据库中。发帖的类图及关系图如图6-4所示。图6-4发帖操作的类图及关系图DemandDAO中有add、selectAll、findById、update等方法,对应对需求的增删改查方法等。学生用户登录后在前端的页面填写需要发布的需求后封装到Demand类中,然后将封装好的信息传到DemandController中,并获取到当前的用户,然后调用DemandDAO中的add方法,把发布的需求存到数据库中方便以后的查找、编辑等操作。发布需求的类图及关系图如图6-5所示。图6-5发布需求的类图及关系图PinlunDAO中有select、add等方法,对应着学生对教师评论的增删方法,学生用户登录后在教师详情页面添加评论后,将评论的内容封装到Pinlun类中然后传给PinlunController,Controller会获取到评论教师的id然后获取到评论的学生,然后调用DAO中的add方法,将评论的具体信息存储在数据库中,实现后续的操作。评论教师的类图及关系图如图6-6所示。图6-6评论教师的类图及关系图ReplyDAO中有selectAll、add、delete等方法,对应着对回帖的查找、添加、删除等方法。用户在点击某一个帖子后,会进入到帖子详情页面,在输入好回复的内容后将信息封装在reply类中,用户点击回复后会调用一个add方法,方法里首先去MemberController验证用户是否登录,如果没有登录则跳转到登录页面,如果用户已经登录就会把封装起来的信息传到ReplyController中调用replyAdd方法,方法会将评论的信息作为一个参数,然后会得到当前回帖用户的id最后调用replyDAO中的add方法把回帖的内容存到数据库中。用户回帖的类图及关系图如图6-7所示。图6-7用户回帖的类图及关系图ImgadvDAO中有add、delete方法对应着焦点图的增删方法。系统管理员登录后可以对网站首页的焦点图进行管理,管理员点击上传按钮后,会将焦点图信息封装到imgadv类中,然后调用ImgadvController中的imgadvAdd方法,然后调用DAO中的add方法实现焦点图的添加。管理员管理焦点图的关系图如图6-8所示。图6-8管理员管理焦点图图及关系图
第7章编码实现7.1数据库表的设计与实现本在线家教预约系统需要后台数据库,本系统采用Navicat作为工具根据第五章数据库的设计,在MYSQL数据库中建立了相对应的表,下面介绍数据库中的各个表的详细信息。列名字段类型长度是否主键说明idint11是编号stidvarchar255否学生编号titlevarchar255否标题savetimevarchar255否时间addrvarchar255否地址contenttext否内容表7-1需求信息表(demand)列名字段类型长度是否主键说明idint11是编号unamevarchar255否用户名upassvarchar255否密码tnamevarchar255否姓名filenamevarchar255否图片telvarchar255否电话delstatusvarchar255否删除schooltext否学校workageInt11否工龄skilledVarchar255否擅长科目contentVarchar255否个人简介utypeVarchar255否类型表7-2用户信息表(member)列名字段类型长度是否主键说明idint11是编号titlevarchar255否标题filenamevarchar255否图片contenttext否内容savetimevarchar255否时间表7-3公告信息表(news)列名字段类型长度是否主键说明idint11是编号memberidvarchar255否用户编号tcidvarchar255否教师编号contenttext否内容savetimevarchar255否时间表7-14评论信息表(pinlun)列名字段类型长度是否主键说明idint11是编号memberidvarchar255否用户编号titlevarchar255否教师编号contenttext否内容savetimevarchar255否时间lookcsvarchar255否查看次数delstatusvarchar255否删除Isjhvarchar255否精华sectionidvarchar255否板块id表7-5帖子信息表(article)列名字段类型长度是否主键说明idint11是编号memberidvarchar255否用户编号Articleidvarchar255否帖子编号contenttext否内容savetimevarchar255否时间列名字段类型长度是否主键说明idint11是编号namevarchar255否板块名称delstatusvarchar255否删除表7-6回帖表(reply)表7-7板块表(section)列名字段类型长度是否主键说明idint11是编号stidvarchar255否学生编号tcidvarchar255否教师编号savetimevarchar255否时间addrvarchar255否地址contentvarchar255否内容Flagvarchar255否状态表7-8预约信息表(yuyue)列名字段类型长度是否主键说明idint11是编号usenamevarchar255否用户名usepasswordvarchar255否密码usertypevarchar255否类型realnamevarchar255否真实姓名telvarchar255否电话Filenamevarchar255否头像表7-9管理员表(sysuser)列名字段类型长度是否主键说明idint11是编号filenamevarchar255否照片表7-10焦点图表(imgadv)7.2系统主要功能实现界面及关键代码7.2.1用户登录界面用户在登录界面输入正确的账号与密码后点击登录按钮即可进行登录,系统会对用户输入的账号与密码进行验证,两者都正确则登录成功,反之登录失败,用户登录界面展示如图5-2所示。图7-1用户登录界面图关键代码如下:<scripttype="text/javascript">methods:{login(){//用户点击登录时跳转到此方法 if(this.uname==""){ layer.msg("请输入用户名")//未填写信息弹出提示框提示用户输入 } elseif(this.upass==""){ layer.msg("请输入密码") }else{axios.post('Login.do',qs.stringify({//携带用户信息去controller中进行登录操作uname:this.uname,upass:this.upass})).then(response=>{//controller进行判断后返回一个数字代表是否登录成功if(response.data.data==400){layer.msg("用户名或密码错误")}else{window.location.href="index.html"//登录成功跳转到首页} },}})</script>7.2.2发布需求界面学生用户可以进行在线发布需求信息,界面展示如图7-2所示。图7-2需求发布面图关键代码如下:<scripttype="text/javascript">methods:{ add(){//点击立即提交跳转到此方法 this.savetime=$("#savetime").val()//进行非空验证 if(this.title==""){ layer.msg("标题不能为空",{icon:5}) returnfalse; } if(this.savetime==""){ layer.msg("预约时间不能为空",{icon:5}) returnfalse; } if(this.addr==""){ layer.msg("预约地点不能为空",{icon:5}) returnfalse; }axios.post('admin/demandAdd.do',qs.stringify({//跳转到controller进行添加操作 title:this.title, savetime:this.savetime, addr:this.addr, content:this.content,})).then(response=>{//添加成功给出提示 layer.msg("操作成功",{icon:6},function(){ parent.layer.closeAll(); parent.location.reload() }) }).catch(error=>{console.log(error)}) }, }})</script>7.2.3在线预约界面学生在登录本系统后可以进行在线预约,其界面展示如图5-4所示。图7-3在线预约界面图学生进行预约的关键代码:<scripttype="text/javascript">methods:{ add(){//点击预约跳转到此方法 this.savetime=$("#savetime").val() if(this.savetime==""){//进行非空验证 layer.msg("预约时间不能为空",{icon:5}) returnfalse; } if(this.addr==""){ layer.msg("预约地点不能为空",{icon:5}) returnfalse; } axios.post('yuyueAdd.do',qs.stringify({//携带信息跳转到controller进行添加操作 savetime:this.savetime, addr:this.addr, content:this.content, tcid:this.teacherid, flag:"st",})).then(response=>{//预约成功给出提示 layer.msg("操作成功",{icon:6},function(){ parent.layer.closeAll();//自动关闭页面 parent.location.reload()//重新加载页面 }) }).catch(error=>{console.log(error)}) },}})</script>7.2.4查看预约信息界面用户登录后可进入个人界面查看预约信息,预订界面展示如图5-5所示。图7-4预约信息界面图查看预约信息的关键代码:<scripttype="text/javascript">methods:{ getcheckmember(){//先判断用户是否登录, axios.post('checkmember.do',qs.stringify({})).then(response=>{ this.sessionmember=response.data.sessionmember}).catch(error=>{console.log(error)}) }getyuyuelist(){//得到预约列表,进行分页显示axios.post('yuyueLb.do',qs.stringify({pageSize:this.pageSize})).then(response=>{layui.use(['laypage','layer'],function(){varlaypage=layui.laypage,layer=layui.layer;//总页数大于页码总数laypage.render({elem:'demo1',limit:vmm.pageSize,count:response.data.list.length//数据总数,jump:function(obj,first){vmm.current_page(obj.curr,vmm.pageSize)console.log(obj.curr);//得到当前页,以便向服务端请求对应页的数据。}});});}).catch(error=>{console.log(error)})},}})</script>7.2.5查找教师界面用户可以根据自己的需求进行查找教师,界面展示如图7-3所示。图7-5查找教师界面图关键代码:getteacherlist(){//点击查找教师跳转到此方法axios.post('admin/memberList.do',qs.stringify({skilled:this.skilled,//携带教师的擅长科目及毕业院校信息去controller进行查找 school:this.school, utype:"教师",pageSize:this.pageSize})).then(response=>{//进行分页显示layui.use(['laypage','layer'],function(){varlaypage=layui.laypage,layer=layui.layer;//总页数大于页码总数laypage.render({elem:'demo1',limit:vmm.pageSize,count:response.data.list.length//数据总数,jump:function(obj,first){vmm.current_page(obj.curr,vmm.pageSize)console.log(obj.curr);//得到当前页,以便向服务端请求对应页的数据。}});});}).catch(error=>{console.log(error)})7.2.6讨论区发帖界面用户可以进行在线讨论,发布帖子界面展示如图5-7所示。图7-6讨论区界面图关键代码:methods:{add(){//点击发表跳转到此方法 axios.post('checkmember.do',qs.stringify({//先判断用户是否登陆,没有登陆则不能发帖})).then(response=>{ if(response.data.data==200){ this.sectionid=$("#sectionid").val()//获取选择板块的名称 this.content=window.editor.html() if(this.title==""){//非空验证 layer.msg("标题不能为空",{icon:5}) returnfalse; } if(this.sectionid==""){ layer.msg("请选择版块",{icon:5}) returnfalse; } if(this.content==""){ layer.msg("发表内容不能为空",{icon:5}) returnfalse; } axios.post('articleAdd.do',qs.stringify({//携带要发表的标题、板块以及内容到controller中进行添加操作 title:this.title, sectionid:this.sectionid, content:this.content,})).then(response=>{ layer.msg("发表成功",{icon:6}) this.getarticlelist()//发表成功自动获取最新的帖子}).catch(error=>{console.log(error)}) }else{ location.replace("login.html") }}).catch(error=>{console.log(error)})7.2.7教师检索需求界面教师登录后,可以根据学生的需求查找出对应需求的学生如图5-8所示图7-7检索需求界面图实现检索的关键代码如下:@ResponseBody@RequestMapping("admin/demandList") publicHashMap<String,Object>demandList(@RequestParam(defaultValue="1",value="pageNum")IntegerpageNum,@RequestParam(defaultValue="1",value="pageSize")IntegerpageSize,HttpServletRequestrequest){ Stringkey=request.getParameter("key");//得到检索的需求 HashMap<String,Object>res=newHashMap<String,Object>(); HashMap<String,String>map=newHashMap<String,String>(); map.put("key",key); List<Demand>demandlist=demandDAO.selectAll(map);//先根据key查到所有的需求 for(Demanddemand:demandlist){//从需求列表中根据需求的学生id找到对应的学生 Memberstudent=memberDAO.findById(Integer.parseInt(demand.getStid()));//根据需求查到学生 demand.setStudent(student); }7.2.8管理员用户管理界面管理员可进行用户信息的查看和删除界面展示如图5-8所示。图7-8用户管理界面图实现管理的关键代码:member_list(){//根据用户名查询用户axios.post('memberList.do',qs.stringify({ key:this.key,//key为搜索框中绑定的值 pageSize:this.pageSize}))del(id){//根据id删除用户 axios.post("memberDel.do",qs.stringify({ id:id, })).then(response=>{ window.location.href="memberlist.html" })//后台用户列表@ResponseBody@RequestMapping("admin/memberList")publicHashMap<String,Object>memberList(@RequestParam(defaultValue="1",value="pageNum")IntegerpageNum,@RequestParam(defaultValue="1",value="pageSize")IntegerpageSize,HttpServletRequestrequest){Stringkey=request.getParameter("key");//根据key来查找用户Stringutype=request.getParameter("utype");HashMap<String,Object>res=newHashMap<String,Object>();HashMap<String,String>map=newHashMap<String,String>();map.put("key",key);map.put("utype",utype);List<Member>memberlist=memberDAO.selectAll(map);//在DAO层根据map查找用户PageHelper.startPage(pageNum,pageSize);//(当前页,每页的个数)List<Member>list=memberDAO.selectAll(map);PageInfo<Member>pageInfo=newPageInfo<Me
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南平市属医疗卫生单位第九届“人才·南平校园行”紧缺急需人才招聘备考题库含答案详解
- 2026年开封市东基电力有限公司招聘备考题库及一套完整答案详解
- 2026年中物流服务管理(雄安)有限公司招聘备考题库及1套完整答案详解
- 2026年中建西南咨询顾问有限公司招聘备考题库含答案详解
- 2026年北仑区港航管理中心公开招聘编外人员备考题库及参考答案详解一套
- 2026年中原农业保险股份有限公司招聘67人备考题库带答案详解
- 2026年宁波东方人力资源服务有限公司(拟派遣到宁波大学)非事业编制人员招聘备考题库及一套答案详解
- 2026年广州医科大学附属第四医院编外人员招聘备考题库参考答案详解
- 2026年中国人民财产保险股份有限公司海南省分公司招聘备考题库及答案详解一套
- 2026年中广核高新核材(四川)有限公司招聘备考题库及参考答案详解一套
- 年度验证工作总结
- 运输管理组组长安全生产岗位责任制模版(2篇)
- 2025届山西省阳泉市阳泉中学高二生物第一学期期末质量检测试题含解析
- 毒理学中的替代测试方法
- DB3502-Z 5026-2017代建工作规程
- 广东省大湾区2023-2024学年高一上学期期末生物试题【含答案解析】
- 第四单元地理信息技术的应用课件 【高效课堂+精研精讲】高中地理鲁教版(2019)必修第一册
- 提高隧道初支平整度合格率
- 2023年版测量结果的计量溯源性要求
- GB 29415-2013耐火电缆槽盒
- 中国古代经济试题
评论
0/150
提交评论