毕业论文-仓库管理系统_第1页
毕业论文-仓库管理系统_第2页
毕业论文-仓库管理系统_第3页
毕业论文-仓库管理系统_第4页
毕业论文-仓库管理系统_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

安徽涉外经济职业学院毕业设计任务书题 目 库存管理系统 系名称 专业(班级) 学生姓名 学 号 指导教师 2010年12月30日涉外学院信息与计算机系专科毕业设计涉外学院信息与计算机系专科毕业设计第第10页共43页 #图4.8计划采购实体E-R图实体与实体间的关系E-R图如下所示:图4.9实体之间关系E-R图数据库逻辑结构设计在上面的实体以及实体之间关系的基础上,形成各个表格之间的关系库存管理系统数据库中的各个表的设计结果如下面的几个表格所示,每个表格表示数据库中的一个表。表4.1 设备代码表字段名称数据类型可否为空[说明设备号文本NOTNULL字段大小为6设备名称文本NULL字段大小为20表4.2权限表字段名称数据类型可否为空说明用户名文本NULL字段大小为10密码文本NULL字段大小为15权限文本NULL字段大小为10

字段名称数据类型可否为空说明设备号文本NOTNULL字段大小为6入库时间日期/时间NULL无供应商文本NULL字段大小为20供应商电话文本NULL字段大小为15入库数量数字NULLINTEGER价格数字NULLINTEGER采购员文本NULL字段大小为10表4.4设备出库表字段名称数据类型可否为空说明设备号文本NOTNULL字段大小为6使用部门文本NULL字段大小为20出库时间日期/时间NULL无出库状况文本NULL字段大小为20经手人文本NULL字段大小为10出库数量数字NULLINTEGER领取人文本NULL字段大小为10用途文本NULL字段大小为20表4.5现有库存库表字段名称数据类型可否为空说明设备号文本NOTNULL字段大小为 6主键现有库存文本NULLINTEGER最大库存文本NULLINTEGER最小库存文本NULLINTEGER表4.6 部门需求表字段名称数据类型可否为空说明设备号文本NOTNULL字段大小为6部门名称文本NOTNULL字段大小为10需要数量数字NULLINTEGER需求开始时间日期/时间NULL无需求结束时间日期/时间NULL无表4.7设备还库表字段名称数据类型可否为空设备号文本NOTNULL字段大小为6还库时间日期/时间NULL无仓库管理员文本NULL字段大小为10归还数量数字NULLINTEGER归还人文本NULL字段大小为10表4.8操作日志表字段名称数据类型可否为空说明操作员文本NOTNULL字段大小为10操作内容文本NOTNULL字段大小为100操作时间日期/时间NOTNULL无表4.9设备采购计划表字段名称数据类型可否为空说明设备号文本NOTNULL字段大小为6主键现有库存数字NULLINTEGER总库存数字NULLINTEGER最大库存数字NULLINTEGER购买数量数字NULLINTEGER供应商文本NULL字段大小为10价格数字NULLINTEGER计划采购时间日期/时间NULL无4.3代码设计任何库存均可分为如下二类:A类物品:高值——价值占库存总值70 -80%的相对少数物品。通常为物品的15-20%。E类物品:中值 总值占库存总值的15-20%。物品数居中,通常占物品的30-40%。C类物品:低值一一库存总值几乎可以忽略不计,只占5 -10%。是物品的大多数,通常占60-70%。因此设计编码如下:设备号或零件号XXXXXX自定义 自定义 自定义例如设备号或零件号 A0102A类——消耗性物资常用零件4输入输出设计本系统界面标准Windows形式,键盘输入(也可以用条形码读取),人机交互,容易使用。输入输出的设计考虑美观实用和通俗易懂,图文并茂。4.5系统安全性设计系统数据库中包含多个二维表,所以在系统与数据库的连接上,并没有把数据库和系统的连接直接写入代码,而是通过对服务器端进行系统设置,使数据库名及路径不可见,并通过ACCESS的数据库安全设置,保证了数据库的安全性。系统根据用户身份不同赋予不同权限,用户用密码登陆,同样也保证了系统数据的安全性。第五章系统实施1开发工具简介本系统的前端开发工具,我选择了VisualBasic6.0,后台数据库采用Access2000VB简介Visual意为可视化的”指的是一种开发图形用户界面的方法,所以VisualBasic是基于Basic的可视化的程序设计语言。在VisualBasic中,一方面继承了Basic所具有的程序设计语言简单易用的特点,另一方面在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。VB功能特点具有面向对象的可视化设计工具在VB中,应用面向对象的程序设计方法(OOP,把程序和数据封装起来视为一个对象,每个对象都是可视的。程序员在设计时只需用现有工具根据界面设计要求,直接在屏幕上 画”出窗口、菜单、按钮、滚动条等不同类型的对象,并为每个对象设置属性。程序员的编程工作仅限于编写相关对象要完成的功能程序,因而程序设计的效率可大大提高。事件驱动的编程机制事件驱动是非常适合图形用户界面的编程方式。在图形用户界面的应用程序中,是由用户的动作即事件掌握着程序运行的流向,每个事件都能驱动一段程序的运行。程序员只要编写响应用户动作的代码,而各个动作之间不一定有联系。提供了易学易用的应用程序集成开发环境在VB集成开发环境中,用户可设计界面、编写代码、调试程序,直

至把应用程序编译成可执行文件在 Windows中运行,使用户在友好的开发环境中工作。结构化的程序设计语言VB具有丰富的数据类型和结构化程序结构, 作为一种程序设计语言,它还有如下一些特点:强大的数值和字符串处理功能丰富的图形指令,可方便地绘制各种图形提供静态和动态数组,有利于简化内存的管理过程可递归调用,使程序更为简练支持随机文件和顺序文件的访问提供了一个可供应用程序调用的包含多种类型的图标库具有完善的运行出错处理支持多种数据库系统的访问利用数据控件可访问的数据库系统有:MicrosoftAccess、Btrieve、DBASEMicrosoftFoxPro和Paradox等,也可以访问MicrosoftExcel、Lotus1-2-3等多种电子表格。支持动态数据交换(DDE、动态链接库(DLL)和对象的链接与嵌入(OLE技术完备的HELP联机帮助功能与Windows环境下的软件一样,在VB中,利用帮助菜单和F1功能键,用户可以随时方便地得到所需要的帮助信息。 VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供了极大的方便。VB程序设计的概念就是面向对象的概念,对象就是数据(DATA和代码(CODE互相结合的综合体。Windows上面的每一个图标,包括窗口本身都是对象,如果没有任何事情发生,对象处于停顿状态。当存在外来事件时,程序段执行,它的执行是由外来事件决定的。因此是“事件”驱动的。编写VB程序较为简单,首先将各个对象放在空白窗体上,然后将程序代码分别添加给对象或图标,将它们组合起来就可以随意运行了。在VB中,窗体实际上是一个对象,VB的窗体含有许多内嵌特性,这使得用户界面部分的建立像是从一个目录中挑选一个个合适的控件,而不是从零开始一步一步地建立控件。这种开发者能亲眼看到的程序设计过程就是可视化程序设计”(VisualProgramming)VB中的基本概念对象:面向对象编程(OOP的提法大家一定也很耳熟,虽然VisualBasic并不是完全的面向对象编程,但也利用了对象编程技术。对象简单地说就是大家经常看到的各种窗口、按钮、文本框甚至打印机等。属性:如同电视有黑白、彩色之分一样,作为对象的 Windows中的窗口也是有大有小,文本框的位置不可能完全一样,菜单要显示出不同的功能,这些都是由对象的属性决定的。不同对象的属性可能不同。属性一般决定了对象的位置、大小、显示等情况。方法:就是对象能够做的事,如打印机对象就有打印(Print)方法、窗口对象支持隐藏(Hide)方法、很多对象支持移动(Move)方法等。事件:就是对象对用户各种操作的反映情况。如用户用鼠标按一下按钮,就会触发按钮的“按”(Click)事件。控件:控件就是VisualBasic提供的编程用的模块,与对象有直接的联系,如同积木的木块,使用这样的控件,就可以像拼图或堆积木一样“搭”、“拼”你的程序界面。VisualBasic中使用控件,简化了Windows中的窗口、按钮等对象的编程设计。每个控件都有各自的属性、事件及方法。只需修改这些特征你就可以随心所欲地编程了。最重要的是,你可以利用成千上万的各种扩充的控件来快速构造几乎能满足你任何要求的程序。例如,如果你不满意Windows简陋的媒体播放器,你就可以使用VB的多媒体控件在1小时以内设计一个完全自己风格的能够播放CDVCD的多媒体播放器,而功能完全与之相当。Access2000数据库简介作为Microsoft的office套件产品之一,access已经成为世界上最流行的桌面数据库系统。Access与许多优秀的关系数据库一样,可以让你很容易地连接相关的信息而且还对其他的数据库系统有所补充。它能操作其它来源的资料,包括许多流行的PC数据库程序(如dBASEParadox,MicrosoftFoxPro)和服务器、小型机及大型机上的许多SQL数据库。Access还完全支持Microsoft的OLE技术。Access还提供windows操作系统的高级应用程序开发系统。Access与其它数据库开发系统之间相当显著的区别就是:不用写一行代码,就可以在很短的时间里开发出一个功能强大而且相当专业的数据库应用程序,并且这一愉快的过程是完全可视的!如果能给它加上简短的 VBA弋码,那么开发的程序决不比专业程序员开发的程序差。Access的总体结构Access将所有有名字的东西都成为对象(object),在Access2000中,最重要的对象有表,查询,窗体,报表,宏和模块。表用户定义的存储资料的对象。每一个表都包含有关某个主体的信息。表包括存储不同种类资料的字段(列),而记录(行)则收集特定主体实例的所有信息。查询为来自一个或多个表的资料提供定制视图的对象。在 Access中,可以利用图形化的实例查询机制(QBE或通过SQL语句来建立查询。你可以在查询中选择、更新、插入或删除资料,也可以用查询来建立新表。窗体窗体是主要的人机接口。大量的操作(几乎所有)都要通过窗体完成。窗体通过运行宏(macro)或VisualBasicforApplicatinns (VBA过程,来响应大量的事件。Access2000为我们提供了强大的(同时也是相当方便的向导)来建立标准的Windows窗体。报表为格式化、计算、打印选定资料而设计的对象。它是衡量一个优秀的数据库的重要标准(有时甚至是唯一的标准)。宏为了响应已定义的事件,需要让Access去执行一个或多个操作,而宏就是对这些操作的结构化的定义对象。它可以让你像堆积木一样建立一个功能强大的程序,而无须写大量的代码。模块包括用VBA编码的定制过程的一个对象。模块提供了独立的动作流以捕获错误,而宏做不到。模块能直接响应窗体或报表事件,也可以从应用程序的任何地方被调用。£寫三"审斤苗t&“・・・卫曰中OLE^DB5«LSimrSSL3ervrr"萃號帯申5.2系统实现.2系统实现5.2.1.系统管理模块实现圈工业企业通用库存管理信息丟统系蜿■入耳摄作出耳黑作还I5.1.5本系统中VB与Access2000的连接Microsoft.JetOLEDB.4.0VB应用程序 -系统管理菜单修改用户密码程序PrivateSubCommand1_Click()AdodcI.RecordSource=frmLogin.AdodcI.RecordSourceAdodcI.RefreshSetText4.DataSource=AdodclText4.DataField="密码"IfText1=""ThenMsgBox"请输入原密码!",,"修改密码"ExitSubElseIfText1.Text<>Adodc1.Recordset.Fields("密码")ThenMsgBox"原密码错误!",,"修改密码"ExitSubElseIfText2=""OrText3=""ThenMsgBox"请输入新密码!!",,"修改密码ExitSubElselfText2<>Text3ThenMsgBox"密码不一致!!",,"修改密码ExitSubElseText4.Text=Text2.TextAdodc1.Recordset.MoveFirstMsgBox"密码修改成功!!"修改密码UnloadMeEndIfEndSub5.2.2用户管理界面5.2.3入库模块的实现PrivateSubCommand1_Click()设备入库程序DimI,JAsIntegerDimSTRAsStringIfTextl.Text=""OrText2=""OrCombol.Text=""OrText4=""OrText5=""OrText6=""OrText7=""ThenMsgBox"请输入完整信息!"ExitSubElse将记录存入入库记录表设备入库表.datPrimaryRS.Recordset.Fields(”设备号")=Text1.Text设备入库表.datPrimaryRS.Recordset.Fields("入库数量")=Text2.Text设备入库表.datPrimaryRS.Recordset.Fields("入库时间")=Combo1.Text设备入库表.datPrimaryRS.Recordset.Fields("供应商")=Text4.Text设备入库表.datPrimaryRS.Recordset.Fields("供应商电话")=Text5.Text设备入库表.datPrimaryRS.Recordset.Fields("价格")=Text6.Text设备入库表.datPrimaryRS.Recordset.Fields("采购员")=Text7.TextMsgBox"已经成功入库!"EndIf设备入库表.Adodc1.RecordSource="select*from现有库存表where设备号="&Textl.Text设备入库表.AdodcI.Refresh设备入库表.DataGridl.RefreshIf设备入库表.AdodcI.Recordset.RecordCount>0Then将记录加入现有库存表中设备入库表.Text9.Text=CInt(设备入库表.Text9.Text)+CInt(Text2.Text)设备入库表.Text9.RefreshJ=设备入库表.Text9设备入库表.AdodcI.Recordset.MoveFirst设备入库表.AdodcI.Recordset.Fields.Refresh设备入库表.DataGridl.RefreshMsgBox"现有库存量为:"&JElseSTR="现有库存表中无此设备! "&vbCrLf&"请在设备代码表和现有库存表中手动添加记录!!"MsgBoxSTRLoadfrm现有库存表frm现有库存表.ShowCallfrm现有库存表.Command1_ClickFrmAddNewEqu.Text1.Text=frmlnput.Text1.TextFrmAddNewEqu.Text2.Text=frmInput.Text2.TextLoadfrm设备代码表frm设备代码表.ShowEndIfEndSubPrivateSubcmdDelete_Click() 删除入库表中记录OnErrorGoToDeleteErrDimYesNoAsStringYesNo=MsgBox("删除",vbYesNo,"删除记录")IfYesNo=vbYesThenWithdatPrimaryRS.Recordset.Delete.MoveNextIf.EOFThen.MoveLastEndWithElseExitSubEndIfDeleteErr:MsgBoxErr.DescriptionEndSubPrivateSubcmdUpdate_Click() 更新纪录程序OnErrorGoToUpdateErrdatPrimaryRS.Recordset.UpdateBatchadAffectAIIExitSubUpdateErr:MsgBoxErr.DescriptionEndSub524 出库模块实现PrivateSubCommand1_Click() 设备出库程序Dimi,J,kAsIntegerDimSTRAsStringfrm设备出库表.AdodcI.RecordSource="select*from现有库存表 where设备号="&Textl.Text&frm设备出库表.Adodc1.Refreshfrm设备出库表.DataGrid1.RefreshIfIsNumeric(Text2)=FalseThenMsgBox"数量必须是数字!"ExitSubEndIfIfText1.Text=""OrText2=""OrCombo1.Text=""OrText4=""OrText5=""OrText6=""OrText7=""ThenMsgBox"请输入完整信息!ExitSubElseIffrm设备出库表.Adodc1.Recordset.RecordCount<=0ThenSTR="现有库存表中无此设备!请检查输入是否正确! !MsgBoxSTRExitSubElsefrm设备出库表.datPrimaryRS.Recordset.Fields(”设备号")=Text1.Textfrm设备出库表.datPrimaryRS.Recordset.Fields(”出库数量")=Text2.Textfrm设备出库表.datPrimaryRS.Recordset.Fields(”出库时间")=Combo1.Textfrm设备出库表.datPrimaryRS.Recordset.Fields(”经手人")=Text4.Textfrm设备出库表.datPrimaryRS.Recordset.Fields(”领取人")=Text5.Textfrm设备出库表.datPrimaryRS.Recordset.Fields(”使用部门")=Text6.Textfrm设备出库表.datPrimaryRS.Recordset.Fields(”用途")=Text7.TextMsgBox"已经成功存入设备出库表库!EndIfIffrm设备出库表.Adodc1.Recordset.RecordCount>0Thenk=Clnt(frm设备出库表.Text9.Text)-Clnt(Text2.Text)Ifk>=0Thenfrm设备出库表.Text9.Text=Clnt(frm设备出库表.Text9.Text)-Clnt(Text2.Text)frm设备出库表.Text9.RefreshJ=frm设备出库表.Text9frm设备出库表.AdodcI.Recordset.MoveFirstfrm设备出库表.Adodc1.Recordset.Fields.Refreshfrm设备出库表.DataGrid1.RefreshMsgBox"现有库存量为:"&JElseMsgBox"现有库存量不足!请输入合适数量! !"ExitSubEndIfElseSTR="现有库存表中无此设备!请检查输入是否正确! !"MsgBoxSTREndIfEndSubPrivateSubcmdDelete_Click() 删除出库记录OnErrorGoToDeleteErrDimYesNoAsStringYesNo=MsgBox("删除",vbYesNo,"删除记录")IfYesNo=vbYesThenWithdatPrimaryRS.Recordset.Delete.MoveNextIf.EOFThen.MoveLastEndWithElseExitSub

EndIfDeleteErr:MsgBoxErr.DescriptionEndSub更新记录程序同入库的更新程序相同,在此略525设备采购模块实现526现有模块实现5.2.7设备代码模块实现主要程序

PrivateSubcmdAdd_Click() 添加设备OnErrorGoToAddErrdatPrimaryRS.Recordset.AddNewExitSubAddErr:MsgBoxErr.DescriptionEndSub528库存报警模块实现表中设备巴过呈T5表中设备巴过呈T5主要程序PrivateSubCommand1_Click() 显示高于最大警戒库存的设备datPrimaryRS.RecordSource="select*from现有库存表where现有库存>最大库存datPrimaryRS.RefreshgrdDataGrid.RefreshIfdatPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"表中设备已过量!ElseMsgBox"没有设备库存过量!EndIfEndSubPrivateSubCommand2_Click() 显示低于于最小警戒库存的设备datPrimaryRS.RecordSource="select*from现有库存表where现有库存<最小库存"datPrimaryRS.RefreshgrdDataGrid.RefreshIfdatPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"表中设备库存量已过警戒线!请采购! !"ElseMsgBox"没有设备库存量过少!"EndIfEndsubPrivateSubTimer1_Timer()自动报警程序frmAlarm.datPrimaryRS.RecordSource="select*from现有库存表where现有库存>最大库存IIfrmAlarm.datPrimaryRS.RefreshIffrmAlarm.datPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"有设备库存超过警戒库存! "&vbCrLf&"请查看库存报警记录"Timerl.Enabled=FalsefrmAlarm.ShowExitSubEndIfEndSubPrivateSubTimer2_Timer()frmAlarm.datPrimaryRS.RecordSource="select*from现有库存表where现有库存<最小库存

frmAlarm.datPrimaryRS.RefreshIffrmAlarm.datPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"有设备库存低于警戒库存! "&vbCrLf&"请查看库存报警记录Timer2.Enabled=FalsefrmAlarm.ShowExitSubEndIfEndSub-!□!x|5.2.9-!□!x|•瞬作曰击张国菲||嶽三|干舍时*I■■03-5-20034-S张国菲||嶽三|干舍时*I■■03-5-20034-SU3-6-BD3-4-](103-5-1003-5-1003^5-1003-5-19操作曰志记录:8操作员丨1操作内操作员丨1操作内容区底D|操作时间H|五埴写撫作日志川'山1."IIIII■取消.退出主要程序填写日志记录PrivateSubCommand2_Click()填写日志记录IfText1.Text=""OrCombo1.Text=""OrCombo2.Text=""ThenMsgBox"请输入完整信息!ExitSubElsefrmLog.AdodcI.Recordset.Fields(”操作员")=Textl.TextfrmLog.AdodcI.Recordset.Fields(”操作内容")=Combol.TextfrmLog.AdodcI.Recordset.Fields(”操作时间")=Combo2.TextfrmLog.Adodc1.Recordset.MoveLastEndIfEndSubPrivateSubForm_Load() 设置填写时间DimSTRtimeAsStringSTRtime=Now()Combo2.Text=STRtimeCombo2.Addltem(STRtime)EndSub5.2.10还库操模块实现具体程序同出库

还库信息查询界面a还库佶启査谊设备号 口I诵钢入埶据03-4-503-6-S03-G-6E00I03-6-6430:41WQiBODI■sUISlcIc拓字萤名查询输人起妬时间编几绪克时问按

温馨提示

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

评论

0/150

提交评论