毕业设计(论文)-基于Android手机的二维码的生成与解码工具的设计与实现.docx_第1页
毕业设计(论文)-基于Android手机的二维码的生成与解码工具的设计与实现.docx_第2页
毕业设计(论文)-基于Android手机的二维码的生成与解码工具的设计与实现.docx_第3页
毕业设计(论文)-基于Android手机的二维码的生成与解码工具的设计与实现.docx_第4页
毕业设计(论文)-基于Android手机的二维码的生成与解码工具的设计与实现.docx_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

太原理工大学毕业设计(论文)用纸太原理工大学毕业设计(论文)任务书第1页毕业设计(论文)题目:基于Android手机的二维码的生成与解码工具的设计与实现全套设计加扣 3012250582毕业设计(论文)要求及原始数据(资料): 1综述国内外二维码的生成与解码技术研究现状;2深入了解二维码生成与解码及其应用与读取的相关技术;3熟练掌握二维码的生成与解码器的应用与分析,训练编写程序的能力;4设计并实现二维码生成破译器针对某几种类型的数据的生成与解码;5深入分析二维码的生成器与解码器的具体实现算法与编写语言;6训练检索文献资料和利用文献资料的能力; 7训练撰写技术文档与学位论文的能力。第2页毕业设计(论文)主要内容:1综述二维码的生成与译码技术在日常网络生活中的应用;2了解二维码的生成与译码的相关技术;3熟悉二维码的生成器与译码器的开发环境; 4设计二维码生成破译器中针对若干种特定数据的编译、破译的功能;5. 深入分析二维码生成破译器中的关键技术与编写语言Android的设计流程;6熟练掌握基于二维码编码与译码的应用的编写;7设计与实现针对若干种特定类型的数据进行二维码的编码与译码的程序。学生应交出的设计文件(论文):1内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。第3页主要参考文献(资料):1 丰生强. Android软件安全与逆向分析M. 人民邮电出版社, 2013.2 徐玲, 蒋欣志, 张杰. 手机二维码识别系统的设计与实现J. 计算机应用, 2012, 32(05):1474-1476.3 于英政. QR二维码技术的相关研究D. 北京交通大学, 2014.4 曾子剑. 基于QR二维码编解码技术的研究与实习D. 电子科技大学, 20105 王绍祥, 邵玉斌, 龙华,等. Android手机与数据库的一种数据交互方法J. 郑州轻工业学院学报:自然科学版, 2011, 26(6):28-30.6 高彦受, 许春根. 安全实用的二维码研究与实现J. 信息网络安全, 2012(10):47-50.7 柯元旦. Android内核剖析M. 电子工业出版社, 2011.8 莱赫蒂迈基. 精彩绝伦的Android UI设计M. 机械工业出版社, 2013.9 Eckel B. Thinking in Java (4th Edition) J. BMJ, 2007, 117(667):212.10 Bloch J. Effective java: programming language guide J. Programming Language Guide, 2001.11 Lyons S, Kschischang F R. Two-dimensional barcodes for mobile phonesC/ Communications (QBSC), 2010 25th Biennial Symposium on. IEEE, 2010:344-347.12 Belussi L F F, Hirata N S T. Fast Component-Based QR Code Detection in Arbitrarily Acquired Images J. Journal of Mathematical Imaging & Vision, 2013, 45(3):277-292.专业班级软件1226班学生要求设计(论文)工作起止日期2016年3月21日2016年6月24日指导教师签字日期2016年3月21日教研室主任审查签字日期系主任批准签字日期基于Android手机的二维码的生成与解码工具的设计与实现摘 要随着新兴移动终端平台的崛起与迅猛发展,日益增多的传统PC端软件被移植到了移动平台,例如智能手机、平板电脑、智能电视、智能穿戴设备等智能终端设备。在这些主流平台中,基于Android系统的设备的使用量无疑是智能设备市场最高的,所以为Android用户开发满足日常使用的软件成为了现在的大趋势。伴随着科技的快速发展,手机已成为人们生活中不可或缺的一部分,尤其是在近些年,手机的主要功能除了基本的电话和简讯外,还额外增加了若干日常辅助的功能,特别是二维码扫描逐步普及,因此二维码扫描器是手机必不可少的软件。一款功能强大、操作简捷的二维码扫描器软件便能够大大提高用户的工作、学习效率。本论文将逐步介绍基于Android手机的二维码的生成与解码工具的开发背景和意义,接着详细介绍了本系统的分析、设计与实现过程,然后介绍了软件测试的基本内容,用软件工程的思想完成了一系列工作,最后对本论文做了总结。关键字:Android;二维码;SQLite数据库;智能手机The Design and Implementation of the Two-Dimensional Code Generation and Decoding Tool Based on Android Smart PhoneAbstractWith the development and rise of mobile terminal platforms, an increasing number of traditional PC software has been ported to mobile platforms, such as iPad, iPhone, Android and other smart terminal devices. In these mainstream platforms, devices based on Android occupy the largest market share, therefore developing software for Android users meeting their demands of daily routine works is one of the most popular trend.With the rapid development of science and technology, phones have been being the indispensable parts of the peoples daily life. Nowadays, besides the fundamental functions such as making calls and sending text messages, there is a great number of additional applications for supplementary uses, especially the gradual popularization of two-dimensional code, consequently a QR code scanner is a necessary software for smart phones. A powerful easy-to-use scanner could develop the users efficiency in work and study effectively.This paper will introduce the developing background and meanings of mobile two-dimensional code scanner based on Android gradually, and introduce the processes of system analysis, design and implementation in details with the thought and method coming from software engineering. At the last stage summarize the whole paper.Key words: Android; two-dimensional code; SQLite database; smart phone目录前言11绪论21.1本课题的研究背景21.2本课题研究现状21.3本论文研究内容41.4本论文框架介绍42相关技术及开发平台62.1开发工具及环境简介62.2Android系统62.2.1Android系统的架构72.2.2Android系统四大组件73系统分析93.1概述93.1.1系统分析的原则93.1.2系统分析的方法93.1.3结构化分析93.2性能需求分析93.2.1实用性原则103.2.2可扩展性与可维护性原则103.2.3安全可靠性原则103.2.4用户界面美观原则103.2.5准确性与原则性原则103.2.6易用性原则113.3系统可行性分析113.3.1技术可行性113.3.2经济可行性113.3.3社会可行性123.4系统功能需求124系统设计134.1概要设计134.1.1系统设计目标134.1.2系统功能模块设计134.1.3用例图144.1.4流程图154.1.5部署图164.2详细设计164.2.1功能详细设计164.2.2数据库设计174.3工程文件结构设计175系统实现195.1概述195.2重点设计及代码195.2.1二维码识别及解码过程195.2.2二维码编码及生成过程225.2.3镜头自动对焦功能235.2.4数据存储(SQLite)功能235.2.5历史查询功能255.2.6首页自动跳转功能285.3重点布局格式及代码295.3.1扫描界面布局效果图(图5-1)及其代码295.3.2生成界面布局效果图(图5-2,图5-3)及其代码325.3.3历史界面布局效果图(图5-4)及其代码365.3.4跳转欢迎界面效果图(图5-5)及其代码386系统测试416.1软件测试的定义416.2软件测试的测试用例416.2.1二维码扫描功能的测试416.2.2二维码生成功能的测试417总结42致 谢43参考文献44外文文献45中文翻译5145前言随着移动智能终端平台的兴起与迅猛发展,日益增多的传统PC端的软件被移植到了基于Android和iOS等主流智能操作系统的移动设备上。在这些常见的平台中,Android系统所占的市场份额无疑是最大的,在中国大陆地区的占比高达76.4%(数据截止至2016年2月),所以开发基于Android的应用、满足大量的Android系统使用者的需求成为了行业的一大主流趋势。在当前移动平台爆发的时代,传统的PC软件已不能再满足用户的生活、工作、学习等的日常需求。PC软件的局限性在于只能在固定的地点使用,这与当今社会所需要的软件能够随时随地使用的特性产生了冲突,所以移动平台软件的大量出现与发展是社会的必然趋势,移动终端的便捷性帮助人们摆脱了软件使用的地点、环境等的限制。与传统的PC端软件相比,本设计在若干个方面都有很大的优势。把一些使用率很高的日常软件的风格及操作方法进行统一,并且把它们相似或者相近的功能集中在一个软件平台中,不仅使使用风格得到了统一,也使得用户得到一站式的日常工具使用体验,并且可以使这些软件中的功能得到互补,相互共享资源,为本来硬件条件就不是很好的手机提供一个能够轻松运行的软件。本软件的优势体现:1随时随地使用,不受地点限制;2统一移动平台软件使用风格;3操作方便快捷易上手,多用户独立使用;4数据永久性保存,随时可以翻阅查看。1 绪论1.1 本课题的研究背景现在智能手机可谓是爆发式增长,传统手机正在逐步退出手机市场,渐渐消失在消费者的视野中,诺基亚就是在这样的消费环境中受到了极大的困扰,最终在2013年1月份,当年风靡一时的塞班系统彻底退出了历史舞台。取而代之的为目前三个使用率最高、关注度最高、几乎占据了全部市场份额的手机平台,根据市场份额占据的高低依次为:Android,iOS和Windows Phone平台,这三个平台中Android的占有率最高,截止到2016年1月份,Android所占全球市场份额高达81.6%,排名第二的iOS系统则占据了全球市场份额的15.9%。国外对二维码技术的研究始于上世纪80年代末,在二维码符号表示技术研究方面已研制出多种码制。这些二维码的信息密度都比传统的一维码有了较大提高,二维码作为一种全新的信息存储、传递和识别技术,自诞生之日起就得到了世界上许多国家的关注。我国对二维码技术的研究开始于1993年。随着我国市场经济的不断完善和信息技术的迅速发展,国内对二维码这一新技术的需求与日俱增。二维码的各个码制都有其分别的专门字符集,每个字符都占据一定的空间位置,具有相应的比较功能。与此同时,二维码还能够对异行的信息进行自动识别并能够妥善处理图形一定程度上的方向旋转及形变。二维码具有以下优点:1编码密度高,信息容量大;2编码范围广;3容错能力强,具有查错和改错功能;4解码较为可靠;5可引入加密措施;6成本低,易制作,持久耐用。很明显,二维码在逐渐融入普通群众的日常生活里,因此,开发一款基于Android平台的二维码的生成与解码的工具不仅是潮流趋势,也大大便利了人们的日常生活,使得日常活动更加简洁、高效。1.2 本课题研究现状Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。Android的版本也经过了一系列的发展与变化,该系统以甜品名称来为依次出现的版本命名。经过了若干个重大的革新,Android 1.5 Cupcake(杯子蛋糕)最先实现了虚拟键盘,而当时的智能手机主要还是依赖于外部的物理键盘来进行输入,这个理念也是来自于当时取得了巨大成功的iPhone一代;随后的Android 1.6 Donut(甜甜圈),其最大的改变来自于对不同分辨率的屏幕的支持,独立于像素密度,这使得有更多可能的组合出现;下一个大的发展来自于Android 2.0 clair(松饼)中对相机应用的提升,LED闪光灯、色彩效果、场景模式、对焦模式、白平衡等现如今习以为常的效果都是在这个版本中加入到系统内的;Android 2.2 Froyo(冻酸奶),这一版本带来了两个重要的功能速度的提升和Wi-Fi热点的支持,虽然Dalvik在Android 5.0的版本中被Google的ART模式所取代,但当时还是使得设备的性能提升了2到5倍,另外Wi-Fi热点的加入使得网络功能更好的应用在了移动终端,为智能设备带来了重大变革;Android 2.3 GingerBread(姜饼)是一个里程碑式的发展,甚至于今天仍有11%的Android设备在运行这个版本,无数小的新功能累积起来造就了一个出色的系统更新,并且添加了对更多传感器的支持,包括气压计和陀螺仪;Android 3.0 Honeycomb(蜂巢)是针对平板使用者的用户体验的一次提升,而Android 4.0 Ice Cream Sandwich(冰淇淋三明治)是对UI的一次提升;Android 4.1和Android 4.2都被命名为Jelly Bean(果冻豆),Google Now的加入是一个大的改变,很大程度上提升了智能设备的智能性,使得人机更加友好,用户体验更轻松;Android 4.4 Kitkat(奇巧巧克力)则更加注重低端市场的发展,同时也整合了自家服务,力求防止Android系统更加分散化、碎片化;Android 5.0 Lollipop(棒棒糖)则将虚拟机更换为ART,整合了碎片化,并将支持64位处理器;最新的SDK版本为Android 6.0,代号Marshmallow(棉花糖),其最大的亮点是为用户提供两套相互独立的解决方案。智能手机和平板电脑的普及应用催生了之前并不被看好的二维码应用,大家竞相投入大量资源进行技术研发。马化腾说:二维码是移动互联网入口。目前Android平台的应用软件种类繁多,涉及到了普通群众日常生活的方方面面,包括娱乐、学习、办公等等一系列领域,同时二维码扫描器技术在Android平台的应用已经非常广泛,本课题二维码扫描器也是安卓平台常见的软件之一。1.3 本论文研究内容本文主要介绍和阐述一个手机平台的软件如何实现一个二维码生成和解码的工具。该软件使用方法简单,易学易会,不需要额外的操作培训,容易上手,其原因主要是在UI设计上采用了当前的移动平台上主流的设计理念:简单和引导。本软件包括的功能有二维码的扫描及解码,二维码的生成和历史记录查询三个模块。根据软件工程的思想,进一步确定了软件设计及开发的步骤:1) 查询有关资料,明确该软件开发的意义,确定系统实现的技术与方式,设计整体的架构。2) 了解相关使用者的习惯和心理,进行用户需求分析的工作。3) 起草功能模块,画出模块图。4) 搜集软件制作素材。5) 界面设计及完善,编写代码。6) 编写代码实现各个功能模块。7) 根据Android特有的使用风格进行布局与优化。8) 完成系统测试并改进。1.4 本论文框架介绍本文详细介绍了基于Android手机平台的二维码扫描与解码工具的设计与实现的全过程。从开始到程序设计的实现,将在一下的几章中予以介绍:第1章 绪论,这一章主要是对毕业设计所开发的系统进行初步分析,总结归纳出所需要完成的工作,并且对开发的具体内容做了简介;同时本章还对该软件的开发背景与开发意义进行分析。第2章 相关技术及平台介绍,对涉及到的理论知识和用到的开发工具、开发环境等做出相关阐述。第3章 系统分析,主要介绍了系统分析的概述,性能需求分析、系统可行性分析、系统功能需求、系统使用流程分析等,除此之外还包括本系统需要实现的功能模块和本系统的需求分析等。第4章 系统设计,主要介绍了本系统的整个设计过程、设计思路以及设计中应该注意的问题,分别包括系统设计目标、系统功能模块设计、系统功能模块描述图、工程文件结构设计等。第5章 系统实现,主要介绍了各个功能模块的核心功能设计及其详细的代码,和重点的布局效果图及其具体的代码实现。第6章 系统测试,主要介绍了本设计的实现环境和实现要求,同时也介绍了测试在软件开发环节中的重要性和给出本系统的测试过程与结论,并简单介绍了软件测试的意义、目的、原则和过程。第7章,总结,总结归纳了在毕业设计的完成和毕业论文的书写的时间内的心得、感悟、体会和收获,也简述了毕业设计的简单理念等。最后 致谢、参考文献、外文文献、外文文献翻译。2 相关技术及开发平台2.1 开发工具及环境简介a. Eclipse Standard 4.4.0 (Luna)Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境,但是Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Kit,JDK)。 b. SQLiteSQLite是一款轻量型的小型数据库,是遵守ACID的关联式数据库管理系统。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如TCL、C#、PHP、Java等,还有ODBC (Open Database Connectivity) 接口;同样比起MySQL、PostgreSQL这两款世界著名的开源数据库管理系统来讲,SQLite的处理速度更快。c. ADT (Android Development Tools) Eclipse是开发Android的工具之一,在Eclipse的编译IDE环境中,安装ADT,可以优化或更新Android的开发工具及环境。d. Android SDK (Software Development kit)SDK是软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。e. APIAPI(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。在Google的Android API选项中,可以查询所有预先定义好的类、接口、成员变量、成员方法以及需要重写的函数,极大地便利了软件开发工作者的编码过程。2.2 Android系统Android是Google宣布的基于Linux平台的开源手机操作系统的名称。该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。2.2.1 Android系统的架构Android的系统架构和其操作系统一样,采用了分层的架构,如图2-1。图 2-1 Android架构图从架构图来看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。2.2.2 Android系统四大组件Android系统为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图。像Activity和ContentProvider是可见的视图,而Service和BroadcastReceiver则是不可见的,它们只在系统的后台运行。下面分别介绍四大组件:a. ActivityActivity是应用程序的表现层,应用程序中的每个屏幕显示都通过继承和扩展基类Activity来实现的。一个应用程序中可以包含多个Activity,它们之间可以相互跳转,来达到手机屏幕之间的相互切换。Activity利用View来实现应用程序的图形用户界面(GUI),而手机用户则直接通过GUI和应用程序进行交互,如应用程序通过GUI向用户显示信息,用户通过GUI向应用程序发出指令和响应。Activity的生命周期是指一个Activity从创建到销毁的过程,期间可能经历多个状态的变化,每次状态的变化都会触发相应的回调方法,如图2-2所示(见下页)。图2-2 Activity的生命周期及回调方法b. Service Service是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期中的方法就可以了。Service是Android四大组件中与Activity最相似的组件,都代表执行的程序,Service与Activity的区别在于Service一直在后台运行,它没有用户界面,所以绝不会到前台来。一旦Service被启动起来之后,它就与Activity一样。完全具有自己的生命周期。Service的特点为没有UI;进行耗时较长或者与用户没有交互的一些功能;Service具有较高的优先级,比stop的Activity优先级要高,最高的优先级是前台Activity;具有较长的生命周期。c. BroadcastReceiver BroadcastReceiver 顾名思义为广播接收器,这种组件本质上就是一种全局的监听器。用于监听系统全局的广播消息。之前在按钮上添加的监听器只是程序级别的监听器。由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统中不同组件之间的通信。d. ContentProviderContentProvider用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。音频、视频、图片、联系方式等是Android常用的数据类型,为了数据的存储及保护,Android为这些数据提供了大量的ContentProvider。ContentProvider机制能够将数据存储在多个个应用里,也能从多个应用里提取数据,这也是跨应用共享数据的方式之一。3 系统分析3.1 概述系统分析是在总体规划的指导下,对某个或若干个子系统进行深入仔细地调查和研究,确定新系统逻辑功能的过程。3.1.1 系统分析的原则分析阶段的本质工作是发现、理解并归纳出系统的业务过程。在二维码扫描与生成工具的系统分析中存在很多困难,为了克服困难,需要充分做好分析的工作,在进行系统分析时应遵循系统分析的原则: 1. 将逻辑设计与物理设计分别独自进行的原则2. 面向使用者个体的原则3. 结构化分析的原则通过实际调查并与相关用户交流后,分析Android平台二维码扫描器的具体的要求,需要确定该系统的逻辑功能。 3.1.2 系统分析的方法结构化分析方法的基本思想是该系统采用结构化分析方法,以抽象和分解为手段,对系统进行自顶向下的逐层分解,逐步细分,逐步求精,从而达到易于理解的目的。3.1.3 结构化分析结构化分析(Structured Analysis,简称SA)是软件工程中的一种方法,结构化分析和结构化设计可以分析商业的需求,再转换为规格文件,最后再产生电脑软件、硬件配置及相关的手册及程序。结构化分析及设计技术是系统分析的基础,是由1960到70年代的系统分析技术发展而成。3.2 性能需求分析为了保证软件能够长期、安全、稳定、可靠、高效地在Android设备上运行,本系统应该满足以下性能需求。3.2.1 实用性原则充分利用手机的硬件资源优势,为本软件提供信息支持,充分考虑用户获取信息的心理需求,在简洁实用的基础上对软件界面层级进行布局。3.2.2 可扩展性与可维护性原则从某种程度而言,软件是一种 “易过期”的产品,产品更迭过快,导致一款软件需要迅速地更新才能适应潮流,满足用户的需求,因此软件良好的可扩展性和可维护性是不可或缺的。在系统设计时,应尽可能将系统模块化、组件化,这样会使得在更新软件或者添加新功能时能够有效保护不需要做改动的部分。除此之外,系统的可扩展性不仅应该接纳已有的系统,还应该能够适用于未来发展的新系统,并且在未来系统软硬件扩展时,能有效地保护已有的资源。3.2.3 安全可靠性原则该软件是基于手机设备的,其安全性与常见的手机终端应用软件是相似的,该软件不会读取任何用户的隐私信息,也不会在未经许可的情况下擅自存储用户的客户端信息,同样不会泄露用户的私密信息。所以,该软件的安全性是较高的。3.2.4 用户界面美观原则界面参考了时下流行的软件风格进行了设计,并在UI设计及配色方案上选择了是用户普遍接受的颜色。在此基础上,加入了对用户具有诱导性的按键设计,使得用户不需要在使用的时候进行特别的学习和指导。达到了在用户界面美观、简介、大方的基础上,友好的融合了系统功能。3.2.5 准确性与原则性原则软件的准确性是一个软件成功与否的关键,本软件核心的技术便是使用了Google提供地ZXing jar包,其中提供了二维码生成及解码所需要的全部类和方法,并且能够不收二维码类型的限制,都完成解码和编码的工作。3.2.6 易用性原则软件是Android平台上的软件,自然保留了Android软件的应用性原则,平易近人,不需要额外学习,所有的布局格式都是带有诱导性的,可以保证用户在除此使用该软件时便可轻松上手,避免发生新用户不会操作的人机不和谐问题。 3.3 系统可行性分析系统的可行性分析也称为可行性研究,是在调查的基础上,针对新软件的开发是否具备必要性和可能性,对新软件的开发从技术、经济、社会等方面进行分析和研究,以避免投资失误,保证新软件能够成功开发。下面将分别从技术、经济、社会三个方面对基于Android系统的二维码生成与解码的开发进行分析和研究。3.3.1 技术可行性技术可行性主要在于分析当今社会技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要,保证决策的技术和决策方案的技术不能突破组织所拥有的或有关人员所掌握的技术资源条件的边界。该软件采用的开发平台Android是当前最受欢迎的手机软件开发平台之一,它完全满足二维码扫描器的开发实现的要求。因此,软件的软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此软件的需要。由以上分析可知,本软件的开发在技术上是可行的。3.3.2 经济可行性本软件开发成本较低,在经济上完全是可以接受的,并且本软件实施后可以显著提高工作效率,有助于二维码的管理和应用。而且软件维护简单,实用性强,一次性开发,即可长久使用,要做的只是把软件加载在移动通信设备上。当软件满足不了用户需求时,只需对信息加以更新,对具体功能模块加以改进完善,所付出的也是较小的代价。由以上分析可知,本软件的开发在经济上是可行的。3.3.3 社会可行性本软件的社会可行性主要从法律因素、用户使用可行性两方面进行研究,所得出的结论如下:a. 法律因素本软件是根据基于Android的二维码扫描与生成工具的实际工作情况开发研制的,是通过大量的调研得出的,软件的软件设计是在独立的环境下完成的,并无抄袭其他软件产品。b. 用户使用可行性本软件对用户的要求,不需要特别的技术能力。使用软件的管理员,在投入使用前,无需对使用人员进行培训。这样既减少投入成本又简化了操作环节。由以上分析可知,本软件具有社会可行性。3.4 系统功能需求该基于Android的二维码扫描与生成工具软件实现了手机二维码扫描、二维码生成和历史记录三大功能,具体来说,本系统包含以下功能:a. 二维码扫描模块软件可以扫描所有二维码图片并识别出其中的信息,如果是链接的会提示使用浏览器打开链接,在打开连接的过程中系统会自动弹出Pop Window来让用户选择打开连接的软件。b. 二维码生成模块手动输入文本信息即可生成对应的二维码图片。c. 历史记录模块记录二维码扫描和生成的操作记录,可以查看、删除等。综上,该软件基本包含了普通用户对于二维码的操作需求的全部功能。4 系统设计4.1 概要设计4.1.1 系统设计目标系统设计是在系统分析的基础上,设计出能满足预定目标的系统的过程。系统设计内容主要包括:确定设计方针和方法,将系统分解为若干子系统,确定各子系统的目标、功能及其相互关系,决定对子系统的管理体制和控制方式,对各子系统进行技术设计和评价,对全系统进行技术设计和评价等。本系统是设计目标是建立一个基于Android的二维码解码与生成工具,基本实现了一个二维码扫描生成器应有的功能,具有操作方便、快捷、简单易上手等特点。用户界面友好、操作简单,每一步骤的操作都经过精心的设计,将复杂的统计运算过程隐藏于简单的操作之下,系统的设计能降低使用前的培训、实施和使用中的维护时间、成本,大大减少在培训、使用和维护中投入的精力和财力。另外,通过合理而先进的网络设计及软、硬件的优化选型,足可保证系统的可靠性与容错性。系统以用户需求为目标,以方便用户为原则,处处为使用者着想。4.1.2 系统功能模块设计该二维码解码与生成工具包括二维码扫描与解码、二维码生成、历史记录查询三个主要功能,这三个主要功能下又细分了若干重要的功能。图4-1为该系统的功能模块图。这是软件工程中一个最为重要的环节之一,它能够展示出该工程所要实现的各类不同的功能,并将其分类,形成一个自上而下的模块介绍,在后续的章节内会根据设计好的功能模块图,搭建正确的开发环境及编程平台,选择合适的编程语言和数据库,通过详细的编码设计来实现这些具体的功能。(图详见下一页)图4-1 系统功能模块图4.1.3 用例图用例图是指由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的静态视图。在本文所论述的系统中,涉及人员较为简单,系统参与者仅为用户和系统,对每个用例的详细描述如下:用例名称:二维码的扫描 执行者:用户目的:将所需扫描的二维码置入识别框内用例名称:二维码的识别 执行者:系统目的:将用户置入识别框内的二维码进行解码工作,并将结果返回给用户用例名称:文本内容的输入 执行者:用户目的:将所需生成二维码的文字输入到指定的输入框内用例名称:二维码的生成 执行者:系统目的:将用户输入到文本框内的内容进行加密编码,并最终以二维码的形式返回给用户用例名称:历史记录的查询 执行者:用户目的:可以查询在本机上操作的二维码扫描与解码、编码与生成的所有记录用例名称:历史记录的删除 执行者:用户目的:可以对在历史记录查询界面查询到的信息进行删除操作该项目的用例图如图4-2所示。图4-2 系统功能用例图4.1.4 流程图流程图展现的是流经整个系统的过程的展示,图4-3为该工程的流程图。开始结束NN是否选择输入生成界面是否选择历史记录界面N是否选择扫描解码界面YYY在文本框内输入文本信息将二维码置入扫描框(输入)输出历史记录表程序对文本信息进行编码程序将二维码进行扫描、解码将扫描生成的二维码输出将扫描结果以网页的形式输出4-3 系统流程图4.1.5 部署图部署图大多是用来显示所表示的系统中的软件和硬件之间的关系以及物理架构。通过部署图可以认识到软件程序和硬件组件之间的物理关系还有处理节点的组件分布情况。除此之外,部署图可以显示系统在运行的结构,包括了运行时的硬件节点、软件组件的静态视图。总而言之,部署图表现了该软件系统的硬件组成、基于硬件所运行的软件、用于连接异构机器之间的中间件(即节点)。图4-4即为该工程的部署图。图4-4 项目部署图4.2 详细设计4.2.1 功能详细设计a. 二维码的扫描及解码模块:该模块所要完成的工作是调用移动设备的摄像头硬件(需要在manifest中获得调用相机的权限),并在屏幕上出现镜头捕捉框(只有捕捉框内的二维码才可以得到扫描,出现在捕捉框之外的虚化部分则不做出任何反应),当捕捉框对准一个二维码时,该捕捉框会进行自动对焦,并快速完成对该二维码的解码工作。结果的返回会以任意形式打开,此时系统会自动弹出一个Pop Window的对话框,由用户自行选择要以何种软件(选择不同的浏览器,可以是自带的浏览器,也可以是后期安装的浏览器)查看该运行结果。该部分使用了Google提供的ZXing jar包来完成操作,其中提供了对于二维码的解析器,能够依次扫描二维码中的方块,来解析出其中包含的信息。该模块的部分功能需要移动网络。b. 二维码的生成模块:该模块主要完成的工作是将用户输入在文本框中的文字信息进行编码,并以二维码的形式显示在下方的空白处。c. 历史记录模块该模块主要以优化ListView的方式显示所有扫描解码的二维码和输入编码生成的二维码,可方便用户对历史操作进行查询。该内容将以优化ListView的形式展示,自定义了Bean类,载入到SimpleAdapter中,以这种方式来显示历史记录界面的内容。对于每一条记录,短按可以打开更详细的介绍界面,长按可以弹出删除的操作选项,用户可以在这一界面完成对于历史记录的删除操作。另外,历史记录模块使用了数据库,对于这一部分,将在下面的数据库设计中做更进一步的介绍。4.2.2 数据库设计由于该系统是基于Android平台的,所以数据库选择了轻量型数据库SQLite,它占用内存和资源都较少,运行速度较快,能够很好地提升用户的使用体验。在该工程中,由于功能较为简洁,所以只有一个表,具体表的设计参见表4-1。表4-1 数据库表结构字段类型摘要说明numberlong编号主键picturelong图片内容不能为空textvarchar文本内容不能为空resourcevarchar来源信息不能为空4.3 工程文件结构设计在程序开发阶段,首先确定“基于Android手机的二维码的生成与解码工具的设计与实现”的工程名称为QRCode,根据程序模块设计的内容,建立QRCode项目。该项目下又分为9个相互独立的包,用来按功能及需求存放不同的类和Activity,具体的安排如下:monapp包内存放的是App.java的文件,用来存放基本的资料信息,如存储路径、图片格式等;monapp.activity包存放的是BaseActivity, CaptureActivity, GenerateActivity, HistoryActivity, MainActivity, QRDetailActivity, ResultActivity和SplashActivity,这些都是最基本的、能在App中直观看到的内容,它们分别有各自对应的layout文件;monapp.adapter包内存放了CommonAdapter类,它与monapp.bean包内的QRBean类共同定义了在历史记录界面用到的优化ListVIew界面;monapp.db中的类是OrmDatabaseHelper,用来存储数据库操作帮助类;monapp.utils包中是各种小工具,用来定义文件、屏幕、图形排布方式等;com.ws.twodimcode.zxing.demo.camera包中则是自定义相机时用到的类,包括自动对焦、闪光灯、震动等多种效果的实现;com.ws.twodimcode.zxing.demo.decoding包是核心部分,包括了二维码的编码、解码方式,线程,计时器等效果;com.ws.twodimcode.zxing.demo.view包则是视图效果,用在二维码的生成界面。QRCode项目的文件结构如图4-5所示。图4-5 工程文件的文件结构5 系统实现5.1 概述本章介绍本系统的各个模块的设计和实现。首先在Eclipse中配置好ADT和Android SDK等开发环境,然后新建一个Android项目,项目名为QRCode,然后在Android项目中的AndroidManifest.xml文件中配置本软件需要使用的权限。最后在各个包中写入所需的类和代码,实现系统所要求的全部功能。5.2 重点设计及代码5.2.1 二维码识别及解码过程final class DecodeFormatManager private static final Pattern COMMA_PATTERN = Ppile(,) ;static final Vector PRODUCT_FORMATS ;static final Vector ONE_D_FORMATS ;static final Vector QR_CODE_FORMATS ;static final Vector DATA_MATRIX_FORMATS ;static PRODUCT_FORMATS = new Vector (5) ;PRODUCT_FORMATS.add (BarcodeFormat.UPC_A) ;PRODUCT_FORMATS.add(BarcodeFormat.UPC_E) ;PRODUCT_FORMATS.add(BarcodeFormat.EAN_13); PRODUCT_FORMATS.add(BarcodeFormat.EAN_8) ;/ PRODUCT_FORMATS.add(BarcodeFormat.RSS14) ;ONE_D_FORMATS = new Vector (PRODUCT_FORMATS.size() + 4) ;ONE_D_FORMATS.addAll(PRODUCT_FORMATS) ;ONE_D_FORMATS.add(BarcodeFormat.CODE_39) ;ONE_D_FORMATS.add(BarcodeFormat.CODE_93) ;ONE_D_FORMATS.add(BarcodeFormat.CODE_128) ;ONE_D_FORMATS.a

温馨提示

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

评论

0/150

提交评论