基于Java的宿舍信息管理系统的设计与实现_第1页
基于Java的宿舍信息管理系统的设计与实现_第2页
基于Java的宿舍信息管理系统的设计与实现_第3页
基于Java的宿舍信息管理系统的设计与实现_第4页
基于Java的宿舍信息管理系统的设计与实现_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[19]中就提出了一种高校宿舍微信管理方案,充分利用互联网的整合功能,构建数字化校园,加强学生、老师和宿舍管理人员之间的联系,有效的提高了宿舍管理水平。综上所述,大部分的高校的宿舍管理水平仍是比较落后的,所以急需一套合适的宿舍信息管理系统来满足学校发展的需要,因此本文基于Java对宿舍信息管理系统进行设计,在一定程度上能够较好的解决这一问题。1.4论文组织架构本文的结构安排如下:第一章:绪论。此部分主要介绍了文章的整体框架结构,提出所要研究的目的和意义。在充分分析研究背景和结合国内外研究现状之后,制定了本次系统方案和预期目标。第二章:相关理论和技术。这一部分主要介绍了Java编程语言的广阔应用范围和使用前景,此外也重点介绍了MySQL数据库和SpingBoot框架的优点和强大功能。第三章:系统分析。这一部分主要是对宿舍信息管理系统进行一系列的功能分析,确保其在技术,经济,操作和法律方面具有可行性以及探索了本系统的功能需求和非功能需求分析方面的情况。第四章:系统设计。这一部分对系统设计进行了全面的叙述,对功能模块儿设计和数据库设计方面有了充分的了解。第五章:系统实现。此部分主要介绍了系统实现所要完成的一系列步骤。第六章:系统测试。这一部分对宿舍管理信息系统进行了全面的功能测试,采取的用例也是比较有代表性的,因此得到的结果比较可靠。第2章相关理论和技术2.1Java简介1995年SunMicrosystem公司推出了Java高级计算机编程语言,一经推出Java语言就获得了广大社会人士的一致好评,因为它具有跨平台性、安全系数高以及一次编码就可以在所有支持Java语言的系统上使用等优点。随着网络技术的突飞猛进Java语言也在不断更新与升级,表现出其强大的生命力和广泛的应用前景。Java语言与之前的其他编程语言相比,比如c++语言等具有鲜明的特点和无可比拟的优势。Java语言相对比较容易,语句之间的逻辑性较为明确,可以避免人们陷入概念混乱。此外,Java语言吸引人们趋之若鹜的最重要一个原因在于它不需要考虑内存的问题,这大大节省了计算机的储存不足的弊端。Java主要有两个组成部分:JRE(JavaRuntimeEnvironment)和JDK(JavaDevelopmentKit)。是两个不同的编程语言系统,它们之间有着许多不同之处。Java应用程序的运行离不开JRE,而JDK则为Java开发提供了必要的工具和库,以确保其正常运行。在我们日常进行软件和程序开发的过程当中,Java语言提供了非常巨大的便利性。我们无需进行任何繁琐的操作,这样做不仅节省了代码量,而且提高了程序的效率。如在Java语言一直处于蓬勃发展的状态,不仅可以用它来进行各种程序的开发工作,还可以用它来进行软件的维护,因此Java语言对于信息化社会的发展功不可没。2.2MySQL特点 1、功能强大不同的数据库适用的范围不同,所具有的功能也不尽相同,MySQL数据库作为一种操作型数据库,具有非常强大的引擎能力,它可以以每天超过数亿的访问量来进行搜索。2、支持跨平台MySQL数据库的一个显著特点就是它可以支持在多种开发平台上兼容。我们编写完程序代码,只需要将其移植到不同的平台上面即可,不需要进行其他复杂的操作,这大大节省了开发者的时间,提高了其工作效率。3、运行速度快运行速度的快慢通常是评价一个数据库的基本标准之一,而MySQL数据库具有高速的运行速度,原因在于其使用了单扫描多连接的方式以及经过优化完成的类库实现。4、支持面向对象在纯粹面向对象编程方式下,开发者使用PHP的面向对象特性进行开发,如类、对象、继承、多态等。实现的程序结构清晰、模块化,使得开发更加高效、灵活,同时也利于维护和升级。5、安全性高MySQL数据库具有完备的密码系统和限制管理系统,而且在进行数据传输的时候,所有的信息都是经过加密处理,因而其安全性系数非常高。6、成本低成本低主要表现在MySQL数据库是免费的,人们可以在各大搜索引擎上直接进行浏览或者下载使用。7、支持各种开发语言MySQL数据库是其他开发语言的孕育地,几乎所有的编程语言都能得到MySQL数据库的支持,所以其兼容性非常的高。8、数据库存储容量大MySQL数据库存储容量非常大,主要原因在于其InnoDB储存引擎是大型数据库,它的表空间最大容量为64TB,因此对于各种数据的处理“信手拈来”。9、支持强大的内置函数MySQL数据库不仅支持大量的拓展库,而且还支持各种内置函数,这为外部的开发提供了非常大的助力。2.3SpringBoot介绍SpringBoot是一个开源的JAVA框架,具有非常强大的应用性和便利性。SpringBoot的框架是在之前的spring4.0框架的基础上进行不断的开发与升级所生成的,它具有开发效率高、强大的自动化配置功能以及稳定性可靠等显著优势。这对于程序开发者来说,大大简化了其操作步骤,工作效率也会随之得到莫大的提高。Spring框架在Java编程语言的使用过程中具有举足轻重的作用,它得到了程序人员的大力肯定,原因就在于它具有对编程模型没有限制的这一巨大优点。除此之外,spring框架还具有其它的一些优势,比如它可以帮助开发者整合多种技术管理数据的访问,为web框架的开发“披荆斩棘”;还可以通过控制反转这一特性完成对程序开发的维护;还可以帮助开发者获得容器管理对象的相关配置情况等。第3章系统分析3.1可行性分析3.1.1技术可行性技术可行性通常来讲就是指在进行一次项目的开发或系统的设计时,所采取的技术是否能够满足项目或系统的持续性发展。本论文基于Java的宿舍信息管理系统是利用Java语言进行编写,基于SpringBoot框架,使用Vue技术,使用MySQL数据库以及Navicat工具,搭配IDEA服务器和Tomcat完成对此次宿舍管理系统的设计和完成。而且这些工具经过测试都具有可行性,能够很好的完成此次的系统开发工作。3.1.2经济可行性经济可行性是指财务预算能够满足此次项目或系统开发的需求,而且对于每一笔的财务支出都要进行明确的记录,方便之后的财务核对。基于Java的宿舍信息管理系统具有非常好的应用前景,潜在的经济效益巨大,客户群体数量多,因此此次开发在经济上具有一定的可行性。3.1.3操作可行性实施开发的宿舍信息管理系统具有非常友好的管理者界面,整个系统的操作方式非常简便,使用人员只需要进行简单的数据输入,并可以获得相应的信息,这大大提高了学校对宿舍管理的效率。而且本系统在隐私方面也进行了权限管理,不仅能规定使用者人群,而且也保护了学校的相关数据信息,所以本系统的开发具有操作可行性。3.1.4法律可行性此次系统开发在法律层次上也具有一定的可行性,主要从以下几个方面进行分析:1.本系统开发过程中所使用的相关文献资料都是公开的,而且使用前已取得相应的使用权,具有合法性。2.本系统开发过程中不存在核心技术的牵涉问题。3.本系统的开发是由本人亲自完成的,不涉及第三方人员的参与,因此不存在相应的法律责任问题。3.2需求分析通过对系统进行需求分析,能够更好的了解使用者的需求变化,进而及时的对系统进行功能升级,让系统始终保持与使用者在同一维度。而且通过对系统的需求分析,能够不断对系统进行调整和改进,及时发现存在的问题。一方面,这不仅仅能够降低因为后续系统升级所需花费的大量成本,另一方面,这能更好的为系统使用者提供优质的服务。3.2.1功能需求分析本文设计的基于Java的宿舍信息管理系统不仅具有一些基本的功能,比如学校宿舍通知、更换宿舍申请等,还增加了一些其他的功能如学生在线缴费等。管理员端也能够通过使用该宿舍信息管理系统,更好的对考勤管理、费用管理等进行整体把控,提高管理效率,加强服务水平。3.2.2非功能需求分析宿舍管理系统的非功能需求也非常重要,不容小觑。在保障系统功能需求的前提下,应该对非功能需求进行必要的分析,本文主要从可靠性,稳定性,可扩展性和易于维护性四个方面进行展开讨论:(1)可靠性:整个系统的运行具有权限限制,用户需要进行身份确认之后,才能在系统中进行数据的输入、输出等操作,因此本系统具有一定的可靠性和安全性。(2)稳定性:大量数据的长时间堆积,发展下去可能会导致系统运行不畅,性能降低,因此保障系统运行的稳定性非常重要,这能够为其他功能的发展奠定良好的基础。(3)可扩展性:一个良好的系统不仅能够满足当前领域使用者的需求,而且能够根据市场的变化进行及时的调整,满足其他客户群体的需求。(4)易于维护性:系统的参数应该正确简明标记,方便后期管理人员进行维护。第4章系统设计4.1功能模块设计通过对学生宿舍信息管理系统的分析,本文将其功能划分为如下图4-1所示的几个基本功能模块图4-1系统功能模块图系统的业务流程图如图4-2所示:图4-2系统业务流程图4.2数据库概念设计1.管理员实体图图4-3管理员实体图1.1管理员用例图图4-4管理员用例图2.用户实体图图4-5用户实体图2.1用户用例图图4-6用户用例图系统E-R图图4-7系统E-R图4.3数据库逻辑设计在进行数据库逻辑设计时,首要任务是对系统数据存储结构进行精选;其次,要确定数据之间的关系和数据类型。在第二个阶段,我们需要明确系统数据在数据库中的访问方式,以确保其安全性和可靠性;在第四个阶段,需要对数据库信息的处理和维护方法。在第三个阶段,需进行数据储存位置的挑选;第四个阶段就是要确定好系统数据之间的关系。第四个步骤涉及构建一个系统数据表,并将其储存于系统数据库之中。在最终的阶段,我们需要确定系统数据在本数据库中的最终存储位置。数据库设计的主要内容是对数据库当中数据的保存和呈现,以及发现数据在储存过程当中存在的一些问题。数据库设计的主要任务就是访问数据,这些访问数据通常是建立在数据库之上。访问结构不同导致的存储结构也不同,主要有索引表和顺序表两种结构。(1)管理员表users“管理员表users”显而易见,就是指反映管理者信息的使用情况。users的结构如表4.1所示。表4-1管理员表字段名称类型长度字段说明主键默认值idbigint主键主键usernamevarchar100用户名passwordvarchar100密码rolevarchar100角色管理员addtimetimestamp新增时间CURRENT_TIMESTAMP(2)token表“token表”是用来记录用户token的信息。token的结构如表4-2所示。表4-2token表字段名称类型长度字段说明主键默认值idbigint主键主键useridbigint用户idusernamevarchar100用户名tablenamevarchar100表名rolevarchar100角色tokenvarchar200密码addtimetimestamp新增时间CURRENT_TIMESTAMPexpiratedtimetimestamp过期时间CURRENT_TIMESTAMP(3)宿舍信息表sushexinxi“宿舍信息表sushexinxi”是用来记录宿舍信息信息。sushexinxi的结构如表4-3所示。表4-3宿舍信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPloudongdanyuanvarchar200楼栋单元sushemingchengvarchar200宿舍名称sushedidianvarchar200宿舍地点sushehaovarchar200宿舍号chuangweiint床位(4)用户表yonghu“用户表yonghu”是用来记录用户的信息。yonghu的结构如表4-4所示。表4-4用户表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPyonghuzhanghaovarchar200用户账号mimavarchar200密码yonghuxingmingvarchar200用户姓名xingbievarchar200性别lianxifangshivarchar200联系方式touxianglongtext4294967295头像(5)楼栋信息表loudongxinxi“楼栋信息表loudongxinxi”是用来记录楼栋的信息。loudongxinxi的结构如表4-5所示。表4-5楼栋信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPloudongdanyuanvarchar200楼栋单元loudongmingchengvarchar200楼栋名称xiangguantupianlongtext4294967295相关图片zongcengshuint总层数zhandimianjifloat占地面积/平方jianjielongtext4294967295简介huanjingsheshilongtext4294967295环境设施(6)考勤信息表kaoqinxinxi“考勤信息表kaoqinxinxi”是针对高校学生出勤情况所设立的。kaoqinxinxii的结构如表4-6所示。表4-6考勤信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPkaoqinbianhaovarchar200考勤编号loudongdanyuanvarchar200楼栋单元sushemingchengvarchar200宿舍名称sushedidianvarchar200宿舍地点sushehaovarchar200宿舍号xuehaovarchar200学号xingmingvarchar200姓名kaoqinshijiandatetime考勤时间kaoqinbeizhuvarchar200考勤备注kaoqinleixingvarchar200考勤类型(7)公告信息表gonggaoxinxi“公告信息表gonggaoxinxi”是用来通知公告的信息。gonggaoxinxi的结构如表4-7所示。表4-7公告信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPgonggaobiaotivarchar200公告标题gonggaofengmianlongtext4294967295公告封面gonggaojianjielongtext4294967295公告简介gonggaoneironglongtext4294967295公告内容faburiqidate发布日期字段名称类型长度字段说明主键默认值(8)费用信息表feiyongxinxi“费用信息表feiyongxinxi”是用来记录学生缴费的信息。feiyongxinxi的结构如表4-8所示。表4-8费用信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPloudongdanyuanvarchar200楼栋单元sushemingchengvarchar200宿舍名称sushedidianvarchar200宿舍地点sushehaovarchar200宿舍号xuehaovarchar200学号xingmingvarchar200姓名feiyongmingchegvarchar200费用名称feiyongleixingvarchar200费用类型feiyongjinefloat费用金额feiyongbeizhulongtext4294967295费用备注dengjiriqidate登记日期peijianjieshaolongtext4294967295配件介绍(9)学生表xuesheng“学生表xuesheng”是用来记录学生的信息。xuesheng的结构如表4-9所示。表4-9学生表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPxuehaovarchar200学号mimavarchar200密码xingmingvarchar200姓名xingbievarchar200性别youxiangvarchar200邮箱shoujihaomavarchar200手机号码banjimingchengvarchar200班级名称touxianglongtext4294967295头像(10)安排信息表anpaixinxi“安排信息表anpaixinxi”是用来记录学生住宿安排情况的信息。anpaixinxi的结构如表4-10所示。表4-10安排信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPloudongdanyuanvarchar200楼栋单元sushemingchengvarchar200宿舍名称sushedidianvarchar200宿舍地点sushehaovarchar200宿舍号chuangweivarchar200床位xuehaovarchar200学号xingmingvarchar200姓名anpairiqidate安排日期第5章系统实现5.1实现环境该系统的开发环境为:开发语言:Javaspringboot

框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:ideaMaven包:Maven3.3.9浏览器:谷歌浏览器5.2登录注册对于新用户而言,需要通过点击登录/注册来完成一系列的信息填写,比如用户账号、用户密码、电子邮箱、兴趣爱好等个人信息,新用户的注册界面如图5-1所示。新用户在系统完成注册之后,会自动跳转到登录界面,这时候输入自己的账户和密码,点击“登录”即可进入系统。如果用户输入的账号或者密码有错误,那么系统会提示账号或者密码有错误,用户需要重新检查自己的账户和密码。管理人员的登录方式与其他用户基本相同,只是需要选择“管理员”这一角色,就会进入到后台管理界面。如果管理员输入的用户名或密码有错误,系统同样会提示账号或者密码有错误,重新检查自己的账户和密码,再次正确输入账号密码。图5-1用户注册界面图5-2用户登录界面图5-3后台登录界面用户点击注册,若所填信息符合系统的设置,系统就会提示注册成功,并跳转到登录界面。注册不成功,系统同样会进行相应的提示。用户注册成功界面如图5-4所示。图5-4用户注册成功界面一旦用户进入登录界面,系统会自动提供登录成功的提示信息,并自动跳转到系统首页界面。如果用户输入的用户名与密码不匹配或不存在,则系统会提示密码错误,而不会跳转到系统首页。图5-5所呈现的是用户成功登录的用户界面。图5-5用户登录成功界面实现该功能的关键代码如下:@IgnoreAuth @PostMapping(value="/login") publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){ UsersEntityuser=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",username)); if(user==null||!user.getPassword().equals(password)){ returnR.error("账号或密码不正确"); } Stringtoken=tokenService.generateToken(user.getId(),username,"users",user.getRole()); returnR.ok().put("token",token); }5.3学生管理以管理员身份登录到系统中,进入学生管理界面,可以对学生信息进行增删查改和查看详情。学生管理界面如图5-6所示:图5-6学生管理界面实现该功能的关键代码如下: @IgnoreAuth @RequestMapping(value="/login") publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){ XueshengEntityu=xueshengService.selectOne(newEntityWrapper<XueshengEntity>().eq("xuehao",username)); if(u==null||!u.getMima().equals(password)){ returnR.error("账号或密码不正确"); } Stringtoken=tokenService.generateToken(u.getId(),username,"xuesheng","学生"); returnR.ok().put("token",token); }}5.4楼栋信息管理管理人员进入到系统后,点击“楼栋信息管理”,将会进入楼栋信息管理界面,这里提供全面的宿舍信息查询服务。楼栋信息管理界面如图5-7所示:图5-7楼栋信息管理界面图5-8楼栋信息管理详情界面实现该功能的关键代码如下:@RequestMapping("/save")publicRsave(@RequestBodyLoudongxinxiEntityloudongxinxi,HttpServletRequestrequest){ loudongxinxi.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue()); //ValidatorUtils.validateEntity(loudongxinxi);loudongxinxiService.insert(loudongxinxi);returnR.ok();}5.5宿舍信息管理以管理员身份登录到系统中,进入宿舍信息管理界面,点击宿舍名称进行搜索,就可以跳转到所搜索宿舍信息的详细信息,也可以对宿舍信息进行增删查改和查看详情。宿舍信息管理界面如图5-9所示:图5-9宿舍信息管理界面实现该功能的关键代码如下:@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,SushexinxiEntitysushexinxi, HttpServletRequestrequest){EntityWrapper<SushexinxiEntity>ew=newEntityWrapper<SushexinxiEntity>(); PageUtilspage=sushexinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,sushexinxi),params),params));returnR.ok().put("data",page);}@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,SushexinxiEntitysushexinxi, HttpServletRequestrequest){EntityWrapper<SushexinxiEntity>ew=newEntityWrapper<SushexinxiEntity>(); PageUtilspage=sushexinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,sushexinxi),params),params));returnR.ok().put("data",page);}5.6安排信息管理管理人员登录到系统之后,点击安排信息管理按钮,即可进入安排信息管理界面,在这个界面可以对宿舍安排信息进行查看和安排等操作。安排信息管理界面如图5-10所示:图5-10安排信息管理界面实现该功能的关键代码如下:@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,AnpaixinxiEntityanpaixinxi, HttpServletRequestrequest){ StringtableName=request.getSession().getAttribute("tableName").toString(); if(tableName.equals("xuesheng")){ anpaixinxi.setXuehao((String)request.getSession().getAttribute("username")); }EntityWrapper<AnpaixinxiEntity>ew=newEntityWrapper<AnpaixinxiEntity>(); PageUtilspage=anpaixinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,anpaixinxi),params),params));returnR.ok().put("data",page);}5.7费用信息管理以管理员身份登录到系统中,进入费用信息管理界面,点击宿舍名称进行搜索,就可以跳转到所搜索宿舍的详细信息同时会显示宿舍住宿所需要缴纳的费用介绍,费用为当月的水电费,均匀分配到相应宿舍中的学生身上。并可以对费用信息进行增删改查和查看详情。费用信息管理界面如图5-11所示:图5-11费用信息管理界面实现该功能的关键代码如下:@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,FeiyongxinxiEntityfeiyongxinxi, HttpServletRequestrequest){ StringtableName=request.getSession().getAttribute("tableName").toString(); if(tableName.equals("xuesheng")){ feiyongxinxi.setXuehao((String)request.getSession().getAttribute("username")); }EntityWrapper<FeiyongxinxiEntity>ew=newEntityWrapper<FeiyongxinxiEntity>(); PageUtilspage=feiyongxinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,feiyongxinxi),params),params));returnR.ok().put("data",page);}5.8公告信息管理以管理员身份登录到系统中,进入公告信息管理界面,点击公告标题搜索,就可以跳转到所搜索公告的详细信息,也可以对公告信息进行增删查改和查看详情。公告信息管理界面如图5-12所示,公告信息详情界面如图5-13所示。图5-12公告信息管理界面图5-13公告信息详情界面实现该功能的关键代码如下:@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,GonggaoxinxiEntitygonggaoxinxi,HttpServletRequestrequest){EntityWrapper<GonggaoxinxiEntity>ew=newEntityWrapper<GonggaoxinxiEntity>() PageUtilspage=gonggaoxinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,gonggaoxinxi),params),params));returnR.ok().put("data",page);}5.9考勤信息管理管理人员登录到后台系统后,点击考勤信息管理按钮后,就会进入考勤信息管理列表界面,根据提示输入信息,就可以找到该同学的考勤信息,此外还可以进行考勤信息的修改、删除等操作。考勤信息管理界面如下图5-14所示:图5-14考勤信息管理界面实现该功能的关键代码如下:RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,KaoqinxinxiEntitykaoqinxinxi, HttpServletRequestrequest){ StringtableName=request.getSession().getAttribute("tableName").toString(); if(tableName.equals("xuesheng")){ kaoqinxinxi.setXuehao((String)request.getSession().getAttribute("username")); }EntityWrapper<KaoqinxinxiEntity>ew=newEntityWrapper<KaoqinxinxiEntity>();PageUtilspage=kaoqinxinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,kaoqinxinxi),params),params));returnR.ok().put("data",page);}5.10更换申请管理管理员登录到系统后后可以对用户发送的更换宿舍的申请信息进行审核,更换申请管理界面如图5-15所示:图5-15更换申请管理界面关键代码如下所示:publicRsave(@RequestBodyGenhuanshenqingEntitygenhuanshenqing,HttpServletRequestrequest){ genhuanshenqing.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue()); //ValidatorUtils.validateEntity(genhuanshenqing);genhuanshenqingService.insert(genhuanshenqing);returnR.ok();}第6章系统测试一个开发完成的系统在进行正式使用前,往往都需要对其各功能板块进行全面的性能测试。该方法不仅能够及时发现系统运行中的相关问题,而且能够在一定程度上提升系统的稳定性和持久性,从而为系统的稳定运行提供了有力的保障。黑盒测试是一项广泛应用的测试技术,其核心在于从用户的角度出发,对系统的各项功能进行全面的检测和评估,并将检测结果与预期结果进行对比分析,发现存在的问题并进行及时的更正。一般来说,输入或输出值的边界发生错误的可能性比较高,因此采用边界值分析方式来进行黑盒测试是一种可靠性较高的方法。6.1测试步骤系统的功能测试需要经过严谨的分布实施,每一步都有每一步的逻辑性,不可以随意更改测试步骤。一般来说,测试一款软件程序的基本流程包括多个步骤:1.进行系统的测试能够快速地找出编码和设计方面的错误。2.再一次进行程序测试,并且找到当中出现的错误。3.对出现的错误进行方案规划6.2测试用例为了满足用户的需求,我们采用了黑盒测试技术来设计用户端测试用例。6.2.1登录测试用例登录测试用例如表6-1所示。表6-1登录测试用例表测试编号测试目的操作步骤预期结果实际结果001登录测试输入正确的用户名和密码登录成功登录成功002登录测试输入错误的用户名登录失败登录失败003登录测试输入错误的的密码登录失败登录失败6.2.2学生管理测试用例学生管理测试用例如表6-2所示。表6-2学生管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加学生信息测试在添加页面输入学生信息,点击确认按钮添加成功添加成功002修改学生信息测试在修改页面修改学生信息,点击确认按钮修改成功修改成功003删除学生信息测试在管理学生信息页面,点击某一学生的删除按钮删除成功删除成功004查询学生信息测试在管理学生信息页面查询输入框输入要查询的学号和名字,点击查询按钮查询成功查询成功6.2.3楼栋信息管理测试用例楼栋信息管理测试如表6-3所示。表6-3楼栋信息管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加楼栋信息测试在添加页面输入楼栋信息,点击确认按钮添加成功添加成功002修改楼栋信息测试在修改页面修改楼栋信息,点击确认按钮修改成功修改成功003删除楼栋信息测试在管理楼栋信息页面,点击某一楼栋的删除按钮删除成功删除成功004查询楼栋信息测试在管理楼栋信息页面查询输入框输入要查询的学号和名字,点击查询按钮查询成功查询成功6.2.4宿舍信息管理测试用例宿舍信息管理测试用例如表6-4所示。表6-4宿舍信息管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加宿舍信息测试在添加页面输入宿舍信息,点击确认按钮添加成功添加成功002修改宿舍信息测试在修改页面修改宿舍信息,点击确认按钮修改成功修改成功003删除宿舍信息测试在管理宿舍信息页面,点击某一宿舍的删除按钮删除成功删除成功004查询宿舍信息测试在管理宿舍信息页面查询输入框输入要查询的学号和名字,点击查询按钮查询成功查询成功6.2.5安排信息管理测试用例安排信息管理测试用例如表6-5所示。表6-5安排信息管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加安排信息测试在添加页面输入安排信息,点击确认按钮添加成功添加成功002修改安排信息测试在修改页面修改安排信息,点击确认按钮修改成功修改成功003删除安排信息测试在管理安排信息页面,点击某一安排的删除按钮删除成功删除成功004查询安排信息测试在管理安排信息页面查询输入框输入要查询的学号和名字,点击查询按钮查询成功查询成功6.2.6更换申请管理测试用例更换申请管理测试用例如表6-6所示。表6-6更换申请管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加更换申请测试在添加页面输入更换申请,点击确认按钮添加成功添加成功002修改更换申请测试在修改页面修改更换申请,点击确认按钮修改成功修改成功003删除更换申请测试在管理更换申请页面,点击某一安排的删除按钮删除成功删除成功004查询更换申请测试在管理更换申请页面查询输入框输入要查询的学号和名字,点击查询按钮查询成功查询成功6.2.7费用信息管理测试用例费用信息管理测试用例如表6-7所示。表6-7费用信息管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加费用信息测试在添加页面输入费用信息,点击确认按钮添加成功添加成功002修改费用信息测试在修改页面修改费用信息,点击确认按钮修改成功修改成功003删除费用信息测试在管理费用信息页面,点击某一安排的删除按钮删除成功删除成功004查询费用信息测试在管理费用信息页面查询输入框输入要查询的学号和名字,点击查询按钮查询成功查询成功6.2.8考勤信息管理测试用例考勤信息管理测试用例如表6-8所示。表6-8考勤信息管理测试用例表测试编号测试目的操作步骤预期结果实际结果001添加考勤信息测试在添加页面输入考勤信息,点击确认按钮添加成功添加成功002修改考勤信息测试在修改页面修改考勤信息,点击确认按钮修改成功修改成功003删除考勤信息测试在管理考勤信息页面,点击某一安排的删除按钮删除成功删除成功004查询考勤信息测试在管理考勤信息页面查询输入框输入要查询的学号和名字,点击查询按钮查询成功查询成功6.3测试结论本文通过测试用例对学生宿舍信息管理系统进行了重要功能检测,发现本系统能够在检测过程中将信息很好的传递给使用者,使用者也能够较为快速的了解其所传达的意思,因此本系统基本上达到了设计的预期效果。结论首先,本论文对研究对象的现实意义和现状进行了充分的调查分析;其次,重点介绍了本系统所应用的技术和使用的原理,这是此次系统开发的关键部分;接下来,对于本系统进行了一系列的可行性分析,得出了较为可靠的结果;然后,用大量的图表和文字介绍了数据库的分析与使用,进行了详细的功能介绍。本次基于Java的宿舍信息管理系统的开发的每一个环节都做到了尽职调查、功能测试、效果分析以及不断调整,因此才能保证本系统在正常使用时具有一定的可靠性和稳定性。一个系统的开发和使用是要经过不断锤炼和改进的,因此我也深刻的认识到本次研究仍有许多不足之处,比如在界面优化方面还需要继续提高,数据库储存方面需要不断改进等等。因此,在接下来的学习与工作中,我将会继续完善这一系统,争取实现其在高校的实践性应用。参考文献卢桂珍.高校学生宿舍管理系统的分析与设计[M].电子测试,2019.孙妃,李可心,刘楠,王晓兰,孔荣荣,王慧.学生宿舍管理系统的设计与实现[J].江苏科技信息,2021.赵云霁,赵云霖.智能化学生宿舍管理系统的设计与实现[M].中国电子商务,2019.王慧敏.基于web的高职院校学生宿舍管理系统的设计与实现[M].内蒙古科学与经济,2020.王锋,金晶.高校学生宿舍水电表管理系统设计与实现[J].智能计算机与应用,2020.罗旭.基于B/S架构的学生宿舍管理系统的设计与开发研究[J].魅力中国,2019.梁利亭.基于ASP.NET的学生宿舍管理系统的设计与实现[J].科技信息,2020.蒋晟,陈科.基于SpringBoot的学生宿舍管理系统的设计与实现[J].现代信息科技,2021.黄敏.基于B/S架构的学生宿舍管理系统数据库设计与实践[J].电脑知识与技术,2019.贾树刚.学生宿舍管理系统的设计与实现[J].辽宁师专学报(自然科学版),2019.杨菊梅.校园学生宿舍管理系统的设计与实现[D].山东大学,2019.朱金坛.高职学院学生宿舍管理系统设计与实现[J].电子设计工程,2019.马海英.四川化工职业技术学院学生宿舍管理系统的设计与实现[D].电子科技大学,2019.郭妍皎.高校公寓管理系统的设计与实现[D].湖南大学,2019.陈惠芬.高校学生宿舍服务平台设计与实现[D].华侨大学,2018.高平.计算机信息技术在高校宿舍管理中的应用[J].信息与电脑(理论版),2017(23):22-23.JafrudinandPutraYeffryHandoko.InnovationDevelopmentofWeb-BasedDormitoryInformationSystematBoardingSchoolSMATerpaduKridaNusantara[J].IOPConferenceSeries:MaterialsScienceandEngineering,2020.PaulFrijters,AsadIslam,DebayanPakrashiHeterogeneityinpeereffectsinrandomdormitoryassignmentinadevelopingcountry[J].JournalofEconomicBehaviorandOrganization,2019,163.SHAHMQ.ResponsivewebdevelopmentusingtheTwitterBootstrapframework[J].publications.theseus.fi,2015.Jae-HyukJang,Gab-SigSim.TheDevelopmentofaDormitoryManagementSystemUsingtheUbiquitousandAutomationTechnology[J].JournaloftheKoreaSocietyofComputerandInformation,2019,14(2).附录packagecom.controller;importjava.util.Arrays;importjava.util.Calendar;importjava.util.Date;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.bind.annotation.RestController;importcom.annotation.IgnoreAuth;importcom.baomidou.mybatisplus.mapper.EntityWrapper;importcom.entity.TokenEntity;importcom.entity.UsersEntity;importcom.service.TokenService;importcom.service.UsersService;importcom.utils.CommonUtil;importcom.utils.MPUtil;importcom.utils.PageUtils;importcom.utils.R;importcom.utils.ValidatorUtils;/***登录相关*/@RequestMapping("users")@RestControllerpublicclassUsersController{ @Autowired privateUsersServiceuserService; @Autowired privateTokenServicetokenService; /** *登录 */ @IgnoreAuth @PostMapping(value="/login") publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){ UsersEntityuser=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",username)); if(user==null||!user.getPassword().equals(password)){ returnR.error("账号或密码不正确"); } AStringtoken=tokenService.generateToken(user.getId(),username,"users",user.getRole()); returnR.ok().put("token",token)isused; } /** *注册 */ @IgnoreAuth @PostMapping(value="/register") publicRregister(@RequestBodyUsersEntityuser){// ValidatorUtils.validateEntity(user); if(userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",user.getUsername()))!=null){ returnR.error("用户已存在"); }userService.insert(user);returnR.ok();} /** *退出 */ @GetMapping(value="logout") publicRlogout(HttpServletRequestrequest){ request.getSession().invalidate(); returnR.ok("退出成功"); } /***密码重置*/@IgnoreAuth @RequestMapping(value="/resetPass")publicRresetPass(Stringusername,HttpServletRequestrequest){ UsersEntityuser=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",username)); if(user==null){ returnR.error("账号不存在"); } user.setPassword("123456");userService.update(user,null);returnR.ok("密码已重置为:123456");} /***列表*/@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,UsersEntityuser){EntityWrapper<UsersEntity>ew=newEntityWrapper<UsersEntity>(); PageUtilspage=userService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.allLike(ew,user),params),params));returnR.ok().put("data",page);} /***列表*/@RequestMapping("/list")publicRlist(UsersEntityuser){ EntityWrapper<UsersEntity>ew=newEntityWrapper<UsersEntity>(); ew.allEq(MPUtil.allEQMapPre(user,"user"));returnR.ok().put("data",userService.selectListView(ew));}/***信息*/@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Stringid){UsersEntityuser=userService.selectById(id);returnR.ok().put("data",user);}/***获取用户的session用户信息*/@RequestMapping("/session")publicRgetCurrUser(HttpServletRequestrequest){ Longid=(Long)request.getSession().getAttribute("userId");UsersEntityuser=userService.selectById(id);returnR.ok().put("data",user);}/***保存*/@PostMapping("/save")publicRsave(@RequestBodyUsersEntityuser){// ValidatorUtils.validateEntity(user); if(userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",user.getUsername()))!=null){ returnR.error("用户已存在"); }userService.insert(user);returnR.ok();}/***修改*/@RequestMapping("/update")publicRupdate(@RequestBodyUsersEntityuser){//ValidatorUtils.validateEntity(user); UsersEntityu=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",user.getUsername())); if(u!=null&&u.getId()!=user.getId()&&u.getUsername().equals(user.getUsername())){ returnR.error("用户名已存在。"); }userService.updateById(user);//全部更新returnR.ok();}/***删除*/@RequestMapping("/delete")publicRdelete(@RequestBodyLong[]ids){userService.deleteBatchIds(Arrays.asList(ids));returnR.ok();}}/***学生*后端接口*@author*@email*@date2023-02-1808:58:15*/@RestController@RequestMapping("/xuesheng")publicclassXueshengController{@AutowiredprivateXueshengServicexueshengService; @Autowired privateTokenServicetokenService; /** *登录 */ @IgnoreAuth @RequestMapping(value="/login") publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){ XueshengEntityu=xueshengService.selectOne(newEntityWrapper<XueshengEntity>().eq("xuehao",username)); if(u==null||!u.getMima().equals(password)){ returnR.error("账号或密码不正确"); } Stringtoken=tokenService.generateToken(u.getId(),username,"xuesheng","学生"); returnR.ok().put("token",token); } /***注册*/ @IgnoreAuth@RequestMapping("/register")publicRregister(@RequestBodyXueshengEntityxuesheng){ //ValidatorUtils.validateEntity(xuesheng); XueshengEntityu=xueshengService.selectOne(newEntityWrapper<XueshengEntity>().eq("xuehao",xuesheng.getXuehao())); if(u!=null){ returnR.error("注册用户已存在"); } LonguId=newDate().getTime(); xuesheng.setId(uId);xueshengService.insert(xuesheng);returnR.ok();} /** *退出 */ @RequestMapping("/logout") publicRlogout(HttpServletRequestrequest){ request.getSession().invalidate(); returnR.ok("退出成功"); } /***获取用户的session用户信息*/@RequestMapping("/session")publicRgetCurrUser(HttpServletRequestrequest){ Longid=(Long)request.getSession().getAttribute("userId");XueshengEntityu=xueshengService.selectById(id);returnR.ok().put("data",u);}/***密码重置*/@IgnoreAuth @RequestMapping(value="/resetPass")publicRresetPass(Stringusername,HttpServletRequestrequest){ XueshengEntityu=xueshengService.selectOne(newEntityWrapper<XueshengEntity>().eq("xuehao",username)); if(u==null){ returnR.error("账号不存在"); } u.setMima("123456");xueshengService.updateById(u);returnR.ok("密码已重置为:123456");}/***后端列表*/@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,XueshengEntityxuesheng, HttpServletRequestrequest){EntityWrapper<XueshengEntity>ew=newEntityWrapper<XueshengEntity>(); PageUtilspage=xueshengService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,xuesheng),params),params));returnR.ok().put("data",page);}/***前端列表*/ @IgnoreAuth@RequestMapping("/list")publicRlist(@RequestParamMap<String,Object>params,XueshengEntityxuesheng, HttpServletRequestrequest){EntityWrapper<XueshengEntity>ew=newEntityWrapper<XueshengEntity>(); PageUtilspage=xueshengService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,xuesheng),params),params));returnR.ok().put("data",page);} /***列表*/@RequestMapping("/lists")publicRlist(XueshengEntityxuesheng){ EntityWrapper<XueshengEntity>ew=newEntityWrapper<XueshengEntity>(); ew.allEq(MPUtil.allEQMapPre(xuesheng,"xuesheng"));returnR.ok().put("data",xueshengService.selectListView(ew));} /***查询*/@RequestMapping("/query")publicRquery(XueshengEntityxuesheng){EntityWrapper<XueshengEntity>ew=newEntityWrapper<XueshengEntity>(); ew.allEq(MPUtil.allEQMapPre(xuesheng,"xuesheng")); XueshengViewxueshengView=xueshengService.selectView(ew); returnR.ok("查询学生成功").put("data",xueshengView);} /***后端详情*/@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Longid){XueshengEntityxuesheng=xueshengService.selectById(id);returnR.ok().put("data",xuesheng);}/***前端详情*/ @IgnoreAuth@RequestMapping("/detail/{id}")publicRdetail(@PathVariable("id")Longid){XueshengEntityxuesheng=xueshengService.selectById(id);returnR.ok().put("data",xuesheng);}/***后端保存*/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论