计算机毕业论文实体门店自用库存管理系统.doc_第1页
计算机毕业论文实体门店自用库存管理系统.doc_第2页
计算机毕业论文实体门店自用库存管理系统.doc_第3页
计算机毕业论文实体门店自用库存管理系统.doc_第4页
计算机毕业论文实体门店自用库存管理系统.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计(论文、作业)毕业设计(论文、作业)题目:实体门店自用库存管理系统分校(点): 阜新校区 年级、专业: 2013春计算机(网络工程) 教育层次: 大专 学生姓名: 学 号: 指导教师: 完成日期: 目录内容摘要I一、 绪论1(一)仓库管理系统研究背景及意义1(二)相关理论基础11、Java语言的基本特点12、B/S架构的基本特点23、JFinal 极速Web开发框架34、MySQL 数据库3二、系统分析4(一)需求分析41、系统功能的基本要求5(二)数据库需求分析6三、系统实现8(一)系统模块81、系统管理模块82、基本信息模块103、库存管理模块174、报表管理模块23(二)输入输出25(三)系统安全设计26四、系统测试26总结27致谢28内容摘要本论文研究目的在于开发设计一套适用于中小型实体门店库存管理系统,以协助中小型商品流通企业管理人员对企业的进货、出货、库存管理达到信息化管理,实现快捷的信息存储和查询,并且整合库存、入库、出库3个环节,能够提高工作效率。同时可以统计分析一段时期的数据信息,为今后的企业运行提供依据。系统采用MySQL数据库,开发语言采用Java,整个系统采用模块化开发。该系统主要功能包括基本信息管理、库存查询管理、出入库管理、报表、日志五大部分。其中基本信息管理功能包括货物厂商管理、品类管理和单位管理三个管理功能。 库存查询管理功能包括品种信息查询功能。出入库管理部分是针对在采购功能中采购的货物进行入库操作以及出库相关的一系列操作。关键词:库存管理 出入库管理 报表查询 实体门店I实体门店自用库存管理系统一、 绪论(一)仓库管理系统研究背景及意义随着我国经济的飞速发展,各种类型规模的公司企业迅速崛起,许多从事生产和经营管理的企业都有自己生产和销售的产品,而这些产品都需要储存在仓库中,对于每个企业来说,随着企业规模的不断扩大,产品数量的急剧增加,所生产产品的种类也会不断地更新与发展,有关产品的各种信息量也会成倍增长。面对庞大的产品信息量,如何有效地管理仓库产品,对这些企业来说是非常重要的,仓库管理的重点是销售信息能否及时反馈,从而确保企业运行效益。而仓库管理又涉及入库、出库的产品、经办人员及客户等方方面面的因素,如何管理这些信息数据,是一项复杂的系统工程,充分考验着仓库管理员的工作能力,工作量的繁重是可想而知的,所以这就需要由仓库管理系统来提高仓库管理工作的效率,这对信息的规范管理、科学统计和快速查询,减少管理方面的工作量,同时对于调动广大员工的工作积极性,提高企业的生产效率,都具有十分重要的现实意义。本库存管理系统使用Java编程语言,以MySQL5.5作为后台数据库,采用B/S架构而开发的一个实体门店自用库存管理系统,参照企业级仓库管理系统业务流程,实现常用功能,为企业级的简易版本。(二)相关理论基础本系统主要采用Java语言 + JFinal 1.9 + MySQL 5.5相结合的技术来进行开发,用户界面的设计采用Bootstrap样式,Freemarker模板引擎,前端采用AngularJS框架以及JQuery框架,后台数据库使用MySQL5.5。在系统需涉及的一些相关技术概述如下。1、Java语言的基本特点Java编程语言的风格十分接近C语言、C+语言。Java是一个纯粹的面向对象的程序设计语言,它继承了C+语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的性能。编辑Java源代码可以使用任何无格式的纯文本编辑器,在Windows操作系统上可以使用微软记事本(Notepad)、EditPlus等程序,在Linux平台上可使用vi工具等。在记事本中输入如下代码:编辑上面的Java文件时,注意程序中粗体字标识的单词,Java程序严格区分大小写。将上面文本保存为 HelloWorld.java,该文件就是Java程序的源程序。2、B/S架构的基本特点(1)维护和升级方式简单。当前,软件系统的改进和升级越发频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。(2)成本降低,选择更多。大家都知道windows在桌面电脑上几乎一统天下,浏览器成为了标准配置,但在服务器操作系统上windows并不是处于绝对的统治地位。 当前的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用哪种操作系统都可以让大部分人使用windows作为桌面电脑操作系统不受影响,这就使得最流行免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。比如说很多人每天上“新浪”网,只要安装了浏览器就可以了,并不需要了解“新浪”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。(3)应用服务器运行数据负荷较重。由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。但是,应用服务器运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。3、JFinal 极速Web开发框架JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。 JFinal 采用微内核全方位扩展架构,全方位是指其扩展方式在空间上的表现形式。JFinal由Handler、Interceptor、Controller、Render、Plugin五大部分组成。JFinal架构十分简单,顶层是一个责任链模式变种,ActionHandler 内部结构也十分简单,是一个Command模式变种。JFinal 架构图1如下:遵循COC原则,零配置,无xmlActiveRecord支持,使数据库开发极致快速自动加载修改后的java文件,开发过程中无需重启web serverAOP支持,拦截器配置灵活,功能强大Plugin体系结构,扩展性强多视图支持,支持FreeMarker、JSP、Velocity强大的Validator后端校验功能功能齐全,拥有struts2的绝大部分功能体积小仅218K,且无第三方依赖 图1 JFinal架构图4、MySQL 数据库数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(relational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,对象记录、域等。 MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。5、JDBC连接池在进行系统开发时,一个很重要的步骤就是建立数据库的连接,即访问数据库。JDBC(Java Data Base Connectivity ,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。二、系统分析(一)需求分析需求分析是软件开发周期的第一个阶段,也是关系到软件开始成败的关键步骤。准确、完整和规范化的软件需求是软件开发成功的关键。本系统针对小型企业、私营、个体商贩,如:商店等。核心功能是管理商品的出入库、更新、查询、删除等,用户无需懂财务及仓库管理知识,仅简单的登录,填写单据即可完成所有统计数据,并给出相关报表,简单实用。本库存管理系统需要完成功能主要有: 基本信息的输入,包括供应商、品类、单位的输入等 出入库的信息输入等 报表的生成 库存实时查询1、系统功能的基本要求品种管理,填写品种信息;入库管理,可以填写入库单,确认商品入库; 出库管理,可以填写出库单,确认出库; 初始库存设置,设置库存的初始值,库存的上下警戒限; 可以查询商品入库情况、出库情况、当前库存情况,可以按出库单、入库单,商品、时间进行查询; 在仔细分析后,决定将整个系统分为五大模块,每个模块又有若干个子模块。整个系统功能模块如下图2所示:图2 功能模块(1)系统目标设计及设计思想仓库管理主要是门店各种商品的管理。进货时经检查确认后,进行入库,填写入库单。经营者根据营业状况填写出库单,根据需要按照时间进行统计分析,产生相应报表,达到提高经营者管理效率的目的。(2)总体架构思想本仓库管理系统是利用Browser/Server结构,即浏览器/服务器模式。这种BS模式这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。 图3 B/S结构示意图登录模块仓库管理软件基于Firefox或者Chrome浏览器启动,设立管理员账号。登录账号进入系统。 供应商管理模块供应商管理模块记录公司所有供应商的情况。 品类管理模块商品所属分类新增、查询、修改、删除,如:手机、电脑等。 单位管理模块商品单位新增、查询、修改、删除,如:台、箱等。 仓库收料仓库根据系统发出的订单进行收料。 出入管理模块此模块主要生成商品出入库数据。报表与查询需提供根据各种条件来得到查询结果。条件即可以是单个条件也可以组合条件。分别为:操作类型、品种、时间。操作日志记录系统内主要的数据的操作,以便日后查询所需。(二)数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。仔细分析调查有关库存管理信息需求的基础上,得到如图4所示的本系统所处理的数据流程。仓库现有库存汇总、处理商品入库商品出库报表查询图4 库存管理系统数据流程图通过对企业库存管理的内容和数据流程分析,设计数据项和数据结构如下: 库存状况信息,包括的数据项有品种名称、供应商、类型、单位、数量、录入时间、最后操作时间、备注等 入库单信息,包括的数据项有品种名称、供应商、类型、单位、入库数量、备注等 出库单信息,包括的数据项有品种名称、供应商、类型、单位、入库数量、备注等 用户管理信息,包括的数据项有用户名、用户密码等。经过以上分析,并结合实际库存管理中需要的数据,建立以下数据库表。表1商品类别表 gtype字段名称类型长度备注idint10主键自增namevarchar25名称remarkvarchar100备注表2商品单位表 unit字段名称类型长度备注idint10主键自增namevarchar25名称remarkvarchar100备注表3供应商表 vendor字段名称类型长度备注idint10主键自增namevarchar25名称remarkvarchar100备注表4商品品种表 material字段名称类型长度备注idint11主键自增namevarchar50名称numberdouble数量gtypeint11类别unitint11单位vendorint11供应商create_timedatetime创建时间last_updatedatetime最后修改时间remarkvarchar100备注表5商品表 order字段名称类型长度备注idint11主键自增materialint11品种gtypeint11类别unitint11单位vendorint11供应商typeint11操作类型:1.入库2.出库numberdouble数量op_timedatetime操作时间remarkvarchar100备注表6用户表 user字段名称类型长度备注idint11主键自增namevarchar50用户名passwordvarchar50密码create_timedatetime创建时间三、系统实现(一)系统模块1、系统管理模块系统管理模块主要包括 用户登录 用户登出(1)流程逻辑如图5所示图5 登录流程(2)登录界面在浏览器中输入服务器地址,跳转至系统登录界面,管理员输入账号密码验证登录。为确保系统的安全稳定,只有验证登录的用户可以访问系统其它路径,未登录情况下无论指向任何路径均跳转至登录界面即login路径下。前端界面如图6所示:图6 登录界面系统后台采用全局拦截器拦截用户所有请求,并验证用户是否登录。实现代码如下:public class AuthInterceptor implements InterceptorLogger logger = LoggerFactory.getLogger(this.getClass();public void intercept(ActionInvocation ai)Controller controller = ai.getController();HttpServletRequest request=controller.getRequest();controller.setAttr(basePath, request.getScheme()+:/+request.getServerName()+:+request.getServerPort()+request.getContextPath()+/);try ShiroUser user = null;/验证后台管理员登陆状态if(SH.isAuth()user = (ShiroUser)SH.getSubject().getPrincipal();controller.setAttr(user, user); / 用户名controller.setAttr(isLogin, true); / 确认登陆ai.invoke(); catch (Exception e) / 统一异常处理logger.error(controller.getClass().getName(),e);Render render = controller.getRender();if(render = null)controller.renderFreeMarker(/WEB-INF/view/common/error.ftl);2、基本信息模块基本信息模块主要完成的功能有: 供应商管理,新增、查询、修改、删除 品类管理,新增、查询、修改、删除 单位管理,新增、查询、修改、删除(1)基本信息的新增、修改设计思路和要点:基本信息模块中三个子模块功能相同,实现上述四种功能。以单位管理为例。新增时采用Form提交方式,主键ID自增,主键为空时为新增,不为空时为修改。新增流程逻辑图如图7所示:图7 表单提交前端界面如下图8所示:图8 单位编辑服务端实现代码:/* 详情*/public void info() String id = this.getPara(id, );if (StrKit.notBlank(id) this.setAttr(id, id);this.render(unit_edit.ftl);/* 编辑 */public void edit() AjaxResult result = new AjaxResult(1);Gson gson = new Gson();try /将前端界面form提交的字段信息Json格式化后转换成map对象Map unit = gson.fromJson(this.getPara(unit, ), new TypeTokenMap().getType();if (unit.containsKey(id) /检测ID是否存在Unit.dao.clear().setAttrs(unit).update();/ID存在为修改this.addLog(3, 更新单位【 + unit.get(name) + 】);else Unit.dao.clear().setAttrs(unit).save();/ID不存在为新增this.addLog(3, 添加单位【 + unit.get(name) + 】);/更新日志 catch (Exception e) e.printStackTrace();result.addError(e.getMessage();this.renderJson(result.toJson();/返回信息(2)单位查询表单成功提交数据库插入新数据后,前端界面展示数据库中保存的数据信息。浏览器跳转到http:/localhost:8080/unit/list路径下,执行UnitController控制器中list和data方法,分页展示数据,每页10条记录。界面如图9所示:图9 单位列表服务端实现代码:public class UnitController extends BaseController/* * 列表 */public void list() this.render(unit_list.ftl);/前端页面/* * 详情 */public void data() AjaxResult result = new AjaxResult(1);try String sql = from unit ;/查询表int pageNow = getParaToInt(0, 1);Page units = Unit.dao.paginate(pageNow, 10, select *, sql); /分页result.setData(page, units);result.setData(rows, JsonKit.listToJson(units.getList(), 2); catch (Exception e) e.printStackTrace();result.setStatus(0);this.renderJson(result.toJson();(3)删除单位根据ID值进行删除,列表在循环遍历显示数据时,在删除链接上提供每条数据的ID。序号单位名称单位备注操作$index + 1unit.remark编辑删除后台接收到ID后执行delete方法。其中如果已经与品种建立映射关系,则无法删除该单位。前端界面如图10所示:图10 删除异常服务端代码:/* * 删除*/public void delete() AjaxResult result = new AjaxResult(1);try String id = this.getPara(id, );/接收id值String sql = select count(*) as num from material where unit=?;if (Material.dao.findFirst(sql, id).getLong(num) 0) result.addError(该单位已使用,请在品种中更换单位后再删除。);else Unit unit = Unit.dao.findById(id);this.addLog(3, 删除单位【 + unit.getStr(name) + 】);unit.delete(); catch (Exception e) e.printStackTrace();result.addError(e.getMessage();this.renderJson(result.toJson();3、库存管理模块库存管理模块主要包括: 出库 入库 品种管理业务流程图11:图11 业务流程(1)品种管理新增品种时,与供应商、类型、单位等字段建立映射关系,后台将数据库中ID和NAME自段查询出来,前端通过select控件显示名称,form表单提交时数据库保存对应的ID。如图12图13所示:图12 筛选图13 表单提交服务端代码:品种厂商 :品种类型 :* 品种单位 :*/Ajax异步向服务器请求数据$http.post(unit/getUnits).success(function(data) $scope.units = data;);$http.post(vendor/getVendors).success(function(data)$scope.vendors = data;);$http.post(gtype/getGtypes).success(function(data)$scope.gtypes = data;);/循环选中的名称,保存对应的IDpromise.then(function()angular.forEach($scope.vendors, function(vendor)if ($scope.material.vendor = vendor.id) $scope.vendor = vendor;);angular.forEach($scope.units, function(unit)if ($scope.material.unit = unit.id) $scope.unit = unit;);angular.forEach($scope.gtypes, function(gtype)if ($scope.material.gtype = gtype.id) $scope.gtype = gtype;););(2)入库商品入库时,选则品种名称,类型、供应商、单位三个字段为自动绑定。输入数量即可提交保存。如图14所示:图14 入库提交服务端代码:/* * 入库操作*/public void inEdit() AjaxResult result = new AjaxResult(1);Gson gson = new Gson();try Map temp = gson.fromJson(this.getPara(order),new TypeTokenMap() .getType();Order order = Order.dao.clear();order.setAttrs(temp).set(op_time, new Date().save();Material material = Material.dao.findById(order.get(material);Unit unit = Unit.dao.findById(order.get(unit);/获取数量double number = material.get(number) = null ? 0 : material.getDouble(number);material.set(number, number + order.getDouble(number);material.update();this.addLog(4, material.getStr(name) + 入库 + 【+ order.getDouble(number) + 】 + unit.getStr(name); catch (Exception e) e.printStackTrace();result.addError(e.getMessage();this.renderJson(result.toJson();(3)出库根据上述业务流程图,在出库时后台会检测库存数量,当出库数库存量,则出库失败。反之,出库成功。如图15所示:图15 出库异常服务端代码:/* * 出库操作 */public void outEdit() AjaxResult result = new AjaxResult(1);Gson gson = new Gson();try Map temp = gson.fromJson(this.getPara(order),new TypeTokenMap() .getType();Order order = Order.dao.clear();order.setAttrs(temp);Material material = Material.dao.findById(order.get(material);Unit unit = Unit.dao.findById(order.get(unit);/获取现有库存数量double maNum = material.get(number) = null ? 0 : material.getDouble(number);/获取出库数量double orNum = order.get(number) = null ? 0 : order.getDouble(number);if (orNum maNum) result.addError(出库失败:库存不足!); else order.set(op_time, new Date().save();material.set(number,material.getDouble(number)- order.getDouble(number).update();this.addLog(4, material.getStr(name) + 出库 +【+ order.getDouble(number) + 】 + unit.getStr(name); catch (Exception e) e.printStackTrace();result.addError(e.getMessage();this.renderJson(result.toJson();4、报表管理模块本系统提供实时报表查询,并支持按照出入库操作类型、品种类型、时间方式进行精确查询。默认所有条件为空。如图16所示:图16 报表查询服务端代码:public void data() AjaxResult result = new AjaxResult(1);try String sql = FROM order as a + LEFT JOIN material as b ON a.material=b.id + LEFT JOIN vendor as c on a.vendor=c.id + LEFT JOIN unit as d ON a.unit=d.id + LEFT JOIN gtype as f ON a.gtype=f.id + WHERE (1=1) ;int type = this.getParaToInt(type, 0); /获取类别idif (type 0) sql += and a.type= + type; /按条件查询/获取品种idString materialId = this.getPara(material_id, );if (StrKit.notBlank(materialId) sql += and a.material= + materialId;/获取结束日期String begin = this.getPara(begin, );if (StrKit.notBlank(begin) sql += and a.op_time= + begin + ;/获取开始日期String end = this.getPara(end, );if (StrKit.notBlank(end) sql += and a.op_time= + end + ;sql += order by op_time desc;String columns = SELECT a.id, as material, as vendor, as gtype, as unit,a.number,CASE a.type WHEN 1 THEN 入库 WHEN 2 THEN 出库 END AS type,a.op_time,a.remark;int pageNow = getParaToInt(page_now, 1);Page orders = Order.dao.paginate(pageNow, 10, columns, sql);result.setData(page, orders);result.setData(rows, JsonKit.listToJson(orders.getList(), 2);result.setData(number, Db.findFirst(select sum(a.number) as number + sql).get(number); catch (Exception e) e.printStackTrace();result.setStatus(0);this.renderJson(result.toJson();(二)输入输出本系统界面通过浏览器展示,人机交互,容易使用。页面设计采用bootstrap样式,简洁美观。提交数据均采用form提交方式,前端进行简单校验,当用户输入非法字符是系统会给出友好提示。(三)系统安全设计为了保证系统的安全,浏览器路径中只显示初始访问路径:http:/localhost:8080/login在执行业务操作时地址栏不显示跳转目标路径。系统根据用户登录状态显示界面,未通过登录授权时所有路径均跳转至login.ftl界面,并禁止访问其他路径资源。表单提交失败时,执行事务回滚,同样也保证了系统数据的安全性。四、系统测试1、一般情况下,我们千辛万苦开发出的程序总会存在一些问题,这就需要进行测试。对于此系统的测试从以下几方面进行入手。菜单测试检查每个菜单是否有效。各功能模块测试设计一些数据,利用

温馨提示

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

评论

0/150

提交评论