🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。
作者完整代码目录供你选择:
⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目展示
摘 要
随着科技和网络的进步,计算机技术与网络、生活贴和的更加紧密。需要依靠客户端的单机系统逐渐被淘汰,利用互联网可以处理大量数据的新型系统如雨后春笋般迅速发展起来。这类系统和信息化时代的同步发展对传统的办公管理方式造成了很大的压力。当今时代,信息数据是一切的根本,是基础,想要做出决策都需要充分考虑数据,可见信息的重要性。然而传统的办公管理方式对于信息的操控越来越艰难。如何才可以改变局面,使信息数据重新为用户服务,体现价值是现在所有行业所面临的重要问题。
本基于协同过滤的习题推荐系统正是采用协同过滤和网络设计的新型系统,可以有效的把试题信息与网络相结合,为用户提供学习帮助和管理需求。本系统采用mysql数据库存储数据,兼容性更强,可跨越多种平台。本系统是社会发展的必然产物,可以为用户提供更为高效的管理以及辅助,同时也可以改变习题推荐的方式,达到提高成绩的目的。
关键词:习题信息;用户信息;java语言
第一章 绪论
1.1 课题开发背景
网络和科技的进步以及人们生活条件的提高都让网络技术越来越平民化,深入日常生活中。网络更是成为生活的必备条件,大到国家单位、科研项目,小到大街小巷都充斥着网络的身影。在日常办公中,计算机起到了文字编辑、打印、信息检索、统计等的作用。使用计算机可以使日常繁杂的信息进行科学的加工,使信息变得更加的有序、可利用。计算机技术已成为热门。
正是因为网络、科技、计算机技术使现代人的生活和工作变得便利、轻松,给实体行业带来了巨大的冲击。学习也遇到了前所未有的挑战。现如今,对于试题信息的管理有很多的局限性,究其原因是因为习题推荐的根本是信息的运动。在新时代的环境下,传统的管理方式不再满足用户的需求,难以管理现代的工作。传统的管理方式不仅跟不上时代的发展,还不能实现最基本的工作要求,例如对于试卷的传递还停留在打印大量的纸质文件,发到学生手里进行填写,这种方式对于结果统计非常不便,效果也非常不好。对于基本工作信息的管理也还是采用人工管理,人工管理出错率大,效率低。对于信息的传递都需要经过多人审核才可以完成,想要定期进行分析和总结更是难上加难。因为每种信息之间的关系错综复杂,在定期的统计和查询中就会出现重复出现的问题,对工作人员来说工作压力非常大。
1.1.3 协同过滤
从用户的角度来看,协同过滤的任务简而言之就是要解决两个问题:应该关注哪些项?喜爱这些项的程度会有多大?协同过滤系统建立了一个数据库,记录了用户对项的评价。系统在这个数据库中找到那些与活动用户观点相似的用户,并综合这些用户的观点为活动用户做出预测。协同过滤做出推荐的出发点是其他用户对于项的评价,与项的本身内容无关。这与信息过滤等建立在项内容基础上的推荐方法恰恰相反。我们不仅可以单采用协同过滤算法来建立推荐系统,也可以将协同过滤与信息过滤结合起来,以达到更好的推荐效果。协同过滤在推荐系统中承担着重要的角色。
1.1.4 协同过滤和信息过滤的本质
不论是信息过滤还是协同过滤,它们都模仿了我们的日常行为。在日常生活中,我们是否选择某个商品往往依照两方面的因素。一方面是我们所掌握的关于这个商品的知识,另一方面是朋友或广告商的推荐。例如考虑是否购买一张唱片我们可能会根据自己喜爱的音乐风格或是演唱歌手做出决定,也可能根据朋友的推荐或者唱片公司的宣传做出决定。很多时候,我们也会把两方面的因素结合起来考虑。
信息过滤对应的正是上述第一种判断的形式,而协同过滤对应的则是后者。我们在日常生活中思考判断方法的灵活性正说明了我们可以充分考虑各类推荐方法的特点,并灵活加以使用。
1.2 课题研究现状
现在习题推荐已有一些学校使用了基本的管理软件,这些软件都是依靠客户端,只可以特定人员使用,不能实现信息的共享。虽然可以帮助工作人员减少工作量,但从根本上还是无法满足用户的需求。这些软件都还是基于网络发展之初的要求,没有利用现代网络的技术,体现不了更为实用的功能。依靠客户端的系统开发时没有考虑园际化的问题,所以也满足不了国际化的要求。最近几年来,我国网络快速发展,传统的管理方式也越来越适应不了新时代的要求,在处理大量信息时表现不足,开发一个依托现代技术、网络技术的基于协同过滤的习题推荐系统迫在眉捷。这类系统将会改变习题推荐的现状。
1.3 课题开发目的与意义
想要改变传统习题推荐的现状,就需要采用更为先进的管理方式。本基于协同过滤的习题推荐系统就是在新时代发展下开发的。本系统的开发非常有意义,体现了行业的创新。本系统是以信息管理为主导,而信息管理就是行业最大的问题,可以极大的提高工作效率。试题信息的信息化管理是目前习题推荐管理的核心,解决了信息化的问题就可以使习题推荐管理工作更进一步。开发本系统可以使试题信息更加的清晰、透明,便于管理人员操作。使用本系统可以使管理工作实现部分自动化,减少人工,提高正确率。
本系统是将网络技术和现代的管理理念相结合,根据试题信息的特点进行重新分配、整合形成动态的、分类明确的信息资源,实现了习题推荐的自动化,减少人工管理过程,为管理人员的决策提供帮助。使用新型的管理系统已成为时代的标志,本系统可以提高学习的竞争力,提高考试质量,使工作人员的管理工作更加轻松。
1.4 课题开发主要内容
本课题的主要内容包括管理员和用户两个部分,管理员负责考试相关信息的管理,包括试卷信息、试题信息的管理,还可以管理用户信息、知识点信息和科目类型信息、考试信息。用户可以在线学习知识点和收藏知识点、管理错题本、在线考试和习题推荐。本基于协同过滤的习题推荐系统满足了用户和管理人员两方的要求,符合了信息化现代的要求。
1.5 论文结构安排
本论文分为四个部分,摘要、外文翻译部分,目录部分,正文部分和致谢、参考文献部分。其中正文部分包括:
(1) 绪论,从课题开发的背景、现状等进行阐述证明课题开发的意义和目的;
(2) 系统分析,从系统开发可能遇到的所有问题进行提前分析,确定系统设计时可以进行解决;
(3) 系统设计,进行系统功能的设计和数据库的设计;
(4) 系统实现,进行系统界面和功能的详情实现阐述;
(5) 系统测试,测试部分为正文的最后一部分,此部分是保证系统准确性、稳定性的重要方法。
第二章 系统分析
2.1 系统使用相关技术分析介绍
本基于协同过滤的习题推荐系统采用服务端的方式。在服务端采用myeclipse软件进行调试运行,在代码编写中采用java语言,数据库采用mysql软件。加入了springboot框架。
2.1.1 Myeclipse环境介绍
Myeclipse是一个非常实用的一个javaee开发平台,兼容性非常的强,可以支持各种框架和数据库,比如servlet,struts,sql,mysql等。目前用于开发javaee的平台主要分为eclipse ,myeclipse和idea三种,而每个都有自己的优缺点,首先是eclipse,属于一个开源软件,开源免费使用,而且对硬件要求不高,占用内存很小,但是最大的缺点就是自带的插件很少,如果需要开发项目,需要自己单独安装和配置所需要的插件,对于新手来说,是一个非常大的挑战,所以目前使用eclipse进行开发的技术人员越来越少。而myeclipse软件最大的不同就是集成了开发javaEE所需要的所有插件,比如jdk,tomcat,可以直接使用,不需要单独进行配置,对于新手来说非常的友好,而且还可以直接进行编码,测试,然后发布。而idea跟myeclipse功能差不多,最大的特点是增加了智能助手,开发过程中可以进行代码提示,自动检查,更加的智能化,但是最大的缺点就是对硬件方面要求比较高,而且比较占用内存。所以综合考虑,还是使用myeclipse进行软件开发是比较适合的。
2.1.2 Java语言介绍
Java语言跟c++语言非常的相似,可以说是从c++上进行衍生出来的一个新型开发语言,他充分吸收了其他语言的优点,而避开了它们的缺点,使编程语言更加的简单,而且java系统非常的小,摒弃掉了之前的运算符重载,然后造成的卡顿现象,然后添加了垃圾自动清理,增加了开发的简单和可靠性。当然了java最大的特点是平台独立性,只要可以支持java虚拟机环境,就可以直接运行所有程序,而且还是面向对象开发的技术,有很好的封装行,采用了动态编码技术,可以使程序更好的呈现。可以多线程进行运行,用户随时可以加入新的 实例然后不影响整体程序执行,使开发更有灵活性,因为java是在公共密钥技术上进行建立开发的,所以也有一定的安全保障,除此之外,还有一定的跨平台性,可扩展性等优点,可以和不同的操作环境进行互联共享,所以java语言是目前使用最广泛的一个语言开发技术。
2.1.3 Mysql数据库介绍
Mysql数据库最初是由瑞典MySQL AB公司进行开发出来的,后来被SUN公司进行了收购,然后进行了一系列的优化改进,最后被oracle公司收购。mysql数据库是一种关系型数据库,而且采用的是开发式结构,支持大多的平台,而且功能很多,性能很高。Mysql数据库最大的特性就是把自己所编译好的数据进行单独存放,而不是跟传统数据库一样,全部放到一起,这样的话就保证了数据的安全性和灵活性,大大的提供了数据的访问速度,当用户需要调取数据时候可以直接通过sql语句进行查询。Mysql的数据存储非常的稳定,而且是一个开源代码,使用成本非常的低,最大的特点就是安装包非常的小,对硬件没有特别要求,不会造成硬件卡顿,非常便于维护。Mysql还支持多种语言,比如php ,安卓等,都可以支持数据存储。
2.2 系统需求分析
在当今信息化社会发展的条件下人们越来越追求自动化,习题推荐做为提高学习成绩的主要方法越来越受欢迎。这种情况下就造成试题内容的多样化,如果还是采用传统的管理方式势必会造成信息统计的复杂,工作人员的烦躁,使学习的效果降低。
本基于协同过滤的习题推荐系统采用b/s框架进行设计,结合网络的技术,可以单独运行,不再需要固定的客户端。可以实现试题信息的快速管理,同时可以保证考试质量,提高信息统计的效率。
2.2.1系统性能要求分析
系统的性能要求包括服务器和客户机两部分,主要是对系统存储和后续存储的要求,还有对系统运行的速度和系统的安全性进行考虑。
对于系统的性能要求还需要操作的流畅性、理解性以及可靠、维护性。用户使用本系统时要求系统非常好理解,便于用户的操作。售后人员使用本系统时要求系统可读和便于测试。可靠性则指的是系统的准确和运行稳定,在尽可能的情况下利用所有的工具可以使上述要求得到最大的满足。
2.3 系统可行性分析
可行性分析主要是分析本系统是否有开发的必要性,是否存在开发难度,是否能实现一定的商业价值,所以主要是从技术可行性,经济可行性,法律可行性等方面进行研究分析。
2.3.1 技术可行性
开发本系统采用目前比较主流的java开发语言,具有很好的扩展性和平台兼容性,而且功能非常强大,易操作。页面技术采用jsp技术,jsp可以实现动态编码,通过html进行页面效果呈现,最大的特点就是本系统采用b/s框架进行开发,b/s可以不受本机系统的限制,可以把数据存放到服务器,用户可以直接通过浏览器进行系统访问,对于用户来说非常的简单省事。
2.3.2 法律可行性
本系统没有抄袭市面上的任何网站系统,不管是界面风格,还是后台代码,都是自己原创,所以不存在版权方面的纠纷,而且开发环境都是开源的,开源共享的,所以不管是硬件方面还是软件方面都不存在侵权行为,在法律上是完全可行的。
2.3.3 操作可行性
本系统采用的全是可视化操作界面,不管是对于系统的管理者还是用户者,都可以在没有任何编程背景的基础下进行系统操作,而且系统界面还存在各种功能提示,用户都可以简单操作,所以在操作可行性上是可行的。
2.4 系统流程分析
本系统的流程为先进行登录,登录选择不同的身份,选择管理员身份可以对试卷信息管理,可以审核试题信息,对学生信息、科目类型的信息进行管理等;选择学生身份可以在线进行考试以及学习知识点、管理错题本、收藏记录等。用户登录流程图如下图2.1所示:

图2.1用户登录流程图
2.5 系统用例分析
本系统的主要角色为管理员和用户,管理员的用例包括用户管理、习题信息管理、学习记录管理、习题类型管理用例图如下图2.4所示:

图2.4管理员用例图
用户的用例包括个人中心、学习论坛、公告通知等。用户用例图如下图2.5所示:

图2.5用户用例图
第三章 系统设计
3.1 系统总体结构设计
一个好的设计不止是功能完整,操作流畅,还要符合用户的审美和界面的友好。在进入正式系统实施前,不可缺少的步骤为系统的总体结构设计,本系统为实用性的系统,所以开发的功能都是针对试题信息相关的。本系统的结构可以分为管理员界面和用户操作界面。在管理员界面主要内容是试卷、试题、用户信息、科目类型、考试信息等,学生的主要功能是考试和习题推荐。本系统的总体结构图如下图3.1所示:

图3.1基于协同过滤的习题推荐系统的功能结构图
3.1.1 登录顺序图
用户在登录时,首先进入系统登录窗口,用户需要输入用户名和密码,点击登录按钮进行登录操作,系统会以用户名和密码为参数在数据库中进行登录信息的验证,验证成功则登录成功,进入对应用户主界面。登录模块顺序图如图3-2所示。

图3-2 登录顺序图
3.1.2 注册顺序图
未有账号的用户可进入注册界面进行注册操作,在注册界面输入注册信息,点击提交按钮,系统首先判断用户名是否存在,存在则提示重新输入,不存在则验证注册信息是否正确,正确则在数据库中添加注册数据,提示注册成功。用户注册模块顺序图如图3-3所示。

图3-3 注册顺序图
在修改密码时,需要输入原始密码和新密码,系统会在数据库中进行原密码的验证,原密码正确则在数据库中添加修改数据,修改成功。修改密码顺序图如图3-4所示。

图3-4 修改密码顺序图
3.2 系统开发步骤
系统的开发步骤可以分为系统开发、系统规划和系统实施。每一步都是在上上步的基础上进行的,不能跳级,在下一级进行时,不会对上一级的工作进行大的改变。所以就需要在每一级设计时充分保证正确才可以进行一下级的设计。这种开发步骤是最省时省力的方法,是经过国内外长久实践得出的最有效方法。
3.3 数据库设计
3.3.1 数据库概念结构设计
数据库的概念结构设计就是需要在系统分析的过程中分析开发本系统是要做什么,然后设计出大的框架,根据大的框架把系统进行转换成怎么做的物理模型。然后再进行设计。
在所有的系统设计中数据库的设计占有举足轻重的地位,选择合适的数据库软件进行设计非常重要。因为本系统的功能非常有针对性,没有进行扩展,所以本系统采用小型轻便的mysql软件进行设计。数据库的安全保障着系统里数据的安全,本系统的主要数据为试题信息、试卷信息以及用户信息、知识点信息。本系统的ER关系图如下图3-5所示:

图3-5实体关系ER图
(1) 管理员的属性包括编号、用户名和密码等,管理员的ER图如下图3-6所示:

图3-6管理员信息ER图
(2) 习题信息主要为管理员进行管理,学生进行浏览,习题信息的属性包括简介、视频等,详细的习题信息ER图如下图3-7所示:

图3-7习题信息ER图
(3) 学生用户信息属性包括账号、密码、姓名、性别等,用户信息ER图如下图3-8所示:

图3-8学生用户信息ER图
3.3.2 数据库逻辑结构设计
数据库的逻辑结构设计也可以称为数据库表的设计,一般情况下采用第三范式进行设计,因为数据库的概念结构可以单独使用,不特定于某个数据库所以就需要对数据库的概念结构进行转换,从上节的数据ER图转换出本系统的数据库表。
表3.1 examrecord
|
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
|
1 |
id |
bigint |
20 |
|
是 |
是 |
|
否 |
|
auto_increment |
|
2 |
addtime |
timestamp |
|
|
|
|
|
是 |
|
|
|
3 |
userid |
bigint |
20 |
|
|
|
|
否 |
|
|
|
4 |
username |
varchar |
200 |
|
|
|
|
是 |
|
|
|
5 |
paperid |
bigint |
20 |
|
|
|
|
否 |
|
|
|
6 |
papername |
varchar |
200 |
|
|
|
|
否 |
|
|
|
7 |
questionid |
bigint |
20 |
|
|
|
|
否 |
|
|
|
8 |
questionname |
varchar |
200 |
|
|
|
|
否 |
|
|
|
9 |
options |
longtext |
|
|
|
|
|
是 |
|
|
|
10 |
score |
bigint |
20 |
|
|
|
|
是 |
0 |
|
|
11 |
answer |
varchar |
200 |
|
|
|
|
是 |
|
|
|
12 |
analysis |
longtext |
|
|
|
|
|
是 |
|
|
|
13 |
myscore |
bigint |
20 |
|
|
|
|
否 |
0 |
|
|
14 |
myanswer |
varchar |
200 |
|
|
|
|
是 |
|
|
表3.2 kemuleixing
|
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
|
1 |
id |
bigint |
20 |
|
是 |
是 |
|
否 |
|
auto_increment |
|
2 |
addtime |
timestamp |
|
|
|
|
|
是 |
CURRENT_TIMESTAMP |
|
|
3 |
leixing |
varchar |
200 |
|
|
|
|
是 |
|
|
第四章 系统实现
4.1 登录功能模块的实现
登录功能包括用户登录和管理员登录,在登录界面设计中包括用户名和密码、身份的检验。用户名和密码、身份的检验过程由数据库自动完成,此过程需要1秒左右。首先由用户填写账号和密码,然后点击登录系统,数据库自行对用户名和密码进行对比,所填写数据正确方能进行登录,所填写数据错误则需要返回登录界面重新登录。用户登录界面的设计运行界面效果如下图4-1所示:

图4-1用户系统登录界面效果
4.2 管理员功能界面的实现
管理员功能界面如下图4-2所示:

图4-2管理员功能界面的运行效果
4.3 用户信息管理功能的实现
用户管理功能分为管理员管理用户信息和用户管理自己的信息两种,管理员可以看到用户的账号、真实姓名等信息,可以删除用户的账号信息。用户信息管理功能的界面实现效果如下图4-3所示:

图4-3用户信息管理功能界面实现效果
4.4 习题添加功能的实现
系统里展示的习题添加包括习题视频、习题简介,管理员可以修改习题信息,习题添加的界面实现效果如下图4-4所示:

图4-4习题添加功能的运行效果界面
4.5 学习记录管理功能的界面设计实现
学习记录功能为学生学习习题时间等管理。学习记录管理功能的界面实现效果如下图4-5所示:

图4-5学习记录管理功能的界面实现效果
4.6 用户首页功能的实现
本功能为用户的功能,可以在首页里看到通知公告、学习信息等。首页功能的实现界面如下图4-6所示:

图4-6首页功能实现界面
第五章 系统测试
5.1 系统测试的目的
对于一些错误不需要测试就可以自动提示进而修改,像在编码时的语法、公式等的错误myeclipse软件可以进行提示,但还有一部分的错误不容易被发现,必须进行测试才可以修改。这些错误一般都是由错误的操作或者输入不合法的数据才发生的,而且这些错误还具有有时出现,有时不出现的特点。对于此类的错误在发现非常困难。
系统测试是所有程序员都会面临的问题,是必不可少的步骤。一般对于系统的测试开始于系统设计完成后,这种测试可以针对简单不复杂的系统。但对于一些大的项目的系统在系统的编写中就要开始测试,每到一个阶段就开始测试,用这种方法来保证下一个阶段编写的正确性。这种测试可以保证每个部分都是正确的,可以方便在以后的测试中减少工作量,同时也方便错误的找出。对于系统在编码过程中,不管采用什么方法和步骤进行编写设计都会不可避免的产生错误,即使采用最先进的技术和语言、环境来进行设计,也只能进行简单错误的提醒。这时候就需要进行系统测试才可以把所有的错误找出来。
5.2 系统测试的困难
系统测试的困难性主要是因为测试人员的心态以及不正确的看法造成的,当然还是因为:
(1) 大部分的程序员不把测试当成主任务,认为系统测试并不会带来大的工作成就,并且测试过程是非常复杂,不好进行;
(2) 大部分人认为每次的测试都是对程序员的不信任,是否定了程序员的工作,系统测试的目标是发现问题;
(3) 系统测试的过程非常无聊,难以引起工作人员的兴趣;
(4) 系统测试的过程需要非常仔细和认真;
(5) 系统是自己开发的,如果在测试中发现问题,害怕别人怀疑自己的能力。
这些问题恰恰反应了系统测试的重要性,想要做好系统测试的工作就必须要改变思想,加以耐心才可以使系统的质量做到最好。
5.3 系统测试的方法
对于系统的测试一般采用黑盒测试和白盒测试,两种测试方法都是把系统看成一个盒子,不考虑外在因素而进行的测试。白盒测试一般用于大型的项目,在时间和人力要求上比较高,主要针对系统的外部接口、操作逻辑等问题进行的测试;黑盒测试主要是模仿用户操作,进行数据反应的测试,这类测试对人力和时间要求不高,非常适合毕业设计项目的测试工作。
5.4 具体测试
5.4.1 测试步骤
本系统在测试时采用以下步骤进行测试:
(1) 首先检测系统的代码,对于不同语法和代码的编写进行复查,确定代码无误;
(2) 根据单元测试、集成测试、系统测试、确认测试的步骤进行系统功能性的测试;
(3) 对系统的界面、控件等进行测试;
(4) 对系统的性能,同时能访问的人数,系统的稳定性、安全性进行测试。
5.4.2 测试用例
在本论文里简单阐述几个功能的测试用例。
(1) 对用户登录功能的测试过程为输入不同的账号和密码进行登录提交,查看结果提示是否可以符合要求,对用户登录功能的测试过程如下表5.1所示:
表5.1用户登录测试过程表

(2) 管理员可以发布信息,对发布信息功能的测试采用输入用例信息和不输入用例信息进行提交,看是否可以出来预期的结果,发布信息功能的测试过程如下表5.2所示:
表5.2信息发布功能的测试过程表

5.5 测试总结
根据测试发现本系统的优点表现在:
(1) 本系统的设计是针对习题推荐,非常有特色,本系统的实现可以为习题推荐带来前景;
(2) 本系统的兼容性很强,可以在多种环境中进行运行,只需要运行环境就可以进行运行,数据库采用的mysql也非常的简单,可以使数据快速的反应;
(3) 所有的数据在设置时采用了格式,对于特定的数据采用了选择框进行自动填写,减少了出错率,提高了文字输入的速度;
(4) 界面站在用户的角度设计,所以非常的操作方便,对于不懂编程的人员来说也非常的好学。
当然本系统也还存在很多的问题,需要进行不断的改善。本系统的不足主要表现在:
(1) 用户界面和首页界面都不够美观,因为素材和技术水平的有限使界面设计并不是太满意。所有的界面只是采用了简单的表格和文字、图片来进行美化,颜色也没有协调到最好,所以界面给人的感觉太过于简单;
(2) 系统中还有很多的废弃代码,数据字段也没有做到精短,这样使系统在运行中速度反应不好;
(3) 本系统所设计的功能都是最需要的功能,没有额外再进行扩展。
针对以上三个问题,本人想到了解决问题并加入改进,
(1) 对于界面美观问题,本人去资源库里下载了更多的图片材料,也去相关的商用网站里学习了各种配色,利用制图工作进行图片的加工,使图片更加的符合主题,针对不同的信息设置了不同的颜色使界面看起来更为丰富;
(2) 对于代码和数据的问题,本人进行再一次的减化,把废弃代码和数据找出来进行删除,提高系统的运行效率,对数据库的范式进行进一步的优化;
(3) 对于功能方面,本人参考其它系统尽自己能力进行扩展。 总 结
通过本次毕业设计,让我真正意识到了纸上谈兵的真正含义,看着平时老师上课教的内容都懂,都熟悉,可真正的让自己去实际独立完成一个项目时,才知道了原来理论和现实还是有很大的一定差距。首先开发系统的第一步给人的第一种感觉就是无从下手,根本不知道从哪里开始,然后可以干什么,完全一头雾水。然后在开发的过程中,更是面临各种各样的挑战,最大的难题就是没办法把自己所说知识融会贯通到一起,导致了漏洞百出。比如代码编好了,数据库表也建立好了,就是没办法链接成功,最后才发现原来是字符集选择不对,等等很多问题。通过本次设计让我充分认识到了自己的不足,只有通过更多的实践练习才能慢慢的熟悉,一步一步成长,所以学无止境,还要继续加油努力,不停的发现问题,解决问题。虽然本次系统最终还是在老师和同学的帮助下顺利完成了,但是还是有很大的不足需要改进,比如界面设计不够美观,代码处理不够精简等,我还是要继续努力,继续加油,通过不断的学习,更加的完善。
致 谢
转眼间我的大学生活就要结束了,在这几年的大学时光里我学会了很多,也成长了很多,得到了老师和同学的帮忙和关爱,马上就要各奔东西,想想心里就有很大的不舍,在此我要向所有帮助过我的人表示感谢。
首先要感谢我的指导老师,大学时光里给了我很多学习上和生活上的帮助,教我们知识的同时,还教了我们很多做人处事的道理,为我们以后步入社会提供了很大的帮助。老师严谨的教学作风和负责任的态度是值得我去学习的,所以要感谢我的老师。其次要感谢我的母校,为我们提供了这么好的生活和学习环境,祝愿母校越来越好,最好还要感谢我的家人对我的培养和包容,我以后一定会好好学习,努力上进,来回报我的父母,我的母校,再次感谢。
参考文献
[1] 王丽爱.《Java程序设计》课程网站的设计与实现[J].电脑知识与技术,2020,12(27):70-71+84.
[2] 于洪永.Java技术支持下精品课程网站设计与开发[J].数字技术与应用,2021(04):161.
[3] 李小武,周湘龙.基于Java EE的视频互动交友网站设计[J].山西电子技术,2021(04):52-54+58.
[4] 高云艳.基于Java EE的校园门户网站设计与实现[J].建材技术与应用,2022(05):46-48.
[5] 刘峻伯,王昊.基于Java EE网站内容管理系统的设计与实现[J].数字技术与应用,2020(02):173.
[6] 柳海燕.响应式《JAVA程序设计》专题学习网站的建设[J].电子技术与软件工程,2020(07):249-250+254.
[7] Lastuti Nunuk Dyah Retno,Ma'ruf Anwar,Yuniarti Wiwik Misaco. Characterization of mitochondrial COX-1 gene of Sarcoptes scabiei from rabbits in East Java, Indonesia.[J]. Journal of advanced veterinary and animal research,2023,6(4).
[8] Science and Technology; Researchers from Institut Teknologi Bandung Provide Details of New Studies and Findings in the Area of Science and Technology (Petrology and geochemistry dataset of lava from the Ijen Crater and Mount Blau, Banyuwangi, East Java, Indonesia)[J]. Science Letter,2023.
[9] Wei Wang, Botao Liu, Ying Zhong , Jin An. Long List Data Display based on WeChat Applet[J]. World Scientific Research Journal,2021,7(1).
核心代码展示
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
项目推荐
【计算机毕业设计】各项技术选题汇总
【计算机毕业设计】基于Springboot的网上购物商城销售系统
【计算机毕业设计】开题报告模板2
【计算机毕业设计】任务书案例2
【网站项目】基于springboot的在线考试系统
【网站项目】基于springboot的4S店车辆管理系统
【软件设计】基于python的高校资产管理系统
【网站项目】python009基于推荐算法的电影推荐系统
【网站项目】基于Springcloud的分布式架构网上商城
⬇️文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡


