• 1.67 MB
  • 2022-04-22 11:33:55 发布

物流配送系统商务网站设计计划书.doc

  • 44页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'物流配送系统商务网站设计计划书目录前言1一.XXXXX策划书2二.网站功能需求设计分析3三、网站概要设计7四、网站详细设计15五、网站测试设计19六、网站开发总结性报告29结束语3143 一.选题背景在市场竞争的激烈的时代,建立科学,规范,高效管理体系是非常重要的。随着经济的快速发展,对库存的高效管理十分重要,高效的库存管理离不开信息技术,信息技术的飞速发展也为库存管理提供了广阔的舞台,采用现代化的手段管理库存,可以及时准确地反映库存状况,保证库存的数量保持在合理的水平,在满足客户的需要的同时最大限度地减少库存占用,从而在竞争中保持优势。传统的库存管理靠人工完成,需要大量的人力物力,人工管理方式有许多缺点和不便的地方,易出错,不能及时地把库存信息反映出来,大量的文件和数据不利于查找更新和维护。利用信息技术开发信息管理系统对库存进行管理,可以方便地实现快速查询,入库出库方便,可靠性高。因此,建立库存管理系统,对库存进行优化存储、管理,从而提高企业的科学管理水平,节省开支,使企业在竞争中立于不败之地。43 二.解决方案的选择(一)系统说明设计和实现库存管理系统,使库存管理的工作系统化、规范化和自动化,从而达到提高管理效率的目的。1.利用计算机系统实现商品库存管理。2.流程符合库存管理要求。3.查询方便,无论是按商品名称、仓库、区域、货位、时间、操作员其中任一项都可以进行有效查询。4.系统扩充容易,有很多地方还需要更好地完善。5.友好的用户界面,既面向系统开发者,又面向用户。(二)系统初步调查库存管理需要有:产品相关信息设置,产品入库、出库、移库、采购、库存盘点、库存查询等功能。应有入库信息的输入窗口,出库信息输入窗口,移库信息输入窗口、采购信息的输入窗口,产品相关信息设置的输入窗口,并且界面要自然、简便,要有充分的提示和帮助,以便于操作人员学习使用和掌握。对输入的错误又有好的措施,并随时掌握任务的进展情况,输出的形式要易于理解,结果要正确。当然了,对于用户来说,界面就是系统本身。用户特别关心能否有效地使用软件来解决问题,用户对软件功能的理解都在界面上表现出来。人机界面体现了系统的功能,以及操作的方便程度是否符合使用的要求与工作习惯。总之,应使管理部门及时掌握产品库存全面情况,并通过这样的系统,做到信息的规范管理,科学统计和快速查询,从而减少管理方面的工作量。根据用户提出的建议,为了开发出有效的库存管理系统,遵循以下原则:1.满足用户需要。之所以开发新系统是因为旧系统存在问题,束缚着组织的发展,不能适应用户的需要。系统必须能被用户接受,实现用户的初衷。2.功能更完善。功能是否完整,是指能否覆盖组织的主要业务管理范围。同时,还表现在各部分接口是否完备,数据采集和存储格式是否统一,各部分是否协调一致。3.技术更先进。正确认识各种先进技术的优劣长短,从而根据组织的实际情况和未来得发展将其合理的运用到库存管理43 系统的开发中去。要努力发挥其高速度、高精度、高密度的优点,也要避免其缺乏灵活性,不便于处理意外情况的缺点。同时,不要为了一味的先进,而忽视了技术本身的成熟性。4.实现辅助决策。许多组织的决策任务非常复杂、耗时,而决策关系到组织的兴衰。因此,所有的组织都需要能够帮助他们做出最佳的决策支持系统。(三)可行性研究可行性分析研究的目的就是用最小的代价在尽可能短的时间里确定问题是否能解决,通过研究与此类似的系统后,我们具体从下面三方面考虑。1.经济可行性库存管理系统是一个小型的管理系统,在开发时需要软件开发人员花费一定的时间和精力,因此需要一定的资金。但它给企业带来的利润是不可估量的,节省了许多人力,物力上的开支,使库存管理工作变繁为简,使其更加合理化、规范化。工作效率的提高就意为着整体水平的提高,是非常值得投资的。2.操作可行性系统采用了可视化面向对象的工具开发,其窗口、界面简洁易懂,所以系统在操作上是可行的。随着计算机知识的普及和推广,越来越多的人掌握了计算机的基本使用方法和基本。目前,公司的管理人员已经具备了一定的计算机基础知识和实际操作经验。对于局域网、WINDOWS等环境下的软件使用比较熟悉,对于新系统的开发,用户表现出极大的兴趣和热情,提出了各种很好的建议和要求。(四)对设计工具和相关技术的说明系统是采用JavaBean,Servlet,JSP开发,以MyEclipse,Dreamweaver作为开发工具,以SQLServer开发数据库,以Tomcat为服务器。1.系统开发技术(1)JSP技术介绍JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。JSP技术的强势:①一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。43 ②系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。③强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。④多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。(2)JavaBean技术介绍JavaBean是一种JAVA语言写成的可重用组件。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。(3)Servlet技术介绍Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。它担当Web浏览器或其他HTTP客户程序发出请求,与HTTP服务器上的数据库或应用程序之间的中间层。Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。1.系统开发环境和相关开发工具(1)Tomcat介绍Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。43 Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。(2)MyEclipse介绍MyEclipse企业级工作平台是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,CSS,JavaScript,SQL,,Struts,Hibernate等。 (3)Dreamweaver介绍Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。系统开发中,MyEclipse负责后台数据、业务逻辑的开发,而Dreamweaver负责前台网页的开发及美化。43 三、系统设计(一)系统设计原则(1)简单性:在达到预定的目标、具备所需要的功能前提下,系统应尽量简单,这样可减少处理费用,提高系统效益,便于实现和管理。(2)灵活性和适应性:以便适应外界的环境变化。可变性是现代化企业的特点之一,是指其对外界环境的变化的适应能力。作为企业的管理信息系统也必须具有相当的灵活性,以便适应外界环境的不断变化,而且系统本身也需不断修改和改善。因此,在这里系统的可变性是指允许系统被修改和维护的难易程度。一个可变性好的系统,各个部分独立性强,容易进行变动,从而可提高系统的性能,不断满足对系统目标的变化要求。(3)一致性和完整性:一致性是指系统中信息编码、采集、信息通信要具备一致性设计规范应标准;完整性是指系统作为一个统一的整体而存在,系统功能应尽量完整。(4)可靠性:系统的可靠性指系统硬件和软件在运行过程中抵抗异常情况的干扰及保证系统正常工作的能力。衡量系统可靠性的指标是平均故障间隔时间和平均维护时间。前者指平均的前后两次发生故障的时间,反映了系统安全运行时间,后者指故障后平均每次所用的修复时间,反映系统可维护性的好坏。只有可靠的系统,才能保证系统的质量并得到用户的信任,否则就是没有使用价值。(5)经济性:系统的经济性是指系统的收益应大于系统支出的总费用。系统支出费用包括系统开发所需投资的费用与系统运行维护费用之和;系统收益除有货币指标外,还有非货币指标。系统应该给用户带来相应的经济效益。系统的投资和经营费用应当得到补偿。需要指出的是,这种补偿有时是间接的或不能定量计算的。(二)总体设计通过对库存信息流程的详细调查分析,弄清了库存管理工作的业务流程和管理功能,符号定义如下:图3.1系统符号定义图43 系统业务流程图如下:图3.2基础数据管理图图3.3库存管理图(三)系统数据字典的创建为了对数据流程图中的各个元素做出详细的说明,有必要建立数据字典。数据字典的内容主要是对数据流程图中的数据项、数据结构、数据流、处理逻辑、数据存储和外部实体等六个方面进行具体的定义。43 表3.1数据项的定义数据项编号数据项名称简述类型及其宽度U-01用户编号用户的编码数值型U-02用户名用户的名称字符型,20位U-03用户密码用户登录时的密码字符型,16位U-04用户级别用户使用权限数值型U-05用户Email用户的电子邮件字符型,20位U-06用户手机用户的手机号码字符型,11位W-01仓库编号仓库的编号数值型W-02仓库名仓库的名称字符型,50位W-03最大区域数允许的最大区域数数值型W-04地址仓库所在的地址字符型,100位A-01区域编号仓库的编号数值型A-02区域名仓库的名称字符型,50位A-03最大货位数允许的最大货位数数值型A-04所在仓库区域所在的仓库数值型S-01货位编号货位的编号数值型S-02货位名货位的名称字符型,50位S-03最大货物数允许的最大货物数数值型S-04所在区域货位所在的区域数值型ST-01类别编号类别的编号数值型ST-02类别名类别的名称字符型,50位G-01货物编号货物的编号数值型G-02货物名货物的名称字符型,50位G-03类别货物所属的类别数值型G-04最大库存允许存储的最大货物数数值型G-05最小库存允许存储的最小货物数数值型G-06价格货物的价格数值型43 表3.2数据结构的定义数据结构编号数据结构名称简述数据结构组成DS-01用户表记录用户信息U-01+U-02+U-03+U-04DS-02仓库表记录仓库信息W-01+W-02+W-03+W-04DS-03区域表记录区域信息A-01+A-02+A-03+A-04DS-04货位表记录货位信息W-01+W-02+W-03+W-04DS-05类别表记录类别信息ST-01+ST-02+ST-03+ST-04DS-06货物表记录货物信息G-01+G-02+G-03+G-04+G-05+G-06表3.3数据流的定义数据流编号数据流名称简述数据流来源数据流去向数据流组成D-01入库单用户入库填写的单据用户入库管理模块商品名称,数量,仓库,区域,货位,备注D-02出库单用户出库时填写的单据用户出库管理模块商品名称,数量,仓库,区域,货位,备注D-03移库单用户移库时填写的单据用户移库管理模块商品名称,数量,移入仓库,移入区域,移入货位,移出仓库,移出区域,移出货位,备注D-04采购单用户采购时填写的单据用户采购管理模块商品名称,数量,备注43 表3.4处理逻辑的定义处理逻辑编号处理逻辑名称简述输入的数据流处理输出的数据流P1入库处理向入库表中添加信息,更新库存信息入库单查收货物要入库的货物,判断库存量是否满足入库量,登记入库信息,更新库存信息入库单P2出库处理向出库表中添加信息,更新库存信息出库单查收货物要出库的货物,判断出库后库存是否低于安全库存,登记出库信息,更新库存信息出库单P3移库处理向移库表中添加信息,更新库存信息移库单查收货物要移库的货物,登记移库信息,更新库存信息移库单P4采购处理向采购表中添加信息,更新库存信息采购单查收货物要采购的货物,登记采购信息,更新库存信息采购单43 表3.5数据存储的定义数据存储的编号数据存储的名称简述数据存储的组成关键字F1用户表存储用户信息用户编号,用户名,密码,级别,电子邮件,用户手机用户编号F2仓库表存储仓库信息仓库编号,仓库名,最大区域数,地址仓库编号F3区域表存储区域信息区域编号,区域名,最大货位数,仓库区域编号F4货位表存储货位信息货位编号,货位名,最大货物数,区域货位编号F5类别表存储类别信息类别编号,类别名类别编号F6货物表存储货物信息货物编号,货物名,类别,最大库存,最小库存,价格货物编号F7库存表存储库存信息库存编号,货物名,数量,仓库,区域,货位库存编号F8入出库表存储入出库信息入出库编号,货物名,仓库,区域,货位,操作员,数量,操作时间,类型,备注入出库编号F9移库表存储移库信息移库编号,货物名,操作员,数量,操作时间,移入仓库,移入区域,移入货位,移出仓库,移出区域,移出货位移库编号F10采购表存储采购信息采购编号,货物名,数量,操作时间,操作员,备注采购编号(四)系统功能模块划分根据用户操作需求,将系统划分如下,并对其模块的划分和功能进行描述。1.基础数据管理(1)仓库信息管理(2)区域信息管理(3)货位信息管理(4)类别信息管理(5)用户信息管理43 (6)货物信息管理2.库存管理(1)入库管理(2)出库管理(3)移库管理(4)库存盘点管理(5)库存统计管理(6)采购管理整个系统的模块结构如图所示。图3.4系统的功能模块图(五)系统功能模块明细系统共包括2大功能模块,12个小功能模块1.基础数据管理主要完成基本信息(仓库、区域、货位、类别、货物、用户)的维护工作,包括添加、修改、删除、浏览等功能。2.库存管理43 (1)入库管理。完成货物入库的管理,包括填写入库单,浏览入库信息等功能。货物入库时需要检查入库后货物库存是否超过货物最大库存,超出时,返回错误提示信息,禁止货物入库。货物入库后更新库存信息。(2)出库管理。完成货物出库的管理,包括填写出库单,浏览出库信息等功能。货物出库时需要检查出库后货物库存是否低于货物安全库存,低于时,返回错误提示信息,禁止货物出库。货物出库后更新库存信息。(3)移库管理。完成货物移库的管理,包括填写移库单,浏览移库信息等功能。货物移库后更新库存信息。(4)库存盘点管理。完成库存盘点的管理,包括浏览、查找库存信息,更新库存数目等功能,保证库存信息与实际保持一致,还可以通过仓库、区域、货位单条件或多条件浏览货物库存信息。(5)库存统计管理。可以对库存信息、入库、出库、采购操作进行详细的查询。查询条件包括按仓库、区域、货位查询,按时间查询,按操作员查询。43 四、数据库设计(一)数据库设计概述1.数据库概念结构设计这一阶段是在需求分析的基础上,设计出能够满足客户需求的各种实体,以及他们之间的关系,为后面的逻辑设计打下基础。本例的实体有:入库实体、出库实体、移库实体、采购实体。库存管理系统的局部E-R视图:图4.1系统局部E-R图库存管理系统的集成E-R视图:图4.2系统集成E-R图43 2.数据库逻辑结构设计现在需要将上面的数据库概念结构设计转化为SQLServer2000所支持的实际数据类型,也就是数据库逻辑结构。在上面的实体和实体关系的基础上,形成数据库的表格和个表格之间的关系。本系统的各个表格的设计结果如下:表4.1用户表编号字段名称数据结构说明1useridInt用户编号2usernameVarchar(20)用户名称3passwordVarchar(16)用户密码4gradeInt用户级别,1—超级用户,2—管理员,3-普通用户5emailVarvhar(20)电子邮件6mobileVarchar(11)手机号码表4.2仓库表编号字段名称数据结构说明1wareidInt仓库编号2warenameVarchar(50)仓库名称3maxareaInt最大区域数4addressVarchar(100)地址表4.3区域表编号字段名称数据结构说明1areaidInt区域编号2areanameVarchar(50)区域名称3wareidInt所在仓库4maxspaceInt最大货位数表4.4货位表编号字段名称数据结构说明1spaceidInt货位编号2spacenameVarchar(50)货位名称3areaidInt所在区域4maxgoodsInt最大货物数表4.5类别表编号字段名称数据结构说明1sortidInt类别编号2sortnameVarchar(50)类别名称43 表4.6货物表编号字段名称数据结构说明1goodsidInt货物编号2goodsnameVarchar(20)货物名称3sortidInt所属类别4maxnumberInt最大库存5minnumberInt最小库存6priceInt价格表4.7库存表编号字段名称数据结构说明1stockidInt库存编号2goodsidInt货物名称3numberInt数量4wareidInt所属仓库5areaidInt所属区域6spaceidInt所属货位表4.8入出库表编号字段名称数据结构说明1inventoryidInt入出库编号2goodsidInt货物名称3wareidInt所在仓库4areaidInt所在区域5spaceidInt所在货位6usernameVarchar(20)操作员7numberInt入出库数量8modifytimedatetime入出库时间9typeVarchar(10)入出库类型10remarkVarchar(500)备注表4.9移出库表编号字段名称数据结构说明1transferidInt移库编号2goodsidInt货物名称3usernameVarchar(20)操作员4numberInt移库数量5transtimedatetime移库时间6inputwareidInt移入仓库7inputareaidInt移入区域8inputspaceidInt移入货位9outputwareidInt移出仓库10outputareaidInt移出区域11outputspaceidInt移出货位43 表4.10采购表编号字段名称数据结构说明1purchaseidInt采购编号2goodsidInt货物名称3numberInt采购数量4purtimedatetime采购时间5usernameVarchar(20)操作员6remarkVarchar(500)备注表4.11系统表编号字段名称数据结构说明1wareinitialInt仓库是否初始化(0-否,1-是)2areainitialInt区域是否初始化(0-否,1-是)3spaceinitialInt货位是否初始化(0-否,1-是)4sortinitialInt类别是否初始化(0-否,1-是)5goodsinitialInt货物是否初始化43 五、详细设计(一)引言为使用本系统的用户提供完善的库存管理服务,以及精确的库存查询服务,为企业管理者提供实时库存信息,帮助企业决策者了解库存状态,辅助做出合理的决策。该部分所有业务逻辑代码详见附录Ⅱ。(二)系统程序设计1.用户登录设计说明该程序检查用户登录信息是否合法,合法用户的信息会被保存到Session中,如果未登录用户想使用系统其它功能都会被拒绝。该程序的设计可有效避免SQL注入漏洞。如图5.1为用户登陆界面,用户登录时要求用户名长度在20个字符以内,密码长度为6-16个字符图5.1系统登录界面如图5.2所示为用户登录后界面。43 图5.2用户管理主界面该功能流程逻辑图如下所示:图5.3用户管理流程逻辑图LoginServlet得到用户提交的数据username,password,然后调用UserProcess类的loginCheck(Stringu,Stringp)方法对数据进行检查。检查方法如下:(1)首先检查用户名为username时的密码(selecttop1passwordfromuserswhereusername=""+u+"""),若不存在,表明不存在该用户,返回用户名错误提示信息。(2)若存在,检查username的密码与password是否相等(p.equals(rs.getString(1))),若相等,登录成功,跳转到用户管理界面;否则,返回密码错误提示信息。该算法有效避免了SQL注入漏洞。因为如果采用以下SQL查询语句:selecttop1*fromuserswhereusername=""+u+""andpassword=""+p+""时,用户在登录时随意输入用户名,而输入以下密码:"or1="1就可以成功登录到系统。2.实体添加设计说明43 该程序功能是添加实体到数据库,以仓库添加为实例,其他实体的添加过程与仓库类似,不在一一赘述。如图5.4为仓库添加界面,添加仓库时要求仓库名长度在50个字符以内,地址长度为100个字符以内。图5.4添加仓库界面如图5.5所示为成功添加仓库后界面。图中第一条数据即为刚刚添加数据。图5.5成功添加仓库界面该功能流程逻辑图为:图5.6添加仓库流程逻辑图WareServlet得到用户提交的数据warename,maxarea,address,然后调用WareProcess类的addWare(WareBeanwb)方法将数据添加到数据库,SQL语句如下:Stringsql="insertintowarehousevalues(""+wb.getWarename()+"","+wb.getMaxarea()+",""+wb.getAddress()+"")";3.分页浏览设计说明该程序功能是添加实体到数据库,以仓库添加为实例,其他实体的添加过程与仓库类似,不在一一赘述。43 如图5.7为仓库分页浏览界面图5.7仓库分页浏览界面1如图5.8所示为点击下一页后仓库分页浏览界面。图5.8仓库分页浏览界面2该算法有四个主要的参数,pageNo代表当前的页数,pageSize代表每页显示几行记录,pageCount代表共有多少页,rowCount代表共有多少行记录。其中rowCount由以下SQL语句求出:selectcount(*)fromwarehouse;pageSize由程序员自己设置,pageCount的值可由以下方法求出:如果rowCount%pageSize=0,pageCount=rowCount/ageSize,否则pageCount=rowCount/ageSize+1;pageNo的值是通过参数传递过来的,那么上述四个参数确定后,第pageNo页的记录通过以下的SQL语句求的:Stringsql1="selecttop”+pageSize+"*fromwarehousewherewareidnotin(selecttop"+(pageNo-1)*pageSize+"wareidfromwarehouse)orderbywareiddesc";4.实体修改设计说明该程序功能是修改实体的信息,然后保存到数据库,以仓库修改为实例,其他实体的修改过程与仓库类似,不在一一赘述。如图5.9为仓库修改界面,修改仓库时要求仓库名长度在50个字符以内,地址长度为100个字符以内。43 图5.9添加仓库界面如图5.10所示为成功修改仓库后界面。图5.10成功修改仓库界面该功能流程逻辑图为:图5.11成功修改仓库流程逻辑图WareServlet得到用户提交的数据wareid,warename,maxarea,address,然后调用WareProcess类的modifyWare(WareBeanwb)方法修改仓库信息,然后将数据保存到数据库,SQL语句如下:Stringsql="updatewarehousesetwarename=""+wb.getWarename()+"",maxarea="+wb.getMaxarea()+",address=""+wb.getAddress()+""wherewareid="+wb.getWareid();5.实体删除设计说明该程序功能是删除实体的信息,以仓库删除为实例,其他实体的删除过程与仓库类似,不在一一赘述。如图5.12为仓库删除界面43 图5.12仓库删除界面如图5.13所示为成功删除仓库后界面。图5.13成功删除仓库界面该功能流程逻辑图为:图5.14删除仓库业务逻辑流程图WareServlet得到用户提交的数据wareid,然后调用WareProcess类的deleteWare(intwareid)方法删除仓库信息,SQL语句如下:Stringsql="deletefromwarehousewherewareid="+wareid;6.入库设计说明该程序功能是实现货物的入库。如图5.15、5.16所示为入库界面43 图5.15入库界面1图5.16入库界面2如图5.17所示为成功入库后界面。图5.17成功入库界面该功能流程逻辑图为:43 图5.18入库流程逻辑图InventoryServlet得到用户提交的数据,然后调用InventoryProcess类的addInventory(InventoryBeanib)方法添加入库信息,同时更新库存信息,更新库存信息的SQL语句如下:Stringsql="updatestocksetnumber=number+"+number+"wheregoodsid="+gb.getGoodsid()+"andwareid="+wb.getWareid()+"andareaid="+ab.getAreaid()+"andspaceid="+sb.getSpaceid();7.移库设计说明该程序功能是实现货物的移库。如图5.19所示为移库界面图5.19移库界面如图5.20所示为成功移库后界面。43 图5.20成功移库界面该功能流程逻辑图为:图5.21移库流程逻辑图TransferServlet得到用户提交的数据,然后调用TransferProcess类的addTransfer(TransferBeantb)方法添加移库信息,同时更新库存信息:sp.putin(gb,inputware,inputarea,inputspace,number);sp.putout(gb,outputware,outputarea,outputspace,number);8.采购设计说明该程序功能是实现货物的采购。如图5.22所示为采购界面图5.22采购界面43 如图5.23所示为成功采购后界面。图5.23成功采购界面该功能流程逻辑图为:图5.24采购流程逻辑图PurchaseServlet得到用户提交的数据,然后调用PurchaseProcess类的addPurchase(PurchaseBeanpb)方法添加采购信息,同时更新库存信息。43 六、系统安装与调试本系统顺利运行需要以下安装环境:jdk1.6.0以上,Tomcat6.0以上,SQLServer2000以上以及SP4升级包。开发环境为:MyEclispe6.0。(一)系统安装1.jdk安装首先下载jdk安装包,地址如下:http://192.18.108.146/ECom/EComTicketServlet/BEGIN5A4E030F1B9D9C5D83D453A487C88FB1/-2147483648/2328078531/1/838358/840458/2328078531/2ts+/westCoastFSEND/jdk-6u2-oth-JPR/jdk-6u2-oth-JPR:2/jdk-6u2-windows-i586-p.exe;下载完成后,双击安装文件,按提示完成安装。2.Tomcat安装首先下载Tomcat安装包,地址如下:http://tomcat.apache.org/download-60.cgi下载完成后,双击安装文件,按提示完成安装。安装完成后,进入Tomcat主目录下Tomcat6.0bin,双击tomcat6.exe,启动tomcat;新建IE窗口,在地址栏中输入如下地址:http://127.0.0.1:8080,如果页面访问成功,则Tomcat安装成功。3.系统安装打开SQLServer查询分析器,输入数据库建表语句(建附录Ⅰ),点击运行,完成数据库的建立。将本系统文件夹拷贝到Tomcat主目录下Tomcat6.0webapps目录下,在IE窗口地址栏中输入http://127.0.0.1:8080/Inventory,如果访问成功则表示本系统安装成功。(二)系统调试错误1:java.lang.NumberFormatException:Forinputstring:""解决方法:检查输入的数据是否为空。错误2:java.sql.SQLException:Errorestablishingsocket.解决方法:检查是否SQLServer服务器是否启动。错误3:java.sql.SQLException:违反了UNIQUEKEY约束.43 解决方法:输入的数据项与数据库中已有的数据重复,而该数据项对应的数据库字段设定了UNIQUE约束,即该字段数据不允许重复,修改输入数据即可解决。错误4:java.sql.SQLException:DELETE语句与COLUMNREFERENCE约束冲突。解决方法:删除数据时违反了数据库的外键约束,即删除的数据的字段是其他表的外键。首先删除与该记录有关的记录,再删除该记录。43 结束语本系统的设计与实现历时两个多月的时间,目前基本的功能均已实现。本系统的主要特点有以下几个方面:(1)由于本系统采用的设计语言是基于java的,所以本系统能够跨平台运行,即在windows,unix,linux等不同的操作系统环境下均可运行。(2)由于本系统的设计遵循MVC的设计模式,所以代码可重用性高,低耦合性,代码维护方便。(3)系统查错能力强,而且对于用户的操作错误都有友好而详细的提示。(4)界面设计简洁,以浅绿色为主色调,操作方便、简洁。但是,本系统设计依然不够完善,有许多不足之处。主要有以下几点:(1)前期系统调研不足,系统功能还不够完善。(2)系统的可扩展性不佳,往往系统的一小部分修改会牵扯到许多地方的改动,工作量大且容易出错。(3)数据库设计不够合理,数据冗余多,安全性不够。综合以上不足,系统的仍需不断改进。包括进行更加详细的系统调研,了解用户的真正需求,不断完善系统的功能,增加系统的实用性。技术方面可以考虑目前比较流行的SSH框架,提高系统的可扩展性。43 参考文献[1]王斌斌,吴孝丽.库存管理系统UML设计[J].平顶山工学院学报,2008,(03).[2]陈瑞斌,南理勇.基于Web服务的仓库管理系统设计[J].信息服务报,2008,(02).[3]杜来红.基于Web的物料库存管理系统的研究[J].物流技术,2006,(8).[4]朱士高,朱军,朱彩霞.基于WEB的企业进销存管理系统的设计[J].淮阴工学院学报,2007,(5).[5]HuangSC,HuangYM,ShiehSM.Vibrationandstabilityofarotatingshaftcontainingatransersecrack[J].JSoundandVibration,1993,162(3):387-401.[6]汪旭敏,陈晓川,杨建国等.基于WEB的库存管理系统的设计和实现[J].机械设计与制造,2008,(1).[7]俞文跃,张长胜.基于WebService三层体系结构的库存管理系统的开发[J].福建电脑报,2008,(12).[8]乔荣丽,高淑芝,孙水亮.基于MVC模式的物资供应管理信息系统的设计[J].化工之友,2007,(15).[9]张兴旺,赵嘉.基于JSP的物流管理系统的设计与实现[J].物流工程,2007,(7).[10]马颖,张劳模.基于J2EE平台的库存管理系统设计与实现[J].郑州铁路职业技术学院学报,2006,18(4).[11]许维.J2EE架构下的物流信息系统设计[J].中国管理信息化,2006,9(5).[12]Manuel.DRossetti,MehmetMiman,VijithVarghese.Object-OrientedFrameworkforSimulatingMulti-EchelonInventorySystems[J],2006.[13]薛小锋.企业采购管理系统的设计与实现[J].数据库及信息管理,2007,(06).[14]许跟勇,周炳海.基于RFID的第三方物流仓储管理系统设计应用[J].物流科技,2008,(11).[15]陈潇.第三方物流管理信息系统设计——库存管理信息系统[J].山西财经大学学报,2008,11(1).43 致谢经过长达三个月的努力我的毕业论文终于完成了。在这期间,指导教师xxx老师给了我细致、专业的指点以及耐心的辅导,在此深表敬意和感谢!同时,在我完成毕业论文的过程中,教研室的老师、辅导员老师以及同学们也给予了我莫大的帮助,对他们的关心、帮助我深表感谢!我更要感谢大学四年来所有教过我的老师,没有他们深厚的专业理论知识和经验的授予,就没有我今天的成绩。43 附录Ⅰ数据库建表语句createdatabaseinventory;useinventory;createtableusers(useridintprimarykeyidentity(1,1),usernamevarchar(20)unique,passwordvarchar(12),gradeint);insertintousers(username,password,grade)values("sa","sa",1);select*fromusers;createtablewarehouse(wareidintprimarykeyidentity(1,1),warenamevarchar(50)unique);select*fromwarehouse;createtablearea(areaidintprimarykeyidentity(1,1),areanamevarchar(50)unique,wareidint,foreignkey(wareid)referenceswarehouse(wareid));select*fromarea;createtablespace(spaceidintprimarykeyidentity(1,1),spacenamevarchar(50)unique,areaidint,foreignkey(areaid)referencesarea(areaid));select*fromspace;createtablesort(sortidintprimarykeyidentity(1,1),sortnamevarchar(50)unique);select*fromsort;createtablegoods(goodsidintprimarykeyidentity(1,1),goodsnamevarchar(50),priceint,numberint,sortidint,wareidint,areaidint,spaceidint,maxnumberint,minnumberint,foreignkey(sortid)referencessort(sortid),foreignkey(wareid)referenceswarehouse(wareid),foreignkey(areaid)referencesarea(areaid),foreignkey(spaceid)referencesspace(spaceid));select*fromgoods;createtablestock(stockidintprimarykeyidentity(1,1),goodsidint,usernamevarchar(20),numberint,modifytimedatetime,typevarchar(10),auditbit,remarkvarchar(500)foreignkey(username)referencesusers(username),foreignkey(goodsid)referencesgoods(goodsid));select*fromstock;createtabletransfer(transferidintprimarykeyidentity(1,1),goodsidint,usernamevarchar(20),numberint,transtimedatetime,inputwareint,inputareaint,inputspaceint,outputwareint,outputareaint,outputspaceint,foreignkey(username)referencesusers(username),foreignkey(goodsid)referencesgoods(goodsid),foreignkey(inputware)referenceswarehouse(wareid),foreignkey(inputarea)referencesarea(areaid),foreignkey(inputspace)referencesspace(spaceid),foreignkey(outputware)referenceswarehouse(wareid),foreignkey(outputarea)referencesarea(areaid),foreignkey(outputspace)referencesspace(spaceid));select*fromtransfer;createtablesystem(wareinitialbit,areainitialbit,spaceinitialbit,sortinitialbit,goodsinitialbit);insertintosystemvalues(0,0,0,0,0);select*fromsystem;43 附录Ⅱ系统主要业务逻辑代码登录功能主要业务逻辑代码:publicStringloginCheck(Stringu,Stringp){Stringstr="";try{conn=newConnectionProcess().getConn();Stringsql="selecttop1passwordfromuserswhereusername=""+u+""";pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();if(rs.next()){if(!p.equals(rs.getString(1))){str="密码错误!";}}else{str="用户名错误!";}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnstr;}添加功能业务逻辑代码:publicbooleanaddWare(WareBeanwb){booleanb=false;try{conn=newConnectionProcess().getConn();Stringsql="insertintowarehousevalues(""+wb.getWarename()+"","+wb.getMaxarea()+",""+wb.getAddress()+"")";pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnb;}分页浏览功能业务逻辑代码:publicArrayListgetWares(intpageNo,intpageSize){ArrayListal=newArrayList();introwCount=0;try{conn=newConnectionProcess().getConn();Stringsql="selectcount(*)fromwarehouse";pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();if(rs.next()){rowCount=rs.getInt(1);43 }if(rowCount%pageSize==0){pageCount=rowCount/pageSize;}else{pageCount=rowCount/pageSize+1;}Stringsql1="selecttop"+pageSize+"*fromwarehousewherewareidnotin(selecttop"+(pageNo-1)*pageSize+"wareidfromwarehouse)orderbywareiddesc";pstmt=conn.prepareStatement(sql1);rs=pstmt.executeQuery();while(rs.next()){WareBeanwb=newWareBean();wb.setWareid(rs.getInt(1));wb.setWarename(rs.getString(2));wb.setMaxarea(rs.getInt(3));wb.setAddress(rs.getString(4));al.add(wb);}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnal;}修改功能业务逻辑代码:publicbooleanmodifyWare(WareBeanwb){booleanb=false;try{conn=newConnectionProcess().getConn();Stringsql="updatewarehousesetwarename=""+wb.getWarename()+"",maxarea="+wb.getMaxarea()+",address=""+wb.getAddress()+""wherewareid="+wb.getWareid();pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnb;}删除功能业务逻辑代码:publicbooleandeleteWare(intwareid){booleanb=false;try{conn=newConnectionProcess().getConn();Stringsql="deletefromwarehousewherewareid="+wareid;pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){43 b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnb;}添加入出库记录业务逻辑代码:publicbooleanaddInventory(InventoryBeanib){booleanb=false;SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Stringmodifytime=sdf.format(ib.getModifytime());try{conn=newConnectionProcess().getConn();Stringsql="insertintoinventoryvalues("+ib.getGoods().getGoodsid()+","+ib.getWare().getWareid()+","+ib.getArea().getAreaid()+","+ib.getSpace().getSpaceid()+",""+ib.getUser().getUsername()+"","+ib.getNumber()+",""+modifytime+"",""+ib.getType()+"",""+ib.getRemark()+"")";pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnb;}入库时更新货物库存业务逻辑代码:publicbooleanputin(GoodsBeangb,WareBeanwb,AreaBeanab,SpaceBeansb,intnumber){booleanb=false;try{conn=newConnectionProcess().getConn();Stringsql="updatestocksetnumber=number+"+number+"wheregoodsid="+gb.getGoodsid()+"andwareid="+wb.getWareid()+"andareaid="+ab.getAreaid()+"andspaceid="+sb.getSpaceid();pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{43 this.close();}returnb;}弹出货物选择对话框是用JavaScript实现的,代码如下:functionshow(){document.all["Layer1"].style.visibility="visible";}functioncloseDiv(){document.all["Layer1"].style.visibility="hidden";}functionchange(){varstr;str=event.srcElement.id;document.form1.goodsname.value=str;closeDiv();}<%for(inti=0;i<%if(gb1!=null){%>"onclick="change();"><%=gb1.getGoodsname()%><%}if(gb2!=null){%>"onclick="change();"><%=gb2.getGoodsname()%><%}if(gb3!=null){%>"onclick="change();"><%=gb3.getGoodsname()%><%}if(gb4!=null){%>"onclick="change();"><%=gb4.getGoodsname()%><%}if(gb5!=null){%>"onclick="change();"><%=gb5.getGoodsname()%><%}%><%}%>
出库时更新货物库存业务逻辑代码:publicbooleanputout(GoodsBeangb,WareBeanwb,AreaBeanab,SpaceBeansb,intnumber){booleanb=false;try{conn=newConnectionProcess().getConn();Stringsql="updatestocksetnumber=number-"+number43 +"wheregoodsid="+gb.getGoodsid()+"andwareid="+wb.getWareid()+"andareaid="+ab.getAreaid()+"andspaceid="+sb.getSpaceid();pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnb;}添加移库记录业务逻辑代码:publicbooleanaddTransfer(TransferBeantb){booleanb=false;try{conn=newConnectionProcess().getConn();SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Stringtransfertime=sdf.format(tb.getTransfertime());Stringsql="insertintotransfer(goodsid,username,number,transtime,"+"inputware,inputarea,inputspace,outputware,outputarea,outputspace)values("+tb.getGoods().getGoodsid()+",""+tb.getUser().getUsername()+"","+tb.getNumber()+",""+transfertime+"","+tb.getInputware().getWareid()+","+tb.getInputarea().getAreaid()+","+tb.getInputspace().getSpaceid()+","+tb.getOutputware().getWareid()+","+tb.getOutputarea().getAreaid()+","+tb.getOutputspace().getSpaceid()+")";pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnb;}库存盘点业务逻辑代码:publicbooleanupdate(intgoodsid,intwareid,intareaid,intspaceid,intnumber){booleanb=false;try{conn=newConnectionProcess().getConn();Stringsql="updatestocksetnumber="+number+"wheregoodsid="+goodsid+"andwareid="+wareid43 +"andareaid="+areaid+"andspaceid="+spaceid;pstmt=conn.prepareStatement(sql);inti=pstmt.executeUpdate();if(i>0){b=true;}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnb;}库存统计功能代码:publicintcount(GoodsBeangb,WareBeanware,AreaBeanarea,SpaceBeanspace){intcount=0;Stringstr="";Stringstr1="";Stringstr2="";Stringstr3="";Stringstr4="";if(gb.getGoodsid()!=0){str1="goodsid="+gb.getGoodsid();}else{str1="1=1";}if(ware.getWareid()!=0){str2="andwareid="+ware.getWareid();}else{str2="and1=1";}if(area.getAreaid()!=0){str3="andareaid="+area.getAreaid();}else{str3="and1=1";}if(space.getSpaceid()!=0){str4="andspaceid="+space.getSpaceid();}else{str4="and1=1";}str=str1+str2+str3+str4;try{conn=newConnectionProcess().getConn();Stringsql="selectsum(number)fromstockwhere"+str;pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();if(rs.next()){count=rs.getInt(1);}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returncount;}出入库统计功能,按时间统计代码:43 publicArrayListgetInventorys(Stringtype,Stringstarttime,Stringendtime,intpageNo,intpageSize){ArrayListal=newArrayList();introwCount=0;try{conn=newConnectionProcess().getConn();Stringsql="selectcount(*)frominventorywheretype=""+type+""andmodifytimebetween""+starttime+""and""+endtime+""";pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();if(rs.next()){rowCount=rs.getInt(1);}if(rowCount%pageSize==0){pageCount=rowCount/pageSize;}else{pageCount=rowCount/pageSize+1;}Stringsql1="selecttop"+pageSize+"*frominventorywheretype=""+type+""andmodifytimebetween""+starttime+""and""+endtime+""andinventoryidnotin(selecttop"+(pageNo-1)*pageSize+"inventoryidfrominventory)orderbyinventoryiddesc";pstmt=conn.prepareStatement(sql1);rs=pstmt.executeQuery();while(rs.next()){InventoryBeanib=newInventoryBean();ib.setInventoryid(rs.getInt(1));intgoodsid=rs.getInt(2);GoodsBeangood=newGoodsProcess().getGood(goodsid);ib.setGoods(good);intwareid=rs.getInt(3);WareBeanwb=newWareProcess().getWare(wareid);ib.setWare(wb);intareaid=rs.getInt(4);AreaBeanab=newAreaProcess().getArea(areaid);ib.setArea(ab);intspaceid=rs.getInt(5);SpaceBeansb=newSpaceProcess().getSpace(spaceid);ib.setSpace(sb);Stringusername=rs.getString(6);UserBeanub=newUserProcess().getUser(username);ib.setUser(ub);ib.setNumber(rs.getInt(7));ib.setModifytime(rs.getTimestamp(8));ib.setType(rs.getString(9));ib.setRemark(rs.getString(10));al.add(ib);}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnal;}出入库统计功能,按操作员统计代码:publicArrayListgetInventorys(Stringtype,Stringusername,intpageNo,intpageSize){43 ArrayListal=newArrayList();introwCount=0;try{conn=newConnectionProcess().getConn();Stringsql="selectcount(*)frominventorywheretype=""+type+""andusernamelike"%"+username+"%"";pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();if(rs.next()){rowCount=rs.getInt(1);}if(rowCount%pageSize==0){pageCount=rowCount/pageSize;}else{pageCount=rowCount/pageSize+1;}Stringsql1="selecttop"+pageSize+"*frominventorywheretype=""+type+""andusernamelike"%"+username+"%"andinventoryidnotin(selecttop"+(pageNo-1)*pageSize+"inventoryidfrominventory)orderbyinventoryiddesc";pstmt=conn.prepareStatement(sql1);rs=pstmt.executeQuery();while(rs.next()){InventoryBeanib=newInventoryBean();ib.setInventoryid(rs.getInt(1));intgoodsid=rs.getInt(2);GoodsBeangood=newGoodsProcess().getGood(goodsid);ib.setGoods(good);intwareid=rs.getInt(3);WareBeanwb=newWareProcess().getWare(wareid);ib.setWare(wb);intareaid=rs.getInt(4);AreaBeanab=newAreaProcess().getArea(areaid);ib.setArea(ab);intspaceid=rs.getInt(5);SpaceBeansb=);ib.setSpace(sb);Stringuname=rs.getString(6);UserBeanub=newUserProcess().getUser(uname);ib.setUser(ub);ib.setNumber(rs.getInt(7));ib.setModifytime(rs.getTimestamp(8));ib.setType(rs.getString(9));ib.setRemark(rs.getString(10));al.add(ib);}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnal;}采购统计功能,按时间统计代码:publicArrayListgetPurchases(Stringstarttime,Stringendtime,intpageNo,intpageSize){43 ArrayListal=newArrayList();introwCount=0;try{conn=newConnectionProcess().getConn();Stringsql="selectcount(*)frompurchasewherepurtimebetween""+starttime+""and""+endtime+""";pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();if(rs.next()){rowCount=rs.getInt(1);}if(rowCount%pageSize==0){pageCount=rowCount/pageSize;}else{pageCount=rowCount/pageSize+1;}Stringsql1="selecttop"+pageSize+"*frompurchasewherepurtimebetween""+starttime+""and""+endtime+""andpurchaseidnotin(selecttop"+(pageNo-1)*pageSize+"purchaseidfrompurchase)orderbypurchaseiddesc";pstmt=conn.prepareStatement(sql1);rs=pstmt.executeQuery();while(rs.next()){PurchaseBeanpb=newPurchaseBean();pb.setPurchaseid(rs.getInt(1));intgoodsid=rs.getInt(2);GoodsBeangb=newGoodsProcess().getGood(goodsid);pb.setGoods(gb);pb.setNumber(rs.getInt(3));pb.setPurtime(rs.getTimestamp(4));Stringusername=rs.getString(5);UserBeanub=newUserProcess().getUser(username);pb.setUser(ub);pb.setRemark(rs.getString(6));al.add(pb);}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnal;}采购统计功能,按操作员统计业务逻辑代码:publicArrayListgetPurchases(Stringusername,intpageNo,intpageSize){ArrayListal=newArrayList();introwCount=0;try{conn=newConnectionProcess().getConn();Stringsql="selectcount(*)frompurchasewhereusernamelike"%"+username+"%"";pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();if(rs.next()){rowCount=rs.getInt(1);}43 if(rowCount%pageSize==0){pageCount=rowCount/pageSize;}else{pageCount=rowCount/pageSize+1;}Stringsql1="selecttop"+pageSize+"*frompurchasewhereusernamelike"%"+username+"%"andpurchaseidnotin(selecttop"+(pageNo-1)*pageSize+"purchaseidfrompurchase)orderbypurchaseiddesc";pstmt=conn.prepareStatement(sql1);rs=pstmt.executeQuery();while(rs.next()){PurchaseBeanpb=newPurchaseBean();pb.setPurchaseid(rs.getInt(1));intgoodsid=rs.getInt(2);GoodsBeangb=newGoodsProcess().getGood(goodsid);pb.setGoods(gb);pb.setNumber(rs.getInt(3));pb.setPurtime(rs.getTimestamp(4));Stringuname=rs.getString(5);UserBeanub=newUserProcess().getUser(uname);pb.setUser(ub);pb.setRemark(rs.getString(6));al.add(pb);}}catch(SQLExceptione){e.printStackTrace();}finally{this.close();}returnal;}43'

您可能关注的文档

相关文档

最近下载