课程设计报告物流配送系统商务网站设计_第1页
课程设计报告物流配送系统商务网站设计_第2页
课程设计报告物流配送系统商务网站设计_第3页
课程设计报告物流配送系统商务网站设计_第4页
课程设计报告物流配送系统商务网站设计_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

商务网站模拟与实现题目:物流配送系统商务网站设计院系专业班级学号姓名指导教师2023年6月课程设计任务书课程设计时间:年月日至年月日课程设计地点课程设计内容及规定:设计题目物流配送系统商务网站设计总体目的、设计目的及规定设计目的:物流配送系统的作用就是为了给客户提供物流配送信息发布的平台。使用ASP技术设计的物流配送系统可以使物流配送的管理变得很轻松。管理员只需设立订单号、出发地点和目的地等运单信息元素就可以了,系统将自动生成相应得运送。而使用Access数据库,将减轻维护人员的工作量,使系统便于维护和管理。本物流信息网分为前台和后台两个部分进行设计。前台重要用于客户浏览站内信息,并了解本公司和物流行业的相关信息;后台重要用于管理员对管理员信息、公司简介、仓库服务、运送服务、配送服务、运单管理、联系我们等模块的管理。(二)系统目的如下:该物流配送系统是针对中小型公司的运营管理过程进行设计的,重要实现如下目的:操作简朴方便、界面简洁美观。网站整体结构和操作流程合理顺畅,实现人性化设计。向客户全面展示该系统的各项业务。提供货品运单信息添加功能。提供密码修改功能。为管理员提供登录窗口。通过后台,管理员可以对运单信息进行全面管理。系统最大限度的实现了易维护和易操作。9、系统运营稳定、安全可靠(三)、设计完毕后,应提交设计结果及设计说明书,设计结果以光盘形式提交,设计说明以A4纸打印好提交。设计说明书应体现设计思想、设计过程、设计创意及资料来源等还说明设计结果在应用时的应用时的注意事项、局限性、适宜的应用环境条件等。设计内容网站设计的策划主题:物流配送系统商务网站设计网站要提供对管理员信息、仓库管理、运送管理、配送管理、运单管理等模块的管理。拟定网站名称及网站虚拟域名。网站总体设计网站CI设计符合规范、版面整洁朴素。网站以浅紫色为背景颜色及视觉效果。网页基本要素设计。网页布局及版面设计、栏目设计。网站导航图用自己设计的图片作为导航。网页层次设计网站文献有效保存设计(存在“曾岩网站”的文献夹)网站分步设计主页的设计制作·页面设计·页面图片设计制作·页面文档设计排版·超链接设计·表单设计·动态图标、文字、层的设计·其他相关信息设计次级页面设计·页面结构设计(框架网页、共享边框)·超链接及信息项表设计·与主页协调的风格设计·次级页面图片、文档的布局设计网站数据库及网站管理设计(可选)网站记录分析计数系统设计(可选)相关服务器扩展功能设计设计环境规定硬件规定586以上多媒体电脑软件环境·Windows98/2023(操作系统)·office97/2023(字解决软件)·Dreamweaver4.0(专业网页制作工具)·Fireworks5.0(网页图像解决软件)·Flash5.0(网页图像解决软件)·MicrosoftVisio(绘图工具)设计时间安排·网站设计总体策划(定题)、基础资料收集加工1周·网站设计制作1周·网站测试调整、网站设计说明书撰写、提交及通过测试的网站1周目录TOC\o"1-2"\u前言 1一.XXXXX策划书 2二.网站功能需求设计分析 3三、网站概要设计 7四、网站具体设计 15五、网站测试设计 19六、网站开发总结性报告 29结束语 31一.选题背景在市场竞争的剧烈的时代,建立科学,规范,高效管理体系是非常重要的。随着经济的快速发展,对库存的高效管理十分重要,高效的库存管理离不开信息技术,信息技术的飞速发展也为库存管理提供了广阔的舞台,采用现代化的手段管理库存,可以及时准确地反映库存状况,保证库存的数量保持在合理的水平,在满足客户的需要的同时最大限度地减少库存占用,从而在竞争中保持优势。传统的库存管理靠人工完毕,需要大量的人力物力,人工管理方式有许多缺陷和不便的地方,易犯错,不能及时地把库存信息反映出来,大量的文献和数据不利于查找更新和维护。运用信息技术开发信息管理系统对库存进行管理,可以方便地实现快速查询,入库出库方便,可靠性高。因此,建立库存管理系统,对库存进行优化存储、管理,从而提高公司的科学管理水平,节省开支,使公司在竞争中立于不败之地。二.解决方案的选择(一)系统说明设计和实现库存管理系统,使库存管理的工作系统化、规范化和自动化,从而达成提高管理效率的目的。1.运用计算机系统实现商品库存管理。2.流程符合库存管理规定。3.查询方便,无论是按商品名称、仓库、区域、货位、时间、操作员其中任一项都可以进行有效查询。4.系统扩充容易,有很多地方还需要更好地完善。5.和谐的用户界面,既面向系统开发者,又面向用户。(二)系统初步调查库存管理需要有:产品相关信息设立,产品入库、出库、移库、采购、库存盘点、库存查询等功能。应有入库信息的输入窗口,出库信息输入窗口,移库信息输入窗口、采购信息的输入窗口,产品相关信息设立的输入窗口,并且界面要自然、简便,要有充足的提醒和帮助,以便于操作人员学习使用和掌握。对输入的错误又有好的措施,并随时掌握任务的进展情况,输出的形式要易于理解,结果要对的。当然了,对于用户来说,界面就是系统自身。用户特别关心能否有效地使用软件来解决问题,用户对软件功能的理解都在界面上表现出来。人机界面体现了系统的功能,以及操作的方便限度是否符合使用的规定与工作习惯。总之,应使管理部门及时掌握产品库存全面情况,并通过这样的系统,做到信息的规范管理,科学记录和快速查询,从而减少管理方面的工作量。根据用户提出的建议,为了开发出有效的库存管理系统,遵循以下原则:1.满足用户需要。之所以开发新系统是由于旧系统存在问题,束缚着组织的发展,不能适应用户的需要。系统必须能被用户接受,实现用户的初衷。2.功能更完善。功能是否完整,是指能否覆盖组织的重要业务管理范围。同时,还表现在各部分接口是否完备,数据采集和存储格式是否统一,各部分是否协调一致。3.技术更先进。对的结识各种先进技术的优劣长短,从而根据组织的实际情况和未来得发展将其合理的运用到库存管理系统的开发中去。要努力发挥其高速度、高精度、高密度的优点,也要避免其缺少灵活性,不便于解决意外情况的缺陷。同时,不要为了一味的先进,而忽视了技术自身的成熟性。4.实现辅助决策。许多组织的决策任务非常复杂、耗时,而决策关系到组织的兴衰。因此,所有的组织都需要可以帮助他们做出最佳的决策支持系统。(三)可行性研究可行性分析研究的目的就是用最小的代价在尽也许短的时间里拟定问题是否能解决,通过研究与此类似的系统后,我们具体从下面三方面考虑。1.经济可行性库存管理系统是一个小型的管理系统,在开发时需要软件开发人员花费一定的时间和精力,因此需要一定的资金。但它给公司带来的利润是不可估量的,节省了许多人力,物力上的开支,使库存管理工作变繁为简,使其更加合理化、规范化。工作效率的提高就意为着整体水平的提高,是非常值得投资的。2.操作可行性系统采用了可视化面向对象的工具开发,其窗口、界面简洁易懂,所以系统在操作上是可行的。随着计算机知识的普及和推广,越来越多的人掌握了计算机的基本使用方法和基本。目前,公司的管理人员已经具有了一定的计算机基础知识和实际操作经验。对于局域网、WINDOWS等环境下的软件使用比较熟悉,对于新系统的开发,用户表现出极大的爱好和热情,提出了各种很好的建议和规定。(四)对设计工具和相关技术的说明系统是采用JavaBean,Servlet,JSP开发,以MyEclipse,Dreamweaver作为开发工具,以SQLServer开发数据库,以Tomcat为服务器。系统开发技术(1)JSP技术介绍JSP(JavaServerPages)是由SunMicrosystems公司提倡、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文献(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文献(*.jsp)。JSP技术的强势:=1\*GB3①一次编写,到处运营。在这一点上Java比PHP更杰出,除了系统之外,代码不用做任何更改。=2\*GB3②系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。=3\*GB3③强大的可伸缩性。从只有一个小的Jar文献就可以运营Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务解决,消息解决,一台服务器到无数台服务器,Java显示了一个巨大的生命力。=4\*GB3④多样化和功能强大的开发工具支持。这一点与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)Tomcat介绍Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。由于Tomcat技术先进、性能稳定,并且免费,因而深受Java爱好者的爱慕并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。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负责前台网页的开发及美化。三、系统设计(一)系统设计原则(1)简朴性:在达成预定的目的、具有所需要的功能前提下,系统应尽量简朴,这样可减少解决费用,提高系统效益,便于实现和管理。(2)灵活性和适应性:以便适应外界的环境变化。可变性是现代化公司的特点之一,是指其对外界环境的变化的适应能力。作为公司的管理信息系统也必须具有相称的灵活性,以便适应外界环境的不断变化,并且系统自身也需不断修改和改善。因此,在这里系统的可变性是指允许系统被修改和维护的难易限度。一个可变性好的系统,各个部分独立性强,容易进行变动,从而可提高系统的性能,不断满足对系统目的的变化规定。(3)一致性和完整性:一致性是指系统中信息编码、采集、信息通信要具有一致性设计规范应标准;完整性是指系统作为一个统一的整体而存在,系统功能应尽量完整。(4)可靠性:系统的可靠性指系统硬件和软件在运营过程中抵抗异常情况的干扰及保证系统正常工作的能力。衡量系统可靠性的指标是平均故障间隔时间和平均维护时间。前者指平均的前后两次发生故障的时间,反映了系统安全运营时间,后者指故障后平均每次所用的修复时间,反映系统可维护性的好坏。只有可靠的系统,才干保证系统的质量并得到用户的信任,否则就是没有使用价值。(5)经济性:系统的经济性是指系统的收益应大于系统支出的总费用。系统支出费用涉及系统开发所需投资的费用与系统运营维护费用之和;系统收益除有货币指标外,尚有非货币指标。系统应当给用户带来相应的经济效益。系统的投资和经营费用应当得到补偿。需要指出的是,这种补偿有时是间接的或不能定量计算的。(二)总体设计通过对库存信息流程的具体调查分析,弄清了库存管理工作的业务流程和管理功能,符号定义如下:图3.1系统符号定义图系统业务流程图如下:图3.2基础数据管理图图3.3库存管理图(三)系统数据字典的创建为了对数据流程图中的各个元素做出具体的说明,有必要建立数据字典。数据字典的内容重要是对数据流程图中的数据项、数据结构、数据流、解决逻辑、数据存储和外部实体等六个方面进行具体的定义。表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价格货品的价格数值型表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采购单用户采购时填写的单据用户采购管理模块商品名称,数量,备注表3.4解决逻辑的定义解决逻辑编号解决逻辑名称简述输入的数据流解决输出的数据流P1入库解决向入库表中添加信息,更新库存信息入库单查收货品要入库的货品,判断库存量是否满足入库量,登记入库信息,更新库存信息入库单P2出库解决向出库表中添加信息,更新库存信息出库单查收货品要出库的货品,判断出库后库存是否低于安全库存,登记出库信息,更新库存信息出库单P3移库解决向移库表中添加信息,更新库存信息移库单查收货品要移库的货品,登记移库信息,更新库存信息移库单P4采购解决向采购表中添加信息,更新库存信息采购单查收货品要采购的货品,登记采购信息,更新库存信息采购单表3.5数据存储的定义数据存储的编号数据存储的名称简述数据存储的组成关键字F1用户表存储用户信息用户编号,用户名,密码,级别,电子邮件,用户手机用户编号F2仓库表存储仓库信息仓库编号,仓库名,最大区域数,地址仓库编号F3区域表存储区域信息区域编号,区域名,最大货位数,仓库区域编号F4货位表存储货位信息货位编号,货位名,最大货品数,区域货位编号F5类别表存储类别信息类别编号,类别名类别编号F6货品表存储货品信息货品编号,货品名,类别,最大库存,最小库存,价格货品编号F7库存表存储库存信息库存编号,货品名,数量,仓库,区域,货位库存编号F8入出库表存储入出库信息入出库编号,货品名,仓库,区域,货位,操作员,数量,操作时间,类型,备注入出库编号F9移库表存储移库信息移库编号,货品名,操作员,数量,操作时间,移入仓库,移入区域,移入货位,移出仓库,移出区域,移出货位移库编号F10采购表存储采购信息采购编号,货品名,数量,操作时间,操作员,备注采购编号(四)系统功能模块划分根据用户操作需求,将系统划分如下,并对其模块的划分和功能进行描述。1.基础数据管理(1)仓库信息管理(2)区域信息管理(3)货位信息管理(4)类别信息管理(5)用户信息管理(6)货品信息管理2.库存管理(1)入库管理(2)出库管理(3)移库管理(4)库存盘点管理(5)库存记录管理(6)采购管理整个系统的模块结构如图所示。图3.4系统的功能模块图(五)系统功能模块明细系统共涉及2大功能模块,12个小功能模块1.基础数据管理重要完毕基本信息(仓库、区域、货位、类别、货品、用户)的维护工作,涉及添加、修改、删除、浏览等功能。2.库存管理(1)入库管理。完毕货品入库的管理,涉及填写入库单,浏览入库信息等功能。货品入库时需要检查入库后货品库存是否超过货品最大库存,超过时,返回错误提醒信息,严禁货品入库。货品入库后更新库存信息。(2)出库管理。完毕货品出库的管理,涉及填写出库单,浏览出库信息等功能。货品出库时需要检查出库后货品库存是否低于货品安全库存,低于时,返回错误提醒信息,严禁货品出库。货品出库后更新库存信息。(3)移库管理。完毕货品移库的管理,涉及填写移库单,浏览移库信息等功能。货品移库后更新库存信息。(4)库存盘点管理。完毕库存盘点的管理,涉及浏览、查找库存信息,更新库存数目等功能,保证库存信息与实际保持一致,还可以通过仓库、区域、货位单条件或多条件浏览货品库存信息。(5)库存记录管理。可以对库存信息、入库、出库、采购操作进行具体的查询。查询条件涉及按仓库、区域、货位查询,准时间查询,按操作员查询。四、数据库设计(一)数据库设计概述1.数据库概念结构设计这一阶段是在需求分析的基础上,设计出可以满足客户需求的各种实体,以及他们之间的关系,为后面的逻辑设计打下基础。本例的实体有:入库实体、出库实体、移库实体、采购实体。库存管理系统的局部E-R视图:图4.1系统局部E-R图库存管理系统的集成E-R视图:图4.2系统集成E-R图2.数据库逻辑结构设计现在需要将上面的数据库概念结构设计转化为SQLServer2023所支持的实际数据类型,也就是数据库逻辑结构。在上面的实体和实体关系的基础上,形成数据库的表格和个表格之间的关系。本系统的各个表格的设计结果如下:表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)类别名称表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移出货位表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货品是否初始化五、具体设计(一)引言为使用本系统的用户提供完善的库存管理服务,以及精确的库存查询服务,为公司管理者提供实时库存信息,帮助公司决策者了解库存状态,辅助做出合理的决策。该部分所有业务逻辑代码详见附录Ⅱ。(二)系统程序设计1.用户登录设计说明该程序检查用户登录信息是否合法,合法用户的信息会被保存到Session中,假如未登录用户想使用系统其它功能都会被拒绝。该程序的设计可有效避免SQL注入漏洞。如图5.1为用户登陆界面,用户登录时规定用户名长度在20个字符以内,密码长度为6-16个字符图5.1系统登录界面如图5.2所示为用户登录后界面。图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.实体添加设计说明该程序功能是添加实体到数据库,以仓库添加为实例,其他实体的添加过程与仓库类似,不在一一赘述。如图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.分页浏览设计说明该程序功能是添加实体到数据库,以仓库添加为实例,其他实体的添加过程与仓库类似,不在一一赘述。如图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个字符以内。图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为仓库删除界面图5.12仓库删除界面如图5.13所示为成功删除仓库后界面。图5.13成功删除仓库界面该功能流程逻辑图为:图5.14删除仓库业务逻辑流程图WareServlet得到用户提交的数据wareid,然后调用WareProcess类的deleteWare(intwareid)方法删除仓库信息,SQL语句如下:Stringsql="deletefromwarehousewherewareid="+wareid;6.入库设计说明该程序功能是实现货品的入库。如图5.15、5.16所示为入库界面图5.15入库界面1图5.16入库界面2如图5.17所示为成功入库后界面。图5.17成功入库界面该功能流程逻辑图为:图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所示为成功移库后界面。图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采购界面如图5.23所示为成功采购后界面。图5.23成功采购界面该功能流程逻辑图为:图5.24采购流程逻辑图PurchaseServlet得到用户提交的数据,然后调用PurchaseProcess类的addPurchase(PurchaseBeanpb)方法添加采购信息,同时更新库存信息。六、系统安装与调试本系统顺利运营需要以下安装环境:jdk1.6.0以上,Tomcat6.0以上,SQLServer2023以上以及SP4升级包。开发环境为:(一)系统安装1.jdk安装一方面下载jdk安装包,地址如下:+/westCoastFSEND/jdk-6u2-oth-JPR/jdk-6u2-oth-JPR:2/jdk-6u2-windows-i586-p.exe;下载完毕后,双击安装文献,按提醒完毕安装。2.Tomcat安装一方面下载Tomcat安装包,地址如下:下载完毕后,双击安装文献,按提醒完毕安装。安装完毕后,进入Tomcat主目录下Tomcat6.0\bin,双击tomcat6.exe,启动tomcat;新建IE窗口,在地址栏中输入如下地址::8080,假如页面访问成功,则Tomcat安装成功。3.系统安装打开SQLServer查询分析器,输入数据库建表语句(建附录Ⅰ),点击运营,完毕数据库的建立。将本系统文献夹拷贝到Tomcat主目录下Tomcat6.0\webapps目录下,在IE窗口地址栏中输入:8080/Inventory,假如访问成功则表达本系统安装成功。(二)系统调试错误1:java.lang.NumberFormatException:Forinputstring:""解决方法:检查输入的数据是否为空。错误2:java.sql.SQLException:Errorestablishingsocket.解决方法:检查是否SQLServer服务器是否启动。错误3:java.sql.SQLException:违反了UNIQUEKEY约束.解决方法:输入的数据项与数据库中已有的数据反复,而该数据项相应的数据库字段设定了UNIQUE约束,即该字段数据不允许反复,修改输入数据即可解决。错误4:java.sql.SQLException:DELETE语句与COLUMNREFERENCE约束冲突。解决方法:删除数据时违反了数据库的外键约束,即删除的数据的字段是其他表的外键。一方面删除与该记录有关的记录,再删除该记录。结束语本系统的设计与实现历时两个多月的时间,目前基本的功能均已实现。本系统的重要特点有以下几个方面:(1)由于本系统采用的设计语言是基于java的,所以本系统可以跨平台运营,即在windows,unix,linux等不同的操作系统环境下均可运营。(2)由于本系统的设计遵循MVC的设计模式,所以代码可重用性高,低耦合性,代码维护方便。(3)系统查错能力强,并且对于用户的操作错误都有和谐而具体的提醒。(4)界面设计简洁,以浅绿色为主色调,操作方便、简洁。但是,本系统设计仍然不够完善,有许多局限性之处。重要有以下几点:(1)前期系统调研局限性,系统功能还不够完善。(2)系统的可扩展性不佳,往往系统的一小部分修改会牵扯到许多地方的改动,工作量大且容易犯错。(3)数据库设计不够合理,数据冗余多,安全性不够。综合以上局限性,系统的仍需不断改善。涉及进行更加具体的系统调研,了解用户的真正需求,不断完善系统的功能,增长系统的实用性。技术方面可以考虑目前比较流行的SSH框架,提高系统的可扩展性。参考文献[1]王斌斌,吴孝丽.库存管理系统UML设计[J].平顶山工学院学报,2023,(03).[2]陈瑞斌,南理勇.基于Web服务的仓库管理系统设计[J].信息服务报,2023,(02).[3]杜来红.基于Web的物料库存管理系统的研究[J].物流技术,2023,(8).[4]朱士高,朱军,朱彩霞.基于WEB的公司进销存管理系统的设计[J].淮阴工学院学报,2023,(5).[5]HuangSC,HuangYM,ShiehSM.Vibrationandstabilityofarotatingshaftcontainingatransersecrack[J].JSoundandVibration,1993,162(3):387-401.[6]汪旭敏,陈晓川,杨建国等.基于WEB的库存管理系统的设计和实现[J].机械设计与制造,2023,(1).[7]俞文跃,张长胜.基于WebService三层体系结构的库存管理系统的开发[J].福建电脑报,2023,(12).[8]乔荣丽,高淑芝,孙水亮.基于MVC模式的物资供应管理信息系统的设计[J].化工之友,2023,(15).[9]张兴旺,赵嘉.基于JSP的物流管理系统的设计与实现[J].物流工程,2023,(7).[10]马颖,张劳模.基于J2EE平台的库存管理系统设计与实现[J].郑州铁路职业技术学院学报,2023,18(4).[11]许维.J2EE架构下的物流信息系统设计[J].中国管理信息化,2023,9(5).[12]Manuel.DRossetti,MehmetMiman,VijithVarghese.Object-OrientedFrameworkforSimulatingMulti-EchelonInventorySystems[J],2023.[13]薛小锋.公司采购管理系统的设计与实现[J].数据库及信息管理,2023,(06).[14]许跟勇,周炳海.基于RFID的第三方物流仓储管理系统设计应用[J].物流科技,2023,(11).[15]陈潇.第三方物流管理信息系统设计——库存管理信息系统[J].山西财经大学学报,2023,11(1).致谢通过长达三个月的努力我的毕业论文终于完毕了。在这期间,指导教师xxx老师给了我细致、专业的指点以及耐心的辅导,在此深表敬意和感谢!同时,在我完毕毕业论文的过程中,教研室的老师、辅导员老师以及同学们也给予了我莫大的帮助,对他们的关心、帮助我深表感谢!我更要感谢大学四年来所有教过我的老师,没有他们深厚的专业理论知识和经验的授予,就没有我今天的成绩。附录Ⅰ数据库建表语句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;附录Ⅱ系统重要业务逻辑代码登录功能重要业务逻辑代码: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;}分页浏览功能业务逻辑代码:publicArrayList<WareBean>getWares(intpageNo,intpageSize){ ArrayList<WareBean>al=newArrayList<WareBean>(); introwCount=0; try{ conn=newConnectionProcess().getConn(); Stringsql="selectcount(*)fromwarehouse"; 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+ "*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){ 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{ 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();}<divalign="center"> <divid="Layer1"> <tablewidth="400"border="0"cellpadding="0"cellspacing="0"id="table1"><%for(inti=0;i<goods.size();i=i+5){ try{ gb1=goods.get(i);%><tr><%if(gb1!=null){%><td><aid="<%=gb1.getGoodsname()%>"onclick="change();"><%=gb1.getGoodsname()%></a></td><%}if(gb2!=null){%><td><aid="<%=gb2.getGoodsname()%>"onclick="change();"><%=gb2.getGoodsname()%></a></td><%}if(gb3!=null){%><td><aid="<%=gb3.getGoodsname()%>"onclick="change();"><%=gb3.getGoodsname()%></a></td><%}if(gb4!=null){%><td><aid="<%=gb4.getGoodsname()%>"onclick="change();"><%=gb4.getGoodsname()%></a></td><%}if(gb5!=null){%><td><aid="<%=gb5.getGoodsname()%>"onclick="change();"><%=gb5.getGoodsname()%></a></td><%}%></tr><%}%> <tr> <tdcolspan="5"align="center"valign="middle"><inputtype="button"value="关闭"onClick="closeDiv();"/></td></tr></table></div>出库时更新货品库存业务逻辑代码:publicbooleanputout(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{ 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="+wareid +"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();

温馨提示

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

评论

0/150

提交评论