版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
86/96计算机与通信学院本科生毕业设计说明书仓库管理系统作者:曹亚磊学号:05240207专业:计算机科学与技术班级:05级软件工程(2)指导教师:曹来成答辩时间:2009年6月仓库管理系统StorageManagementSystem曹亚磊(CaoYalei)05240207
前言随着科学技术的不断发展,我们的社会已经进入了一个信息化的社会,人们每天都要接收大量的信息和处理大量的数据,仅靠传统的纸和笔已不能适应这个时代的要求,人们必须采取新的手段,于是信息技术进入我们的生活,计算机不再是简单的计算工具,它已成为我们生活中处理大量信息的不可或缺的手段。在当今产业竞争越来越激烈的信息时代,企业经营除了降低成本,提高品质外,更需要以先进的管理理念来整合企业内部与外部资源。仓库管理系统正是在这个背景下产生的。本系统正是针对仓库部门的货物信息管理,通过对仓库基本信息﹑出入库信息等的系统界面设计,将会给管理者带来极大的方便,具有手工管理无法比拟的优点,例如检索速度快、查找方便、可靠性高、存储量大、使用时间长等。用计算机管理取代传统的手工操作,大大减少了管理人员的工作量,提高了工作效率,为获取详细的管理信息提供了保证,方便各类人员的查询和信息保证,增强了管理工作的时效和人员主动性。仓库管理主要摆阔两方面:一是仓库的基本信息,涉及人员信息、库房信息、供货商信息、客户信息;另一项是仓库业务管理,包括入库管理、在库管理、出库管理、报表管理。在本系统中侧重实现仓库的基本信息管理。摘要仓库管理系统是为了实现企业产品管理的系统化、规范化和自动化,从而提高企业管理效率而设计的。它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成仓库管理提供了强有力的工具和管理手段。仓库管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了仓库管理的要求。整个系统由基本信息、单据中心、查询统计、报表打印、维护设置、帮助等模块组成。本系统是在以MySql作为后台数据库,以J2EE为编程语言来开发的。仓库管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了仓库管理计算机化。关键词:仓库;管理系统;数据库
AbstractTheadministrativesystemofthewarehouseisdesignedforrealizingthesystematization,standardizationandautomizationofenterprise'sproductsmanagementandimprovingefficiencyofenterprisesmanagement.Itcompletelyreplacestheworkingwayofartificialmanagementoriginally,preventsfromvariouskindsofmistakesbecauseofadministrativestaffneglectandthequalityproblemofmanagementandofferespowerfultoolandmanagementwaytocompletstorehousemanagementforprompt,accurate,high-efficient.Theadministrativesystemofthewarehouseisamediumandsmall-scaledatabasemanagementsystem,ithasnotonlybeautifulinterface,butalsothehighsecurityandthesimplyoperation,andmeetthedemandforstorehousemanagementbasically.Wholesystemismadeupbybasicinformation,documentinthecenter,inquirestatistics,reportformtype,setuptomaintainandmoduleofhelpingetc.TheWarehouseadministrativesystemisdesignedwithregardingMySqlasthebackstagedatabaseandregardingJ2EEasprogramminglanguage.Theadministrativesystemiseffectual,thehighdataaccuracyduringthecourseofoperating,improvesworkingefficiencyandrealizescomputerizationforstorehousemanagementatthesametime.Keyword:TheWarehouse;AdministrativeSystem;TheDatabase目录摘要 IAbstract II第1章绪论 1第2章需求分析 22.1仓库管理系统概述 22.2系统流程图 22.3数据流程图 32.4仓库管理系统的角色定义 5第3章总体设计 63.1总体用例图 63.2用例说明 63.2.1用户从浏览器登录 72.2.2供货商信息查询用例概述 82.2.3供货商信息修改用例概述 92.2.4供货商信息添加用例概述 103.3功能模块图 11第4章详细设计 144.1ER图 144.2数据库设计 154.2.1数据库的逻辑设计 164.3运行环境 20第5章编码 215.1登陆的实现 215.1.1登陆action 215.1.2登陆过滤器 225.1.3登陆DAO 235.2供货商的实现 235.2.1供货商查询Action 235.2.2供货商修改Action 255.2.2供货商添加Action 255.2.3供货商DAO 26第6章测试 306.1登陆测试方案 306.2数据录入测试 306.3查询测试 306.4测试结论 30第7章使用说明 317.1系统功能简介 317.2运行环境简介 317.3系统运行与操作指南 327.4操作演示 327.5特色介绍 35第8章总结 36参考文献 37致谢 38翻译资料原文 39翻译资料译文 45第1章绪论仓库管理系统是现代仓储企业进行货物管理和处理的业务操作系统。它可以实现本地一个或几个仓库的精细化管理,也可实现制造企业、物流企业、连锁业在全国范围内、异地多点仓库的管理;它可以对货物存储和出货等进行动态安排,可以对仓储作业流程的全过程进行电子化操作;可以与客服中心建立数据接口使客户通过互联网实现远程货物管理,可以与企业的ERP系统实现无缝连接。在现代企业中,仓库管理是一项繁琐复杂的工作,每天要处理大量的单据数据。为及时结清每笔业务,盘点库存和货物流动情况,保证企业生产用料以及货物安全,库管人员要花费大量人力物力和时间来作数据记录统计工作。众所周知,仓库管理是一种既麻烦又单调的工作,每天都是重复记录一些货物的存入与取出,而且货物的种类繁多,存取有很大的随机性,这样为工作人员带来了很大的不便,在操作过程中,由于人为的计算出错率很高,一旦出错改正也很困难,这样简单繁重的工作要很多人来做,为经营者增加了很多成本。所以开发一个可行的仓库管理系统是十分必要的。本系统以MySQL作为后台数据库,以java语言来开发的,不仅实现了仓库管理的自动化,同时也提高了工作效率。本系统由以下几个模块组成:基本信息管理、入库管理、在库管理、出库管理、报表管理。
第2章需求分析2.1仓库管理系统概述本系统是为物流管理而设计的高效管理系统,系统功能强大,同时操作又比较简单,而管理人员大多受到过系统的培训,并能够操作电脑,所以只要花很少的时间,就能够让他们熟悉本系统。系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。本仓库管理系统需要完成功能主要有:●仓库管理各种信息的输入,包括货物、供应商、客户、仓库信息的输入等。●仓库管理各种信息的查询、统计、修改和维护,包括货物、单据查询,货物出入、职员操作统计,各种信息的修改和维护等。●打印报表的生成。●在货物管理中加入最高储备和最低储备字段,对仓库中的产品实现监控和报警。●操作日志的管理。●仓库管核对货物清单核对货物清单程序入库单库存数据库出库单打印程序出库单库存查询程序库存分析程序查询库存信息库存备份程序库存备份报损计划表2.2系统流程图出库单出库单图2-2系统流程图2.3数据流程图数据流图是描述系统的逻辑模型的,图中没有任何具体的物理元素,只是描述信息在系统中流动和处理的情况,它比口头与文字的描述更直观地显示出来系统中数据的使用。数据流图简称DFD图,数据流图有四种成分:源点或终点、处理、数据存储表和数据流。图中没有任何具体的物理元素,只是描述信息在系统中的流动和处理情况,即使不是专业的计算机技术人员也容易理解,是极好的理解工具。它能精确的描述系统的逻辑模型,描述数据在MIS中有输入经过存储、加工处理最后输出的全过程,是设计者和用户交流的很好的工具。仔细分析调查有关仓库管理信息需求的基础上,得到如图4-1所示的本系统所处理的数据流程。图2-3仓库管理系统数据流程图通过对企业仓库管理的内容和数据流程分析,设计数据项和数据结构如下:●货物信息,包括的数据项有编号、货物名称、货物类别、货物规格、计量单位、最高限量、最低限量、备注等。●仓库信息,包括的数据项有编号、仓库名称、仓库地点、保管员编号、备注等。●库存状况信息,包括的数据项有编号、货物编号、库存数量、仓库编号等。●入库单信息,包括的数据项有编号、货物编号、经办人编号、入库时间、入库单价、入库数量、供应商编号、仓库编号、定单状况、其它金额、备注等。●出库单信息,包括的数据项有编号、货物编号、经办人编号、出库时间、出库单价、出库数量、客户编号、仓库编号、定单状况、其它金额、备注等。●进行月盘点信息,包括的数据项有编号、仓库编号、盘点时间、经办人编号、盘点数据等。●系统日志信息,包括的数据项有用户名、操作时间、操作内容等。●用户管理信息,包括的数据项有用户名、用户密码、用户权限等。另外,还有借入单、借出单、报损单、调拨单信息等。它们与入库单、出库单信息基本类似,这里不再一一例举。2.4仓库管理系统的角色定义本系统角色包括两种,仓管部管理人员和管理部主管,其中,管理部主管拥有整个系统的最高权限。仓管部管理人员:负责仓库的出入库管理,可以根据流向单实现出/入库操作。具体权限有:●库存信息管理●库检信息维护●入库单信息维护●出库单信息维护●报表信息管理●进行密码修改、清除表信息等系统设置●客户、供应商、库房等基本信息的查询浏览等仓管部主管:●负责整个山口仓管部门的日常运作和管理工作,主要包括:部门信息维护人员信息管理●审批●报表信息管理●进行密码修改、备份数据库等系统设置
第3章总体设计3.1总体用例图用例图是一个系统建模的启始点,可以使用用例图对将要开发系统的实际工作流程进行业务建模,从业务模型的基础上过度到系统建模的开始,可以通过用例图来搜集用户的需求,明确和系统相关的用户和其他系统,同时确定系统将会提供什么功能,以及各个功能间的关系。图3-1总体用例图3.2用例说明根据上述用例图,对登陆和人员信息管理模块做了如下用例说明:3.2.1用户从浏览器登录用例概述用例名称用户登陆主题领域用例定义用户登录到系统,获得相应的界面和使用权限角色仓管员或主管业务触发事件用户准备开始使用系统进行业务处理或系统管理前置条件系统中已为该用户建立系统用户,并分配了相应权限结束条件成功条件用户登录系统,并获得相应权限失败条件1)系统中没有该用户;2)用户名、密码错误相关用例输入概述用户名、密码、角色输出概述与用户权限相应的界面使用性备注本用例使用频繁用例备注主事件流步骤角色/系统描述数据项备注角色启动登录程序系统显示登录界面;提示输入用户标识和保密字角色输入用户标识和保密字,登录系统用户名,密码,角色系统验证用户是否合法用户、保密字是否正确;返回用户相应的界面、菜单如果不是合法用户、或保密字不正确转到A1。分支事件流编号主事件流步骤号角色/系统条件描述数据项转去主事件流步骤号备注A14系统不是合法用户,用户名、密码错误,用户名和密码与角色不对应返回登录失败信息登录失败信息22.2.2供货商信息查询用例概述用例名称供货商信息查询主题领域供货商信息查询用例包用例定义供货商信息查询角色仓库管理人员业务触发事件进行供货商信息查询前置条件有需要查询的供货商信息记录结束条件成功条件查询到需要查询的供货商信息失败条件未查询到需要查询的供货商信息相关用例输入概述所需查询的供货商信息输出概述查询结果使用性备注用例备注主事件流步骤角色/系统描述数据项备注角色进入查询界面系统显示查询界面角色输入所需查询的供货商信息系统查询是否成功查询成功如果查询成功转到A1如果查询不成功转到A2分支事件流编号主事件流步骤号角色/系统条件描述数据项转去主事件流步骤号备注A14系统完成供货商信息查询返回成功信息查询的供货商信息2A24系统没有完成供货商信息查询返回失败信息查询失败的信息提示22.2.3供货商信息修改用例概述用例名称供货商信息修改主题领域供货商信息修改用例包用例定义供货商信息修改角色仓库管理人员业务触发事件进行供货商信息修改前置条件有需要修改的供货商信息记录结束条件成功条件查询到需要修改的供货商信息失败条件未查询到需要修改的供货商信息相关用例输入概述所需修改的供货商信息输出概述修改结果使用性备注用例备注主事件流步骤角色/系统描述数据项备注角色进入修改界面系统显示修改界面角色输入所需修改的供货商信息系统修改是否成功修改成功如果修改成功转到A1如果修改不成功转到A2分支事件流编号主事件流步骤号角色/系统条件描述数据项转去主事件流步骤号备注A14系统完成供货商信息修改返回成功信息修改的供货商信息2A24系统没有完成供货商信息修改返回失败信息修改失败的信息提示22.2.4供货商信息添加用例概述用例名称供货商信息添加主题领域供货商信息添加用例包用例定义供货商信息角色仓库管理人员业务触发事件进行供货商信息添加前置条件有需要添加的供货商信息记录结束条件成功条件查询到需要添加的供货商信息失败条件未查询到需要添加的供货商信息相关用例输入概述所需添加的供货商信息输出概述添加结果使用性备注用例备注主事件流步骤角色/系统描述数据项备注角色进入添加界面系统显示添加界面角色输入所需添加的供货商信息系统添加是否成功添加成功如果添加成功转到A1如果添加不成功转到A2分支事件流编号主事件流步骤号角色/系统条件描述数据项转去主事件流步骤号备注A14系统完成供货商信息添加返回成功信息添加的供货商信息2A24系统没有完成供货商信息添加返回失败信息添加失败的信息提示23.3功能模块图功能模块:山口电脑仓库管理系统包括仓管部信息管理、业务管理、系统维护等几个功能模块。仓管部信息管理仓管部信息管理仓管部业务管理山口电脑仓库管理系统系统维护图3-3总功能模块图1、仓管部信息管理模块:为仓管部主管提供对仓管部信息的管理维护的功能。仓管部信息管理基本信息管理仓管部信息管理基本信息管理出库信息维护入库信息维护库检信息维护报表信息管理系统设置客户信息维护供货商信息维护库房信息维护短线货品信息维护部件、礼品信息维护修改密码成品品信息维护库存信息维护在库信息管理仓管人员信息维护图3-3-1仓管部模块图 一、仓管部信息管理模块,如图所示,包括以下功能模块:基本信息管理模块:为管理员提供实现对客户信息、供货商信息、库房信息和仓管人员信息的管理维护,包括对信息查询、添加、修改和删除等操作。在库信息管理模块:a、库存信息管理模块:为管理员提供实现对短线货物、货物信息的管理维护,包括对信息查询、添加、修改和删除等操作。b、库检信息管理模块:为管理员提供实现对产品库检信息、部件库检信息、礼品库检信息的管理维护,包括对信息查询、添加、修改和删除等操作。出库信息管理模块:为管理员提供查询、添加、修改和删除出库流向单(包括:产品出库单、部件出库单、礼品出库单)的操作,其中添加和删除操作后的出库货检单要交由管理部审核。入库信息管理模块:为管理员提供查询、添加、修改和删除入库流向单(包括:部件入库单、产品入库单、礼品入库单)的操作、其中添加和删除操作后的入库货检单要交由管理部审核。报表信息管理模块:为管理员提供实现对报表信息的管理维护,包括对报表信息查询、浏览和上交等操作。系统设置模块:为管理员提供实现对密码修改、清除表信息的功能管理部信息管理管理部信息管理仓管部人员管理仓库报表管理仓库货检信息管理基本信息管理系统设置修改密码备份数据库恢复数据库、图3-3-2管理部模块图二、管理部信息管理模块,如图所示,包括以下功能模块:1、仓管部人员管理模块:为管理员提供实现对仓库部门信息的管理维护,包括对部门信息查询、添加、修改和删除等操作。2、仓库报表管理模块:为管理员提供实现对报表信息的管理维护,包括对报表的查询、浏览和删除等操作。3、仓库货检信息管理模块:为管理员提供实现对货检信息的管理维护,包括对在库货检信息、入库货检信息和出库货检信息的审核操作。4、基本信息管理模块:为管理员提供实现对基本信息进行添加、删除、查询和浏览功能、5、系统设置模块:为管理员提供实现修改密码、备份数据库和恢复数据库的功能
第4章详细设计4.1ER图ER图就是实体关系图,主要完成了对系统中数据部分设计。E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系。以下是系统的整个ER图:图4-1ER图4.2数据库设计数据库设计(DatabaseDesign)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。一般,数据库的设计过程大致可分数据库设计为5个步骤:需求分析;调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。概念设计;对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中住处的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。以扩充的实体—(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。物理设计;根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。验证设计;在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。数据库的完整性是指数据的正确性和有效性,是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据库的完整性包括:实体完整性、参照完整性和用户定义完整性。实体完整性(EntityIntegrity):现实世界的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中主键应作为唯一性标识。因此实体完整性规则规定基本关系的所有主键(PrimaryKey)都不能取空值(NULL)。参照完整性(ReferentialIntegrity):参照完整性维护表与表之间的相关性,通常用“主键(PrimaryKey)/外键(ForeignKey)”保证,其中ForeignKey可以取NULL值,或取其参照表中PrimaryKey的取值。用户定义的完整性(User_definedIntegrity):针对某一具体数据的约束条件,由应用环境决定。数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。4.2.1数据库的逻辑设计仓库管理系统所用的数据库是MySQL,如下是表在数据库的逻辑表示:表assembly的结构字段名注释类型长度是否主键是否不为空id编号INTEGER11√√Inbill_id入库单编号VARCHAR20Supplier_id供货商编号VARCHAR20Depot_id库房编号VARCHAR20Number数量INTEGER11Sumof_bad不合格数量INTEGER11Atcheck_date在库货检日期DATE11√In_date入库日期DATE11√Employee_id货检员编号char5表product的结构字段名注释类型长度是否主键是否不为空id编号INTEGER11√√Makebill_id组装单编号VARCHAR20√Depot_id库房编号VARCHAR20Check_id货检编号VARCHAR20Number数量INTEGER11Sumof_bad不合格数量INTEGER11Make_date组装日期DATE11√Check_date货检日期DATE11√表assembly_product的结构字段名注释类型长度是否主键是否不为空id编号INTEGER11√√Assembly_id部件编号VARCHAR20Product_id成品编号VARCHAR20表customer的结构字段名注释类型长度是否主键是否不为空Customer_id客户编号VARCHAR20√√name姓名VARCHAR20sex性别VARCHAR20credit信誉度INTEGER11phone电话号码VARCHAR20address地址VARCHAR20remark备注VARCHAR20表depot的结构字段名注释类型长度是否主键是否不为空Depot_id库房编号VARCHAR20√√Employee_id责任人编号VARCHAR20phone电话号码VARCHAR20address地址VARCHAR20remark备注VARCHAR20表employee的结构字段名注释类型长度是否主键是否不为空Employee_id人员编号VARCHAR20√√Inbill_id入库单编号VARCHAR20Supplier_id供货商编号VARCHAR20Depot_id库房编号VARCHAR20Number数量INTEGER11Sumof_bad不合格数量INTEGER11Atcheck_date在库货检日期DATE11√In_date入库日期DATE11√Employee_id货检员编号VARCHAR5表supplier的结构字段名注释类型长度是否主键是否不为空Supplier_id供货商编号VARCHAR20√√name姓名VARCHAR20√sex性别VARCHAR20credit信誉度INTEGER11phone电话号码VARCHAR20address地址VARCHAR20remark备注VARCHAR20表inbill的结构字段名注释类型长度是否主键是否不为空In_id入库单编号VARCHAR20√√Depot_id库房编号VARCHAR20Refer_date入库日期DATE11Wh_id提交人编号VARCHAR20Check_date货检日期DATE11Ch_id货检人编号VARCHAR20√Audit_date审核日期DATE11√M_id主管编号VARCHAR20In_state入库单状态VARCHAR20表inlist的结构字段名注释类型长度是否主键是否不为空id编号INTEGER11√√In_id入库单编号VARCHAR20√Assembly_id部件编号VARCHAR20√Supplier_id供货商编号VARCHAR20√Number数量INTEGER11Badnumber不合格数量INTEGER11Good_rate合格率VARCHAR20表makebill的结构字段名注释类型长度是否主键是否不为空Makebill_id组装单编号VARCHAR20√√Depot_id库房编号VARCHAR20Product_id成品编号VARCHAR20√Number数量INTEGER11Atcheck_date在库货检日期DATE11√Make_date组装日期DATE11Manager_id主管编号VARCHAR20√表outbill的结构字段名注释类型长度是否主键是否不为空Outbill_id出库单编号VARCHAR20√√Depot_id库房编号VARCHAR20Refer_date供货商编号VARCHAR20Refer_id提交人编号VARCHAR20Audit_date审核日期DATE11Out_state出库单状态VARCHAR11Audit_id审核人编号VARCHAR20Customer_id客户编号VARCHAR20√表outlist的结构字段名注释类型长度是否主键是否不为空id编号INTEGER11√√Outbill_id出库单编号VARCHAR20√Product_id成品编号VARCHAR20√Number数量INTEGER11表report的结构字段名注释类型长度是否主键是否不为空Reportid报表编号VARCHAR20√√Reporttype报表类型VARCHAR20√Depotid库房编号VARCHAR20√beginDate起始日期DATE11√endDate结束日期DATE11√createTime创建日期DATE11√referId提交人编号VARCHAR20√checkState审核状态VARCHAR20√checkDate审核日期DATE11AuditId审核人编号VARCHAR20表report_detail的结构字段名注释类型长度是否主键是否不为空id编号INTEGER11√√reportId报表编号VARCHAR20√Depotid库房编号VARCHAR20√goodsName货物名称VARCHAR40√goodsType货物类型VARCHAR30√allNumber总数量INTEGER11badNumber不合格数量INTEGER11checkId审核人编号VARCHAR20√4.3运行环境开发工具:Eclipse,软件环境:Tomcat6.0,JDK5.0以上,硬件环境:cpu:P32.0GHZ以上Memory:512M以上
第5章编码5.1登陆的实现5.1.1登陆actionimportjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importcom.javateam3.struts.form.LoginForm;importmon.dao.LoginService;/***MyEclipseStruts*Creationdate:05-30-2009**XDocletdefinition:*@struts.actionpath="/login"name="loginForm"input="/webpage/login.jsp"scope="request"validate="true"*/publicclassLoginActionextendsAction{ publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ LoginFormloginForm=(LoginForm)form; try{ StringuserName=loginForm.getUser_name().trim(); Stringpsw=loginForm.getPsw().trim(); LoginServiceloginService=newLoginService(); HttpSessionsession=request.getSession(true); if(loginService.login(userName,psw)){ session.setAttribute("username",userName);//如果登录成功把登录的名字放在session中以便在过滤器中判断 returnmapping.findForward("loginSuccess"); //返回到登陆成功页面 }else{ session.invalidate(); request.setAttribute("loginError","用户或者密码错误!!"); //返回到错误页面 returnmapping.findForward("loginError"); } }catch(Exceptione){ e.printStackTrace(); } returnnull; }}5.1.2登陆过滤器importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.*;publicclassSecurityAndDenyimplementsFilter{ publicvoiddestroy(){ //注销时调用 } publicvoiddoFilter(ServletRequestreq,ServletResponseresp, FilterChainchain)throwsIOException,ServletException{ HttpServletRequestrequest=(HttpServletRequest)req; HttpServletResponseresponse=(HttpServletResponse)resp; HttpSessionsession=request.getSession(false);//取出来session如果没有得到空值 if(session==null||session.getAttribute("username")==null){ //判断是否登录过如果没有就重定向到登陆页面 Stringtemp="你还没登陆请重新登陆!!"; temp=.URLEncoder.encode(temp.toString(),"utf-8");response.sendRedirect("http://localhost:8080/JT03EtpLgtWebProject03/login.jsp?loginErr="+temp); return; } //如果登录了就进入请求页面 chain.doFilter(req,resp); } publicvoidinit(FilterConfigarg0)throwsServletException{ //初始化时调用的方法 } }5.1.3登陆DAOpublicBooleanlogin(StringuserName,Stringpsw){ Employeeemployee=newEmployee(); employee.setPsw(psw); employee.setUserName(userName); Listresults=findByExample(employee); intlength=results.size(); if(length==1) { returntrue; } else { returnfalse; }}5.2供货商的实现5.2.1供货商查询Actionpackagecom.javateam3.whmsys.manager.basicinfo.supplyerinfo.action;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importmon.PageBean;importcom.javateam3.whmsys.manager.basicinfo.supplyerinfo.form.QueryForm;importcom.javateam3.whmsys.manager.basicinfo.supplyerinfo.service.SupplierService;importmon.pojo.Supplier;importmon.utils.Tool;publicclassQueryActionextendsAction{ publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ QueryFormqueryForm=(QueryForm)form; SupplierServicess=newSupplierService(); PageBeanpageBean=newPageBean(); Listlist=null; //存放查出来的spplier对象 StringcrrPage=request.getParameter("cp"); intcurrentPage=pageBean.getCurrentPage(); intlineSize=pageBean.getLineSize(); Suppliersupplier=change(queryForm); if(crrPage!=null){ currentPage=Integer.parseInt(crrPage); }else{ intallRecorders=ss.getCount(supplier); Tool.setALLRECORDERS(allRecorders); Tool.setPAGESIZE((allRecorders+lineSize-1)/lineSize); pageBean.setAllRecorders(allRecorders); pageBean.setPageSize((allRecorders+lineSize-1)/lineSize); } list=ss.queryByExample(supplier,currentPage,lineSize); pageBean.setCurrentPage(currentPage); request.setAttribute("pageBean",pageBean); request.setAttribute("list",list);//把查询出来的supplier对象放在request里 returnmapping.findForward("supplierResult"); }//把form表单里的东西转化为supplier对象 publicSupplierchange(QueryFormqueryForm){ Suppliersupplier=newSupplier(); if(queryForm.getSupplierId()!=null &&!queryForm.getSupplierId().equals("")) supplier.setSupplierId(queryForm.getSupplierId()); if(queryForm.getAddress()!=null &&!queryForm.getAddress().equals("")) supplier.setAddress(queryForm.getAddress()); if(queryForm.getName()!=null&&!queryForm.getName().equals("")) supplier.setName(queryForm.getName()); if(queryForm.getCredit()!=null&&!queryForm.getCredit().equals("")) supplier.setCredit(queryForm.getCredit()); if(queryForm.getPhone()!=null&&!queryForm.getPhone().equals("")) supplier.setPhone(queryForm.getPhone()); if(queryForm.getRemark()!=null&&!queryForm.getRemark().equals("")) supplier.setRemark(queryForm.getRemark()); returnsupplier; }}5.2.2供货商修改Actionimportjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importmon.pojo.Supplier;importcom.javateam3.whmsys.manager.basicinfo.supplyerinfo.form.ModifyForm;importcom.javateam3.whmsys.manager.basicinfo.supplyerinfo.service.SupplierService;publicclassModifyActionextendsAction{ publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ ModifyFormmodifyForm=(ModifyForm)form; Suppliersupplier=newSupplier(); supplier.setAddress(modifyForm.getAddress()); supplier.setCredit(modifyForm.getCredit()); supplier.setName(modifyForm.getName()); supplier.setPhone(modifyForm.getPhone()); supplier.setRemark(modifyForm.getRemark()); supplier.setSupplierId(modifyForm.getSupplierId()); SupplierServicess=newSupplierService(); try{ ss.upDate(supplier); returnmapping.findForward("success"); }catch(Exceptione){ e.printStackTrace(); returnmapping.findForward("error"); } }}5.2.2供货商添加Actionimportjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importmon.pojo.Supplier;importcom.javateam3.whmsys.manager.basicinfo.supplyerinfo.form.AddForm;importcom.javateam3.whmsys.manager.basicinfo.supplyerinfo.service.SupplierService;publicclassAddActionextendsAction{ publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ AddFormaddForm=(AddForm)form; Suppliersupplier=newSupplier(); supplier.setAddress(addForm.getAddress()); supplier.setCredit(addForm.getCredit()); supplier.setName(addForm.getName()); supplier.setPhone(addForm.getPhone()); supplier.setRemark(addForm.getRemark()); supplier.setSupplierId(addForm.getSupplierId()); SupplierServicess=newSupplierService(); try{ ss.insert(supplier); returnmapping.findForward("success"); }catch(Exceptione){ e.printStackTrace();//出现异常打印轨迹 returnmapping.findForward("error"); } }}5.2.3供货商DAOpackagecom.javateam3.whmsys.manager.basicinfo.supplyerinfo.dao;importjava.util.ArrayList;importjava.util.List;importorg.hibernate.Criteria;importorg.hibernate.LockMode;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.Transaction;importorg.hibernate.criterion.Example;importmon.dao.BaseHibernateDAO;importmon.pojo.Supplier;importmon.utils.UtilGetExample;publicclassSupplierDAOextendsBaseHibernateDAO{ publicstaticfinalStringNAME="name"; publicstaticfinalStringADDRESS="address"; publicstaticfinalStringPHONE="phone"; publicstaticfinalStringCREDIT="credit"; publicstaticfinalStringREMARK="remark"; publicstaticfinalStringSUPPLIERID="supplierId"; publicvoidsave(SuppliertransientInstance){ Transactiontransaction=null; try{ Sessionsession=getSession(); transaction=session.beginTransaction(); session.save(transientInstance); mit(); session.close(); }catch(Exceptionre){ } } publicvoidupDate(SuppliertransientInstance)throwsException{ try{ Sessionsession=getSession(); Transactiontransaction=session.beginTransaction(); session.update(transientInstance); mit(); session.close(); }catch(RuntimeExceptionre){ throwre; } } publicSupplierfindById(java.lang.Stringid){ try{ Sessionsession=getSession(); Transactiontransaction=session.beginTransaction(); Supplierinstance=(Supplier)session.get( "mon.pojo.Supplier",id); session.close(); returninstance; }catch(RuntimeExceptionre){ throwre; } } publicintgetCount(Supplierinstance)throwsException{ if(instance.getSupplierId()!=null) { Suppliersupplier=findById(instance.getSupplierId()); if(supplier!=null) { return1; } else{ return0; } } else{ Sessionsession=getSession(); Transactiontransaction=session.beginTransaction(); Criteriac=session.createCriteria( "mon.pojo.Supplier").add( Example.create(instance)); inti=c.list().size(); mit(); session.close(); returni;} } publicListfindByExample(Supplierinstance,intcurrentPage,intlineSize) throwsException{ Listlist=null; Sessionsession=getSession(); if(findByProperty(SUPPLIERID,instance.getSupplierId()).size()==0||findByProperty("supplierId",instance.getSupplierId())==null) { Examplees=UtilGetExample.getExample(instance); Transactiontransaction=session.beginTransaction(); Criteriac=session.createCriteria( "mon.pojo.Supplier") .add(es); c.setFirstResult((current1)*lineSize); c.setMaxResults(lineSize); list=c.list(); mit(); getSession().close(); if(list.size()==0||list==null) { returnnull; } returnlist; } else { returnfindByProperty("supplierId",instance.getSupplierId()); } }}
第6章测试6.1登陆测试方案输入空账号输入不存在的账号密码输入正确的账号和错误的密码输入正确账号和空密码没有登录直接访问页面6.2数据录入测试录入一条空记录录入一条以上全部数据项非空记录录入一条以上只填必填数据项的记录录入一条以上只填非必填数据项的记录对具有外键关联的表录入一条以上检验外键约束的记录录入一条以上正确的记录录入一条以上检验其他自定义完整性约束的记录6.3查询测试正常查询一条以上记录查询各种查非所查的记录查询各种不对应选项的查询6.4测试结论首先,我们要认识到测试是软件开发过程中一个非常重要的环节,一个好的软件必须经过无数次的测试,软件测试是保证软件质量的关键步骤。在经过对各模块的测试后,已经能够证实该软件各方面的能力都可以正常运行。该软件在各方面的综合能力都通过。第7章使用说明7.1系统功能简介本系统角色包括两种,仓库主管和普通管理员,其中,仓库主管拥有整个系统的最高权限。仓库主管负责整个山口物流公司仓管部的日常运作和管理工作,除了具有普通管理员的权利,还具有以下权利和义务,主要包括:基本信息管理:维护客户信息、供货商信息和仓管员信息,具体操作有添加、修改、删除和查询。入库管理:查看入库单,并且具有审批的功能,以决定是否需要入库。如果没有通过审批,将不能入库。出库管理:查看出库单,具有审批的功能,如果没有通过审批,将不能出库。报表信息管理:打印、查看一些报表。系统设置:修改个人信息,备份和还原数据。在库管理:管理在库的物品,记录盘点信息,以及维护仓库。退货信息管理:管理退货信息,包括客户向公司的退货,以及公司向供货商退货。仓管部管理人员:负责仓库的出入库管理,可以根据流向单实现出/入库操作;管理库内的产品,记录一些库检、盘点等信息,还可以修改个人信息等。具体权限有:基本信息管理:只可以查询客户信息,供货商信息和仓管员的信息,不能对其做任何修改或删除操作。还可以查询仓库信息。入库管理:添加入库单,然后提交给主管审批,如果通过审批,则可以入库。对于通过审批的入库单,不能再作修改,只能查询;对于没有通过审批的入库单,可以根据主管的批注作修改或删除的操作。出库管理:添加出库单,然后提交给主管审批,如果通过审批,则可以出库。对于通过审批的出库单,不能再作修改,只能查询;对于没有通过审批的出库单,可以根据主管的批注作修改或删除的操作。在库管理:查看库存信息、成品组装、在库移动、以及记录盘点信息。退货信息管理:管理退货信息,包括客户向公司的退货,以及公司向供货商退货。报表信息管理:打印、查看一些报表。系统设置:修改个人信息。7.2运行环境简介硬件环境:服务器端:推荐配置为1G内存,CPU为1700MHZ以上配置,硬盘容量为80G的微机。通信网络:依托校园网,网络协议为HTTP、TCP/IP。软件环境:服务器端:操作系统:Windows2000/NT/XP/2003数据库服务器:MySQLServer4.1Web服务器:ApacheTomcat6.0技术架构平台:SunJ2DK1.6客户端:操作系统:Windows2000/XP/2003浏览器:InternetExplore6.0或以上版本屏幕分辨率推荐为:1024*768或以上7.3系统运行与操作指南配置该项目,启动Tomcat服务器,打开InternetExplorer,在URL地址中输入http://localhost:8080/JT03EtpLgtWebProject03/login.jsp,进入登录页面,根据输入的用户,可以判定是主管或者是普通仓管员,用户名和密码都正确,即可登录到相应的主页面,进行相应的操作。7.4操作演示主登陆页面7.5特色介绍本系统根据山口物流公司实际需求进行设计和开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《子网掩码的计算》课件
- 第6单元 科技文化与社会生活(B卷·能力提升练)(解析版)
- 百货商店电器城保安工作总结
- 集装箱散货转化公路运输代理协议三篇
- 2023-2024年员工三级安全培训考试题附参考答案【典型题】
- 乘除法应用题课件
- 2023年-2024年企业主要负责人安全培训考试题附解析答案
- 教育资源整合研究报告
- 《督脉与腧穴》课件
- 云平台下的供应链协同-洞察分析
- 性格决定命运课件
- 球磨机安全检查表分析(SCL)+评价记录
- 学习会计基础工作规范课件
- 双面埋弧焊螺旋钢管公称外公壁厚和每米理论重量
- 富士施乐VC2265打印机使用说明SPO
- 医院工会经费使用与管理办法、制度规则
- 服务态度决定客户满意度试题含答案
- 中学历史教育中的德育状况调查问卷
- 教科版四年级科学上册全册复习教学设计及知识点整理
- 重庆万科渠道制度管理办法2022
- 上海黄金交易所贵金属交易员题库
评论
0/150
提交评论