🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的网站项目。
- 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目展示
摘 要
随着企业员工人数的不断增多,企业在人力资源管理方面负担越来越重,因此,为提高企业人力资源管理效率,特开发了本人力资源管理系统。
本文重点阐述了人力资源管理系统的开发过程,以实际运用为开发背景,基于SSM架构,运用了JSP技术和MYSQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了人力资源管理的重要功能。
本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高企业人力资源管理效率。
关键词:人力资源管理,JSP技术,MYSQL数据库,SSM架构
随着中国的科技的不断进步,计算机发展也慢慢的越来越成熟,人们对计算机也是越来越更加的依赖,人事、教育慢慢用于计算机进行管理。从第一台计算机的产生,到现在计算机已经发展到我们无法想象[11]。给我们的生活改变很多很多,给我们提供了把很多的方便,计算机已经融入到我们的生活中,和我们的生活息息相关。
对于企业来说,企业是给我们提供工作的场所,信息的管理来说更加的重要,例如企业人力资源的管理,涉及的信息广泛,整体管理数据上的工作量很大,过去基于文本、表格等形式的管理体系,效率低,严重制约了企业的发展,因此需要对企业人力资源管理方式进行变革,需要依靠先进的计算机平台和数据库来实现建立人力资源管理系统,满足企业人力资源管理需求[2]。
据调查,传统的企业人力资源管理模式面对大量信息,信息的时效性不足等弊端突出,传统的企业人力资源管理过度的依靠手工,面对繁杂的信息只依靠手工,使快速处理好大量数据成了一件困难的事,给企业人力资源管理带来了诸多不便,因此,传统的企业人力资源管理模式已经远远无法满足当今企业的发展需求,我们急需对企业人力资源管理体系进行变革。
在国外他们的信息技术的发展是我国的许多倍,从1946年诞生在美国的世界上第一台计算机开始,国外的信息技术就一直在飞速地发展,一些计算机应用软件也纷纷出现,软件技术也一直在不断完善和更新。软件行业早已遍布各个地方。
在国内,我国信息技术发展起步比较晚,后期慢慢的不断地进行优化和改革,才让我们的信息技术上升到新的阶段。在现在软件开发的技术经过大量研究和生活实践基本能够达到独立开发系统应用的水平,生活中的各个行业也把软件操作替换成传统的记录模式。软件行业正是现在比较热门的行业[12]。
中国是世界上人口最多的国家,目前有近14亿人口,劳动力人口有近8亿,约占界劳动人口的25%(《中国统计年鉴》2008数据)。而对于如此庞大的劳动力人口,企业管理数字化已经成为趋势[11]。对于人力资源管理方面来讲,传统的管理的方式,已经无法满足企业人力资源管理的需求,因此我们利用软件技术开发人力资源管理信息化系统来进行快速实现人力资源管理的功能,提高人力资源管理的效率。
对本文所涉及的相关技术进行学习,系统的分析是一个很重要的环节,更好的进行程序的设计,必须进行前期的深入调查,对系统进行全面的功能设计,和详细的解析。课题最主要的工作是通过JSP+MYSQL建立一个完善的人力资源管理系统,系统最主要的模块是企业人力资源相关信息的管理。本文主要分为六大部分:
第一部分绪论介绍了本文的研究背景,概述了的研究现状和论文的结构安排。
第二部分主要是是介绍了人力资源管理系统所采用的技术,开发环境。
第三部分对人力资源管理系统进行分析,包括可行性分析,系统功能需求,系统流程分析等。
第四部分进行系统的设计,这一部分是系统主要的数据库部分,介绍功能结构和数据库的设计等。
第五部分总结了系统的界面和实现过程进行分析。
第六部分主要是对系统测试进行阐述,对测试遇到的问题进行说明。
JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。将Java程序添加到传统的web页面HTML文件(*)。htm,*。Html) [2]。
JSP这种能够独立使用的编程语言可以嵌入在html语言里面运行,正因为JSP参照了许多编程语言的特性,使得JSP在web的脚本技术当中也占有一定的重要位置,对于刚入门编程行业的初学者来讲,jsp这种编程语言不仅容易学习,而且还具备许多高级的特性[4]。在程序的开发过程中,使用jsp也不失为一种正确的选择,像表单数据的收集操作以及字符串信息的处理方面等等,jsp都能很轻松地解决,帮助程序开发者省下许多时间,JSP 新版本的发布,标志着一个全新的JSP时代的到来,它最大的特点就是引入了面向对象的全部机制,并保留了向下的兼容性。综上所述,使用JSP,可以自由的选择操作系统、Web服务器以及合适的数据库管理系统。同时,设计开发时,有两种选择,一种是面向过程,另一种是面向对象,或者也可以两种都使用,可以称为混和方式设计[8]。
JSP的优点:编写一次,始终运行。还有jsp可以延展可以缩短的强大优势,还有就是支持多种开发语言并且兼容性好,适用于很多平台顺利运行[5]。
Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行。除此之外,它还拥有简单的语法和实用的类库,让编程人员可以尽可能将精力集中在问题的求解上,并且许多开源项目和科研成果都是采用它实现的。
在1995年这一年的5月份,著名的Sun Microsystems公司在程序开发设计上面郑重推出一种面向对象开发的程序设计语言——Java,最开始的时候Java是由詹姆斯.高斯林这位伟大的JAVA之父来进行主导,但是在后来由于各种原因,让甲骨文公司这个针对商业程序创建了oracle大型数据库的公司收购了Java[16]。Java的平台总共算下来有3个,分别为javaME和javaSE以及javaEE这3个java平台。下面将对其进行分别介绍。
(1)在电脑桌面程序的开发上面需要选择JavaME,这个用得也比较多。
(2)企业也会根据工作以及业务需要开发各种软件,那么就会选用JavcEE这个支持企业版软件的开发的Java平台,JavcEE主攻运用在企业领域上面的web应用,JavcEE也在javaSE的基础上获得了比如jsp技术 ,Servlet技术等程序开发技术的支持。
(3)现在生活中手机的普及化,也使得手机端这样的移动设备的软件的兴起,JavaME这个迷你版java平台就能运用于移动端的软件开发操作。
B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,它能够把系统核心功能集中在服务器上面,可以帮助系统开发人员简化操作,便于维护和使用[4]。
在早期的程序开发中,使用得最多的莫过于C/S架构了,现在的生活中软件在生活的各个方面落地,使用了C/S架构开发出来的软件也是不在少数的,比如企业日常办公使用到的微软的OFFICE软件,我国自己研发的文档处理软件WPS,还有娱乐软件腾讯的QQ,腾讯的微信,以及电脑上安装的杀毒软件金山杀毒软件,瑞金杀毒软件等都是C/S架构。但是在Internet网络盛行之后,鉴于大家对数据信息共享的需求,在原来的C/S架构上进行了升级改进之后,有了现在的主流架构B/S架构,B/S架构就是在C/S架构上多了一个浏览器[3],让原来的直接访问服务器的方式,变成了通过浏览器去访问服务器。充分运用到了当下不断成熟的浏览器技术。也让软件的开发成本以及维护成本降低了。可以说B/S这种新型的架构模式让软件的开发变得便利化。
B/S架构不需要在任何客户端来进行程序的部署,使用这样的程序结构来使用开发好的系统是利用浏览器来使用的,就是把开发好的程序配置到一台远程服务器上,在任何可以访问这台服务器的客户端电脑上都可以对程序进行操作和使用,这样的方式给使用者带来了极大的便捷。这样的结构提高了程序的运行效率,打破了地域的限制,降低了程序的使用成本。
所谓数据库,实际上就是一个容器,按照数据结构来组织、存储和管理。数据库的作用就是为大量的信息进行管理并提供高效的解决方案。
MySQL是典型的关系数据库系统,拥有开源免费、稳定、高效等特点,一直是中小型web项目的最佳数据库选择。MySQL作为当今IT领域使用人数最多的开源关系型数据库软件之一,在2018年的数据库使用率排名中位居第二,仅次于目前为止最成功的商业版数据库Orcle[7]。MySQL最大的优势之一就是无偿使用,这也是它成功的关键。
MySQL支持标准化数据库查询语言SQL。MySQL是一款非常适合个人开发者或小型组织开发团体的数据库管理系统,因为它是开源并且免费的,体积小、速度快、成本低以及其最重要的一点开放源码[8],深受程序设计人员的喜爱,这也让它成为了许许多多中小型开发网站数据库的首选,同时提供了多种开发的连接API。MySQL将数据的存放按照记录之间的关系存放到了不同的表中,减少了数据的冗余并且提高了开发的工作效率。MySQL支持开发中需要用的大型数据库,并能处理数以万计的记录。因为MySQL是开源的软件,所以在项目的预算中的时候不用花费额外的资金,大大降低了开发的总体成本[10],这也是MySQL数据库在中小型企业和独立的开发者中广泛流行的原因。
在进行可行性分析时,我们通常根据软件工程里方法,通过四个方面来进行分析,分别是技术、经济、运行和法律可行性。因此,在基于对目标系统的基本调查和研究后,对提出的基本方案进行可行性分析
技术可行性一是考虑客观的技术可行性,二是考虑实际的技术可行性。从客观上、简单地说,现已经出现了类似的系统,因此客观上的可行性是满足的。从现有的实际情况上来看,该系统使用的是JAVA开发语言、MYSQL都是容易获得的,同时计算机的硬件性能也满足开发软件的需求;且在本科课程中都有进行相关软件的学习和开发。综上所述,该系统具有技术可行性。
开发该系统时,优先考虑了使用网页来完成该系统。从已有的Web网页开发的案例、资料中,可知Web所需要的软硬件简单,切开发成本低。且从引进该系统后的预想表现将会比传统方式优异,其具有高效、低成本的特点。可以大量节省管理的人力、物力,具有一定经济效益和社会效益。综上所述,该系统具有高经济可行性
运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。以目前信息技术的普及程度之广、相关工作的操作人员的水平之高,是足以胜任的。综上所述,该系统具有高运行可行性。
(1)所使用的技术或者资料(书籍、文献、软件)合乎中国法律。
(2)所开发过程不涉合同、侵权、责任和各种法律相抵的问题。
(3)所完成系统不存在侵犯版权问题。
(4)完全符合中国的《中华人民共和国著作权法》和《计算机软件保护条例》。
综上所述,该系统具有高法律可行性。
通过分析论证,该系统总体上是具有高可行性的。
达到如以下的性能需求指标,可以保证系统的安全性、可靠性、稳定性,需要:
(1)系统响应的精确性和实时性
这是本系统必要的性能。考虑到未来系统可能承受的工作量,需要能够承担得起企业级的信息处理需求。实时性是该系统的生命线,因此需采用软实时系统来进行保证。
(2)系统的开放性和系统的可扩充性
本系统是一个较为初期的一个雏形,以后势必会根据的企业人力资源管理需求的扩大或转变。这就要求本系统需要提供足够的开放型和可扩充性,只要符合本系统的设计准则都可以将新的模块加入。通过这样的升级、维护来完成本系统后期的生命周期。
(3)系统的易用性和易维护性
本系统是面对企业管理人员使用的,这就要求不论是熟悉或不熟悉计算机的人员都可以对系统进行有效的人机交互。因此提供给用户一个友好、漂亮的图形接口是非常重要的。这可以通过发一些纸质和实际的界面模型问卷调查来获得最佳的效果。此外,也考虑到维护本系统的操作人员,有效的手段的数据备份、管理和错误检测、恢复需要被提供给相关的人员。
(4)系统的响应速度
要求系统在任何情况下的平均响应速度达到秒级,具有软实时性。一是为了保证了系统的工作效率,二为了防止系统因同一时间段大量的员工登录系统而造成错误、瘫痪。
本人力资源管理系统主要包括临时员工功能模块、正式员工功能模块、总管理员功能模块和管理员功能模块4大部分,下面将对这四大功能模块分别进行功能分析。
(1)管理员:管理员登录后主要功能模块包括个人中心、临时员工管理、正式员工管理、职位调度申请管理、报销申请管理、部门信息管理、职位信息管理、工作进度管理、管理员管理以及系统管理。管理员用户用例图如图3-1所示。
图3-1 管理员用例图
(2)总管理员:总管理员注册登录后主要功能模块包括个人中心、临时员工管理、正式员工管理、职位调度申请管理、报销申请管理、部门信息管理、职位信息管理、工作进度管理、总管理员管理、数据库管理、管理员管理以及系统管理,总管理员用例图如图3-2所示。
图3-2 总管理员用例图
(3)临时员工:临时员工注册登录后主要功能模块包括个人中心、工作进度管理,临时员工用例图如图3-3所示。
图3-3 临时员工用例图
(4)正式员工:正式员工注册登录后主要功能模块包括个人中心、职位调动申请管理、报修申请管理以及工作进度管理,正式员工员用例图如图3-4所示。
图3-4 正式员工用例图
用户要想进入本系统,必须进行登录操作,登录成功则进入对应用户功能界面,可进行功能操作处理,反之登录失败。系统操作流程如图3-5所示。
图3-5 系统操作流程图
用户在添加信息时,系统编号自动生成,用户需要输入信息,系统会对其进行验证,验证通过则添加成功,反之添加失败,添加信息流程如图3-6所示。
图3-6 添加信息流程图
用户在进行修改信息操作时,首先进入修改信息界面,用户输入修改信息数据,系统进行数据的判断验证,修改信息合法则修改成功,信息更新至数据库,信息不合法则修改失败,重新输入。修改信息流程图如图3-7所示。
图3-7 修改信息流程图
用户可选择需要删除的数据进行删除信息操作,删除信息流程如图3-8所示。
图3-8 删除信息流程图
本人力资源管理系统的特点就是利用Browser/Server(B/S)结构,为企业人力资源管理提供了一个网络管理的平台,让管理人员只要可以上网就可实现企业人力资源管理相关信息的管理操作。
本系统的网络应用原理示意图如图3-9所示:
图3-9系统的网络应用原理示意图
系统实现的物理结构如图3-10所示:
图3-10 系统实现的物理结构图
人力资源管理系统并没有使用C/S结构,而是基于网络浏览器的方式去访问服务器,进而获取需要的数据信息,这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构,图4-1就是开发出来的程序工作原理图。
图4-1 系统工作原理图
系统的设计和划分是系统的核心研究问题,以确定整体结构和功能模块。该系统的结构化设计的思想,是自顶向下的方式将系统分成若干个子系统,以及反过来的子系统分成模块,其被划分成子模块,层划分各计算机可执行模块可迄今用作一个单独的程序。
本人力资源管理系统的结构图如图4-2所示。
图4-2 系统结构图
(1)登录模块顺序图
登录模块主要满足了管理员、临时员工、正式员工以及总管理员的权限登录,登录模块的顺序图如图4-3所示。
图4-3 登录模块顺序图
(2)添加信息模块顺序图
管理员、临时员工、正式员工以及总管理员登录后均可进行信息的添加,添加信息顺序图如图4-4所示
图4-4 添加信息模块顺序图
本人力资源管理系统采用的是MYSQL数据库,数据存储快,因为人力资源管理系统,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确。
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 baoxiaoshenqing报销申请信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 创建时间 | timestamp | 否 | 是 | |
xingming | 姓名 | varchar | 200 | 否 | 是 |
bumen | 部门 | varchar | 200 | 否 | 是 |
zhiwei | 职位 | varchar | 200 | 否 | 是 |
riqi | 日期 | datetime | 否 | 是 | |
baoxiaoneirong` | 报销内容 | longtext | 否 | 是 | |
baoxiaojine | 报销金额 | int | 11 | 否 | 是 |
fapiaoxiangqing | 发票详情 | varchar | 200 | 否 | 是 |
`sfsh | 是否审核 | varchar | 200 | 否 | 是 |
shhf` | 审核回复 | longtext | 否 | 是 | |
userid` | 用户编号 | bigint | 20 | 否 | 是 |
表4-2 bumenxinxi部门信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 创建时间 | timestamp | 否 | 是 | |
bumenming | 部门名 | varchar | 200 | 否 | 是 |
表4-3 gongzuojindu工作进度信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 创建时间 | timestamp | 否 | 是 | |
bumen | 部门 | varchar | 200 | 否 | 是 |
zhiwei | 职位 | varchar | 200 | 否 | 是 |
gongzuo | 工作 | varchar | 200 | 否 | 是 |
qishishijian | 起始时间 | datetime | 否 | 是 | |
jieshushijian | 结束时间 | datetime | 否 | 是 | |
dangqianjindu | 当前进度 | varchar | 200 | 否 | 是 |
表4-4 users用户信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
id | 编号 | bigint | 20 | 是 | 否 |
username | 用户名 | varchar | 100 | 否 | 是 |
`password | 密码 | varchar | 100 | 否 | 是 |
role | 角色 | varchar | 100 | 否 | 是 |
addtime | 新增时间 | timestamp | 否 | 是 |
表4-5 zhiweidiaodushenqing职位调度申请信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 创建时间 | timestamp | 否 | 是 | |
gonghao` | 工号 | varchar | 200 | 否 | 是 |
xingming | 姓名 | varchar | 200 | 否 | 是 |
shouji | 手机 | varchar | 200 | 否 | 是 |
bumen | 部门 | varchar | 200 | 否 | 是 |
zhiwei | 职位 | varchar | 200 | 否 | 是 |
`zhiweidiaodu | 职位调度 | varchar | 200 | 否 | 是 |
xinbumen | 新部门 | varchar | 200 | 否 | 是 |
xinzhiwei | 新职位 | varchar | 200 | 否 | 是 |
shenqingyuanyin` | 申请原因 | longtext | 否 | 是 | |
sfsh | 是否审核 | varchar | 200 | 否 | 是 |
shhf` | 审核回复 | longtext | 否 | 是 | |
userid | 用户编号 | bigint | 20 | 否 | 是 |
没有账号的临时员工、正式员工以及总管理员均可进入对于注册界面进行注册操作,注册界面展示如图5-1所示。
图5-1注册界面图
用户要想进入本系统必须进行登录操作,系统登录界面如图5-2所示。
图5-2 系统登录
管理员、总管理员均可增删改查工作进度信息,临时员工以及正式员工可查看工作进度信息,添加工作进度管理界面如图5-3所示,工作进度管理界面展示如图5-4所示,查看工作进度界面展示如图5-5所示。
图5-3 添加工作进度界面
图5-4 工作进度管理界面
图5-5工作进度查询界面
管理员和总管理员均可增删改查临时员工信息,临时员工管理界面如图5-6所示。
图5-6 临时员工管理界面
管理员和总管理员均可添加、修改和删除正式员工信息,正式员工管理界面如图5-7所示。
图5-7 正式员工管理界面
正式员工登录后可进行职位调动申请操作,管理员和总管理员可查看,并可对其进行审核管理,职位调动申请界面展示如图5-8所示,职位调动申请管理界面如图5-7所示。
图5-8 职位调动申请界面
图5-9职位调动申请管理界面
系统测试主要是判断系统是否可以正常运行,功能模块是否可以实现操作。程序代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好,再进行程序测试时也会也会发现一个重来没有被发现的错误信息。
测试不仅是系统开发的开始,而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段。从实际情况来看,最初的问题很可能是一个小错误,根据按钮的原理,按钮后的按钮位错将是所有位错。该系统的原因也同样适用,随着后续的开发工作,误差将越来越严重。为了避免问题在后续编码,测试和设计,避免扩大国家的问题。在测试系统中,开发人员应该站在客户的角度来处理测试工作,而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先,用户界面和客户需求是一致的,设置界面和设计风格统一;第二,创新设计接口规范设计标准,具有独特的审美特征;最后,人类传统的接口以满足审美需求,不能盲目地追求一种独特的,合理的规划布局,符合审美标准。
本测试主要是系统是否能够进行服务器进行处理信息的能力,不同的用户发出不同的服务请求,系统必须能够准确的进行数据的传达,在这种情况下进行测试响应的时间、内存使用的情况和CPU占用大小等指标,系统完成设计必须保证信息的正确性,信息紊乱带来的后果是非常可怕的,所有必须要进行压力测试,通过本测试进行系统相应速度、稳定性能和处理能力进行优化。
运用黑盒子测试的测试办法,把各个不同功能的软件模板进行区分、管理。对于不同的模块独立的分装起来,在传统测试的时候要进行数据的统一测试,完成对系统的概要设计详细解读资料、需要解决的问题,及操作的详细应用说明等内容来视作测试的突破口,对测试的对象进行逐一对照检查,并针对单个的程序检测延伸至这个研发过程中单个及整个集成单元的检测中,要有规律有顺序的进行,不但可以缩短我们的工作时效,避免返工的操作,也可以对可用性负责,提高了可操作性和软件研发的实用性。通过对系统概要设计验证测试,测试系统的统一管理方式,对系统的各个功能模块以及系统的性能进行测试,验证系统的功能以及系统的性能。
为了保证测试工作的有效进行,同时保持工作质量,可将测试工作按内容划分为以下几个部分,即:审核代码、单元测试、集成测试、系统测试和预期测试。
(1)审核代码
即审查编写的代码,检查其语法以及使用是否规范,并及时加以校正。
(2)单元测试
即检查系统中各个小版块的程序设置,将其划分为不同单元,分别进行测试以及校正。通过不同单元具备的功能性差别,对其进行不同目的的测试,以达到各单元系统的正确性。
(3)集成测试
在测试完各个单元系统后,将整个程序整体进行统一测试,即为集成测试。此举既可以检查单元测试中存在的遗漏,也可以检查各单元集合后是否存在衔接、过渡等方面的错误,子功能与主功能是否吻合,数据是否正确。
(4)预期测试
通过对整个程序的测试,来检查是否能够实现用户预期体验效果,即是否满足用户的各项需求,各个按钮是否有效,系统开发是否达到预期效果。
(5)系统测试
在完成各项测试后,仍然需要进行统一的系统整合测试,可从安全性、性能、功能性三个方面入手:
①安全性测试:应对该系统的安全防范功能进行测试,防止用户信息泄露或者交易流程错误等,避免非法手段的干扰。
②性能测试:即系统最高负荷承受限度,测试系统在达到某负荷条件下是否能保持正常运行。
③功能性测试:测试系统是否满足用户的各项需求,是否存在功能缺失。
通过测试的整个过程,每个模块的功能都还比较成功,但也发现了一些问题,比如登录页面登录进不了系统,是因为配置文件中的数据库的密码不一致等,在发现后及时进行了修改。目前系统还存在很多需要改进的地方,将会在今后的使用和维护中不断完善。
结论
在这次的毕业设计当中,让我把课堂上学到的知识全部学以致用,让我对网站的设计和开发有了更加深入的理解,对数据库的运用也更加的灵活,不在局限于书本上的知识,以下几点是我本次毕业设计的体会:
(1)在编辑代码的时候一定要注意写注释,因为你一篇代码写下来,写的多了,有可能回头就忘了这段代码主要是用来做什么的,还有编写的代码一定要注意规范书写,不然当你写完的时候你回头一看会让你眼睛疲惫,让你无法静下心来编写。
(2)这次的毕业设计能成功的实现出来,主要是归功于互联网的功劳,由于我编程基础比较薄弱所以我选择了后端相对简单的JAVA语言加上我比较擅长的数据库操作来实现这次的毕业设计,主要从腾讯课堂、慕课、W3c等编程教学网站吸取经验,通过案例的编程练习来强化自身的编码能力。
(3)这次的网页设计比较的简洁明了,主要是因为前端的知识没有好好的掌握,只掌握了基础的部分,没有的很好的运用到前端的高级技巧,只是由基础的代码组成,虽然页面不太美观,但是由于简洁的设计,也可以让用户很方便的找寻到自己所需要的功能,所以这一步还是需要进一步的完善。
(4)编好代码后,为了不让用户有错误的体验,肯定少不了测试,在测试功能的时候,我们要把自身当成一个用户去体验,而不是当一个制作者的角度去看待,这样才有更好的测试效果。
最后感谢这次的毕业设计,让我能灵活的把课本上的知识结合起来运用,虽然还是有很多不懂的地方,但也提升了我的动手能力,让我对网站的建设有了大致的了解,让我明白了,也许开始的时候我只是个网站设计的小白,但通过不断的学习,不断的努力,我也能入门,世上无难事,只要肯努力,一切皆有可能。
不过这次的网站设计还是有很多不足的地方,例如本网站的功能还有待完善,希望我能在之后的学习生活中不断的完善这一部分,争取早日将其做的更加的完美。
致谢
本系统的实现和本文的撰写都是在指导老师的悉心指导下完成的。指导老师为本系统提供了诸多建议,使本系统得到了完善。
我的每一点提高和进步都离不开指导老师的悉心教诲和鼓励,指导老师总是抽出大量的业余时间对我进行针对性指导,让我的技术逐渐提高。指导老师的每一次鼓励使我从失败中一次又一次站起来,老师的创新精神和对学习的认真态度深深影响到我,让我时时刻刻都严格按照老师的要求对学习做到精益求精,不断深入。
感谢各位老师等对我的生活、学习和研究工作给出的宝贵建议和教导。感谢学院所提供的良好的学习环境和人事氛围。
感谢所有和我一起学习和工作的同学们,在我遇到难题时,是他们给予我鼓励、支持和帮助,和他们一起工作和学习并共同进步是一件非常愉快的事情。
最后向所有曾经给予过我帮助的领导、老师、同事和同学表示最真诚的谢意和最诚挚的祝福!
[1]孙晓平.基于WEBSERVICE网络实验系统的研究[J].长春师范学院学报,2015(10).
[2]高强,秦志刚,张云霞.运用JSP技术设计人力资源管理管理系统[J].常熟高专学报,2014(07).
[3]曹莉,赵文静.基于B/S结构网上选课系统的设计与实现[J].现代电子技术, 2016(03).
[4]张红梅,王磊.在JSP中访问数据库的方法[J].实验科学与技术,2016(08).
[5]靳其兵,李晓波.基于JSP的数据库连接技术的研究[J].计算机仿真 2017(04) .
[6]孙东卫,张冀红,李声利. 数据库访问技术研究[J].现代电子技术.2012,18(5).20-34.
[7]苟凌怡,魏生民.MYSQL中索引的有效选取[J].计算机工程与应用,2019,35(6):70-71.
[8]张树亮, 李超.JSP+MYSQL网络应用系统开发案例精解[M].北京:清华大学出版社,2016.
[9]G.E.Hobona, S.J.Abele, Philip James[J].University of Newcastle upon Tyne, 2016.
[10]张宁,吴捷,杨卓,张涛. 基于MYSQL的脑电数据库的构建[J]. 广西科学院学报 ,2016 22(4):275-278.
[11]王静.国外企业信息化建设的趋势、实践及启示[J].农村经济与科技.2011,22(07):170-171.
[12]宋连友.企业信息化建设中的几个关键问题[J].中国商贸.2011,06.85-86.
[13]Quintero,A.O.Research on application information system integration platform in medicine manufacturing enterprise.[J]. International Journal of the Commons,2016(1):23-40.
[14]百度百科.j2EE.http://baike.baidu.com/view/1507.htm[EB/OL].2012.11.21.
[15]小聪.j2EE的优势.http://www.mailwhy.com/yjfwq/J_M/941.html [EB/OL].2019.3.24.
[16]周观民,刘书伦等.用Java实现多线程程序设计[J].计算机时代,2016(7):61-63 .
[17]G.E.Hobona,S.J.Abele,PhilipJames[J].University of Newcastle upon Tyne, 2016.
核心代码展示
/**
* 登录相关
*/
@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的网上购物商城销售系统
⬇️文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)⬇️
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡