您的当前位置:首页正文

【网站项目】基于SSM的276大学学生成长系统

2024-11-25 来源:个人技术集锦

项目展示

摘 要

随着互联网技术的发展,各类网站应运而生,网站具有新颖、展现全面的特点。因此,为了满足阜阳师范大学学生成长管理的需求,特开发了本阜阳师范大学学生成长系统。

本阜阳师范大学学生成长系统采用Java技术,基于SSM框架、B/S结构进行开发,同时使用MYSQL数据库进行数据的储存,充分保证系统的稳定性、安全性。本文首先探讨本课题所研究的背景及设计原则,然后介绍了阜阳师范大学学生成长系统的开发环境,接着结合实际情况,分析系统的可行性以及需求,其后对系统进行设计,最后实现了一套阜阳师范大学学生成长系统。本系统提供了良好的用户界面,实现了管理员模块、老师功能模块以及学生功能模块三大部分,满足了不同用户的操作需求。

本阜阳师范大学学生成长系统界面布局合理,操作简单,符合当今社会的发展趋势。

关键词:学生成长系统;MYSQL数据库;Java技术;B/S结构

绪论

1.1研究背景

网络高速发展,全球的网络科技增长速度明显,后劲十足,网络的普及率明显的很大提高。截止今年的六月份,不完全统计,光中国的网民数量就已经达到了7.54亿,超过了总人口的一半以上,占全球网民总数的五分之一。而利用计算机进行传统信息管理也成为一种新的朝流,逐渐替代传统的管理方式。

据调查,传统阜阳师范大学学生成长管理模式面对大量学生信息、网课课程信息、选课记录信息、成绩信息、奖惩信息等,信息的及时更新等弊端凸显,传统的阜阳师范大学学生成长管理过度的依靠人力资源的登记管理,对于庞大的信息量,显然只依靠人力,很难准确的处理好大量的数据,传统的管理模式不仅效率低,出错率高,对于阜阳师范大学学生成长管理带来了诸多不便,因此,传统的阜阳师范大学学生成长管理模式已经远远无法满足当今阜阳师范大学的发展需求,我们急需对阜阳师范大学学生成长管理体系进行变革,开发基于计算机平台的阜阳师范大学学生成长系统。阜阳师范大学学生成长管理很大程序上可以提高效率,人力方面也大大的节省,界面简单易操作,只要会计算机就可以快速的进行阜阳师范大学学生成长相关信息的管理。对经济方面也是很大的节省,其优点是显而易见的。

1.2

在开始开发项目之前,必须要先考虑项目的实用性、科学性,以及该项目是否能够真正让用户受益并尽可能的发挥项目的作用。因此,在开发前,通过以下几条原则对项目进行判断:

(1)可行性原则。项目需要保证经济可行性和技术可行性,这包括了项目在浏览端、服务端等方面上的经济和技术上是可以达成的。

(2)适应性原则。项目要保证可维护性和可扩展性,这是每个非短期项目都需要考虑的,并且不论是维护还是扩展,都必须要建立在适应用户的正常需求的基础上。

(3)安全性及保密性原则。要充分保证用户信息的安全性和保密性,不能因为开发上的疏忽,导致用户的信息泄露。

(4)系统工程原则。为了确保项目的整体性,在项目调查、项目分析、项目设计、项目开发的过程中,都需遵从项目工程的方法和步骤逐步进行。

(5)统一规划、分期实施、逐步完善原则。项目开发的过程中,要按照规划、分期实施,特别是要注意在项目开发过程中要有条理,从点到面,一步步完善,不要贪图进度,要循环渐进的对项目进行开发。

1.3研究内容

根据阜阳师范大学学生成长系统编写的论文主要阐述了阜阳师范大学学生成长系统的开发过程中使用的技术,首先进行系统需求分析,进而进行系统设计,最后才是系统功能实现以及测试几个部分,在开始编写论文之前亲自到图书馆借阅Java书籍,MYSQL数据库书籍等编程书籍,然后针对开发的阜阳师范大学学生成长系统,去网上查找了很多别人做好的系统,根据他们的功能设计进行自己的系统的系统功能结构设计,出具需求报告,最后才是进行程序编码,系统完成后才能进行测试和最后的验收工作,程序开发流程大致如此。

这次编写的论文包含了6个部分的内容,具体内容如下:

第一部分绪论:文章主要从课题背景以及设计原则综合阐述了开发此系统的必要性。

第二部分相关技术:系统开发用到的各种技术都大致做出了简介

第三部分系统分析:从可行性分析和功能需求分析等角度综合研究了此次开发的系统

第四部分系统设计:功能模块设计和数据库设计这两部分内容都有专门的表格和图片表示

第五部分系统实现:进行系统主要功能模块的界面展示

第六部分系统测试:检验程序是否达到预期目标


2 系统关键技术

Java技术

Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行[1]。除此之外,它还拥有简单的语法和实用的类库,让编程人员可以尽可能将精力集中在问题的求解上,并且许多开源项目和科研成果都是采用它实现的。

在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平台就能运用于移动端的软件开发操作。

2.2 MYSQL数据库

MySQL是典型的关系数据库系统,拥有开源免费、稳定、高效等特点,一直是中小型web项目的最佳数据库选择。MySQL作为当今IT领域使用人数最多的开源关系型数据库软件之一,在2018年的数据库使用率排名中位居第二,仅次于目前为止最成功的商业版数据库Orcle[1]。MySQL最大的优势之一就是无偿使用,这也是它成功的关键。

MySQL支持标准化数据库查询语言SQL。MySQL是一款非常适合个人开发者或小型组织开发团体的数据库管理系统,因为它是开源并且免费的,体积小、速度快、成本低以及其最重要的一点开放源码,深受程序设计人员的喜爱,这也让它成为了许许多多中小型开发网站数据库的首选,同时提供了多种开发的连接API。MySQL将数据的存放按照记录之间的关系存放到了不同的表中,减少了数据的冗余并且提高了开发的工作效率。MySQL支持开发中需要用的大型数据库,并能处理数以万计的记录。因为MySQL是开源的软件,所以在项目的预算中的时候不用花费额外的资金,大大降低了开发的总体成本,这也是MySQL数据库在中小型企业和独立的开发者中广泛流行的原因[9]。

2.3 B/S结构

在早期的程序开发中,使用得最多的莫过于C/S架构了,现在的生活中软件在生活的各个方面落地,使用了C/S架构开发出来的软件也是不在少数的,比如企业日常办公使用到的微软的OFFICE软件,我国自己研发的文档处理软件WPS,还有娱乐软件腾讯的QQ,腾讯的微信,以及电脑上安装的杀毒软件金山杀毒软件,瑞金杀毒软件等都是C/S架构。但是在Internet网络盛行之后,鉴于大家对数据信息共享的需求,在原来的C/S架构上进行了升级改进之后,有了现在的主流架构B/S架构,B/S架构就是在C/S架构上多了一个浏览器,让原来的直接访问服务器的方式,变成了通过浏览器去访问服务器。充分运用到了当下不断成熟的浏览器技术。也让软件的开发成本以及维护成本降低了。可以说B/S这种新型的架构模式让软件的开发变得便利化。

B/S框架是目前被广泛采用的一种先进的框架结构,它是一种基于互联网的程序架构。当前的使用已经非常广泛,突破了传统的C/S结构的模式,给程序开发的模式带来新的技术革命。它是随着互联网技术的不断发展而发展起来的。随着互联网技术的不断发展,各种政务网站已经不能单独在一台电脑上使用和运行了,所以基于互联网的模式就逐步的发展起来了,并且得到了大规模的应用。

图2-1  B/S模式三层结构图

SSM框架

本阜阳师范大学学生成长系统基于Spring、SpringMVC、Mybatis框架进行开发设计。

Spring 框架是在2004年首次发布,之后出现了多次的重大修订。Spring框架是由七个不同的模块组成,分别是SpringCore、Spring AOP、Spring ORM、Spring DAO、Spring Web Flow、Spring Context和Spring Web MVC[16]。这些模块提供不同的平台来开发不同的企业应用程序 ,本课题使用Spring Web MVC模块开发基于MVC的应用程序。

Spring Web MVC是基于Servlet API的原始Web框架,从一开始就包含在Spring 框架中。“Spring Web MVC”是该框架的正式名称,但通常被简称为“Spring MVC” [17]。Spring MVC框架提供了模型模块-视图模块-控制器的架构和可用于直接开发的Web应用程序的现成组件。Spring MVC模式将应用程序的不同方面分开,使元素之间形成松散耦合。

MyBatis原名叫做iBatis属于持久层框架,消除了大部分JDBC代码和参数的设置以及结果集的检索。这个框架不仅支持普通SQL查询和存储过程,还支持高级的映射[18]。MyBatis使用.xml和注解来做原始映射和配置,将接口和Java对象映射成数据库记录。


3 系统分析

3.1.1 技术可行性

SSM架构、MYSQL数据库存储技术等。大学时将这些技术已经学习掌握,因此,就技术层面而言,该项目的开发是有保障的。

3.1.2 操作可行性

3.1.3 经济可行性

3.1.4 法律可行性

本阜阳师范大学学生成长系统开发的所有技术资料都为合法,知识产权问题不会发生在开发过程中,而且没有抄袭其他相关系统,不会有侵犯版权的问题。所以在开发过程中不会涉及法律责任。

综上所述, 本阜阳师范大学学生成长系统的开发是可行的。

程序在使用中是不允许其他访问者随意窃取程序里面的隐秘信息,也不允许其他操作者越权操作其他管理用户操作的功能,要真正杜绝这些现象就必须在程序开发之前把程序的安全性给考虑进去。

数据完整性是确保数据信息是否具有可靠性,是否具有参考价值的一个重要因素,数据信息只描述一部分,或者必有的数据信息反而为空等现象都是代表着这个数据信息不完整,有数据缺陷,这是个很严肃的问题,因为这样的数据信息跟垃圾信息没什么两样。

数据完整性不仅仅限于登记的数据要完整,它也需要程序里面的所有数据信息之间存在关联,而且这种联系也是要求不能出差错的。

一切事物都是一直在发展,程序员开发软件也需要带着发展的思维去进行软件开发操作,这样的话,开发出来的程序在应对管理所需时,也会相对应的进行程序升级与更新。不论是功能完善还是数据库升级都能在原来的基础上对原有程序进行迭代升级。让开发出来的程序能够走得越来越远。这也是广大用户对程序软件的使用要求。

3.3系统功能分析

本阜阳师范大学学生成长系统功能完善、操作简单、界面清晰,系统用户角色主要分3大类,即管理员、老师和学生。

管理员:管理员可登录进入系统后台对系统进行全面管理,管理员功能模块包括个人中心、学生管理、老师管理、网课课程管理、成绩信息管理、选课记录管理、学校信息管理、广告信息管理、奖惩信息管理、课程表管理、管理员管理以及系统管理,管理员实现了对系统信息的查看、添加、修改和删除的功能。

学生:学生在系统前台可查看系统信息,包括首页、网课课程、学校信息、广告信息、学校公告,登录后主要功能模块包括个人中心、网课课程管理、成绩信息管理、选课课程管理、学校信息管理、广告信息管理、奖惩信息管理、课程表管理以及我的收藏管理。

老师:老师登录后主要功能模块包括个人中心、网课课程管理、成绩信息管理、选课记录管理、学校信息管理、广告信息管理、课程表管理以及我的收藏管理。

1 登录流程

登录模块主要完成管理员和用户的权限登入,系统登录流程图如图3-1所示。

图3-1系统登录流程图

2添加信息流程

所有成功登录的用户均可实现添加信息功能,添加信息时系统会对添加的数据进行验证,验证通过才可写入数据库,添加信息流程图如图3-2所示。

图3-2 添加信息流程图

3.4.3删除信息流程

用户在删除信息时,系统会提示再次确认是否存在,确认删除则将信息从数据库删除,删除信息流程图如图3-3所示。

图3-3 删除信息流程图


4 系统设计

4.1系统概要设计

本阜阳师范大学学生成长系统并没有使用C/S结构,而是基于网络浏览器的方式去访问服务器,进而获取需要的数据信息,这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构,图4-1就是开发出来的程序工作原理图。

图4-1 系统工作原理图

根据前面的各项设计分析,按照系统开发的基本理念对网站进行分解,从模块上主要可分为学生功能模块、老师功能模块和管理员功能模块,本阜阳师范大学学生成长系统结构如图4-2所示。

图4-2系统结构图

4.3数据库设计

E-R图设计

E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。

实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。

属性:E-R图中的属性,是指实体的属性,实体由多条属性所构成,属性拥有自己的数据类型,数据大小。属性的优劣决定了E-R图中实体的健全性、完整性。

关系:E-R图中的关系是指实体之间的关系,用菱形来表示实体间的关系,这些菱形关系的联系上有着一对多或多对多的数据联系,这些构成了E-R图的关系,E-R图的关系紧密连接了实体,使实体间的关联性更加的显著、易懂。本阜阳师范大学学生成长系统的E-R图如下所示:

设计

本阜阳师范大学学生成长系统需要后台数据库,系统采用MYSQL数据库进行数据的存储,下面介绍数据库中的各个表的详细信息。

表4-1  jiangchengxinxi奖惩信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime`

创建时间

timestamp

xuehao

学号

varchar

200

xueshengxingming

学生姓名

varchar

200

huojiangshijian

获奖时间

date

huojiangneirong

获奖内容

longtext

chengfashijian

惩罚时间

date

chengfaneirong

惩罚内容

longtext

表4-2  laoshi老师信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime`

创建时间

timestamp

laoshigonghao

老师工号

varchar

200

mima

密码

varchar

200

laoshixingming

老师姓名

varchar

200

xingbie`

性别

varchar

200

shoujihaoma

手机号码

varchar

200

ruzhishijian

入职时间

date

`gerenzhaopian

个人照片

varchar

200

表4-3  wangkekecheng网课课程信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime`

创建时间

timestamp

kechengbianhao

课程编号

varchar

200

kechengmingcheng

课程名称

varchar

200

kechengleixing

课程类型

varchar

200

kechengshizhang

课程时长

varchar

200

fengmiantupian

封面图片

varchar

200

kechengjieshao

课程介绍

longtext

laoshigonghao`

老师工号

varchar

200

laoshixingming

老师姓名

varchar

200

shoujihaoma

手机号码

varchar

200

sfsh

是否审核

varchar

200

shhf

审核回复

longtext

clicktime

最近点击时间

datetime

clicknum

点击次数

int

11

表4-4  xuesheng学生信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime`

创建时间

timestamp

xuehao

学号

varchar

200

mima

密码

varchar

200

xueshengxingming``

学生姓名

varchar

200

xingbie

性别

varchar

200

chushengriqi`

出生日期

date

200

lianxishouji

联系手机

varchar

200

gerenzhaopian

个人照片

varchar

200

ruxueshijian

入学时间

date

表4-5  users管理员信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

username

用户名

varchar

100

password`

密码

varchar

100

`role`

角色

varchar

100

addtime`

新增时间

timestamp


5 系统的实现

5.1登录界面的实现

用户在登录界面可输入用户名和密码,选择登录类型,点击登录按钮进行登录系统,系统登录界面如图5-1所示

图5-1 系统登录界面

5.2学生管理界面的实现

管理员可增删改查学生信息,学生管理界面如图5-2所示,添加学生界面展示如图5-3所示。

图5-2 学生管理界面

图5-3  添加学生界面

5.3系统主界面的实现

用户在系统前台可查看系统信息,包括首页、网课课程、学校信息、广告信息以及学校公告等,系统主界面展示如图5-4所示。

图5-4  系统主界面

5.4老师管理界面的实现

管理员可增删改查老师信息,老师管理界面展示如图5-5所示。

图5-5  老师管理界面

5.5网课课程管理界面的实现

老师登录后可添加网课课程信息,管理员可审核、修改和删除网课课程信息,学生可查看网课课程信息,并可选课,添加网课课程界面展示如图5-6所示,网课课程管理界面展示如图5-7所示,网课课程详情界面展示如图5-8所示。

图5-6  添加网课课程界面

图5-7  网课课程管理界面

图5-8  网课课程详情界面

5.6学校信息管理界面的实现

管理员可增删改查学校信息,学校信息管理界面如图5-9所示。

图5-9  学校信息管理界面

6 系统测试

6.1测试目的

系统测试是通过在设定的特定的环境下执行程序来检测环境发生错误的不可或缺的阶段。系统测试包括安全测试、压力测试、回复测试等等,这些是保障我们所开发的程序与系统的优良质感非常为之重要的部分。

在项目的开发过程中,出现各种漏洞各种错误是极其正常的事情,有些错误可以凭借着开发工具发现,迅速找出并修改,而有些错误漏洞则是在一些细节上出现逻辑错误,导致引起一些列的错误,这类错觉有时藏得很深,会让我们在排除的过程中浪费大量的时间和精力。但随着时间的推移,经验的上涨,以后发现这类错误的时间一定会慢慢缩小。

系统测试的目的主要在于检查所实现的代码成品能否满足最初设定的目标以及系统需求,从测试的过程中发现与所需要的功能不同的错误,包括达不到预定需求甚至与预定需求完全矛盾的错误,并且在后续的开发上进行更改,甚至提出更加符合项目的新需求。

6.2测试方案

对测试计划的把握是测试方案的重中之重。所有的技术难点应该都被包含在这个测试计划之中。而且我们要保证能与目标形成一致性,以至于能够测试出一些主要存在的错误和一些错误的漏洞。可以完美解决这些问题就只有白盒测试或者黑盒测试。

构造测试是白盒测试的另一个名字,了解与分析程序的结构以及性能功用的,从而我们可以得到最终想要的结果并且观察出是不是每一条程序都能得到。

性能测试是黑盒测试别称,程序本身的运作通过程序的进程来观察,主要是看一下程序是不是能够像我们预期的目标那样发展,看一看我们的程序最终能不能完整的得到我们最后想要的功能和储存想得到的数据,到最后看一下我们的这个程序完整性能不能达到要求。

(1)模块测试

单元测试就是模块测试,顾名思义就是测试每个模块所承担的功能是否能够实现,这个测试就是为了找出代码在实际的设计运转中某一些小的程序所出现的偏差,

(2)集成测试:

集成测试就是对系统的测试以及对他子系统的一些性能测试,他检查的事系统的包装程序信息。找出其中的问题。他的优势主要有以下这几点:

软件耗费较少。

可以提前发现端口的错误。

更好的地位系统中错误的位置。

从底部往上面进行的方案针对于偏下层的结构,而中间的结构就采用折中的方法。

(3)验收测试:

终于到了结尾性的工作了。就是为了给用户看一下我们的系统功能是否达到了预期的效果。我采用了性能测试也就是黑盒测试对系统进行测试。

其结果是分别是:

有一定的差异在用户的需求。

再者就是结果与之差不了多少。

到了最后了,我们发现的问题都是与用户的需求存在一定的关联。

方法

本测试主要是系统是否能够进行服务器进行处理信息的能力,不同的用户发出不同的服务请求,系统必须能够准确的进行数据的传达,在这种情况下进行测试响应的时间、内存使用的情况和CPU占用大小等指标,系统完成设计必须保证信息的正确性,信息紊乱带来的后果是非常可怕的,所有必须要进行压力测试,通过本测试进行系统相应速度、稳定性能和处理能力进行优化。

运用黑盒子测试的测试办法,把各个不同功能的软件模板进行区分、管理。对于不同的模块独立的分装起来,在传统测试的时候要进行数据的统一测试,完成对系统的概要设计详细解读资料、需要解决的问题,及操作的详细应用说明等内容来视作测试的突破口,对测试的对象进行逐一对照检查,并针对单个的程序检测延伸至这个研发过程中单个及整个集成单元的检测中,要有规律有顺序的进行,不但可以缩短我们的工作时效,避免返工的操作,也可以对可用性负责,提高了可操作性和软件研发的实用性。通过对系统概要设计验证测试,测试系统的统一管理方式,对系统的各个功能模块以及系统的性能进行测试,验证系统的功能以及系统的性能。

6.4测试分析

经过测试,所有功能都能得以实现,没有任何变形。至此,在功能的测试上也已经比较圆满的完成了。本阜阳师范大学学生成长系统满足用户的要求和需求,所有基本功能齐全,操作简单,网站运行性能良好,是一个值得推广的学生成长系统。

总  结

本次开发的阜阳师范大学学生成长系统已经接近尾声阶段了,在这次独立完成毕业设计的期间,我自己体会到了很多的东西,另外我很想说的就是独立开发软件真的很能让人在开发期间得到锻炼,不管是需求分析,还是系统的设计以及系统功能详细实现还有最后的测试工作,每一步都要小心翼翼的完成,一步一步来,不然任何环节出现了差错,返工起来也很麻烦,开发系统过程中,遇到了很多的难题,比如阜阳师范大学学生成长系统需要具有什么样的功能,这个我还是思考了很久,后来同学给我提示了一下,参考别人做好的系统,看看人家设计了什么功能,自己就多多参考下,后来这个问题就很好解决了,最难的就是系统编码了,我这个人本来就比较粗心,编码出现很多不该出现的错误,不该打空格也不小心键盘空格键多敲了两下,整得自己老是程序运行出错,找了好久都没有解决,后来无奈找到室友帮忙看看,慢慢检查终于找到问题了,编码过程真的很心塞。还好东拼西凑总算完成了功能要求了。系统整体界面虽然不是很好看,但起码不花哨,用户使用起来整体感觉就是简洁,功能体验虽然有点啰嗦,但是需要的功能都已经具备了。

自己的身份目前还是学生,开发程序肯定是不会考虑周全,程序完成开发后也经过了一系列测试,整体来说还是没有发现明显的操作逻辑错误,自己在毕设制作过程中不仅知识有所增加,独立学习的能力也有所提高了,更重要的就是遇到问题向周边同学寻求帮助,这个是很有必要的。总的来说毕业设计的圆满完成,我真的觉得很自豪。

谢 辞

经过好几个月的努力,终于完成了本阜阳师范大学学生成长系统的开发。在这过程中我把从导师以及图书馆中学到的相关的知识运用到系统的开发过程中。这是对我所学知识的一个完整性的检验。其中发现了诸多的不足和缺点。但是我相信在经过长时间的磨练我会不断的开发出更好的信息管理系统。在这次毕业设计中是对我平常在课堂的一次考核,也是将理论应用到实践的一项考察。

在即将毕业之际,我的心情实在难以平静,从最开始的学习专业知识到刚开始参加毕业课题讨论到最后论文的顺利完成,我身边的亲朋好友给了我极其多的帮助,这些帮助大多是雪中送炭,帮助我渡过了很多难关。因此,我要想对我伸出过援助之手的可爱的朋友、老师、家人们表示衷心的感谢。

我要感谢此次指导我最亲爱的的老师,是他的及时纠正毕设中出现的问题,及时的给我建议,使得我的设计如期的完成。指导老师在我本次阜阳师范大学学生成长系统的开发过程中,从程序的设计、代码的完善等方面以及论文的指导提供了很多很多宝贵的意见,并且为我推荐了许多相关JAVA技术的详细资料,他的指导和建议使我受益匪浅,通过老师的耐心辅导和指点,我的论文顺利的完成,并保证了本论文的质量,我对他的辛勤指导表示崇高的敬意。我要非常郑重的向我的导师说一声:谢谢。也希望老师多多指正论文中出现的问题,并提出宝贵建议。

参考文献

[1] 张孝祥. JAVA邮件开发详解[M]. 北京:电子工业出版社,2017:10-300.

[2] 雷文华, 薛小文. MATLAB和Servlet在网络数据处理中的应用[J]. 电子测试, 2018, (11):81-86.

[3] 黄艳峰. 在Java语言中实施“案例教学”的研究与探索[J]. 电脑知识与技术, 2014, 6(5):1148-1149

[4] 王玉英. 基于JSP的MySQL数据库访问技术[J]. 现代计算机:专业版, 2015, 19(14):63-66

[5] 赵钢. JSP Servlet+EJB的Web模式应用研究[J]. 电子设计工程, 2013, 21(13):47-49

[6] 肖英. 解决JSP/Servlet开发中的中文乱码问题[J]. 科技传播, 2011, (1)11-25

[7]孙卫琴. 基于MVC的JavaWeb设计与开发. 北京: 电子工业出版社 2014.

[8]王雨竹. MySQL入门经典. 北京:机械工业出版社 2013

[9]陈Maydene Fisher, Jon Ellis, Jonathan Bruce著. . 11 June, 2013

[10]邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社,2019.

[12] Bruce Eckel. Thinking in java(English Edition). 北京:机械工业出版社,2016·

[13] Hsiao I H, Sosnovsky S, Brusilovsky P. Guiding students to the right questions: adaptive navigation support in an e-learning system for Java programming[J]. Journal of Computer Assisted Learning, 2018, 26(4):270-283·

[14] Vegh A. MySQL Database Server[M]. Web Development with the Mac®. Wiley Publishing, Inc., 2011,179-194·

[15] Rasoolzadegan A, Barforoush A A. Reliable yet flexible software through formal model transformation (rule definition)[J]. Knowledge & Information Systems, 2014, 40(1):79-126·

[16] 郝佳编著.Spring源码深度解析[M].人民邮电出版社,2019:5-98.

[17] [美]Paul Deck著.林仪明译.Spring MVC学习指南[M].人民邮电出版社,2017:14-113.

[18] 李艳鹏[等]编著.互联网轻量级SSM框架解密[M].电子工业出版社,2019:19-98.

核心代码展示

/**
 * 登录相关
 */
@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();
    }
}

项目推荐

⬇️文章末尾可以获取联系方式,需要源码可以联系(源码不开源)⬇️

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

显示全文