二维码电子请柬生成与扫描系统设计 本科毕业设计

更新时间:2024-06-28 00:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕 业 论 文(设 计) 题目:二维码电子请柬 生成与扫描系统设计

姓 名 岳栋栋 学 号 200900171263 学 院 控制科学与工程学院 专 业 自动化 年 级 2009级 指导教师 赵子健

2013年 5月 20 日

山东大学学士学位论文

摘 要

随着计算机技术和图像编码技术的不断发展与进步产生了一种自动识别技术,既条码技术。二维码是条码的一种,由于它信息容量大、容错能力强,可靠性高、成本低,近年来得到了广泛应用。随着智能手机的普及,Android平台以其开放性、良好的用户体验成为了智能手机主力的操作系统。结合二维码技术,在Android平台上进行相关软件的开发可以进一步普及二维码技术应用,方便数据信息的交流。

本项目就是用Java语言,通过Eclipse平台设计了一个适用于Android平台的基于二维码生成与解码的一个应用软件。本软件可以将一些信息加密后生成为二维码,生成的二维码可以应用在电子请柬中。然后再用本软件扫描电子请柬中的二维码,可以获得加密前的信息,并且确认来着的身份。本软件可以防止不被邀请的人混入一些场合,应用性较强。

关键词:二维码,安卓,手机软件

I

山东大学学士学位论文

ABSTRACT

With the continuous development of computer technology and image coding technology a kind of automatic identification technology called bar code technology imerged. Quick Respond code is one kind of the bar code. In recent years ,it’s widely used because of its large information capacity, fault tolerant ability, high reliability and low cost . With the popularity of smartphones, Android platform has become the main smartphone operating system with its openness and good user experience. The development of applications related to QRcode on the Android platform can make code technology more popular and make data communication more convenient..

In this project, a application based on the generate and encode of the Qrcode on the Android platform was designed and developed.This application was developed on Eclipse with Java programming language. This software can put some information in a qr code that can be used in the electronic invitation. Then you can scan the qr code in the electron invitation to get the original information and confirm the identification of the visitor. This software can prevent people who are not invited entering some occasions.

KEYWORDS: Qrcode,Android,application

II

山东大学学士学位论文

目录

第一章 绪论................................................................................................................ 1

1.1 系统开发背景以及意义 ............................................................................... 1

1.1.1 系统开发背景 ...................................................................................... 1 1.1.2 系统开发意义 ...................................................................................... 1 1.1.3 二维码介绍 .......................................................................................... 2 1.2 开发工具介绍 ............................................................................................... 3

1.2.1 JDK简介 ............................................................................................... 3 1.2.2 Android SDK简介 ............................................................................... 3 1.2.3 Eclipse简介 ....................................................................................... 3 1.2.4 ADT简介 ............................................................................................... 4 1.3 项目开发环境 ............................................................................................. 4

1.3.1 硬件环境 .............................................................................................. 4 1.3.2 软件环境 .............................................................................................. 4 1.4 环境搭建 ......................................................................................................... 4

1.4.1 安装配置JDK ....................................................................................... 4 1.4.2 安装配置Android平台SDK ............................................................... 5 1.4.3 下载安装集成开发环境Eclipse ....................................................... 5 1.4.4 安装设置ADT插件 .............................................................................. 5

第二章 系统的总体设计 ........................................................................................... 6

2.1 系统模块结构设计 ......................................................................................... 6 2.2 计算机物理系统的配置方案设计 ................................................................. 6 第三章 系统的详细设计 ........................................................................................... 8

3.1 系统流程图 ..................................................................................................... 8 3.2 界面设计 ......................................................................................................... 9 第四章 应用程序的编程实现 ................................................................................. 11

4.1 Android应用工程文件组成 ........................................................................ 11 4.2 Android应用程序组成 ................................................................................ 12 4.3 Intent的使用 .............................................................................................. 12 4.4 调用ZXing .................................................................................................... 13 4.5 编程实现 ....................................................................................................... 14

4.5.1 编写配置文件 .................................................................................... 14 4.5.2 编写布局文件 .................................................................................... 15 4.5.3 编写源程序 ........................................................................................ 16

第五章 应用程序的测试 ......................................................................................... 18

5.1 在模拟器上测试 ........................................................................................... 18 5.2 在目标设备上测试 ....................................................................................... 18

5.2.1 软件安装测试 .................................................................................... 18 5.2.2 生成二维码测试 ................................................................................ 19 5.2.3 扫描二维码测试 ................................................................................ 19

结论 .............................................................................................................................. 21 致谢 .............................................................................................................................. 22

III

山东大学学士学位论文

参考文献...................................................................................................................... 23

IV

山东大学学士学位论文

第一章 绪论

1.1 系统开发背景以及意义

1.1.1 系统开发背景

智能手机是指具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,并可以通过移动通讯网络来实现无线网络接入的这样一类手机。智能手机具备无线接入互联网的能力,具有PDA的功能,具有开放性的操作系统,人性化,功能强大,扩展性能强,第三方软件支持多。这些优点决定了智能手机必将在市场上占有一席之地,智能手机市场的潜力不可估量。

Android智能操作系统是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,是由谷歌、开放手持设备联盟联合研发,谷歌独家推出的智能操作系统。Android平台有多种优势,首先在开放性方面,Android平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者。其次,用户可以更加方便地连接网络,运营商的制约减少。第三,安卓平台有丰富的相关硬件。第四,Android平台提供给第三方开发商一个十分宽泛、自由的环境。Android平台手机可以无缝结合优秀的Google服务。这种种优势决定了安卓逐渐成为全球最受欢迎的智能手机操作系统。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班操作系统,跃居全球第一。

条码技术是在计算机应用中产生并发展起来的,具有输入快、准确度高、成本低、可靠性强等优点,广泛应用于商业、邮政、图书管理、仓储、工业生产过程控制、交通等领域。条码分为一维码和二维码,一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,数据容量小,损坏后不能读取,这些缺点决定了二维码的诞生以及二维码广阔的应用前景。 1.1.2 系统开发意义

本项目设计了个安装在Android平台智能手机的电子请柬系统。可以完成二维码生成,二维码扫描,以及信息核实。二维码信息容量大、编码范围广、容错能力强、译码可靠度高、成本低、容易制作,这些优点决定了二维码特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。二维码电子请柬服

1

山东大学学士学位论文

务,是二维码技术在移动商务服务中的另一种应用,主要用于二维码会议。二维码电子请柬系统属于手机二维码应用,它将现代移动通信技术和二维码技术结合在一起。通过本系统把请柬信息编码成为一个二维码图形,可以通过短信等方式发送至受邀者的手机上。然后可以通过本系统对受邀者手机上收到的二维码图形进行扫描验证。它不仅节约了成本,更重要的是节省时间提高效率方便使用,同时还非常环保和时尚。而且避免了主办方现场核对信息时手忙脚乱的尴尬,而且非常安全,有效核实身份,杜绝误闯者。 1.1.3 二维码介绍

二维码最早起源于日本,它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形。二维条码与一维条码相比具有高容量、高密度、纠错能力强、安全强度高等特点,不仅可以存储传统的字符数字等文本信息,还可以存储图像等高容量的信息。二维码有堆叠式二维码和矩阵式二维码两种。其中矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”和“空”的排列组成代码,这种排列组合确定了矩阵式二维码所代表的意义,“点”表示二进制“1”,“空”表示二进制“0”。矩阵式二维码是以计算机图像处理技术、组合编码原理等为基础的一种新型图形符号识读处理码制,其中具有代表性的有:Code One、Maxi Code、QR Code等。

QR Code是二维码的一种。它是由日本Denso公司于1994年9月研制的一种矩阵二维码符号,它除具有一维条码及其它二维条码所具有的信息容量大、可靠性高等优点外,还可以超高速识读,它纠错能力强,能够有效地表示中国汉字和日本汉字[2]。由于QR码具有对汉字信息进行独特优化处理的功能,符合汉字国家使用习惯,QR码拥有一定的持续发展潜力。

QR码的基本构造如图1所示。其中各部分有各部分的功能:位置探测图形、位置探测图形分隔符、定位图形用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;规格确定,校正图形的数量和位置也就确定了;格式信息表示改二维码的纠错级别,分为L、M、Q、H;版本信息即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21×21(版本1),到177×177(版本40),每一版本符号比前一版本 每边增加4个模块。数据和纠错码字表示了实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)。

2

山东大学学士学位论文

图1 QR码的基本构造

1.2 开发工具介绍

1.2.1 JDK简介

JDK全称是Java Development Kit,是Sun针对Java开发的产品。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK有使用于各种设备各种环境的版本。没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JDK。JDK的基本组件包括javac(编译器),jar (打包工具),javadoc(文档生成器),jdb – debugger(查错工具),java (运行编译后的java程序),appletviewer(小程序浏览器)Javap(Java反汇编器),Jconsole(调试和监控工具)等。 1.2.2 Android SDK简介

SDK全称是software development kit,即软件开发工具包。SDK是指软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK 指的是Android专属的软件开发工具包。 1.2.3 Eclipse简介

Eclipse是著名的跨平台的自由集成开发环境(IDE), 是一个基于Java的、开发源代码的可扩展开发平台。本质上它只是一个框架和一组服务,用户通过插

3

山东大学学士学位论文

件组件构建开发环境。Eclipse还包括插件开发环境,这个组件允许希望扩展 Eclipse的软件开发人员构建与Eclipse环境无缝集成的工具。Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。由于任何人都可以免费得到Eclipse的源码,并可以在此基础上开发各自的插件,因此越来越受人们关注。

Eclipse的设计思想是:一切皆插件。除Eclipse基本内核,比如图形API (SWT/Jface)、Java开发环境插件(JDT)、插件开发环境(PDE),Eclipse其它所有功能都以插件的形式附加于Eclipse上。 1.2.4 ADT简介

ADT全称是Android Development Tools,即安卓开发工具。目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。ADT是Android在Eclipse上的开发工具。

1.3 项目开发环境

1.3.1 硬件环境

联想G450电脑一台 三星s5830i手机一部 1.3.2 软件环境

操作系统:windowsXP(32 bit)

开发工具:JDK1.7、Eclipse-TADP、Android SDK、ADT

1.4 环境搭建

1.4.1 安装配置JDK

在网站http://www.oracle.com/technetwork/java/index.html 下载适合目标平台的JDK版本。下载完成后,双击并根据提示安装JDK。安装结束后,还要配置JDK环境变量,步骤如下:我的电脑→属性→高级→环境变量,然后在系

4

山东大学学士学位论文

统变量中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”: JAVA_HOME指明JDK安装路径,Path使得系统可以在任何路径下识别为

java

命令,设

%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\binCLASSPATH

为:.;%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\tools.jar (要加.表示当前路径)。 1.4.2 安装配置Android平台SDK

在Android Developers下载android SDK,下载完成后解压到目标文件夹。与JDK设置相同,Android SDK安装目录下的“tools”子文件夹的路径需要添加到系统的“PATH”环境变量中。SDK下载戒烟后,其中包括非常丰富的开发资源,包括丰富的辅助工具和完备的开发参考。 1.4.3 下载安装集成开发环境Eclipse

到http://www.eclipse.org/downloads下载Eclipse。Eclipse工具的下载文件也是压缩文件,直接解压后就可以使用。 1.4.4 安装设置ADT插件

安装ADT插件有两种办法,一种是通过网络安装,另一种是通过本地文件安装。在此选择第二种方法。步骤如下:启动Eclipse,选择Help→Software Updates→Available Software→Add Site→Achieve。然后在弹出的页面选择ADT下载文件,点击OK,完成ADT插件的安装。ADT插件安装完毕后,重启Eclipse,选择Window→Preferences,进入首选项设置页面。选择左侧的“Android”项目,按照要求选择Android SDK的位置,然后点击OK。至此,开发环境安装完毕。

5

山东大学学士学位论文

第二章 系统的总体设计

总体设计即对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。总体设计包括系统模块结构设计和计算机物理系统的配置方案设计。在进行总体设计时,还要进行计算机物理系统具体配置方案的设计。

2.1 系统模块结构设计

系统模块结构设计的目的是划分子系统并确定其模块结构,最后画出模块结构图。要想进行好的模块设计,必须考虑如何将一个系统划分成多个子系统;每个子系统如何划分成多个模块;如何确定子系统之间、模块之间传送的数据及其关系。

顾名思义,基于二维码的电子请柬生成与扫描系统有两个子系统,二维码的生成系统和二维码的扫描系统。其模块划分分别如图2(a)、图2(b)所示。

调用BarcodeScanner生成二维码 显示解密后的信息,判断来宾是否被邀请者 加密信息并通过Intent传递信息 将二维码解码后的信息传递到一个字符串 通过一个文本框 输入信息 调用BarcodeScanner扫描二维码 选择“生成二维码” 选择“扫描二维码”

图2(a) 子系统模块图 图2(b) 子系统模块图

2.2 计算机物理系统的配置方案设计

进行总体设计除了进行系统模块结构设计,还要进行计算机物理系统具体配置方案的设计。本项目用到了一部三星S5830i手机,一台windowsXP系统的电

6

山东大学学士学位论文

脑。另外还需要自己搭建开发平台,用到了JDK,Android SDK,Eclipse,ADT。具体的平台搭建在第一章有详细介绍。做条形码生成和扫描,一般要用到ZXing。ZXing有多种复用方式,在本项目中,选择的方式是在手机上安装Zxing库中的相关软件,即使用于Android平台的BarcodeScanner。然后在自己的应用中,通过Intent调用ZXing的生成条码或者扫描条码的Activity,然后将结果返回自己的Activity。

7

山东大学学士学位论文

第三章 系统的详细设计

3.1 系统流程图

系统流程图(System Flowchart)是描绘系统物理模型的传统工具。系统流程图用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。本系统的系统流程图如图3:

开始

将信息加密 输入请柬内包含的信息 调用BarcodeScanner扫描二维码 将解码后的信息传入将解码后的信息传入TextView TextView 调用BarcodeScanner生成二维码 是否含有加密字符串 是 输出“匹配” 否 输出“警告”

结束 图3 系统流程图

8

山东大学学士学位论文

3.2 界面设计

界面设计是人与机器之间传递和交换信息的媒介。UI即用户界面。UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计要充分考虑到用户的感受,让软件的操作变得舒适、简单、自由。

此系统有如下几个界面如图4所示:界面一中,TextView1显示了一些软件介绍信息。在界面一中选择Button1,就出现了界面二。界面二中,EditText1中,可以输入文本,以生成二维码,选择Button3,跳转到生成的二维码。在界面二中,选择Button2,则跳转到界面三,选择Button4,则出现二维码扫描界面,扫描结果返回到界面三中的TextView3,对结果进行检验后,在界面三的TextView4中,返回“匹配”或者“警告”。

TextView1 EditText1 Button1 Button2 Button3

图4(a) 界面一 图4(b) 界面二

9

山东大学学士学位论文

Button4 TextView2 TextView3 图4(c) 界面三

10

山东大学学士学位论文

第四章 应用程序的编程实现

4.1 Android应用工程文件组成

Android应用工程文件(如图5所示)主要由以下工程文件组成: 1.src既源文件目录。

2.gen目录,包含R.java文件,它由Eclipse自动生成和修改,不需要去维护。 3.android库。

4.assets目录,存放多媒体等文件。 5.res目录,存放应用用到的资源文件。

6.drawable目录,存放图片资源,分别为高中低三个分辨率。 7.layout目录,放置布局文件,均为.xml文件。

8.values目录,放置字符串(string.xml),颜色(colors.xml),数组(arrays.xml)。

9.AndroidManifest.xml.相当于应用的配置文件,我们要在这个文件中声明应用的名称,所有的Activity,Service,Reciver等。

图5 工程文件目录

11

山东大学学士学位论文

4.2 Android应用程序组成

一个典型的Android应用程序通常由5个组件组成,即Activity、Intent and Intent Filters、Service、BroadcastIntentReceiver、ContentProvider。

Activity是这5个组件中最常用的,程序中Activity通常的表现形式是一个单独的界面。每个Activity都是一个单独的类,它扩展实现了Activity基础类。这个类显示为一个由Views组成的用户界面,并响应事件。大多数程序有多个Activity。

另一个比较常用的类就是Intent and Intent Filters。Android通过一个专门的Intent类来进行界面的切换,Intent描述了程序想做什么。有个相关的类叫IntentFilter。Intent是一个请求来做什么事情;IntentFilter则描述了一个Activity(或下文的IntentReceiver)能处理什么意图。系统通过解析传递进来的Intent来完成Activity的切换。使用startActivity()方法来启用新的Activity。

4.3 Intent的使用

Intent是一个对象,它可以解决Activity之间的相互跳转、相互传递数据。解决了Android应用的各项组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用[14]。 一个Intent对象包括一组信息,主要的包括:

1.Component name,它决定从一个Activity究竟启动哪个组件;

2.Action,决定了启动另一个Activity后,传递进入一个Intent方法进来,然后这个Activity要做的动作;

3.Data,是从一个Activity想向另一个Activity传递的数据。

4.Extras,是额外的一些信息,即键值对。可以在一个Activity中存放键值对,然后通过Intent对象在另一个Activity中将这个键值对取出来。

在多个Activity的跳转过程中,Intent起到了非常重要的作用。要想实现从Activity1跳转到Activity2,就要调用Activity1的startActivity()方法传递一个intent对象进来,而究竟跳转到哪个Activity,又将有什么动作,主要是由intent对象决定。

使用Intent实现Activity1跳转到Activity2的主要代码如下: ??

Intent intent=new Intent();

intent.setClass(Activity1.this,Activity2.class);

12

山东大学学士学位论文

startActivity(intent); ??

使用Intent将Activity1中的键值对传递进入Activity2的主要代码如下: 在Activity1中编写有关代码 ??

Intent intent=new Intent(); intent.putExtra(name,value);

intent.setClass(Activity1.this,Activity2.class); startActivity(intent); ??

在Activity2中调用getIntent()方法得到传递进入Activity2的intent ??

Intent intent=getIntent(); ??

4.4 调用ZXing

第一章已经讲过android众多优点中的一个,就是Android提供了一种机制,可以通过Intent复用多个应用的界面,可以无缝结合优秀的Google服务。比如可以在自己的应用中调用条形码识别程序,然后返回条形码的结果。不过呢,这需要系统必须事先在手机上安装ZXing的条码扫描工具。

ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口,可实现的条形码编码和解码。Zxing提供了程序的核心代码、适用于J2SE客户端的程序、适用于Android客户端的程序(即BarcodeScanner),而且通过Intent支持Android程序和BarcodeScanner的集成。ZXing提供了一个集成API,使用者可以通过这个集成API调用ZXing的相应Activity。

本项目就是利用了Zxing提供的BarcodeScanner,以及ZXing通过Intent支持app和BarcodeScanner集成的特点。当项目需要生产或者扫描二维码的时候,Activity通过Intent调用BarcodeScanner中的相应的方法,就能实现相应的功能,调用结束后,然后再讲结果返回到相应的Activity。通过Intent传递数据和信息的主要代码见下文4.5.3。

13

山东大学学士学位论文

4.5 编程实现

4.5.1 编写配置文件

本项目用到了3个Activity。在AndroidManifest.xml注册如下:

android:icon=\ android:label=\ >

android:label=\ android:name=\ >

android:label=\ android:name=\ >

android:label=\ android:name=\ >

其中打开应用程序,首先进入的Activity是含有以下语句的Activity。

14

山东大学学士学位论文

4.5.2 编写布局文件

布局文件,即为res文件夹中的layout文件。Android平台定义了线性布局、相对布局、绝对布局、框布局和表格布局这五种布局类型。在本项目的三个Activity中,我们选择使用线性布局。线性布局就是将容器内的子组件按照直线进行摆放的一种方式。通过布局文件,我们摆放了各个Activity中的各个组件,并且设置好了组件的长、宽、内容等属性。

一个完整的布局文件如下:

xmlns:android=\ android:layout_width=\ android:layout_height=\ android:orientation=\ >

android:id=\

android:layout_width=\ android:layout_height=\ android:textSize=\

android:text=\/>

Top