文档库 最新最全的文档下载
当前位置:文档库 › 李伟 0707050213 毕业论文

李伟 0707050213 毕业论文

邮件快速分拣系统的设计与实现

摘要

本文以VC++6.0和SQL server 2005为基本开发工具完成了邮件快速分拣系统应用软件部分的设计与实现,基于射频识别技术对系统硬件部分进行了研究与设计。

在应用软件部分,本文首先给出了系统的总体设计然后介绍了对该系统数据库方面的设计工作,并给出了数据库的相关设计信息,其中包括数据库的配置信息和数据表的设计等。接着本文介绍了在VC++6.0环境下对软件系统各功能部分的设计与实现,并包括了必要的代码信息和系统各部分的运行界面。在软件部分的实现过程中,本文还给出了设计与实现步骤。最后本文通过少量数据对系统的剩余功能进行了基本的检测。

在硬件部分,本文主要对相关硬件如相机、图像采集卡,PC机等进行了研究和介绍。在相机标定技术方面本文研究了相关的算法;在视觉跟踪方面研究了多假设跟踪法;在射频识别技术方面进行了硬件设计和软件设计的相关研究。

通过上机调试,本系统作为邮递系统的工业自动化的一个环节在应用上有着较好的实用意义,在理论上也有一定的参考价值。

关键词分拣;函数;数据库;工业机器人; RFID

The Design and Implementation of the Fast Mail

Sorting System

Abstract

In this paper, we use VC + +6.0 and SQL server 2005 as the basic tools to complete the software part of the Fast Mail Sorting System, and use the technology of RFID to complete the hardware part of the Fast Mail Sorting System.

In the software part, the paper first gives the general design of the system and then describes the design of databases, and gives the design. then this paper describes functional part of software system’s design and implementation in the environment of VC + +6.0, and include the necessary code information and part of the operating system interface. In the implementation of the software part the paper also gives the design and implementation steps. At last, we used small amount of data on the system to test the basic functions of detection.

In hardware, this article mainly related hardware such as cameras, image acquisition card, PC machines and so on to study and introduce. In camera calibration technology, this paper studies the relevant algorithm; in the visual tracking this paper studies the multi-hypothesis tracking method; in radio frequency identification technology, this article researches in hardware design and software design.

Through the machine debugging, the system as a part of postal system’s automation has a good practical sense in applications, in theory, there is a certain reference value too.

Keywords Sorting; Function; Database; Industrial robots ; RFID

目录

摘要...................................................................................................................... I Abstract ............................................................................................................... II

第1章绪论 (1)

1.1 课题背景 (1)

1.2 相关研究状况介绍 (1)

1.3 论文的主要工作与结构 (1)

第2章系统分析与总体设计 (3)

2.1 系统需求分析 (3)

2.2 系统应用软件体系结构设计 (3)

2.3 系统数据库设计 (4)

2.4 本章小结 (5)

第3章系统应用软件模块设计 (6)

3.1 工程框架设计 (6)

3.1.1 设置工程主界面 (6)

3.1.2 为表添加类 (7)

3.1.3 设计登录模块 (9)

3.2 邮件分拣信息处理模块设计 (11)

3.2.1 邮件信息添加对话框设计 (11)

3.2.2 手动输入与查询对话框设计 (12)

3.2.3 自动输入模块 (13)

3.3 分拣箱信息管理模块 (13)

3.3.1 分拣箱信息添加对话框 (13)

3.3.2 分拣箱信息编辑对话框 (14)

3.3.3 信息说明 (15)

3.4 系统用户管理模块 (15)

3.4.1 用户信息编辑对话框 (15)

3.4.2 用户管理对话框 (15)

3.4.3 密码修改对话框 (16)

3.5 本章小结 (16)

第4章系统硬件部分 (17)

4.1 系统的硬件组成 (17)

4.1.1 CCD相机 (17)

4.1.2 镜头 (18)

4.1.3 采集卡 (18)

4.1.5 主动式RFID阅读器 (19)

4.1.6 Motocom机器人 (19)

4.2 相关硬件算法及技术 (20)

4.2.1 相机标定技术 (20)

4.2.2 目标检测 (22)

4.2.3 视觉跟踪的多假设法(MHT) (22)

4.3系统模拟运行 (23)

4.4本章小结 (24)

结论 (25)

本文主要工作 (25)

对后续工作的展望 (25)

致谢 (26)

参考文献 (27)

附录 (29)

附录A (29)

附录B 参考英文文献 (30)

附录C 英文参考文献(翻译) (40)

第1章绪论

1.1课题背景

随着经济的发展,我国的大中城市的邮件投递数量也在急剧增长,在我国的多个邮件处理中心中,普遍存在生产效率低下的现象,对采用技术创新提高生产效率有着迫切的需求。本文根据RFID技术的特点,通过引入工业机器人的方法,结合我国目前邮政业务的实际,设计了基于RFID 技术的邮件快速分拣系统。

1.2相关研究状况介绍

分拣系统的主要任务是把要分拣的物品按照业务品种、邮件种类或地址等信息进行分离,使同种类或同目的地址的邮件进入同一存储位置。自动分拣设备中的邮件信息识别方式对设备的工作效率、业务流程的复杂程度、运营成本和业务的柔性拓展具有重要意义。目前世界上的自动分拣系统普遍采用二维条码和三维条码为邮件特征信息的载体,通过对条码的识别获取邮件相关信息。以条码作为信息载体的邮件分拣作业流程复杂,需逐件扫描才能进行邮件信息获取,因此工作效率低。射频识别技术(下文简称RFID)是上个世纪末出现的新型自动识别技术,它将大规模集成电路与无线通讯技术相结合,实现了存储信息的快速、非接触式识别。相对于条形码技术,利用RFID设备可实现信息的非接触、可擦写、远距离的识别,且信息交换容量大,可实现集中读写,一次进行多个单体信息识别。鉴于自身的特点,RFID技术在现代物流系统中被广泛应用。

目前世界上的邮件分拣系统大部分采用载物小车的方法用于邮件在传送带上的运输,但这种方法在面临大物流量的时候,就会出现分拣效率与系统维护成本的矛盾。本文介绍的系统采用了工业上已经成熟的机器人技

用。

术保证了系统运行的效率,并有效的降低了系统维护费[1]

1.3论文的主要工作与结构

基于RFID技术的邮件快速分拣系统的开发和研究,本文主要章节与内容包括:

第一章:绪论。着重阐述了课题研究的目的意义及内容。

第二章:系统分析与总体设计。主要是对系统的应用需求分析进行阐述以及对系统软件的总体规划与数据库的设计进行具体研究

第三章:系统应用软件部分。主要介绍软件各部分的功能和设计(包括部分的代码实现)。

第四章:系统硬件部分。具体介绍本系统采用的各种硬件,以及相关硬件技术采用的算法。

总结:总结与展望。总结了本文主要工作,提出了本研究尚存的不足之处与后续工作展望。

第2章系统分析与总体设计

2.1系统需求分析

进入21世纪以来,随着网络等新兴技术的发展,我国的邮件传送产业快速发展,此时传统的邮件分拣方法已经严重拖累了整个邮件系统的运行效率,由此催生了邮件快速分拣系统的产生与发展。

现在邮件自动分拣技术已经得到了初步发展,但是或者运行十分复杂或者维护费用较高,对于一些小的邮寄网点仍然不适用,本文研究的邮件快速分拣系统适用于中小规模的邮寄网点,系统使用维护均十分简单方便。

邮件快速分拣系统的用户主要是邮局或者快递公司的从业人员,其中分拣系统应该至少包括一名管理人员和若干员工,本系统主要实现邮件分拣信息管理、分拣箱信息管理以及用户管理等功能,具体功能如下:

(1)邮件分拣信息的添加、修改、删除、查询和打印功能。其中的添加功能分为自动输入和手动输入两种,其余功能均为手动输入。

(2)邮件分拣箱信息的添加、修改与删除。此功能与具体的系统硬件相关,为系统分拣箱的添加、去除或者内容更改提供依据。

(3)用户信息的管[2]

理。

2.2系统应用软件体系结构设计

本节将根据需求分析中总结的用户设计系统应用软件部分的体系结构。系统的功能模块如图2-1所示。

在功能模块的树状结构中,每个叶节点都是一个最小的功能模块。每个功能模块都需要针对不同的表完成各种数据库操作包括记录的添加、删除、显示,查询或者直接启动相关的系统硬件进行工作。

在系统设置模块中,主要实现整个系统的运行、暂停与退出。并且当用户选择了开始运行后系统的硬件部分已经开始工作,但此时必须对下一模块进行相应的选择后整个系统才能真正开始工作。

邮件分拣信息处理模块主要实现邮件信息的输入、修改、删除、显示、与打印功能。选择自动输入模块后,系统的运行将实现完全自动化,当邮件信息读入失败或者希望获得已分拣邮件的信息时可以选择手动输入与查询模块。

分拣箱信息处理模块实现系统硬件的分拣箱方面的信息管理,属于系

在本系统中,用户管理模块的功能比较简单。用户分为系统用户和普通用户两种,系统用户可以创建用户、修改用户以及删除用户,普通用户只能修改自己的用户名和密码,他们的密码统一默认为123(用户可以进入密码修改模块进行修改)。

图2-1快速邮件分拣系统功能模块示意图

2.3系统数据库设计

数据库是软件总体设计非常重要的环节,好的数据库结构可以简化系统软件部分的开发过程,使得系统功能更加清晰明确。本系统采用的数据库命名为Postals。

数据库包括3个表。即邮件分拣信息表Postals、邮件分拣箱信息表Boxes、和用户信息表Users。下面介绍这些表的结构。

(1)邮件信息表Postals,用来保存邮件的各种信息。表结构如表2-1所示:

(2)用户信息表Users,用来保存系统用户信息,结构如表2-2所示:

(3)分拣箱信息表Boxes,用来保存系统分拣箱的信息。表结构如表2-3所示:

其中在BoxName字段中,由于本系统的测试数据邮寄地址的设计是基于我国内陆地区省级行政单位的,所以只需输入对应的邮政编码的前两位(在我国邮政编码中前两位代表省级新行政单位,有的省级行政单位对应的邮编前两位有多个的应该输入最小的一个,省级单位对应的邮编前两位简明表可见附录A),本系统若用于其他具体单位时,应根据具体情况对此字段进设计。

这三个数据库表均为保存系统必要的信息而设计,在实际运行时应该做好数据库的维护和备份工作。这些工作虽然普通,但对于系统安全运行却是不可缺少的,做好维护工作可以保证系统的工作效率,做好备份工作,可以在数据因为不可抗拒因素遭到损毁时使系统得到及时恢复。

2.4本章小结

本章首先介绍了系统的总体需求分析然后对应用软件部分的总体结构进行了设计,并以图的形式对每个功能模块进行了说明。最后对系统使用的数据库进行了介绍并给出了相关的设计信息。

第3章系统应用软件模块设计

3.1工程框架设计

3.1.1设置工程主界面

本系统的应用软件部分是一个基于对话框的工程,工程名设置为PostalSp。主对话框的属性如表3-1所示:

控件及DataList控件。向工程中添加类ADOConn类,注意在ADOConn.cpp中将连接字符串中“Database=”设置为“Database=Postals”,“Server=”设置为“Server=PC-201103201322”(设置服务器为本体服务器,具体应用本系统时要根据具体情况进行设置)。在类CDataGrid中添加成员函数GetItem(),用于从DataGrid表格中读取数

[3]

据。制作一个背景图片作为Bitmap资源加入到工程当中。

设置主页面中的菜单。在工程中添加“Menu”资源,创建一个新的菜单,并对菜单项的属性进行设置。属性设置如表3-2所示:

IDR_MENU1,运行系统,可以看到系统的主界面如图3-1所示:

图3-1系统主界面示意图

为菜单项IDR_EXIT添加代码,对应函数为CPostalSpDlg::OnExit(),代码如下:

void CPostalSpDlg::OnExit()

{

exit(0);

}

程序调用exit(0)函数关闭对话框,退出系统。

从系统界面上可以看到,由于本系统面对的是中小规模的邮寄业务,所以功能较为简单,仅仅设置了一些必须的功能。这对于使用人员的培训和使用都将十分有益。

3.1.2为表添加类

本文为系统数据库的每一个表都创建了一个类,类的成员变量对应类的列,类的成员函数是对成员变量和表的操作。在系统中为各个表添加相应的类,并设置类名,类的命名规则是大写字母“C”加上表名,例如表Users对应的类名就是CUsers。

数的编码格式都是非常相似的,所以本节中只介绍每个类的成员函数的基本功能,并不对所有的成员函数进行具体的代码分析。

3.1.2.1CPostals类

CPostals类用来管理表Postals的数据库操作,它的成员函数如表3-3所示。

在HaveName()函数中程序使用m_AdoConn.GetRecordSet()函数执行SELECT语句,将结果返回到m_pRecordset对象中。如果m_pRecordset->adoEOF等于-1,则结果集为空;否则表示记录中存在指定的邮件编号。

3.1.2.2CBoxes 类

CBoxes类用来管理表Boxes的数据库操作,他的成员函数如表3-4所示:

3.1.2.3CUsers类

CUsers类用来管理表Users的数据库操作,它的成员函数如表3-5所示:

的类,在设计过程中对于系统的对话框或者系统资源的使用等都要涉及到类的设计与调用,合理的成员函数设计以及恰到好处的成员变量加入对于系统各功能的实现极其重要,做好类的设计工作将十分有利于系统下一步的设计工作。

3.1.3设计登录模块

登陆界面是系统自我保护的第一层防线,他的设计与系统用户直接相关。用户要使用本系统,首先必须通过系统的身份认证,这个过程叫做登陆。本节将介绍登录模块的实现过程。

当前用户的数据应该是全局有效的,在工程的任何位置都可以访问

CGlobal.cpp中添加如下代码:

#include “Users.h”

CUsers curuser;

在StdAfx.h中添加: #include”CGlobal.h”.因为StdAfx.h包含在很多程序中,这样这些程序就可以直接访问curuser对象了。在访问之前添加如下命令:extern CUsers curuser; 引入外部变量。

添加一个对话框,属性设置如表3-6所示:

图3-2登陆对话框的界面

按照如图所示添加控件,注意在密码控件中选中编辑框的Password属性,这样用户在输入数据时编辑框只能显示“*”。为对话框建立一个类,并给两个编辑框分别制定一个成员变量m_UserName和m_Pwd.最后在主对话框中添加CPostalSpDlg::OnInitDialog()函数,使对话框在启动时首先打开登陆对话框。代码如下:

LoginDlg dlg;

if (dlg.DoModal()!=IDOK)

{

exit(0);

}

else

curUser.GetData(dlg.m_UserName);

程序将打开登录对话框,如果用户不是通过单击“确定”按钮关闭对话框则调用exit(0)函数关闭对话框。在登录对话框的代码中,用户只有通

dlg.DoModal()的返回值为IDOK,则表示用户已经通过了身份验证。为了保护系统的安全,我们默认每个用户最多只能连续登陆3次,超过3次系统将在提示用户后自动退[4]

出。

3.2邮件分拣信息处理模块设计

邮件分拣信息处理模块包括“手动输入与查询”和“自动输入”两部分。前者主要用于邮件信息无法正常读取时人工输入信息以及对邮件分拣信息的添加、修改、删除和打印功能。后者则是启动相关的分拣算法,使邮件信息随着系统硬件的运行自动输入信息到数据库中。

3.2.1邮件信息添加对话框设计

此对话框主要用于添加邮件分拣信息和修改指定的邮件分拣信息。系统运行时,此界面如图3-3所示:

图3-3邮件分拣信息添加框

按照上图所示添加各种控件之后,并设置相应的属性值,如表3-7表所示:

m_CPdate、m_CPPlace、m_CGPlace、m_Cid成员变量类型均为CString。

双击“确定”按钮和“取消’按钮为按钮添加函数。点击确定将填写的邮件信息输入数据,点击取消离开本界面。

采用RFID技术后虽然与传统的条形码技术相比读取成功率提高了很多,不过由于RFID标签读取距离较近所以一旦出现邮件放置位置不合理或者标签出现损坏的情况系统就无法正常读取数据或者用户希望修改已经读取的错误信息,这时系统必须暂停自动运行,转由工作人员手动读取邮件信息并将其通过此界面进行相关的而操作。

3.2.2手动输入与查询对话框设计

此对话框主要用于实现邮件的删除、打印和调用上节所介绍的模块以修改和添加邮件信息。系统运行时,此界面如图3-4所示:

图3-4手动输入与查询模块界面示意图

在此模块中除了参照上节的控件属性进行设置外,还要再添加ADO Data控件和DataGrid控件,ADO Data控件的配置方法如表3-8所示,DataGrid控件与ADO Data相关并将ADO Data控件的设置为不可见后,此模块既可以用于显示数据库表Postals中的内容了。

为“添加”按钮写入相应的响应函数后便可调用上节的邮件信息添加模块了;点击“修改”按钮同样调用添加模块对邮件信息进行修改;点击“删除”按钮后调用表Postals的成员函数sql_delete()在数据库中删除相应的邮件信息;点击“打印”按钮可以调用打印机将相关邮件信息打印出来;在查询一栏中用户则只能在“邮件编号”和“分拣箱编号”两项中选择其一进行查询;点击“返回”按钮,系统将返回系统主界面。

此对话框是为了方便用户管理邮件信息而设计的,从操作界面上我们可以清楚的看到此界面的主要功能,除了在商界中已近介绍过的添加与修改功能之外,通过此界面我们还可以清楚的看到已经输入的信邮件信息,并可以根据具体要求对邮件信息进行分类查询。此外本对话框的打印功能也可方便其他人员的办公所需。

3.2.3自动输入模块

本模块实现的是系统两大运行方式之一的自动运行功能。点击进入自动分拣运行模式将启动RFID阅读器及其他硬件,自动对邮件进行读取并根据相关算法为所有的邮件设置分拣箱编号,以方便机器人根据此信息对邮件进行分类抓放

针对分拣箱算法的实现,本文采用的简单的条件语句:将读取的邮件邮编信息与分拣箱所对应的邮编信息进行匹配,如果匹配成功就将相应的分拣箱编号赋予此邮件并继续读取下一个邮件信息,如果读取失败系统将自动跳出此模块暂停系统的运行等待用户的手动操作,然后再回复所有工作。

3.3分拣箱信息管理模块

本模块主要包括“信息设置”和“信息说明”两部分。前者主要用于分拣箱信息的设置、修改与删除。后者则是对该模块的信息说明。此模块的信息的查看功能虽然可以由所有用户使用,不过由于分拣箱信息的添加、修改与删除将直接影响相邮件信息的管理,所以这些功能将只能由系统管理员使用。而且一旦修改必须修改相关的分拣算法以保证系统的正常运行,所以笔者建议一旦系统部署完毕应当尽量避免分拣箱信息的修改。

3.3.1分拣箱信息添加对话框

分拣箱信息添加对话框的ID属性为IDD_BOXSEDIT_DIALOG,其布

图3-5对话框IDD_BOXSEDIT_DIALOG的布局

此模块的控件相对简单,为两个Edit Box控件和两个按钮控件。为此对话框建立一个对应的类(类名CBoxEdit),并在类中为两个Edit Box控件分别添加两个成员变量:m_BoxId和m_BoxName,再为此类添加一个公共变量itype类型为int,公共变量itype的作用是为了区别下一节所述的模块的添加和修改两种不同的功能,若是添加就将itype初始化为0,若是修改则初始化为1。

双击按钮“确定”和“取消”为他们添加相应的函数。点击“确定”按钮可将添加的分拣箱信息输入到数据库表Boxes中。

3.3.2分拣箱信息编辑对话框

分拣箱信息编辑对话框ID为IDD_BOXMAN_DIALOG,其控件布局及数据测试结果如图3-6所示:

图3-6对话框IDD_BOXMAN_DIALOG的布局及数据测试结果

显然在此对话框中我们添加了ADO Data控件和ADOGrid控件(此两种控件的配置方法参照3.2.2节中所述)并分别为这两个控件添加成员变量m_adodc和m_datagrid用于此模块的数据库操作。

除上述两种控件外,本模块还有四个按钮,分别实现分拣箱信息的添加、修改和删除。点击取消按钮退出此模块返回主界面。

此模块是一个简单的对话框,只是向用户提供一些分拣箱使用应该注意的信息和使用方法简单介绍。

3.4系统用户管理模块

此模块是所有信息管理类软件必须实现的功能。目的是为系统管理用户,理论上应该每个系统应该设置一个系统管理员和若干普通用户根据用户类型的不同,用户管理模块的功能也不相同。可以包括以下情形:

○系统管理员可以创建其他用户,删除其他用户;

○其他用户只能修改自身的用户信息。

3.4.1用户信息编辑对话框

编辑用户信息的对话框可以用来添加和修改用户信息,对话框ID 为:IDD_USEREDIT_DIALOG。对话框的布局如图3-7所示:

图3-7对话框IDD_USEREDIT_DIALOG布局

对话框对应的类为CUserEdit。“用户类型”对应的控件为Combo Box,其属性设置如表3-9所示:

3.4.2用户管理对话框

用户管理对话框的ID为IDD_USERMAN_DIALOG,对话框的布局和数据测试结果如图3-8所示:

图3-8对话框IDD_USERMAN_DIALOG的布局及测试结果此对话框对应的类为CUserManDlg。

3.4.3密码修改对话框

密码修改对话框的ID为IDD_CHANGEPWD_DIALOG,对话框的布局如图3-9所示:

图3-9对话框IDD_CHANGEPWD_DIALOG的布局

此对话框对应的类为CChangePwdDlg。因为新注册的用户密码均统一默认为“123”,此对话框的功能就是为用户修改密码所用。点击“确定”按钮密码修改便完成了。

3.5本章小结

本章介绍了系统应用软件各模块的设计和实现过程,并给出了部分代码实现这也是本文的主要工作所在。在实现过程本文基于使用和维护简便的思想成功实现了邮件信息管理等功能。当然本章在设计上依然存在不足,例如分拣箱信息修改设计的工作较为繁琐且不方便等,不过这些问题必将随着以后相关工作的进行得到解决。

相关文档
相关文档 最新文档