基于cs的仓库智能管理系统设计毕业论文_第1页
基于cs的仓库智能管理系统设计毕业论文_第2页
基于cs的仓库智能管理系统设计毕业论文_第3页
基于cs的仓库智能管理系统设计毕业论文_第4页
基于cs的仓库智能管理系统设计毕业论文_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

1、本科毕业设计(论文) 题目名称: 基于c/s 的仓库智能管理系统 学 院: 计算机科学技术 专业年级: 软件工程 07级 学生姓名: xxx 班级学号: 1班08号 指导教师: xxx 二一一 年 六 月 十三 日摘 要本文主要阐述了采用面向对象思想开发基于c/s的仓库智能管理系统的方法和过程,包括从可行性研究到系统投入使用的主要相关文档。本系统主要完成对仓库的库存管理,包括入库、出库、库存、员工信息、供应商信息以及密码管理等6个方面。系统可以完成对各类信息的浏览、查询、添加、删修改、报表等功能。系统的开发环境为mysql+myeclipse。使用myeclipse时限逻辑代码。系统实现了系统

2、设置,单据填开,库存查询,报表导出等功能。其中系统设置包括:管理员的增加,修改,删除,以及权限管理;仓库内货物的基本资料的增加,修改,删除;商家的基本资料的增加,修改,删除。单据填开模块包括:出库单,入库单,等单据的填开级作废操作。库存查询系统包括:库存情况的查询,各项明细的查询。该系统是对仓库的智能管理,并进行相应的采购管理、入库管理、出库管理、报表管理等一些仓库方面的管理。该系统可以方便地实现商品的入库操作和出库操作、以及报表输出等功能,这些功能的实现对该公司的仓库管理从以往的手工管理过渡到计算机的信息化管理,从而大大提高了工作效率。关键词:数据库;sql语言;myeclipse;数据库组

3、建;仓库管理abstractthe system mainly refers to warehousing management,which includes the folllowing fields:stock in and out,inventory,staff data,suppliers data and password management.it also offers the funcions as data browse, adding,deleting,modification and report,etc.the system development environmen

4、t is mysql and myeclipse.it contains 3 modules,system management,receipts management and inventory query.system management module is used to conduct operater adding.modification.deleting and authoirties assignmentmin addition,inventory,staff andcustomer data adding,modification and deleting;the seco

5、nd part refers to stock in and out,receipts fill-in cancellation; thelast maodule contends to warehousing query,staff salary query,monthly,quarterly,yearly report query.as stated previously,the sysrem is an intelligent warehousing management solution.which includes:purchasing management,stock in and

6、 our management,report management,etc.the system can expediently carry out the merchandise to store in warehouse the operation and a database operation, and the statement print etc. function, the realization of these functions manages to the stock of that company to manage to transfer the informatio

7、n-based management of the calculator from the former handicraft, raising the work efficiency thus and consumedly.key words:database; sql;myeclipse ;database module; database management目 录摘 要iabstractii第1章 绪论11.1 选题背景11.2 国内外发展概况及存在的问题21.3 选题目的、意义21.4 课题应解决主要问题31.5 指导思想3第2章 系统分析62.1可行性研究62.1.1 技术可行性研

8、究62.1.2 经济可行性研究72.2 需求分析82.2.1 理解需求82.2.2 分析需求102.2.3 数据处理需求10第3章 概要设计123.1 总体构想123.2 据库设计模块123.2.1 数据库结构设计123.2.2 连接数据库133.3 功能模块设计143.3.1 客户端的基本功能153.3.2 服务器的基本功能15第4章 详细设计及实现164.1 程序主体框架设计164.2 程序流图164.3 客户端窗口及相关功能184.4 服务器功能实现244.4.1 多线程监听功能的实现244.4.2 数据传输功能的实现254.4.3 数据库持久层功能的实现274.4.4 数据统计的实现3

9、2第5章 系统测试345.1 单元测试345.1.1 白盒测试345.1.2 黑盒测试345.2 功能测试355.2.1 仓库管理的功能测试355.2.2 商品管理模块的测试355.2.3 数据传输模块的测试355.2.4 数据库仓储模块的测试355.3 集成测试与系统测试355.4 程序的异常处理365.5 调试37结 论38致 谢39参考文献40附 录41第1章 绪论1.1 选题背景随着社会发展,物流行业已经成为一个与我们的生活息息相关的行业。该行业最大的特点就是数据量极大,每日的进销量都是一个惊人的数字,传统的纸质记录方法既浪费人力物力,又缺乏准确性、安全性。但在信息时代的今天,这种庞大

10、的数据采集记录工作只需交给一台电脑,一两个管理人员操作即可。所以,我们有必要开发一个完整、安全、便捷、高效率的仓库智能管理系统,来配合管理人员完成数据采集。我国物流市场潜力巨大是不争的事实,随着加入wto后开放的步伐逐步加快,我国的“世界工厂”的雏形已经显现,世界主要的跨国公司均在我国部署了他们的研发基地、生产基地,这将吸引更多的国内外物流企业进入这个市场。但是国内物流企业规模小、数量多,缺少竞争优势,并且技术含量低,要想在这个大市场下取得优势,必须减少成本,增强企业效率,提供更具信息化、人性化、快速化、便捷化的服务,电子商务不免是一个明智的选择,电子商务给企业带来的效益不言而喻。仓储管理在物

11、流管理中占据着核心的地位。传统的仓储业是以收保管费为商业模式的,希望自己的仓库总是满满的,这种模式与物流的宗旨背道而驰。现代物流以整合流程、协调上下游为己任,静态库存越少越好,其商业模式也建立在物流总成本的考核之上。由于这两类仓储管理在商业模式上有着本质区别,但是在具体操作上如入库、出库、分拣、理货等又很难区别,所以在分析研究必须注意它们的异同之处,这些异同也会体现在信息系统的结构上。 随着制造环境的改变,产品周期越来越短,多样少量的生产方式,对库存限制的要求越来越高,因而必须建立及执行供应链管理系统,借助电脑化、信息化将供应商、制造商、客户三者紧密联合,共担库存风险。仓储管理可以简单概括为8

12、个关键管理模式:追-收-查-储-拣-发-盘-退。 设计模式提供了一种共享经验的方式,可以使团体受益和避免不断的重复发明。设计模式通常捕捉问题的描述、问题的语境、推荐的问题解决方案以及使用解决方案后可以预见到的结果。为了具有最广泛的适用性(从而对更多的读者有用),设计模式通常从取决于环境的精确细节中抽象而来。这种抽象性产生了一些把设计模式应用到现有的案例中所必需的译码。c/s(客户端/服务器)结构的优点是能充分发挥客户端pc的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快,降低服务器的运行数据负荷量。方便快捷,让使用者拥有更高的自由性和灵活性。本次毕业设计,利

13、用c/s结构来实现一个仓库智能管理系统。1.2 国内外发展概况及存在的问题当今的主流仓库管理系统主要是以“便捷、高效、智能、安全”作为设计理念。传统的仓库管理系统只注重“进、销、存”三项基本功能,在其他方面显的用心不足,技术比较落后,工作效率也低。致使很多优秀的仓库管理系统都在不断的提高自身性能。从国外的经验来看,一个优秀的仓库管理系统应该具备以下几点:1、有效的人工管理。2、通过智能系统和布局使柔性最大化。3、与合作伙伴的仓储管理系统一体化。4、不要只局限于收货、储存和运送5、在仓库内安装逆向传动装置。6、在仓库内建设一个中枢指挥中心。7、准确测量,快速反应。8、无线射频与语音技术的结合。9

14、、最优化供应链中的仓库。10、不要被技术所迷惑。从我们国内的实际脚步出发,在汲取以上经验的同时,我们还要注意一下几点:1、我们市场比较大,所以应扩大服务器的网络覆盖面积(支持多线程客户端)。2、加强系统的便捷性。3、完善系统自身,对数据做好保护,避免由于外界原因而造成的数据损坏或丢失。目前市场上出现的仓库管理系统都十分优秀,功能丰富,界面美观。例如中小企业最常用的“管家婆”软件。但这些软件仍然有需要问题要解决,最明显的就是操作复杂。绝大部分用户只需要出库、入库的记账功能,花哨的界面、臃肿的结构和复杂的操作使得很多用户都抱怨软件不好用。所以我们需要开发一种功能全面,但操作简单的仓库管理软件。1.

15、3 选题目的、意义随着我国经济迅猛发展,各类商品流动及其频繁,复杂的供应链编织着我国的经济市场。仓储在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。传统简单、静态的仓储管理已无法保证企业各种资源的高效利用。如今的仓库作业和库存控制作业已十分复杂化多样化,仅靠人工记忆和手工录入,不但费时费力,而且容易出错,给企业带来巨大损失。仓库存放的货物品种繁多,堆存方式以及处理过程也非常复杂,随着业务量的增加,仓库管理者需要处理的信息量会大幅上升,因此往往很难及时准确的掌握整个仓库的运作状态。针对这一情况,本

16、系统在满足仓库的基本管理功能基础上发挥信息系统的智能化,减轻仓库管理人员和操作人员的工作负担。系统主要的实现目标是监控整个仓库的运转情况;提供完善的任务计划功能,由整个操作的指令中心来安排进出任务,确认任务的开始,进货管理和出货管理按其指令执行即可;实时监控所有货物的在线运动情况,实时提供库存变化的信息。仓储管理及精确定位在企业的整个管理流程中起着非常重要的作用,如果不能保证及时准确的进货、库存控制和发货,将会给企业带来巨大损失,这不仅表现为企业各项管理费用的增加,而且会导致客户服务质量难以得到保证,最终影响企业的市场竞争力。所以我们提出了全新基于射频识别的仓库系统方案来解决精确仓储管理问题。

17、1.4 课题应解决主要问题本系統使用core java技术开发的基于c/s的仓库智能管理系统。后台数据库使用mysql,windows xp作为平台,可以有效管理各种数据信息。客户方面,要做的尽可能人性化点,一般用户登录时就能进行基本的操作,如一般的查看各种信息。1.5 指导思想 1. c/s结构。客户端/服务器结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到client端和server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是client/server形式的两层结构,由于现在的软件应用系统正在向分布式的web应

18、用发展,web和client/server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。2. java jdbc技术。jdbc(java database connectivity)提供连接各种关系数据库的统一接口,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。jdbc为工具/数据库开发人员提供了一个标准的api,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 java api 编写数据库应用程序。3. e

19、clipse环境。eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt)。 eclipse最初是由ibm公司开发的替代商业软件visual age for java的下一代ide开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟eclipse基金会(eclipse foundation)管理。 2003年,eclipse 3.0选择osgi服务平台规范为运行时架

20、构。 2007年6月,稳定版3.3发布。2008年6月发布代号为ganymede的3.4版。2009年7月发布代号为galileo的3.5版。eclipse是著名的跨平台的自由集成开发环境(ide)。最初主要用来java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如c+和python的开发工具。eclipse的本身只是一个框架平台,但是众多插件的支持使得eclipse拥有其他功能相对固定的ide软件很难具有的灵活性。许多软件开发商以eclipse为框架开发自己的ide。eclipse 最初由oti和ibm两家公司的ide产品开发组创建,起始于1999年4月。ibm提供了最初的ecl

21、ipse代码基础,包括platform、jdt 和pde。目前由ibm牵头,围绕着eclipse项目已经发展成为了一个庞大的eclipse联盟,有150多家软件公司参与到eclipse项目中,其中包括borland、rational software、red hat及sybase等。eclipse是一个开发源码项目,它其实是 visual age for java的替代品,其界面跟先前的visual age for java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括oracle在内的许多大公司也纷纷加入了该项目,并宣称ec

22、lipse将来能成为可进行任何语言开发的ide集大成者,使用者只需下载各种语言的插件即可。虽然大多数用户很乐于将 eclipse 当作 java ide 来使用,但 eclipse 的目标不仅限于此。eclipse 还包括插件开发环境(plug-in development environment,pde),这个组件主要针对希望扩展 eclipse 的软件开发人员,因为它允许他们构建与 eclipse 环境无缝集成的工具。由于 eclipse 中的每样东西都是插件,对于给 eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。基于 ecli

23、pse 的应用程序的突出例子是 ibm 的 websphere studio workbench,它构成了 ibm java 开发工具系列的基础。例如,websphere studio application developer 添加了对 jsp、servlet、ejb、xml、web 服务和数据库访问的支持。eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由eclipse项目、eclipse工具项目和eclipse技术项目三个项目组成,具体包括四个部分组成eclipse platform、jdt、cdt和pde.jdt支

24、持java开发、cdt支持c开发、pde用来支持插件开发,eclipse platform则是一个开放的可扩展ide,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。eclipse platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。eclipse sdk(软件开发者包)是eclipse platform、jdt和pde所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到eclipse platform中的工具。eclipse s

25、dk由eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。eclipse项目生产的软件以 cpl发布,第三方组件有各自自身的许可协议。4. mysql数据库。mysql是最受欢迎的开源sql数据库管理系统,它由mysql ab开发、发布和支持。mysql ab是一家基于mysql开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。mysql是mysql ab的注册商标。mysql是一个快速的、多线程、多用户和健壮的sql数据库服务器。mysql服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deploye

26、d)的软件中去。mysql是一个数据库管理系统。一个数据库是一个结构化的数据集合。它可以是从一个简单的销售表到一个美术馆、或者一个社团网络的庞大的信息集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像mysql这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。mysql是一个关系数据库管理系统。关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“mysql”中的sql代表“structured query langu

27、age”(结构化查询语言)。sql是用于访问数据库的最通用的标准语言,它是由ansi/iso定义的sql标准。sql标准发展自1986年以来,已经存在多个版本:sql-86,sql-92,sql:1999,sql:2003,其中sql:2003是该标准的当前版本。mysql是开源的。开源意味着任何人都可以使用和修改该软件,任何人都可以从internet上下载和使用mysql而不需要支付任何费用。如果你愿意,你可以研究其源代码,并根据你的需要修改它。mysql服务器是一个快的、可靠的和易于使用的数据库服务器。如果这是你正在寻找的,你可以试一试。mysql服务器还包含一个由用户紧密合作开发的实用特

28、性集。mysql服务器原本就是开发比已存在的数据库更快的用于处理大的数据库的解决方案,并且已经成功用于高苛刻生产环境多年。尽管mysql仍在开发中,但它已经提供一个丰富和极其有用的功能集。它的连接性、速度和安全性使mysql非常适合访问在internet上的数据库。mysql服务器工作在客户/服务器或嵌入系统中。mysql数据库服务器是一个客户/服务器系统,它由多线程sql服务器组成,支持不同的后端、多个不同的客户程序和库、管理工具和广泛的应用程序接口(apis)。mysql也可以是一个嵌入的多线程库,你可以把它连接到你的应用中而得到一个小、快且易于管理的产品。第2章 系统分析2.1可行性研究

29、2.1.1 技术可行性研究1、c/s(客户端/服务器)结构。c/s 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成dbms的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。c/s结构的优点是能充分发挥客户端的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个: 只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进

30、行专门的设计来处理分布式的数据。 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。同时,我采用多线程服务器,可以允许多个客户端同时访问服务器。并对数据库进行加锁,使得多个客户端同时访问的时候,只有一人具有管理数据的权限2、java jdbc技术。我做的程序持久层所采用的技术是jdbc技术。jdbc(java data base connectivity,java数据库连接)是一种用于执行

31、sql语句的java api,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。jdbc为工具/数据库开发人员提供了一个标准的api,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 java api 编写数据库应用程序,同时,jdbc也是个商标名。 有了jdbc,向各种关系数据发送sql语句就是一件很容易的事。换言之,有了jdbc api,就不必为访问sybase数据库专门写一个程序,为访问oracle数据库又专门写一个程序,或为访问informix数据库又编写另一个程序等等,程序员只需用jdbc api写一个程序就够了,它可向相应数据库发送sql调用。同时

32、,将java语言和jdbc结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是java语言“编写一次,处处运行”的优势。 java数据库连接体系结构是用于java应用程序连接数据库的标准方法。jdbc对java程序员而言是api,对实现与数据库连接的服务提供商而言是接口模型。作为api,jdbc为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。jdbc使用已有的sql标准并支持与其它数据库连接标准,如odbc之间的桥接。jdbc实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。 j

33、ava 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 java应用程序与各种不同数据库之间进行对话的方法。而 jdbc 正是作为此种用途的机制。 jdbc 扩展了 java 的功能。例如,用 java 和 jdbc api 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 jdbc 通过 intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 windows、 macintosh 和unix 等各种不同的操作系统)。随着越来越多的程序员开始使用java 编

34、程语言,对从 java 中便捷地访问数据库的要求也在日益增加。但java语言当中比较主流的持久层框架还是hibernate。hibernate操作包含主外键关系的表非常便捷,一定程度上可以减少程序员的代码量。但我并没有采用hibernate技术,原因有以下两点:(1) 本程序比较小,数据库中表的结构并不复杂,所以代码中需要的sql语句也相对简单,jdbc技术完全可以胜任。(2) hibernate技术虽然功能强大,但由于其功能太多,体积太大,显得过于“臃肿”,从而降低了系统的工作效率。如果是商务系统,主要是对业务处理能力要求高,对数据访问能力要求不高。所以为减少程序的开发周期、减少模块之间的耦

35、合性、以及智能高效的处理复杂数据,hibernate应运而生。但其复杂的内核,还有对多数据库支持的扩展包令其工作效率低缓,这是hibernate致命的缺点。所以hibernate技术广泛应用于商务系统以及各类网站。仓库管理系统对数据的访问量大,频繁的增删改查对系统效率的要求非常高。由以上几点总结,我最后选择了jdbc技术当做本程序的持久层技术。2.1.2 经济可行性研究基于c/s的仓库智能管理系统开发过程中用到了mysql数据库软件、myeclipse开发工具。这两个软件均为开源软件,完全可以在正规网站上免费下载。设计过程中通过网络和购买书籍查阅的相关信息,因此设计过程中所需的花费有:上网费、

36、购书费。从经济可行性方面分析,具有经济可行性。2.2 需求分析2.2.1 理解需求根据以上初步的分析需求分析得出数据流图,如图2-1所示。命令处理增加命令删除命令更改命令查询命令用户数据库更新的信息显示信息子系统显示增加命令删除命令更改命令查询命令增加的数据删除的数据更改的数据要查询的数据数据信息图2-1 数据流图用户用例图如图2-2所示:图2-2 用户用例图系统的类图如图2-3所示:图2-3 程序类图用户添加商品的活动图如2-4所示:图2-4 用户添加商品的活动图用户添加商品的顺序图如图2-5所示:图2-5 用户添加商品的活顺序图2.2.2 分析需求简单来说,本程序的开发分为以下几个模块:用

37、户登录认证模块、仓储管理模块、数据传输模块、库存管理模块。每一个模块拥有自己的数据表actionform 和自己的处理action。登录模块用来验证登录者信息的准确性,仓库信息模块用来维护数据,仓储模块用来处理货物,数据运输模块用来处理数据运输过程。2.2.3 数据处理需求e-r图为实体-联系图,对于每个模块的构建和如何进行模块之间数据的传递,是重要的依据。构成e-r图的基本要素是实体型、属性和联系,其表示方法为实体型用矩形表示,矩形框内写明实体名;属性用椭圆形表示,并用无向边将其与相应的实体连接起来;联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联

38、系的类型(1 : 1,1 : n或m : n)。如图2-6所示。数量存库日期用户仓库商品管理储存用户名密码最大容量目前商品数1n1n名称单价供应商仓库地址nn图2-6 e-r图第3章 概要设计3.1 总体构想首先明确的是本程序的开发主要分为前台和后台的设计,前台的设计分为几个功能模块功能,主要实现会员的登录查看各类信息的作用。后台就对各个功能模块进行管理,有主要的数据库的增、删、改、查的作用。3.2 据库设计模块3.2.1 数据库结构设计根据本程序的需求,为了能更直观和满足功能的需求,经过分析在开发过程中主要使用的表结构如表3-1所示。表3-1 所有数据库表序号表名简单说明1goods商品信息

39、表2manager用户信息表3manager_warehouse用户与仓库关系表4shop供应商信息表5warehouse仓库信息表商品信息表主要用于保存所有商品,结构如表3-2所示:表3-2 goods表字段名数据类型长度是否为主键可以为空描述idint11yesno商品编号,可自动生成namevarchar20no商品名称countint11no商品数量pricemedimutextno商品单价warehouse_idint11no所在仓库save_datedateno存库日期shop_idint11no供应商编号statevarchar5no库存状态用户信息表主要用于保存用户的账号,结构

40、如表3-3所示:表3-3 manager表字段名数据类型长度是否为主键可以为空描述idint11yesno用户编号,可自动生成namevarchar20no用户账号passwordvarchar10no用户密码用户与仓库关系表主要用户记录仓库与用户之间的所属关系,他们之间是多对一的关系。比如一个用户可以拥有多个仓库,但一个仓库只能属于一个用户。此表作为辅助表,该表的结构如表3-4所示:表3-4 manager_warehouse表字段名数据类型长度是否为主键可以为空描述manager_idint11yesno用户编号warehouse_idint11yesno仓库编号供应商信息表主要用于保存商

41、品供应商家的基本信息,结构如表3-5所示:表3-5 shop表字段名数据类型长度是否为主键可以为空描述idint11yesno商家编号,可自动生成namevarchar20nono商家名称addressvarchar20noyes商家地址emailvarchar20noyes电子邮箱telephonevarchar20noyes商家电话仓库信息表主要用于保存所有仓库的基本信息,结构如表3-6所示:表3-6 warehouse表字段名数据类型长度是否为主键可以为空描述idint11yesno仓库编号,可自动生成areavarcahar20no仓库所属区域dept_idint11no所属用户编号v

42、olumeint11no最大容量countint11no目前库存容量3.2.2 连接数据库public class jdbcutil private static connection con = null;static try class.forname("org.gjt.mm.mysql.driver"); catch (classnotfoundexception e) e.printstacktrace();public static connection getconnection() try con = drivermanager.getconnection(&

43、quot;jdbc:mysql:/localhost:3306/shen?useunicode=true&characterencoding=utf8", "root",""); catch (sqlexception e) e.printstacktrace();return con;由以上代码,对jdbcutil数据库巩固类进行实例化,调用jdbcutil().getconnection()即可获得数据库连接。3.3 功能模块设计在概要设计阶段,必须设计出系统的概念模型,这是实现系统功能的必经之路。在此过程中,根据各表的分析和对各种

44、数据和系统功能进行综合,可得到软件初始结构图如图3-1所示、图3-2所示。注册用户用户登录添加仓库查看仓库查看商品删除商品增加商品设置商品属性编辑商家信息选择供应商统计数据仓库管理商品管理商家管理用户账号客户端图3-1 客户端功能结构图服务器商品信息仓库信息用户信息商家信息增加仓库信息查询仓库信息增加商品信息删除商品信息修改商品信息查询用户信息查询供应商信息增加供应商信息新增用户信息图3-2 服务器功能结构图3.3.1 客户端的基本功能用户端主要功能都是面对用户的操作,根据用户的需求,想用户端发出请求,将用户所需要的或所编辑的信息显示出来。其主要功能模块如下:登用户管理模块:用户登陆,用户注册

45、。仓库查看模块:查看仓库,新建仓库,快速查询商品功能商品查看模块:查看已入库商品,查看已出库商品,查看全部商品,查看商品具体信息,删除商品,修改商品信息,将商品入库,将商品出库。数据发送模块:对商品等信息进行打包,发送数据包,接受数据包。3.3.2 服务器的基本功能服务器断主要是接受客户端发来的信息,识别信息类型后,对信息分类,再对处理客户端所需要的业务。其主要功能模块如下:数据存储模块:主要包括数据库中的商品的进行增、删、改、查。数据查询模块:判断用户的账号密码是否正确,查找某个用户所拥有的所有仓库及仓库内商品信息。信息识别模块:解压客户端发送的数据包,判断业务类型。数据发送模块:对数据库中

46、得到的信息进行打包,发送数据包。第4章 详细设计及实现4.1 程序主体框架设计程序分为客户端和服务器两个部分,两个部分均能够独立存在,但运行时又必须相互支持。客户端的操作界面均采用java.swing包下的可视窗体控件,服务器则采用纯后台系统。客户端和服务器在myeclipse中分别是两个项目,为了两个项目能够正确读取网络数据流发送的数据包,所以在客户端程序中需要添加一个服务器生成的.jar文件。该文件包括的内容如下:1、基本类:商品类,用户类,仓库类,供应商类。2、自定义异常类:mywarehouseexception类,继承自exception,用于抛出各类异常。客户端程序主要由以下几个部

47、分组成:1、窗体包:所有可视窗体及其控件。2、工具包:socke工具包(用于通过tcp/ip协议,与服务器进行连接),sourcebag数据封装类。服务器程序主要由以下几个部分组成:1、接口:商品类接口,用户类接口,仓库类接口,供应商类接口,接口工厂类。2、接口实现类:商品类接口实现类,用户类接口实现类,仓库类接口实现类,供应商类接口实现类。3、基本类:商品类,用户类,仓库类,供应商类。4、工具类:jdbcutil(数据库工具类),连接池工具类,socke工具包(打开服务器监听),sourcebag数据封装类。4.2 程序流图整个系统包括主要登录、查询、添加、修改、删除以及退出等功能。首先是用

48、户登录,用户登陆后可以对系统的各个模块进行操作,每个模块都包括查询、添加、修改、删除功能,管理员在每次操作完成后,系统自动修改数据库信息,当用户需要离开,可用退出功能退出,保护系统信息安全。如图4-1所示。查看仓库添加仓库搜索商品操作仓库修改商品信息查看商品信息删除商品查看仓库内商品保存数据库主界面退出判断账号密码是否正确用户登录搜索商品操作仓库添加仓库查看仓库图4-1 程序流图4.3 客户端窗口及相关功能客户端以一个主窗口作为模板,然后跟据用户的使用切换不同的面板。主窗口继承jframe。主窗口的特点是:1、点击右上角红叉的时候会弹出确认窗口,询问用户是否确认离开。2、每个功能面板都可以调整

49、窗口的大小。如图4-2。图4-2 离开确认窗口主窗口相关代码请查询附录2.各个功能面板如下:1. 登录界面:用户输入账号密码才能对仓库进行管理。如图4-3。图4-3 登录窗口如果输入账号密码错误或者输入空信息,系统会做出相关提示。如图4-4。 图4-4 登录错误提示登录的相关代码如下:oos = new objectoutputstream(s.getoutputstream();oos.writeobject(bag);oos.flush();ois = new objectinputstream(s.getinputstream();sourcebag getbag = (sourceba

50、g) ois.readobject();if (getbag.gettype() < 0) joptionpane.showmessagedialog(null, "账号密码错误", "登陆失败",joptionpane.yes_option); else manager manager = (manager) getbag.getdate("manager");new mainpanel(mf, manager).toshow();如果用户点击“新用户注册“,则会进入注册界面,该界面的主要功能就是添加新的用户,相关界面如图4-

51、5。图4-5 用户注册界面点击“注册”后,客户端会向服务器发送一个注册请求,服务器操作数据库,如果添加成功,服务器返回一个成功信息给客户端。用户注册成功后最自动返回登录界面。其相关代码如下:socket s = socketutil.getsocket();sourcebag setbag = new sourcebag(sourcebag.regist_manager);setbag.add("name", name);setbag.add("password", pw1);oos = new objectoutputstream(s.getoutpu

52、tstream();oos.writeobject(setbag);oos.flush();ois = new objectinputstream(s.getinputstream();sourcebag getbag = (sourcebag) ois.readobject();if (getbag.gettype() = sourcebag.ok) joptionpane.showconfirmdialog(null, "注册成功", "提示",joptionpane.yes_option);new loginpanel().toshow(); el

53、se throw new exception();2. 仓库查看界面:左侧列表时用户仓库列表,右面是选中的仓库的基本信息。用户在此界面可对仓库进行操作:新建仓库或者查看仓库内商品。左边的按钮时添加新仓库,点击可以进入添加仓库界面,用户编辑好新仓库相关信息,即可添加。相关界面如图4-6。图4-6仓库查看界面此界面包括添加仓库和查看仓库两个功能。点击添加仓库,进入添加仓库界面,该界面如图4-7。图4-7添加仓库界面在该界面中,用户填好相关信息后,客户端向服务器发送新建仓库请求,数据库创建仓库成功后,向客户端发送成功请求,代码如下:socket s = socketutil.getsocket();

54、sourcebag setbag = new sourcebag(sourcebag.add_warehouse);setbag.add("address", address);setbag.add("valume", valume);setbag.add("manager_id", manager.getid();oos = new objectoutputstream(s.getoutputstream();oos.writeobject(setbag);oos.flush();ois=new objectinputstream(s.getinputstream();sourcebag getbag=(sourcebag)ois.readobject();if (getbag.gettype() = sourcebag.ok) joptionpa

温馨提示

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

评论

0/150

提交评论