基于Android的电子书阅读器的设计与实现论文_第1页
基于Android的电子书阅读器的设计与实现论文_第2页
基于Android的电子书阅读器的设计与实现论文_第3页
基于Android的电子书阅读器的设计与实现论文_第4页
基于Android的电子书阅读器的设计与实现论文_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、 华科学院HUAKE INSTITUTE OF TAIYUAN UNIVERSITY OF SCIENCE & TECHNOLOGY 毕业设计论文题目:基于Android的 电子书阅读器的设 计与实现学 生 姓 名 _ _ _ 学 号 _ 班 级 _ 所属院系_ 指 导 教 师 _ _ 2021 年 6 月 1 日太原科技大学华科学院毕业设计论文任务书专业:电子工程 时间:2021年 03月20日学 生 姓 名指 导 教 师设计论文题目基于Android的 电子书阅读器的设计与实现主要研究内容本设计前台主要使用Java作为开发语言,后台使用SQLlite3作为数据库管理系统,开发环境是Ecli

2、pse。系统的主要功能包括:登录书架、查询电子书、阅读电子书,添加书签等。研究方法本设计开发工具是Eclipse和Android SDK 开发包,开发语言是Java。主要技术指标(或研究目标)为 提供第三方的电子书阅读手段,可查询并翻开 SD卡中的txt格式电子书进行阅读,用户可以根据需要选择翻页或者滚动阅读,并且可根据封面放置电子书于书架上,还可以在阅读过程中添加书签并查看。主要参考文献1 明日科技.Android从入门到精通M.北京:清华大学出版社,2021.1344.2 软件开发联盟.Android实战应用M.北京:机械工业出版社,2021.1250.3 明日科技.Java从入门到精通M

3、.北京:清华大学出版社,2021.100300.4 佘志龙.Android SDK开发范例大全M.北京:人民邮电出版社,2021.1113.5 吴亚峰.Android核心技术与实例详解M.北京:电子工业出版社,2021.22220.6 李芝兴.Java程序设计之网络编程M.北京:清华大学出版社,2021.1220.7 张白一,崔尚森.面向对象程序设计M.西安:西安电子科技大学出版,2006.130280.8 张孝祥.Java就业培训教程M.北京:清华大学出版社,2007.1235.9 李兴华.Java开发实战经典M.北京:清华大学出版社,2021.70230.10 李钟尉,周小彤.Java从入

4、门到精通M.北京:清华大学出版社,2021.87120.11 孙鑫.Java Web开发详解M.北京:电子工业出版社,2006.7480.12 阎宏.Java与模式M.北京:电子工业出版社,2002.239256.13 王世江,盖索林.Google Android开发入门指南M.北京:人民邮电出版社,2021.1102.14 李刚.疯狂Android讲义M.北京:电子工业出版社,2021.201276.15 刘卫国.Android的架构与应用开发研究J.计算机系统应用.2021,1:4344.16 Android官方网站.17 fbreader官方网站 :/.基于And

5、roid的 电子书阅读器的设计与实现摘要随着社会不断进步与开展,生活节奏不断加快,信息已经成为我们生活中不可缺少的一局部,使用平常的书本阅读已经满足不了我们对信息大量且繁杂的需求。而 已经成为我们生活中的主要构成局部,使用 作为承载书本内容的新平台已是大势所趋,群众需要一款可以在 上翻开电子书并且有良好阅读体验的软件。 本软件主要使用Java作为开发语言,使用SQLlite3作为数据库管理系统,开发环境是Eclipse。软件的主要功能包括:查询本地txt格式电子书,保存电子书到书架并进行管理,阅读本地电子书,添加书签等。关键词: 电子书,Java,SQLlite3Based on the de

6、sign and realization of the Android mobile ebook reader AbstractAlong with the social progress and development, the pace of life, information has already become an indispensable part of our life, using ordinary books reading already can not satisfy our demand for large and complex information.And th

7、e mobile phone has become a main part of our life,the use of mobile phone as a new platform of carrying the book content is the trend of The Times.Public needs a mobile software to open e-book and have a good reading experience.The front of the software using Java as a development language, the use

8、of SQLlite3 as database management system, the development environment is Eclipse.The main functions of the software include:Check the local TXT format of e-books,save the e-book to the bookcase and managed,read the local ebook,add bookmarks,etc.Key words: ebook,,Java,SQLlite3目 录TOC o 1-3 u 太原科技大学华科

9、学院毕业设计论文任务书 PAGEREF _Toc28152 I摘要( 电子书,Java,SQLlite) PAGEREF _Toc13523 IIIAbstractebook,Java,SQLlite PAGEREF _Toc21633 IV第一章 前言 PAGEREF _Toc17002 1 1.1课题背景 PAGEREF _Toc21699 1 1.2目的和意义 PAGEREF _Toc172 1 1.3开发工具及技术 PAGEREF _Toc11910 1 1.3.1开发工具 PAGEREF _Toc16617 1 1.3.2 Android平台及java语言 PAGEREF _Toc2

10、5560 2 1.3.3 Android四大组件 PAGEREF _Toc8949 3 1.3.4 sqlite3 数据库 PAGEREF _Toc2898 3 1.4软硬件需求 PAGEREF _Toc18633 4第二章 需求分析 PAGEREF _Toc13740 5 2.1可行性论证 PAGEREF _Toc9308 5 2.1.1技术的可行性 PAGEREF _Toc2226 5 2.1.2经济的可行性 PAGEREF _Toc6450 5 2.1.3操作可行性 PAGEREF _Toc789 5 2.1.4法律的可行性 PAGEREF _Toc14194 5 2.2软件的根本功能要

11、求 PAGEREF _Toc14266 6 2.3功能模块架构 PAGEREF _Toc17529 7 2.4设计的根本思想 PAGEREF _Toc1128 8 2.5性能需求 PAGEREF _Toc9545 8 2.5.1系统的流畅性 PAGEREF _Toc9993 8 2.5.2数据的完整性 PAGEREF _Toc8526 8 2.6界面需求 PAGEREF _Toc28126 8第三章 软件分析与设计 PAGEREF _Toc26689 9 3.1软件总体结构设计 PAGEREF _Toc25167 9 3.2接口设计 PAGEREF _Toc23607 11 3.2.1外部接口

12、 PAGEREF _Toc2877 11 3.2.2 内部接口 PAGEREF _Toc26911 11 3.3 数据库设计 PAGEREF _Toc2828 11 3.3.1 数据库的概念结构设计 PAGEREF _Toc15677 11 3.1.2数据库的逻辑结构设计 PAGEREF _Toc16052 13 3.4 代码与软件维护设计 PAGEREF _Toc4703 15第四章 软件功能实现 PAGEREF _Toc28314 16 4.1软件欢送界面的实现 PAGEREF _Toc30180 16 4.2书架界面的实现 PAGEREF _Toc26374 19 4.2.1点击本地文件

13、浏览本地文件系统的实现 PAGEREF _Toc11724 19 4.2.2点击电子书添加到书架的实现 PAGEREF _Toc15725 22 4.2.3管理书架电子书的实现 PAGEREF _Toc2913 27 4.2.4显示电子书信息的实现 PAGEREF _Toc28907 29 4.3分享功能的实现 PAGEREF _Toc16461 32 4.3.1分享软件的实现 PAGEREF _Toc18330 32 4.3.2分享电子书的实现 PAGEREF _Toc12552 33 4.4电子书阅读主界面的实现 PAGEREF _Toc22530 34 4.4.1阅读主界面及翻页操作的实

14、现 PAGEREF _Toc25238 34 4.4.2设置阅读风格实现 PAGEREF _Toc9988 38 4.4.3调整阅读字体大小的实现 PAGEREF _Toc6444 46 4.4.4关键字搜索的实现 PAGEREF _Toc143 48 4.4.5书签管理的实现 PAGEREF _Toc23616 50第五章 系统测试 PAGEREF _Toc29002 55 5.1系统测试目的与意义 PAGEREF _Toc24774 55 5.2测试过程 PAGEREF _Toc20920 55 5.2.1健全性测试 PAGEREF _Toc7970 55 5.2.2稳定性测试 PAGER

15、EF _Toc31440 56 5.2.3性能测试 PAGEREF _Toc28149 57 5.2.4 MTBF测试 PAGEREF _Toc19503 57 5.3测试总结 PAGEREF _Toc27636 57结 论 PAGEREF _Toc30969 58参考文献 PAGEREF _Toc31191 59致 谢 PAGEREF _Toc30889 60附 录外文资料翻译中 PAGEREF _Toc19554 65附 录数据库代码 PAGEREF _Toc9044 68第一章 前言1.1课题背景在这个信息化的时代, IT业已经成为世界开展的主流,我们对信息技术的依赖远远超过了对我们自己

16、的依赖,计算机和 已经成为我们日常生活中不可缺少的获得信息的渠道。正因为如此,各种各样的软件层出不穷,我们的生活也因为各种各样的软件变的更有滋有味。不缺乏娱乐性,也不缺乏教育意义,让我们从这些软件中受益匪浅,使我们看到了相比以前的巨大进步。同时,随着科技的开展,计算机越来越精致, 也越来越智能化,所以我们的依赖性也越来越大,越来越离不开这些给我们提供日常信息的工具。 也已不再仅仅是简单的人与人通话的工具,而是在很大程度上成为了我们获取信息的一个更好的渠道。一个好的软件,能够标志一个 品牌的地位。所以,开发一款好的 软件是相当必要的。以前我们看看杂志,小说都要去图书馆借阅,而且时间有限,很不方便

17、;而现在是在电脑上或者 上看杂志,看小说,文档。以此看来,一个好的 阅读器软件的开发是相当有必要的。并且选择Android作为开发平台,也是考虑到了近年来Android平台的大热以及应用商店的多元化,相对于IOS的不开源以及使用设备的单一,基于Android设计一款电子书阅读器软件是非常好的市场条件的。1.2目的和意义此次设计的目的很明显,就是给予阅读者更大的便利性和简洁性,阅读者不用再到处拿着一本厚厚的书籍,大大减少了读者的负担,只需要下载一本txt格式的电子书,放在SD卡中,就是人们的生活百科和资料大全。当然,秉持着支持正版书籍的原那么,一些专利性的书还是要购置阅读纸质书籍的。1.3开发工

18、具及技术1.3.1开发工具此次设计主要采用Eclipse作为开发工具,设计过程中界面UI主要基于Android的XML文件完成。 Eclipse简介:Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组效劳,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具Java Development Kit,JDK。Eclipse也是非常著名的跨平台的自由集成开发环境IDE。最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比方C+和Python等开发工具。Eclips

19、e的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。本设计使用了在eclipse上的Android辅助开发插件ADT23.0.3.并使用了谷歌提供的SDK开发包中的作为编译环境。1.3.2 Android平台及java语言以下图表展示了Android操作系统的主要组成局部和逻辑结构: 本系统是以Java为编程语言,Java是一种面向对象的语言,从接口到功能,灵活多变,语言等级较高,易于开发者掌握。软件主要运用的是利用发送Intent的方法在Activity之间的相互跳转,来实现不同

20、操作界面之间的无缝切换。运行中如果某个Activity的画面被另一个Activity所取代,那么这个Activity停止。本系统通过把View类与XML可扩展标记语言将用户界面放置在视图窗口,然后注册事件来完成相应的功能。例如,当视图要处理用户的点击事件的时候,Android就要向Framework注册一个OnClickListener等。本系统中触发事件都是通过这种来实现的。 Java语言是一种简单易用,面向对象的,可移植的语言。它具有很多的优越性和特点,比方:平台无关性,平安性,面向对象,健壮性等等。本系统就是在Android平台上使用Java语言完成的。1.3.3 Android四大组件

21、Activity是Android程序与用户进行交互的窗口,提供了和用户交互的可视化界面,是Android构造块中最根本的一块,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。Service是能够在后台执行长时间运行操作,并且不提供用户界面的应用程序组件,效劳于Activity,封装有完整的逻辑功能实现,接受上层指令,接受相关的事务,定义好intent提供同步和异步的接口ContentProvider是Android提供的第三方应用数据的访问方案,也是不同应用程序之间互相共享数据的唯一方式,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模

22、型,大大简化上层应用,对数据的整合提供了更方便的途径。BroadcastReceiver,接受一种或多种intent作为触发事件,类似与一个针对于Android系统的全局监听器,可以在不同进程程序间进行消息互通,也可以方便几大组件间的信息和数据交互.从设计模式上来讲也是IOC的一种应用方式.其实Android四大组件本质上就是为了实现在移动或者嵌入式设备上的mvc架构,他们之间是相互依存又相互补充的关系。1.3.4 sqlite3 数据库Sqlite3是谷歌为自家Android平台上提供的一个轻型的关系型数据库,除了支持varcharn可变字符,charn定长字符等数据特性外,还支持空NULL

23、,整型INTEGER,文本类型TEXT等数据类型。它的特点入下:轻量级只需带上很小的动态库,就能享受它的全部功能、独立性使用不需要安装,在部署的时候能省去很多麻烦、隔离性数据库中所有的信息都包含在一个文件内,方便管理和维护和平安性可以同时读取数据,但同时只有一个能够写入数据等特性。1.4软硬件需求硬件需求:CPU:Pentium以上计算机内存: 512M以上软件需求:操作系统版本:Windows XP/vista/Win7开发工具:开发语言:Java第二章 需求分析2.1可行性论证开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个工程开发之前,都要进行可行性分析,可以减少工程的开发风

24、险,防止人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来论证。2.1.1技术的可行性本系统开发工具是Eclipse和Android SDK提供的一系列debug工具,开发语言是Java,Java是一种面向对象编程语言,简单易学而且灵活方便。在杰普基地时就学习了java课程,之后也系统的学习了Android开发的相关知识,对电子书的翻开和操作是本系统设计的核心。之前在杰普基地也练习过几个相关工程的制作。因此,完成系统实现在技术上完全具有可行性。2.1.2经济的可行性由于选择的开发工具几乎全部为免费的开源软件,并且Android是众所周知的开源开发平台,谷歌也为Android提供了各

25、种便利的免费开发工具,所以从经济上来讲是可行的。2.1.3操作可行性本系统操作简单,只需要简单的点击一些按钮就可以做到搜索电子书,添加书签等必要操作,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需对Android操作熟练。而且本系统可视性非常好,所以在技术上不会有很大难度。2.1.4法律的可行性基于Android的电子书阅读器是自行开发的系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,都是谷歌推荐开发者使用的官方开发手段,不存在侵权等问题,即法律上是可行的。综上所述,设计并实现基于Android的电子书阅读器是必要并

26、且可行的。2.2软件的根本功能要求经过观察日常生活中人们阅读书籍的习惯,并在现行业务流程和数据分析的根底上根本上确定了系统的功能,设计也根本上到达了目标。根据软件设计的步骤,需求分析是软件设计成功的根底,也是必不可少的步骤。同时,也对软件的设计提出了具体的要求。在做足了充分的调查研究之后,根本可以确定软件的功能界面如下:1刚翻开软件时的酷炫欢送动画界面。2在没有阅读记录情况下点击右上角菜单栏弹出本地文件选项。3帮助用户扫描SD卡中所有的txt电子书并且显示出来。4可在本地文件系统中浏览相应电子书并且添加到书架页面上显示。5点击书架上的电子书会出现电子书书名,阅读进度,电子书绝对路径等 6用户可

27、以自行选择是否删除书架上的电子书。7阅读界面,用来阅读文档的主界面,是整个阅读器设计核心局部。8书签功能界面,用来创立新书签和点击书签并跳转到书签所在位置,也可以选择删除书签。9快速导航界面,用户可以根据需要选择不同的背景图片,亮度,以及开关夜间模式,使阅读变得更为个性化。10字体设置功能,用户可以根据需要选择不同的字体大小。11默认隐藏所有的设置界面,在用户需要的时候点击屏幕中心,会通过上下分屏的方式显示各种设置按键。12分享功能,假设用户满意本软件并愿意推广可以通过微信微博等方式分享给他人。根本说明如下:本系统是一个电子书阅读器,主要包含一个阅读主界面和一个书架界面,分别用来实现阅读和管理

28、电子书的功能。在书架界面时,点击右上角的菜单按钮, 右上角会出现五个选项:本地文件、快速扫描、分享软件、关于软件、退出软件。点击本地文件会进入文件系统浏览 SD中的所有文件并且可以添加txt格式的电子书到书架;点击快速扫描会检测本地所有txt文件;点击分享软件那么会弹出微信微博等社交软件,并可以点选分享到对应的社交圈中,点击关于软件那么会显示软件的一些根本信息和作者概述等。如果用户有添加过本地文件到书架上,那么可以点击相应电子书并显示电子书的根本信息对话框,再次点击阅读那么可以进入阅读界面阅读电子书。在阅读电子书界面时,用户可以向左或者向右滑动进行翻页操作,或者电子屏幕中心弹出设置界面,点击右

29、上角的菜单项选择项可以弹出快速导航界面,用户可以根据需要修改不同的背景图片,开启夜间模式或者手动调整屏幕亮度。屏幕下方的四个图标按键那么分别是字体变大,字体变小,书签管理,关键字搜索。前两个按键是对当前电子书显示字体进行单次调节,点击书签按钮那么会进入书签管理界面,可以显示当前电子书中的所有书签并且可以已当前页面第一行为标签新建书签,或者查询所有电子书的书签。点击对应书签那么会自动跳转到该书签所在的位置进行阅读。 电子书阅读器 欢送动画 书架界面 菜单 电子书A 管理电子书 本地文件 快速扫描 分享软件 关于软件 退出软件 全选或反选 删除选中 阅读 分享 快速导航 T+ T- 书签 关键字搜

30、索 新增书签 查看书签 选择背景 夜间模式 屏幕亮度2.3功能模块架构图2.3 功能模块架构图2.4设计的根本思想阅读器的设计思想主要是按照软件设计的一般流程:需求分析、概要设计、详细设计、测试与维护的根本流程来设计开发的。首先,从整体分析软件功能,将功能模块化;然后对每个模块进行调试。最后对各个模块进行系统集成。通过几个月的观察,发现几乎所有的人都有智能 ,而且几乎有一半以上的人用 来阅读资料,并且大局部都是Android 。所以萌发了打造一款属于自己的电子书阅读软件,还可以附加上浓浓的个人风格,在老版的阅读软件根底之上进行改良。2.5性能需求2.5.1系统的流畅性在用户使用软件的过程中,严

31、格限制软件出现Crash和ANR等问题,优化读取电子书的转码方式。缩短用户的等待时间,不在Activity中作大量逻辑运算导致拖慢系统流畅性和影响用户体验。2.5.2数据的完整性 1.各种记录信息的完整性,信息记录内容如书签内容不能为空。2.各数据在传输过程中的一致性。3.数据处理过程中的完整性以及可移植性。2.6界面需求界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用软件的信心和兴趣,提升用户体验,为用户提供多元化的界面风格选择是必须要完成的工作。本软件使用Android自身提供的xml文件和重写View类来共同打造多彩的用户UI界面,力图做到让用户在阅读电子

32、书的同时还可以自定义阅读风格。软件的各种设置界面都使用了简单明了的中文选项,引导用户操作,还提供给了用户多种多样的图片按钮,做到图形化直白描述,保证用户在很短的时间内就可以完整掌握软件的使用方法。第三章 软件分析与设计3.1软件总体结构设计翻开电子书阅读器之后,软件先会弹出欢送界面,再读取之前阅读电子书的书架情况。然后用户就可在书架界面下通过选择电子书来进行阅读。点击电子书选项会有三种操作可供选择,分别是阅读,收藏和分享;点击阅读选项会进入该电子书的阅读主界面,点击收藏会收藏该电子书,点击分享那么会弹出微信微博等选项分享到社交圈中。进入阅读主界面的话那么会根据用户上次阅读的位置自动跳转,用户点

33、击屏幕中心就会弹出多种选项界面:包括修改字体大小,进入书签管理界面,和搜索关键字,以及快速导航。根据各个模块的不同功能,对本设计进行了层次结构的划分。在Eclipse下创立了一个名为XZReader的工程,工程的结构图如图3.1:图3.1 软件工程结构图该功能包是通过Android SDK自动生成的,主要包括以下内容:1src源代码目录:该目录存放Android应用程序所有的源代码。该目录项有不同的包,包中对应开发的源代码,开发过程中的主要精力都集中在开发src目录下内容。2gen文件夹目录:该目录存放了Eclipse的ADT插件自动生成的R.java文件。实际上R.java定义了一个R类,它

34、包含了应用中用户界面、图像、字符串等各种资源与之相对应的资源编号id。这些资源编号都是系统自动生成的,即有一资源对象,系统就为此在R类中生成相应资源编号,好比一本字典。3Res资源目录:该目录定义了drawable、layout及values 3个目录。a. drawable目录:该目录下有drawable-hdpi,drawable-ldpi,drawable-mdpi3个文件夹,分别用来存放不同分辨率的图片资源,用于不同分辨率的 的开发,可以通过Resource.getDrawable(id)获得该资源。b. layout目录:该目录下包含了所有使用XML格式的界面描述文件。主要用于 表述

35、应用程序的用户界面布局,也用于描述用户界面和接口组件。c. values目录:该目录包含了使用XML格式的参数描述文件,也可以在此添加一些额外的资源,如字符串、颜色、样式和数组等。主要用于在代码中通过R类来调用它们,而不直接使用,这样可将代码和资源分开管理,便于维护。除了以上文件夹外,还用一个AndroidManifest.xml文件,该文件是系统的控制文件,告诉系统如何处理创立的所有顶层工程,尤其是Activity,但凡需要用到的组件都要在此注册。同时该文件也是所有Android应用程序都需要的文件,其描述了程序包的全局变量,包括公开的应用程序组件和每个组件的实现类,什么样的数据可以操作,在

36、什么地方可以运行等。在这个文件中最重要的一个内容就是Intent过滤器,这些过滤器描述了何时、何种情况下让Activity启动。当一个Activity或操作系统想要执行一个动作,它将创立一个Intent对象。该对象包含了很多描述符,描述了想做的操作,像处理数据,数据的类型,以及一些其他的信息。Android将Intent对象中的所有公开的Intent过滤器比拟,找到一个最能恰当处理请求的数据和动作的Activity。3.2接口设计3.2.1外部接口在用户界面局部,根据需求分析结果,用户需要一个合理友善的界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出

37、错信息。在界面设计局部,本系统按照谷歌公司的用户界面设计标准,为用户提供友好、方便、直观、简洁的操作环境。本系统采用了窗口继承的方式,使窗口有统一的界面风格。同时,对错误信息、提示信息进行标准化,尽量做到清晰明了。3.2.2 内部接口系统在功能模块的设计上,以“高内聚、低耦合为设计目标。内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。具体参数的结构将在下面数据结构设计的内容中说明。接口传递的信息将是以数据结构封装的数据、参数传递或返回值的形式在各模块间传递。3.3 数据库设计谷歌为Android系统提供了一种轻型的关系型数据库SQLlite3,开发人员在SQLlite

38、3数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作就会变得非常容易,数据库设计已经成为Android软件设计中必不可少的一局部,并且数据库设计的好坏会直接影响到整个软件的性能和效率。数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。3.3.1 数据库的概念结构设计概念设计是指在数据分析的根底上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。数据库的概念结构设计采用实体联系E-R模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是

39、提示用户工作环境中所涉及的事物,属性那么是对实体特性的描述。概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。 实体 属性 实体间关系电子书信息实体E-R图如图3.1所示: 图3.1 电子书信息实体E-R图电子书种类实体E-R图如图3.2所示:图3.2 电子书种类体E-R图收藏电子书实体E-R图如图3.3所示:图3.3 收藏电子书实体E-R图3.1.2数据库的逻辑结构设计我们知道,数据库概念模型独立于任何特定的数

40、据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循以下原那么:*每一个实体要转换成一个关系*所有的主键必须定义非空NOT NULL*对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。根据E-R模型,问卷调查管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。(1)电子书信息表主要是记录了电子书本身的根本信息,表结构如表3.1所示。表3.1电子书信息表(book_info) 列名数据类型允许空是否外键是否主键 依赖book_idinteger 否 否是 无book_namevarc

41、har 否 否否 无book_authorvarchar 否 否否 无book_add_timevarchar 否 否否 无book_open_timevarchar 否 否否 无book_is_favvarchar 否 否否 无book_category_idinteger 否 是否 表3.2PKbook_category_namevarchar 否 否否无book_sizevarchar 否 否否无book_processvarchar 否 否否无book_begin_positioninteger 否 否否无(2)电子书种类表主要记录了电子书种类的根本信息,表结构如表3.2所示。表3.2

42、电子书种类表(book_category) 列名数据类型允许空是否外键是否主键 依赖book_category_idinteger 否 否是 无book_category_namevarchar 否 否否 无book_idvarchar 否 否否 无book_namevarchar 否 否否 无收藏信息表主要是记录了收藏的电子书的情况,表结构如图3.3所示。表3.3收藏信息表(book_fav) 列名数据类型允许空是否外键是否主键 依赖book_category_idinteger 否 否是 无book_namevarchar 否 否否 无book_sizevarchar 否 否否 无book

43、_add_timevarchar 否 否否 无book_pathvarchar 否 否否 无下表统一介绍上述各表出现的所有列名,如表3.4所示。表3.4各列名说明 列名说明book_id电子书编号book_name电子书名称book_author电子书作者book_add_time电子书添加到书架时间book_open_time电子书翻开时间book_is_fav电子书是否收藏book_category_id电子书种类编号book_category_name电子书种类名称book_size电子书大小book_process阅读电子书的进度book_begin_position电子书进入阅读状态

44、的位置book_path电子书的绝对路径3.4 代码与软件维护设计本软件采用MVC设计模式,将UI层和业务逻辑层别离开来,采用针对接口编程的方式,降低了代码之间的耦合度,便于软件的升级和程序性能的优化。MVC设计模式也是Android官方推荐开发者使用的分层开发模式,可以在软件运行过程中防止出现Crash和ANR等错误,MVC模式在本软件中的具体应用是:View层:在Android中一般采用xml来对界面进行描述,使用的时候可以很方便的引入,本软件设计采用将xml文件和View类结合在一起的方法共同构成软件的View层。Control层:在Android中控制层的任务主要落在众多Activit

45、y的肩上,所以在本软件中专门提供了对应的Activity包,用来承当做对软件的主要控制任务,通过Activity交割给model层进行处理。Model层:在Android中对数据库的操作,对网络的操作,还有对业务逻辑的计算操作等都需要放在该层。本软件采用大量的Util工具类和Android提供的数据库帮助类作为Model层统一对软件中涉及到的数据操作和逻辑操作进行处理和解析。第四章 软件功能实现在软件生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在软件分析和设计阶段,软件开发工作主要是集中在逻辑、功能和技术设计上,软件实施阶段要继承此前面各个阶段的工作成果,将技术设计转

46、化为物理实现,因此软件实施的成果是软件分析和设计阶段的结晶,下面就将要实施之前软件设计时需要软件拥有的所有功能。4.1软件欢送界面的实现描述:为了保证软件的亲和度,用户在点击XZReader应用程序之后,将会先看到一个欢送界面,欢送新用户使用XZReader阅读器,给用户带来优良的软件初体验。软件运行效果图如图4.1所示: 图4.1 软件欢送界面使用WelcomeActivity作为软件的入口,运行软件时先发送Intent给WelcomeActivity,并设置其显示5.5秒之后自动关闭,进入书架主界面。核心代码如下:public class WelcomeActivity extends A

47、ctivity /延迟5.5秒 private final long DISPLAY_DURATION = 5500; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /取消标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); /全屏 getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutPa

48、rams. FLAG_FULLSCREEN); setContentView(R.layout.book_welcome); new Handler().postDelayed(new Runnable() public void run() Intent intent = new Intent(WelcomeActivity.this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); WelcomeActivity.this.startActivity(intent); WelcomeActivity.

49、this.overridePendingTransition(R.anim.activity_enter, R.anim.activity_exit); WelcomeActivity.this.finish(); , DISPLAY_DURATION); Overrideprotected void onDestroy() / TODO Auto-generated method stubsuper.onDestroy(); 4.2书架界面的实现1.描述:欢送界面结束之后,将会自动跳转到书架界面,并在进入书架界面时会自动查询是否有添加过电子书在书架上,如果添加过那么会显示出来,如果没有书架暂

50、时就会是空的,会提示您还没有添加任何电子书,这时用户可以点击右上角的菜单栏弹出选项进行下一步操作。2.程序运行效果图如图4.2所示: 图4.2还未添加书籍的书架页面点击本地文件浏览本地文件系统的实现1.描述:用户在刚刚进入应用程序时书架上是没有任何电子书,这时用户可以选择添加本地SD卡上的txt格式的电子书到书架上,用户可以点击右上角的菜单按钮,点选弹出的本地文件按钮,进入到本地文件系统浏览界面。2.程序效果图如以下图4.3,4.4所示 图4.3 右上角菜单栏 图4.4 文件系统浏览界面这里使用FileBrowserActivity作为由书架跳转至文件浏览系统的目标Activity,在此Act

51、ivity中对设备自身的SD卡进行文件树扫描,并配合自定义的ListView显示出所有文件系统中的可以添加的txt格式的文件。核心代码如下:public void GetFiles(File filePath, String query) File files = filePath.listFiles();if (files != null) for (int i = 0; i files.length; i+) if (filesi.isDirectory() GetFiles(filesi, query); else if (filesi.getName().toLowerCase().c

52、ontains(query) searchitems.add(filesi.getAbsolutePath();Log.i(MAIN, filesi.getPath();public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);ActionBar bar = this.getActionBar();bar.setDisplayShowTitleEnabled(true);bar.setDisplayHomeAsUpEnabled(true);bar.setDisplayShowHomeE

53、nabled(true);bar.setTitle(R.string.book_file_manager);setContentView(R.layout.file_list);resolver=getContentResolver();myFBReaderApp = (FBReaderApp) FBReaderApp.Instance();if (myFBReaderApp = null) myFBReaderApp = new FBReaderApp(FileBrowserActivity.this,new BookCollectionShadow();getCollection().bi

54、ndToService(this, null);searchitems = new ArrayList();lvFiles = (ListView) findViewById(R.id.file_path_list);pathTextView = (TextView) findViewById(R.id.current_path_view);upImage = (ImageView) findViewById(R.id.path_pane_up_level);/ empty_viewLayout=(LinearLayout)findViewById(R.id.empty_view);/brow

55、seTo(new File(ROOT_PATH);adapter = new FileListAdapter(this, items);lvFiles.setAdapter(adapter);addListener();handleIntent(getIntent();private void browseUpLevel() if (current_dir.getParent() != null& !current_dir.getParent().equals(/) browseTo(current_dir.getParentFile();4.2.2点击电子书添加到书架的实现描述:当用户找到想

56、要添加到书架的电子书时,可以点击电子书所在位置,会弹出对话框让用户选择是否要立刻阅读或者是添加到书架上再阅读,在用户点击添加到书架上的图标之后电子书会自动出现在书架上的默认位置。程序效果图如以下图4.5,4.6所示: 图4.5 弹出对话框选择操作 图4.6 返回书架电子书添加成功点击文件浏览界面的电子书的时候,出发对应的ListView的空间上对应的工程监听器,弹出popmenu,同时添加时间,让用户可以对点选的电子书进行不同的操作。核心代码如下:public void showPopupWindow(View v,int position) final int p=position;Line

57、arLayout layout = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.file_item_menu, null);mPopuwindow = new PopupWindow(layout,ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);openFileBtn = (LinearLayout) layout.findViewById(R.id.openFileBtn);shelfFileBtn = (LinearLayo

58、ut) layout.findViewById(R.id.shelfFileBtn);favoriteFileBtn = (LinearLayout) layout.findViewById(R.id.favoriteFileBtn);openFileBtn.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubZLFile file = ZLFile.createFileByPath(items.get(p).getF

59、ilepath();org.geometerplus.fbreader.book.Book book = getCollection().getBookByFile(file);if (book != null) CoreReadActivity.openBookActivity(FileBrowserActivity.this, book, null);FileBrowserActivity.this.overridePendingTransition(R.anim.activity_enter,R.anim.activity_exit);FileBrowserActivity.this.f

60、inish(););shelfFileBtn.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubString filename = items.get(p).getFileName();String filepath = items.get(p).getFilepath();/ Local BookEasy BookBook book = new Book();book.setBookName(filename);b

温馨提示

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

评论

0/150

提交评论