版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要PAGEISpringBoot框架的“仓库管理”系统的设计与实现摘要仓库物品的管理是与我们的日常生活息息相关的一个重大问题。随着我国经济飞速的发展,改革开放的不断深入,企业要想在激烈的市场竞争中立于不败之地,要想继续的发展与生存,没有现代化的管理方式与方法是万万不行的,仓库管理的全面信息化、自动化则是在其中占有极其重要的地位。仓库管理信息系统则是在此需求背景下开始研制并开发的。在此篇文章中严格按照软件工程思想,设计并实现了一个仓库信息管理系统。介绍了系统从需求分析,逻辑设计,总体设计,详细设计以及系统测试、实施各阶段的主要内容和成果,包括系统结构图、界面设计等等。关键词:仓库;技术;系统ABSTRACTPAGEITitle:Designandimplementationof"warehousemanagement"systembasedonspringbootframeworkABSTRACTThemanagementofwarehousegoodsisamajorissuecloselyrelatedtoourdailylife.WiththerapiddevelopmentofChina'seconomyandthecontinuousdeepeningofreformandopeningup,ifenterpriseswanttobeinvincibleinthefiercemarketcompetitionandwanttocontinuetodevelopandsurvive,thereisnomodernmanagementmodeandmethod,andthecomprehensiveinformatizationandautomationofwarehousemanagementisofgreatimportance.Thewarehousemanagementinformationsystemisdevelopedunderthebackgroundofthisrequirement.Inthispaper,awarehouseinformationmanagementsystemisdesignedandimplementedinstrictaccordancewiththeideaofsoftwareengineering.Thispaperintroducesthemaincontentsandachievementsofthesysteminthestagesofrequirementanalysis,logicdesign,overalldesign,detaileddesign,systemtestingandimplementation,includingsystemstructurediagram,interfacedesign,etc[1].KEYWORDS:warehouse;technology;system目录PAGE31目录1绪论 11.1课程背景 11.2开发目的 12系统需求分析 32.1需求分析 32.2可行性分析 32.2.1经济性 32.2.2技术性 32.2.3操作性 42.3系统配置需求 43系统总体设计 53.1项目规划 53.2设计目标 53.3系统相关技术介绍 53.3.1系统开发采用的技术方案——B/S模式 53.3.2springboot框架介绍 63.3.3MySQL数据库介绍 63.3.4layui前端框架介绍 63.3.5shiro的介绍 73.4数据库分析设计 73.4.1数据库系统分析 73.4.2数据库概念结构设计 83.4.3数据库逻辑结构设计 93.4.4数据库表的设计和创建 103.5系统模块设计 114系统详细设计和实现 错误!未定义书签。4.1主页面设计 244.2登录设计 244.3商品信息模块 错误!未定义书签。4.4入库模块 错误!未定义书签。4.5出库模块 错误!未定义书签。4.6用户信息模块 错误!未定义书签。4.7公告模块 错误!未定义书签。5系统的测试 245.1测试简述 245.1.1测试的重要性 255.1.2测试的原则 255.2测试方法 255.2.1黑盒测试 255.2.2白盒测试 265.2.3单元测试 265.2.4集成测试 265.3系统模块的测试 265.3.1登录模块测试 265.3.2出库模块测试 286结论与展望 296.1结论 296.2展望 29参考文献 30致谢 31SpringBoot框架的“仓库管理”系统的设计与实现1绪论现如今,计算机技术飞速发展,社会经济也在伴随着不断发展,各行各业也面临着各种各样的挑战与困难。为了能够在这个信息化的时代继续发展下去,就必须紧跟上时代的脚步。在这个计算机技术飞速发展的年代里,智能化的商品存储管理技术也在随着不断地发展。之前的那些古老的仓库管理化的方法已经难以满足现代化发展的需求,因为许多些原因,企业要想在这个现代化的社会中生存下去都必须有一个良好的仓库管理系统。仓库是每个企业都必须谨慎管理的地方,一个企业的最基本是货物,所以一个企业的货物必须得得到很好的保管,在这片竞争激烈的土地上面才能谋得一块生地。本课题正是根据这一理念,开发了一个功能比较完善,基本能满足企业要求的仓库管理系统。1.1课程背景在这个科学技术不断发展的年代里,世界已经变的越来越高科技化越来越智能化,一个智能化的时代已经到来。到现在为止,在我们生活的周围你可以随处见到各种各样的智能化管理的系统。一个企业所拥有的商品是他所生存发展的根本,而仓库是企业用来保存商品的所在。所以说,一个好的仓库对于企业来说占有举足轻重的地位。总而言之,一个成功的企业必定会有一个好的仓库,但是一个好的仓库没有一个合理的管理系统是不完美的。可是一个静态化的简单的仓库管理的系统,可能他没有信息共享的功能,而且还不能够保证货物的正常运转中所遇到的一些问题,还不能保证企业所拥有资源的正常的运转与利用;还有一些传统的仓库管理系统在维护时非常的困难开发起来也是十分复杂,所以在人力物力上有极大的浪费,已经远远的脱离了时代的轨道。因此,一个成功的企业,如果拥有了一个现代化的仓库管理的系统,会大大的提高企业生产的效率,降低使用的成本。1.2开发目的仓库是企业不可或缺的一部分,对于一个成功的企业来说,想要在未来的市场中获得发展得优势,拥有一个完善的仓库管理系统是十分重要的。可是企业中的商品总是在不断地流动的,仓库中的商品也随之不断变化。所以,商品就需要不停的被记录保存。在使用传统的人工记录时存在着各种各样的问题,查询的效率低下,而且保密性不高。因此,对于一个想要不断发展的企业来说,这种人工记录的方式必须淘汰[2]。在现代化科技的不断发展前景之下,智能化的东西已经遍布各地,电脑更是遍布在各个角落。计算机技术的应用对库存信息进行管理与人工管理技术相比较拥有无可比拟的优势,如:添加删除快捷、安全性高、查询便捷等。在以上这些社会与技术的背景之下,我决定开始开发了这个系统。在开发的这个系统能够保证对货物进行正确的出库与入库擦偶哦、库存控制和发货。而且,这个系统比较小维护起来简单,能够节省一定的人力物力,对企业中仓库的管理是百利的。2系统需求分析2.1需求分析在当今这个名副其实的信息时代,计算机的智能化给我们带来了很大的便利,将这便利的技术运用于仓库管理上是必然的趋势,因为有些东西中必被机器取代,这也为仓库管理带来全新的改变,它可以为公司创照意想不到的经济收益,为企业的发展提供无线的潜力。本系统具体有以下功能系统公告:用于发布一些通知给个员工客户管理:管理客户的基本信息,如联系方式等信息供应商管理:管理供应商的基本信息,如银行卡号联系方式等信息商品管理:管理商品的基本信息,如商品名、数量、金额等信息进货管理:记录从供应商那里采购的商品,以及不合格商品的退货情况销售管理:记录客户的购买记录,以及客户要求退货的情况权限管理:不同职位的员工执行不同的功能,其中包含权限和角色的增删改查日志管理:管理登录情况2.2可行性分析2.2.1经济性系统拥有简单的操作界面,而且要求的电脑在配置不高,对于经济方面来讲是大部分人可以接受的。该系统可以实现不同职位执行不同操作的功能,完成一些对应职务的工作,提高工作效率,减少工作时间。2.2.2技术性随着互联网行业的蓬勃发展,IT技术也越来越先进,从以前的JSP+servlet技术到Spring+springMVC+Mybatis,再到如今的SpringBoot,无一不是技术的进步,再采用B/S模式中的MVC模式进行开发,将控制层、实体层和视图层紧密结合在一起,使系统更加完美,大大提升了系统的性能。在这样的环境下,计算机实现这样的功能已不再话下,基于以上的技术在如今比较容易实现。2.2.3操作性该系统操作方便,简单,即使对电脑没什么研究都能得心应手,只要对电脑操作有一定的了解就行。2.3系统配置需求服务器配置:硬件平台:CPU:P41.8GHz以上;内存:256MB以上;软件平台:操作系统:Linux;数据库:mysql;开发工具包:JDKVersion1.8.2;3系统总体设计3.1项目规划基于window操作系统和mysql数据库,建立一个B/S层结构的仓库管理系统,使用SpringBoot框架,实现商品的出库和入库管理。改藏库管理系统分为五个主模块,主要分为信息管理、出库管理、入库管理、权限管理和系统管理,其中信息管理又分为商品管理、客户管理和供应商管理,出库管理分为出库信息管理和客户退货管理,入库管理分为入库信息管理和退货管理,权限管理主要管理用户的角色权限,系统管理又分为公告管理和日志管理。。信息管理:商品、客户和供应商的添加、删除、修改入库管理:从供应商进货的信息的增加、删除、修改,以及退货信息的记录出库管理:顾客购买信息的增加、删除、修改,以及退货信息的管理权限管理:不同用户的登入显示的界面功能不同,给不同的用户分配不同的角色系统管理:公告信息和日志信息的增加、删除、修改3.2设计目标建立一个仓库管理系统,实现电脑代替人工的信息存储,对进入库和出库进行有效的管理,系统管理员拥有系统的全部功能,采购员拥有入库的功能权限,发货员则拥有出库的权限,管理员可以根据不同员工的工作需要来给员工分配不同的功能权限,系统还给管理员分配公告发布的功能(增加、删除),所有员工可以进行查看。该系统能够高效管理系统,能有效的查询和修改出入库信息,并且能做到实时,准确。3.3系统相关技术介绍3.3.1系统开发采用的技术方案——B/S模式B/S结构即浏览器和服务器结构,他是从C/S演变而来的。在这种结构下,用户是通过输入网址进行访问的,只有少部分逻辑是在浏览器进行,而大部分是在服务器中进行,这样就大大减轻了客户端的开销,减轻了系统维护和升级的成本和工作量。他通过用浏览器解决了原本需要专门软件才能实现的强大功能,并且大大减少了开发成本,是一种全新的软件构造技术,深受大家喜欢。。3.3.2SpringBoot框架介绍SpringBoot是所有基于Spring开发的项目的起点。SpringBoot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件。总而言之,springboot并不是一个全新的框架,他里面配置了很多框架,就像maven整合了所有jar包一样[3]。SpringBoot通过少量的代码就能创建一个产品级、独立的的Spring应用。SpringBoot为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。SpringBoot具有以下有点:快速创建独立运行的Spring项目以及与主流框架集成,使用嵌入式的Servlet容器,应用无需打成WAR包starters自动依赖与版本控制大量的自动配置,简化开发,也可修改默认值无需配置XML,无代码生成,开箱即用准生产环境的运行时应用监控与云计算的天然集成3.3.3MySQL数据库的介绍MySql是数据库管理系统,能够有效的管理关系性数据库,并且是开源的,如果有必要,可以对其进行代码修改。MySql相对Oracle和SQLServer有非常大的有优势,他几乎可以运营在所有平台上,而且可靠,可扩展,运行速度还很快[4]。3.3.4layui前端框架介绍layui,是一款采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到API的每一处细节都经过精心雕琢,非常适合界面的快速开发。layui首个版本发布于2016年秋,它区别于那些基于MVVM底层的UI框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,它更多是为服务端程序员量身定做,开发者无需涉足各种前端工具的复杂配置,只需面对浏览器本身,使得开发十分便捷。layui更多是面向于后端开发者,所以在组织形式上毅然采用了几年前的以浏览器为宿主的类AMD模块管理方式,却又并非受限于CommonJS的那些条条框框,它拥有自己的模式,更加轻量和简单。layui定义为“经典模块化”,并非是刻意强调“模块”理念本身,而是有意避开当下JS社区的主流方案,试图以尽可能简单的方式去诠释高效。它的所谓经典,是在于对返璞归真的执念,它以当前浏览器普通认可的方式去组织模块。layui认为这种轻量的组织方式,仍然可以填补WebPack以外的许多场景。所以它坚持采用经典模块化,也正是能让人避开工具的复杂配置,重新回归到原生态的HTML/CSS/JavaScript本身。3.3.5shiro的介绍ApacheShiro是Java的一个安全框架。到现在,使用ApacheShiro的人越来越多,因为它相当简单,对比SpringSecurity,可能没有SpringSecurity做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro的基本功能有:授权、认证、加密、缓存、会话管理和Web集成等[5]。这不就是我们想要的嘛,而且Shiro的API也是非常简单;其基本功能点如图3-1所示:图3-1shiro结构图3.4数据库分析设计3.4.1数据库需求分析仓库管理系统的要求是高效的管理出入库情况,用户可分为几类,分别管理不同功能,商品、客户、供应商这些信息都要靠管理员添加,商品有商品名、供应商、产地、商品规格、包装、生产批号、商品价格、商品描述、价格库存量、预警库存以及商品图片等属性,客户和供应商都包含名称、邮编、地址、电话、联系人、联系人电话、开户行、账号、邮箱和传真等属性,管理员还承担公告添加发布的功能,发布的公告须有内容、标题、发布人和发布时间。除此之外系统还需记录每次登入系统的操作者、IP和时间以保证系统的安全性。当仓库进货和售货时,必须记录商品名称、商品规格、时间、数量和价格等信息并且做好备注和明确操作者,这样保证数据的准确性。为保证系统安全,还需有权限,一个用户拥有多个角色,一个角色拥有多个权限,且要清显示用户时隶属于哪个部门。由此总结出如下需求信息:商品信息:商品名、供应商、产地、商品规格、包装、生产批号、商品价格、商品描述、价格库存量、预警库存、商品图片客户信息:客户名称、邮编、客户地址、客户电话、联系人、联系人电话、开户行、账号、邮箱、传真供应商信息:供应商名称、邮编、供应商地址、供应商电话、联系人、联系人电话、开户行、账号、邮箱、传真公告信息:内容、标题、发布人、发布时间入库信息:供应商、商品名称、商品规格、时间、数量、进货价格、备注、操作者出库信息:客户、商品名称、商品规格、时间、数量、销售价格、备注、操作者日志信息:操作者、ip、时间用户信息:用户姓名、登陆名称、性别、部门名称、直属领导、用户地址、用户备注、入职时间、是否可用、排序码角色信息:角色名称、角色备注、是否可用、创建时间权限信息:菜单ID、权限名称、权限编码、是否可用、排序码3.4.2数据库概念结构设计在层次结构的设计过程当中,E-R模型法是最常见的设计方法。通常情况有以下几种方法方法:自下往上、从上往下、逐步扩张、相互结合,以这种方式为模型然后烦别实现各个结构的模型[6]。在物理结构设计阶段首先分两步走:确定数据库的物理结构,是用来说明数据在数据库中怎么样存储的。选取正确的关系模式存取方法有好多种方法进行选择。概念设计通常是从系统的需求出发,常常将对象使用数据流的形式表达成为完整的抽象实体。而与模块内部的细节无关。E-R图为主要的工具,由E-R图的数据项和数据流及关系可以得出各个实体之间的联系,为后面逻辑结构做出铺垫,这些实体间有自己的具体属性,通过相互作用产生紧密的联系。如图3-2名称名称商品图片数量价格批号规格产地供应商商品名管理入职时间入库出库用户用户名性别地址领导部门名图3-2E-R图3.4.3数据库逻辑结构设计根据以上分析和E-R图,可以建立以下关系模式:商品信息(商品名、供应商、产地、商品规格、包装、生产批号、商品价格、商品描述、价格库存量、预警库存、商品图片)客户信息(客户名称、邮编、客户地址、客户电话、联系人、联系人电话、开户行、账号、邮箱、传真)供应商信息(供应商名称、邮编、供应商地址、供应商电话、联系人、联系人电话、开户行、账号、邮箱、传真)公告信息(内容、标题、发布人、发布时间)入库信息(供应商、商品名称、商品规格、时间、数量、进货价格、备注、操作者)出库信息(客户、商品名称、商品规格、时间、数量、销售价格、备注、操作者)日志信息(操作者、ip、时间)用户信息(用户姓名、登陆名称、性别、部门名称、直属领导、用户地址、用户备注、入职时间、是否可用、排序码)角色信息(角色名称、角色备注、是否可用、创建时间)权限信息(菜单ID、权限名称、权限编码、是否可用、排序码)3.4.4数据库表的设计和创建商品表bus_goods(如图3-3)记录商品详细信息。图3-3bus_goods表客户表bus_customer(如图3-4)记录客户详细信息图3-4bus_customer表供应商表bus_provider(如图3-5)记录供应商详细信息图3-5us_provider表出库表bus_sales(如图3-6)记录商品销售情况,每条记录都有具体明细,且包含操作者图3-6bus_salesr表入库表bus_inport(如图3-7)记录商品进货的信息图3-7bus_salesr表3.5系统模块设计本系统主要包含五个模块,分别为信息管理,出库管理,入库管理,系统管理和权限管理。如图3-8表示系统的模块功图3-8功能模块图4系统详细设计与实现4.1主界面设计该系统采用的是框架结构,页面分为左右两部分,左边部分为导航栏,右边是是显示内容区域,当点击左边导航栏时右边会显示相应的内容,这样即可在同一个页面上实现不同的操作,使得页面的结构比较简单,操作也更加方便[7]。index.html为系统的首页,页面左上角可以显示头像,右上角可以显示用户信息,方便用户查看。不同用户提交不同的用户名和密码,系统会根据用户名查找该用户所拥有的权限,然后根据权限显示具体的首页信息。这种功能的设计采用了shiro权限框架,既能验证用户密码的正确情况,又能管理权限[8]。系统首页有如图4-1图4-1系统首页面4.2登录模块登录界面做的相对简单,多不同的用户进行身份验证,确定身份后然后再跳转到对应页面。以下为管理员登录界面效果图,如图4-2图4-2登录页面登入模块主要逻辑代码如下:@RequestMapping("/login")publicResultObjlogin(Stringloginname,Stringpwd){Subjectsubject=SecurityUtils.getSubject();AuthenticationTokentoken=newUsernamePasswordToken(loginname,pwd);try{subject.login(token);ActiverUseractiverUser=(ActiverUser)subject.getPrincipal();WebUtils.getSession().setAttribute("user",activerUser.getUser());//记录登陆日志Loginfoentity=newLoginfo();entity.setLoginname(activerUser.getUser().getName()+"-"+activerUser.getUser().getLoginname());Stringip=WebUtils.getRequest().getRemoteAddr();entity.setLoginip(ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip);entity.setLogintime(newDate(System.currentTimeMillis()));loginfoService.save(entity);returnResultObj.LOGIN_SUCCESS;}catch(AuthenticationExceptione){e.printStackTrace();returnResultObj.LOGIN_ERROR_PASS;}}4.3商品信息模块仓库管理系统中商品的角色无疑是重中之重,不管从哪方面都需将商品的详细信息处理好,因为它关联这所有业务。从视觉的角度上讲,要让人一目了然,商品图片是不能少的,其次个商品间的顺序得按一定的排列,库存的多少更是得清清楚楚。为了方便查找,增加模糊分页查询,加快了系统得搜索速度[9]。商品信息模块如图4-3图4-3商品信息商品信息代码实现如下:@RestController@RequestMapping("/goods")publicclassGoodsController{@AutowiredprivateGoodsServicegoodsService;/***查询商品*/@RequestMapping("/loadAllGoods")publicDataGridViewloadAllGoods(GoodsVogoodsVo){PageInfo<Goods>pageInfo=goodsService.loadAllGoods(goodsVo);returnnewDataGridView(pageInfo.getTotal(),pageInfo.getList());}/***添加商品*/@RequestMapping("/addGoods")publicResultObjaddGoods(GoodsVogoodsVo){this.goodsService.save(goodsVo);returnResultObj.ADD_SUCCESS;}/***修改商品*/@RequestMapping("/updateGoods")publicResultObjupdateGoods(GoodsVogoodsVo){this.goodsService.update(goodsVo);returnResultObj.UPDATE_SUCCESS;}/***删除商品*/@RequestMapping("/deleteGoods")publicResultObjdeleteGoods(Integerid,Stringgoodsimg){this.goodsService.removeById(id,goodsimg);returnResultObj.DELETE_SUCCESS;}/***加载所有可用的供应商*/@RequestMapping("/loadAllGoodsForSelect")publicDataGridViewloadAllGoodsForSelect(){List<Goods>list=goodsService.loadAllGoodsForSelect();returnnewDataGridView(list);}/***根据供应商ID查询商品信息*/@RequestMapping("/loadGoodsByProviderId")publicDataGridViewloadGoodsByProviderId(Integerproviderid){List<Goods>list=goodsService.loadGoodsByProviderId(providerid);returnnewDataGridView(list);}/***查询库存紧张商品*/@RequestMapping("/loadLessGoods")publicDataGridViewloadLessGoods(GoodsVogoodsVo){PageInfo<Goods>pageInfo=goodsService.loadLessGoods(goodsVo);returnnewDataGridView(pageInfo.getTotal(),pageInfo.getList());}}4.4入库模块商品入库模块拥有巧妙的模块设计,系统提供得入库方式简单方便,前提是该商品首先要在系统中,如果不在需先将商品信息录入系统中再进行入库操作。在进行入库操作时,可以在已录得商品信息中进行选择,该形式以下拉框的形式展出,进行对应的选择即可[10]。在此模块的编程中,巧妙的运用编程技巧来和上述功能做到了与完美的配合。此种方式便于管理员掌握相应商品的情况。按商品名查询可以在选定撒谎能够品后,查询某一次或多次商品信息。入库模块效果图如图4-4图4-4入库信息当有新的商品进入仓库中时,仓库管理人员需点击入库界面的“添加新商品”选项。在对现有的商品进行入库操作时,商品的信息都是重新输入的。当将新入库的商品的信息填写完毕之后,系统会自己将新入库的一些商品的信息添加到管理商品信息的数据表“bus_goods”中[11]。添加效果如图4-5图4-5添加入库信息相关实现代码如下:@RestController@RequestMapping("/inport")publicclassInportController{ @Autowired privateInportServiceinportService; /** *查询进货信息 */ @RequestMapping("/loadAllInport") publicDataGridViewloadAllInport(InportVoinportVo){ PageInfo<Inport>pageInfo=inportService.loadAllInport(inportVo); returnnewDataGridView(pageInfo.getTotal(),pageInfo.getList()); } /** *添加进货信息 */ @RequestMapping("addInport") publicResultObjaddInport(InportVoinportVo){ inportService.save(inportVo); returnResultObj.ADD_SUCCESS; } /** *修改进货信息 */ @RequestMapping("updateInport") publicResultObjupdateInport(InportVoinportVo){ this.inportService.update(inportVo); returnResultObj.UPDATE_SUCCESS; } /** *删除进货信息 */ @RequestMapping("deleteInport") publicResultObjdeleteInport(Integerid){ this.inportService.remove(id); returnResultObj.DELETE_SUCCESS; }}4.5出库模块商品出库模块这是系统设计得最好最完善的模块之一。系统提供出库方式是在库存表中已经储存有商品基础上才能可以出库的。若是在库存中商品品的数量小于所要出库的输了时,系统会显示出库存数量不足。在进行出库的操作过程时,若是出库的商品在库存中的数量小于0时,系统会报出出库商品出错。此时都不可以正常出库。在正常出库之后,库存中商品的数量会发生改变。出库效果图如图4-6图4-6出库信息出库模块相关代码如下:@RestController@RequestMapping("/sales")publicclassSalesControlelr{@AutowiredprivateSalesServiceSalesService;/***查询进货信息*/@RequestMapping("/loadAllSales")publicDataGridViewloadAllSales(SalesVosalesVo){PageInfo<Sales>pageInfo=SalesService.loadAllSales(salesVo);returnnewDataGridView(pageInfo.getTotal(),pageInfo.getList());}/***添加进货信息*/@RequestMapping("addSales")publicResultObjaddSales(SalesVosalesVo){SalesService.save(salesVo);returnResultObj.ADD_SUCCESS;}/***修改进货信息*/@RequestMapping("updateSales")publicResultObjupdateSales(SalesVosalesVo){this.SalesService.update(salesVo);returnResultObj.UPDATE_SUCCESS;}/***删除进货信息*/@RequestMapping("deleteSales")publicResultObjdeleteSales(Integerid){this.SalesService.remove(id);returnResultObj.DELETE_SUCCESS;}}4.6用户信息模块当管理员进入到主界面之后,管理员可以选择信息管理选项,会进入到用户信息的管理模块。管理员在系统中具有两项功能,第一项功能是可以对管理员或用户的个人信息进行一些列的操作。在此界面上面可以查询到用户全部的个人信息。第二项功能是能够管理全部的用户的信息。在进入信息管理模块对个人的信息可以进行查看,可以修改自己的信息。在点击修改之后会完成所对应的个人信息[12]。用户信息效果图如图4-7图4-7用户信息除此之外,管理员还可以通过此模块为用户添加功能权限,让用户具有执行某个模块的功能权限,如图4-8图4-8分配权限用户信息模块相关=实现代码如下@RestController@RequestMapping("/user")publicclassUserController{@AutowiredprivateUserServiceuserService;/***查询全部用户*/@RequestMapping("/loadAllUser")publicDataGridViewloadAllUser(UserVouserVo){PageInfo<User>pageInfo=userService.loadAllUser(userVo);returnnewDataGridView(pageInfo.getTotal(),pageInfo.getList());}/***根据部门id查询用户*/@RequestMapping("loadUsersByDeptId")publicDataGridViewloadUsersByDeptId(Integerdeptid){List<User>users=userService.loadUsersByDeptId(deptid);returnnewDataGridView(users);}/***添加用户*/@RequestMapping("/addUser")publicResultObjaddUser(UserVouserVo){this.userService.save(userVo);returnResultObj.ADD_SUCCESS;}/***修改用户*/@RequestMapping("/updateUser")publicResultObjupdateUser(UserVouserVo){returnResultObj.UPDATE_SUCCESS;}/***删除用户*/@RequestMapping("/deleteUser")publicResultObjdeleteUser(Integerid){this.userService.removeById(id);returnResultObj.DELETE_SUCCESS;}/***根据用户ID查询角色并选中已拥有的角色*/@RequestMapping("/initRoleByUserId")publicDataGridViewinitRoleByUserId(Integerid){List<Map<String,Object>>listMaps=userService.initRoleByUserId(id);returnnewDataGridView(Long.valueOf(listMaps.size()),listMaps);}/***保存用户和角色的关系*/@RequestMapping("/saveUserRole")publicResultObjsaveUserRole(Integeruid,Integer[]ids){this.userService.saveUserRole(uid,ids);returnResultObj.DISPATCH_SUCCESS;}/***消除session*/@RequestMapping("/invalidate")publicvoidsession(){WebUtils.getSession().invalidate();}}4.7公告模块当管理员进入到公告管理模块时,可以对公告进行增加、删除和修改,此功能的设计主要是为了方便信息传递,由管理员统一下发,用户即时查看,做到高效,迅速的信息传递[13]。公告效果图如图4-9和图4-10图4-9公告管理图4-10公告展示5系统的测试5.1测试简述软件测试,是在软件的完整性、安全性、正确性以及质量是否过关的一种描述。也可以说成是输出比较的一种过程。软件测试的经典定义是:在一定的条件之下来操作并使用软件,在这个过程中来发现并且找出软件自身的错误,以此来评价一个软件的质量。在经过查询一系列的资料表明出,软件的测试工作在软件的整个开发的过程当中占有极其重大的一部分。在一些情况表明之下,如果所设计的软件关系到人的生命安全的情况下,软件的测试会变的即为的重要,并且还需要有成倍的工作量来增加测试的目的,以此来说明程序能正确的执行它应有的功能,还有表明程序没有错误。如果抱有这样的目的,就不会轻易地发现错误,从而导致选择一些不易暴露错误的例子。5.1.1测试的重要性(1)测试目的系统的测试是一个在开发过程中十分重要的一个阶段。在系统的测试阶段找出程序的错误,并提高系统的性能是测试阶段的主要任务。主要目的是检验系统“做得怎样”。通过软件的测试会发现一系列的问题,还能找出问题的原因,然后再对这些问题进行修改。GrenfordJ.Myers在以前提出过一下的软件问题:1.找出程序中尽可能多的问题。2.设计出一个非常好的测试方案,有可能发现一些到目前为止没有能发现的错误。3.如果能够找出之前并未发现的错误,算是设计出了一个成功的方案。4.测试不是单独的找出错误。而是通过分析错误,来找出产生错误的原因,来避免发生错误,帮助程序员找出软件开发过程中的缺陷,以便及时进项改正。(2)测试重要性不管是什么技术,以及如何使用的方法,但该软件,该软件将仍然是放错了地方。为了减少引入的错误,您可以使用最新的语言,最领先的开发方法,详细的改进开发过程,可是就算是这样也不能够完全的消除软件上面的错误,还要进行详细的测试过程,以找出引入的错误,你必须通过测试误差估计密度在软件中。所有工程学科最根本的所在是一个测试,是在软件开发中占有很重要的一个部分。测试陪同,从编程本身的日子。统计显示,软件测试这个阶段所花费的成本为这个测试是30%至50%的软件开发总成本的。要是也考虑了维护的阶段,在软件开发的整个周期中,有所降低的也许是测试的成本比例,可是维护的工作,实际上是相当于对软件进行了第二次的开发,还有可能是多次,许多测试工作也一定包含在其中[14]。在实践中,因为还有一个感知测试这是不正确的和错误的态度,后导致一系列的问题,主要包括有:假设测试,也很难带来成就试验人员从某种意义上说,作为设计和编码一样容易取得进展:那个戒指是不是建立在自然破裂,找到软件错误作为测试的目标,他们负责的负面测试工作中发现错位;测试工作是一种比较乏味、缺少技术性的工作;有时候开发人员在开发出软件之后自信心会比较强大,在发现错误后,所表达的意见与他们的自尊心会有所冲突、矛盾。软件测试,不赚钱、技术含量低不需要专门去做的错误认知。5.1.2测试的重要性不管是什么技术,以及如何使用的方法,但该软件,该软件将仍然是放错了地方。为了减少引入的错误5.1.2测试的原则在软件测试中人们所具有的经验非常重要,但人们的心理因素也更加的很重要的。根据软件测试的目标确定一些测试原则,将一些容易被人们忽视的、实际上又是显而易见的问题作为原则来加以重视,所以测试有以下几大原则。测试用力既要有合理的数据的输入,又需要有一定合理的输出结果。合理的用例固然重要,但是却不能忘却一些不合理的用例。检查程序时,需要检查程序该做的与不该做的事情。测试的计划需要早早的开始制定。测试计划、测试用例、测试报告需要进行长期的保存,以免以后出问题可以解决。遵守二八原则。软件的开发人员应该尽量避免不要亲自去进行测试。5.2测试简述测试的过程是一个执行程序的过程,即要求被测试程序能够在各种环境下运行。其实,不再记起上运行也可以发现程序的错误。为了便于区分,一般把被测程序在机器上运行称为动态测试,不再机器上运行称为静态测试,广义上讲都属于软件测试。动态分析方法又分为黑盒测试和白盒测试两种方法。以下的两种方法是即为典型的测试方法。5.2.1黑盒测试黑盒测试,即功能测试。他的工作重点不是考虑程序应该是怎么编写的。往往将被测试的程序看成一个黑盒,只是在软件的接口处开始进行测试,根据前期制定的需求说明,来检查所做出来的程序是否满足了所有的功能要求。程序梭边写出来的每一项功能,都能不能满足用户在输入数据之后所要达到的目的与要求。并且保持外部信息的完整性。在黑盒测试中会有以下的错误。发现一些没有实现的功能。在接口上,数据能不能正确的别接收,结果是否合理。性能上是否满足要求所做出来的界面是不是很清晰、美观。5.2.2白盒测试白盒测试,即结构化的测试,主要测试程序的内部组成。白盒测试与黑盒测试法不同,测试人员将程序视为一个透明的盒子,测试人员需要检查处理过程的中一些细微的程序,要求对程序的结构性做到一定程度的覆盖,以此来检验程序内部的一些组成。白盒测试法也不可能完全测试,也做不到对所有的路径都挨个测试一遍。例如要测试一个循环20次的嵌套if语句,循环体中有5条路径,这样的测试程序会产生很多种情况。如果每1ms完成一条路径的测试,测试完这样的一个程序需要花费很多的时间,因此可能做到完全覆盖。总之,无论哪种测试的方法,对于一个大的软件系统完全测试是不可能的,所以我们要找出更多更合适的方法进行测试,使得软件产品达到一定的质量标准的要求。5.2.3单元测试单元测试,对软件设计中的一些细小的结构单元进行测试。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的测试单元与其他部分相隔离的情况下进行测试[15]。5.2.4集成测试集成测试,即软件的联合测试。以单元测试为基础,把系统中所做出来的一些模块结合起来进行测试5.3系统模块的测试5.3.1登录模块测试在首次进入系统时,首次进入的是登陆注册的界面,在输入的信息有效的情况下会进入到首界面。如图5-1所示为系统的登录界面的测试:图5-1登录界面在当帐号密码出错时,系统会自动弹出一个提示框如图5-2所示:图5-2验证失败5.3.2出库模块测试系统在进入主界面之后会有一个出库模块的入口,在进入到出库模块时,在输入的出库数量小于库存数量商品能够进行正常出库操作,查询库存结果随之更新。出库的数量比库存中的数量多得情况下,会弹出一个提示框,提示库存数量不足。该模块之下的测试用例如下:库存信息如图5-3所示图5-3库存量以哇哈哈为例原先库存488,出库数500(如图5-2所示):图5-3出库信息在进行完操作后,如图5-4所示:图5-4库存不足6结论与展望6.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳市某区肺结核患者医疗经济负担与补偿机制的多维剖析
- 深厚覆盖层基础堆石坝防渗系统的优化策略与实践探索
- 深亚微米工艺下RISCVSoC版图设计的关键技术与优化策略研究
- 淮北矿区土壤重金属污染:现状洞察、风险评估与治理策略
- 淄博市流行性乙型脑炎的流行病学剖析与经济负担洞察
- 液压锚杆钻机冲击回转机构与液压系统的优化设计与性能提升研究
- 润目疏肝汤加减疗法对肝郁气滞型干眼症的疗效探究:多维度临床观察与机制分析
- 涉入度视角下长沙市民森林游憩产品消费决策机制解析
- 2026年企业员工股权激励协议模板
- 人工智能与智能硬件手册
- 2026年湖南省长沙市初二地理生物会考真题试卷(+答案)
- 2026建安杯信息通信建设行业安全竞赛核心考点试题库(选择题)
- (2025年)镇雄县辅警协警笔试笔试真题(附答案)
- 湖北省2025年普通高中学业水平选择性考试政治试题(解析版)
- 第23课 医疗设施新功能 课件 2025-2026学年人教版初中信息科技八年级全一册
- 万邑通在线测评题库及答案
- 2026年低压电工证考试试题及答案
- 化工厂防爆安全培训课件
- GB/T 46828.1-2025塑料透明材料总透光率的测定第1部分:单光束仪器
- 2025年中国铁路上海局集团有限公司芜湖车务段客运服务人员招聘参考笔试题库及答案解析
- 疫苗管理法培训课件疾控
评论
0/150
提交评论