- 215.13 KB
- 2022-05-16 18:34:52 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
~~1绪论随着社会经济的不断发展,各个企业也面临着各种机遇和挑战。为了能够在这个信息化的时代继续发展下去,就必须紧跟上时代的脚步。随着网络技术的不断发展,现代物流技术也在不断的更新换代。传统的人工记载的办公方法已经无法满足很多企业的需要,因此,每个企业都需要一个自动化的仓库管理系统。仓库是每个企业都必须谨慎管理的地方,因为货物是企业最基本的本钱,只有很好地管理好自己企业的货物,才能在竞争如此激烈的社会中谋得一片天地。本课题正是根据这一理念,开发了一个功能比较完善,基本能满足企业要求的仓库管理系统。1.1系统开发背景随着计算机技术的发展,一个崭新的信息化的世界已经展现在我们眼前。如今,你可以随处看到很多不同种类的信息管理系统。商品是企业的根本,仓库是企业用来保存商品的地方。因此,仓库对于企业十分重要。所以说一个成功的企业必定会有一个好的仓库,而一个好的仓库就肯定会有一个先进的仓库管理系统作为支撑。但是,传统简单、静态的仓库管理系统,因为其不具备信息共享功能,且无法保证货物的正确的进库、库存控制和发货等问题,已经无法确保企业资源的高效利用;而且,传统的仓库管理系统存在维护困难、开发复杂等缺点,极大的浪费企业的人力、物力,因此已经跟不上时代的步伐。所以说,一个成功的企业需要一个现代的仓库管理系统来保证企业产品的精细化管理,保证最大化利用企业资源。1.2系统开发目的仓库是所有企业都不可缺少的部分,因此,一个企业想要蓬勃发展,管理好自己的仓库就显得十分重要。但是仓库中的货物总是不断变动的,因此,就需要有人将仓库中货物的增减情况进行记录。但是传统的人工记录的方法存在着许多问题,比如信息安全行性低、查询效率低等。因此,对于一个想要不断发展的企业来说,这种人工记录的方式必须淘汰。随着计算机技术的不断发展,计算机的使用已经十分普遍,每个企业都拥有计算机。使用计算机对库存信息进行管理有着很多人工记录所无法比拟的优点,比如查询快捷、信息安全性高、添加删除方便等。基于以上这些原因,我开发了一个仓库管理系统。本系统能够~~~
~~保证货物的正确的进库、库存控制和发货。并且,系统维护简单,不需要动用太多的人力、物力,可以有效的帮助企业管理好仓库。1.3系统开发平台本系统采用B/S的三层架构,系统使用MyEclipse开发工具,基于J2EE平台,采用MVC开发模式,JSP、Struts技术,选用SQLServer2000作为系统的数据库平台。1.3.1MyEclipse全名MyEclipseEnterpriseWorkbench,简称MyEclipse。MyEclipse企业级工作平台是对EclipseIDE的扩展,利用它我们可以极大的提高在数据库和J2EE的开发、发布,以及应用程序服务器整合方面的工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码功能、调试功能、测试功能、发布功能等,完整支持HTML、Struts、JSP、CSS、Javascript、SQL、Hibernate等框架。1.3.2JSP技术JSP技术是主流Web开发技术中使用最为广泛的一种,它是由Sun公司推出的一款基于Java语言的Web开发技术。在Sun公司的倡导下,许多公司都参与到了JSP的开发之中,使得JSP成为了动态网页技术的标准。JSP技术不仅继承了Java语言的强大功能,可以方便的开发出先进、安全和跨平台的电子商务系统,而且还拥有JavaServlet的稳定性,并可以使用Servlet提供API。JSP是目前比较热门的一款Web网页开发技术,由它开发出的系统具有良好的扩充性,实用性较高。JSP技术使用Java编程语言编写类XML的tags和scriptlets来封装动态网页产生的处理逻辑。JSP技术将网页的设计和显示与网页逻辑分离开来,并且设计成支持可重用的基于组件,这些功能极大的提高了基于Web的应用程序的开发效率。当有访问JSP页面的请求发送到Web服务器时,首先将其中的程序段进行执行,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以用来进行数据库、重新定向网页等操作,以实现建立动态网页所需要的功能。JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。[2]1.3.3Struts2~~~
~~Struts2框架是在Struts1和WebWork框架的基础上开发出来的,它吸收了2个框架的优点。Struts1框架和WebWork框架是2个完全不同的框架。因此,虽然Struts2感觉上好像是Struts1的升级版,但是却和Struts1相比,在设计理念上有着本质的不同。在体系结构和运行流程上Struts2和WebWork非常相似,因此,可以将Struts2理解成是继承了WebWork的血统。Struts2框架大致是由核心控制器、业务控制器和用户实现的业务逻辑组件3个部分组成。其中,FilterDispatcher充当着核心控制器,该控制器作为一个Filter运行在Web应用中,并负责拦截用户的所有请求。用户使用软件时,如果请求最后是以“.action”结尾,那么,该请求就将转入到Struts2框架中进行处理。用户自己实现的Action类的实例其实就是业务控制器,在这些Action类中,一般都包含一个execute()方法,该方法的返回值一般都是一个字符串,就是一般我们所说的逻辑视图名,并且,总有一个实际要转到的视图资源和这些逻辑视图名相对应。虽然Struts2在核心控制器和业务控制器方面为用户提供了很多帮助,但是在业务逻辑组件方面,它确没有提供太多的帮助。业务逻辑组件其实只是一个表现层的框架,因此在实际开发过程中,当控制器需要获取业务逻辑组件时,通常都要通过Factory模式来获取所需的业务逻辑组件实例。[3]1.3.4MicrosoftSQLServer2000MicrosoftSQLServer2000是一款由微软公司开发的数据库产品。它拥有很多的分类,但基本都是产品规格上的改变,内部包含的服务不同。一般有企业版,各人版,移动版以及搜索引擎类等版本。其中,企业版相对与其它几个版本来说,功能比较齐全,但是确不能在WindowXP下安装,这点比较遗憾。MicrosoftSQLServer2000的主要作用是对程序所需要的数据进行存储、分析、查询、修改等操作。MicrosoftSQLServer2000简化了之前版本数据库中的管理和优化功能,并且极大的提高了在线商务应用程序成功部署所需的可靠性和伸缩性。其中,日志传送、在线备份和故障切换群集等功能用以提高可靠性的特性。并且,对32颗CPU和64GBRAM的支持也在很大程度上改进在伸缩性方面。通过对数据文件尺寸的自动管理、基于向导的数据库拷贝、自动内存管理和简化的故障切换群集安装与管理等一系列的自动优化和改进后的管理特性,使得用户能够迅速部署并有效管理在线商务应用程序。MicrosoftSQLServer还提供了数据库完整性保护。在SQLServer中,为了对实现数据库完整性的约束,则通过检查(Check)约束、默认值(Default)约束、用户定义的数据类型、规则(Rule)、存储过程(Storedprocedure)、触发器(Trigger)等技术来实现,从而使数据库中的数据达到一致、正确,以提高数据库系统的性能。~~~
~~2系统需求分析需求分析是系统开发的首要步骤,也是直接影响系统整体性能和功能的关键步骤。系统的需求分析主要是对系统的可行性、性能和功能进行具体地分析。不合理的需求分析,会使系统的开发环节出现许多错误和走许多弯路,导致系统开发时间长,效率低,系统质量受到影响。2.1运行环境分析硬件需求CPU:1G以上内存:512M以上硬盘:1G以上系统环境操作系统:WindowXP/Window2000数据库:SQLServer2000开发工具:MyEclipse开发语言:Java2.2功能模块分析(1)功能分析系统具有仓库管理系统的基本功能。系统分为两个部分,一个是用户部分:用户可以使用用户名和密码登录系统进行操作。一个是系统部分:这部分包括对商品的入库、出库操作,在库货物查询等功能。(2)模块分析登录模块:仓库管理人员进入系统必须经过登录。添加商品信息模块:新入库的商品,在进入仓库之前,必须经过仓库管理人员的进行添加。入库模块:仓库中已有的商品才能进行的操作,主要是入库数量上的变化。商品类别管理模块:商品类别来区分各种商品,将商品分类管理。2.3系统目的分析~~~
~~仓储物流在企业的整个供应链中起到一个至关重要的作用,如果不能正确的保证货物的入库,库存货物的发货,将导致企业管理费用的增加。并且,仓库管理人员的工作时间会延长,工作的效率不高。开发这个系统,主要的目的就是帮助仓库管理人员提高工作效率,降低工作时间,实现仓库货物在管理上的系统化,规范化和自动化。2.4性能分析本系统操作简单,界面美观,使用本系统的仓库管理人员不需要掌握太多的专业知识便可熟练使用。系统能够迅速的将仓库管理人员对商品信息的操作(包括商品的入库、出库,商品信息的修改和删除,商品类别的添加和删除等)显示在对应的页面中,达到“即时操作,即时显示”的效果。系统功能完善,包括了一般仓库管理系统的所有功能,完全能够满足用户的需要。~~~
~~3系统设计系统的设计是系统开发中的一个重要环节。本章将主要介绍一个基于B/S架构的仓库管理系统的总体结构、系统架构和数据库设计。总体结构主要介绍了各个模块之间的关系,数据库设计主要说明了表的建立和数据之间的关系。3.1总体结构本系统包含了仓库管理系统所需要的基本功能,能够满足一般用户对于仓库管理的需要,能有效的提高仓库管理人员的工作效率。根据系统的需求分析,系统大体分为以下几个模块:登录模块、添加商品信息模块、出库模块、入库模块、商品类别管理模块。其中,各个模块又有不同的子模块。总体结构如图3.1所示。仓库管理系统登入商品信息查询商品入库新入库商品管理商品类别管理出库商品信息查询删除信息商品出库添加删除图3.1总体结构图~~~
~~3.2系统架构系统是基于B/S结构开发的,B/S结构分为表示层、业务层、数据层三层。其中:(1)表示层:作为用户的接口层,负责用户与整个系统交互,利用JSP技术来实现。(2)业务层:作为业务逻辑的封装层,采用Struts2框架,页面接受到用户请求后,将数据层取到的数据进行处理,最后把处理结果在表示层中显示出来。(3)数据层:作为数据的存储层,采用SQLServer2000数据库进行数据的管理。3.3数据库设计3.3.1概念结构设计概念设计从系统的需求出发,用数据流的形式将设计对象表达成完整的抽象实体。但不涉及模块内部的细节。它的描述工具是E-R图,如图3.2所示。管理人员货物用户名密码商品名称商品号码商品类别商品数量生产厂家入库出库MN修改删除管理添加图3.2系统E-R图~~~
~~3.3.2逻辑结构设计逻辑结构的描述方法是基本表,它反映了系统中所涉及数据的逻辑结构。根据系统中数据信息的特点,将数据的概念模型转换为关系模型。(1)用户信息关系模式,其中用户名为关系主键。用户(用户ID、用户名、密码)(2)商品信息关系模式,其中商品号码为关系主键。商品(商品号码、商品名、生产产地、商品数量、类别ID)(3)商品类别信息关系模式,其中类别ID为关系主键。商品类别(类别ID、类别名)(4)出库商品信息关系模式,其中商品号码为关系主键。出库商品(商品号码、商品名、生产产地、出库数量、类别ID)表3.1商品信息表(kehu)列名数据类型可否为空说明comIDVarchar(50)NOTNULL商品IDcomnameVarchar(50)NULL商品名称comfromVarchar(50)NULL生产厂家comnumberChar(10)NULL商品数量sortIDint(4)NULL商品类别ID表3.2商品出库信息表(outkehu)列名数据类型可否为空说明comIDVarchar(50)NOTNULL商品IDcomnameVarchar(50)NULL商品名称comfromVarchar(50)NULL生产厂家comnumberChar(10)NULL商品数量sortIDint(4)NULL商品类别ID~~~
~~表3.3仓库管理员信息表(abc)列名数据类型可否为空说明userIDchar(10)NOTNULL管理员IDusernamechar(10)NULL管理员姓名passwordchar(10)NULL密码表3.4商品类别管理信息表(sort)列名数据类型可否为空说明sortIDInt(4)NOTNULL商品类别IDsortNameChar(10)NULL商品类别名称3.3.3物理结构设计本系统采用MicrosoftSQLServer2000数据库系统,系统提供了良好的数据库管理功能来管理商品数据。数据库名为fmw,表名分别为kehu、abc、outkehu、sort。数据的备份和恢复采用数据库系统本身提供的数据导入/导出工具来完成,形成相应的数据文件。其中数据文件名为fmw_Data.MDF;日志文件名为fmw_Log.LDF。~~~
~~4系统实现该系统实现了仓库管理系统的基本功能,包括商品的入库、出库,商品信息的修改和删除,商品类别的添加、删除。用户(即仓库管理人员)登录后可以进入系统使用主界面,在主界面上,仓库管理人员可以对本系统的各个界面进行操作。4.1数据库连接和页面显示4.1.1数据库连接本系统与数据库的连接方式,包括对数据库中的信息进行添加、删除、修改,都封装在一个名为DBOper.java的文件中,以便仓库管理人员在计算机上运行本系统时,对数据库进行必要的操作。具体代码如下。importjava.sql.*;publicclassDBOper{publicDBOper(){try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");}catch(ClassNotFoundExceptione){}}privateConnectiongetConnection(){Connectionconn=null;try{conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=fmw","sa","sa");//填写相关的数据库名和数据库用户名和密码Statementstmt=conn.createStatement();}catch(SQLExceptione){System.out.println(e.getMessage());}returnconn;}publicResultSetexecuteQuery(Stringsql)~~~
~~{ResultSetrs=null;try{Connectionconn=this.getConnection();Statementstmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLExceptione){System.out.println(e.getMessage());}returnrs;}//用于执行Insert、Update、Delete语句以及SQLDDL语句publicintexecuteUpdate(Stringsql){intnum=0;try{Connectionconn=this.getConnection();//初始化数据库的连接Statementstmt=conn.createStatement();//执行一个连接num=stmt.executeUpdate(sql);//执行sql的操作}catch(SQLExceptione){System.out.println(e.getMessage());}returnnum;}//关闭一个连接privatevoidcloseConn(Connectionconn){if(null!=conn){try{conn.close();}catch(SQLExceptione){e.printStackTrace();~~~
~~}}}//关闭一个连接privatevoidcloseStam(Statementstmt){if(null!=stmt){try{stmt.close();}catch(SQLExceptione){e.printStackTrace();}}}}4.1.2页面显示本系统的页面显示很多都是采用的分页显示。因为,在一般的情况下,仓库中的商品补可能只有一种,因此,要将商品的信息分开显示出来就需要用到分页查询的功能。具体代码如下。publicListqueryByPage(intpageSize,intpageNow){Listlist=newArrayList();try{if(this.getConnection()!=null&&pageSize>0&&pageNow>0){pstmt=this.getConnection().prepareStatement("select*fromkehuorderbycomIDlimit"+(pageNow*pageSize-pageSize)+","+pageSize);//以商品ID为标准查询数据表kehu中的商品信息rs=pstmt.executeQuery();while(rs.next()){kehu=newKehu();kehu.setComID(rs.getInt(1));~~~
~~kehu.setComname(rs.getString(2));kehu.setComfrom(rs.getString(3));kehu.setComnumber(rs.getString(4));kehu.setSortID(rs.getString(5));list.add(kehu);}}}catch(SQLExceptione){e.printStackTrace();}returnlist;}4.2登录模块本系统是一个单用户系统。仓库管理人员使用用户名和密码登入系统之后,可进入主界面对系统进行操作。登录界面设计,如图4.1所示。图4.1用户登录界面当仓库管理人员登录系统,必须输入正确的用户名和密码,当输入的用户名或者密码错误时,就会出现登录失败的情况。实现判断登录人员用户名和密码是否错误功能的主要代码如下。publicStringexecute()throwsException{DBOperdbOper=newDBOper();Stringsql="select*fromabcwhereusername=""+username+""and~~~
~~password=""+password+""";//查询数据表abc中是否有这个用户名和密码ResultSetrs=dbOper.executeQuery(sql);System.out.println(sql);if(rs.next()){return"main";}elsereturn"error";//查询结果如果有则返回到main,没有,则返回error,这两个返回值对应两个JSP页面}4.3主界面模块当仓库管理人员用正确的用户名和密码登录进系统之后,即可直接进入到主界面。在主界面上,有各个子功能界面的超链接选项,包括商品信息查询、商品入库、新商品入库管理、商品类别管理、商品出库信息查询。当仓库管理人员完成工作后,即可选择退出。主界面如图4.2所示。图4.2应用界面4.4商品信息查询模块本模块主要功能为商品信息查询。仓库管理人员进入该页面后,可以在本模块的界面中查询到所有商品的信息,并且还有关于商品出库和修改商品信息操作的超链接选项。界面如图4.3所示。~~~
~~图4.3商品信息界面从图中可以看到,仓库管理人员可以看到所有商品的信息。这个主要由action包中的ShowGoodsAction.java类来实现的。ShowGoodsAction.java类的作用是创建一个链表,将要显示的商品信息放入这个链表中。具体代码为:ShowGoodsAciton.java:publicclassShowGoodsAction{publicStringexecute()throwsException{DBOperdb=newDBOper();ResultSetrs=db.executeQuery("select*fromkehu");//查询kehu这个表ArrayListlistGoods=newArrayList();//创建一个名为listGoods的链表while(rs.next()){Goodsgoods=newGoods();goods.setComID(rs.getString(1));goods.setComname(rs.getString(2));goods.setComnumber(rs.getString(4));goods.setSortID(rs.getString(5));goods.setComfrom(rs.getString(3));listGoods.add(goods);//将取出的商品信息放到listGoods这个链表中}ActionContextactionContext=ActionContext.getContext();Mapmap=actionContext.getApplication();map.put("listGoods",listGoods);//将链表里的内容放到map对象里~~~
~~return"success";}4.4.1商品出库当仓库管理人员需要对在库商品进行出库操作时,只需在商品查询界面的相应的商品信息后点击出库操作的选项。点击出库选项之后,便进入到商品出库操作界面,界面如图4.4所示。图4.4商品出库界面当仓库管理人员点击确定之后,页面会根据仓库管理人员输入的数量,对数据库中该商品的数量进行删减。完成该功能所需的代码如下。publicclassDeleteWaresAction{privateStringcomID;privateStringcomnumber1;publicStringexecute()throwsException{DBOperdbOper=newDBOper();Stringsql="updatekehusetcomnumber=comnumber-""+comnumber1+""wherecomID=""+comID+""";//以商品ID为条件,将该商品在原有数量的基础上,减去输入的数量intnum=dbOper.executeUpdate(sql);System.out.println(sql);if(num!=0){~~~
~~return"success";}elsereturn"error";}publicStringgetComID(){returncomID;}publicvoidsetComID(StringcomID){this.comID=comID;}……}4.4.2商品信息修改当仓库管理人员需要对现在仓库中的商品信息进行修改时,只需在商品信息查询界面的相应的商品信息后点击修改操作的选项。修改选项是一个超链接,它触发了一个action,将仓库管理人员所选的这一行商品信息显示出来。如图4.5所示。图4.5商品信息修改界面从图中可以看到,页面上显示了将要修改的某一行商品的所有信息,并且可以直接在方框内进行修改。完成这个功能的代码如下。publicclassModify2Action{privateStringcomID;~~~
~~privateStringcomname1;privateStringcomfrom1;privateStringcomnumber1;publicStringexecute()throwsException{DBOperdbOper=newDBOper();Stringsql="updatekehusetcomname=""+comname1+"",comfrom=""+comfrom1+"",comnumber=""+comnumber1+""wherecomID=""+comID+""";//以商品ID为标记,替换商品的信息,因为商品ID为主键,不能替换intnum=dbOper.executeUpdate(sql);System.out.println(sql);if(num!=0){return"success";}elsereturn"error";}publicStringgetComID(){returncomID;}publicvoidsetComID(StringcomID){this.comID=comID;}……}4.5商品入库模块当有仓库中已有的货物进入仓库时,仓库管理人员可以使用主界面上的“商品入库”操作选项进入商品入库界面。在这个界面中,仓库管理人员可以看到现有商品的所有信息,并且可以在相应的商品信息后面点击入库操作选项进行商品的入库操作。该界面如图4.6所示。~~~
~~图4.6商品入库界面图中的商品信息的显示的方法和代码,参照4.4商品信息查询界面。4.5.1商品入库当点击了上图中的“入库”操作选项之后,就进入了商品入库操作的界面,在这个界面,仓库管理人员只需输入新入库的该商品的数量即可。该界面如图4.7所示。图4.7商品入库操作界面当仓库管理人员输入数量后,点击确定,即完成了对商品的入库操作。完成该功能的代码可参照完成图4.3功能所用的代码。之前很多次提到点击操作选项显示某一个商品的全部信息的操作功能,实现这个功能的代码如下。publicclassModifyAction{StringcomID;publicStringexecute()throwsException{Goodsgoods=newGoods();DBOperdb=newDBOper();Stringsql="select*fromkehuwherecomID=""+comID+""";//从数据库中查询所选商品ID的商品的信息~~~
~~System.out.println(sql);ResultSetrs=db.executeQuery(sql);ArrayListlistGoods1=newArrayList();//创建一个链表while(rs.next()){goods.setComID(rs.getString(1));goods.setComname(rs.getString(2));goods.setComnumber(rs.getString(4));goods.setSortID(rs.getString(5));goods.setComfrom(rs.getString(3));listGoods1.add(goods);}Maprequest=(Map)ActionContext.getContext().get("request");request.put("listGoods1",listGoods1);//将链表里的内容放到request对象里,使网页能够取出return"success";}publicStringgetComID(){returncomID;}publicvoidsetComID(StringcomID){this.comID=comID;}}4.6新商品入库管理模块当有新的商品进入仓库中时,仓库管理人员需点击主界面的“新商品入库管理”选项。在进行添加商品信息的操作过程中,商品的类别选择是根据一个连接着“sort”数据表的下拉框来选择的。当将新入库的商品的信息填写完毕之后,点击确定将新入库的商品的信息添加到管理商品信息的数据表“kehu”中。界面如图4.8所示。~~~
~~图4.8新商品入库操作界面当点击“确定”之后,就将仓库管理人员输入的新入库商品的信息保存到了数据库中,功能实现的具体代码如下。importjava.sql.ResultSet;importjava.util.Map;importado.DBOper;importcom.opensymphony.xwork2.*;publicclassAddAction{privateStringcomID=null;privateStringcomname=null;privateStringcomfrom=null;privateStringcomnumber=null;privateintsortID;//初始化商品的信息publicStringexecute()throwsException{DBOperdbOper=newDBOper();//实例化一个DBOperStringsql="insertintokehu(comID,comname,comfrom,comnumber,sortID)values(""+comID+"","+"""+comname+"","+"""+comfrom+"","+"""+comnumber+"","+"""+sortID+"")";//将填写的信息保存到kehu数据表中intnum=dbOper.executeUpdate(sql);if(num!=0){~~~
~~return"success2";}elsereturn"error";}publicStringgetComID(){returncomID;}publicvoidsetComID(StringcomID){this.comID=comID;}……}4.7商品类别管理模块在本文4.6章新商品入库管理模块中,我已经提到商品的类别选择是由一个连接着“sort”数据表的下拉框来选择的。因此,必定有一个管理着商品类别的界面。界面如图4.9所示。图4.9商品类别管理界面如图可见,商品类别的管理有添加和删除两个方面。点击上图的“增加商品类别”选项可进行商品类别的添加操作,操作的实现界面可参照本文4.5章的图4.6新商品入库管理;点击“删除商品类别”选项可进行商品类别的删除操作,在这个界面中,仓库管理人员可以看到现有的所有的商品类别的ID和名称,并点击相应商品类别后的删除选项进行商品类别的删除。界面如图4.10所示。~~~
~~图4.10删除商品类别界面实现删除操作的代码和本文4.8章中图4.10删除商品出库信息的相似,可参照此代码。上文提到添加新的商品信息时,商品类别是以下拉框的形式来选择的,下拉框的代码如下。<%DBOperdb=newDBOper();ResultSetrs=db.executeQuery("selectsortID,sortNamefromsort");//调用在DBOper里封装好的类,从sort表中查询sortID和sortNamewhile(rs.next()){%>><%=rs.getString(2)%><%//这是一个下拉框的代码,将sortID作为标识,在下拉框中显示sortName的信息}%>4.8商品出库信息管理模块当商品出库的时候,系统会记录下商品出库的信息并保存在数据库的“outkehu”表中,信息包括出库的商品的具体信息和出库的数量。为了实现上述功能,在仓库管理人员执行出库操作的同时,系统会先执行记录下出库的所有信息,再执行出库操作。如4.3图所示,出库的信息显示在下图4.11中。~~~
~~图4.11商品出库信息界面当仓库管理人员需要对出库商品信息做修改或者删除时,只需点击上图中的删除或者修改的操作选项。修改的界面同图4.4相似。删除出库商品信息的时候,只需点击所要删除的那行商品信息后的删除选项即可。实现的代码如下。publicclassDeleteWaresAction{privateintcomID;privateStringcomname=null;privateStringcomfrom=null;privateStringcomnumber=null;privateStringsortID=null;publicStringexecute()throwsException{DBOperdbOper=newDBOper();Stringsql="deletefromoutkehuwherecomID=""+comID+""";//删除选中的商品ID的那行商品信息intnum=dbOper.executeUpdate(sql);System.out.println(sql);if(num!=0){return"success";}elsereturn"error";}~~~
~~5系统测试5.1测试方案设计系统测试是一个系统必须经历的过程,一个系统想要能满足用户需求,就必须经过一套科学的、完善的测试。对于本系统,我做了以下几方面的测试:(1)数据合法性测试。这是对输入的数据是否合法的一个测试。(2)数据一致性测试。在这个测试的过程中,我对数据进行了添加、删除、修改的操作,观察界面上显示的数据是否与操作的内容相一致。(3)功能模块测试。这个测试是对各个模块是否能正常运行的一个测试。5.2测试过程及结果分析(1)登录模块测试根据系统登录界面进行测试。比如测试当仓库管理人员用错误的用户名和密码能否进入系统,以此来达到测试目的。(2)新商品入库模块测试在此次测试过程中,我添加了一个新商品入库,之后进入商品信息查询界面去观察是否添加进去,以此来达到测试的目的。(3)商品入库、出库模块测试在此次测试过程中,我对某个商品的入库、出库进行了操作,之后进入商品信息查询界面,去观察商品信息的变动是否正确,以此来达到测试的目的。(4)商品类别管理模块测试在此次测试过程中,我对商品类别进行了添加、删除的操作,再进入新商品入库操作界面,在下拉框中观察商品类别的变化,以此来达到测试的目的。~~~