课程设计报告.docx
《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(22页珍藏版)》请在冰豆网上搜索。
课程设计报告
库存物资管理系统
摘要
随着信息技术的发展,计算机信息管理系统越来越受到企业重视。
库存管理系统是企业物流管理中不可或缺的一部分。
本文主要分析了库存管理系统的一些基本功能和组成情况,包括系统的需求分析、系统结构、功能模块划分以及数据库模式分析等,重点对应用程序的实际开发实现作了介绍,同时简单介绍了VisualBasic编程环境和Access数据库管理系统的功能特点。
该系统采用MicrosoftAccess型数据库系统作为库存管理系统的后台数据库,Microsoft公司的VisualBasic6.0工具为开发工具进行系统设计。
该系统能实现库存管理,入库管理,出库管理,盘存管理,历史数据管理,打印和查询等功能,较全面满足了库存管理的各项工作,符合管理信息系统(MIS)的设计要求。
关键词管理信息系统;库存管理信息系统;数据库
前 言
库存管理系统是一个企事业单位不可缺少的一部分,它的应用对于企业的决策者和管理者来说都是至关重要的,因此,库存管理系统应该能够为用户提供充足的信息和快捷的查询手段,但一直以来人们使用传统的人工方式管理库存,这种管理方式存在着许多缺点,诸如效率低,保密性差等,而且时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学不断发展,其强大的功能已经被人们深刻认识,它已经进入了人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对产品库存信息进行管理,具有着人工管理无法比拟的优点,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,可减少更多的人力物力。
因此,开发一个库存管理系统是很有必要的,具有其特有的技术意义和管理意义。
根据上述要求给出一个合理的解决方按,主要包括以下几个方面:
1.将整个系统分为两大模块:
前台与后台,其中前台主要是界面的设计以及界面的关联,而后台主要是对数据库的管理以及编码。
2.对后台数据库的维护和管理,由于数据库有很多的表格,而且几乎上都是相互关联的,所以对表的修改涉及到整个后台的数据体,必须做统一的考虑。
3.数据库的合理性要求能够对整个系统起到简化的作用,所以对库的规划必须合理。
4.对于后台的不断修改以及操作,必须要求数据库的稳定性。
5.验证系统的稳定性,对其进行检测。
6.按照模块化对成绩管理系统给出一个合理的解决方案。
第1章绪论
1.1库存物资管理系统发展及现状
库存物资管理系统是一个企事业单位不可缺少的重要部分,它的内容对于企事业单位的决策者和管理者来说都至关重要,所以库存信息管理系统应该为用户提供充足的信息和快捷的查询手段。
而且随着我国经济的不断发展以及企事业单位规模的不断扩大,管理科目的多样化,使得企事业对库存物资的管理越趋繁琐、复杂,工作业务繁杂,工作量大,这种传统的管理模式已经暴露出种种弊端:
难以统一调配和处理,效率极低,缺乏科学性以及合理性。
随着计算机应用的普及与深入,利用计算机能够对所有企事业活动进行统一管理,并进行分析,大大减少了工作量,提高了工作效率,为管理工作带来了极大的方便。
本系统开发的总体任务是实现库存物资管理的系统化、规范化、自动化、达到提高管理效率的目的,本系统本着实用性、通用、开放和安全的原则,使数据库开发软件开发制作,实现了期初设置、库存管理、查询统计、报表打印、综合性的修改、查询及删除等功能。
该设计方法易于推广至其它信息化管理系统的设计,充分利用计算机作为辅助工具,实现从传统的手工管理到计算机管理,对提高管理效率和节约大量的人力、物力有一定的推动作用。
本系统一切从实际出发,充分考虑了库存物资的内部管理、信息交流等方面的复杂需求,实现物资的有效管理,真正为库存物资管理提供一个电子平台。
因此为了充分利用计算机硬件资源,做好库存物资管理工作,提高办事效率,实现全面的、相对集中的办公自动化,开发本系统就成了当务之急,其目的主要为了彻底改变这种繁杂的管理模式,实现全面的、相对集中的、智能化的信息综合管理,为企事业单位的管理工作带来方便。
1.2库存物资管理系统的发展目标
库存物资管理系统不同于传统的物资管理。
传统管理最主要的职能是备份,并在对所备份资料分开保存、组织的基础上为用户提供各种服务。
库存物资管理系统是一个将管理、服务和人集成在一起的一个“多维”环境,数字化资源是库存物资管理系统的基本要素。
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
管理信息系统是进行信息的采集、存储、加工、维护和使用的系统。
它是随着管理科学和技术科学的发展而形成的。
库存物资管理系统是企事业单位不可缺少的部分,它的内容对于决策者和管理者来说都至关重要,所以库存物资管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
第2章系统分析
2.1开发背景
2.1.1计算机已经成为我们学习和工作的得力助手
今天,计算机的价格已经十分低廉,性能却有了长足的进步。
它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动;
其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率;
第四,计算机可以使敏感文档更加安全,等等。
2.1.2在企事业单位用计算机管理库存物资的意义
现在我国很多企事业单位对库存物资等的管理还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
归纳起来,在企事业单位用计算机代替人工管理库存物资大约有以下几点好处:
1.可以存储大量的库存信息和物资相关信息,安全、高效;
2.只需一到二名信息录入员即可操作系统,节省大量人力;
3.可以迅速查到所需信息。
2.2需求分析
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。
使原本的旧的管理方法越来越不适应现在社会的发展。
为了适应现代社会人们高度强烈的时间观念,库存物资管理系统为企事业单位带来了极大的方便。
设计一个数据库系统,首先必须确认数据库系统的用户和用途。
由于数据库系统是一个组织部门的模拟,数据库系统设计者必须对一个组织部门的基本情况有所了解,比如该组织部门的组织机构、各部门的联系、有关事物和活动以及描述它们的数据、信息流程、政策和制度、报表及其格式和有关的文档等。
收集和分析这些资料的过程称为需求分析。
需求分析的目标是给出应用领域中数据项、数据项之间的关系和数据操作任务的详细定义,为数据库系统的概念设计、逻辑设计和物理设计奠定基础,为优化数据库系统的逻辑结构和物理结构提供可靠依据。
设计人员应与用户密切合作,用户则应积极参与,从而使设计人员对用户需求有全面、准确的理解。
需求分析的过程是对现实世界深入了解的过程,数据库系统能否正确的反映现实世界主要取决于需求分析,需求分析人员既要对数据库技术有一定的了解,又要对组织部门的情况比较熟悉,一般由数据库系统设计人员和本组织部门的有关工作人员合作进行。
2.2.1需求信息的收集
需求信息的收集又称为系统调查。
为了充分地了解用户可能提出的要求,在调查研究之前,要做好充分的准备工作,要明确调查的目的、调查的内容和调查的方式。
2.2.2需求信息的整理
想要把收集到的信息(如文件、图表、票据、笔记等)转化为下一设计阶段可用形式的信息,必须对需求信息做分析整理工作。
第3章功能介绍
库存物资管理系统的功能结构图和如下:
第4章系统设计与实现
4.1数据库设计与实现
4.1.1数据库需求分析
1、数据流图
2、数据字典
1)数据项
(货品入库信息表)
(供应商信息表)
(库存信息表)
2)数据结构
编号
数据结构名
属性
1
入库信息
供应商编号、供应商名称、入库编号、货品名称、货品规格、计量单位、数量、单价、入库日期
2
货品信息
货品名称、生产厂家、型号、规格
3
供应商信息
供应商编号、名称、业务联系人、联系电话、传真
4
出入库单据
商品名称、厂家、型号、规格、数量、出/入库日期、出/入库单位、送/提货人
4.1.2数据库概念结构设计
1、E—R图
1)期初库存设置模块E—R图如下所示:
2)库存物资管理系统总E—R图如下所示:
2、相应的实体—关系属性
仓库(名称,负责人,所属单位,构建日期)
供应商信息(供应商编号,供应商名称,联系人,联系方式)
库存信息(编号,规格,单位,数量,单价)
出库信息(出库编号,货品编号,名称,数量,单价,出库日期)
入库信息(供应商编号,供应商名称,入库编号,名称,规格,数量,单价,入库日期)
4.1.3数据库逻辑结构设计
1、数据组织
仓库(名称,负责人,所属单位,构建日期)
供应商信息(供应商编号,供应商名称,联系人,联系方式)
库存信息(编号,规格,单位,数量,单价)
出库信息(货品编号,出库编号,名称,数量,单价,出库日期)
入库信息(入库编号,供应商编号,供应商名称,名称,规格,数量,单价,入库日期)
2、数据库模式定义
(库存信息)
(出库信息)
3、数据库关系模式图
4.2系统界面设计与实现
4.2.1出库信息查询界面的设计与实现
PrivateSubForm_Load()
rtn=SetWindowPos(Me.hwnd,-1,0,0,0,0,3)
Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\db_kcgl.mdb;PersistSecurityInfo=False"
Adodc1.RecordSource="select*fromtb_out"
Adodc1.Refresh
Me.Left=(Screen.Width-Me.Width)/2
Me.Top=(Screen.Height-Me.Height)/2
EndSub
PrivateSubText1_Change()
OnErrorResumeNext
Adodc1.RecordSource="select*fromtb_outwhereout_namelike'%"+Text1.Text+"%'"
Adodc1.Refresh
EndSub
PrivateSubForm_Unload(CancelAsInteger)
Frm_main.Enabled=True
EndSub
4.2.2出入库日统计界面的设计与实现
PrivateSubCmd_cancel_Click()
UnloadMe
EndSub
PrivateSubCmd_stat_Click()
rtn=SetWindowPos(Me.hwnd,-2,0,0,0,0,3)
CalltbTemp
Adodc1.RecordSource="selectin_name,in_Pricefromtb_inwherein_date="+Chr(35)+Str(DTPicker1.Value)+Chr(35)+""
Adodc1.Refresh
IfAdodc1.Recordset.RecordCount>0Then
Adodc1.Recordset.MoveFirst
DoWhileAdodc1.Recordset.EOF=False
Adodc2.RecordSource="selectsum(in_Num),sum(in_Money)fromtb_inwherein_Name='"+Adodc1.Recordset.Fields("in_Name")+"'"
Adodc2.Refresh
IfAdodc2.Recordset.RecordCount>0Then
DimNumsAsInteger
Nums=Nums+1
Callmain
SetadoRs=adoCon.Execute("insertintotb_tempvalues("&Nums&",'"&Adodc1.Recordset.Fields("in_name")&"','"&Str(Adodc2.Recordset.Fields(0))&"','"&Str(Adodc2.Recordset.Fields
(1))&"')")
adoCon.Close
EndIf
Adodc1.Recordset.MoveNext
Loop
Adodc2.RecordSource="selectdistinctt_name,t_num,T_moneyfromtb_temp"
Adodc2.Refresh
CallLoadNumI
Else
MsgBox"当前数据库中没有符合条件的统计数据",64,"提示信息"
EndIf
EndSub
PrivateSubCmd_stats_Click()
rtn=SetWindowPos(Me.hwnd,-2,0,0,0,0,3)
CalltbTemp
Adodc1.RecordSource="selectout_name,OUT_Pricefromtb_outwhereout_date="+Chr(35)+Str(DTPicker2.Value)+Chr(35)+""
Adodc1.Refresh
IfAdodc1.Recordset.RecordCount>0Then
Adodc1.Recordset.MoveFirst
DoWhileAdodc1.Recordset.EOF=False
Adodc2.RecordSource="selectsum(OUT_Num),sum(OUT_Money)fromtb_outwhereOut_Name='"+Adodc1.Recordset.Fields("Out_Name")+"'"
Adodc2.Refresh
IfAdodc2.Recordset.RecordCount>0Then
DimNumsAsInteger
Nums=Nums+1
Callmain
SetadoRs=adoCon.Execute("insertintotb_tempvalues("&Nums&",'"&Adodc1.Recordset.Fields("out_name")&"','"&Str(Adodc2.Recordset.Fields(0))&"','"&Str(Adodc2.Recordset.Fields
(1))&"')")
adoCon.Close
EndIf
Adodc1.Recordset.MoveNext
Loop
Adodc2.RecordSource="selectdistinctt_name,t_num,T_moneyfromtb_temp"
Adodc2.Refresh
CallLoadNumO
Else
MsgBox"当前数据库中没有符合条件的统计数据",64,"提示信息"
EndIf
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
rtn=SetWindowPos(Me.hwnd,-1,0,0,0,0,3)
DTPicker1.Value=Date
DTPicker2.Value=Date
Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\db_kcgl.mdb;PersistSecurityInfo=False"
Adodc1.RecordSource="select*fromtb_temp"
Adodc1.Refresh
Adodc2.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\db_kcgl.mdb;PersistSecurityInfo=False"
Adodc2.RecordSource="select*fromtb_temp"
Adodc2.Refresh
Adodc3.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\db_kcgl.mdb;PersistSecurityInfo=False"
Adodc3.RecordSource="select*fromtb_temp"
Adodc3.Refresh
Me.Left=(Screen.Width-Me.Width)/2
Me.Top=(Screen.Height-Me.Height)/2
SSTab1.Tab=0
EndSub
PrivateSubLoadNumI()
DimconnterAsInteger
Dimsql,workarea(12)AsString
DimiAsInteger
DimNumsAsInteger
ProgressBar1.Visible=True
ProgressBar1.Max=UBound(workarea)
ProgressBar1.Value=ProgressBar1.Min
Forconnter=LBound(workarea)ToUBound(workarea)
workarea(connter)="initialvalue"&connter
ProgressBar1.Value=connter
Adodc1.RecordSource="selectdistinctT_Name,T_numfromtb_temp"
Adodc1.Refresh
Nums=Adodc1.Recordset.RecordCount
ReDimarrValues(1ToNums,1To2)
Fori=1ToNums
arrValues(i,1)=""&Adodc1.Recordset!
T_Name
arrValues(i,2)=Adodc1.Recordset!
T_num
Adodc1.Recordset.MoveNext
Nexti
Nextconnter
ProgressBar1.Value=ProgressBar1.Min
MSChart1.ChartData=arrValues
MSChart1.Title="货品入库信息日统计"
MSChart1.ColumnLabel="合计数量"
ProgressBar1.Visible=False
Label3.Visible=False
EndSub
PrivateSubLoadNumO()
DimconnterAsInteger
Dimsql,workarea(12)AsString
DimiAsInteger
DimNumsAsInteger
ProgressBar2.Visible=True
ProgressBar2.Max=UBound(workarea)
ProgressBar2.Value=ProgressBar2.Min
Forconnter=LBound(workarea)ToUBound(workarea)
workarea(connter)="initialvalue"&connter
ProgressBar2.Value=connter
Adodc1.RecordSource="selectdistinctT_Name,T_numfromtb_temp"
Adodc1.Refresh
Nums=Adodc1.Recordset.RecordCount
ReDimarrValues(1ToNums,1To2)
Fori=1ToNums
arrValues(i,1)=""&Adodc1.Recordset!
T_Name
arrValues(i,2)=Adodc1.Recordset!
T_num
Adodc1.Recordset.MoveNext
Nexti
Nextconnter
ProgressBar2.Value=ProgressBar2.Min
MSChart2.ChartData=arrValues
MSChart2.Title="货品出库信息日统计"
MSChart2.ColumnLabel="合计数量"
ProgressBar2.Visible=False
Label4.Visible=False
EndSub
PrivateSubSSTab1_Click(PreviousTabAsInteger)
IfSSTab1.Tab=0Then
Cmd_stat_Click
ElseIfSSTab1.Tab=1Then
Cmd_stats_Click
EndIf
EndSub
PrivateSubtbTemp()
OnErrorResumeNext
Adodc2.RecordSource="select*fromtb_temp"
Adodc2.Refresh
IfAdodc2.Recordset.RecordCount>0Then
Adodc2.Recordset.MoveFirst
DoWhileAdodc2.Recordset.EOF=False
Adodc2.Recordset.Delete
Adodc2.Recordset.MoveNext
Loop
Else
EndIf
Adodc2.RecordSource="select*