2、管理的概念、产生背景与发展历程,详细介绍了我国物流管理的实际状况与发展趋势,分析了物流管理系统的实际意义,展望了物流仓储管理系统的未来前景。2)采用当前流行的Microsoft公司的SQLServer数据库平台、VisualStudio及ASP.NET技术设计整个系统。系统中使用了C#编程实现了该仓库管理系统中Web页面的特定数据验证功能以及输入输出控制等辅助功能。3)将系统用户按职责划分为仓库总管、分仓库管理员、采购员三类,按功能将系统划分为多个模块,详细介绍了其中的员工管理模块、仓库管理模块、货物管理模块、存储规则管理模块、货物进出管理模块、仓库需求生成模块、货物进出记录模块、设计与功
3、能实现。关键词:ASP.NET;管理信息系统;SQLServer数据库;VisualStudio;C#DesignandImplementationofWarehouseManagementInformationSystemAbstractThisarticlehasdesignedandrealizedonewarehousemanagementinformationsystembasedonASP.NETandWebserviceItwidelyappliesintheenterpriseproductionandthec
4、argocircuit,andplaytheverybigauxiliaryroleonpromotesproduceandraisestheefficiency.Authorsresearchcontentandtheachievementareasfollows:1)Outlinedthephysicaldistributionmanagementconcept,tohavethebackgroundandthedevelopmentprocess,introducedindetailourcountryphys
5、icaldistributionmanagementsactualstateandthetrendofdevelopment,haveanalyzedthephysicaldistributionmanagementsystemspracticalsignificance,hasforeseenthephysicaldistributionwarehousemanagementsystemsfutureperspective2)UsingthepopularMicrosoftsSQLServerdatabaseplatform,
6、VisualStudioandASP.NETtechnicaldesignthewholesystemInthesystemusedC#programminghasrealizedinthisstoragemanagementsystemtheWebpagesspecificdataconfirmationfunctionaswellastheinputoutputcontrolandsoonauxiliaryfunction3)Dividedthesystemuserintothreekindssuc
7、hasthewarehouseexecutivesThestorekeeper,thepurchaseraccordingtotheresponsibilityDividesthesystemintomanymodulesaccordingtothefunction.Introducedthedemand,thedesignandthefunctionalrealizationindetailonthemoduleofstaffmanagement,themoduleofwarehousemanagement,
8、themoduleofcargomanagement,themoduleofstoragerulesmanagement,themoduleofcargoaccessmanagement,themoduleofwarehousedemandgeneration,themoduleofcargoaccesscontrol.KeyWords:ASP.NET;ManagementInformationSystem;SQLServer;Database;VisualStudio;C#目录第一章前言111仓库管理系统的背景与意义
9、112系统开发工具介绍2第二章需求分析321仓库总管对功能的需求322分仓库管理员对功能的需求423采购员对功能的需求4第三章系统分析431系统功能模块的划分432系统流程分析5第四章系统设计64.1数据库逻辑结构设计64.2创建数据库94.3创建存储过程11第五章界面设计135.1仓库管理信息系统首页设计135.2货物信息维护界面设计1353货物信息添加页面设计135.4货物信息修改页面设计145.5仓库存放规则维护页面设计145.6仓库存放规则添加页面设计145.7货物进出控制页面设计155.8仓库货物需求列表页面设计15第六章功能测试1
10、5主要参考文献21附录代码实现22致谢31仓库管理信息系统的设计与实现第一章前言仓库管理系统是一个企业不可缺少的部分,他的内容对于企业的管理者和仓库管理人员来说都至关重要,为企业减少不少人力物力,为仓库管理带来方便,提高效益,所以仓库管理系应该能够为管理层和仓库管理员提供充足的信息和快捷的查询手段。随着我国社会主义市场经体制的确立和发展,商业流通领域进入了一个空前的发展阶段,面临商界的激烈竞争,只有在多变的货品和顾客中挖掘并掌握市场需求,企业才能在竞争中尚存和发展,如果能够选择一个好的管理系统,把大量复杂、看似毫无关系的数据,有机地结合起来就能够为得出正确决策做出事半功倍的效果。1.1仓
12、。物流(Logistic)到目前还没有一个统一的定义,综合各种物流的定义可以得出,物流是有形物品从出发点到最终消费点的流动存储活动,具体包括运输、保管、包装、装卸、搬运、流通加工及信息处理,从职能上可以分为:供应物流、生成物流、销售物流、回收物流和废弃物流五个职能。从70年代开始,计算机技术开始应用到物流领域。随着物流市场和物流信息化的发展,物流软件市场也应运而生并迅速发展起来,国内外出现了一大批物流软件供应商和物流软件。“物流软件作为管理软件,较其它应用软件呈现先进性、高效性、可靠性和安全性等特点;较其它管理软件,如ERP(EnterpriseResourcePlanning),具有以
13、下特点:实施风险小,实施迅速;效益显著、见效快。根据物流软件结构分类,就目前物流软件所使用的应用范围来说,物流软件包括如下几个子系统:WMS(WarehouseManagementSystem,仓库管理系统)、TMS(TransportationManagementSystem,运输管理系统。OMS(OrderManagementSystem,定单管理系统)、SMS(ServiceManagementSystem,服务管理系统)。其中,WMS主要提供了一整套仓库业务以及作业管理系统。通过仓库管理系统可以实现库位分配自动化和智能化;提高仓库作业效率和速度,提供准确的库存信息,并使
15、储规则管理、货物进出管理、仓库需求生成、货物进出记录等功能综合运用的管理系统,对库存业务的物流和成本管理全过程进行有效控制和跟踪,实现完善的企业仓库信息管理。仓库管理系统的投入,将使仓库的管理更加正规化,为产品的出入库管理部门和销售部门提供了方便,降低了仓库的损耗。企业可以对售出的产品进行跟踪服务,同时也免去了销售人员按以往惯例亲自前往用户处去核实货物情况的麻烦,提高了办事效率,节省了费用,而且还避免了不必要的业务纠纷,维护了企业长期与用户建立的良好信誉。1.2系统开发工具介绍1.2.1ASP.NETASP(ActiveServicerPages)是一种功能强大而且易于学习的服务器端的
16、脚本编程环境。它是Microsoft公司的产品,NTServer操作系统开始就附带这种脚本编程环境,并且,在NTWorkstation、Windous98和Wndows2000/XP中也都附带了这个脚本编程环境。微软与2001年在前面三个版本的ASP基础上,推出了全新的ASP.NET,它开始就抛弃前面三个版本都在使用的脚本语言而使用VisualBasic.NET作为它的默认语言。但是,无论如何变化,它的优势依然存在,可以方便地创建动态、快速、交互性强的Web站点。1.2.2VisualStudio.NETVisualStudio.NET开发工具为ASP.NET程序的开发提供了众多
17、的便利,在VisualStudio.NET中集成了许多ASP.NET开发应用组件,用户可以直接应用这些组件,创建ASP.NET应用程序。VisualStudio.NET可以对ASP.NET应用程序中的错误进行检查,方便了开发人员的调试。当应用VisualStudio.NET创建一个ASP.NET工程时,VisualStudio.NET会自动配置好IIS应用,用户直接应用即可。1.2.3SQLServer2000功能与优点SQLServer2000提供了以Web标准为基础的扩展数据库编程功能。丰富的XML和Internet标准支持允许用户使用内置的存储过程以XML格式轻松存储和
20、.2仓库信息管理浏览所有仓库信息。仓库信息包括仓库编号、仓库名称、仓库面积、所在地点、简单描述等。录入、修改、删除仓库信息。浏览所有仓库货物信息。货物信息包括货物编号、货物名称、当前价格、主供应商、次供应商以及简单描述等。查找货物信息。查看货物的进仓、出仓信息。2.1.3存储规则管理浏览所有货物存放规则信息。仓库存储规则信息包括规则编号、存放货物、存放仓库、最大存量、存量紧界限等。查找货物存放规则信息。录入、修改、删除货物存放改则信息。22分仓库管理员对功能的需求录入仓库货物的变动信息。变动包括进货和出货两类,内容主要包括货物名称、当前库存数量、最大存储量、当前最大出货量、当前最大进货
21、量,以及实际操作进货/出货数量、负责人姓名等。23采购员对功能的需求根据库存的情况,系统生成采购信息的浏览。采购信息包括货物名称、所需仓库、仓库地址、仓库描述、货物描述、所需数量、当前价格、主供应商、次供应商和紧急度等。第三章系统分析3.1系统功能模块的划分仓库管理信息系统所需要实现的功能可以细分为以下几个模块:员工管理、仓库管理、货物管理、存储规则管理、货物进出控制、仓库需求生成和货物进出记录。3.1.1员工管理模块该模块负责管理信息系统所有参与仓库管理运作的员工信息,包括添加、删除、修改和查找员工信息。系统各个功能操作按照员工的工作类别区别给予,系统分为3中权限:仓库总管、分仓库管理员
23、权利。3.1.4存储规则模块该模块负责管理仓库的货物存放规则信息,包括添加、删除、修改存储规则信息。它以在仓库管理信息系统、货物管理系统中维护好的信息作为基础,由仓库总管理员决定个货物对应的存放规则,何种物品存放在哪个仓库,限量多少,存放底线多少等。存储规则将作为一种关系存在。即联系仓库与货物这两个孤立的信息。只有仓库总管理员才具有对存储规则进行维护的权利。3.1.5货物进出模块货物进出控制就是对进仓、出仓的货物进行登记管理,可想而知,如果这不是大型企业的大型仓库,分仓库管理员将担任起这个职责,当有货物进出仓时,分仓库管理员调用这个模块,按照预先设定好的存储规则对合法货物进行进出控制。只有分仓
24、库管理员才具有对货物变动信息进行登记的权利。3.1.6仓库需求生成模块对仓库进行管理的最终目的是及时发现当前仓库的需求当前需求主要是提供给采购部门信息的浏览,它不提供给任何人删除以及修改的权利,仓库需求中系统将会根据目前仓库存储的情况,赋予每一个订单一个量化的紧急程度值,供采购部门在采购时安排采购顺序。只有采购员才有对仓库需求信息进行浏览的权利。3.1.7货物进出记录模块每一笔货物的进出显然要做到有据可查,查阅的内容包括货物名称、仓库信息、进出库数量、进出库产生日期、负责人、经手人等。以上信息都会在对货物进出库进行控制时产生,但是货物进出库记录一旦生成就不可修改、删除,这也是提供了仓库管理信息
26、各分仓库管理员可以通过货物进出控制模块进行控制,同时,受到存储规则的约束,比如,进仓的货物数量不能大于存储规则中所设的最大存储量,而出仓的货物数量也不能大于当前数量等。当货物出库后,如果货物在仓库中的数量低于存储规则所设的存放底线时,系统会通过仓库需求生成模块自动生成需求详单,以指导采购员对货物进行采购。第四章系统设计4.1数据库逻辑结构设计数据库设计是整个数据库应用系统开发过程中的最重要的一个环节,它具体分为两个部分:一是概念模型设计,即E-R图的设计;二是逻辑结构设计,即表/字段的设计。对仓库管理信息系统实体关系(E-R)的设计是建立在需求分析、系统分析的基础之上的。本系统的实体包括
29、理结构设计的结果,在计算机系统上建立实际的数据库结构、导入数据并进行程序的调试。它相当于软件工程中的代码编写和程序调试的阶段。在SQLServer2000中生成了如下所示的表。4.2.1用户信息表Users用户信息表Users用于存放仓库管理信息系统中所有参与人员的信息,表Users的结构如表1。UID字段是该表的主键,它惟一标识每一个记录。表1:用户信息表Users编号列名数据结构说明1UIDVarchar(50)员工号2UPasswordVarchar(50)用户密码3UPowerInt用户类型:1-仓库总管,2-仓库管理员,3-采购员4USexBit性别5UNameVarchar(5
31、它惟一标识每个记录。4.2.3货物信息表Goods货物信息表Goods记录当前仓库存储的货物信息,为了方便货物的采购,在表中加入了货物提供商信息,表Goods的结构如表3所示。GID字段是该表的主键,它惟一标识每个记录。表3:货物信息表Goods编号列名数据结构说明1GIDInt货物编号2GnameVarchar(50)货物名称3GPriceMoney货物当前价格4GProvider1Varchar(50)主供应商5GProvier2Varchar(50)次供应商6GDescribeVarchar(50)对货物的描述4.2.4存放规则信息表Store存放规则信息表Store用来存储货物的存放
35、息进行删除外,一般不提倡随意删去货物信息,即使货物不再存放,因系统记录了所有的货物进出库的历史记录,这种删除将造成历史记录的不可读取。GoodsDetail存储过程该过程用于返回系统所要求详细了解的货物的具体信息,以货物编号GID作为惟一匹配依据。GoodsModify存储过程该过程用于更改货物信息表中某项货物的信息,表中的货物编号信息是惟一索引,不可更改。WarehousesList存储过程该过程返回所有仓库信息表中的仓库信息。WarehousesAdd存储过程该存储过程用于往仓库表中添加新的仓库信息。WarehousesDelete存储过程该过程用于从仓库信息表中删去不需要的仓库信息,和
36、对货物信息的删除操作相似,对仓库信息的删除更应慎重,仓库乃货物存储之本,所以提倡修改而不是删除。WarehousesModify存储过程该过程用于修改仓库信息表中的仓库信息。StoreList存储过程该过程用于返回所有仓库存储的存储规则。StoreAdd存储过程该过程用于往仓库存储规则表中添加新的存储规则,向其中添加新数据时,有一个字段值是固定的SQantity字段,该字段表示该存储过程下货物的存储量,初始值为0。StoreDelete存储过程该过程用于从仓库存储规则表中删去不再需要的存储规则,以SID作为匹配条件。StoreDetail存储过程该存储过程用于从仓库存储规则表中返回所要求的存
38、、SEmergency,SneedQuantiy表示购货的紧急程度,以便购货部门判购货上网次序。OrderDetai存储过程该过程用于返回目前仓库所产生的订单信息的详单,以SID作为匹配条件。第五章界面设计5.1仓库管理信息系统首页设计仓库管理信息系统首页,如图8所示。图8:仓库管理系统首页窗体5.2货物信息维护界面设计货物信息维护界面,如图9所示。图9:货物信息维护页面窗体53货物信息添加页面设计货物信息添加页面,如图10所示。图10:货物信息添加页面窗体5.4货物信息修改页面设计货物信息修改页面,如图11所示。图11:货物信息修改页面窗体5.5仓库存放规则维护页面设计仓库存放规则维护
40、的模块,但是在系统初始状态下,应首先维护系统的仓库信息状况,仓库是货物存放的基础,没有仓库信息,货物存放将不能被接受。仓库信息列表如图17所示。图17:仓库信息维护页面员工信息维护,本文也是直接给出添加完员工信息后的员工列表,如图18所示。当单击“详单”按钮后,就会弹出该条信息对应的详细员工信息,并可以做修改,单击“添加新员工信息”按钮,就会进入到员工信息添加页面。图18:员工信息维护页面货物信息维护,本文直接给出添加完货物信息后的货物列表,如图19所示。当单击“详单”按钮后就可以查看该条信息对应的详细货物信息,并可以作修改,单击“添加货物信息”按钮,将进入货物信息添加页面。图19:货物信息维
43、面详细描述了物流仓储管理系统的开发过程。主要的内容如下:1利用ASPNET特点提高系统性能通过采用输出缓存和数据缓存的方法,能在一定程度上提高系统性能。ASPNET有两种用于Web应用的缓存技术,输出缓存和数据缓存。输出缓存包括页面级输出缓存、用户控件级输出缓存。输出缓存易于实现,这种技术在显示与查询货物信息、存储规则信息、员工管理信息的时候极为有用,大大减轻了服务器的负担,提高了系统的运行效率。2利用WebService组件技术高代码复用程度系统采用组件技术,能提高部分代码的复用程度。由于ASPNET允许方便地插入组件,在基于的系统基础上增加或修改组件是容易实现的。实际上,可以用自己编写的
44、自定义组件扩展或替换ASPNET运行库的任何子组件。组件经编译后可直接移植到服务器上运行,而不用重启服务器。物流管理系统中,适当设计一些组件是必要的,便于系统开发与维护。本系统利用Web服务建立了一个通用数据库服务组件,应用程序只需向这一通用组件传递任意数据库操作字符串,就可以执行查询、插入、更新、删除操作,而不必再编写一个数据库的连接与查询函数。各子模块的数据库RUID(ReadInsertUpdateDelete)操作,如果采用传统的开发方式,数据库操作代码较难从其它逻辑代码中分离出来,数据的访问、插入、更新、删除不能形成独立的模块化操作。即使采用ASPNET的多层结构,也难以达到组件化查
46、,这种开发方法为整个物流管理系统建立了一个好的开发模式。主要参考文献1苗雪兰等,数据库系统原理及应用教程.北京:机械工业出版社,20072田原,沈成涛等,ASP.NET程序设计教程.北京:清华大学出版社,北京交通大学出版社,20063张海藩,软件工程导论.北京:清华大学出版社,20084金雪云,ASP.NET简明教程北京:清华大学出版社,20035殷泰晖等,C#编程-从基础到实践.北京:电子工业出版社,20076王凤玲,ASP.NET程序设计实用技术.北京:人邮电出版社,20077G.AndrewDuthie,ASP.NET程序设计.北京:清华大学出版社,2002附录代码实现1)仓库管理
49、件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettingsdsn;/连接本地计算机的WMS数据库SqlConnectioncn=newSqlConnection(strconn);cn.Open();/构造SQL语句,该语句在Users表中检查用户名和密码是否正确stringmysql=select*fromUserswhereUid=+tbx_uid.Text+andUPassword=+tbx_upassword.Text+;/创建Command对象SqlCommandcm=new
50、SqlCommand(mysql,cn);/执行ExecuteReader()方法SqlDataReaderdr=cm.ExecuteReader();if(dr.Read()lbl_message.Text=;/保存当前用户名及用户权限Sessionuid=druid.ToString();Sessionupower=drupower.ToString();Sessionudep=drudep.ToString();lbl_message.Text=欢迎您!+Sessionuid;if(Sessionupower.ToString()=1)/进入仓库总管界面Respons
51、e.Redirect(goodsmanage.aspx);elseif(Sessionupower.ToString()=2)/进入分仓库管理员界面Response.Redirect(goodsreserve.aspx);elseif(Sessionupower.ToString()=3)/进入仓库采购员界面Response.Redirect(orderlist.aspx);elselbl_message.Text=对不起,您的用户名/密码不正确,请重新输入;/关闭连接cn.Close();2)货物信息维护页面代码货物信息维护页面的后台支持类是GoodsManage.aspx.
52、cs,它负责对页面的事件进行处理。首先定义了GoodsManage类,继承了System.Web.UI.Page系统类:publicclassGoodsManage:System.Web.UI.PageprotectedSystem.Web.UI.WebControls.HyperLinkhlk_default;protectedSystem.Web.UI.WebControls.HyperLinkhlk_goodsadd;protectedSystem.Web.UI.WebControls.HyperLinkhlk_warehousemanage;protectedSy
53、stem.Web.UI.WebControls.HyperLinkhlk_usermanage;protectedSystem.Web.UI.WebControls.TextBoxtbx_gid;protectedSystem.Web.UI.WebControls.DataGriddgd_goodsmanage;protectedSystem.Web.UI.WebControls.HyperLinkhlk_storeregularmanage;protectedSystem.Web.UI.WebControls.HyperLinkhlk_passwordmodify;prot
54、ectedSystem.Web.UI.WebControls.HyperLinkhlk_recordslist;protectedSystem.Web.UI.WebControls.Buttonbtn_search;在页面的Page_Load()事件中,调用了数据绑定BindGrid()方法,代码如下:privatevoidPage_Load(objectsender,System.EventArgse)if(!IsPostBack)BindGrid();下面是BindGrid()方法的实现过程,它通过连接数据库,使用存储过程GoodsList取出货物信息,并在DataGr
55、id控件dgd_goodsmanage上显示。代码如下:publicvoidBindGrid()/从文件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettingsdsn;/连接本地计算机的WMS数据库SqlConnectioncn=newSqlConnection(strconn);/创建SqlDataAdapter对象,调用存储过程SqlDataAdapterda=newSqlDataAdapter(goodslist,cn);/创建并填充DataSetDataSetds=newDataSet
56、();da.Fill(ds);dgd_goodsmanage.DataSource=ds;dgd_goodsmanage.DataBind();cn.Close();下面的方法用于响应DataGrid控件dgd_goodsmanage的删除事件:publicvoidDataGrid_Delete(Objectsender,DataGridCommandEventArgsE)/从文件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettingsdsn;/连接本地计算机的WMS数据库SqlConnection
57、cn=newSqlConnection(strconn);cn.Open();SqlCommandcm=newSqlCommand(goodsdelete,cn);cm.CommandType=CommandType.StoredProcedure;cm.Parameters.Add(GID,SqlDbType.Int);/从DateGrid中取得更新内容/Cells1为GID列cm.ParametersGID.Value=Convert.ToInt32(E.Item.Cells1.Text.ToString();cm.ExecuteNonQuery(
58、);dgd_goodsmanage.EditItemIndex=-1;BindGrid();下面方法用于响应DataGrid控件dgd_goodsmanage的分页显示换页事件:publicvoidDataGrid_Page(Objectsender,DataGridPageChangedEventArgsE)dgd_goodsmanage.CurrentPageIndex=E.NewPageIndex;BindGrid();单击“开始”时,触发btn_search_Click事件,用于实现根据货物编号查找货物的功能。代码如下:privatevoidbtn_search_Cl
59、ick(objectsender,System.EventArgse)tryintvargid=Convert.ToInt32(tbx_gid.Text.ToString();Response.Redirect(goodsmodify.aspxgid=+vargid);catchResponse.Write(输入的货品号不正确!);Response.End();3)货物信息添加页面实现代码货物信息添加页面的后台支持类是GoodsAdd.aspx.cs,它负责对页面的事件进行处理。首先定义GoodsAdd类,继承了System.Web.UI.Page系统类:publicc
60、lassGoodsAdd:System.Web.UI.PageprotectedSystem.Web.UI.WebControls.TextBoxtbx_gname;protectedSystem.Web.UI.WebControls.Buttonbtn_submit;protectedSystem.Web.UI.WebControls.TextBoxtbx_gprice;protectedSystem.Web.UI.WebControls.TextBoxtbx_gprovider1;protectedSystem.Web.UI.WebControls.TextBox