物资管理信息系统设计--数据库课程设计.doc_第1页
物资管理信息系统设计--数据库课程设计.doc_第2页
物资管理信息系统设计--数据库课程设计.doc_第3页
物资管理信息系统设计--数据库课程设计.doc_第4页
物资管理信息系统设计--数据库课程设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告书题目: 物资管理信息系统 院 系: 专业班级: 组长学号、姓名: 其它组员学号、姓名: 指导教师: 2009年 4月 7 日目 录一、概述- 3 -1.1、项目背景:- 3 -1.2、编写目的:- 3 -1.3、项目名称:- 3 -1.4、开发环境:- 3 -二、需求分析- 3 -2.1、问题的提出:- 4 -2.2、需完成的功能:- 4 -三、数据库设计的过程- 4 -3.1、概念模型设计- 4 -3.2、逻辑数据库设计- 7 -3.3、规范化理论的应用- 7 -3.4、物理数据库设计- 7 -四、软件功能设计- 9 -4.1、系统功能分析- 9 -4.2 系统功能模块设计- 10 -五、程序代码及其它- 10 -5.1主窗口的设计- 10 -5.2 用户管理模块的设计- 13 -5.3 仓库管理模块的实现- 16 -5.4 物资管理- 24 -5.5 物质查询模块设计- 28 -5.6 数据统计模块设计- 34 -六、设计心得- 37 -七、查考文献- 38 -八、本项目组员分工及评分情况:- 38 -一、 概述1.1、项目背景: 物资管理信息系统是企业管理的一个重要内容,随着时代的进步,企业也逐渐变的庞大起来。如何管理好企业内部物质的信息,成为企业管理中的一个大问题。在这种情况下,一个可以规范化,自动化的物资管理信息系统就显得非常必要。最初的物资管理,都是靠人力来完成的。当企业规模比较小的时候,人力可以完成,随着企业的规模越来越大,企业的进出物资数量也越来越多,依然维持着人力进行物资管理,必然会造成工作效率低,工作错误增高的问题。物资管理信息系统就是把分散的企事业单位的职工信息实行统一,集中,规范的收集管理,建立分类编号管理,电脑存储查询以及防火,防潮,防蛀,防盗等现代化,专业化的管理系统,为企事业单位和职工解除后顾之忧。1.2、编写目的:物资管理信息系统是为了配合相关部门对自身本部门物资的管理,充分运用现代化信息技术手段高效、快捷的工作而开发的软件系统。物资管理信息系统为企事业单位提供信息咨询,信息检索,信息存取等服务。1.3、项目名称: 物资管理信息系统.1.4、开发环境: 本系统使用vb6.0作为前台设计和access管理数据库二、需求分析2.1、问题的提出: 物资管理是一般工业、商业企业生产管理环节中主要的一环,需要对物资基本信息管理,对物质调配信息等进行完整的监控,这样才能跟有效地利用物资。物资入库的时候首先需要登记物质的基本信息,包括物资的种类、名称、型号、单位、单价等;然后登记入、出库信息,包括物资的基本信息,入、出库人,经办人,物质数量,材料说明的等;对于仓库中的物资,即对剩余物资进行查询和统计。2.2、需完成的功能:l 有关物资基本信息的输入、包括物资编号、物资名称、规格型号、种类和计量单位等;l 物资基本信息的查询、修改;l 入库信息的输入、查询、修改;l 出库信息的输入、查询、修改;l 物质剩余物资的查询、预览,统计;三、数据库设计的过程3.1、概念模型设计 用户的需求具体体现在各种的信息的提供、保存、更新和查询等方面。这就要求数据库能够充分满足各种输入信息和输出信息。开发者要收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典。为下一步的数据库具体设计做好充分的准备。再仔细分析物资管理信息系统需求的基础上,将得到以下如图a1所示的本系统所处理的数据流程。 经过上面的分析可以提炼出以下几个实体:入库信息、出库信息、库存管理;他们的实体图如下:数 量进库单号码材料编号发票号码入库日期入库信息 经办人保管人入库信息实体图出库类型出库单号码材料编号工程号码出库日期出库信息 经办人保管人出库信息实体图工程号码材料编号材料修复余额统计材料维修库存信息 库存信息实体图在找出所有实体的基础上,需要进一步的分析各个实体之间的关系,经过分析可以的得到所有实体的er图;以下再通过er图来说明这些实体之间的关系:库存信息出库信息销 售入库信息登 记物质管理信息的er图3.2、逻辑数据库设计 针对物资管理信息系统的需求。通过对物资调配工作过程的内容和数据过程的分析,将设计如下面的数据项和数据结构:用户信息表,包括的数据项有:用户名、密码;入库物资信息表,包括的数据项有:进库单号码、材料编号、数量、单价。入库登记表,包括的数据项有:进库单号码、发票号码、进库日期、经办人、保管人。物资信息表,包括的数据项有:材料编号、材料名称、单位、型号、数量、单价。出库物资信息表,包括的数据项有:出库单号码、材料编号、数量、单价出库登记表,包括的数据项有:出库单号码、发票号码、出库日期、经办人、保管人、出库类型、工程号码。3.3、规范化理论的应用 在以上的逻辑分析中,我们不难得出这些关系转化都在第三范式中。3.4、物理数据库设计在完成了数据库的逻辑设计之后,即可开始数据库的物理设计。基于以上数据库逻辑设计,考虑到程序设计的简易性及通用性,本物资管理信息系统采用的access 2003数据库,并在其下创建了6个数据表。 物资信息表goods字段名 数据类型 字段长度与格式 关键字 材料编号 文本 15 是 材料名称 文本20否 单位 文本20否 型号 文本15否 数量 数字长整型否 备注 文本 50 否 入库物资信息表inlibdetail字段名 数据类型 字段长度与格式 关键字 进库单号码 文本 15 是 材料编号 文本 15是 数量 数字长整型否 单价 货币 yyy.0000否 备注 文本 50 否 入库登记表inlib字段名 数据类型 字段长度与格式 关键字 进库单号码 文本 15 是 发票号码 文本 15是 进库日期 日期型 yyyy-mm-dd否 经办人 文本 20否 保管人 文本 20否出库物资信息表outlibdetail字段名 数据类型 字段长度与格式 关键字 出库单号码 文本 15 是 材料编号 文本 15是 数量 数字长整型否 单价 货币 yyy.0000否 备注 文本 50 否 用户信息表used字段名 数据类型 字段长度与格式 关键字 用户名 文本 20 是 密码 文本 15否出库登记表outlib字段名 数据类型 字段长度与格式 关键字 出库单号码 文本 15 是 发票号码 文本 15是 进库日期 日期型长整型否 经办人 文本 20否 保管人 文本 20否 出库类型文本 15否工程号 文本 15否 四、软件功能设计4.1、系统功能分析系统开发的总体设计任务就是实现物质信息的系统化,规范化和自动化。系统功能分析是在系统开发总体任务的基础上进行的,本系统中需要的的主要功能有:u 添加用户;u 删除用户;u 修改用户密码;u 添加入库信息;u 编辑入库信息;u 添加出库信息;u 编辑出库信息;u 材料信息;u 材料入库信息查询;u 材料出库信息查询;u 仓库剩余材料信息查询;u 仓库中所有剩余材料价格信息查询;u 材料销售信息统计;u 设备修理成本统计;u 设备改造成本统计;u 工程成本的统计;4.2 系统功能模块设计五、程序代码及其它 5.1主窗口的设计option explicitprivate sub mdiform_activate() me.statusbar1.panels(3).text = 物资管理信息系统 me.caption = statusbar1.panels(3).textend subprivate sub mdiform_load() 放置背景文字 picture1.picture = loadpicture(app.path & back.jpg)end subprivate sub mdiform_resize() on error goto err1 picture1.scaletop = me.top picture1.scaleleft = me.left picture1.scalewidth = me.scalewidth picture1.scaleheight = me.scaleheight - statusbar1.height exit suberr1: exit subend subprivate sub mnuexit_click() unload meend subprivate sub mnuinadd_click() statusbar1.panels(3).text = 添加进库单 inadd.show 1end subprivate sub mnuinedit_click() statusbar1.panels(3).text = 编辑进库单 inupdate.show 1end subprivate sub mnumaterailinfo_click() statusbar1.panels(3).text = 材料基本信息管理 materialmanage.show 1end subprivate sub mnuoutadd_click() statusbar1.panels(3).text = 添加出库单 outadd.show 1end subprivate sub mnuoutedit_click() statusbar1.panels(3).text = 编辑出库单 outupdate.show 1end subprivate sub mnuprice_click() statusbar1.panels(3).text = 查询材料的最高价和最低价 pricequery.show 1end subprivate sub mnupricerepair_click() statusbar1.panels(3).text = 统计修理成本 totalrepair.show 1end subprivate sub mnupriceupdate_click() statusbar1.panels(3).text = 统计改造成本 totalrevise.show 1end subprivate sub mnupricework_click() statusbar1.panels(3).text = 统计特定工程的成本 totalproject.show 1end subprivate sub mnuqin_click() statusbar1.panels(3).text = 查询材料入库信息 inquery.show 1end subprivate sub mnuqout_click() statusbar1.panels(3).text = 查询材料出库信息 outquery.show 1end subprivate sub mnuqsub_click() statusbar1.panels(3).text = 查询仓库余额信息 surplus.show 1end subprivate sub mnuretail_click() statusbar1.panels(3).text = 统计销售额 totalsale.show 1end subprivate sub mnuuseradd_click() statusbar1.panels(3).text = 添加用户 useradd.show 1end subprivate sub mnuuserdelete_click() statusbar1.panels(3).text = 删除用户 userdel.show 1end subprivate sub mnuuserupdata_click() statusbar1.panels(3).text = 修改密码 userupdate.show 1end subprivate sub munchuku_click()statusbar1.panels(3).text = 打印物质出库报表datareport2.showdatareport2.printreport trueend subprivate sub munruku_click()statusbar1.panels(3).text = 打印物质入库报表datareport1.show 1datareport1.printreportend sub 5.2 用户管理模块的设计用户管理模块主要是实现l 修改密码;l 添加用户;l 删除用户;以下便是部分代码的实现/添加用户的代码private sub command1_click() if trim(text1.text = ) then msgbox 用户名不能为空,请输入用户名!, vbokonly + vbexclamation, 警告 text1.setfocus exit sub elseset myrs = mydb.openrecordset(select * from 登录 where 用户名= & trim(text1) & ) while (myrs.eof = false)if trim(myrs.fields(0) = trim(text1) then msgbox 用户已经存在,请重新输入用户名!, vbokonly + vbexclamation, 警告 text1.setfocus text1.text = text2.text = text3.text = exit sub else myrs.movenext end if wend end if if trim(text2.text) trim(text3.text) then msgbox 两次输入的密码不一样,请确认!, vbokonly + vbexclamation, 警告 text2.setfocus text2.text = text3.text = exit sub else if text2.text = then msgbox 密码不能为空!, vbokonly + vbexclamation, 警告 text2.setfocus text2.text = text3.text = else myrs.addnew myrs.fields(0) = trim(text1.text) myrs.fields(1) = trim(text2.text) myrs.update myrs.close mydb.close msgbox 添加用户成功!, vbokonly + vbexclamation, 信息提示 unload me end if end ifend subprivate sub command2_click() mydb.close myws.close unload me project.statusbar1.panels(2).text = 就绪end subprivate sub form_load() set myws = dbengine.workspaces(0) set mydb = myws.opendatabase(app.path + logo.mdb)end subprivate sub text1_keydown(keycode as integer, shift as integer) if keycode = 13 then text2.setfocus end ifend subprivate sub text2_keydown(keycode as integer, shift as integer) if keycode = 13 then text3.setfocus end ifend subprivate sub text3_keydown(keycode as integer, shift as integer) if keycode = 13 then command1.setfocus end ifend sub/修改用户密码private sub command1_click() set myrs = mydb.openrecordset(select * from 登录 where 用户名= + trim(list1) + and 密码= + trim(text1) + ) if myrs.eof = true then msgbox 旧密码不正确,请重新输入!, vbokonly + vbexclamation, 警告 text1.setfocus text1.text = text2.text = text3.text = exit sub end if if trim(text2.text) trim(text3.text) then msgbox 两次输入的密码不一样,请确认!, vbokonly + vbexclamation, 警告 text2.setfocus text2.text = text3.text = exit sub else if text2.text = then msgbox 密码不能为空!, vbokonly + vbexclamation, 警告 text2.setfocus text2.text = text3.text = else myrs.edit myrs.fields(1) = trim(text2.text) myrs.update myrs.close mydb.close msgbox 密码修改成功!, vbokonly + vbexclamation, 信息提示 unload me end if end ifend subprivate sub command2_click() mydb.close myws.close unload me project.statusbar1.panels(2).text = 就绪end subprivate sub form_load() dim mrc as recordset set myws = dbengine.workspaces(0) set mydb = myws.opendatabase(app.path + logo.mdb) set mrc = mydb.openrecordset(select * from 登录) list1.clear mrc.movefirst do while not mrc.eof list1.additem trim(mrc.fields(0) mrc.movenext loop list1.listindex = 0 mrc.closeend sub5.3 仓库管理模块的实现l 入库信息;l 出库信息; 以下便是部分代码的实现/入库信息 private sub cmdadd_click() dim count as integer, i as integer dim sqlstring as string dim mrc as recordset, mrcc as recordset dim num as integer, price as single if text1.text = then msgbox 进库单号码不能为空,请填写!, vbokonly + vbexclamation, 警告 text1.setfocus exit sub end if while myrs1.eof = false if myrs1.fields(进库单号码) = text1.text then msgbox 此进库单号码已经存在,请认真核查!, vbokonly + vbexclamation, 警告 text1.text = text2.text = text3.text = text4.text = text5.text = text1.setfocus exit sub else myrs1.movenext end if wend if text2.text = then msgbox 发票号码不能为空,请填写!, vbokonly + vbexclamation, 警告 text2.setfocus exit sub end if if text3.text = then msgbox 进库日期不能为空,请填写!, vbokonly + vbexclamation, 警告 text3.setfocus exit sub else if isdate(text3.text) then text3 = format(text3, yyyy-mm-dd) else msgbox 进库时间格式应为:yyyy-mm-dd, vbokonly + vbexclamation, 警告 text3.text = text3.setfocus exit sub end if end if if msflexgrid1.rows 1 then myrs1.addnew myrs1.fields(进库单号码) = text1.text myrs1.fields(发票号码) = text2.text myrs1.fields(进库日期) = text3.text if text4.text = then myrs1.fields(经办人) = null else myrs1.fields(经办人) = text4.text end if if text5.text = then myrs1.fields(保管人) = null else myrs1.fields(保管人) = text5.text end if myrs1.update count = msflexgrid1.rows for i = 1 to (count - 1) myrs2.addnew myrs2.fields(进库单号码) = text1.text myrs2.fields(材料编码) = msflexgrid1.textmatrix(i, 0) myrs2.fields(数量) = val(msflexgrid1.textmatrix(i, 4) if msflexgrid1.textmatrix(i, 5) = then myrs2.fields(单价) = null else myrs2.fields(单价) = val(msflexgrid1.textmatrix(i, 5) end if myrs2.fields(金额) = val(msflexgrid1.textmatrix(i, 6) if msflexgrid1.textmatrix(i, 7) = then myrs2.fields(备注) = null else myrs2.fields(备注) = msflexgrid1.textmatrix(i, 7) end if myrs2.update sqlstring = select * from msurplus where 材料编码= & msflexgrid1.textmatrix(i, 0) & set mrc = mydb.openrecordset(sqlstring) 如果材料余额表中没有当前材料编码的记录,就添加 if mrc.eof = true then mrc.close sqlstring = select * from msurplus set mrcc = mydb.openrecordset(sqlstring) mrcc.addnew mrcc.fields(材料编码) = msflexgrid1.textmatrix(i, 0) mrcc.fields(数量) = 0 if msflexgrid1.textmatrix(i, 5) = then mrcc.fields(单价) = null else mrcc.fields(单价) = msflexgrid1.textmatrix(i, 5) end if mrcc.fields(金额) = 0 mrcc.fields(备注) = null mrcc.update mrcc.close else mrc.close end if num = val(msflexgrid1.textmatrix(i, 4) price = val(msflexgrid1.textmatrix(i, 6) sqlstring = update msurplus set 数量=数量+ + cstr(num) + ,金额=金额+ + cstr(price) + where 材料编码= & msflexgrid1.textmatrix(i, 0) & mydb.execute (sqlstring) next i unload me project.statusbar1.panels(2).text = 就绪 exit subelsemsgbox 进库单中必须至少包含一项材料明细。 & vbcrlf & 此进库单中未填写材料信息,请填写。, vbokonly + vbexclamation, 警告 exit sub end ifend subprivate sub cmdaddrecord_click() project.statusbar1.panels(2).text = 添加进库信息 info.show 1end subprivate sub cmdeditrecord_click() dim c as integer dim r as integer c = 1 r = 1 text6.left = msflexgrid1.left + msflexgrid1.colpos(c) text6.top = msflexgrid1.top + msflexgrid1.rowpos(r) if msflexgrid1.appearance = 1 then text6.left = text6.left + 2 * screen.twipsperpixelx text6.top = text6.top + 2 * screen.twipsperpixely end if text6.width = msflexgrid1.colwidth(c) text6.height = msflexgrid1.rowheight(r) text6.visible = true text6.setfocus text6.text = msflexgrid1.textend subprivate sub form_activate() project.statusbar1.panels(2).text = 添加进库单end subprivate sub form_load() msflexgrid1.cols = 8 msflexgrid1.rows = 1 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 = 单价 msflexgrid1.col = 6 msflexgrid1.text = 金额 msflexgrid1.col = 7 msflexgrid1.text = 备注 text6.visible = false cmddelrecord.enabled = false cmdcancel.enabled = false text3.text = date set myws = dbengine.workspaces(0) set mydb = myws.opendatabase(app.path + store.mdb) set myrs1 = mydb.openrecordset(select * from inlib) set myrs2 = mydb.openrecordset(select * from inlibdetail)end sub/出库信息private sub cmdadd_click() dim count as integer, i as integer dim mrc as recordset dim sqlstring as string, str as string dim num as integer dim price as single if text1.text = then msgbox 出库单号码不能为空,请填写!, vbokonly + vbexclamation, 警告 text1.setfocus exit sub end if while myrs1.eof = false if myrs1.fields(0) = text1.text then msgbox 此出库单号码已经存在,请认真核查!, vbokonly + vbexclamation, 警告 text1.text = text2.text = text3.text = text4.text = text5.text = text6.text = combo1.listindex = 0 text1.setfocus exit sub else myrs1.movenext end if wend if text2.text = then msgbox 发票号码不能为空,请填写!, vbokonly + vbexclamation, 警告 text2.setfocus exit sub end if if text4.text = then msgbox 出库日期不能为空,请填写!, vbokonly + vbexclamation, 警告 text4.setfocus exit sub else if isdate(text4.text) then text4 = format(text4, yyyy-mm-dd) else msgbox 出库时间格式应为:yyyy-mm-dd, vbokonly + vbexclamation, 警告 text4.text =

温馨提示

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

评论

0/150

提交评论