物流管理系统毕业设计论文范文.pdf_第1页
物流管理系统毕业设计论文范文.pdf_第2页
物流管理系统毕业设计论文范文.pdf_第3页
物流管理系统毕业设计论文范文.pdf_第4页
物流管理系统毕业设计论文范文.pdf_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

物流管理系统 学院 专业 班级 学号 姓名 指导教师 教师职称 年月日 摘要 【摘要】 随着市场经济的高速发展,制造业、商业企业逐步接受着第三方物流服务。越来越多的企业 认识到物流企业外包是降低成本、提高服务水平的有效渠道。物流管理的特点是以客户为核心、 构建面向客户的业务流程支持各种形式、各种需求的现在企业中的业务模式。系统支持多形式客 户的数据共享、提高作业效率、监控整个流程、提供完整的货品、进行订单跟踪,并且特别关注 对各环节业务的监控及例外情况的监控。 【关键词】 客户 物流 物流管理系统 目录 摘要1 目录1 引言1 1系统分析2 1.1需求分析2 1.2可行性分析2 2总体设计2 2.1项目规划2 2.2系统功能结构图3 3详细设计3 3.1系统登录设计3 3.2车辆调度安排6 3.3托运申请单管理8 3.4货物托运管理11 3.5在途跟踪管理17 3.6信息查询20 附录 a参考文献.30 附录 b数据表结构.31 附录 c文件架构图.37 引言 在当今高速发展的信息社会,现代物流行业突飞猛进发展,伴随着我国国民经济连续多年 的高速增长,为现代物流发展创造了良好的条件。目前,我国各类物流企业有 14 万家左右,展 望整个 21 世纪,可以说现代物流业还将有更大的发展。 在发达国家,物流理论促使物流实践快速发展。经济全球化及现代物流业发展的系统化、 信息化、仓储运输的现代化和综合化等趋势,对我国物流业的发展提出了全方位的挑战。传统 物流行业的操作模式已经不适应现代的物流行业,如何缩短物流过程,降低产品库存,加速对 市场的反应,这是所有企业所面对的问题。本系统就是针对这些问题根据中小型企业的实际需 求而开发的一套物流管理系统。系统的开发能够帮助企业实现对物流全过程的优化调度和动态 控制,高效整合企业的物流业务,以全面提高经济效益和效率为目的,提供高效、实用、技术 的物流管理系统和运营手段。 物流管理系统是集现代运输、仓储配送、搬运、调度、跟踪为一体的网络系统,系统的开 发实现了商品从原料供应商、制造商、分销商到零售商再到消费者的各个环节的有机结合。 2 1系统分析 1.1需求分析 通过市场调查,要求本系统具有以下功能: 统一友好的操作界面,能保证系统的易用性。 规范、完善的基础信息设置。 灵活的报表设计及打印功能。 实现货物申请、托运、跟踪与验收的全过程。 全方位的信息查询功能。 系统日志详细记录各种操作,提供追查的有力依据。 完善的权限管理,增强系统的安全性。 强大的数据备份及恢复功能,保证系统数据的安全性。 1.2可行性分析 由于传统物流行业操作过程复杂,手续繁多,业务信息多,围绕这些信息的处理也很纷杂。 而且,物流行业竞争激烈,这种竞争,一方面表现在发展客户的市场开拓上,另一方面也存在 于收集处理信息的速度、广度和深度,以及在业务操作中对业务数据处理的准确性和严密性, 而更高层次上,还牵涉到公司决策层对整体业务的控制和协调。 物流管理系统从物流行业的实际需求出发,参照先进的物流理念和多家领先的物流公司实 际的运营流程开发而成,系统从完善的基础信息设置到货物的托运管理、在线跟踪,信息查询、 到最后各种报表的生成,清晰的业务流程,使操作人员能够按照流程清晰的进行实际的操作, 保证物流运作有序而高效的进行。 2总体设计 2.1项目规划 物流管理系统是一个典型的数据库管理系统,系统由基本信息设置、货物托运管理、信息 查询、报表管理、系统管理等模块组成,规划系统功能模块如下: 基本信息设置模块 该模块主要负责完成部门资料设置、职务信息设置、公司资料设置、员工资料设置、客户 资料设置、司机资料设置和车辆资料设置。 货物托运管理模块 该模块主要由车辆调度安排、托运申请单管理、货物托运单管理、货物验收单管理和车辆 配送跟踪记录单管理几部分组成。 信息查询模块 该模块由货物申请单查询、车辆调度信息查询、货物托运信息查询、货物托运验收查询和 车辆在途跟踪查询几部分组成。 报表管理模块 包括货物申请单报表、货物托运单报表和货物验收单报表 3 部分。 系统管理模块 3 包括查看日志、删除日志、用户管理、数据备份、数据恢复和系统数据清理几部分。 2.2系统功能结构图 物流管理系统的系统功能结构图如图 1 所示。 图 1系统功能结构图 3详细设计 3.1系统登录设计 系统登录主要用于对登录物流管理系统的用户进行安全性检查,以防止非法用户登录该系 统。根据给管理员分配的权限,登录用户可以根据自己所具有的权限操作系统中相应的功能。 在登录系统时验证操作员及其密码,主要通过 ado 控件中记录集(recordset)对象结合 if 语句判断用户选定的操作员及其输入的密码与数据库中的操作员和密码是否相同来实现,如果 相同则允许登录,并给予相应的权限,否则将不允许用户登录。 系统登录的运行结果如图 2 所示。 图 2系统登录窗体的运行结果 4 1窗体设计 (1)在工程中新建 1 个窗体,将窗体的名称设置为“frm_xtdl” ,borderstyle 属性设置为 “0-none” ,通过设置 picture 属性为窗体添加图片。 (2)在窗体上添加 adodc 控件,由于该控件属于 activex 控件,在使用之前必须从“部件” 对话框中添加到工具箱。添加方法如下: 在“工程”/“部件”对话框中勾选“microsoft ado data controls 6.0(sp4)”列表项,单击【确 定】按钮之后即可将 ado 控件添加到工具箱当中。 (3)在窗体中添加 1 个 combobox 控件和文本框控件,分别设置名称为 name 属性为 “cbx_name”和“txt_password” ,设置 borderstyle 属性为“0-none” ,将 combobox 控件的 text 属性设置为“mr” 。 (4)在窗体中添加 2 个 commandbutton 控件,分别将 name 属性设置为“cmd_ok”和 “cmd_cancel” ,caption 属性设置为“登录”和“取消” 。 登录窗体的设计结果如图 3 所示 图 3系统登录窗体的设计界面 2代码设计 在代码窗口的声明部分定义如下变量: dim itmx as listitem定义一个listitem对象 dim keyas string定义字符串变量 在窗体装载事件中,通过 ado 控件的 connectionstring 属性建立数据库连接,同时将所有 操作员的姓名添加到 cbx_name 控件当中,代码如下: private sub form_load() call whscreen调用获取屏幕分辨率的过程函数 使用代码连接数据库与数据表 adodc1.connectionstring = publicstr adodc1.recordsource = “select * from tb_user“ adodc1.refresh if adodc1.recordset.recordcount 0 then adodc1.recordset.movefirst cbx_name.clear在添加数据时,首先清空控件中的内容 do while adodc1.recordset.eof = false将操作员信息添加到listview控件当中 cbx_name.additem (adodc1.recordset.fields(“user_name“) adodc1.recordset.movenext loop end if if twidth 0 then mpassword = adodc1.recordset.fields(“user_mm“) if txt_password.text = mpassword then判断数据的密码是否正确 name1 = cbx_name.text frm_main.statusbar1.panels.item(2).text = “当前操作员: “ + adodc1.recordset.fields(“user_name“) frm_main.show通过身份验证则显示主窗体,登录到系统当中 unload me else msgbox “密码不正确,请您确认后重新输入“, , “提示信息“ txt_password.text = “ txt_password.setfocus end if else msgbox “对不起 没有此用户的信息“, , “提示信息“ cbx_name.text = “ txt_password.text = “ end if end if end sub 如果在输入密码的文本框中按下enter键,则将调用【确定】按钮的单击事件,判断登 录用户是否合法,代码如下所示。 private sub txt_password_keydown(keycode as integer, shift as integer) if keycode = 13 then call cmd_ok_click调用确定按钮的单击事件代码 end if end sub 3.2车辆调度安排 车辆调度安排是物流管理过程中的重要环节,物流公司在接到托运货物信息之后,首要的 6 问题是安排托运货物的车辆。在本系统当中通过车辆调度安排填写安排托运车辆的信息,然后 打印出车辆调度通知单,并将通知单发放到托运司机的手中,司机根据调度通知单上的信息执 行托运任务。 通过单击窗体中的 cmd_select 按钮选择车牌号码, 然后输入其他一些辅助的信息, 最后保存车辆调度安排信息。车辆调度安排模块的运行结果如图 4 所示。 图 4车辆调度安排窗体的运行结果 1窗体设计 (1)在工程中新建 1 个窗体,将窗体的名称设置为“frm_cldd” ,borderstyle 属性设置为 “1-fixed single” ,maxbutton 属性设置 false。 (2)在窗体上添加 1 个 toolbar 控件和 1 个 imagelist 控件。 (3)在窗体的 toolbar 控件上单击鼠标右键,在弹出的快捷菜单中选择“属性”项,在弹 出的“属性页”对话框中设置窗体的工具栏,设计完成的工具栏如图 5 所示。 (4)在窗体中添加 1 个 frame 控件,在 frame 控件上添加 1 个文本框控件数组,并为每个 文本框控件配置 1 个标签控件,并且设置相应的 caption 属性值,如图 5 所示。 (5)在窗体上添加 1 个 dtpicker 控件,命名为 dt1,用于输入或显示托运司机执行任务 的日期时间。 (6)在窗体上添加 1 个 ado 控件和 1 个 datagrid 控件,将 datagrid 控件的名称设置为 dgr_sjll,datasource 属性设置为 adodc1,allowupdate 属性值设置为 false。 (7)在窗体中添加 1 个标签控件,命名为 lbl_num。 (8) 在窗体上添加 1 个时钟控件 timer1, 在属性窗口中将控件的 interval 属性值设置为 60。 车辆调度安排窗体的设计结果如图 5 所示。 7 图 5车辆调度安排窗体的设计结果 2代码设计 工具栏中的控制按钮控制着窗体的各项操作,在 toolbar 控件 tbr_xxcz 的 buttonclick 事件 当中,通过选择 select case 语句的索引值(单击工具栏中的按钮执行相应的索引值)调用相应 的过程来完成添加、删除、修改和保存等操作的功能,保存过程事件的代码如下: private sub saves()保存信息的过程 if text1(0).text = “ or text1(3).text = “ then msgbox “重要信息不能为空值“, 48, “提示信息“ else adors.open “select * from tb_goods_cldd where cldd_cphm=“ + text1(0).text + “, cnn, adopenkeyset if adors.recordcount 0 then msgbox “该信息已经存在“, 48, “提示信息“ adors.close关闭记录集对象 else adors.close关闭记录集对象 c = msgbox(“确认保存信息吗“, 33, “提示信息“) if c = vbok then set adors = cnn.execute(“insert into tb_goods_cldd values(“ &txt_id & “,“ & text1(0)& “,“ & text1(1) & “,“ & text1(2) & “,“& text1(3) & “,“ & str(dt1.value) & “,“ & text1(4) & “,“ & text1(5)& “,“ & txt_bz & “)“) msgbox “数据保存成功“, 64, “提示信息“ else end if adodc1.recordsource = “select * from tb_goods_cldd order by cldd_id“ adodc1.refresh call dbgcon end if call tbr_cortrol(tbr_xxcz, true) end if end sub 用户自定义修改信息过程事件的代码如下: private sub edits()修改信息的过程 8 c = msgbox(“确认修改信息吗“, 33, “提示信息“) if c = vbok then set adors = cnn.execute(“update tb_goods_cldd set cldd_id=“ + txt_id + “,cldd_cphm=“ + text1(0) + “,cldd_czxm=“ + text1(1) + “,cldd_sjxm=“ + text1(2) + “,cldd_rwsj=“ + str(dt1.value) + “,cldd_phmc=“ + text1(4) + “,cldd_shdd=“ + text1(5) + “,cldd_bz=“ + txt_bz + “ where cldd_id=“ + txt_id.text + “) msgbox “数据修改成功“, 64, “提示信息“ adodc1.recordsource = “select * from tb_goods_cldd order by cldd_id“ adodc1.refresh strid = txt_id.text strtitle = text1(0).text call joinrz添加修改信息日志 call dbgcon else end if end sub 用户自定义删除信息过程事件的代码如下: private sub deletes()删除信息 c = msgbox(“确认删除该信息吗“, 17, “提示信息“) if c = vbok then on error resume next执行错误处理 set adors = cnn.execute(“delete tb_goods_cldd from tb_goods_cldd where cldd_id=“ + txt_id.text + “) adodc1.refresh刷新数据信息 end if for i = 0 to 5 text1(i).text = “ next i txt_bz.text = “ end sub 3.3托运申请单管理 在正式托运货物之前,需要进行托运货物申请,在进行托运货物申请时需要填写托运货物 申请单,托运申请单经过核对之后,才可以填写货物托运单进行托运货物。在托运申请单中记 录的托运货物的详细信息,以便托运货物时进行核对。 货物托运申请管理模块的运行结果如图 6 所示。 9 图 6货物托运申请管理模块运行结果 1窗体设计 (1)在工程中新建 1 个窗体,将窗体的名称设置为“frm_tysq” ,borderstyle 属性设置为 “1-fixed single” ,maxbutton 属性设置“false” 。 (2)在窗体上添加 1 个 toolbar 控件和 1 个 imagelist 控件,为窗体设计工具栏。 (3)在窗体中添加 1 个 frame 控件,在 frame 控件上添加 1 个文本框控件数组,并为每个 文本控件配置 1 个标签控件,设置相应的 caption 属性值,如图 7 所示。 (4)在 frame 控件上添加 2 个 dtpicker 控件,分别名称命名为 dt1 和 dt2,用于输入或 显示出货日期时间和开票日期。 (5)在窗体上添加 1 个 ado 控件。 (6)在窗体中添加 1 个标签控件,命名为 lbl_num。 (7) 在窗体上添加 1 个时钟控件 timer1, 在属性窗口中将控件的 interval 属性值设置为 60。 货物托运申请单管理窗体的设计结果如图 7 所示。 图 7货物托运管理窗体的设计结果 10 2代码设计 当窗体启动时,锁定窗体中文本框,禁止输入字符信息,同时通过 ado 控件的 connectionstring 属性连接到数据库,实现代码如下: private sub form_load() call loadfile在窗体加载的时候显示数据信息 for i = 1 to 20 text1(i).locked = true锁定文本框,禁止输入字符信息 next i adodc1.connectionstring = publicstr通过代码连接到数据库 adodc1.recordsource = “select * from tb_goods_sqd order by sqd_lszh“ adodc1.refresh dt1.value = date call tbr_cortrol(tbr_xxcz, true) end sub 单击窗体中的工具栏按钮,完成相应的添加、删除、修改、保存和打印的操作,toolbar 控 件 tbr_xxcz 的 buttonclick 事件代码如下所示: private sub tbr_xxcz_buttonclick(byval button as mscomctllib.button) select case button.index case 1添加信息 call tbr_cortrol(tbr_xxcz, false) for i = 0 to 20 text1(i).locked = false text1(i).text = “ next i text1(0).setfocus adors.open “select * from tb_goods_sqd where sqd_lszh like %“ + format(date, “yyyymmdd“) + “% order by sqd_lszh“, cnn, adopenkeyset根据日期产生流水账号 if adors.recordcount 0 then adors.movelast txt_id.text = val(adors.fields(“sqd_lszh“) + 1 else txt_id.text = format(date, “yyyymmdd“) & “0000001“ end if adors.close case 2删除信息 call deletes case 3修改信息 call edits case 4保存信息 call saves case 5 call tbr_cortrol(tbr_xxcz, true) for i = 1 to 20 text1(i).text = “ text1(1).setfocus next i case 6打印信息 unload me 11 end select end sub 通过文本框的 change 事件,来实现在另一个文本框中自动计算合计金额的功能,实现的具 体代码如下所示: private sub text1_change(index as integer) if index = 7 then text1(15).text = val(text1(7).text) + val(text1(11).text) elseif index = 11 then text1(15).text = val(text1(7).text) + val(text1(11).text) elseif index = 15 then text1(15).text = val(text1(7).text) + val(text1(11).text) end if end sub 3.4货物托运管理 货物托运管理是本系统的核心,在货物托运申请完成之后,就可以填写货物托运单,托运 司机根据货物托运单将货物托运到客户手中。对于同一张货物托运单,可以托运多种不同的货 物,在托运管理窗体中可以添加或删除托运货物,还可以通过 listview 控件浏览货物托运单信 息。 货物托运管理模块的运行结果如图 8 所示,单击工具栏中的【添加货物】按钮,将弹出增 加托运货物窗体,如图 9 所示。 图 8货物托运管理模块的运行结果 12 图 9增加托运货物窗体 1货物托运窗体及增加托运货物窗体的设计 (1)在工程中新建一个窗体,将窗体的名称设置为“frm_hpty” ,borderstyle 属性设置为 “1-fixed single” ,maxbutton 属性设置 false。 (2)在窗体上添加 toolbar 控件,根据前面所介绍的方法为窗体设计工具栏。 (3)在窗体中添加 2 个 imagelist 控件。 (4)在窗体上添加 1 个 listview 控件。 (5) 在 listview 控件上单击鼠标右键, 在弹出的快捷菜单中选择“属性” 项,在弹出的“属 性页”对话框中选择“通用”选项卡,在该选项卡中选取“整行选择” 、 “网格行”和“热跟踪” 等复选框,在“查看”旁的列表框中选择 3-lvwreport,如图 10 所示。 图 10设置控件的显示模式 (6)在 listview 控件上单击鼠标右键,在弹出的快捷菜单中选择“属性”项,在弹出“属 性页”对话框中选择“列首”选项卡,在该选项卡中单击【插入列】按钮,然后在“文本”文 本框中输入插入列的标题名称,在“宽度”文本框中输入插入列的宽度,如图 11 所示。 13 图 11设置插入列的属性 (7) 在 listview 控件上单击鼠标右键, 在弹出的快捷菜单中选择“属性” 项, 在弹出的“属 性页”对话框中选择“图像列表”选项卡,在该选项卡中的“普通”和“列标头”列表框中分 别选择“imagelist2” ,如图 12 所示。 图 12连接 imagelist2 控件 (8)在窗体上添加 1 个 ado 控件。 (9) 在窗体中添加 3 个 frame 控件, 分别在 frame 控件中添加文本框控件和 datagrid 控件, 将 datagrid 控件的名称设置为 dgr_sjll,datasource 属性设置为 adodc1,backcolor 属性值设置 为&h00ffffc0&,设计完成的界面如图 13 所示。 (10)在窗体中添加 1 个标签控件,名称命名为 lbl_num。 (11)在窗体上添加 1 个时钟控件 timer1,在属性窗口中将控件的 interval 属性值设置为 60。 货物托运管理窗体的设计结果如图 13 所示。 14 图 13货物托运管理窗体的设计界面 (12)在工程中添加 1 个窗体,将窗体命名为 frm_tyhwgl,该窗体作为货物托运管理的子 窗体,用于为完成为货物托运单添加托运货物的操作。 (13)将该窗体的 borderstyle 属性设置为“1-fixed single”。 (14)在该窗体上添加 1 个 ado 控件。 (15)在该窗体中添加 1 个 frame 控件,在 frame 控件中添加文本框控件和标签控件。 (16)在该窗体中添加 1 个 datagrid 控件,将 datagrid 控件的名称设置为 dgr_sjll, datasource 属性设置为 adodc1,设计完成的界面如图 14 所示。 (17)在窗体上添加 4 个 commandbutton 控件,分别将控件的名称命名为“cmd_add”、 “cmd_save” 、 “cmd_del” 、 “cmd_cancel” ,caption 属性设置为“添加” 、 “保存” 、 “删除” 、 “取 消” 。 图 14托运货物管理窗体的设计界面 2货物托运管理窗体的代码设计 在窗体启动时,通过调用 loadfile 过程,在窗体上显示数据,同时利用 ado 对象计算出当 前数据库中数据记录的条数,代码如下: private sub form_load() call refreshdata call loadfile for i = 1 to 21锁定文本框,禁止输入内容 15 text1(i).locked = true next i adors.open “select * from tb_goods_tyd order by tyd_tydh“, cnn, adopenkeyset if adors.recordcount 0 then lbl_num.caption = “当前数据表中共有 “ & adors.recordcount & “ 条记录“ end if adors.close call tbr_cortrol(tbr_xxcz, true) end sub 单击工具栏中的控制按钮,通过 select case 语句控制工具栏中的按钮,完成添加、删除、 修改、保存、添加货物和删除货物等操作,实现的代码如下: private sub tbr_xxcz_buttonclick(byval button as mscomctllib.button) select case button.index case 1 call tbr_cortrol(tbr_xxcz, false) for i = 0 to 21 text1(i).locked = false text1(i).text = “ next i text1(0).setfocus 根据日期产生流水账号 adors.open “select * from tb_goods_tyd where tyd_tydh like %“ + format(date, “yyyymmdd“) + “% order by tyd_tydh“, cnn, adopenkeyset if adors.recordcount 0 then adors.movelast txt_id.text = val(adors.fields(“tyd_tydh“) + 1 else txt_id.text = format(date, “yyyymmdd“) & “00001“ end if adors.close case 2删除信息 call deletes case 3修改信息 call edits case 4保存信息 call saves case 5 call tbr_cortrol(tbr_xxcz, true) for i = 1 to 21 text1(i).text = “ text1(1).setfocus next i case 6添加货物 tstrs = txt_id.text frm_tyhwgl.cmd_del.enabled = false 使添加货物窗体中的“删除”按钮不可用 frm_tyhwgl.show 1 case 7删除货物 16 tstrs = txt_id.text frm_tyhwgl.cmd_add.enabled = false frm_tyhwgl.cmd_save.enabled = false frm_tyhwgl.show 1 case 8 unload me end select end sub 通过单击选择 listview 控件中的元素(托运单号) ,然后调用 dataload 过程在窗体上显示 相对应托运单号的数据信息,同时查询该记录是否被修改过,如果修改过则将修改时间及修改 人信息显示在窗体的 txt_ysrq 和 txt_ysr 文本框当中,代码如下所示: private sub listview1_click() adors.open “select * from tb_goods_tyd where tyd_tydh=“ & listview1.selecteditem & “ order by tyd_tydh“, cnn, adopenkeyset if adors.recordcount 0 then call dataload调用显示数据的过程 end if adors.close关闭数据集对象 adors1.open “select * from tb_goods_khys where khys_tydh=“ & listview1.selecteditem & “, cnn, adopenkeyset if adors1.recordcount 0 then txt_ysrq.text = adors1.fields(“khys_ysrq“) txt_ysr.text = adors1.fields(“khys_ysr“) else txt_ysrq.text = “ txt_ysr.text = “ end if adors1.close call showdata调用数据刷新的过程 call dbgcon end sub 通过时钟控件,将当前数据库中的记录条数显示在标签控件 lbl_num 当中,实现的代码如 下所示: private sub timer1_timer() on error resume next执行错误处理的语句 lbl_num.caption = “当前数据表中共有 “ & adors.recordcount & “ 条记录“ end sub 3添加托运货物信息窗体的代码设计 在增加托运货物窗体中单击【添加】按钮,清空窗体中文本框的信息,代码如下: private sub cmd_add_click() for i = 1 to 4 text1(i).text = “ next i text1(1).setfocus end sub 在窗体中单击【保存】按钮,在确认该货物信息没有被保存之后,保存所添加的货物信息, 同时刷新窗体中的数据信息,代码如下: 17 private sub cmd_save_click() if text1(0).text = “ then msgbox “托运单号不能为空“, 64, “提示信息“ else adors.open “select * from tb_goods_hwzx where hwzx_hwid=“ + text1(1) + “, cnn, adopenkeyset if adors.recordcount 0 then msgbox “该货物已经添加过“, 64, “提示信息“ else c = msgbox(“确认保存信息吗“, 33, “提示信息“) if c = vbok then set adors = cnn.execute(“insert into tb_goods_hwzx values(“ & text1(1) & “,“ & text1(2) & “,“ & text1(0) & “,“ & text1(3) & “,“ & text1(4) & “)“) msgbox “数据保存成功“, 64, “提示信息“ adodc1.recordsource = “select * from tb_goods_hwzx where hwzx_sqdh=“ + text1(0) + “ order by hwzx_hwid“ adodc1.refresh call dbgcon cmd_add.setfocus end if end if adors.close end if end sub 3.5在途跟踪管理 在途跟踪是对正在托运的货物信息进行管理,托运司机在托运货物的过程中,每到一个地 方或者在托运过程中出现某些异常情况,就会给托运公司反馈一个信息,托运公司将反馈回来 的信息进行记录,并且对反馈回来的异常情况进行处理,这个过程就是在途跟踪。 在途跟踪管理模块的运行结果如图 15 所示。 图 15在途跟踪管理模块运行结果 18 1窗体设计 (1)在工程中新建 1 个窗体,将窗体的名称设置为“frm_ztgz” ,borderstyle 属性设置为 “1-fixed single” ,maxbutton 属性设置 false。 (2)在窗体上添加 1 个 toolbar 控件和 1 个 imagelist 控件。 (3)在窗体上添加 1 个 listview 控件。 (4)在窗体上添加 1 个 ado 控件。 (5)在窗体中添加 3 个 frame 控件,在 frame 控件中添加文本框控件,并设置控件的相关 属性。 (6)在窗体上添加 datagrid 控件,将 datagrid 控件的名称设置为 dgr_sjll,datasource 属 性设置为 adodc1。 在途跟踪管理窗体的设计结果如图 16 所示。 图 16在途跟踪管理窗体的设计 2代码设计 通过单击选择 listview 控件中的元素(托运单号) ,在窗体中即可以显示相对应托运单号的 数据信息,同时查询 tb_goods_ztgzlx 数据表,从中检索出该托运单号的跟踪路线信息,将其显 示在窗体的 txt_lx.文本框当中,实现的代码如下所示: private sub listview1_click() adors.open “select * from tb_goods_ztgz where ztgz_cydh=“ & listview1.selecteditem & “ order by ztgz_cydh“, cnn, adopenkeyset if adors.recordcount 0 then text1(0).text = adors.fields(“ztgz_id“) text1(1).text = adors.fields(“ztgz_cydh“) text1(2).text = adors.fields(“ztgz_sjxm“) text1(3).text = adors.fields(“ztgz_cphm“) dt1.value = adors.fields(“ztgz_dasj“) text1(4).text = adors.fields(“ztgz_sjsj“) text1(5).text = adors.fields(“ztgz_dadd“) text1(6).text = adors.fields(“ztgz_bz“) end if adors.close关闭记录集对象 adors1.open “select * from tb_goods_ztgzlx where ztgzlx_tydh=“ & listview1.selecteditem & “, cnn, adopenkeyset 19 if adors1.recordcount 0 then txt_lx.text = adors1.fields(“ztgzlx_lx“) end if adors1.close关闭记录集对象 adodc1.recordsource = “select * from tb_goods_ztgz where ztgz_cydh=“ + listview1.selecteditem + “ adodc1.refresh刷新数据信息 call dbgcon给datagrid控件的列标题赋值 end sub 在工具栏中单击【保存】按钮将调用用户自定义的保存过程,保存在途跟踪信息,用户自 定义的保存过程的代码如下: private sub saves()保存信息的过程 if text1(1).text = “ then msgbox “托运单号不能为空“, 48, “提示信息“ else adors2.open “select * from tb_goods_ztgz where ztgz_id=“ + text1(0) + “, cnn, adopenkeyset if adors2.recordcount 0 then msgbox “该信息已经存在“, 48, “提示信息“ else c = msgbox(“确认保存信息吗“, 33, “提示信息“) if c = vbok then set adors = cnn.execute(“insert into tb_goods_ztgz values(“ & text1(0) & “,“ & text1(1) & “,“ & text1(2) & “,“ & text1(3) & “,“ & text1(4) & “,“ & text1(5) & “,“ & str(dt1.value) & “,“ & text1(6) & “)“) adors.open “select * from tb_goods_ztgzlx where ztgzlx_tydh=“ + text1(1) + “, cnn, adopenkeyset if adors.recordcount 0 then call ddtj统计到达的路线 set adors = cnn.execute(“update tb_goods_ztgzlx set ztgzlx_lx=“ + txt_lx + “ where ztgzlx_tydh=“ + text1(1).text + “) else call ddtj统计到达的路线 set adors = cnn.execute(“insert into tb_goods_ztgzlx values(“ & text1(1) & “,“ & txt_lx & “)“) end if msgbox “数据保存成功“, 64, “提示信息“ end if adodc1.recordsource = “select * from tb_goods_ztgz order by ztgz_id“ adodc1.refresh call dbgcon call tbr_cortrol(tbr_xxcz, true) end if adors2.close end if call refreshdata end sub 20 在工具栏中单击【删除】按钮将调用用户自定义的删除过程,删除在途跟踪信息,用户自 定义删除在途跟踪过程的代码如下: private sub deletes()删除信息 c = msgbox(“确认删除该信息吗“, 17, “提示信息“) if c = vbok then on error resume next set adors = cnn.execute(“delete tb_goods_ztgz from tb_goods_ztgz where ztgz_id=“ + text1(0).text + “) adodc1.refresh刷新数据信息 call dbgcon end if for i = 1 to 5 text1(i).text = “ next i cbx_xb.text = “清除列表控件的内容 call refreshdata end sub 在保存在途跟踪信息的时候,需要调用用户自定义的 ddtj 过程,完成在文本框 txt_lx 中 显示跟踪路线信息的功能,ddtj 过程的实现代码如下: private sub ddtj() adors1.open “select * from tb_goods_ztgz where ztgz_cydh=“ + text1(1) + “, cnn, adopenkeyset if adors1.recordcount 0 then adors1.movefirst将数据库中的记录移向第一条 txt_lx.text = “ on error resume next执行错误处理 for i = 0 to adors1.recordcount if txt_lx.text = “ then txt_lx.text = “公司本部“ & “ & adors1.fields(“ztgz_dadd“) else txt_lx.text = txt_lx.text & “ & adors1.fields(“ztgz_dadd“) end if adors1.movenext将数据库中的记录移向下一条 next i end if adors1.close关闭记录集对象 end sub 3.6信息查询 在应用软件的设计过程中,将同一项功能设计到同一个窗体当中是非常必要的,这样会减 少应用程序中窗体的数量和代码数量,提高程序的运行速度,本系统当中的查询模块就是这样 设计的。通过在主窗体的查询模块的菜单中设置一个标识变量,然后在查询窗体中根据这个标 识变量设置具体实现的查询功能,如将托运申请单查询的标识变量设置为 1、车辆调度信息查询 的标识变量设置为 2 等等,这样在查询窗体当中,当窗体启动时进行判断,如果标识变量是 1, 则进行托运申请信息查询的相关操作, 如果标识变量是 2, 则进行车辆调度信息查询的相关操作。 信息查询模块的运行结果如图 17 所示(这里以货物托运单查询为例) 。 21 图 17信息查询模块运行结果 1窗体设计 (1)在工程中新建 1 个窗体,将窗体的名称设置为“frm_xxcx” ,borderstyle 属性设置为 “1-fixed single” ,maxbutton 属性设置 false。 (2)在窗体上添加 1 个 ado 控件,其名称为默认。 (3)在窗体中添加 1 个 frame 控件,在 frame 控件中添加 1 个 combobox 控件、1 个标签 控件、1 个文本框控件和 2 个 comma

温馨提示

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

评论

0/150

提交评论