作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
摘 要
互联网发展到如今也近20年之久,小学生课外知识学习网站一直作为互联网发展中的一个重要角色在不断更新进化。小学生课外知识学习网站从最初的文本显示到现在集文字、视频、音频与一体,成为一种网络多媒体浏览网站。作为一种媒体传输媒介,小学生课外知识学习网站如今也分各个类别,各种形式。本文着重对小学生课外知识学习网站进行分析和研究,浅析小学生课外知识学习网站的现状和存在的一些问题并对此进行研究,通过对问题和现状的分析研究和对用户需求的一个简单整理建模,设计并且实现一个小学生课外知识学习网站。
小学生课外知识学习网站采用的开发框架为SSM框架,也就是Spring mvc、Spring、MyBatis这三个框架,页面设计用的是jsp技术作为动态页面文件设计,jsp文件里可以对实现html等界面布局的代码,采用SpringMVC替代传统的struts2框架,主要对jsp访问的拦截和控制,Spring作为整个控制的核心,通过控制反转技术和面向切面技术,让Spring自动对使用的类文件进行调用和导入,MyBatis主要作为底层操作数据库,不牵扯业务逻辑,开发工具采用Eclipse,服务器用的是tomcat。编码语言是Java,数据库采用Mysql。
关键词:小学生课外知识学习网站;Java;MySQL;SSM框架;VUE框架
信息化的世界,对于互联网就是一个无国界的传播过程。小学生课外知识学习网站也像其他很多网络交流工具一样,时刻在给每一个人带来信息全球化的过程中自由发布个性化信息平台,这就是互联网给人们带来的革命性变革力量。互动的网络社会突破了地域之间人们的阻碍,它给人们带来了更多的机会和把握未来的机遇。
随着小学生课外知识学习网站的发展,小学生课外知识学习网站越来越深刻的影响着我们的生活。说起影响,我们就不能不提起木子美,通过小学生课外知识学习网站把木子美的形象送到千家万户,同时也将千家万户吸引到小学生课外知识学习网站上来。这样的互动每天都在发生,越来越多,越来越频繁。但是小学生课外知识学习网站毕竟属于非主流媒体,而且主要以个人小学生课外知识学习网站形式出现的小学生课外知识学习网站很难带给社会多么大的变化。但是正是由于小学生课外知识学习网站的这种大众性,也就决定了它与生俱来的独立性和人文精神。另外作为小学生课外知识学习网站的基本功能之一,它提供给我们一个自我表现的舞台,这里真正的体现了:平等,开放,自由,共享的互联网的精神。
现今小学生课外知识学习网站还存一些问题:首先,小学生课外知识学习网站开发者或者拥有着,为了吸引更多客户盲目定义了小学生课外知识学习网站外观以及内容。小学生课外知识学习网站页面颜色搭配太多使整个页面失去了一目了然效果,令人看的眼花缭乱。页面布局划分不规范,没整体的观念,盲目划分模块只为填充更多信息量。在内容上收入太杂,图片搭配不合理等原因,导致小学生课外知识学习网站宗旨及传播的信息没能有效传播出去。动态效果运用太多当鼠标经过时,容易产生不好感觉。垃圾链接太多,容易产生反感。其次,目前的小学生课外知识学习网站网站大都属于综合性的小学生课外知识学习网站,上面各个方面的内容混合在一起,小学生课外知识学习网站用户也各式各样。这样是达到了小学生课外知识学习网站网站开放性的原则但是要在上面找到专业的,有价值的东西就会显得很困难,属于杂货铺式的公共场合。未来的小学生课外知识学习网站网站将会走向专业化的道路,专业化的小学生课外知识学习网站网站将更有利于向专业化的出版,咨询,软件方面扩展,也将更有利于有关专业人士采用专业的网络信息资源。它将为专业人士提供一个专业资源,专业知识交流,信息发布的既综合又专业的交流平台。
此系统的操作界面是可视化的界面,管理人员无需付费培训就能尽快上手。小学生课外知识学习网站的开发意义如下:
1、管理人员再也不用在查询信息上花费大量宝贵的时间了,通过信息关键词字段就可以在几秒内获取需要的信息,在各种突发事件面前管理人员也不用慌张,可以从容淡定地处理各种相关信息。
2、该系统在每天的24小时期间都是不会停止服务的,只要有信息操作的需要,管理人员都能使用常用的360浏览器,或者百度浏览器,2345浏览器等大众浏览器都能登录系统,然后操作对应的功能。
3、有了这款信息管理类操作软件,所有需要进行处理的数据不用在纸质版本的文档上进行记载,而是基于电脑进行信息录入。
4、小学生课外知识学习网站信息都是通过网站进行显示,其实质是这些信息都保存在网站对应的数据库里面。只要操作员不去恶意删除信息,那么这些信息将会永久保存。
编写小学生课外知识学习网站相对应的论文,其实就是对开发完成的程序进行再次解读的过程。本论文从七个方面的内容讲解了开发的程序,具体内容如下:
第一个部分:就是论文的绪论,这个部分就是介绍在什么样的背景下开发的程序,以及这个程序开发出来具有什么意义等内容。
第二个部分:就是介绍开发这个程序使用了什么技术,使用什么数据库保存程序的数据信息,程序开发的语言是使用的什么语言等内容。
第三个部分:就是介绍这个程序开发在现实生活的可行性问题,也讲述了程序开发需要设置什么功能等内容。
第四个部分:就是已经知晓程序的大致功能,需要对程序的功能进行更为严格的细分,也需要出具相应的功能结构图,同时,也要设计程序对应的数据库,包括数据库里面的数据表的设计等内容。
第五个部分:就是在系统的编码阶段,需要使用编程语言完成程序的功能,完成程序的界面设计,最终以界面实现的效果图展示设计成果等内容。
第六个部分:就是程序已经完成了开发的前提之下,需要检测程序的各个模块是否衔接正常,程序各个功能能否在网络等一切外部条件正常的情况下运行,这期间要是出现任何错误都需要及时记录并在后期进行修补完善。
第七个部分:就是论文最后的总结部分,描述遇到的问题,采用的解决思路等内容。
SSM框架是有Spring+SpringMVC+MyBatis组成。
Spring
Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
MyBatis
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
在早期的程序开发中,使用得最多的莫过于C/S架构了,现在的生活中软件在生活的各个方面落地,使用了C/S架构开发出来的软件也是不在少数的,比如企业日常办公使用到的微软的OFFICE软件,我国自己研发的文档处理软件WPS,还有娱乐软件腾讯的QQ,腾讯的微信,以及电脑上安装的杀毒软件金山杀毒软件,瑞金杀毒软件等都是C/S架构。但是在Internet网络盛行之后,鉴于大家对数据信息共享的需求,在原来的C/S架构上进行了升级改进之后,有了现在的主流架构B/S架构,B/S架构就是在C/S架构上多了一个浏览器,让原来的直接访问服务器的方式,变成了通过浏览器去访问服务器。充分运用到了当下不断成熟的浏览器技术。也让软件的开发成本以及维护成本降低了。可以说B/S这种新型的架构模式让软件的开发变得便利化。
有了程序功能的操作,也需要对程序操作的各个功能所产生的数据信息存放在一个固定的仓库里面,这个所谓的仓库就是大家最熟悉的程序开发需要使用的数据库了,数据库能够发展到至今的模样,其实也是经历了很多的变化历程的,在最开始由于数据信息处理的需要开始推出最低级的数据管理,这个阶段也是数据库早期的人工管理的阶段,后来也经历了文件管理的阶段,这个阶段的数据管理因为信息不能够进行共享,加上管理的数据对配套的程序产生了较强的依赖性,在数据信息管理上也存在很多数据的重复记载造成数据冗余等问题。所以为了解决上述一系列文件管理阶段所产生的数据管理的问题,对数据管理方式进行了全方位的升级改造,也就让数据管理进入了一个全新的阶段——数据库系统的阶段。这个阶段也是数据库管理数据的一个全新的相当高级的阶段。
说到数据库,也不得不说数据库的模型,数据库拥有的数据模型有网状,还有层次,以及关系型这三样数据库模型。网状的结构就是把记录的每条信息都比喻成一个点,点跟点之间也有联系,最终就形成了一个像网一样的结构,就是所谓的网状数据模型。也有对数据记录使用树状结构的方式进行数据保存,这个就是层次数据模型,关系数据库模型运用在现在市面上常见的数据库当中了,像本系统开发使用的MySQL数据库,还有安装过程比较复杂的Sqlserver数据库,也有一些比较小巧的关系型数据库,像Access数据库,FoxPro数据库等数据库。这样的关系型数据库将数据表里面的行还有列进行相互关联形成一个二维矩阵的方式来保存程序所产生的数据信息。
本次之所以选择MySQL数据库来当程序数据存放的仓库,则是因为此数据库安装不用费时,也不需要各种百度信息去解决安装过程中出现的任何问题,而且由于自己的电脑内存比较小,才4个G,为了更好的开发项目程序,针对低配置的电脑选择MySQL数据库也是情理之中。
在1995年这一年的5月份,著名的Sun Microsystems公司在程序开发设计上面郑重推出一种面向对象开发的程序设计语言——Java,最开始的时候Java是由詹姆斯.高斯林这位伟大的JAVA之父来进行主导,但是在后来由于各种原因,让甲骨文公司这个针对商业程序创建了oracle大型数据库的公司收购了Java。Java的平台总共算下来有3个,分别为javaME和javaSE以及javaEE这3个java平台。下面将对其进行分别介绍。
1.在电脑桌面程序的开发上面需要选择JavaME,这个用得也比较多。
2.企业也会根据工作以及业务需要开发各种软件,那么就会选用JavcEE这个支持企业版软件的开发的Java平台,JavcEE主攻运用在企业领域上面的web应用,JavcEE也在javaSE的基础上获得了比如jsp技术 ,Servlet技术等程序开发技术的支持。
3.现在生活中手机的普及化,也使得手机端这样的移动设备的软件的兴起,JavaME这个迷你版java平台就能运用于移动端的软件开发操作。
Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。
Vue 只关注视图层, 采用自底向上增量开发的设计。
Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
需要使用大部分精力开发的小学生课外知识学习网站为了充分降低开发风险,特意在开发之前进行可行性分析这个验证系统开发是否可行的步骤。本文就会从技术角度,经济角度,还有用户使用的程序的运行角度进行综合阐述。
开发程序选择的是面向对象的,功能强大的,简单易用的Java程序设计语言,数据库的开发工具使用到了MySQL数据库,由于自己之前接触过一些简单的程序开发方面的设计作品,所以对Eclipse工具的使用比较熟练,对于数据库的操作技巧也有一定的积累。另外,程序开发需要在自己电脑上安装的软件并不多,在win7操作系统的大环境下,能够完全搭建好程序开发的操作环境,比如Eclipse工具,MySQL数据库工具,以及处理程序图片的Photoshop工具等都能安装在自己的电脑上。总的说来,开发这个程序在技术上是可以实现的。
开发出来的程序并不是朝着商业程序的方向进行设计开发的,它只是作为一个毕业设计项目进行开发,主要用于检验学生在学校所学知识的一个检验,也锻炼学生运用网络,图书等工具进行自学的能力。所以开发这个程序软件并不会涉及到经济上面的开销,在开发软件的选择上也不会额外付费安装软件,在开发软件的官网上面就可以下载需要的软件,并根据提示的安装步骤安装软件到自己的电脑上面。总的说来,开发这个程序在经济上也不存在经费支出。
因为这个程序软件从开始开发到开发截止都是根据用户的需求进行定制,考虑到此程序软件是面向广大普通操作用户,鉴于他们的知识文化水平,特意开发出一个可操作性强的,能够很容易让使用用户上手的,具有可视化操作界面的一个程序软件。总的说来,这个程序站在用户运行程序的角度上分析,是不存在操作难的问题的。用户只要打开程序就可以免去专人培训进行程序功能操作。
经过上面从技术的角度,从经济的角度,从程序运行的角度这三个角度分析现打算开发的程序,可以得出该程序软件是可以进行开发操作的。
程序在使用中是不允许其他访问者随意窃取程序里面的隐秘信息,也不允许其他操作者越权操作其他管理用户操作的功能,要真正杜绝这些现象就必须在程序开发之前把程序的安全性给考虑进去。
比如现在很多程序都会把用户注册的功能给考虑进去,让用户在注册页面功能区填写自己的个人信息,这些数据信息涵盖了用户本人的姓名,用户对程序登录设置的密码,用户经常使用的邮箱,用户的常用联系方式还有用户的所住地址等信息,这些信息都是设计到用户本人的隐私,那么这些信息在传输给程序后台时,是需要进行管理并保存至对应的数据库文件里面。要是有人恶意窃取程序的数据信息,也就会让那些注册了此程序软件的用户的个人隐秘信息都会遭到泄露。这些信息落入其他不法分子手里,他们极有可能根据用户的隐私信息去骚扰用户,并把这些信息用于各种商业用途谋取其他非法的利益。所以数据安全性是一个系统能不能使用的首要标准。
数据完整性是确保数据信息是否具有可靠性,是否具有参考价值的一个重要因素,数据信息只描述一部分,或者必有的数据信息反而为空等现象都是代表着这个数据信息不完整,有数据缺陷,这是个很严肃的问题,因为这样的数据信息跟垃圾信息没什么两样。
说到数据完整性,不得不提最常用的程序表单功能。这些表单主要就是提取广大用户的数据信息的,需要广大用户根据表单上的要求,填写自己的姓名信息,以及自己的联系方式信息,有些也会有额外的信息填写要求,有必须要填的选项,也有不需要必填的选项。假如广大用户为了保护自己的隐私,或者不想受到其他人的骚扰,不填写必填项等信息,广大用户在最后提交此表单的时候,往往都是提交不了的。
数据完整性不仅仅限于登记的数据要完整,它也需要程序里面的所有数据信息之间存在关联,而且这种联系也是要求不能出差错的。
由于数据表之间也会存在一定的联系,所以同一个数据也会出现在另一个表格里面,那么这两个表格记录的同一个数据应该是一样的。不能够是同样的数据信息在不同表中不一样。
一切事物都是一直在发展,程序员开发软件也需要带着发展的思维去进行软件开发操作,这样的话,开发出来的程序在应对管理所需时,也会相对应的进行程序升级与更新。不论是功能完善还是数据库升级都能在原来的基础上对原有程序进行迭代升级。让开发出来的程序能够走得越来越远。这也是广大用户对程序软件的使用要求。
管理员假如要操作系统提供的功能,那么管理员就要在系统的登录界面,填写管理员登录的账号信息,填写相应的密码信息,管理员需要保证这两者能够验证身份的账号以及密码信息的正确性,这样管理员就可以通过登录界面进入系统后台操作界面。图3.1就是开发的程序软件小学生课外知识学习网站它的操作流程图。
图3.1 系统操作流程图
小学生课外知识学习网站的登录流程,针对的角色就是操作员的操作角色。在登录界面需要的必填信息就是账号信息,配上登录的密码信息就能登录小学生课外知识学习网站,需要注意的就是必填的账号信息和登录密码信息,都需要进行验证,系统会判断账号还有填写的密码信息的正确性,只有这两者信息都正确了,就能成功登录小学生课外知识学习网站了。系统登录流程图如下图。
图3.2 系统登录流程图
用户在添加信息的界面填写的任何数据信息也是需要验证的,系统会判断用户填写信息的格式还有数据信息是不是合法信息,如果用户填写的信息是合法内容,系统就会在数据库对应的数据表里面添加信息。添加信息流程如下图。
图3.3 添加信息流程图
对于那些已经失效的信息,需要用户及时进行删除,这样有利于腾出空间存放其他信息。删除信息也是先从数据库对应数据表里面删除数据,接着就是更新数据表的信息。这样删除的数据,在用户操作界面就查看不到了。信息删除流程如下图所示。
图3.4 信息删除流程图
小学生课外知识学习网站并没有使用C/S结构,而是基于网络浏览器的方式去访问服务器,进而获取需要的数据信息,这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构,图4.1就是开发出来的程序工作原理图。
图4.1 程序工作的原理图
下图就是系统功能结构图。
图4.1 系统功能结构图
程序设计是离不开对应数据库的设计操作的,这样的做法就是减少数据对程序的依赖性,所以数据库的设计也是需要花费大量的日常时间来进行设计的,在设计中对程序开发需要存储的数据信息进行实体划分,先确认实体,然后设计实体的属性等操作,这种设计就是数据库设计里面不能少的必须有的E-R模型设计。为了降低程序设计的对应的数据库设计难度,开发人员也可以使用相应的工具来进行E-R模型设计,现在市面上设计E-R模型的工具有PowerDesigner建模工具,Navicat制作工具,还有微软的Visio绘图工具。为了简便起见,本程序在设计E-R模型的时候,就选用了微软的Visio这款功能强大,操作便利的绘图工具。
下面就展示小学生课外知识学习网站的实体E-R图。
本次程序开发选用的数据库管理工具是MySQL数据管理工具,使用它存放数据也需要创建程序对应的数据库文件,并命名刚创建的数据库文件,有了数据库也需要创建各种数据表来充实数据库,在数据表的创建中,不仅需要对数据表命名,也需要对数据表的字段进行设计,包括每个数据表里面需要设置的字段名称,字段对应的数据类型信息,字段的主键设置这个也是不可缺少的,因为每个数据表里面的主键就是标记着这个数据表跟其他数据表相区分的唯一标志。就相当于生活中的每个人都有姓名,但是上网搜索自己的名字,会发现全国上下有很多人的名字跟自己的名字一模一样,包括姓氏以及名字,区分每个人的唯一信息就是每个人的身份证号信息,主键在数据表里面也是起着这样的重要作用。下面就介绍本次开发的程序小学生课外知识学习网站的数据表结构信息。
表4.1 课外知识评论信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
refid |
bigint(20) |
否 |
关联表id |
|
userid |
bigint(20) |
否 |
用户id |
|
content |
longtext |
否 |
评论内容 |
|
reply |
longtext |
是 |
NULL |
回复内容 |
表4.2 试卷信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
name |
varchar(200) |
否 |
试卷名称 |
|
time |
int(11) |
否 |
考试时长(分钟) |
|
status |
int(11) |
否 |
0 |
试卷状态 |
表4.3 试题信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
paperid |
bigint(20) |
否 |
所属试卷id(外键) |
|
papername |
varchar(200) |
否 |
试卷名称 |
|
questionname |
varchar(200) |
否 |
试题名称 |
|
options |
longtext |
是 |
NULL |
选项,json字符串 |
score |
bigint(20) |
是 |
0 |
分值 |
answer |
varchar(200) |
是 |
NULL |
正确答案 |
analysis |
longtext |
是 |
NULL |
答案解析 |
type |
bigint(20) |
是 |
0 |
试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空) |
sequence |
bigint(20) |
是 |
100 |
试题排序,值越大排越前面 |
表4.4 考试记录表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
userid |
bigint(20) |
否 |
用户id |
|
username |
varchar(200) |
是 |
NULL |
用户名 |
paperid |
bigint(20) |
否 |
试卷id(外键) |
|
papername |
varchar(200) |
否 |
试卷名称 |
|
questionid |
bigint(20) |
否 |
试题id(外键) |
|
questionname |
varchar(200) |
否 |
试题名称 |
|
options |
longtext |
是 |
NULL |
选项,json字符串 |
score |
bigint(20) |
是 |
0 |
分值 |
answer |
varchar(200) |
是 |
NULL |
正确答案 |
analysis |
longtext |
是 |
NULL |
答案解析 |
myscore |
bigint(20) |
否 |
0 |
试题得分 |
myanswer |
varchar(200) |
是 |
NULL |
考生答案 |
表4.5 课外知识信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
biaoti |
varchar(200) |
是 |
NULL |
标题 |
leibie |
varchar(200) |
是 |
NULL |
类别 |
fenlei |
varchar(200) |
是 |
NULL |
分类 |
fengmian |
varchar(200) |
是 |
NULL |
封面 |
shipin |
varchar(200) |
是 |
NULL |
视频 |
wenjian |
varchar(200) |
是 |
NULL |
文件 |
riqi |
date |
是 |
NULL |
日期 |
jianjie |
longtext |
是 |
NULL |
简介 |
xiangqing |
longtext |
是 |
NULL |
详情 |
thumbsupnum |
int(11) |
是 |
0 |
赞 |
crazilynum |
int(11) |
是 |
0 |
踩 |
clicktime |
datetime |
是 |
NULL |
最近点击时间 |
clicknum |
int(11) |
是 |
0 |
点击次数 |
表4.6 学习资讯信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
title |
varchar(200) |
否 |
标题 |
|
introduction |
longtext |
是 |
NULL |
简介 |
picture |
varchar(200) |
否 |
图片 |
|
content |
longtext |
否 |
内容 |
表4.7 收藏信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
userid |
bigint(20) |
否 |
用户id |
|
refid |
bigint(20) |
是 |
NULL |
收藏id |
tablename |
varchar(200) |
是 |
NULL |
表名 |
name |
varchar(200) |
否 |
收藏名称 |
|
picture |
varchar(200) |
否 |
收藏图片 |
表4.8 管理员信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
username |
varchar(100) |
否 |
用户名 |
|
password |
varchar(100) |
否 |
密码 |
|
role |
varchar(100) |
是 |
管理员 |
角色 |
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
新增时间 |
表4.9 用户信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
yonghuming |
varchar(200) |
否 |
用户名 |
|
mima |
varchar(200) |
否 |
密码 |
|
xingming |
varchar(200) |
否 |
姓名 |
|
xingbie |
varchar(200) |
是 |
NULL |
性别 |
nianling |
int(11) |
是 |
NULL |
年龄 |
shouji |
varchar(200) |
是 |
NULL |
手机 |
youxiang |
varchar(200) |
是 |
NULL |
邮箱 |
zhaopian |
varchar(200) |
是 |
NULL |
照片 |
表4.10 知识分类信息表
字段 |
类型 |
空 |
默认 |
注释 |
id (主键) |
bigint(20) |
否 |
主键 |
|
addtime |
timestamp |
否 |
CURRENT_TIMESTAMP |
创建时间 |
leibie |
varchar(200) |
是 |
NULL |
类别 |
fenlei |
varchar(200) |
是 |
NULL |
分类 |
5 系统实现
管理员可以查询,修改,删除用户信息。下图就是用户信息管理页面。
图5.1 用户信息管理页面
管理员可以对知识分类信息进行删除,查询和修改操作。下图就是知识分类管理页面。
图5.2知识分类信息管理页面
管理员可以对课外知识进行添加,查询,修改,删除操作。下图就是课外知识管理页面。
图5.3 课外知识管理页面
用户可以在首页访问小学生课外知识学习网站方面信息,首页上面有导航栏,导航栏上面有课外知识,试卷列表,学习资讯,个人中心,后台管理等,点击导航栏课外知识可以看到很多信息,点击某个信息可以查看对应详情信息,用户登录后可以对小学生课外知识学习网站文章信息进行评论操作。下图就是首页信息页面。
图5.4 首页信息页面
为了保证所开发出来的系统质量过关,让所开发出来的系统具备可靠性并能够投入运行使用,这就需要进行系统开发的最后一个关键步骤,那就是系统测试。可以说系统测试就是对系统开发前面的步骤,比如系统分析与设计等进行复查。尽管在程序开发期间,人们一直很注意避免系统出错,但这样还是会让很多的潜在的系统缺陷不容易被人们肉眼察觉,只有经过反复不断地测试才能及时暴露系统的运行问题,这个时候进行系统问题的纠正就能真正避免财产损失,截止到目前,市面上还没有从根本上解决开发出的程序的正确性证明。所以发现系统的错误以及缺陷的重要手段还是要依赖于系统测试。
本系统的测试结合了计算机的软件以及硬件系统,对程序的全部功能,还有程序的运行稳定性等性能上进行了测试,测试过程中也再次对程序配套数据库的连接问题进行了系统化地测试操作。接下来就选取系统的一些功能进行测试演示。
程序的登录界面实际上就是为了系统的安全,需要验证用户的身份信息而进行设置的,用户的身份信息就是依靠自己的账号,还有登录密码信息进行验证。用户的登录信息有一个存在问题,系统就会一直停在登录界面,并给出错误原因的提示。表6.1 就是登录功能测试的数据。
表6.1 登录功能测试的数据
用户名 |
密码 |
角色 |
结果 |
aaa |
bbb |
管理员角色 |
失败登录 |
bbb |
aaa |
管理员角色 |
失败登录 |
aaa |
aaa |
管理员角色 |
成功登录 |
修改密码其实就是害怕用户的密码信息遭到泄露,导致系统的安全系数下降,因此,就要要求用户每个月修改一次密码。表6.2就是修改密码功能测试数据。
表6.2 修改密码功能测试数据
旧密码 |
新密码 |
结果 |
aaa |
修改失败 |
|
bbb |
ccc |
修改失败 |
aaa |
ccc |
修改成功 |
经过了程序开发的最后一个测试环节,对开发的程序软件小学生课外知识学习网站也下了定论,在测试期间程序的功能能够跟最开始的用户需求文档保持一致性,程序的界面设计以及数据库设计也都是参照用户的需求完成设计的。另外,程序开发也充分解决了系统的升级以及长时间保持稳定运行的问题,说明该程序软件还是挺可靠的,进行验收上交也是达标的。总的说来,截止到目前,该小学生课外知识学习网站功能可靠,有着简单的操作流程,能够从一定程度上解决数据信息操作方面出现的各种问题。
开发小学生课外知识学习网站是作为毕设作品进行设计的,这个毕设作品是我在校进行知识学习的一个毕业考核项目,也是检验我通过网络工具,图书工具等学习工具进行自学的能力水平,让我在根据程序开发的需求分析初步完成程序功能之外,还接触了程序的测试过程,了解程序测试的具体的过程,以及遇到问题怎么去寻找相应的解决办法等等,毕业作品的制作以及设计才是学校对我真正的考验。
在程序软件没能进行开发之前,我去了学校的图书馆借了有关数据库操作的书籍,在查看了sqlserver和MySQL两种数据库的相关知识之后,我最后选择了我比较熟悉的MySQL数据库。在编程语言的抉择上,由于自己之前接触过Java程序的开发,所以为了让我尽快在短时间内完成程序制作,我确定用Java编程语言进行程序编程。另外我从百度上下载了很多的有关信息增加,信息删除等操作的源代码,并通过不断调试以及完成配套的数据库的设计,开始完成程序的各个部分的功能。每当我粗心大意,致使我深陷程序开发困扰不能自拔之时,值得庆幸的是,我就会得到老师,还有我的寝室同学的耐心指导。
历经长达几个月的毕业作品制作,我凭借自己的知识技能,还有大家的指导帮助,能够在学校规定的时间段之内提交毕业作品。虽然已经算是完成了毕业作品,但是付出了这么多心血,还是想把这个作品做得更加完美一点。针对我的毕业作品小学生课外知识学习网站,我觉得还有很多方面需要完善,第一就是界面上需要细微调整,比如色彩搭配有点违背广众的审美,需要细微调整,还有系统里面的字体大小也需要调大一点,太小的字体看起来有些费眼。然后在程序的功能上因为自己的入门开发水平的影响,所以目前只能做到这个境界,这个系统相比其他类似系统来说功能很简单,逻辑结构设计得也比较合理。
自己一个人完成程序的开发,我不仅亲自体验了程序的开发流程,体验到了程序开发的各种不易。这种体验也还加深了我对知识的尊重。学海无涯,知识不是大学短短四年就能学完的,在大学学到的知识在最终经历检验时,才会深深地明白自己的知识积累原来还很浅薄。所以今后不管身在何处,自己的学习心态一定要时刻体现出来,要深刻明白知识学到手里就是自己的。同时,自己也不必过多抱怨学到的知识没有用处,相信学到的知识总会有派上用处的那天。不要等到需要用时再去学习知识,那样就会导致自己错失很多本该属于自己的机遇。
[1]邱丹萍.Web开发中SSM框架的分析[J].电脑知识与技术,2020,16(17):81-82.
[2]薛茹.基于SSM框架的Web系统研究与应用[J].计算机产品与流通,2018(07):30.
[3]刘亚宾.精通Eclipse--JAVA技术大系[M].电子工业出版社,2015.
[4]张知青.基于关系数据库的查询方法及优化技术分析[J].煤炭技术,2015,31(05):218-220.
[5]赵钢.JSP Servlet+EJB的Web模式应用研究[J].电子设计工程,2016,21(13):47-49.
[6]肖英.解决JSP/Servlet开发中的中文乱码问题[J].科技传播,2015,(1)11-25.
[7]卫红春.信息系统分析与设计[M].北京:清华大学出版社,2014.
[8]于万波.网站开发与应用案例教程[M].清华大学出版社,2015.
[9]黎连业,王华,李淑春.软件测试与测试技术[M].清华大学出版社,2015.
[10]宋丽娜.基于JSP的Web开发中文乱码问题的研究与解决[J].电子技术,2018,42(11):5-7.
[11]汪君宇.基于JSP的Web应用软件开发技术分析[J].科技创新与应用,2018(16):158-160.
[12]王建国.数据库设计在网站开发中的应用[J].山东农业工程学院学报,2017,34(04):158-159+164.
[13]曾志明.网站开发技术的比较研究[J].电脑知识与技术,2017,6(05):1075-1078.
[14]朱钧.基于角色的jsp通用权限系统设计与实现[D].山东大学,2014.
[15]陈志誉. Java工具及其调度方法研究[D].华南理工大学,2018.
[16]马文静.明日小学生课外知识学习网站的设计与实现[J].科技创新导报,2017,13(21):82-83+85.
[17]刘庆芳,刘桂贤.基于ASP.NET的个人小学生课外知识学习网站网站的实现[J].无线互联科技,2017(02):37-38+47.
在这个毕业设计即将完成的最后的时刻,我很想对我的老师,还有我周边的朋友以及我的同班同学们表示我的谢意,谢谢你们在毕业设计的制作阶段对我提供的各种帮助,我的指导老师给我的毕业设计提供了许多种指导方案,包括论文大纲的安排,程序功能结构的设计,以及程序的亮点等部分都很有耐心的进行了及时地指导,让我的毕业设计能够达到学院验收的水平。另外还有陪伴我的同学们以及朋友们,我们在这几个月一起泡图书馆,一起讨论以及制作毕业设计,让我在进行毕设作品创作中一直很有动力。特别是在我进行程序文档的编写过程中的时候,有很多格式问题还有文档内容的问题,都是你们一一指出并纠正,让我少走了很多弯路。
最后的时刻,我要感谢我的大学,感谢所有学校的领导还有老师们,正因为有你们,我才能够在大学这几年学到很多有用的知识,才能更好地成长起来!相信我在毕业之后步入社会,我也能把学校所学到的知识进行灵活运用,我也会注重在社会上进行学习!让自己步入一个更高的台阶!遇到更好的自己!
/**
* 公告通知
* 后端接口
* @author
* @email
* @date 2021-03-09 11:33:59
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map params,NewsEntity news, HttpServletRequest request){
EntityWrapper ew = new EntityWrapper();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map params,NewsEntity news, HttpServletRequest request){
EntityWrapper ew = new EntityWrapper();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper ew = new EntityWrapper();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询公告通知成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper wrapper = new EntityWrapper();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}