JSP+SQL Server仓库管理信息系统
更多更新更免费论文网,专业毕业设计论文,课程设计源代码,上机实习报告,实验报告请点击www.lwfree.cn
仓库管理信息系统
摘 要
仓储始终是生产者和客户之间的一个主要的联系纽带,在物流系统中起着包括运输整合、产品组合、物流服务、防范偶发事件、物流过程平稳等一系列增加附加值的作用,是公司物流系统最重要的职能之一。要想提高劳动生产,降低成本,提高服务质量和管理水平,促进经济效益,必须借助计算机来进行现代化的信息管理,《仓库管理信息系统》正是为此而设计的,该系统是运用Microsoft SQL SERVER 2000数据库系统和JSP开发实现的,
本系统是在管理信息系统的理论和方法指导下、数据库技术支持下完成的。本文简要介绍了《仓库管理信息系统》的项目背景和意义,论文遵循软件工程方法论和信息系统开发规范,以系统开发过程为主线,另外,对系统开发中采用的核心技术也作了相应的介绍。系统由于采用先进的MVC(Model View Controller)模式把表示、控制和数据有效分离。
【关键词】仓库管理 JSP MVC
Abstract
Warehouse always is the connection between producers and customers. Warehouse, in the whole logistics system , adding extra profit to transportation integration, combination of goods, logistics service, preventing adventitious accidents, balancing the process of logistics. It is one of the most important functions of the logistics system of a corporation. To improve labor production, reduce cost, improve service quality, management level and push forward economic profit, the corporation has to launch the modern information management through computer. Warehouse management system is just for that, this system is developed by using Microsoft SQL SERVER 2000 database and JSP.
This system is accomplished with the theories and ways of information management system, and also under the support of database. This thesis gives a introduction and meaning of the background of Warehouse information management system. In addition, it also introduces the core technology that used when developing the system. Since the system uses the advanced Model View Controller model to effectively divide demonstration, control and data. At the same time, conceal the data.
Key words: Warehouse management; JSP; MVC
目 录
前 言…………………………………………………………………………………….…………..5
第一章 绪 论……………………………………………………………………………………...6
1.1 引言………………………………………………………………………………………….6
1.2 管理信息系统概述…………………………………………………………………………6
1.2.1 管理信息系统简介………………………………………………………………….7
1.2.2 管理信息系统的定义………………………………………………………………8
1.2.3 管理信息系统构成…………………………………………………………………8
1.3 仓库信息管理系统………………………………………………………………………….10
1.3.1 仓库信息管理系统简介………………………………………………………….....10
1.3.2 仓库管理信息系统的开发目的与思路…………………………………………..12
1.3.3 发展仓库信息管理系统的意义与作用…………………………………………….13
(1)提高公司的管理效益及经济效益……………………………………………….13
(2)提高服务质量……………………………………………………………………..13
(3)提高工作效率…………………………………………………………………….13
(4)完善公司内部管理体制………………………………………………………….13
(5)全面了解公司情况,提高公司决策水平……………………………………….13
第二章 仓库管理信息系统的设计…………………………………………………………………..14
2.1 仓库管理信息系统的功能………………………………………………………………….14
2.1.1 仓库管理信息系统的功能分析…………………………………………………….14
2.1.2 仓库管理信息系统的分析决策过程……………………………………………..16
2.1.3 仓库管理信息系统执行过程……………………………………………………….18
2.2 公交信息系统的数据组织………………………………………………………………….18
2.2.1 仓库特点分析……………………………………………………………………….18
2.2.1 数据字典…………………………………………………………………………….20
2.2.2 数据库表的设计……………………………………………………………………..25
2.2.3 E-R模型向关系模型的转换……………………………………………………….27
2.2.4 在数据库中建表代码:…………………………………………………………..28
2.3 系统设计目标和原则………………………………………………………………………31
2.4 仓库管理信息系统设计思想………………………………………………………………32
2.5 仓库管理信息系统设计的环境配置………………………………………………………33
第三章 仓库管理信息系统的实现……………………………………………………………………..35
3.1 仓库数据信息存储的实现……………………………………………………………..35
3.2 仓库管理信息系统的实现……………………………………………………………..40
3.2.1 登录系统的实现……………………………………………………………………..40
3.2.2 组件的编写…………………………………………………………………………..42
3.2.3 界面的设计…………………………………………………………………………..47
3.2.3 功能模块设计……………………………………………………………………..…48
第四章 结论…………………………………………………………………………….……50
4.1 结论…………………………………………………………..………………….…..50
4.2 需要改进的地方…………………………………………………………..………...51
总结与体会………………………….………………………………………………………………....53
参考文献…………………………….………………………………………………………………….54
致 谢…………………………….…………………………………………………………………..55
附 录…………………………………………………….…………………………………………..56
前 言
效益与效率是人们永远追求的目标。现代仓库的观念及其经营行为的变革,不仅在流通界产生了飞跃,而且在制造业、运输业、批发零售业之间产生了深远影响。物流、信息流、资金流的全面整合与有效控制,实现了产品供应链全过程的价值和运作的最优化。现代仓库使得企业的经营活动更为高效,运营的成本更为低廉;它不仅促进了全球大规模零售企业的成长,而且极大地满足了顾客的各种需求;它把供应商、制造商、分销商、最终用户紧密地结合在一起,推动了全球制造业的发展,并适应了社会生产及其复杂化的需要,加快了全球经济一体化的步伐。
仓库是每个物流系统不可缺少的组成部分。它在以可能的最低总成本提供令人满意的客户服务方面具有举足轻重的作用。概括地说,仓储之所以重要是因为以下几个原因:
1,获得运输经济性。
2,获得生产经济性。
3,利用数量折扣以及提前购买的优势。
4,维持供应源。
5,支持公司客户服务政策。
6,适应变化的市场条件。(例如,季节性、需要波动、竞争)。
7,克服生产者与消费者之间的时空差异。
8,达到与满意的客户服务水平相匹配的物流成本最小化。
本论文首先介绍了JSP,Servlets和JavaBean的结合应用, 接着在SQL Server 2000 中实现了仓库数据的存储,其中包括了货物信息的存储。 然后重点分析了MVC模式在JSP开发中的应用。最后以伊莉丝家纺有限公司仓库数据为基础,实现了一个具体的仓库管理信息系统。系统统开发前台使用了jdk1.5.0_08,后台数据库使用SQL Server 2000,WEB服务器为Tomcat5.5。系统实现了基本信息的查询修改删除。
第一章 绪 论
1.1 引言
伊莉丝家纺有限公司是个成立不久的小公司,原来是完全的人工管理,随着计算机的现代化发展,仓库工作的繁杂,需要电脑处理的事情越来越多,本系统只是公司管理的一小部分——仓库管理信息系统,主要管理仓库货物的不同信息、不同要求等各种各样业务。这里每天都有大量的货物进出,每次都要处理重复很多相同程序;随时都有货物来登记,然后编入仓库信息库目录中,等等这些业务均由仓库管理员手工完成,这大大增加了管理员的工作量。为了使仓库管理员工作管理科学化、规范化,做到准确及时的了解仓库库存货物的信息,提高工作效率。
1.2 管理信息系统概述
电子计算机科学的飞速发展,给仓库计算机应用带来了蓬勃生机,特别在信息处理领域,计算机已成为最重要的工具。在仓库现代管理理论中,仓库管理信息系统已成为仓库现代科学管理的重要内容,是仓库经营必不可缺少的现代科学工具。
管理信息系统(management information systems,IWIS)的概念起源很早。早在20世纪30年代,柏德就写书强调了决策在组织管理中,且往里。50年代,西蒙提出了管理依赖于信息和决策的概念。同一时代维纳发表了《控制论与管理》,他把管理过程当成一个控制过程。50年代计算机已用于会计工作,1958年盖尔写到:“管理将以较低的成本得到到及时准确的信息,做到较好的控制。"这时"数据处理"一词已经出现。
"管理信息系统"一词最早出现在1970年,由瓦尔特·肯尼万(Walter T.kennevan)给它下了一个定义:"以书面或口头的形式,在合适的时间向经理、职员以及外界人员提供过去的、现在的、预测未来的有关企业内部信息,以帮助他们进行决策。"很明显,这个定义是出自管理的,而不是出自计算机的。
1985年管理信息系统的创始人、明尼苏达大学卡尔森管理学院的著名教授高登·戴维斯(Gordon B.Davis)才给出管理信息系统一个较完整的定义:它是利用计算机硬件和软件,手工作业,分析、计划、控制和决策模型,以及数据库的用户-机器系统。它能提供信息,支持企业或组织的运行、管理和决策。
1.2.1 管理信息系统简介
管理信息系统(Management Information System简称MIS)是信息科学的一个分支,是由人和计算机组成的能进行信息的收集、传递、储存、加工、维护和使用的系统。仓库计算机管理系统是MIS中的一个重要分支,它实现的是计算机管理系统在仓库中的具体应用。
它最早是于70年代初在国外开始发展起来的,到了80年代,国外的仓库管理系统,整个模式已基本定型,技术较成熟,功能也较齐全。
国内的计算机仓库管理系统最早是在80年代初开始的。到了80年代中后期,随着国外仓库计算机系统的大规模引进,国外仓库的先进管理技术进入我国,进一步促进了我国仓库管理技术的发展。国内系统正是在充分吸收国外管理系统的精华,再结合国内的实际情况,逐步发展成熟,到90年代初期形成了几个较成熟的软件系统,同时产生了许多专职从事仓库计算机管理系统开发的公司。
到了90年代中期,随着计算机在物流业中的普及应用,以及计算机技术的不断发展,仓库计算机系统的发展到了一个新的时期,新的系统平台、新的软件功能、新的系统特点及发展方向不断涌现.
1.2.2 管理信息系统的定义
管理信息系统是一个以人为主导,利用计算机硬件、软件、网络通讯设备以及其他办公设备,对企业经营数据进行全面的收集、传输、加工、存储、更新和维护,产生有利于企业战略竟优、提高效益和效率为目的信息,支持企业高层决策,中层控制,基层运作的集成化人机系统。
管理信息系统是一体化系统或称之为集成化系统,管理信息系统进行企业信息管理是从总体目标出发,全面考虑,保证各个职能部门能够有效合理的信息共享,减少数据的冗余度,保证数据的兼容性和一致性。
1.2.3 管理信息系统构成
a.概念结构
从概念上看,管理信息系统由四大部分组成, 即信息源、信息处理器、信息用户和信息管理 者。如图1-1所示。
信息管理者
信息源
信息处理器
信息用户
图1-1 信息系统的概念结构
这里,信息源是信息产生地,指的是输入数据源,若按地点分类由内信息源和外信息源两大类;若按时间分类,可分为一次信息源和二次信息源两大类。信息用户是信息的使用者,他们应用信息进行决策。信息的管理者负责信息系统的设计与维护,确保信息系统的安全运行和协调配合。信息处理器主要负责信息的传输、加工和保存等任务。根据处理的内容和决策的层次来看,管理信息系统可以看成金字塔式的结构。由于一般的组织管理均是分层次的,例如分为“战略计划”、“管理控制”和“运行控制”三层。为它们服务的信息管理与决策支持也应该分为三层,而且还有最基层的业务处理。一般来说,下层的系统数据处理量最大,数据的信息含量在处理中被挖掘,并向上层传递;上层的数据处理量相对较少,但信息的利用度却很高。所以就组成了下面大,上面小的金字塔结构。
一个管理信息系统从使用者的角度看,它总是有一个目标,具有多种功能。每种功能之间又有着各种信息的联系,构成一个有机结合的整体。管理信息系统可以由多个子系统组成,每个子系统将有一个相对独立的功能,而在子系统的下面还可以建立或划分有业务联系的子系统,叫着二级或三级子系统。如1-2图所示
信息系统
信息输入入
信息处理
信息输出
图1-2 信息系统的功能结构
1.3 仓库信息管理系统
1.3.1 仓库信息管理系统简介
公司的产品仓库管理组隶属于销售部领导,由三名职工组成,主要负责产品的出入库管理、库存帐务管理和统计报表,并且应当随时向上级部门和领导提供库存查询信息。为了防止超储造成产品库存积压,同时也为了避免产品库存数量不足而影响市场需求,库存管理组还应该经常提供库存报警数据(与储备定额相比较的超储数量或不足数量)。
产品入库管理的过程是,生产车间随时将制造出来的产品连同填写好的入库单(入库小票)一起送至仓库。仓库人员首先进行检验,一是抽检产品的质量是否合格,二是核对产品的实物数量和规格等是否与入库单上的数据相符,当然还要校核入库单上的产品代码。检验合格的产品立即进行产品入库处理,同时登记产品入库流水帐。检验不合格的产品要及时退回车间。
产品出库管理的过程是,仓库保管员根据销售科开出的有效产品出库单(出库小票)及时付货,并判明是零售出库还是成批销售出库,以便及时登记相应的产品出库流水帐。
平均看来,仓库每天要核收三十笔入库处理,而各种出库处理约五十笔。每天出入库处理结束后,记帐员就根据入库流水帐和出库流水帐按产品及规格分别进行累计,以便将本日内发生的累计数填入库存台帐。
产品入库单如表1-3所示,出库单如表1-4所示,入库流水帐如表1-5所示,出库流水帐如表1-6和表1-7所示,而库存台帐帐页如表1-8所示。
产品库存的收发存月报表是根据库存台帐制作出来的。产品库存查询是通过翻阅几本帐之后实现的。目前库存报警功能尚未实现。
表1-3 产品入库单 第 册 号
日期
产品代码
产品名称
单位
规格
入库数量
备注
生产车间
填制人
表1-4产品出库单 第 册 号
日期
产品名称
规格
入库数量
备注
批发[ ]
零售[ ]
填制人
注:批发出库时在备注栏的批发[ ]处划“√”,否则在零售[ ]处划“√”
表1-5 产品入库流水帐 页
日期
产品代码
产品名称
单位
规格
入库数量
备注
表1-6产品零售出库流水帐 页
日期
产品代码
产品名称
单位
规格
零售出库数量
备注
表1-7产品批发出库流水帐 页
日期
产品代码
产品名称
单位
规格
批发出库数量
备注
表1-8某厂产品库存台帐(当日合计数) No.
产品代码:
规格:
不变价(元):
产品名称:
单位:
现行价(元):
日期
入库数量
零售出库量
批发出库量
结余
1.3.2 仓库管理信息系统的开发目的与思路
系统要达到以下目标:
1. 改变作业人员手工操作方式,将业务操作及业务信息纳入计算机自动管理的轨道。
2. 方便的数据输入性能,良好的人机界面,尽量避免汉字和长字符串的人工重复输入(采用代码词组)。
3. 灵活地查询性能,能快速实现多项产品输入数据和库存数据的查询。
4. 考虑到工厂生产的发展,对新产品数据也能给予处理。
5. 把目前基本上是“静态”库存管理变为“动态”管理,能随时提供库存现状信息(包括库存报警信息)。
仓库管理信息系统的具体开发思路如下:
1. 仓库管理员对仓库内货物的查询添加与删除
2. 仓库管理员对入库清单的查询添加与删除
3. 仓库管理员对出库清单的查询添加与删除
4. 仓库管理员对产品类的查询添加与删除
1.3.3 发展仓库信息管理系统的意义与作用
仓库计算机管理就其表现形式看就是对仓库大量的常规性信息的输入、存储、处理和输出过程,其作用主要表现在以下几个方面:
(1)提高公司的管理效益及经济效益
应用仓库管理信息系统通过节省大量的人力物力,增加仓库的管理项目,提高仓库的管理档次,减少管理上的漏洞,从整体上提高公司的经济效益。可随时提供仓库内准确的产品信息,从而提高仓库使用率。
(2)提高服务质量
由于计算机处理信息的速度很快,可以大大减少货物入库、出库时相关人员的等候时间,提高服务质量。快速的产品信息查询手段,使公司相关中高层人员得到满意的答复。不仅方便了客户,也方便了自己,更提高了公司的管理水平。
(3)提高工作效率
计算机管理可大大提高业务运作的速度和准确性。如严格的数据检查避免手工操作的疏忽而造成的错误,票据的传送、登记、整理、复核等一系列的繁重劳动也可大为减少。
(4)完善公司内部管理体制
科学、正规、系统的仓库软件系统在仓库管理体系中还发挥着强有力的稳定作用,可明显地减少员工及管理人员的流动对仓库管理运作的不良影响。系统提供的多种安全级别,保证各类数据不被无权过问的人查阅和操作。均可加强公司管理。
(5)全面了解公司情况,提高公司决策水平
仓库管理信息系统能提供完备的历史数据,可使管理人员很方便地完成复杂的统计分析工作,并加强对公司运营的内部控制,增强管理人员的控制决策水平。
第二章 仓库管理信息系统的设计
2.1 仓库管理信息系统的功能
2.1.1 仓库管理信息系统的功能分析
仓库管理信息系统主要服务于仓库管理者。仓库管理系统投入使用后,使仓库的管理更加正规化,为产品的出入库管理部门和销售部门提供了方便 ,降低了仓库的损耗。该仓库管理信息系统除了为仓库管理人员提供最仓库内产品的各种最基本信息外,还可以查询到入库出库的基本信息,并根据实际情况进行添加修改删除,
如果仓库内某货物的数量在正常值之外,可以产生报警,以免产生积压或缺乏。减少仓库管理人员的失误,从而提高整个仓库管理的效率。
本仓库管理信息系统主要实现以下功能:
入库管理:对所有货物的进库进行统一管理。仓库分两种:货架仓库和货位仓库。货架仓库中的货架按目前仓储业统一的货架格式安排,对于不适合存放在货架上的货物,按传统的货位方式存取。货物真正入库前,管理人员必须首先输入入库货物信息,系统根据录入的数据自动更新库存台账及入库明细账,并给货物分配仓位。若是标准的货架仓库,系统实行货位自动分配,也可以人工调整仓位。显示货物的入库顺序号,产品编号,产品名称,规格型号,单位,生产单号,入库时间,并可以对入库单进行添加修改删除。
出库管理:在电脑系统认为库存货物无误的前提下,货物可以按出库单出库。仓库管理人员必须先输入出库单,系统会自动安排某些货位上的货物出库,操作人员可以人工选择出库货物的货位。显示货物的出库顺序号,产品编号,产品名称,规格型号,单位,出库时间,并可以对出库单进行添加修改删除。
信息查询:系统提供一定时间范围内的入库信息、出库信息、库存信息的查询。
货物类别管理:每种货物都会属于某个类,分门别类更易于查找,可以对产品类别进行修改,也可以添加新的类。
仓库管理信息系统功能模块图如图2-1所示。
仓库管理信息系统
产品类
增加
入库
出库
库存
删除
修改
查 询
出库
增加
修改
删除
入库
增
加
修改
删除 图2-1功能模块图
组织机构分析
该公司产品库存管理的组织机构如图2-2所示。
厂长
销售部
仓库
出入库管理组
统计分析组
图2-2 组织机构设置图
管理职能分析
该公司产品库存管理的职能分布如图2-3所示。
仓库管理员——全面负责仓库的行政与业务管理;
出入库管理组——负责产品的入库检验、产品的出入库管理、登记出入库帐;
统计分析组——每天根据出入库管理组的出入库帐,统计出各种规格产品当日出入库累计数字,然后登库存台帐。此外,负责生成产品收发存月报表,经仓库管理员签字后呈上级主管部门。有时还要尽量满足各方面的各种查询要求。
仓库管理
出入库管理
统计报表
图2-3 管理职能
2.1.2 仓库管理信息系统的分析决策过程
该公司仓库管理信息系统的分析决策如下:
1. 入库:车间的产品及入库单经检验,若不合格,返回车间,若为合格入库单及产品,则入库记帐。
2. 出库:先经销售部,如果产品是零售的,记为零售出库单并出货记帐,记为零售出库帐。如果产品是批发的,记为批发出库单并出货记帐,记为批发出库帐。生成统计制表,月报表.。
系统分析如图2-4
车 间
入库单
检验
合格入库单
入库记账
入库帐
合格入库单
销售部
零售出库单
批发出库单
付货记账
付货记账
零售出库帐
批发出库帐
库存台帐
统计报表
月报表
记库存台 帐
图2-4系统分析图
2.1.3 仓库管理信息系统执行过程
仓库管理员输入帐号密码正确后,进入本系统。关于入库,对来的入库单进行分析,录入即将入库的产品及相关属性,如有更改可以添加修改删除。关于出库,对出库单进行分析,录入即将出库的产品的相关属性,如有更改可以添加修改删除。对仓库内已有的产品进行维护。对产品的类别也可添加修改删除。查询,包括入库查询,出库查询及库存查询,查询分为按产品称和产品编号查询两种查询方式,系统根据仓库管理员选择的查询方式,输入的查询条件,执行不同的程序,从而得到仓库管理员想要了解的信息,并最后以简便易懂的方式反馈给仓库管理员。
数据组织
2.2.1 仓库特点分析
数据流程分析
1)现行系统的顶层数据流程图如图2-5所示。对顶层图中的数据流“l,2,3,4”说明如下:
1
仓库管理
2
3
4
图2-5 顶层DFD
“1”:车间产品入库单。
“2”:销售部开出的有效零售产品出库单。
“3”:销售部开出的有效批发产品出库单。
“4”:仓库制作的产品库存收发存月报表。
3)第二层数据流程图如图2-6所示。
7
10
D2零售出库帐
P1
登记入库帐
P2
登记零售出账
P4
登记仓库台帐
P5
制作收发存月报表
P3
登批发出库帐
D4仓库台帐
F21
12
F31
5
6
9
8
D1入库帐
D3批发出库帐
统计报表
月报表
1
F11
11
图2-6
现对图2-6中的数据流说明如下:
“l,2,3,4”:其意义与图4中的相同。
“5”:产品入库单上的数据。
“6”:零售出库单上的数据。
“7”:批发出库单上的数据。
“8”:入库流水帐上的当日按产品名称、规格分别累计的数据。
“9”:零售出库流水帐上的当日按产品名称、规格分别累计的数据。
“10”:批发出库流水帐上的当日按产品名称、规格分别累计的数据。
“11”:获得的“8,9,10”数据。
“12”:库存台帐上的当月按产品名称、规格分别累计的数据和其它加工处理后的数据。
2.2.1 数据字典
(1)数据流字典
a. 数据流名称:产品入库单 标识符:F1
数据结构:
01产品入库单
02 ID (标识:是(不用于复制)标识种子:1
标识递增量:1)
02生产单号 ( shengchandanhao)
02产品编号 (chanpingbianhao)
02产品名称 (chanpingmingcheng)
02规格型号 (guigexinghao)
02单位 (danwei)
02入库数量 (rukushuliang)
02入库时间 (rukushijian)
02备注 (jianjie)
排列方式:按ID号升序排列
流量:最大 50张/日
平均30张/日
来源:生产车间
去向:产品入库处理
b. 数据流名称:产品出库单 标识符:F2
数据结构:
01产品出库单
02 ID (标识:是(不用于复制)标识种子:1
标识递增量:1)
02产品编号 (chanpingbianhao)
02产品名称 (chanpingmingcheng)
02规格型号 (guigexinghao)
02单位 (danwei)
03零售出库数量 (lchukushuliang)
03批发出库数量 (pchukushuliang)
02出库时间 (rukushijian)
03备注 (jianjie)
排列方式:按ID号升序排列
流量:最大:70张/日
平均:50张/日
来源:销售部
去向:产品出库处理
c. 数据流名称:仓库产品收发存月报表标 标识符:F3
数据结构:
01收发存月报表
02 ID (标识:是(不用于复制)标识种子:1
标识递增量:1)
02产品编号 (chanpingbianhao)
02产品名称 (chanpingmingcheng)
02规格型号 (guigexinghao)
02单位 (danwei)
02本月累计入库数量 (yrukushuliang)
02本月累计零售数量 (ylchukushuliang)
02本月累计批发数量 (ypchukushuliang)
02剩余数量 (leashuliang)
02月报表生成日期 (yshijian)
排列方式:按ID号升序排列
流量:最大:1份/月
平均:1份/月
来源:仓库统计分析
去向:主管部门
其它中间过程的数据流描述省略。
(2)数据存储字典
a. 存储文件名:产品入库流水帐 标识符:D1
数据结构:
01本品入库帐
02 ID (标识:是(不用于复制)标识种子:1
标识递增量:1)
02产品编号 (chanpingbianhao)
02产品名称 (chanpingmingcheng)
02规格型号 (guigexinghao)
02单位 (danwei)
02入库数量 (rukushuliang)
流入的数据流:产品入库单(F1)
流出的数据流;
涉及的处理名:入库处理、记库存台帐
排列方式:按ID号升序排列
b. 存储文件名:库存台帐 标识符:D4
数据结构:
01库存台帐
02 ID (标识:是(不用于复制)标识种子:1
标识递增量:1)
02产品编号 (chanpingbianhao)
02产品名称 (chanpingmingcheng)
02规格型号 (guigexinghao)
02单位 (danwei)
02本月累计入库数量 (yrukushuliang)
02本月累计零售数量 (ylchukushuliang)
02本月累计批发数量 (ypchukushuliang)
流入的数据流:11
流出的数据流:收发存月报表
涉及的处理名:登记库存台帐、制月报表
排列方式:按ID号升序排列
其它存储文件的描述省略。
(3) 处理描述
a. 处理名:登记入库帐 标识符:P1
输入:数据流F1
输出:数据流 F5
处理定义:
当一张入库单上的数据检验合格,并且产品实物入库后,立即将这张入库单上的数据登入产品入库流水帐。
激发条件:产品入库发生
b. 处理名:登记库存台帐 标识符:P4
输入:出入库流水帐上的当日数据
输出:登记入库存台帐上的数据
处理定义:
对出入库流水帐上当日发生的数据,按产品代码分别进行入库累计、零售出库累计和批发出库累计计算。然后将当天的日期、产品代码和累计结果等填入库存台帐的相应栏内。
激发条件:每日过帐处理
c. 处理名:制作收发存月报表 标识符:P5
输入:取自库存台帐的数据
输出:填入输出报表中的统计数据
处理定义:
对库存台帐本月发生的出入库数据,分别按产品代码进行累计,一种代码代表的产
品累计值即为输出报表中的一行。
计算公式:
工业产值(不变价)=∑Si*Ji
工业产值(现行价)= ∑Si*Ji1
其中:Si——产品代码为i的产品本月入库量计量
Ji——产品代码为i的产品不变价
Ji1——产品代码为i的产品现行价
激发条件:每月制作库存报表
系统中的另外几个加工处理描述省略。
2.2.2 数据库表的设计
在数据库中各种信息均以表的形式存储。下面是对各个表的设计:
1. 管理员信息表:
字段名称
数据类型
字段长度
允许空
字段说明
username
varchar
50
否
用户名
password
varchar
50
否
密码
2. 仓库基本信息表的设计:
字段名称
数据类型
字段长度
允许空
字段说明
ID
int
4
否
自动生成
chanpingbianhao
varchar
50
是
产品编号
chanpingmingcheng
varchar
50
否
产品名称
guigexinghao
varchar
50
是
规格型号
danwei
char
10
是
单位
shuliang
int
4
是
数量
leashuliang
int
4
是
剩余数量
chanpinglei
varchar
50
是
产品类
jianjie
varchar
50
是
备注
2. 入库基本信息表的设计:
字段名称
数据类型
字段长度
允许空
字段说明
ID
int
4
否
自动生成
shengchandanhao
varchar
50
是
生产单号
chanpingbianhao
varchar
50
是
产品编号
chanpingmingcheng
varchar
50
否
产品名称
guigexinghao
varchar
50
是
规格型号
danwei
char
10
是
单位
rukushuliang
int
4
是
入库数量
rukushijian
varchar
50
是
入库时间
chanpinglei
varchar
50
是
产品类
jianjie
varchar
50
是
备注
3. 出库基本信息表:
字段名称
数据类型
字段长度
允许空
字段说明
ID
int
4
否
自动生成
shengchandanhao
varchar
50
是
生产单号
chanpingbianhao
varchar
50
是
产品编号
chanpingmingcheng
varchar
50
否
产品名称
guigexinghao
varchar
50
是
规格型号
danwei
char
10
是
单位
lchukushuliang
int
4
是
零售数量
pchukushuliang
int
4
是
批发数量
chukushijian
varchar
50
是
出库时间
chanpinglei
varchar
50
是
产品类
jianjie
varchar
50
是
备注
4. 产品类别信息表:
字段名称
数据类型
字段长度
允许空
字段说明
ID
int
4
否
自动生成
chanpinglei
varchar
50
是
产品类名
仓库管理信息系统E-R图如2-7图
图2-7
2.2.3 E-R模型向关系模型的转换
E-R模型转换为关系模型的一般转换规则
1) 实体类型的转换:将每个实体类型转换为一个关系模式,实体的属性即为关系模式的属性,实体标志符即为关系模式的键。
2) 联系类型的转换:根据不同的情况做不同的处理:
a) 若实体间的联系是1:1的,可以在两个实体类型转换成的两个关系模式中的任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。
b) 若实体间的联系是1:N的,可以在N端实体类型转换成的关系模式中加入1端实体类型转换成的关系模式的键和联系类型的属性。
c) 若实体间的联系是M:N的,可以将联系也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
E-R模型转换为关系模型
根据E-R模型转换成关系模型的规则,可以将该ER模型转换成关系模式,具体如下:
管理员(用户名、密码)
仓库(ID、产品编号#、产品名称#、规格型号#、单位#、数量、剩余数量、产品类#、备注)
入库(ID、生产单号、产品编号#、产品名称#、规格型号#、单位#、入库数量、入库时间、产品类#、备注)
出库(ID、产品编号#、产品名称#、规格型号#、单位#、零售数量、批发数量、出库时间、产品类#、备注)
产品类(ID、产品类名#)
注:属性中加下划线的是主键,加#的是外键。
2.2.4 在数据库中建表代码:
管理员帐号密码表:
CREATE TABLE [login] (
[username] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[password] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
仓库基本信息表:
CREATE TABLE [cangku] (
[ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL ,
[chanpingbianhao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[chanpingmingcheng] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[guigexinghao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[danwei] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[shuliang] [int] NULL ,
[leashuling] [int] NULL ,
[chanpinglei] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[jianjie] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_cangku] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
入库基本信息表:
CREATE TABLE [ingoods] (
[ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL ,
[shengchandanhao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[chanpingbianhao] [int] NULL ,
[chanpingmingcheng] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[guigexinghao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[danwei] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[rukushuliang] [int] NULL ,
[rukushijian] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[jianjie] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_ingoods] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
出库基本信息表:
CREATE TABLE [outgoods] (
[ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL ,
[chanpingbianhao] [int] NULL ,
[chanpingmingcheng] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[guigexinghao] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[danwei] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[lchukushuliang] [int] NULL ,
[pchukushuliang] [int] NULL ,
[chukushijian] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[chanpinglei] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[jianjie] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_outgoods] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
产品类别信息表:
CREATE TABLE [chanpinglei] (
[ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL ,
[chanpinglei] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_chanpinglei] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
2.3 系统设计目标和原则
本仓库管理信息系统的设计目标是为仓库管理员提供一个快速方便的仓库管理的系统。本系统以信息查询添加修改删除功能为主,为统计分析组提供依据。系统设计遵循以下原则:
1、稳定性和可靠性原则,系统必须稳定可靠,能够处理用户的非法操作;
2、实用性原则,系统的实用性是系统维护运行和创造效益的前提,是系统建设的主要目标;
3、友好性原则,系统的友好性是指界面的美观和使用的方便程度,主要体现在:界面美观,布局合理,符合用户的操作习惯,操作容易;
4、可维护性原则,为适应未来系统需求的变化,系统应具有较好的可维护性,以便系统维护人员能够很方便的做到以下几个方面:增加新的功能;对人机界面进行适当的调整:可对系统作适当修改以适应体制的变化;在系统遭破坏时能够快速地实现系统的恢复;
5、可扩充性原则,系统应具有良好的可扩充性,如新型硬件设备的增加、新应用功能的增加等,能够方便地将新的应用纳入本系统中。
2.4 仓库管理信息系统设计思想
页面模块化
本系统把页面中的一些常用的部分集成为模块,例如页面的头部和尾部,这样设计新的页面时如果有重复出现的部分,只需要拿现成的模块来组装就可以了。
采用MVC模式
本系统考虑到开发的效率,维护的可能性和扩展的方便性,就用了MVC标准模式,这个模式经过多年的应用经验积累,已经被广泛采纳接受。MVC模式有三个部分组成。
(1) Model 数据层:应用系统的数据存放。
(2) View 表示层:Model中的存储数据的可视化表示。
(3) Control控制层: 接受用户的输入,通知Model发生的事件。
JSP,Servlets和JavaBean分别对应了MVC的三个部分。
(1) Model 数据层:全部封装于JavaBean组件中。
(2) View 表示层:由JSP负责处理页面的表示。
(3) Control 控制层:Servlets 接受用户在页面的输入以及提交动作,并根据动作提示,进行相应的业务处理,调用相应的JavaBean组件,然后根据处理结果交给相应的View表示层JSP程序,由他们负责表示。
MVC的优点表现在以下几个方面: (1) 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。 (2) 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。 (3) 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。 (4) 潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。
2.5 仓库管理信息系统设计的环境配置
本公交信息系统的开发,选择的开发平台是:jdk1.5.0_08 + SQL Server 2000,操作系统为Windows XP。WEB服务器:Tomcat5.5
JDK 是Java开发工具包 (Java Development Kit ) 的缩写。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。JDK是一切java应用程序的基础,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。要成为一个Java程序员,JDK是必不可少的最基本的工具。
SQL Server 2000关系数据库引擎是一个流行的,具有高度可伸缩性和高度可靠性的数据存储引擎。应用程序可以将结构化查询语言(SQL)的语句提交给数据库引擎,或者将表格格式的结果返回给应用程序。
关系数据库引擎的特点如下:
关系数据库引擎具有高度的可伸缩性。SQL Server 2000 企业版可以支持多组数据库服务器相互协作,构成可供上千用户同时访问的TB大小的数据库。
关系数据库引擎具有高可靠性,能够运行很长时间而不发生故障,在数据库引擎的早期版本中要求停止和启动的管理操作现在可以在引擎运行当中执行,从而增加了可用性。
关系数据库引擎还具有高度的安全性。登录身份验证可以与Windows身份验证集成在一起,这样,密码不回存储在SQL Server中,也不会通过网络发送而被网络嗅探器读取。
Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的运行环境(servlet容器)。Tomcat的源代码被提供给Jakarta项目,在Open Source的模型下进行进一步的开发。Tomcat是一个Server容器,同样的,EJB运行在EJB的容器中。
Tomcat是Apache-Jarkarta的一个子项目,是一个开放式原码,免费支持JSP和Servlet技术的容器,它同时又是一个Web服务器软件。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能,而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
下面是我环境变量的配置:
右键我的电脑——>属性——>高级——>环境变量
变量名:CATALINA_BASE
变量值:C:\Program Files\Apache Software Foundation\Tomcat 5.5
变量名:CATALINA_HOME
变量值:C:\Program Files\Apache Software Foundation\Tomcat 5.5
变量名:CLASSPATH
变量值:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\libmsbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\libmssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\libmsutil.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar;D:\Java\jdk1.5.0_08\lib\dt.jar
变量名:JAVA_HOME
变量值:D:\Java\jdk1.5.0_08
变量名:Path
变量值:c:\windows\system32;c:\windows;c:\windows\system32\wbem;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%CATALINA_HOME%\lib
另外,还要给SQL Server 2000打上SP3以上的补丁,我打的是SP4补丁。另外复制servlet-api.jar文件到D:\Java\jdk1.5.0_08\jre\lib\ext。把SQL server 2000登录模式设为Windows和SQL Server混合登录。
第三章 仓库管理信息系统的实现
1.1 仓库数据信息存储的实现
在SQL Server 2000 中新建数据库,命名为“cangku”,步骤如下:
“开始”->“所有程序”->“Microsoft SQL Server”->“企业管理器”->“LOCAL”->“数据库”,单击右键,选择“新建数据库”,出现下面的窗口,将数据库的名称命名为“cangku”。这样,数据库就成功建立了。建表界面如图3-1所示。
图3-1 数据库属性界面
将数据库“cangku”伸展开,如下图所示,选择“表”,单击右键,选择“新建表”,输入所要建立的表的相关信息,即成功新建了一张表。如图3-2所示。
图3-2
这时的表是张空表,想要表里有内容显示,可以点在刚刚新建的那张表的名字上,单击右键,选择“打开表”->“返回所有行”,即可向表里插入内容。
1. 登录信息表:
登录信息表中各字段的属性如图3-3所示
图3-3
登录信息表中的内容如图3-4所示
图3-4
2.仓库信息表
仓库信息表中各字段的属性如图3-5所示
图3-5
仓库信息表中的内容如图3-6所示
图3-6
1. 入库信息表
入库信息表中各字段的属性如图3-7所示
图3-7
入库信息表中的内容如图3-8所示
图3-8
2. 出库信息表
出库信息表中各字段的属性如图3-9所示
图3-9
出库信息表中的内容如图3-10所示
图3-10
5. 产品类信息表
产品类信息表中各字段的属性如图3-11所示
图3-11
产品类信息表中的内容如图3-12所示
图3-12
1.2 仓库管理信息系统的实现
3.2.1 登录系统的实现
登录界面,我是用Dreamweaver做的,比较简单的一个登录界面。
打开Dreamweaver,点击文件——>新建——>基本页HTML——>创建,就可以得到一个未命名的HTML文件。如图3-13所示。
写出来的login.htm,title为系统登录。另存为C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\myjsp文件中。打开傲游浏览器,在地址栏里面输入http://localhost:8080/myjsp/login.htm,运行如图3-14所示。
图3-13
图3-14
Y
连接数据库
输入用户名和密码
开 始下一步为写个userlogin.jsp,打开JCreator,file——>new——>file,name: userlogin.jsp,location: C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\myjsp主要目的是连接数据库,并判断用户名及密码是否正确,若正确则进入主界面index1.jsp,若不正确则输出"对不起,您登录失败,用户名或密码错误")。程序流程图如图3-15所示:
对不起,您登录失败,用户名或密码错误
转入index1.jsp
结束
N
用户名密码是否正确?
N
图3-15
3.2.2 组件的编写
在myjsp这个文件夹下面,新建一个文件夹,命名为cangku,然后在这个文件夹下面新建三个文件夹,分别命名为cangku,util和run。系统包图如图3-16所示。
cangku
cangku.cangku
cangku.run
cangku.util
cangku
op_cangku
DataBase
chanpinglei
op_chanpinglei
dataFormat
ruku
op_ruku
chuku
op_chuuku
图3-16
从图3-16中可以看到,在cangku包下有四个类,其中各个类的作用如下:
cangku类:仓库类。包括仓库类各产品的各种属性。
chanpinglei类:产品分类类。
ruku类:入库类。包括入库产品的各种属性。
chuku类:出库类。包括出库产品的各种属性。
在run包下面有四个类, 其中各个类的作用如下:
op_cangku类:管理库存产品,包括仓库内产品的查询,修改,添加,删除等。
op_chanpinglei类:管理产品分类,包括产品分类的的查询,修改,添加,删除等。
op_ruku类:管理入库产品,包括入库产品的查询,修改,添加,删除等。
op_chuuku类:管理出库产品,包括入库产品的查询,修改,添加,删除等。
在util包下面有两个类, 其中各个类的作用如下:
DataBase类:该类主要负责数据库的连接。
dataFormat类:该类负责数据的格式转换,例如将字符串木工化成HTML代码输出等。
下面分别介绍各个类的实现方法。
数据连接Bean的编写:
这是个公共类,其他类如果要连接数据库,只需要构造这个类的对象就可以了。新建一个java文件,命名为DataBase.java。
字符处理Bean的编写:
在程序设计中经常会涉及有关字符串的处理,例如:把字符串转换成适合于网页显示的文本,把字符串转换成适合SQL语句的字符串,字符串里的字符替换等,所以有必要把这些字符串处理的方法集合到一个类中。此文件名为dataFormat.java。
库存产品Bean的编写:
应用面向对象的思想把具有共性的实体抽象成一个类。这个库存产品Bean就是对库存产品实体的抽象,它包括了库存产品实体的所有属性及库存产品的初始化构造的方法。对于实体的私有属性一般常用set方法设置属性值,例如代码中,public void setID(long newID)方法;而对于私有属性值的获得常用get方法,例如代码中, public long getID()方法。此文件名为cangku.java。
产品分类Bean的编写:
这个类是对产品分类实体的抽象,它包括了产品的所有属性及产品分类对象的初始化构造的方法。产品分类Bean的编写与库存产品Bean的编写相似。此文件名为chanpinglei.java。
入库产品,出库产品Bean的编写与库存产品Bean的编写类似,分别命名为ruku.java和chuku.java。
管理库存产品的Bean的编写
该类主要负责库存产品的管理,包括库存产品的修改,查询,删除和添加等,如图3-17所示为其类图。此文件名为op_cangku.java.
图3-17
从图3-17中可以看出该类具有以下属性。
private javax.servlet.http.HttpServletRequest request:建立页面请求
private boolean sqlflag = true ; //对接收到的数据是否正确
private Vector chanpinglist; //显示产品列表向量数组
private int page = 1; //显示的页码
private int pageSize=10; //每页显示的产品数
private int pageCount =0; //页面总数
private long recordCount =0; //查询的记录总数
public String sqlStr=""; //记录SQL语句
从图2-17可以看出该类具有以下主要方法。
Chanping_search(): 完成库存产品的查询,包括分类,分页查询。
Delete(): 负责库存产品的删除。
Getonechanping(): 主要完成库存产品的单个查询,用于支持页面的“查看详细资料”需求。
getSql(): 获得查询产品分类的SQL语句。
getSqlflag(): 获得标记Sqlflag的值。如果从页面接受到的数据正确,则此值为true。
Insert(): 负责库存产品的添加。
To_String(): 把字符串以“ISO 8859-1”编码,以使页面显示正确。
Update(): 负责库存产品的修改。
getRequest(): 负责把从页面接受到的表单资料分解,并设置库存产品实体的相应属性。
当然,由于该类具有属性,方法中还具有对它的属性进行赋值和取值的方法,
不再一一列举了。以下着重介绍getRequest(),chanping_search(),insert(),update()
和delete()五个方法。
getRequest()方法:
功能: 负责把从页面接收到的表单资料分解,并设置库存产品的相应属性。
参数设计: 现面传递的Request对象,其中包括页面传递的表单数据。
返回值: Boolean类型, true 表示成功,反之表示失败。
设计思路: 获得页面传递的Request对象,分解Request对象,获得表单参数值,把参数值设置对库存产品对象的相应属性的值。
chanping_search()方法:
功能: 负责库存产品的查询,包括库存产品的分类,分页,关键字查询.
参数设计: 面面传递的Request对象,其中包括页面传递的表单数据.
返回值: Boolean类型, true 表示成功,反之表示失败。
设计思路: 获得页面传递的Request对象,分解Request对象,获得表单参数值,根据参数值判断是何种查询,组织SQL语句,从数据库中查询数据,构造库存产品对象,设置对象属性值。
insert() 方法:
功能: 负责库存产品的添加。
参数设计: 无。
返回值: Boolean类型, true 表示成功,反之表示失败。
设计思路: 从库存产品对象中分别获得库存产吕的属性,组装SQL语句,执行SQL语句,返回执行结果。
Update() 方法:
功能: 负责库存产品的修改。
参数设计: 无。
返回值: Boolean类型, true 表示成功,反之表示失败。
设计思路: 从库存产品对象中分别获得库存产吕的属性,组装SQL语句,执行SQL语句,返回执行结果。
delete() 方法:
功能: 负责库存产品的删除.
参数设计: 传递库存产品的ID号,该ID号对应cangku表的主键ID。
返回值: Boolean类型, true 表示成功,反之表示失败。
设计思路: 从库存产品对象中分别获得库存产吕的属性,组装SQL语句,执行SQL语句,返回执行结果。
管理产品分类Bean的编写:
由于产品分类实体的存在,需要有对产品分类进行查询,添加,修改,删除等操作的方法,为了使用上的方便,所以就把这些方法集合到一个类中,这个类就是产品分类的op_chanpinglei类,如图3-18所示为该类的类图。
图3-18
从图3-18中可以看出该类具有的属性如下:
private chanpinglei chanpinglei = new chanpinglei(); //标记新的产品分类
private javax.servlet.http.HttpServletRequest request;//记录页面请求对象
private Vector classlist; //类别向量数组,保存产品分类对象。
从图3-18中还可以看出该类具有以下方法:
Delete(); 负责指定ID的产品分类的删除。
getchanpingSQL(): 获得查询产品分类的SQL语句。
Insert(): 负责添加新的产品分类。
Op_chanpinglei(): 该类的构造函数,负责产品分类对象的初始化构造。
Searchchanpinglei(): 负责产品分类的查询。
另外还有一些对该类属性值进行设置和取得的方法,就不一一列举了。
管理入库产品和管理出库产品的Bean与管理库存产品的Bean类似.不再详细描述. 分别命名为op_ruku.java和op_chuku.java。
3.2.3 界面的设计
界面头尾的设计
为了提高代码的重用性,我把界面部分相同的头和尾做成两个模块,分别命名为head.inc和tail.inc.保存在myjsp文件夹下的inc文件夹里面.两个文件都是纯HTML代码,比较简单,不详细介绍了.head.inc的主要内容是系统主要功能的连接,tail.inc的主要内容是版权,及我的联系方式。我写了index1.jsp作为此系统的主页,里面就写了两行代码,就可以看到页面的头尾效果。代码如下,效果如图3-19:
<%@include file="inc/head.inc"%>
<%@include file="inc/tail.inc"%>
图3-19
其它界面设计也都是纯HTML语句,不再累述。
3.2.3 功能模块设计
仓库维护功能模块设计:
在该模块仓库管理员可以看到仓库内现有的产品,仓库管理员可以查找库存产品,可以按关键字查找,也可以删除库存产品可看到库存产品的详细资料,还可以转到其它模块,例如入库维护模块和出库维护模块.adm_cangku.jsp文件来实现这个功能模块。
按产品编号模糊查询库存产品的流程图如图3-20所示:
开始
输入查询条件
点击”提交”按钮
访问数据库
chanpingbianhao like '%"+parm+"%'?
Y
N
输出查询结果
未找到结果
图3-20 图3-20
查询结果如图3-21
图3-21
添加新库存产品功能模块设计
在这个功能模块中,仓库管理员可以向系统添加新的库存产品,这个模块功能比较单一,实现的时候只需要注意写一段JavaScript,当用户提交表单时,对表单的数据进行合法性验证,文件adm_addchanping.jsp。
类别维护,入库维护功能模块和出库功能模块与仓库维护功能模块类似,分别用adm_chanpinglei,adm_ruku.jsp和adm_chuku.jsp三个文件实现。
第四章 结 论
4.1 结 论
仓库管理在公司管理中占有极为重要的地位。与客户,生产,销售紧密联系.大力改进仓库管理,可以节省大量的人力物力.企业的各种管理信息,是企业的重要资源和财富。有效地处理和利用这些资源,会极大地提高企业的劳动生产率,降低生产成本,增强市场竞争力。再说《仓库管理信息系统》处理数据的流程,是模仿手工管理设备的工作。
本论文的主要优点在于以下几点:
1. 本系统在界面设计上采用了模块化处理思想,把很多页面共有的部分集成模块.例如页面的头部和尾部,这样开发的时候遇到相似的页面部分就不需要重新编写,如果要引用头部只需要一句,
<%@include file="inc/head.inc"%>
重用这部分就可以了,大大提高了开发效率.
2. 本系统采用三层结构设计.即程序逻辑结构分为用户界面层,业务处理层和数据存储层.三层在实际的物理层中也是相互独立的,业务处理层采用JavaBean实现,用户界面与业务逻辑分开,系统的安全性,可维护性,重用性和可扩展性都大大提高.
采用三层结构后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的规则将请求处理后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层,这样用户层可以不知道数据库的结构,只维护与业务层的接口就可以.这种方式在一定程序上增加了数据库的安全性.JavaBean通过返回对象的形式返回数据,在类的内部可以规定哪些数据可以访问,哪些数据是只读的,能过封装数据再一次提高数据库的安全性.
1. 面向对象设计.将产品,产品类别等都封装成相应的类,同时每个类都有自己的操作类,从而再次提高了对数据库操作的安全性和程序的可扩展性.如:在cangku包下有四个类,在run包下面也有四个类,在util下面也有两个类.各个类有其相应的作用.
2. 采用模糊查找,只要输入的产品编号或产品名称的部分内容,就可以查询到相应的信息.
1.2 需要改进的地方
虽然本论文在理论研究和具体实现上取得了有点的成功,但是还是存在着很大的不足,有许多问题有待进一步的改进和研究。以下是有待改进的问题:
1. 很多功能没能按计划实现,如生成报表,如果每个月或每天每周生成一次报表,可以为公司管理层统计公司运营情况提供比较直接的依据,全面了解进库,出库及库存信息变化的情况,可以及时制定相应的对策.
2. 查询功能也很简单,只能按产品编号和产品名称查询.如果能查询任一时间段内仓库信息,功能更强.
3. 界面过于简单,缺乏美感.如果手工更好,有个美丽的界面,会让仓库管理员工作心情更为愉悦.
4. 考虑到仓库管理员会更换,新到的仓库管理员可能会对产品编号,产品名称和产品分类不够熟悉.我也没想到相应的解决方法.
5. 我在伊莉丝家纺有限公司只呆了一个月,肯定还有很多方面我没注意到或者没见到.功能上也肯定有相应的欠缺.
总结与体会
由于我基础比较差,编程能力也不强,做这次毕业设计我遇到很多问题,需要对过去所学的知识进行综合应用,学会了很多东西, 对我综合处理问题、解决实际问题能力的培养和锻炼,更磨练了我的意志,提高了我的自信。
短短几个月的毕业设计,要综合过去所学的多门课程.使我对这几门课程有了更深的理解学习和应用,大幅度提高了我的编程能力和解决问题的能力,让我学会了耐心,心平气和翻书查阅资料,少了心浮气燥。
刚刚开始做的时候,连不上数据库,我在网上大量查找网友们的经验,才知道连接数据库并不是我想象的那么简单,要给SQLServer2000打补丁,还得再设置环境变量,另外还要安装Microsoft SQL Server 2000 Driver for JDBC,还要把JDBC的lib文件下的三个jar文件复制到Tomcat 5.5\common\lib目录下.从网上找了个测试数据库连接的程序,顺利连上数据库,特别高兴.做到后来,运行时找不到servlet这个包,在网上查,别人给出的原因是servlet-api.jar文件没加到环境变量里面去.可是我环境变量里面有这个包,怀疑我变量配错了,又重新配置环境变量,程序还是无法运行,又做不下去了,到处查找资料,大约过了一个星期才找到原因,应该把servlet-api.jar文件再复制到jdk1.5.0_08\jre\lib\ext目录 下,程序总算运行成功,松了口气。
本次毕业设计,知道自己知识的大量不足,更渴望用知识来弥补,以前不爱看书的我,也学会看书了。
参考文献
【1】 储雪俭 仓 库 管 理 系 统 分 析 研 究 上海大学,上海 200072
【2】 覃 利 秋 仓库管理系统及其开发 茂名学院学报,第 l5卷 第 3期, 2005年 6月
【3】 田海清,仓库管理系统探析,山西广播电视大学学报,第 2期 (总第 45期) 2005年 4月
【4】 朱 彦 , 李玲. 浅谈医院仓库管理 兰州军区乌鲁木齐总医院医学工程科,新疆乌鲁木齐 830000.
【5】 郑为焰 李春婵. 采 购 与 药 品 仓 库 管 理. 清市医院 福清 350300
【6】 童夏敏 刘金宇 玻璃厂仓库管理系统,全国性建材科技期刊—— 《玻璃》 2003年 第 6期 总第 171
【7】 许华峰,纺织厂原料仓库管理系统 纺织服装科技,第 27卷第3,4期 2006年 8月
【8】 李 勇,沈大刚,吴 飞 《茶场仓库管理系统》 大 众科 技 2005年第1期 总第75期
【9】 )陈世强谢坤武 大型购物超市仓库管理系统的设计与实现微计算机信息(管控一体化)2006年第22卷第1-3期
【10】Kathy Sierra Bert Bates Head First EJB 东南大学出版社 2006.9
【11】朱敏朱晴婷 李媛媛.JSP Web应用教程,清华大学出版社 北京交通大学出版社,2004.7
【12】汪孝宜 刘中兵 徐佳晶 等编著.JSP数据库开发实例精粹,电子工业出版社,2005.1
【13】叶核亚 陈立,Java2程序设计实用教程,电子工业出版社,2003,5
【14】电脑编程技巧与维护杂志社,Java编程技巧典型案例解析,中国电力出版社 2005
【15】Harvey M.Deitel Paul J.Deitel Sean E.Santry.高级Java2大学教程,电子工业出版社,2003
【16】施伯乐 丁宝康 汪卫.数据库系统教程.高等教育出版社,2005
【17】Marty Hall 、Larry Brown著,赵学良译,Servlet与JSP核心编程, 第二版,北京, 清华大学出版社,2004年
致 谢
在毕业设计期间,我遇到了太多的问题,单靠我个人的能力肯定无法完成。很荣幸的得到雷 副教授的悉心指导和帮助。我衷心感谢我的指导老师——雷 副教授,我从雷 副教授身上学到了很多东西。雷老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。他无论在理论上还是在实践中,都给与我无私帮助和悉心的教导,使我的毕业设计得以顺利地按时完成。感谢学校领导、班主任、各位同学对我们的关怀、帮助,为我们提供了良好的设计环境以及各方面的支持。感谢万 同学,吴 同学和张 同学在毕业设计期间给予我给大的帮助。
附录
EJB角色和职责
Bill:“我在公司工作,我开发了一个可重用的组件,可以卖给其他开发人员。”
EJB角色:Bean提供者
交付成果:文件(包括一个或多个和一个部署描述文件)主要职责:设计和编写企业。
换句话说,就是编写代码。特点:知道对于一个特定领域,一个特定类型的组件中应该有什么样的业务逻辑。
Annie:“我是一家大型网上书店的开发人员。我们从公司买了很多,不过除此以外,我自己也开发了一些Bean。我把买来的和自己开发的这些集成在一起,放到一个应用中去,这个应用是专门针对如何销售图书的业务规则而定制开发的。”
当心,考试会考到不同角色之间的微妙差别。对本书中提到的EJB角色要特别仔细,尤其是后面更详细地介绍部署描述文件时更要注意。考试时肯定会考哪个角色做什么工作,而且这些题目肯定会有些难度。应用组装人员和提供者在许多方面都存在重叠,另外部署人员和应用组装人员也不是泾渭分明的。对考试来说,你必须知道某个任务是哪个角色的主
要职责(通常与部署描述文件信息有关)。这些内容很是麻烦,这一页和下一页的介绍还只是个开头……
EJB角色:应用组装人员
交付成果:文件(包括一个或多个和一个部署描述文件,这个部署描述文件中不仅有提供者提供的信息,还包括应用组装信息)。还可能创建客户,或者定义与其他组件(如)之间的交互。主要职责:把一个或多个企业合并到一个更大规模的应用中。有时应用组装人员可能披着提供者的外衣,把新的和原有的集成在一起构建一个应用。定义应用的安全和事务行为。特点:绝对是领域专家。可能没有提供者编写的代码多。
Dick:“哇呜居然部署成功了。真是让人难以置信。我和应用组装人员在同一家网站书店工作,我拿到她的ejb-jar,研究其中的部署描述文件,让Bean真正在服务器上运行起来,等待客户的调用。我们的系统是怎么配置和运行的,我对此可谓了如指掌。”
EJB角色:部署人员
交付成果:针对一个特定操作环境进行定制的企业,而且已经部署到服务器上。主要职责:拿到应用组装人员交付的成果,研究中的部署描述文件,解析得出所有外部依赖关系。例如,如果依赖于一个特定资源,部署人员就必须把提供者指定的逻辑名映射为服务器上资源的实际名。要记住,写代码时并不知道这个代码最后要部署到的服务器上。必须为数据库建立一个则必须把这个自创的名字与一个真实的资源绑定起来。特点:他是特定操作领域的专家。他通晓这个系统的安全用户和角色,知道服务器上已经部署了什么东西,而且了解怎么解释提供者和应用组装人员提供的部署描述文件信息。
Carl:“我们为Server公司效力。我们最擅长的是底层服务,比如事务管理、池机制和安全。”
Sue:“由我们来完成这些棘手的服务,这样就能让你把精力集中在你的业务逻辑上。我们和IBM、BEA及Oracle可以说不相上下,总有一天我们会超越Larry Elision。”
EJB角色:容器和服务器提供者
交付成果:EJB 兼容服务器、部署工具、企业的运行时环境。主要职责:实现规范。特点:他们是分布式对象和事务以及其他底层系统服务领域的专家。
教程:
下面来建立、部署和测试AdviseBean。
我们会编写代码、进行编译、启动服务器、启动deploytool,再使用deploytool建立部署描述文件和ejb-jar,部署bean,创建一个客户,然后使用这个客户来测试前面部署的bean。我们惟一没有做的事情只是安装和配置服务器。这里假设你已经完成了服务器的安装和配置。如果你还没有把J2EE启动和运行起来,请访问java.sun.com/j2ee/,,下载J2EE的1.3版本,(其中包括安装说明),然后再回到java.sun.com/j2ee/,下载J2EE API 文档。
为什么我们要使用?为什么不能使用一个真正的应用服务器呢?
我要使用哪个服务器呢?在学习和实践中我们采用的是,因为对于你要使用哪一个服务器我们一无所知,而且是所有能免费得到的服务器中最简单的一个。我们希望服务器尽可能地容易,这样你就能把精力集中在技术上,而不是过多地考虑特定工具完成的任务。有一些开源产品(如)同时也是真正的成品服务器,所以如果采用这样一个服务器,需要处理的配置和管理任务就会多得多。使用的话,你就能把更多的时间用在你必须做的工作上,而不论服务器是什么,同时,只需花最少的时间来学习服务器是用什么方法来完成这些工作的。
要记住,这个考试是面向J2EE1.3而不是的不管你想怎么做,有一点绝对要避免,这就是千万不要使用规范来为考试做准备。那么为什么考试使用的是版条是呢?这个原因在引子中已经做过详细解释,简单地说可以总结为:如果一个人掌握的技术几乎没有人使用,这可不是我们想要认证的东西。认证不是说技术最新、最好的版…意义在于这项技术。这个技术我已经使用至少6个月了”。
考试中不会涉及有关J2EE RI的内容。也不会考有关其他应用服务器的内容。你不需要了解开发商提供的任何用开发或部署的工具(包括SUN提供的此类工具)。你要知道的只是每一个SJB兼容服务器都应该有的功能,而开发商特有的特性或配置细节你无需了解。
组织工程目录:
本书中所有的Bean都组在包里面,这说明在编译和运行中必须更仔细一些。这一章中我们给出了许多指令,每个指令都假设你的工程是按以下所示的方式来组织的。如果你没有采用这个结构,就必须根据你自己的目录结构对我们提供的命令和部署步骤自行调整。
整本书中就一个Project目录。书中的每个工程都有自己的工程组织 shopping advice 一个目录。这个目录对应的是advice工程。每个工程都有一个目录(放置源文件)和一个目录(存classes src classes src放字节码文件)。包目录结构从这里开始。大多数工程类都放在”说明这些类必须放在一个名为headfirst的目录中。
编译两个接口和Bean类:
到目前为止,我们已经编写了两个接口和一个Bean类,但是除此以外还需要对它们进行编译。在此之后,我们会建立ejb-jar(其中包括的是类文件,而不是源文件)。
我们使用了-d 编译标志,这样上面的命令行就表示“编译headfirst目录中所有的.java文件,编译后的.class文件放到classes目录里,从当前目录(src)向上一级就能找到classes这个目录。哦,对了,差点忘了,一定要把类放在正确的包目录中。在classes目录中查找包结构,这说明你应该能找到一个名为headfirst的目录,类文件就要放在这里……如果你在classes目录中没有找到headfirst目录,那么请为我建立这样一个目录,好吗?谢谢。”
启动服务器
为服务器打开一个新终端。让服务器一直运行着,我们希望服务器运行过程中能看到输出,所以不要用这个终端做其他的事情。设置目录为advice你的工作目录。
你会看到下面的输出
-verbose标志会在终端上打印一堆东西出来(这个标志并不是必要的,不过我们很喜欢用它)。
启动deploytool
为deploytool打开一个新终端。这个工具是J2EE的一RI部分,它提供了创建ejb-jar和部署描述文件所需的所有功能,并能完成最后的部署,即把部署到服务器上。
你会看到下面的输出
会弹出一个可爱的启动界面,应用加载时它会一直留在屏幕上。如果点击这个启动界面,它就会消失,所以如果看上去什么都没有发生,你也不要惊慌。耐心一点。
建立一个新应用
要记住,RI是一个服务器,它不只是一个EJB容器。所以在建立和部署应用之前,还需要做一些有关的工作。我们要在这一步创建一个新的J2EE应用,对现在来说,可以这样来看J2EE应用:它把Bean包起来,并为服务器稍微增加了一些信息。J2EE应用和EJB应用之间的主要差别在于,J2EE应用除了可以包括组件外还可以包括EJB组件(servlei和JSP),所有这些都可以作为一部分集成在一个应用中。
问:这是不是意味着,如果我想同时使用servlet和EJB,就必须有一个J2EE服务器?
答:并非如此。利用J2EE服务器的话,WEB组件和EJB组件
会集成得更紧密,这说明,所有组件都能考虑到彼此的事务和安全性。不过,你也完全可以用一个servlet作为企业bean的客户,即使这个bean不在同一个应用服务器上运行(甚至不在同一个物理主机上)也不碍事。J2EE服务器还有一个好处,这就是可以很容易地把两种组件(WEB组件和J2EE组件)都部署为一个企业应用的一部分。说了这么多,还需要知道,如果你在构建EJB2.0应用,极有可能是在J2EE服务器上运行这些应用。要记住,如今很少有独立的容器。几乎所有主要开发商都在一个J2EE服务器中运行自己的EJB容器。
J2EE服务器开发商必须通过大量的兼容性测试,才能称这个服务器是“J2EE兼容的”如,J2EE2.0服务器必须包括一个EJB2.0容器,而且这个EJB2.0容器必须实现规范。
给新应用取名并保存
这部分有点麻烦。可以使用浏览按钮在你自己的目录树中导航,不过,要给应用取名并保存起来,最容易的办法是键入你要创建的文件的完整路径。我们要建立的不是bean本身,更像是一个文档,其中包含了有关应用的所有信息。在这里有一个约定,我们会在对应于这个特定工程的project/某目录下保存应用。对于advice bean,这意味着要把应用保存在projects/advice目录中。如果从projects/advice目录启动服务器(换句话说,如果advice正是你的当前工作目录),就能默认地得到正确的名字和位置。
把应用取名为AdviceApp如果需要,要包括projects/advice/AdviceApp的完整路径点击 OK
创建应用并对应用命名之后看到的输出
现在,再回到dploytool的主界面。可能必须点击Files或Applications图标将其扩展,不过你会看到,工具已经创建了一个Applications目录,其中有一个名为AdviceApp的目录。点击AdviceApp图标,你会看到有关这个应用的信息,包括应用名、位置和当前内容。此时,除了一个目录外,这个应用中没有别的东西,目录保存了有关应用的更多信息,不过我们一般不需要了解这些额外的信息。
下面来建立新的企业bean(ejb-jar和部署文件)
这是我们真正要做的建立具体的。前面的各个步骤(建立J2EE应用)只是为了满足J2EE RI的要求,因为我们必须在一J2EE个应用中部署bean。
下面看到的是一个非常棒的NewEnterprise Bean(新建企业bean)向导工具
所有工作几乎都在deploytool的这一步完成!我们要做的几个关键事情是创建ejb-jar把bean类和两个接口放到ejb-jar中创建描述这个bean的部署描述文件
创建一个新的ejb-jar
现在,只需接受向导给出的默认选项就可以了。界面左上部的单选按钮显示出,你正在AdviceAPP应用中建立一个新JAR。需要注意AdviceAPP是一个下拉列表的一部分,如果应用中还有其他的ejb-jar,那么还可以选择把这个新bean放在某个已有的jar中。部署工具会选择一个很有帮助的显示名EJB1”。deploytool主界面上看到这个显示名。在实际的应用中并不使用这个名字,所以这个名字到底是什么意义不大,不过,如果一个应用中有多个,你可能希望起一个更有描述性的名字(比如Cart jar、Account jar等等)。
把三个类文件(包括其包目录)增加到JAR中
这是整个过程中最重要的部分!换句话说,千万别搞错了。关键是要把正确的类放到JAR中的包目录结构中,而且只能放在其包目录结构中。也就是说,如果把这三个类文件放到了没有headfirst目录的JAR中,你的bean将无法部署。或者,如果除了headfirst目录还包括了classes目录,你的bean也无法部署。要记住,ejb-jar还是一个jar文件,所以一般的有关包结构的JAR规则在此也适用。
确认只增加了包目录和类文件
这一步要做对。请看下面标题为“Contents of Ejb1 ”的窗口,确保JAR中除了META-INF目录外就只有headfirst目录(包括目录的内容)。我们常常见到这样一个经典错误(不只是你会犯这个错误),即只增加类文件,而没有增加包目录。要确保有headfirst目录(而不是classes目录),其中包括三个类文件。还有一个常见的错误是增加了源文件而不是类文件。所以即使你犯了这个错误,也不要太过自责,这个错误大家都很容易犯。
确保类(和包目录)是正确的如果并非如此,从下面的窗口选择类和包目录,点击删除,再重新选择完成后点击OK,再点击 NEXT。
让它成为一个无状态会话bean
下面,要向工具提供bean的“结构”信息了。这是一种什么类型的bean,哪个类文件是它的HOME接口,等等。要记住,工具会使用这些信息来创建部署描述文件。而且EJB容器要使用部署描述文件来得出如何部署和管理这个bean。AdviceBean很简单,客户调用远程对象的一个方法,远程对象返回一个值,然后远程对象会忘记刚才发生的所有事情。故事到此为止。这种情况非常适合采用无状态会话bean解决方案。如果 需要记住它向客户给出的建议,这个客户以后再调用这个bean时,它要使用以前记住的这一信息,那就应该把这个建为一个有状态会话。不过既然不需要记住以前给的建议,所以我们不会让它作为有状态会话bean。随后你会了解到,让Advice Bean作为一个实体bean或消息驱动bean是没有意义的。不过,现在让它作为其他类型的bean(而不是会话bean)也为时过晚了,要知道,你的bean类实现的是SessionBean接口,所以实际上已经确定了bean的类型。不过,这个会话baen到底是有状态的还是无状态的,这一点确定起来可能有些难度。现在我们的做法是把它置为无状态的。