




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南理工大学计算机科学与技术学院课程设计报告2007—2008学年第2学期课程名称数据库设计设计题目仓库管理系统学生姓名毕科柯学号专业班级通信06-3指导教师申自浩2008年7
•
1问题描述1.1背景企业的物资供应管理往往是很复杂的,烦琐的。由于所掌握的物资种类众多,订货,管理,发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计计划报表繁多,因此物资管理必须实现计算机化,而且必须根据企业的具体情况制定相应的方案。根据当前的企业管理体制,一般物资供应管理系统,总是根据所掌握的物资类别,相应分成几个科室来进行物资的计划,订货,核销托收,验收入库,根据企业各个部门的需要来发放物资设备,并随时按期进行库存盘点,作台帐,根据企业领导和自身管理的需要按月,季度,年来进行统计分析,产生相应报表。为了加强关键物资,设备的管理,要定期掌握其储备,消耗情况,根据计划定额和实际消耗定额的比较,进行定额的管理,使得资金使用合理,物资设备的储备最佳。所以一个完整的企业物资供应管理系统应该包括计划管理,合同托收管理,仓库管理,定额管理,统计管理,财务管理等模块。其中仓库管理是整个物资供应管理系统的核心。1.2本组成员及本人任务本组成员:毕科柯,王国柠,傅强。本次设计主要对企业仓库管理进行设计,先是数据库设计,然后是系统的主要模块设计,本人主要设计系统的设备入库和设备出库两个模块。1.3数据需求在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的时间流程如图所示:仓库现有库存各部门需求企业总体生产计划汇总处理 设备采购 设备入库设备入库设备还库在本设计中,通过对企业仓库管理的内容和数据流程分析,设计的数据项和数据结构如下:设备代码信息。包括的数据项有设备号、设备名称。现有库存信息。包括的数据项有现有设备、现有数目、总数目、最大库存、最小库存等。设备使用信息。包括的数据项有使用的设备、使用部门、数目、使用时间、出库时状态。设备采购信息。包括的数据项有采购的设备、采购员、供应商、采购数目、采购时间等。设备归还信息。包括的数据项有归还设备、归还部门、归还数目、归还时间、经手人等。设备需求信息。包括的数据项有需求的部门、需求设备、需求数目、需求时间等。有了上面的数据结构、数据项和数据流程,就能进行下面的数据库设计。•
2数据库设计2.1数据库概念结构设计这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。本设计根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体、需求实体。各个实体的E-R图及其关系描述如下:1)库存实体E-R图:现有库存设备号现有库存警戒库存总数2)入库实体E-R图:入库设备号供应商信息采购价格信息采购员3)出库实体E-R图:出库设备号使用部门数量时间经手人4)部门需求实体E-R图:部门需求设备号需求部门需求数量需求时间5)还库实体E-R图:设备还库设备号还库时间人还库数量经手人6)计划采购实体E-R图:计划采购设备号库存信息供应信息时间7)实体和实体之间的关系E-R图如图所示:入库现有库存出库还库部门需求设备采购2.2数据库逻辑结构设计在上面的实体以及实体之间的关系的基础上,形成数据库中的表格以及各个表格之间的关系。仓库管理系统数据库中的各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。(1)设备代码表:列名数据类型可否为空设备号(主键)数值型(20)不能为空设备名称字符型(50)可为空(2)设备入库表:列名数据类型可否为空设备号数值型(20)不能为空入库时间(主键)日期型(8)可为空供应商字符型(50)可为空供应商电话字符型(15)可为空入库数量数值型(20)可为空价格字符型(10)可为空采购员字符型(20)可为空(3)设备出库表:列名数据类型可否为空设备号数值型(20)不能为空出库时间(主键)日期型(8)可为空使用部门字符型(50)可为空出库状况数值型(20)可为空经手人字符型(20)可为空出库数量数值型(10)不能为空领取人字符型(50)可为空用途字符型(50)可为空(4)现有库存表:列名数据类型可否为空设备号(主键)数值型(20)不能为空现有库存数值型(20)可为空最大库存数值型(20)可为空最小库存数值型(20)可为空总数数值型(20)可为空(5)部门需求表:列名数据类型可否为空设备号(主键)数值型(20)不能为空部门名称字符型(20)不能为空需要数量数值型(20)可为空需求开始时间日期型(8)可为空需求结束时间日期型(8)可为空(6)设备还库表:列名数据类型可否为空设备号(主键)数值型(20)不能为空还库时间日期型(8)不能为空仓库管理员数值型(20)可为空归还数量数值型(20)可为空归还人字符型(10)可为空(7)操作日志表:列名数据类型可否为空操作员字符型(50)不能为空操作内容字符型(50)不能为空操作时间日期型(8)可为空(8)设备采购计划表:列名数据类型可否为空设备号数值型(20)不能为空现有库存数值型(20)可为空总库存数值型(20)可为空最大库存数值型(20)可为空购买数量数值型(20)可为空供应商字符型(20)不能为空价格字符型(10)可为空计划采购时间(主键)日期型(8)可为空•3
数据库结构的实现在需求分析、概念结构设计的基础上得到数据库的逻辑结构设计之后,我们就可以在VisualFoxPro6.0数据库系统中实现该逻辑结构。打开如图所示的“仓库管理”项目后,在项目管理器中展开数据文本夹,用鼠标选中数据库,单击右侧的“新建”按钮,在弹出的对话框中将该数据库文件存储为c:\仓库管理\仓库管理.dbc。在弹出的如图所示的数据库设计器中单击鼠标右键,选择“新建表”,为数据库添加数据表(表的内容见上节)。下面以表设备代码表为例来介绍表的建立过程。选择“新建表”,在弹出的对话框中将表存储为c:\仓库管理\设备代码.dbf。在弹出的如图所示的表设计器中填写表的内容。字段设置完成后,单击“确定”按钮后为表输入数据,如不想现在输入,可以先“取消”,以后再输入。具体方法如下:如图所示,选中要输入数据的表,单击“浏览”按钮。此时弹出无数据的表,在VisualFoxPro6.0的主窗口中选择“表”,选择“追加新记录”后,就可以在表中输入数据了。如图所示。不过这种方法只能一次输入一条记录,如果要输入第二条记录时,需再次选择追加新记录。如果有一个已有的数据表,就可以使用“使用追加记录”将这个有数据的表追加到当前表中,不过执行该操作要求这二个表的结构完全相同。4系统主要功能模块的创建
按照前面的分析,我们将管理系统的逻辑模块统一到6个实际功能模块中,如图所示。切换面板用于切换不同的操作,每项具体操作结束后,都会返回到切换面板。切换面板设设设设设显备备备备备示入出还需采报库库库求购表下面对各模块的作用进行说明:设备入库模块:添加设备到库存中。设备出库模块:将设备从库存取出并记录。设备还库模块:将归并到库存的设备保存到数据库。设备需求模块:记录各部门的设备需求。设备采购模块:记录要采购的设备。切换面板:用于切换到不同的操作,如设备入库、设备出库等。显示报表:显示库存过多、库存不足等信息。下面就按照功能模块图来设计该仓库管理系统。首先在VisualFoxPro6.0中建立一个项目管理器,以便管理本系统中所有的数据,命名为“仓库管理”。一下操作均在该项目管理器中进行。以下所有表单的“desktop”属性全部设为“.T.-真”。4.1功能选择界面的设计:这一模块的主要功能是作为系统主界面为进入本系统不同功能界面选择提供一个接口,使用一个窗口来实现这一功能。首先建立一个表单,设取“caption”属性为“仓库管理”。在该表单上添加6个“按钮”控件,它们的“caption”属性分别为“设备入库”,“设备出库”,“设备还库”,“部门需求”,“设备采购”,“显示报表”。然后在表单上添加“图象控件”,并设其“stretch”属性为“2-strech(扩展)”,“pictrue”属性为图片所在的位置,本例中为“c:\仓库管理\001.jpg”。在“comm.and1”(“caption”属性为“设备入库”)控件的“click”事件中添加如下代码:doform设备入库表thisform.release在“comm.and2”(“caption”属性为“设备出库”)控件的“click”doform设备出库表thisform.release在“comm.and3”(“caption”属性为“设备还库”)控件的“click”doform设备还库表thisform.release在“comm.and4”(“caption”属性为“部门需求”)控件的“click”doform部门需求表thisform.release在“comm.and5”(“caption”属性为“设备采购”)控件的“click”事件中添加如下代码:doform设备采购表thisform.release在“comm.and6”(“caption”属性为“显示报表”)控件的“click”事件中添加如下代码:doform显示报表thisform.release在“form1”的属性里选择“autocenter”设置为“.T.-真”,同时将“backcolor”设置为“255,255,255”,“windowstate”设置为“0-普通”。添加“form1”的“init”事件的代码如下:setdirectorytoc:\仓库管理\*将程序的默认的路径指向资源所在的文件夹该表单设计结果如图所示:4.2设备入库模块的设计在设备入库模块中将实现设备数据的添加和入库等功能。本模块设计采用先用向导生成表单,然后修改的方法实现。首先在项目管理器的文档视图下单击“新建”按钮,在接下来的向导中,“数据库和表”选择“仓库管理”以及“设备入库表”,这是前面定义好的数据库和表。由于设备入库需要显示所有的字段,因此我们将可用字段全部移至选定字段,如图所示,单击“下一步”按钮,在表单样式中,选择“阴影式”以及“图片按钮”,如图所示。左上角的窗口提供了表单样式的预览功能,图片按钮和文本按钮的区别在于显示的时候是以图片来表达功能还是文字来表达,实现功能的函数没有区别。选择“上一步”按钮可以跳回上一个界面对表单中显示的字段进行修改。单击“下一步”按钮后,向导进行到“步骤3-排序次序”,如图所示,选择“设备号”为索引,并选择升序排列。最后预览表单,核对每项的设置,完成表单向导,如图所示。值得注意的是,在结束表单向导前,可选择“保存表单以备将来使用”,“保存并运行表单”,或者“保存表单并用表单设计器修改表单”。由于VisualFoxPro6.0向导生成的表单只具有普遍性,对于当前设计的仓库管理系统还需要一定的改变,因此以我们选择“保存表单并用表设计器修改表单”。单击“完成”按钮系统提示保存表单,将表单保存为“设备入库表.scx”,存于c:\仓库管理目录下。然后打开表单修改器生成的表单,如图所示。在修改BUTTONSET时,可以通过属性窗口的下拉列表选定单个按钮,调整其位置和其它属性。如图所示。根据功能需求,把“cmdprint”、“”cmdexit、“cmdDelete”和“cmdedit”的Visible属性都设为“.F.-假”。添加2个命令按钮,Caption属性分别设为“修改库存”和“回主界面”。在“回主界面”命令按钮的click事件中添加代码如下:thisform.releasedoform仓库管理在修改库存命令按钮的click事件中添加代码如下:select现有库存表setorderto设备号seekgetidiffound()update现有库存表set现有库存=(现有库存+getnum)where(设备号=getid) elseinsertinto现有库存表(设备号,现有库存,最大库存,最小库存);value(thisform.设备号1.text1.value,thisform.入库数量1.text1.value,1000,10)endifinsertinto操作日志表(操作员,操作内容,操作时间);values(thisform.采购员1.text1.value,'设备入库',date())保存后运行表单,界面如图所示:4.3设备出库模块的设计:在设备出库模块中将实现设备出库数据的添加和修改库存等功能。该模块的功能和设备入库的功能相似。具体操作可以参考设备入库模块的设计,设计最终的界面如图所示。在表单的左上角加上了显示当前时间的功能,添加标签label2的caption属性设为“当前时间”;添加label3的caption属性设为空;为当前表单的label3init事件添加如下代码:this.caption=dtoc(date())该模块具体实现过程不再一一详细说明。下面列出了表单中所用到控件的属性值。Form1控件的主要属性:属性名称属性值Caption设备出库表Autocenter.T.-真BackColor255.255.255(2)ButtonSet1控件的主要属性:控件名属性名称属性值cmdExitVisible.F.-假cmdDeleteVisible.F.-假cmdPrintVisible.F.-假cmdEditVisible.F.-假Command1Caption修改库存Command2Caption回主界面下面时设备出库表单中“修改库存”命令按钮的click事件的代码:select现有库存表*先在该表单的数据环境中添加现有库存表setorderto设备号seekgetid*在现有库存表中查找设备号等于getid的纪录iffound()update现有库存表;set现有库存=(现有库存-getnum)where(设备号=getid)*如果库存表中有该项设备,则更新库存表insertinto操作日志表(操作员,操作内容,操作时间);values(thisform.领取人1.text1.value,'设备出库',date())elsemessagebox("出错",1,"错误的设备号")endif其余四个模块由其他组员完成•
5系统的编译和运行5.1设置主文件用主图标标记的文件是用户在启动.app或者.exe时被调用的文件。它可以是一个表单、菜单或者程序,建议使用程序作为主文件。5.2构造主文件如果主文件是一个程序,它将调用应用程序框架中的各个功能组件,然后由这些组件调用应用程序的其余部分。如果要建立一个简单的主程序,可以按下列步骤进行。现设置应用环境界面。建立初始用户界面。建立事件循环。恢复环境,退出应用程序。为了避免无限循环,必须在READEVENTS命令之前安排CLEAREVENTS命令。可以在主菜单或者主表单中添加一个“退出”项,该项发出CLEAREVENTS命令。5.3在.app和.exe文件中包含和排除文件如果在发布的应用程序中不想再更改这些文件,可把它们放在项目中并设置为“包含”。那么这些文件变成只读的,不能修改。如果想修改这些文件,把它们放在项目中并设置为“排除”,然后作为独立文件随着应用程序一起发布。在默认情况下,VisualFoxPro6.0在嵌放的过程中排除了数据库、表格、成为.ff的c库文件和.app文件。建议除了一些特定的表格,最好不要包含这类文件。数据库和表格需要变化和添加,而如果编译后包含自.exe或者是.app文件中,由于这二个文件被创建后都是静态的,因此被包含的文件也是静态的和只读的。把数据库和表格包含在这些文件中很明显会带来问题。因为这些文件不能被包含在文件.exe或者是.app文件中,所以要在发布一个应用程序之前为这些文件做好准备。如要排除可修改的文件,首先在项目管理器中,选择可修改的文件,然后从“项目”菜单中选择“排除”命令。在一个文件被排除后,则在文件的左方加入一个排除符号。•
6结束语通过这次课程设计我学了很多知识,遇到问题要向会的的同学或者上网查询,在设计中学会了VisualFoxPro6.0的简单使用,虽然主要程序是参考网上到基本道理是了解的。参考文献作者.书名.出版社.出版日期李加福·VisualFoxPro6.0·北京·清华大学出版社·2004年6月2.周建成·FoxPro2.5命令与函数专辑·北京·人们邮电出版社·2004年7月3.梁杰、效英、殷咸青·Foxpro2.6forwindows使用详解·西安·西安电子科技大学出版社·2002年5月附录:主要控件的源代码清单:1:主程序源代码:SETTALKoffsetsysmenuoffsetcenton_screen.windowstate=2_screen.icon="icons\happy.ico"_screen.maxbutton=0_screen.minbutton=1_screen.closable=.f.modifywindowscreennocloseMODIFYWINDOWSCREENTITLE"仓库管理信息系统"ZOOMWINDOWSCREENMAXsetdefaulttodatadoform登录表单readeventsclearcloseallreturnendif2:登录表单的确定按钮控件的click源代码:locateforalltrim(用户名)==alltrim(bo1.value)andalltrim(密码)==alltrim(thisform.text1.value)if!eof()ifalltrim(级别)=="管理员"publicjb,usernamejb=1username=alltrim(bo1.value)elsepublicjb,usernamejb=0username=alltrim(bo1.value)endifdomenu.mprthisform.releasedoform仓库管理else#definemissmatch_loc"用户或口令错,请重新登录!"waitwindowmissmatch_loctimeout1bo1.value=''thisform.text1.value=''numcount=numcount+1ifnumcount=4numcount=0mess=messagebox("三次口令错,将退出程序!",4+16+2,"退出")cleareventreleasethisformendifendif3:密码修改表单的修改按钮的click事件源代码:ifempty(thisform.text4.value)mess=messagebox("用户名不能为空!",48,"警告")elseifempty(thisform.text1.value)mess=messagebox("旧密码不能为空!",48,"警告")elseifempty(thisform.text2.value)mess=messagebox("新密码不能为空!",48,"警告")elseifempty(thisform.text3.value)mess=messagebox("重复密码不能为空!",48,"警告")elseifalltrim(thisform.text2.value)<>alltrim(thisform.text3.value)orlen(alltrim(thisform.text2.value))<>len(alltrim(thisform.text3.value))mess=messagebox("二次密码不一致!",48,"警告")elselocateforalltrim(用户名)==alltrim(thisform.text4.value)andalltrim(密码)==alltrim(thisform.text1.value)ifeof()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论