




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2016届毕业生毕业设计说明书题目基于ANDROID系统的阅读器设计与实现院系名称信息科学与工程学院专业班级计科F1202学生姓名学号指导教师教师职称副教授2016年5月28日摘要及时获取有效的信息在现在的生活当中越来越重要。近年来,随着智能设备尤其是智能手机进入我们的生活,我们获取信息的途径在不断改变,同时也越来越方便。以前人们获取信息的主要途径是通过书籍或者报纸,现在网络已经在我们的日常生活中的到普及,特别是移动网络的发展,给我们的生活带来了极大的方便。由于是开源的系统,很多厂商都为自己的设备采用ANDROID系统,况且他们可以通过定制来形成自己的风格。ANDROID系统支持的设备比较多,用户量也比较大。大众也需要一款能够在移动端打开设备中文本文件的软件,这样可以极大地方便阅读。本设计所使用的开发语言是JAVA语言,使用的开发工具是现在比较主流的ECLIPSE和ANDROID的SDK。在程序开发过程当中用到了数据库管理系统,所使用的数据库管理系统是能够嵌入到移动终端中的SQLITE数据库。本设计所要实现的功能主要是对电子书(文本文件)的操作,例如,扫描本地文本文件,打开文本文件,以及在阅读文本文件的过程当中的一些操作。关键词电子书阅读器JAVAANDROIDTITLEBASEDONTHEDESIGNANDREALIZATIONOFTHEANDROIDMOBILEEBOOKREADERABSTRACTTIMELYACCESSTOEFFECTIVEINFORMATIONISBECOMINGMOREANDMOREIMPORTANTINTHEPRESENTLIFEINRECENTYEARS,WITHTHESMARTDEVICES,ESPECIALLYSMARTPHONESINOURLIVES,WEGETTHEWAYOFINFORMATIONISCONSTANTLYCHANGING,ANDMORECONVENIENTFORPEOPLETOACQUIREINFORMATIONBEFORETHEMAINWAYISTHROUGHBOOKSORNEWSPAPERS,NOWNETWORKHASTOPERVASIVEINOURDAILYLIFE,ESPECIALLYTHEDEVELOPMENTOFMOBILENETWORK,FOROURLIFEBROUGHTGREATCONVENIENCEBECAUSETHESYSTEMISOPENSOURCE,MANYMANUFACTURERSFORTHEIRDEVICESUSINGTHEANDROIDSYSTEMMOREOVER,THEYCANCUSTOMIZETOFORMTHEIROWNSTYLEANDROIDSYSTEMSUPPORTEQUIPMENT,USERQUANTITYISRELATIVELYLARGEMASSALSONEEDACAPABLEOFOPENINGDEVICEINTEXTFILESSOFTWAREINTHEMOBILETERMINAL,WHICHCANGREATLYFACILITATEREADINGTHISDESIGNUSINGTHEDEVELOPMENTLANGUAGEISJAVALANGUAGE,THEUSEOFDEVELOPMENTTOOLSISNOWMOREMAINSTREAMTHEECLIPSEANDTHEANDROIDSDKINTHEPROGRAMDEVELOPMENTPROCESSUSEDINTHEDATABASEMANAGEMENTSYSTEM,USINGTHEDATABASEMANAGEMENTSYSTEMISABLETOEMBEDDEDINTOTHEMOBILETERMINALINTHESQLITEDATABASETHISDESIGNTOACHIEVETHEFUNCTIONISMAINLYTHEOPERATIONOFEBOOKFILETEXT,FOREXAMPLE,SCANNINGTHELOCALTEXTFILE,OPENTHETEXTFILE,ANDINTHEPROCESSOFREADINGATEXTFILEOPERATIONSKEYWORDSEBOOKREADERJAVAANDROID1绪论111课题的背景112开发课题的目的与意义113本文主要内容22安卓阅读器所用开发工具及相关技术421开发工具4211ECLIPSE4212ANDROIDADT、SDK422开发过程中使用技术的介绍5221JAVA语言5222ANDROID系统介绍6223ANDROID组件介绍7224MVC设计思想8225SQLITE数据库823软硬件需求93需求分析1031可行性分析1032软件基本功能需求1033软件功能模块的架构1234性能需求分析1335界面需求分析134软件功能的设计1541软件总体结构设计1542软件接口设计1643数据库设计16431数据库概念设计16432数据库表结构设计1744代码的可维护性设计195软件功能的实现2051欢迎界面功能的实现2052书架界面的实现21521本地文件的实现21522实现点击文件添加书架、阅读或收藏23523实现管理书架上的书籍24524展示电子书信息的实现2553分享功能的实现26531分享软件功能的实现26532分享电子书功能的实现2654阅读电子书主界面的实现27541阅读主界面及翻页操作的实现27542设置阅读风格的实现28543调整字体大小的实现29544书签管理的实现29545关键字搜索的实现30结论31致谢32参考文献331绪论11课题的背景从第一台计算机为人类工作到现在已经有几十年的时间,在这几十年的时间中计算机从外观和性能上都发生了巨大的变化。计算机的处理器性能越来越强大,所能做的任务也越来越多,从外观方面计算机趋于微型化,可移动性和便携性成为现在人们对计算机的新要求。最近几年来在可移动终端方面发展迅速,产品更新周期也非常短,跟人们的生活带来了极大的方便。特别是智能手机的诞生,让人们的生活方式发生了很大的变化,科技的进步让我们感受到了它给我们带来的便捷。现在通过智能终端我们可以即使了解到很多咨询信息,随时随地可以共享别人在网络上贡献的资源。ANDROID以及IOS和WINDOWS移动终端设备是近几年新兴的设备,给我们的工作和生活带来了极大的便利。而在移动终端设备中,ANDROID操作系统的设备又是市场占有率最高的设备,我们通过移动设备可以做许多以前只能在固定的地点才能做的事情,例如读书看报、购买商品等。以前我们读书看报要去图书馆,现在我们可以使用电脑看电子版的书籍,有了智能移动终端之后我们可以随时拿出智能终端看我们喜欢的文字,开发一款可以用来阅读的ANDROID阅读器是很有必要的,这样可以更方便地去阅读,也可以打发一些无聊的时间。在ANDROID、IOS和WINDOW平台中之所以在ANDROID平台下进行开发,一方面的原因是ANDROID设备的市场占有率比较高,可以让更多的人进行使用。另一方面是相对于IOS闭源的特点,ANDROID是一个开放的平台,自己在开发的过程当中可以借鉴别人产品中比较好的特点,同样自己开发出来的APP也可以让更多的人去参考达到一个资源共享的目的。开发基于ANDROID的电子书阅读器,不仅有非常好的市场条件另一方面也有很大的用户群体,可以让更多人从中受益12开发课题的目的与意义随着AANDROID设备的普及以及APP数量的增加,用户对于一款APP的体验要求越来越高,过去对于一款APP的要求是实现满足用户的基本功能,而现在我们对于一款APP的要求是在实现基本功能的基础之上能够有一个良好的UI以及有很好的体验。随着现在前端技术的不断发展,美观的UI控件能够在用户的使用过程中有一种良好的体验。安卓是一个开放的平台,目前国内的安卓手机厂商比较多,手机的型号以及屏幕的尺寸也各有差别。目前国内许多厂商在为自己的产品植入ANDROID系统的时候都是经过深度地改造,特别是在界面风格方面。目前比较受欢迎的有小米的MUI,华为的EUI以及魅族的FLYMEOS,这些手机的ANDROID系统都是基于原生的ANDROID系统,经过厂商的定制之后形成带有自己风格特点的系统。一个品牌的手机的销量尚且与自己深度定制的系统给用户带来的体验有很大的关系,何况一款任何ANDROID设备都可以使用的ANDROID应用,其下载量肯定和界面给用户带来的体验息息相关。开发本课题,目的在于能够开发出一款有良好的用户交互界面并且可以与绝大多数ANDROID产品适配的可以阅读电子书的APP。现在人们的生活节奏非常快,但是在上班或者下班的途中例如坐公交或者地铁的过程中可以通过该软件阅读一些平时需要整块时间才能阅读的一些书籍。一方面节约了时间,将零碎的时间都充分利用起来,最重要的一点是不用带着厚重的纸质书籍,会更方便一些。13本文主要内容“基于ANDROID的阅读器”提供了扫描手机内的TXT文件,打开TXT文件,添加书签,改变屏幕亮度,改变阅读的背景等功能。在开发的过程当中,功能模块的设计,到用户界面的设计,以及中间业务逻辑的处理和需要用到的数据库的设计都需要经过严密的分析,才能够让用户使用起来有一个很好的体验。ANDROID系统发布于2009年,以JAVA语言作为开发语言,采用开源的形式。采用开源形式的最大优点就是每个感兴趣的人有好的作品的时候都可以拿出来分享,在ANDROID项目中有许多效果都是开源社区的一些爱好者贡献出来的。ANDROID正在不断地壮大,使用ANDROID系统的设备现在也在不断增加,由原来的智能手机扩展到智能电视、智能路由器盒子等产品。本文主要是对在项目的开发过程当中所用到的技术进行一种梳理和总结,以及所用技术的一种完整介绍,同时对ANDROID应用市场中现有的类似的APP进行分析,为产品的迭代提出新的需求以及对现有的功能进行改进。2安卓阅读器所用开发工具及相关技术21开发工具211ECLIPSEECLIPSE是一款免费的集成开发环境,功能很强大。ECLIPSE有几个主要的组成部分平台运行库、工作区、工作台。平台运行库是ECLIPSE的核心,工作台主要为ECLIPSE提供用户界面,工作区是负责用户管理资源的插件,包括用户创建的项目以及项目当中的文件。ECLIPSE也是支持很好的支持跨平台的集成开发环境(IDE、安装不同的插件ECLIPSE可以支持不同的开发语言,例如C、PYTHON等。ECLIPSE是一个非常强大的开发工具,它可以继承服务器以及团队协作的软件,下载使用ECLIPSE开发JAVAWEB项目和ANDROID项目的比较多。在该项目的开发过程当中使用了在ECLISPE上的ANDROID开发工具ADT并使用GOOGLE提供的SDK作为编译开发环境。212ANDROIDADT、SDKANDROIDADT是ANDROIDDEVELOPERTOOLS的简称,它扩展了ECLIPSE的功能,可以让开发者快速建立ANDROID项目。最开始使用的是ECLIPSE独立的ADT开发环境,但是由于是ECLISPE一种通用的集成开发环境所以在开发过程当中有时会出现兼容性的问题,为了解决这一个问题安卓推出了ADTBUNDLE版本当然现在ANDROID集成开发环境除了ECLISPE外还有ANDROID自己独立的集成环境ANDROIDSTUDIO。开发工具的选择也是根据自己的爱好因人而异,在开发过程当中我使用的是ECLISPSE作为开发工具。SDK是SOFTWAREDEVELOPMENTKIT的简称,及软件开发工具包。ANDROIDSDK下载之后不需要安装,解压即可直接使用。使用ECLIPSE开发AANDROID应用需要给ECLIPSE安装SDK插件,这样ECLISPE和ANDROIDSDK建立连接之后可以在ECLIPS中启动ANDROID模拟器从而模拟程序在真机上运行时的效果,同时也可以进行程序的调试。ECLISPE除了使用这种方式连接ANDROID开发工具自带的模拟器之外还可以使用独立的ANDROID模拟器。在本次开发过程当中使用的模拟器是海马玩模拟器,不仅可以进行程序的调试,还可以模拟改变设备的分辨率,因为ANDROID设备的分辨率并不统一,这样可以模拟程序在不同分辨率设备上运行时的效果。22开发过程中使用技术的介绍221JAVA语言从开始接触编程语言到现在逐渐了解和使用编程语言最大的感受就是各个编程语言有自己的特点。JAVA语言最大的特点就是它的灵活性和它面向对象的特征,这样在学习的过程当中学习起来比较容易,同时它比较灵活支持不同的平台。JAVA语言三个明显的特点是抽象、继承和多态。在JAVA语言中将要操作的实体抽象为一个对象,将实体的一些特点抽象为这个对象的属性,想实体对应的一些行为抽象为方法12。理解了面向对象和其抽象的特点在开发过程当中就会很容易。继承则是JAVA语言另外一个特点,子类可以继承父类的方法,相当于在现实生活中的父子关系。多态则体现在一种方法可以有不同的实现。除了与其他语言相比JAVA语言有其自身的三大特性1虚拟机特性JAVA虚拟机为不同的硬件平台提供了一种编译JAVA代码的规范,这种规范使得JAVA可以独立于平台,做到了很好的平台无关性,这也是JAVA语言可以做到一处编写到处运行的关键11。(2)垃圾回收机制JAVA垃圾回收机制让程序编码人员在编码的过程当中体会到了其带来的好处,在C中,多想所占的内存在程序运行结束之前一直被占用,释放之前不能被分配给其他的对象;在JAVA中,当内存没有被对象引用时,此时的内存便是为垃圾。JAVA虚拟机会自动释放该内存。垃圾回收机制意味着程序不再需要对这些没用的信息进行管理,由JAVA虚拟机来帮助我们管理这些信息。这样在编码的过程当中程序编写人员就可以专注于程序的编写,而不需要对内存信息进行手动管理。(3)代码安全性JAVA代码的安全性主要有几个具体的体现异常处理机制在程序中遇到异常很常见,比如文件找不到,网络连接失败,非法参数等;异常是一个事件,它发生在程序的运行期间,干扰了正常的指令流程。在JAVA程序中,JAVA有自己独特的异常处理机制,及抛出异常和捕获异常。程序员不能直接对指针进行操作,也不能强制引用内存指针。222ANDROID系统介绍ANDROID操作系统是一种基于LINUX操作系统的用于移动设备的操作系统,ANDROID系统发布之后取代了一直占统治地位的塞班操作系统。由于它是开源的,所以许多厂商和客户都能轻松定制自己的ROM,形成自己的特色,下面分几个方面介绍一下ANDROID系统ANDROID系统的架构同其他操作系统一样,ANDROID操作系统也采用分层的结构设计,从高到低共分为4层,依次为应用程序层、应用程序框架层、系统运行库层和LINUX核心层2。ANDROID操作系统的主要组层部分如图21。应用程序层应用程序层主要包括ANDROID系统自身所带有的最基本的应用,包括通讯录,电话等基本应用,同时还有开发者的第三方应用。应用程序框架层该层是帮助程序员快速开发程序,其中包含隐藏在每个应用后面的一系列服务和系统,主要有CONTENTPROVIDER、RESOURCEMANAGER、NOTIFICATIONMANAGER和ACTIVITYMANAGER等。系统运行库层系统运行库包含的是系统运行时必不可少的一些依赖,只有在这些运行库的基础上ANDROID程序才能正常运行。AANDROID运行库是ANDROID的一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能1。LINUX内核层由于ANDROID是依赖于LINUX系统开发的,所以需要LINUX操作系统的内核来支持。内核层完成的是最基本的功能,而其他的都是在内核层的基础自上进行拓展。图21ANDROID操作系统的主要组成223ANDROID组件介绍ACTIVITYACTIVITY为活动,活动是唯一一个和用户进行交互的组件,因为每个界面都对应一个活动来对用户在界面的操作进行控制。在ANDROID应用程序中有多种方式来启动一个活动,可以在清单文件中配置,也可以调用ACTIVITY的STARTACTIVITY或者STARTACTIVITYFORRESULT方法。CONTENTPROVIDER内容提供程序的主要目的是将应用程序和数据信息分离开,这样多个应用可以共同访问相同的数据。ANDROID系统本身也提供多个内容供应程序来共享数据。比如我们经常用的社交软件视图读取我们的通讯录内容,就是内容提供者将这些数据实现了应用程序之间的共享3。BROADCASTRECEIVER广播接收者,用来接收来自应用或者系统的广播;例如当网络状态发生改变的时候系统会给我们发出一条广播通知我们网络状态发生了改变;当QQ或者微信收到新的消息的时候应用程序会发出广播通知我们收到了新的消息。广播接收者在应用程序中尤其重要,特别是当设备在锁屏状态下,当程序收到推送消息的时候是通过BROADCASTRECEIVER来通知用户的。SERVICESERVICE为服务,但是一般情况下我们习惯称SERVICE为后台服务,因为服务一直在后台运行,没有图形用户界面,相当于是一个默默地奉献者。SERVICE都是通过被前台的ACTIVITY调用之后才起作用。SERVICE的生命周期跟ACTIVITY的生命周期有着很大的关系。224MVC设计思想MVC是在程序设计中经常用到的一种设计思想,MVC设计思想在编写程序过程当中将程序抽象为三层结构,VIEW层、CONTROLLOR层和MODEL层。这样在编写程序的过程中能够进行很好地解耦合,VIEW层主要负责展示视图,另外还负责同用户进行交互,VIEW层是程序的一个入口同时也是程序的一个出口。用户通过VIEW层与程序进行交互,程序又通过VIEW层向用户展示经过处理后的结果。CONTROLLOR层是控制层,负责对前台界面发出的HTTP请求进行相应的处理。MODEL层为实体层,将程序中需要用到的对象设计成一个个对应的实体,实体层主要跟数据库联系紧密,一般实体层的一个实体对应数据库中的一张表,实体中的一个属性对应数据库表中的一个字段。MVC设计思想可以将程序的耦合程度降到最低,这样在调试程序的时候可以很好进行调试。MVC设计思想在WEB项目中体现得比较明显,在ANDROID程序中同样得到了应用,ACTIVITY负责与用户进行交互同时控制程序中界面的跳转,SERVICE层为前台的ACTIVITY提供服务16。225SQLITE数据库数据库大致分为两种类型,一种是关系型数据库,另一种是非关系型数据库。关系型数据库典型的常用的又MYSQL、ORACLE,非关系型数据库比较典型的又MONGODB。SQLITE是一中轻量级的开源的嵌入式数据库系统,SQLITE的开销非常小,检索效率也很高14。嵌入式数据库系统就是一种具备基本数据库特征的数据库文件,与其他数据库不同之处在于其他数据库都是程序驱动式而SQLITE是引擎响应式。与其他数据库不相同,SQLITE数据库没有数据类型的限制,虽然在创建一张表的时候需要声明数据类型,但是数据库并不对数据类型进行校验,而其他数据库则对数据类型进行校验,所实用的数据类型必须是该数据库支持的数据类型。SQLITE同样对TRANSACTION(事务)支持,应用事务保证了数据的完整性,同时也会提高运行速度,多条数据一起提交会比一条数据一条数据单独提交速度会快很多。与其他关系型数据库文件分开存储不同,SQLITE数据库把所有的都存放在同一个文件中,例如表结构,视图等都存放在同一个文件中,同时它还具有跨平台的特征。除了以上的优势之外,作为一个轻量级的数据库它也有自己的缺点,比如它并发访问的锁机制、SQL标准支持不太全、网络文件系统等在性能方面比其他数据库有一定的局限性15。23软硬件需求硬件需求PC处理器PENTIUM以上计算机内存512M以上软件需求操作系统版本WINDOWSXP/VISTA/WIN7开发工具ECLIPSELUNASR2442、ADT2303开发语言JAVA3需求分析31可行性分析技术可行性ANDROID是一款开源的系统,而且开发语言是使用的JAVA语言,只要具有JAVA基础,很快就恩那个上手并掌握。谷歌官网也为开发者提供了开发文档和教程,另外现在许多开源社区也有教程和针对各种问题的解决方案。开发语言选用JAVA,刚好可以利用自己在学校所学的知识,也是对自己所学知识的一种检验。ANDROID开发只用到JAVASE部分即可,从语言实现来讲具备完全的可行性。经济可行性从经济角度来讲,ANDROID是一种开源的系统同时所选的安卓开发工具也是完全免费,不用去购买专门的开发软件,谷歌官网也给出了相当完整的ANDROID开发文档,国内也有翻译的中文文档,同时现在的在线学习网站都有免费的安卓学习教程,跟着教程学习起来比较顺手,学习成本也比较低。在经济方面有完全的可行性。操作可行性与PC端的WEB应用不同,PC端的WEB应用有的可能需要绚丽的动画和界面,而在阅读器的开发过程当中并没有需要用到自己定义的控件,所用的控件都是ANDROID原生的控件,比方说按钮,输入框,展示界面等,不需要自己去定义但是在样式方面需要加上一定的修饰。阅读器最终实现的功能是可以让用户通过简单的操作实现查看本地的TXT文件,将TXT文件加入书架以及阅读TXT文件,将文件加入收藏等操作。这样用户操作起来也比较简单,在操作性上具有完全的可行性。32软件基本功能需求任何一款软件所要实现的功能一定以用户的需求为中心,一款阅读器一定要符合大众的阅读习惯,第一点应该做到大众需要的功能在阅读其中尽量包含全面,另一点需要做到在使用的过程中各功能尽可能便捷,通过更少的操作就可以达到用户想要达到的目的9。在确定软件所要实现的功能之前通过调查身边同学对电子阅读软件的需求确定了一下功能1、打开软件之后到进入软件主界面时的过渡动画界面。2、进入软件主界面之后能够选择本地文件。3、扫描手机或者SD卡存设备中存在的TXT文件并且展示出来。4、可以将展示出来的本地文件添加到书架。5、书架中已经存在的电子书,可以显示书籍的名称、存储位置以及阅读进度。6、可以手动编辑书架中的书籍,将已经看过的或者不需要的电子书进行删除。7、书签功能,可以选择自己收藏的书签并且跳转到书签指定的位置。8、快速导航功能,在快速导航功能中可以改变主界面的背景颜色、屏幕的亮度、选择夜间模式。9、字体设置功能,可通过阅读界面的调整字体按钮来调整字体的大小。10、在阅读过程当中隐藏功能按钮,当用户需要功能按钮的时候通过点击操作唤出功能按钮。11、分享功能,用户可以分享自己喜欢的文件到其他软件例如微信朋友圈、QQ好友、微信好友等,同时也可以分享软件。软件实现上述功的流程如下用户进入系统首先出现欢迎界面,欢迎界面是一个渐变效果,从出现到消失是对应的是一个透明度的变化8。欢迎界面结束之后出现的是程序的主界面,进入主界面之后右上角是一个选项组,在该选项组中有本地文件、快速扫面、关于软件、分享软件和退出软件几个选项。左上角是一个选择书架和收藏的下拉选项框,当选择书架的时候进入的是已经添加到书架中的所有书籍的内容,当选择收藏的时候展示的是收藏的书籍。在选项组的旁边有一个编辑按钮,主要功能是对书架或者收藏中的书籍进行编辑,可以选中想要删除的书籍进行删除操作。在书架或者收藏主界面,当用户点击一个书籍信息的时候会弹出一个提示框,提示框中的主要内容有书籍的封面、书籍的名称、书籍在手机中存放的路径以及书籍阅读的进度。提示框的最下面有三个按钮,依次为阅读、收藏和分享按钮,点击不同的按钮进入不同的功能。当点击阅读按钮的时候进入阅读界面,进入阅读界面之后按钮默认隐藏,当用户点击屏幕时屏幕的下部会展示增大字体、减小字体、添加到书签以及搜索四个按钮。当点击分享按钮时会弹出可以分享的选项供用户选择。33软件功能模块的架构软件功能的架构如下图所示安卓阅读器阅读器欢迎界面菜单电子书管理电子书书本地文件快速扫描分享软件关于软件退出软件阅读分享快速导航选择背景夜间模式屏幕亮度字体调节书签管理关键字搜索全选或反选删除选中图31功能模块结构图34性能需求分析软件流畅性需求一款优秀的软件不仅体现在功能比较全面,更重要的是用户使用起来比较流畅,ANDROID和IOS相比,由于IOS是闭源的系统,ANDROID是开源的系统,在流畅性方面ANDROIUD系统一直比不上IOS系统。流畅性低了用户的体验就会比较差,ANDROID流畅性比较低一方面是由于系统自身的原因,后台运行的线程比较多,开启自启动的功能项比较多。另一方面是ANDROID应用程序自身的原因。所以在流畅性方面一定要满足用户的需求,阅读器影响流畅性主要有两个方面,第一个是扫面本地文件的速度另一方面就是打开本地文件的速度,扫描和打开本地文件的速度如果太慢会让用户等待时间较长。为达到提高程序运行流畅的目的应该注意在ACTIVITY中不能做大量的逻辑运算,应该把程序进行很好的分层,另外应该注意的就是优化读取文本文件的方式,以最快的速度打开文本文件。软件数据完整需求对于数据的处理和数据的转存一定要做到数据的完整性,例如打开一个电子书的时候,电子书的信息一定要完整,包括其封面信息、存放在手机中的路径,以及阅读进度等信息。这就要求在记录电子书信息的时候要求各个字段不能为空,另外在对数据进行处理和对数据进行转存的过程当中一定要保证数据的完整性。例如添加书签时要保证书签信息的完整,在收藏电子书是要保证收藏的电子书的信息完整。只有数据完整才不会影响用户在使用软件的过程当中因为数据丢失而造成影响。35界面需求分析在众多同类的APP当中怎样才能吸引用户的眼球,首先做到的应该就是界面比较美观。以前手机软件的设计比较追随IOS系统的拟物风格,当更新至IOS7系统之后苹果转变为扁平化风格,比较受欢迎。程序的界面最重要的一点一定是简单大方,特别是在软件界面配色方面,一定要注意颜色的选取以及整个页面中颜色的统一。除了界面配色方面要做到每个界面的颜色要一致,整个APP应用的颜色要协调,页面的布局也相当重要4。ANDROID页面布局中有线性布局、相对布局、绝对布局、帧布局和表格布局,在本次设计中采用的是相对布局的布局方式,这样可以做到各个控件相对其他控件的位置能够很好地调整8。4软件功能的设计41软件总体结构设计打开软件之后第一个界面是欢迎界面,欢迎界面完成之后进入的是展示书架的主界面。进入书架之后用户可以对书架上的书进行操作,可以阅读也可以对书架进行编辑。点击电子书会弹出一个提示框供用户选择,分别是阅读,收藏和分享;选择会进入该电子书的阅读主界面,选择收藏会将该电子书放入收藏书架,点击分享则会弹出手机中现有的带分享功能的软件可以选择。进入阅读主界面的话则会自动跳转到用户上次阅读的位置,默认情况下在阅读界面其他选项隐藏,当用户点击屏幕时就会弹出多种选项界面在界面的下方会显示修改字体、添加书签、搜索的按钮;在页面上方有快速导航,快速导航中的内容主要包括修改阅读背景、调节屏幕亮度以及夜间模式的选择。根据总体功能的设计,在ECLIPSE下新建ANDROID工程,ANDROID工程的目录如下图41工程结构图各个目录的作用如下SRC存放开发者编写的源代码的目录,一般情况下根据代码功能的不同又把代码分包存放,这样在编写和调试的过程中很方便。GEN存放的是工具自动生成的文件,该文件的作用主要是对程序用到的组件进行一个声明,方便在ACTIVITY中进行引用。ASSETS存放资源文件。BIN存放可执行文件。LIBS存放在程序开发中需要引用到的第三方的JAR包。RES该文件夹主要存放程序中用到的资源,例如图片,声音等外部文件。ANDROIDMAINFESTXML整个应用的清单文件,包括应用运行时申请的权限,应用的版本信息,都在该文件中声明。42软件接口设计在设计系统的功能模块的实现时,应该做到高内聚,低耦合。接口方面,各个模块之间通过函数的调用,参数的传递来进行信息传递。这样较小了各个模块之间的耦合度,当一个模块需要传递给另外一个模块信息的时候直接调用另外一个模块中的方法,而方法的具体实现则在另一个模块中进行实现。43数据库设计431数据库概念设计数据库的设计应该根据程序中用到的实体类进行设计,数据库中的每个字段对应的是实体类中的一个属性,然后根据实体类模型画出ER图15。根据ER图进行数据库表的设计,在本程序中,数据库采用的是SQLITE3数据库,为了保证数据的完整性,在设计表的时候表中的字段都不允许为空。ER关系图如下1、电子书种类ER图图42电子书种类ER图2、电子书信息ER图图43电子书信息ER图3、收藏电子书实体ER图图44收藏电子书ER图432数据库表结构设计根据ER图进行数据库中的表的设计,三张表每张表对应的字段分别如下三个表格所示1、电子书信息表记录了电子书的信息,其表结构如表452、电子书种类表记录了电子书的种类信息,其表结构如表463、收藏电子书表记录的是收藏的电子书的信息,表结构如表47表45电子书信息表结构列名数据类型允许空是否外键是否主键依赖BOOK_IDINTEGER否否是无BOOK_NAMEVARCHAR否否否无BOOK_AUTHORVARCHAR否否否无BOOK_ADD_TIMEVARCHAR否否否无BOOK_OPEN_TIMEVARCHAR否否否无BOOK_IS_FAVVARCHAR否否否无BOOK_CATEGORY_IDINTEGER否是否无BOOK_CATEGORY_NAMEVARCHAR否否否无BOOK_SIZEVARCHAR否否否无BOOK_BEGIN_POSITIONVARCHAR否否否无BOOK_PROCESSVARCHAR否否否无表46电子书种类表结构列名数据类型允许空是否外键是否主键依赖BOOK_CATEGORY_IDINTEGER否否是无BOOK_CATEGORY_NAMEVARCHAR否否否无BOOK_IDVARCHAR否否否无BOOK_NAMEVARCHAR否否否无表47收藏电子书表结构列名数据类型允许空是否外键是否主键依赖BOOK_CATEGORY_IDINTEGER否否是无BOOK_NAMEVARCHAR否否否无BOOK_SIZEVARCHAR否否否无BOOK_ADD_TIMEVARCHAR否否否无BOOK_PATHVARCHAR否否否无44代码的可维护性设计在开发一款软件或者一个应用的过程当中,一定要考虑到代码的可维护性,因为随着项目的开发代码量会逐渐增大。有时需求也会有小的变动,如果代码可维护性太差的话修改起来会很麻烦。在程序结构的设计过程当中,采用代码分层设计,现在的MVC设计模式是很受欢迎的一种模式,不仅降低了程序的耦合度,代码维护起来也很方便3。在程序中我采用的MVC分层的设计模式,逻辑上将程序分为视图层、控制层和模型层。VIEW层在ANDROID中不同于WEB工程使用HTML或者JSP作为视图层的展示界面,这里采用的是使用XML文件结合VIEW类来生成视图层的展示界面。MODEL层在ANDROID程序中,对网络的操作,对数据库的操作等持久操作都要放在这一层实现。在开发的过程当中将会用到的对数据库的操作方法封装到一个UTILS帮助类中,需要对数据库进行操作时直接调用UTILS类中的方法。CONTROLLOR层用户操作视图层,视图层向后台发起请求,最先接收到这个请求的是控制层,控制层根据请求的类型来决定由谁处理这个请求,让后再根据处理的结果决定由谁来展示这个请求结果。5软件功能的实现经过需求分析以及系统的结构设计之后就到了关键的一步,将设计实现出来。实现功能的过程中应该按照软件运行时的流程一步一步来,从最开始软件进入欢迎界面,到软件进入主界面之后再根据主界面上面的选项一次实现各个选项应该实现的功能。功能在实现的过程当中有的功能与其他功能模块的耦合度较低,没有依赖关系,有的功能需要依赖其他的功能才能实现,因此功能实现的顺序也应该合理安排。51欢迎界面功能的实现现在ANDROID程序在打开的时候都有一个欢迎界面,各个软件根据自己针对的客户开发了不同的特效,在本程序开发工程当中欢迎界面是一个图片渐变的过程。欢迎界面相当于是用户进入程序的一个过渡效果,而过渡效果的好坏也影响着用户的体验。图51软件欢迎界面实现欢迎界面的ACTIVITY和XML布局文件,WELCOMEACTIVITY是实现该欢迎界面的ACTIVITY,打开应用之后的第一个ACTIVITY就是该ACTIVITY,在清单文件中进行配置是进应用后的第一个ACTIVITY为该ACTIVITY5,清单配置文件中控制进入应用的第一个ACTIVITY相关的代码如下该布局文件的主要作用是设置背景图片然后调整背景图片的大小使其填充满父布局。52书架界面的实现进入书架界面也是软件的主界面之后,如果之前书架中添加过书籍则会将添加的书籍展示在书架上,如果之前没有添加书籍则书架为空,可以通过选择界面右上角的菜单图标进行相对应的操作。点击菜单图标中的选项有本地文件、快速扫描、分享软件、关于软件和退出软件。其中本地文件实现的功能是打开本地文件,快速扫描是扫描本机中的TXT文件。图52书架界面521本地文件的实现点击本地文件实现的功能是浏览本地的文件夹,效果图如下图所示图53浏览本地文件夹使用FILEBROWSERACTIVITY做为由书架界面跳转到浏览本地文件夹的ACTIVITY的控制器,对设备本身的SD卡进行文件扫描,并且通过LISTVIEW展示出文件夹。522实现点击文件添加书架、阅读或收藏当用户点击本地文件然后依次进入文件夹找到TXT文件之后,点击TXT文件会弹出个选项,分别为阅读、书架和收藏。阅读为打开TXT文件,书架为将该电子书添加到书架,收藏为将该电子书添加到收藏书架。这项功能的实现原理是当用户点击文件浏览器中的TXT书籍时,触发了LISTVIEW对应的控件上的监听事件,弹出POPMENUE,同时给书架、阅读和收藏三个按钮分别添加监听事件用来监听用户下一步的操作。功能的截图如图所示图54点击文件浏览中的文件523实现管理书架上的书籍当用户进入到书架界面之后,界面的右上角除了菜单之外还有一个编辑按钮,编辑按钮的作用是编辑书架上的书籍,当点击编辑按钮之后书架上的书籍变为非选中状态。此时可以实现选中一本,全选或者取消选择,选择完成之后可以进行删除操作。界面的效果如下图所示图55编辑书架界面编辑书架信息的实现思路大致为为控制编辑的IMAGVIEW添加监听事件,当点击这个图片时触发监听事件,此时屏幕最下部弹出操作的菜单,同时为这些菜单中的IMAGEVIEW添加监听事件再对书架上的书籍进行操作。524展示电子书信息的实现当点击在书架上的电子书的时候会弹出一个电子书的详情,里面包括电子书的封面,书名,作者,电子书的路径,语言和阅读进度信息,下部还有三个按钮分别是阅读,分享和收藏。效果图如下图56展示书籍详情该功能的实现思路如下当点击书籍时触发一个事件,该事件主要是从数据库中读取完整的书籍的信息,然后展示出来。除了展示书籍的信息,还要在弹出的界面中加入三个按钮同时为这三个按钮再增加监听事件用来监听用户接下来的操作。53分享功能的实现531分享软件功能的实现随着社交软件的流行,现在许多软件中都加入了通过社交软件(如微信,QQ)分享软件给好友的功能,当点击菜单选项中的分享按钮时可以将软件信息通过手机上已经安装的社交软件分享给好友,如图所示图57分享软件功能532分享电子书功能的实现除了分享软件功能之外还可以将自己喜欢的电子书的信息分享到朋友圈,点击电子书选择对话框中的分享按钮之后会让用户通过什么程序分享,下面是通过QQ将图书信息分享给好友的截图图58分享图书信息54阅读电子书主界面的实现541阅读主界面及翻页操作的实现阅读界面是整个软件的核心部分,用户使用软件的主要时间都是在阅读界面。在阅读主界面用户可以通过左右滑动来进行翻页,同时也可以设置字体的大小,添加书签以及根据关键字进行搜索。当进入阅读界面的时候默认情况下全屏显示文本信息,当用户点击屏幕的时候下面会弹出修改字体大小,添加书签以及搜索的图标。主界面如图所示图59阅读主界面读取电子书的内容是通过FILECHANNEL类将电子书的全部内容读取出来,然后再进行分页展示,当用户进行翻页操作的时候对应的阅读进度也会发生相应的变化。实现该功能的核心代码如下542设置阅读风格的实现设置阅读风格是阅读界面的菜单按钮,菜单中主要有几项内容快速导航,设置背景、调整亮度和夜间模式。实现的方式是为菜单添加监听事件,把菜单选项中的一些选项单独放在一个XML文件中进行布局,然后为对应的每个选项添加相应的监听事件(方法),当调用对应的方法后对当前展示的VIEW进行重新加载达到改变页面风格的目的6。效果图如下图510设置阅读界面风格543调整字体大小的实现在阅读的过程当中用户可以通过下面的两个IMAGVIEW来调整字体的大小,当点击T的时候字体变大,当点击T的时候字体变小。字体大小的值是存放在一个特定的变量中,当用户点击调整字体的按钮时实际上是改变的变量的值,变量的值每改变一次VIEW就进行一次重载,这样就实现了点击调整字体调整按钮字体大小发生变化的效果。544书签管理的实现当用户在阅读图书的时候可能遇到比较喜欢的内容,为了下次直接可以阅读现在喜欢的内容可以将当前阅读的内容添加为书签,点击页面下面的书签按钮就会以本页的第一行做标识。图511书签管理界面545关键字搜索的实现用户在阅读的过程当中点击下方的搜索图标即可触发事件,在屏幕的最上方弹出搜索框,此时可以输入要搜索的关键字进行搜索。确定搜索之后调用后台的方法根据输入的关键字进行搜索。关键字搜索界面如下图所示图512关键字搜索界面结论在做本次毕业设计的过程当中让我学到了很多东西,感触最深的就是将平时学习到的东西运用到项目当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论