1. 可行性分析
1.1快递背景
“快、准”是快递公司最大的特色, 更是快递企业赖以生存的保障。以计算机及网络为核心的管理技术为快递公司提供了很好的管理平台, 同时,RFID 技术的快捷、高效及资源共享等特性, 为公司管理带来了方便, 快递管理系统应运而生。信息化的推进和电子商务的迅速崛起, 快递在我国物流行业和社会经济发展中的地位越来越重要。快递企业的服务以快捷、及时为主要特征, 配送的科学性与合理性是其生存和发展的关键, 也是其应对竞争、开拓市场的基本途径。
我国快递行业起步晚, 存在诸多局限性, 如:企业规模小, 自动化程度低, 处理速度慢, 快件自动分拣技术落后; 专业物流人才不足, 对配送过程的效率和质量缺乏有效的控制; 配送模式单一, 配送时间和配送量没有科学依据, 物流成本不断增加, 服务质量提高缓慢。目前, 学者对快递配送的定量研究严重滞后于快递的发展速度, 能够真正帮助快递企业提供科学决策依据的方法比较少。
因此, 建立一个适合于一般快递企业配送过程的结合RFID 技术的派件管理系统, 进行快件收、货位分配、快件领取、快件查询等意义重大。
1.2校园快递调查
1.2.1校园快递存在的问题
(1)校园快递派件速度缓慢,派件时间较长
(2)校园快递的派件管理比较混乱,单据的记录不明晰 (3)校园快递的设备如PDA 等不能实时更新快递信息 (4)校园快递的时间安排不能按照学生作息时间安排 1.2.2快递使用数据:
(1)使用快递的频率:每月使用2次达64.5%;
(2)常使用哪些快递公司:申通83.3%、圆通46.6%、韵达46.6%
(3)海大快递量前三名:申通(200~300)、圆通(200~300)、韵达(100~300) (4)包裹总量每天大概:1000个,平均每天领快递人数:800个 1.2.3快递设备数据:
校园派件员一般和其他大公司合作,作为他们的一个区域代理,系统一定要使用上级公司的,设备也要按照他们的要求配置,使用专用的快递信封(和包装袋)、多层带背胶的票据、手持终端等、扫描仪、相机(处理问题件需拍照做证据)。运输工具准备微型车、货车等,仓库需监控设备,保障货物出进被影像记录。
1.3 RFID在快递派件应用
对物流业而言,全面使用RFID 意指在所有物流商品上贴上RFID 标签,多数业者也都希
望可以这么做,然而,由于RFID 标签价格仍然偏高、读取率无法达到100%等因素,包括联邦快递、UPS 等,至今仍然无法全面在物流商品上使用RFID ;多数都还停留在评估与测试阶段。
不过,尽管有多重障碍, RFID技术终有一天会在物流业普及应用。虽然现在还不具有高度的功能完备性,但通过我们的课程设计,结合了VISUAL BASIC和SQL 软件,系统全面考虑了校园快递派件的作业流程,进行了严格定义和逻辑程序编写,与实际业务紧密结合,使RFID 技术与实际快递的派件业务接轨。
1.4快递派件管理系统目标:
一般说来,本组校园快递派件管理系统功能包括两方面:一方面是快递管理信息系统中心,另一方面也是快递企业对外的查询处理系统。客户通过程序能与快递派件管理系统进行信息共享,提供动态信息交互和信息服务,并在此基础上实现对订单下达、实时查询等业务的支持。因此,系统应把开放性、协调性、有效性作为系统开发的总体目标。
快递信息平台必须适应快递设施的地域变化。时间上的可扩充性是指当用户需求、技术进步、企业组织结构随着时间的变化而变化时,系统能够对现有的某些功能模块进行改造或增加某些功能模块,以适应新的变化。
对内部人员,系统应当提供整体快递所需要的业务信息以及快递查询的支持界面和管理界面,对外,快递对客户主要提供快递查询信息以及作业进度信息反馈信息。
2. 系统分析部分
2.1业务流程图
:
图1. 收件流程
图2. 派件流程
2.2功能分析图
图3. 功能分析图
2.3数据流程图
图4. 数据流程图(顶层)
图5. 快件收取(第二层)
图6. 货位分配(第二层)
图7. 快件领取(第二层)
图8. 快件查询(第二层)
2.4数据字典
2.4.1外部实体
表1. 外部实体表
2.4.2数据元素
表2. 数据元素表
2.4.3数据流
表3. 数据流表
2.4.5数据储存
表4. 数据储存表
2.4.6过程
表5. 系统过程表
2.5数据加工处理的描述
2.5.1快件交接:
(1)各大快递公司将快件交给业务员(点数交接),数量确实多的,可以当业务员的面,逐个包裹进行扫描
(2)收件员清点快件数量并核对是否有外包装破损,分错件、地址错误、超范围、件数明显有误、到付价格明显有问题等异常快件
(3)校园派件员确认客户寄递的快件是否在我司可提供服务的范围内
(4)收件地址超出我司服务区域,但收件地址附近有我司服务网点,应询问客户是否愿意改 为自取件,并向客户详细介绍自取件操作流程。
(5)数量等信息确认无误后交接,双方在《派件表》上签名确认
图10. 快件接收决策树
2.5.2货位分配及操作 2.5.2.1货位分配:
(1)货区分为A 、B 、C3个货区
(2)A区有1-4号货架,B 区有5-8号货架,C 区有9-12号货架 (3)分配如下表
图11. 快递公司货架分配表
图12. 货物类别分配表
(4)货位编码举例说明
:
图13. 货物编码举例
2.5.2.2货位分配操作:
(1)将随货运单贴放在快件指定位置
(2)根据快件类型将各种贴纸按要求贴在快件的指定位置 (3)将运单完整单号写在运单下方的外包装处
(4)对于大件的包裹,按照体积大小存放于货架的指定区域
(5)对于正常大小的包裹,按照姓名排序,分放于货架A-Z 的货物格中
图14. 货位分配决策树
2.5.3快件派送与收件: 2.5.3.1收件工作
(1)确认托寄物品是否在我司规定的范围内业务员须向客户说明需进行托寄物品检查 (2)并在取得客户同意后,按要求对托寄物品进行全面检查 (3)如包装未达到标准,须要求客户改进包装 (4)指导客户填写相应运单内容
(5)检查客户填写的运单内容是否完整,若填写不完整的须指导客户补充相关的内容 (6)使用弹簧秤、卷尺测量快件的实际重量和轻抛重量,确定正确的计费重量
(7)如果大件,在客户处没有称重工具, 如客户同意将快件拉回公司称重,必须在第一时间将重量、运费告知客户, 如客户不同意将快件拉回公司称重,则只能将件退还给客户 (8)将需要业务员填写的运单内容填写完整:始发地、目的地、件数、重量、运费、工号、收件日期、时间、付款方式、托寄物详细资料 (9)运费结算
2.5.3.2派件工作
(10)客户确认运单信息,确认无误后须要求客户在 “收件件人签署或盖章”栏内签字确认,不得代替或伪造客户签字
(11)须将运单的“寄件公司存根”联交寄件客户留底,业务员留取“结账联”,其他几联运单随货
图15. 快件领取决策树
2.5.4快件查询:
(1)公司员工输入运单号,或者输入员工号进行查询
(2)客户根据快递单据的运单号码,在客户查询界面上输入运单号进行查询 (3)若输入不正确,系统提示可重新输入再次进行查询
(4)查询信息以表格的形式显示在用户查询界面上
图16. 快件查询决策树
3. 系统设计部分
3.1功能模块结构图设计
图17. 模块结构图
3.2模块结构图
3.2.1收件模块
图18. 输入模块结构图
3.2.2货位模块
图19. 货位模块结构图
3.2.3取件模块
图20. 取件模块结构图
(具体说明略,可以参考数据流程图)
3.2.4查询模块
图21. 查询模块结构图
(具体说明略,可以参考数据流程图)
3.3输入设计
3.3.1输入界面设计
图22. 收件人录入界面
图23. 收派件员信息录入界面
图24. 派件完成情况录入界面
图25. 收件清单录入界面
图26.RFID 信息录入界面
3.3.2输入设备选择
(1)终端输入:采用RFID 终端设备扫描包裹信息
(2)光电阅读器:采用光笔读入光学标记条形码或用扫描仪录入纸上文字 3.3.3输入数据正确性校验。
(1)对照校验:采用人工核对包裹的运单信息,核对信息正确性 (2)重复校对:由两名以上快递员通过RFID 终端读取信息后由程序核对 3.3.4输入设计的评价 (1)输入界面明晰、美观、大方 (2)便于填写,符合工作习惯 (3)便于操作
(4)有保证输入数据正确性的校验措施
3.4输出设计
3.4.1输出设计的内容 (1)包裹信息的状态情况 (2)包裹的接受者 (3)包裹信息的目的地 (4)包裹的派送员信息情况
(5)输出信息的时间地点 (6)包裹派送的运行时间长度 3.4.2输出信息内容
(1)输出项目的信息形式:文字、数字 (2)输出格式:表格、报告等
3.4.3输出设备和介质:设备如打印机、显示器等;介质如:磁盘、U 盘、纸张(普通、专用)等
3.4.4输出设计的方法
(1)系统输出的说明:表格信息。表格信息是系统对快递公司员工以及用户查询包裹信息时的输出,以表格的形式提供给信息使用者,用来表示详细的信息,能较为直观的表示包裹快递的信息
表6. 输出信息
图27. 输出信息
3.5 ER图及数据表
3.5.1ER 图
图28.ER 图 3.5.2数据表
图. 快递公司表
3.6存储文件格式设计
表7. 存储文件格式表
3.7数据库设计
图29. 数据库关系图
21
此系统的数据库设计十分详细,界面上每一个模块中的每一项功能基本都对应了一个基本表,没有数据冗余的现象,实现了表信息的查询。
例如:派件信息资源管理菜单下,我们可以查看一位员工的员工号等信息;在货位状态表中,可以查询货物存放位置、存放的状态等。
4系统实施部分
4.1程序框图
图30. 程序框图
4.2代码设计
4.2.1登陆界面
22
图31. 登陆界面
Private Sub cmdCancel_Click() LoginSucceeded = False Me.Hide End Sub
Private Sub cmdOK_Click()
If txtPassword = "1" And txtUserName = "SA" Then LibInfoSerSys.Show
LoginSucceeded = True Me.Hide Else
MsgBox "无效的密码,请重试!", , "登录" txtPassword.SetFocus SendKeys "{Home}+{End}" End If End Sub
4.2.2管理系统界面
23
图32. 管理系统界面
4.2.3收派件员信息界面
图33. 收派件员信息界面
Private Sub Command2_Click() Form2.Hide End Sub
Private Sub DataCombo1_Click(Area As Integer) Dim strquery As String
Adodc2.CommandType = adCmdText
strquery = "select * from 收派件员信息 where 收派件员信息. 工号=" & DataCombo1.BoundText
Adodc2.RecordSource = strquery Adodc2.Refresh
Set DataGrid1.DataSource = Adodc2 End Sub
4.2.4收件人信息界面
24
图34. 收件人信息界面
Private Sub Command2_Click() Form3.Hide End Sub
Private Sub DataCombo1_Click(Area As Integer) Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 收件人信息 where 收件人信息. 电话号码=" & DataCombo1.BoundText
Adodc1.RecordSource = strquery Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1 End Sub
4.2.5收件清单录入
25
图35. 收件清单录入
Private Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Adodc1.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _
Adodc1.Recordset.RecordCount End Sub
Private Sub Command1_Click() Adodc1.Recordset.AddNew Text1.SetFocus End Sub
Private Sub Command2_Click() Dim msg As String
msg = MsgBox("确定要删除该项记录吗?", vbQuestion + vbYesNo, "提示") If msg = vbYes Then
With Adodc1.Recordset .Delete .MoveNext
If .BOF = True Then .MoveLast End If End With End If
End Sub
26
Private Sub Command3_Click() Adodc1.Recordset.Update End Sub
Private Sub Command4_Click() End
End Sub
Private Sub Command5_Click() Adodc1.Recordset.MoveFirst End Sub
Private Sub Command6_Click() Adodc1.Recordset.MoveLast End Sub
Private Sub Command7_Click() With Adodc1.Recordset .MovePrevious
If .BOF = True Then .MoveFirst End If End With End Sub
Private Sub Command8_Click() With Adodc1.Recordset .MoveNext
If .BOF = True Then .MoveLast End If End With End Sub
4.2.6货位状态信息
27
图36. 货位状态信息
Private Sub Command1_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位状态信息表 where 货架号 like 'A%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command2_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位状态信息表 where 货架号 like 'B%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command3_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位状态信息表 where 货架号 like 'C%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command4_Click() Form6.Hide
28
图37. 货位状态信息
Private Sub Command1_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A01%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command10_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B06%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command11_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B07%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command12_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
29
strquery = "select * from 货位分配表 where 货位号 like 'B08%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command13_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C09%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command14_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C10%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command15_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C11%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command16_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C12%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command2_Click() Form11.Hide End Sub
Private Sub Command3_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
30
strquery = "select * from 货位分配表 where 货位号 like 'A02%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command4_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A%'"
Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command5_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B%'"
Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command6_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C%'"
Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command7_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A03%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command8_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A04%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command9_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B05%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
4.2.7派件情况
图38. 派件情况
Private Sub Command2_Click()
Form8.Hide
End Sub
Private Sub DataCombo1_Click(Area As Integer)
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 派件完成情况表 where 派件完成情况表. 运单=" & DataCombo1.BoundText
Adodc1.RecordSource = strquery
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
4.2.8查询统计
图39. 查询统计
Private Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Adodc1.Caption = " 记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _ Adodc1.Recordset.RecordCount
End Sub
Private Sub Adodc2_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Adodc2.Caption = " 记录:" & Adodc2.Recordset.AbsolutePosition & "/" & _ Adodc2.Recordset.RecordCount
End Sub
4.2.9收件清单
图40. 收件清单
Private Sub Command1_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 收件清单 where 收件清单. 运单号=" & DataCombo1.BoundText
Adodc1.RecordSource = strquery
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
Private Sub Command2_Click()
Form14.Hide
End Sub
实践心得 这个短学期我们做了系统的设计,感觉受益不浅。首先,我们经过对题目的深入分析和老师的悉心指导下,对校园快递系统进行了初步的了解和基本设计思路。我们的目的就是为了以最便捷的派件方式,运送和配送到指定的目的地或学生手中。经过我们的讨论和尝试以及整个团队的配合,成员间的互相合作,我们做出了我们比较满意的系统。经过一个多星期的课程设计,收获颇多。也经过课程设计才使我们明白做程序需要的东西是很多的,你既要懂程序而且还要有耐心和恒心。课程设计是对我的一次全面的测试,它既锻炼了我的动手的能力也磨练了我的心理素质。
在课程设计中,我们组所选择的是设计一个校园快件派件管理系统,需要运用到VB 、SQL 以及管理信息系统的诸多知识,并结合RFID 条码的读取。这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。现在利用自己学到的知识设计并制作一个校园快件派件管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋,不同程度的投入了很高的热情与努力。在具体的设计与实施中,我们看到并感受到了一个校园快件派件管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。
在设计中我们基本能按照规范的方法和步骤进行,首先对现有的校园快递情况进行调查,并查阅有关资料,进行系统详细的分析,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到制定详细的系统分析计划和设计计划的重要性。由于缺乏相关的管理系统设计经验,我们制作系统的过程中,方法不太成熟,一些步骤出现错误,但经过修改,已经完成了任务。
在这次课程设计中,我们被分配以小组为单位去完成校园快件派件管理系统的设计与制作,所以小组内的分工和相互协调很重要,大家可以在分工中扬长避短,个及所长,这样可以很好的提高大家的积极性,和合作意识,并有效的缩短开发时间。不足之处就是我们在沟通这方面做的还不够,有时候制作系统时效率不高,导致时间浪费。若今后有类似的课程设计,相信通过此次经验,我们会做得更好。
通过这次的设计,我们小组学到了很多,同时也学会了细心与耐心的培养。我想这在将来的工作和学习中都将起到很大的帮助。更多的是团队的合作不仅是一个能够更好的完成任务的前提,同时也使我明白了如何与他人配合,如何与他人相处。
各成员的具体分工:
宋亚培(组长)———VB 系统设计与数据库设计
雷李念慈——————报告和PPT
陈宇辉———————数据库设计和报告
李坚————————报告和PPT
参考资料
[1]李玉林,Visual Basic毕业设计指南与项目实践[M],北京:科学出版社,2008
[2]刘仲英、薛华成,管理信息系统,[M],北京:高等教育出版社,2010
[3]谭浩强,Visual Basic6.0程序设计案例教程[M],北京:清华大学出版社,2009
[4]王彪,数据库应用系统开发---SOL Server+ Visual Basic案例驱动教程[M],北京:清华大学出版社,2010
1. 可行性分析
1.1快递背景
“快、准”是快递公司最大的特色, 更是快递企业赖以生存的保障。以计算机及网络为核心的管理技术为快递公司提供了很好的管理平台, 同时,RFID 技术的快捷、高效及资源共享等特性, 为公司管理带来了方便, 快递管理系统应运而生。信息化的推进和电子商务的迅速崛起, 快递在我国物流行业和社会经济发展中的地位越来越重要。快递企业的服务以快捷、及时为主要特征, 配送的科学性与合理性是其生存和发展的关键, 也是其应对竞争、开拓市场的基本途径。
我国快递行业起步晚, 存在诸多局限性, 如:企业规模小, 自动化程度低, 处理速度慢, 快件自动分拣技术落后; 专业物流人才不足, 对配送过程的效率和质量缺乏有效的控制; 配送模式单一, 配送时间和配送量没有科学依据, 物流成本不断增加, 服务质量提高缓慢。目前, 学者对快递配送的定量研究严重滞后于快递的发展速度, 能够真正帮助快递企业提供科学决策依据的方法比较少。
因此, 建立一个适合于一般快递企业配送过程的结合RFID 技术的派件管理系统, 进行快件收、货位分配、快件领取、快件查询等意义重大。
1.2校园快递调查
1.2.1校园快递存在的问题
(1)校园快递派件速度缓慢,派件时间较长
(2)校园快递的派件管理比较混乱,单据的记录不明晰 (3)校园快递的设备如PDA 等不能实时更新快递信息 (4)校园快递的时间安排不能按照学生作息时间安排 1.2.2快递使用数据:
(1)使用快递的频率:每月使用2次达64.5%;
(2)常使用哪些快递公司:申通83.3%、圆通46.6%、韵达46.6%
(3)海大快递量前三名:申通(200~300)、圆通(200~300)、韵达(100~300) (4)包裹总量每天大概:1000个,平均每天领快递人数:800个 1.2.3快递设备数据:
校园派件员一般和其他大公司合作,作为他们的一个区域代理,系统一定要使用上级公司的,设备也要按照他们的要求配置,使用专用的快递信封(和包装袋)、多层带背胶的票据、手持终端等、扫描仪、相机(处理问题件需拍照做证据)。运输工具准备微型车、货车等,仓库需监控设备,保障货物出进被影像记录。
1.3 RFID在快递派件应用
对物流业而言,全面使用RFID 意指在所有物流商品上贴上RFID 标签,多数业者也都希
望可以这么做,然而,由于RFID 标签价格仍然偏高、读取率无法达到100%等因素,包括联邦快递、UPS 等,至今仍然无法全面在物流商品上使用RFID ;多数都还停留在评估与测试阶段。
不过,尽管有多重障碍, RFID技术终有一天会在物流业普及应用。虽然现在还不具有高度的功能完备性,但通过我们的课程设计,结合了VISUAL BASIC和SQL 软件,系统全面考虑了校园快递派件的作业流程,进行了严格定义和逻辑程序编写,与实际业务紧密结合,使RFID 技术与实际快递的派件业务接轨。
1.4快递派件管理系统目标:
一般说来,本组校园快递派件管理系统功能包括两方面:一方面是快递管理信息系统中心,另一方面也是快递企业对外的查询处理系统。客户通过程序能与快递派件管理系统进行信息共享,提供动态信息交互和信息服务,并在此基础上实现对订单下达、实时查询等业务的支持。因此,系统应把开放性、协调性、有效性作为系统开发的总体目标。
快递信息平台必须适应快递设施的地域变化。时间上的可扩充性是指当用户需求、技术进步、企业组织结构随着时间的变化而变化时,系统能够对现有的某些功能模块进行改造或增加某些功能模块,以适应新的变化。
对内部人员,系统应当提供整体快递所需要的业务信息以及快递查询的支持界面和管理界面,对外,快递对客户主要提供快递查询信息以及作业进度信息反馈信息。
2. 系统分析部分
2.1业务流程图
:
图1. 收件流程
图2. 派件流程
2.2功能分析图
图3. 功能分析图
2.3数据流程图
图4. 数据流程图(顶层)
图5. 快件收取(第二层)
图6. 货位分配(第二层)
图7. 快件领取(第二层)
图8. 快件查询(第二层)
2.4数据字典
2.4.1外部实体
表1. 外部实体表
2.4.2数据元素
表2. 数据元素表
2.4.3数据流
表3. 数据流表
2.4.5数据储存
表4. 数据储存表
2.4.6过程
表5. 系统过程表
2.5数据加工处理的描述
2.5.1快件交接:
(1)各大快递公司将快件交给业务员(点数交接),数量确实多的,可以当业务员的面,逐个包裹进行扫描
(2)收件员清点快件数量并核对是否有外包装破损,分错件、地址错误、超范围、件数明显有误、到付价格明显有问题等异常快件
(3)校园派件员确认客户寄递的快件是否在我司可提供服务的范围内
(4)收件地址超出我司服务区域,但收件地址附近有我司服务网点,应询问客户是否愿意改 为自取件,并向客户详细介绍自取件操作流程。
(5)数量等信息确认无误后交接,双方在《派件表》上签名确认
图10. 快件接收决策树
2.5.2货位分配及操作 2.5.2.1货位分配:
(1)货区分为A 、B 、C3个货区
(2)A区有1-4号货架,B 区有5-8号货架,C 区有9-12号货架 (3)分配如下表
图11. 快递公司货架分配表
图12. 货物类别分配表
(4)货位编码举例说明
:
图13. 货物编码举例
2.5.2.2货位分配操作:
(1)将随货运单贴放在快件指定位置
(2)根据快件类型将各种贴纸按要求贴在快件的指定位置 (3)将运单完整单号写在运单下方的外包装处
(4)对于大件的包裹,按照体积大小存放于货架的指定区域
(5)对于正常大小的包裹,按照姓名排序,分放于货架A-Z 的货物格中
图14. 货位分配决策树
2.5.3快件派送与收件: 2.5.3.1收件工作
(1)确认托寄物品是否在我司规定的范围内业务员须向客户说明需进行托寄物品检查 (2)并在取得客户同意后,按要求对托寄物品进行全面检查 (3)如包装未达到标准,须要求客户改进包装 (4)指导客户填写相应运单内容
(5)检查客户填写的运单内容是否完整,若填写不完整的须指导客户补充相关的内容 (6)使用弹簧秤、卷尺测量快件的实际重量和轻抛重量,确定正确的计费重量
(7)如果大件,在客户处没有称重工具, 如客户同意将快件拉回公司称重,必须在第一时间将重量、运费告知客户, 如客户不同意将快件拉回公司称重,则只能将件退还给客户 (8)将需要业务员填写的运单内容填写完整:始发地、目的地、件数、重量、运费、工号、收件日期、时间、付款方式、托寄物详细资料 (9)运费结算
2.5.3.2派件工作
(10)客户确认运单信息,确认无误后须要求客户在 “收件件人签署或盖章”栏内签字确认,不得代替或伪造客户签字
(11)须将运单的“寄件公司存根”联交寄件客户留底,业务员留取“结账联”,其他几联运单随货
图15. 快件领取决策树
2.5.4快件查询:
(1)公司员工输入运单号,或者输入员工号进行查询
(2)客户根据快递单据的运单号码,在客户查询界面上输入运单号进行查询 (3)若输入不正确,系统提示可重新输入再次进行查询
(4)查询信息以表格的形式显示在用户查询界面上
图16. 快件查询决策树
3. 系统设计部分
3.1功能模块结构图设计
图17. 模块结构图
3.2模块结构图
3.2.1收件模块
图18. 输入模块结构图
3.2.2货位模块
图19. 货位模块结构图
3.2.3取件模块
图20. 取件模块结构图
(具体说明略,可以参考数据流程图)
3.2.4查询模块
图21. 查询模块结构图
(具体说明略,可以参考数据流程图)
3.3输入设计
3.3.1输入界面设计
图22. 收件人录入界面
图23. 收派件员信息录入界面
图24. 派件完成情况录入界面
图25. 收件清单录入界面
图26.RFID 信息录入界面
3.3.2输入设备选择
(1)终端输入:采用RFID 终端设备扫描包裹信息
(2)光电阅读器:采用光笔读入光学标记条形码或用扫描仪录入纸上文字 3.3.3输入数据正确性校验。
(1)对照校验:采用人工核对包裹的运单信息,核对信息正确性 (2)重复校对:由两名以上快递员通过RFID 终端读取信息后由程序核对 3.3.4输入设计的评价 (1)输入界面明晰、美观、大方 (2)便于填写,符合工作习惯 (3)便于操作
(4)有保证输入数据正确性的校验措施
3.4输出设计
3.4.1输出设计的内容 (1)包裹信息的状态情况 (2)包裹的接受者 (3)包裹信息的目的地 (4)包裹的派送员信息情况
(5)输出信息的时间地点 (6)包裹派送的运行时间长度 3.4.2输出信息内容
(1)输出项目的信息形式:文字、数字 (2)输出格式:表格、报告等
3.4.3输出设备和介质:设备如打印机、显示器等;介质如:磁盘、U 盘、纸张(普通、专用)等
3.4.4输出设计的方法
(1)系统输出的说明:表格信息。表格信息是系统对快递公司员工以及用户查询包裹信息时的输出,以表格的形式提供给信息使用者,用来表示详细的信息,能较为直观的表示包裹快递的信息
表6. 输出信息
图27. 输出信息
3.5 ER图及数据表
3.5.1ER 图
图28.ER 图 3.5.2数据表
图. 快递公司表
3.6存储文件格式设计
表7. 存储文件格式表
3.7数据库设计
图29. 数据库关系图
21
此系统的数据库设计十分详细,界面上每一个模块中的每一项功能基本都对应了一个基本表,没有数据冗余的现象,实现了表信息的查询。
例如:派件信息资源管理菜单下,我们可以查看一位员工的员工号等信息;在货位状态表中,可以查询货物存放位置、存放的状态等。
4系统实施部分
4.1程序框图
图30. 程序框图
4.2代码设计
4.2.1登陆界面
22
图31. 登陆界面
Private Sub cmdCancel_Click() LoginSucceeded = False Me.Hide End Sub
Private Sub cmdOK_Click()
If txtPassword = "1" And txtUserName = "SA" Then LibInfoSerSys.Show
LoginSucceeded = True Me.Hide Else
MsgBox "无效的密码,请重试!", , "登录" txtPassword.SetFocus SendKeys "{Home}+{End}" End If End Sub
4.2.2管理系统界面
23
图32. 管理系统界面
4.2.3收派件员信息界面
图33. 收派件员信息界面
Private Sub Command2_Click() Form2.Hide End Sub
Private Sub DataCombo1_Click(Area As Integer) Dim strquery As String
Adodc2.CommandType = adCmdText
strquery = "select * from 收派件员信息 where 收派件员信息. 工号=" & DataCombo1.BoundText
Adodc2.RecordSource = strquery Adodc2.Refresh
Set DataGrid1.DataSource = Adodc2 End Sub
4.2.4收件人信息界面
24
图34. 收件人信息界面
Private Sub Command2_Click() Form3.Hide End Sub
Private Sub DataCombo1_Click(Area As Integer) Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 收件人信息 where 收件人信息. 电话号码=" & DataCombo1.BoundText
Adodc1.RecordSource = strquery Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1 End Sub
4.2.5收件清单录入
25
图35. 收件清单录入
Private Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Adodc1.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _
Adodc1.Recordset.RecordCount End Sub
Private Sub Command1_Click() Adodc1.Recordset.AddNew Text1.SetFocus End Sub
Private Sub Command2_Click() Dim msg As String
msg = MsgBox("确定要删除该项记录吗?", vbQuestion + vbYesNo, "提示") If msg = vbYes Then
With Adodc1.Recordset .Delete .MoveNext
If .BOF = True Then .MoveLast End If End With End If
End Sub
26
Private Sub Command3_Click() Adodc1.Recordset.Update End Sub
Private Sub Command4_Click() End
End Sub
Private Sub Command5_Click() Adodc1.Recordset.MoveFirst End Sub
Private Sub Command6_Click() Adodc1.Recordset.MoveLast End Sub
Private Sub Command7_Click() With Adodc1.Recordset .MovePrevious
If .BOF = True Then .MoveFirst End If End With End Sub
Private Sub Command8_Click() With Adodc1.Recordset .MoveNext
If .BOF = True Then .MoveLast End If End With End Sub
4.2.6货位状态信息
27
图36. 货位状态信息
Private Sub Command1_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位状态信息表 where 货架号 like 'A%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command2_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位状态信息表 where 货架号 like 'B%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command3_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位状态信息表 where 货架号 like 'C%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command4_Click() Form6.Hide
28
图37. 货位状态信息
Private Sub Command1_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A01%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command10_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B06%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command11_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B07%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command12_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
29
strquery = "select * from 货位分配表 where 货位号 like 'B08%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command13_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C09%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command14_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C10%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command15_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C11%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command16_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C12%'" Adodc1.RecordSource = strquery Adodc1.Refresh End Sub
Private Sub Command2_Click() Form11.Hide End Sub
Private Sub Command3_Click() Dim strquery As String
Adodc1.CommandType = adCmdText
30
strquery = "select * from 货位分配表 where 货位号 like 'A02%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command4_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A%'"
Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command5_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B%'"
Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command6_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'C%'"
Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command7_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A03%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command8_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'A04%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
Private Sub Command9_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 货位分配表 where 货位号 like 'B05%'" Adodc1.RecordSource = strquery
Adodc1.Refresh
End Sub
4.2.7派件情况
图38. 派件情况
Private Sub Command2_Click()
Form8.Hide
End Sub
Private Sub DataCombo1_Click(Area As Integer)
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 派件完成情况表 where 派件完成情况表. 运单=" & DataCombo1.BoundText
Adodc1.RecordSource = strquery
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
4.2.8查询统计
图39. 查询统计
Private Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Adodc1.Caption = " 记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _ Adodc1.Recordset.RecordCount
End Sub
Private Sub Adodc2_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Adodc2.Caption = " 记录:" & Adodc2.Recordset.AbsolutePosition & "/" & _ Adodc2.Recordset.RecordCount
End Sub
4.2.9收件清单
图40. 收件清单
Private Sub Command1_Click()
Dim strquery As String
Adodc1.CommandType = adCmdText
strquery = "select * from 收件清单 where 收件清单. 运单号=" & DataCombo1.BoundText
Adodc1.RecordSource = strquery
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
Private Sub Command2_Click()
Form14.Hide
End Sub
实践心得 这个短学期我们做了系统的设计,感觉受益不浅。首先,我们经过对题目的深入分析和老师的悉心指导下,对校园快递系统进行了初步的了解和基本设计思路。我们的目的就是为了以最便捷的派件方式,运送和配送到指定的目的地或学生手中。经过我们的讨论和尝试以及整个团队的配合,成员间的互相合作,我们做出了我们比较满意的系统。经过一个多星期的课程设计,收获颇多。也经过课程设计才使我们明白做程序需要的东西是很多的,你既要懂程序而且还要有耐心和恒心。课程设计是对我的一次全面的测试,它既锻炼了我的动手的能力也磨练了我的心理素质。
在课程设计中,我们组所选择的是设计一个校园快件派件管理系统,需要运用到VB 、SQL 以及管理信息系统的诸多知识,并结合RFID 条码的读取。这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。现在利用自己学到的知识设计并制作一个校园快件派件管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋,不同程度的投入了很高的热情与努力。在具体的设计与实施中,我们看到并感受到了一个校园快件派件管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。
在设计中我们基本能按照规范的方法和步骤进行,首先对现有的校园快递情况进行调查,并查阅有关资料,进行系统详细的分析,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到制定详细的系统分析计划和设计计划的重要性。由于缺乏相关的管理系统设计经验,我们制作系统的过程中,方法不太成熟,一些步骤出现错误,但经过修改,已经完成了任务。
在这次课程设计中,我们被分配以小组为单位去完成校园快件派件管理系统的设计与制作,所以小组内的分工和相互协调很重要,大家可以在分工中扬长避短,个及所长,这样可以很好的提高大家的积极性,和合作意识,并有效的缩短开发时间。不足之处就是我们在沟通这方面做的还不够,有时候制作系统时效率不高,导致时间浪费。若今后有类似的课程设计,相信通过此次经验,我们会做得更好。
通过这次的设计,我们小组学到了很多,同时也学会了细心与耐心的培养。我想这在将来的工作和学习中都将起到很大的帮助。更多的是团队的合作不仅是一个能够更好的完成任务的前提,同时也使我明白了如何与他人配合,如何与他人相处。
各成员的具体分工:
宋亚培(组长)———VB 系统设计与数据库设计
雷李念慈——————报告和PPT
陈宇辉———————数据库设计和报告
李坚————————报告和PPT
参考资料
[1]李玉林,Visual Basic毕业设计指南与项目实践[M],北京:科学出版社,2008
[2]刘仲英、薛华成,管理信息系统,[M],北京:高等教育出版社,2010
[3]谭浩强,Visual Basic6.0程序设计案例教程[M],北京:清华大学出版社,2009
[4]王彪,数据库应用系统开发---SOL Server+ Visual Basic案例驱动教程[M],北京:清华大学出版社,2010