收藏 分销(赏)

仓库管理系统设计陈超.doc

上传人:精*** 文档编号:9755254 上传时间:2025-04-06 格式:DOC 页数:67 大小:347.50KB
下载 相关 举报
仓库管理系统设计陈超.doc_第1页
第1页 / 共67页
仓库管理系统设计陈超.doc_第2页
第2页 / 共67页
点击查看更多>>
资源描述
理工学院 MIS课程设计 课程设计题目: 仓库管理系统 专 业 班 级: 工业工程062班 学 生 姓 名: 陈超 学 号: 061641204 指 导 教 师: 杨明欣 2009年 6月 20日 摘 要 本数据库是一个简单仓库管理系统,通过它可以实现对原料,物料,产品的入库,出库等管理,包含注册用户的信息,可以对原料,物料,产品的分种类,分不同型号进行管理,而且对各种各样的查询,以及对各种各样的组合条件的查询也是非常的方便,可以在实践当中运行。 通过它我们可以很方便的给仓库划分种类,使得什么样仓库存什么样的东西,还可以对各种产品以及物料进行很好的管理,还包括可以自己定义仓库中的剩余容量少于多少时给出很友好的提示。 关键词:仓库管理、数据流、E-R、触发器、存储过程 64 / 67 目 录 1 设计内容与要求 1 1.1 设计内容 1 1.2 设计要求 1 2 需求分析 2 2.1 系统需求概述 2 2.2 系统需求说明 3 2.2.1 功能需求 3 2.2.2 性能需求 3 2.3 模块分析 3 2.3.1 总体模块 3 2.3.2 分模块功能 4 2.4数据流图 4 2.5 数据字典 5 2.5.1 具体表 5 2.5.2 表里的具体清单 5 3 概念结构设计 6 3.1入出库信息尸体E-R图 6 3.2货物信息实体E-R图 6 3.3用户信息实体E-R图 7 4 仓库管理系统应用程序设计 7 4.1 “登陆”模块详细设计 7 4.2“主窗体”模块详细设计 9 4.3各项子模块详细设计 12 5 设计体会与建议 63 致谢 63 参考文献 63 1 设计内容与要求 1.1 设计内容 本次设计是要求设计一个仓库管理系统,能对原料,物料和产品的入库进行分开管理,还能够进行一种或者多种要求的组合的查询。 1.2 设计要求 这个系统设计出来以后能够在实际当中发挥作用,并能够在实际当中给仓库管理员带来方便,也能够在以后有需要的时候能够很方便的进行扩展,很方便的对这个数据库进行维护,而且用较小的资源消耗就能够实现这些基本功能。 这个系统主要能实现以下的功能: l 该系统能够实现对货物的各种信息的查询,并且查询时可以按照以货单号或日期进行查询,包括逐个浏览,及对货物出入库信息的增加,删除和编辑操作,另外可以根据输入的信息来检索某货物的信息。 l 对库房的货物信息进行汇总,其中汇总的主要内容主要包括日期,货单号,货物名称,货源地,金额等。汇总时可以按照各种情况进行汇总,比如说按照日期,或者按照条件组合进行汇总。 l 另外,管理人员也可以直接增加和删除用户信息。系统还可以提供一定的附加功能来方便用户。 2 需求分析 2.1 系统需求概述 近年来,改革开放使我国企业得到了前所未有的发展机遇,同时也面对市场竞争的严重挑战。虽然我国制造企业飞速发展。但是,由于制造企业的管理水平低,导致了生产力的降低和众多企业的倒闭。随着全球范围内大市场的形成与发展,加剧了企业之间在国内外市场的激烈竞争,迫使企业必须从时间、质量、成本和服务上不断增强自己的竞争力以求得生存与发展。这就要求企业在生产管理上必须做出新的努力,寻求新的理论和技术。面临这种严峻的形势,我们国家必须引进先进的企业管理思想和技术并不断创新。信息技术的广泛应用,正改变着企业生产与管理的面貌,信息技术已成为改善生产力、提高产品质量和增加经济效益的主要力量。近年来为了适应新的竞争形势出现了一些新型生产方式,如计算机集成制造系统、精益生产方式、敏捷制造、虚拟企业等,都是在计算机系统的支持下得以实现的。这样,又产生了如何在生产管理中应用计算机技术来改善管理工作的问题。 众所周知,企业是通过向社会提供所需要的产品或服务而获得利润的经济组织。对工业企业而言,企业生产经过原材料购入、产品加工等环节,产生价值的转移,从而生产出社会所需要的新的产品。在这样的一个从原材料采购到生产,再由生产到销售的过程中,企业必然要对它的各种物资进行有计划的采购、供应、保管、组织和合理使用等一系列的管理工作,通常将上述工作统称为物资管理,物资管理工作的核心是库存控制工作。 此仓库管理系统为了适应新形势的需要,借鉴了MRPⅡ(制造资源计划Manufacturing Resource Planning)的先进管理思想。其功能覆盖了物料需求和库存控制两个方面的生产经营过程以及相关的财务活动。从而为制造业管理提供了比较有效的工具。 2.2 系统需求说明 2.2.1 功能需求分析 1、该系统能够实现对货物的各种信息查询,并且查询时可以按照以货单号或日期进行查询,包括逐个浏览,及时出入库信息的增加,删除和编辑操作,另外可以根据输入的信息来检索某货物的信息。 2、对库房的货物进行汇总,其中汇总的内容主要包括日期,货单号,货物名称,货源地,金额等。汇总时可以按照各种情况进行汇总,比如说按照日期,或者按照条件组合进行汇总。 3、另外,管理人员也可以直接增加和删除用户信息。系统还可以提供一定的附加功能来方便用户。 2.2.2 性能需求 在保证质量的情况下,提高运行速度,实现界面友好性、易操作性和跨平台性。“仓库管理系统”应有良好的安全性,系统管理员通过“用户设置”,可以建立任意多个账户并为其设置权限和密码,保证系统信息的保密性。 2.3 模块分析 2.3.1 总体模块 经过整体分析,此系统主要包含以下几个主要模块如图2.1: 仓库管理系统 系统管理 出库入库 货物详况 货物汇总 用户管理 密码管理 出库管理 入库管理 货物管理 货物查询 日期汇总 客户汇总 货物汇总 综合汇总 图2.1总体模块 2.3.2 分模块功能 系统的各个模块的功能如表2.1演示: 表2.1 模块名称 模块功能 物料入库模块 完成各种物料入库登记工作,并增加库存量。 物料出库模块 完成各种物料出库登记工作,并减少库存量。 物料查询模块 实现对入库单,出库单以及前库存情况进行组合查询的功能。 用户,系统设置模块 实现系统用户及其权限设置,参数设置和退出设置的功能。 2.4数据流图 图2.2数据流图 2.5 数据字典 2.5.1 具体表 本数据库包含以下几个表,见表2.2: 表2.2 名称 主键 注释 货源地 货源地 描述货源地的信息 货物详况 货单号 描述货单信息 入出库 货单号 描述产品入出库信息 客户 客户名 描述客户信息 系统管理 用户名 用户信息注册表 2.5.2 表里的具体的列清单 如表2.3所示: 表2.3 名称 数据类型 长度 货源地 文本 20 货单号 文本 30 日期 日期/时间 货物名称 文本 单价 文本 10 数量 数字 10 单位 文本 10 金额 货币 客户名 文本 编号 文本 50 经手人 文本 10 备注 文本 10 用户名 文本 10 密码 文本 权限 文本 入出库 是/否 3 概念结构设计 3.1入出库信息实体E-R图 入出库信息实体 货源地 编号 日期 经手人 货单号 入出库 备注 原料-仓库E-R图 3.2货物信息实体E-R图 货 物 信 息 实 体 货单号 货源地 货物名称 客户名 货物信息实体E-R图 3.3用户信息实体E-R图 用户信息实体 用户名 密码 权限 用户信息实体E-R图 4、仓库管理系统应用程序设计 4.1 “登录”模块详细设计 登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是管理员还是普通用户,进入后将面对的是主界面,从而进行相关的操作。 登录的界面主要由用户名和密码的信息,还有一些标题设置,确定和取消的按钮组成。通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。 其代码如下: Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset If Trim(txtuser.Text) = "" Then '判断输入的用户名是否为空 MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus Else sql = "select * from 系统管理 where 用户名='" & txtuser.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus Else '检验密码是否正确 If Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) Then userID = txtuser.Text userpow = rs_login.Fields(2) rs_login.Close Unload Me MDIForm1.Show Else MsgBox "密码不正确", vbOKOnly + vbExclamation, "" txtpwd.SetFocus End If End If End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If Exit Sub End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _ "data source=cangku.mdb" conn.Open connectionstring cnt = 0 End Sub Private Sub Timer1_Timer() Label3.Caption = Time Label4.Caption = Date End Sub 4.2 “主窗体”模块详细设计 在这个项目中,选择使用多文档界面。使用这个窗体的好处是可以使程序更加有条理。对于一个多任务的应用程序,使用多文档窗体还可以减少占用的系统资源。 主窗体设计的界面是用菜单编辑器做的,主要由系统管理、出库入库、货物详情、货物汇总和关于这五个大模块组成。主窗体是进行相关操作的主界面。在这几个里,管理员有所有的权利进行各种操作。 其代码如下: Private Sub about_Click() frmabout.Show End Sub Private Sub add_user_Click() adduser.Show End Sub Private Sub check_find_Click() chaxun.Show End Sub Private Sub data_manage_Click() sqlfind = "select * from 入出库" rs_data1.Open sqlfind, conn, adOpenKeyset, adLockPessimistic kumanage.Show End Sub Private Sub exit_Click() Unload Me End Sub Private Sub in_check_Click() jinku.Caption = "入库" jinku.Show End Sub Private Sub MDIForm_Load() frmdata = False find = False End Sub Private Sub modify_pw_Click() changpwd.Show End Sub Private Sub out_check_Click() jinku.Caption = "出库" jinku.Show End Sub Private Sub sum_check_date_Click() summary_menu = "check_date" huizong.Show 1 End Sub Private Sub sum_date_custom_Click() summary_menu = "date_custom" huizong.Show 1 End Sub Private Sub summary_check_Click() summary_menu = "check" huizong.Show 1 End Sub Private Sub summary_custom_Click() summary_menu = "custom" huizong.Show 1 End Sub Private Sub summary_date_Click() summary_menu = "date" huizong.Show 1 End Sub 4.3各项子模块详细设计 选择“系统管理”—>“添加用户”菜单,在添加用户的窗体里,输入新的用户名称和密码后,单击“确定”按钮,系统将会添加新的用户。 其代码如下: Private Sub Command1_Click() Dim sql As String Dim rs_add As New ADODB.Recordset If Trim(Text1.Text) = "" Then MsgBox "用户名不能为空", vbOKOnly + vbExclamation, "" Exit Sub Text1.SetFocus Else If Trim(Text2.Text) = "" Then MsgBox "密码不能为空", vbOKOnly + vbExclamation, "" Exit Sub Text2.SetFocus Else sql = "select * from 系统管理" rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic While (rs_add.EOF = False) If Trim(rs_add.Fields(0)) = Trim(Text1.Text) Then MsgBox "已有这个用户", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" Text2.Text = "" Text3.Text = "" Combo1.Text = "" Exit Sub Else rs_add.MoveNext End If Wend If Trim(Text2.Text) <> Trim(Text3.Text) Then MsgBox "两次密码不一致", vbOKOnly + vbExclamation, "" Text2.SetFocus Text2.Text = "" Text3.Text = "" Exit Sub ElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then MsgBox "请选择正确的用户权限", vbOKOnly + vbExclamation, "" Combo1.SetFocus Combo1.Text = "" Exit Sub Else rs_add.AddNew rs_add.Fields(0) = Text1.Text rs_add.Fields(1) = Text2.Text rs_add.Fields(2) = Combo1.Text rs_add.Update rs_add.Close MsgBox "添加用户成功", vbOKOnly + vbExclamation, "" Unload Me End If End If End If End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Combo1.AddItem "system" Combo1.AddItem "guest" End Sub 选择“系统管理”—>“修改密码”菜单,在修改密码的窗体里,输入旧密码和2次输入新密码后,单击“确定”按钮,系统将会更改当前用户的密码。 其代码如下: Private Sub Command1_Click() 'Dim rs_chang As New ADODB.Recordset 'Dim sql As String If Trim(Text3.Text = "") Then MsgBox "旧密码不能为空,请重新输入!", vbOKOnly + vbExclamation, "警告" Text3.SetFocus Text3.Text = "" Exit Sub End If If Trim(Text1.Text = "") Then MsgBox "新密码不能为空,请重新输入!", vbOKOnly + vbExclamation, "警告" Text1.SetFocus Text1.Text = "" Exit Sub End If If Text1.Text <> Text2.Text Then MsgBox "两次输入的新密码不同,请重新输入!", vbOKOnly + vbExclamation, "警告" Text1.SetFocus Text1.Text = "" Text2.Text = "" Exit Sub End If Dim strSql As String Dim rs As New ADODB.Recordset strSql = "Select * from 系统管理 where 用户名 = '" & userID & "'" rs.Open strSql, conn, adOpenForwardOnly, adLockReadOnly If Trim(rs.Fields("密码")) <> Trim(Text3.Text) Then MsgBox "旧密码不对,请重新输入!", vbOKOnly + vbExclamation, "警告" Text3.SetFocus Text3.Text = "" Else strSql = "Update 系统管理 set 密码 = '" & Text2.Text & "' where 用户名 = '" & userID & "'" conn.Execute strSql MsgBox "密码修改成功!", vbOKOnly + vbInformation, "提示" Text3.Text = "" Text1.Text = "" Text2.Text = "" Unload Me End If rs.Close Set rs = Nothing End Sub Private Sub Command2_Click() Unload Me End Sub 选择“入库出库”—>“入库出库”菜单进入界面 其代码如下: Option Explicit Dim rs_checkname As New ADODB.Recordset '货源地对应的数据对象 Dim rs_custom As New ADODB.Recordset '客户名对应的数据对象 Const row_num = 10 '表格行数 Const col_num = 6 '表格列数 Private Sub Combo2_Click() MSFlexGrid1.Text = Combo2.Text MSFlexGrid1.Row = MSFlexGrid1.Row + 1 MSFlexGrid1.Col = 0 Combo2.Visible = False Text5.Visible = True nextposition MSFlexGrid1.Row, MSFlexGrid1.Col End Sub Private Sub Command1_Click() Dim rs_save As New ADODB.Recordset Dim sql As String Dim i As Integer Dim s As String '转化数据用 On Error GoTo saveerror If Trim(Text1.Text) = "" Then MsgBox "货单不能为空!", vbOKOnly + vbExclamation, "" Text1.SetFocus Exit Sub End If If Combo1.Text = "" Then MsgBox "请选择货源地!", vbOKOnly + vbExclamation, "" Combo1.SetFocus Exit Sub End If If comboy.Text = "" Then MsgBox "请选择年份!", vbOKOnly + vbExclamation, "" comboy.SetFocus Exit Sub End If If combom.Text = "" Then MsgBox "请选择月份!", vbOKOnly + vbExclamation, "" combom.SetFocus Exit Sub End If If combod.Text = "" Then MsgBox "请选择日期!", vbOKOnly + vbExclamation, "" combod.SetFocus Exit Sub End If If Text2.Text = "" Then MsgBox "请填写凭证号!", vbOKOnly + vbExclamation, "" Text2.SetFocus Exit Sub End If If Text3.Text = "" Then MsgBox "请填写经手人!", vbOKOnly + vbExclamation, "" Text3.SetFocus Exit Sub End If If MSFlexGrid1.Col <> 0 Then MsgBox "请输入完整的物品信息!", vbOKOnly + vbExclamation, "" MSFlexGrid1.SetFocus Exit Sub End If sql = "select * from 入出库 where 货单号='" & Text1.Text & "'" rs_save.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_save.EOF Then rs_save.AddNew rs_save.Fields(0) = Trim(Text1.Text) rs_save.Fields(1) = CDate(Trim(comboy.Text) & "-" & Trim(combom.Text) & "-" & Trim(combod.Text)) rs_save.Fields(2) = Trim(Combo1.Text) rs_save.Fields(3) = Trim(Text2.Text) rs_save.Fields(4) = Trim(Text3.Text) rs_save.Fields(5) = Trim(Text4.Text) If jinku.Caption = "入库" Then '入出库标记 rs_save.Fields(6) = True Else rs_save.Fields(6) = False End If rs_save.Update rs_save.Close Else MsgBox "货单号重复!", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" rs_save.Close Exit Sub End If sql = "select * from 货物详况" rs_save.Open sql, conn, adOpenKeyset, adLockPessimistic For i = 1 To MSFlexGrid1.Row - 1 rs_save.AddNew rs_save.Fields(0) = Trim(Text1.Text) rs_save.Fields(1) = CDate(Trim(comboy.Text) & "-" & Trim(combom.Text) & "-" & Trim(combod.Text)) rs_save.Fields(2) = Trim(Combo1.Text) MSFlexGrid1.Row = i MSFlexGrid1.Col = 0 rs_save.Fields(3) = Trim(MSFlexGrid1.Text) MSFlexGrid1.Col = 1 If jinku.Caption = "出库" Then s = "-" & Trim(MSFlexGrid1.Text) rs_save.Fields(4) = CDbl(s) Else rs_save.Fields(4) = CDbl(Trim(MSFlexGrid1.Text)) End If MSFlexGrid1.Col = 2 rs_save.Fields(5) = Trim(MSFlexGrid1.Text) MSFlexGrid1.Col = 3 rs_save.Fields(6) = Trim(MSFlexGrid1.Text) MSFlexGrid1.Col = 4 If jinku.Caption = "出库" Then s = "-" & Trim(MSFlexGrid1.Text) rs_save.Fields(7) = CDbl(s) Else rs_save.Fields(7) = CDbl(Trim(MSFlexGrid1.Text)) End If MSFlexGrid1.Col = 5 rs_save.Fields(8) = Trim(MSFlexGrid1.Text) Next i rs_save.Update rs_save.Close MsgBox "添加成功!", vbOKOnly + vbExclamation, "" Unload Me Exit Sub saveerror: MsgBox Err.Description End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim sql As String Dim i As Integer On Error GoTo loaderror sql = "select * from 货源地" rs_checkname.CursorLocation = adUseClient rs_checkname.Open sql, conn, adOpenKeyset, adLockPessimistic sql = "select * from 客户名" rs_custom.CursorLocation = adUseClient rs_custom.Open sql, conn, adOpenKeyset, adLockPessimistic While Not rs_custom.EOF Combo2.AddItem rs_custom.Fields(0) rs_custom.MoveNext Wend If Not rs_checkname.EOF Then rs_checkname.MoveFirst While Not rs_checkname.EOF '添加可选择的货源地 Combo1.AddItem rs_checkname.Fields(0) rs_checkname.MoveNext Wend End If comboy.AddItem 2002 '添加年份 comboy.AddItem 2003 comboy.AddItem 2004 comboy.AddItem 2005 For i = 1 To 12 '添加月份 combom.AddItem i Next i For i = 1 To 31 '添加日期 combod.AddItem i Next i setgrid setgrid_head Text5.Visible = False clear_grid Exit Sub loaderror: MsgBox Err.Description End Sub Private Sub Form_Unload(Cancel As Integer) '关闭数据对象 rs_checkname.Close rs_custom.Close End Sub Public Sub setgrid() '设置表格子程序 Dim i As Integer On Error GoTo seterror MSFlexGrid1.ScrollBars = flexScrollBarBoth MSFlexGrid1.FixedCols = 0 MSFlexGrid1.Rows = row_num MSFlexGrid1.Cols = col_num MSFlexGrid1.SelectionMode = flexSelectionByRow For i = 0 To row_num - 1 MSFlexGrid1.RowHeight(i) = 315 Next For i = 0 To col_num - 1 MSFlexGrid1.ColWidth(i) = 1300 Next i Exit Sub seterror: MsgBox Err.Description End Sub Public Sub setgrid_head() On Error GoTo setheaderror MSFlexGrid1.Row = 0 MSFlexGrid1.Col = 0 MSFlexGrid1.Text = "物品名称" MSFlexGrid1.Col = 1 MSFlexGrid1.Text = " 单价" MSFlexGrid1.Col = 2 MSFlexGrid1.Text = "数量" MSFlexGrid1.Col = 3 MSFlexGrid1.Text = "单位" MSFlexGrid1.Col = 4 MSFlexGrid1.Text = " 金额" MSFlexGrid1.Col = 5 MSFlexGrid1.Text = "客户名" Exit Sub setheaderror: MsgBox Err.Description End Sub
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服