版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Android的书籍管理类APP设计摘要作为一种移动设备,手机的功能不仅限于通信,还可以作为人们在办公室、娱乐和生活中的助手。随着手机功能的不断细化,笔记管理类app也越来越受到人们的欢迎。因此设计一款书籍管理类app势在必行。本文主要介绍了该程序的设计思想、逻辑、体系结构、数据库设计和总体实现过程。本系统使用AndroidStudio为开发工具,Java语言进行开发,使用LiteOrm数据库,设计“天天学”App。该系统分为注册模块、登录模块、书籍模块和个人模块,实现阅读书籍、倒计时、做计划等功能。经过系统测试,各个模块完成了预期的各项功能。关键词:Android,liteOrm数据库、app
Abstract根据中文摘要翻译根据中文摘要翻译Asamobiledevice,thefunctionofmobilephoneisnotonlylimitedtocommunication,butalsocanbeusedasanassistantinoffice,entertainmentandlife.Withthecontinuousrefinementofmobilephonefunctions,note-takingmanagementappsarebecomingmoreandmorepopular.Therefore,itisimperativetodesignabookmanagementapp.Thispapermainlyintroducesthedesignidea,logic,architecture,databasedesignandoverallimplementationoftheprogram.ThissystemUSESAndroidStudioasthedevelopmenttool,Javalanguagefordevelopment,USESLiteOrmdatabase,anddesigns"learneveryday"App.Thesystemisdividedintoregistrationmodule,loginmodule,bookmoduleandpersonalmodule,whichrealizesreadingbooks,countingdown,makingplansandotherfunctions.Afterthesystemtest,eachmodulehascompletedtheexpectedfunctions.Keywords:Android,liteOrmdatabase,RecyclerViewlist,Reader目录摘要 2Abstract 3目录 4第1章绪论 11.1研究目的和意义 11.2国内外研究现状 21.3本文的内容及结构 3第2章开发平台与数据库 42.1Android开发语言 42.1.1使用版本10.0 42.1.2体系架构 42.1.3应用组件 52.1.4平台优势 62.2AndroidStudio编译器 72.2雷电模拟器 82.2.1模拟器功能 82.2.2软件特色 92.3liteOrm 102.3.1特色 112.3.2设计理念 11第3章系统设计核心技术 133.1框架所用技 术 133.2布局及控件 143.2.1Android六大布局 143.2.2常用控件 14第4章系统分析与设计 174.1系统流程和功能模块分析 174.2模块设计 184.2.1登录模块 184.2.2代办模块 204.2.3书籍模块 244.2.4注册模块 264.2.5个人模块 284.3结构设计 304.3.1类结构 304.3.2主要函数及变量 31第5章系统测试 355.1登录模块 355.2注册模块 365.3代办模块 375.4书籍模块 385.5个人模块 39结论 41参考文献 42致谢 44附录系统设计部分源代码 45第1章绪论1.1研究目的和意义由于现在好多供应商都是捞一笔就走人的态度去对待软件产品。而现在学习软件主要是年轻人们去使用,学习软件可能伴随他们整个在校学习阶段。设计一款实用的学习软件是很重要的。简约清新的任务管理,简单高效管理你的习惯和目标,丰富的计时功能,使用有效的结构书籍和组织内容的大纲,这种更有组织的写作风格将带给你一种新的体验,随时随地获取、整理、分享书籍,让灵感时刻伴随你,让生活更有序、工作更高效、协作更便捷。它帮助个人和团队保存高价值信息、组织知识和有效协作。无论是灵感、待办事项、会议记录、项目材料,还是高价值的文章,都可以及时保存下来。从图片、文本、音频记录、列表到网页、文档和附件,它支持丰富的文件格式,以帮助您正确保存。通过智能搜索,文本、图片甚至附件都可以快速锁定。人们将需要这样的一个简单可靠的软件。作为一种移动设备,手机的功能不仅限于通信,还可以作为人们在办公室、娱乐和生活中的助手。随着手机功能的不断细化,移动应用开发成为嵌入式软件开发中最受欢迎和最具挑战性的方向。为了应对不断增长的应用需求,不同的移动操作系统和移动设备制造商都在不断升级自己的产品,以在激烈的市场竞争中获得一席之地。1.2国内外研究现状随着手机app制作技术的进步,现在进行制作一款手机app软件已相对简单了很多。企业已经成为了对手机app制作的最大需求群体,手机app可以成为企业的信息管理平台,同时也可以成为企业的产品移动展销平台。在移动互联网年代,手机app制作软件的作用正在被进一步挖掘。同时,除了企业的手机app制作,目前也出现了个人手机app制作。对于很多企业而言,进行制作手机app软件会耗费不少的时间。而大多企业都不具备自建app制作的资质:一来企业没有专业的app开发制作团队以及专业知识支持,二来企业自建app开发存在不可控制的风险。在与专业手机app制作公司进行合作的过程里,在产品的设计、功能、定位等方面都要花大量的时间进行沟通。而开发一款手机软件也不是一朝一夕便可以完成的事情。有不少的企业在此时会显得不耐心,急于想利用手机app争取实现移动平台的运作。但是往往会弄巧成拙,出现一些可以避免的失误。手机APP制作工具把企业APP开发技术难度降低了,这些操作简单的APP制作工具似乎也让开发工程师专业的编程思想、字符、专业术语等都变成了浮云。如今也有初级开发工程师通过这些简单的APP应用制作软件帮助企业创建简单的手机APP程序,更有行业人员认为这样的“傻瓜式”APP开发软件工具可以让对程序一窍不通的网民也可以创建一个个人APP,同时还可以对这种简单的应用程序进行更新和维护以及开展营销类活动。全球化的发展,不单“中国制造”受到海外用户的欢迎,国内自主研发的一些APP软件,在走出国门之后,发展之势也是非常喜人。以往在聊到国外APP软件的时候,大家讨论更多的是Facebook、Instagram、Twitter等软件,国内的软件好像很难占据到一定的市场,但是随着最近几年的一个发展,国内的微信、微博、CleanMaster、王者荣耀等手机应用软件,不仅打开了市场拥有一批忠实的粉丝,也为未来国内移动软件走出国门,提供了方向。国内手机APP走出国门,对于国内手机应用软件商来说,当然是一件值得开心的事情,但是想要走出国门的应用软件获得海外用户的认可,开拓更大的海外市场,在其功能需求上还是一个着重点。1.3本文的内容及结构本文共分5章,在第1章绪论中,简述了AndroidAPP开发研究意义和重要应用。第2章是介绍使用的编译器、Android模拟器和数据库。第3章JavaforAndroid制作软件过程中系统的分析和设计。第4章是设计App过程中所运用到的技术。第5章是在真机上测试App实际运行效果。第2章开发平台与数据库2.1Android开发语言Android一词的原意是“机器人”,也是谷歌于2007年11月5日发布的基于Linux平台的开源移动操作系统的名称。该平台由操作系统、中间件、用户界面和应用软件组成。2.1.1使用版本10.0从Android10开始,谷歌将提供系统级的暗模式,大多数预装的应用程序、抽屉、设置菜单、谷歌Feed流和按钮都将变为黑色,就像你在macOSMojave中看到的那样。支持新的保护,以确保用户隐私和安全。具有高性能的编解码器,更好的生物识别技术,更快的应用启动,Vulkan1.1,NNAPI1.2,可折叠设备,5G等!谷歌宣布了Android系统的一个重大变化,有了一个新的logo和新的命名方式。2019年AndroidQ的官方名称将是Android10。2.1.2体系架构Android的架构,就像它的操作系统一样,是分层的。根据架构图,Android分为4层,从顶层到底层,分别是应用层、应用框架层、系统运行时层和Linux内核层。Android将发布一系列核心应用程序包,包括客户端、短信、日历、地图、浏览器、联系人管理器等。所有应用程序都是用JAVA语言编写的。开发人员还可以完全访问核心应用程序使用的API框架。应用程序的体系结构设计简化了组件的重用;任何应用程序都可以发布其功能块,任何其他应用程序都可以使用其发布的功能块(受框架安全性的限制)。此外,应用程序重用机制允许用户轻松替换应用程序组件。2.1.3应用组件Android开发的四个主要组件是:activity:表示功能。服务:在后台运行服务,不提供接口渲染。BroadcastReceiver:用于接收广播的接收器。内容提供程序:支持在多个应用程序中存储和读取数据,相当于一个数据库。(1)Activity:一个Android应用程序通常由多个活动组成。这些活动可以从一个活动跳转到另一个活动,例如,当按下按钮按钮时,它可能会跳转到另一个活动。与web页面跳转稍有不同,活动之间的跳转可能返回一个值。例如,从活动A跳到活动B可能会在活动B的运行结束时给活动一个返回值。这在很多情况下都很方便。(2)Service:服务是android系统中的一个组件。它类似于活动级别,但是它不能自己运行,只能在后台运行,并且可以与其他组件交互。服务是没有接口的长生命周期代码。服务是一个可以长时间运行的程序,但是它没有用户界面。这么说有点无聊。举个例子。打开音乐播放器程序,这个时候如果你想上网,那么,打开Android浏览器,这个时候虽然你已经进入了浏览器程序,但是歌曲并没有停止播放,而是在后台一个接一个的继续播放。事实上,这种回放是由播放音乐的服务控制的。当然,播放音乐的服务也可以停止,例如,当播放列表中的所有歌曲结束时,或当用户按下快捷键停止播放音乐时,等等。服务可以在多个应用程序中使用。例如,当用户在播放多媒体的同时开始其他活动时,程序应继续在后台播放,如检测SD卡上文件的变化,或在后台记录地理信息位置的变化等。总而言之,服务总是藏在背后。当打开一个新屏幕时,前一个屏幕将进入暂停状态并推入历史堆栈。用户可以使用回退操作返回先前打开的屏幕。您可以选择删除不需要保留的屏幕,因为Android会将每个应用程序的开始保存到堆栈上的当前屏幕。2.1.4平台优势1.开放性就优势而言,Android平台首先是开放的。开发的平台允许任何移动终端制造商加入Android联盟。显著的开放性将允许它拥有更多的开发人员,并且随着用户和应用程序变得更加丰富,一个全新的平台将很快成熟起来。对于Android的发展来说,开放性有利于人气的积累,包括消费者和制造商。对于消费者来说,最大的利益就是丰富的软件资源。开放的平台也会带来更多的竞争,这样消费者就可以以更低的价格买到他们想要的手机。同时,也可以使用一些第三方优化的系统来实现更好的用户体验,如MIUI、Flyme等。2.丰富的硬件这一点与Android平台的开放性有关,由于Android平台的开放性,很多厂商都会推出各种功能各异的奇怪产品。功能和特性的差异将不会影响到数据同步、甚至软件的兼容,就像诺基亚symbian-style手机改变了苹果的iPhone,和出色的塞班软件可以带到iPhone使用,和联系人等数据很容易被转移。3.方便开发Android平台为第三方开发者提供了一个非常广泛和自由的环境,不受各种规则的限制。可以想象,将会有许多新的和独特的软件产品。4.Google应用谷歌在互联网上经历了10年的历史,从搜索巨头的全面渗透互联网,谷歌服务,如地图、邮件、搜索等等已经成为一个重要的用户和互联网之间的联系,和Android手机将无缝地把这些优秀的谷歌服务。2.2AndroidStudio编译器 AndroidStudio是谷歌推出的Android集成开发工具。基于IntelliJIDEA。与EclipseADT类似,AndroidStudio提供用于开发和调试的集成Android开发工具。基于IDEA,AndroidStudio提供了:(1)Android特有的重构和快速修复(2)捕捉性能、可用性、版本兼容性等的工具提示(3)支持ProGuard和应用程序签名(4)基于模板的向导来生成通用的Android应用程序设计和组件(5)强大的布局编辑器,允许您拖放UI控件和预览效果AndroidStudio是谷歌新的Android开发环境,开发人员在这里可以看到他们的应用程序在编写应用程序时在不同大小的屏幕上的样子。谷歌改进了开发人员控制台,增加了5个新特性,包括优化小贴士、应用翻译服务、推荐跟踪、营收曲线图、用版测试和阶段性展示。(1)优化小贴士:打开你的应用程序,点击提示,你会得到这样的建议:开发一个平板版本的应用程序。(2)应用翻译服务:允许开发人员直接从开发机构获得专业翻译。上传您的要求,选择翻译,它将显示翻译和价格,并发送回翻译一周内。(3)推荐跟踪:允许开发者找到最有效的广告(4)营收曲线图:按国家显示开发者的应用收入(5)用版测试和阶段性展示:开发人员可以测试应用程序,然后将其发布给测试用户,测试结果不会发布给公众。当一个版本的测试结束时,开发人员可以将它推出给一定比例的用户。AndroidStudio是第一个为开发者发布的基于Android平台的开发工具。最先解决的问题之一是多分辨率。Android设备有各种各样的屏幕尺寸和分辨率,有了新的Studio,开发人员可以轻松地调整他们的应用程序以适应每个分辨率。与此同时,Studio还解决了语言问题,提供了多语言版本(但没有中文版本)和翻译支持,使开发人员能够更好地适应全球开发环境。工作室还提供收入记录。最大的变化是Beta测试的功能。Studio提供了Beta测试,开发人员可以很容易地试用。2.2雷电模拟器雷电模拟器是一个软件,它允许移动应用程序和游戏在电脑上运行。通过虚拟android手机操作界面,玩家可以通过lightning模拟器在电脑上玩手机游戏。在电脑上模拟android手机系统安装、使用和卸载android应用程序。2.2.1模拟器功能1.支持多开批量操作在多开模式中增加批量操作功能,实现多开、关闭模拟器、自动排窗、批量新建、复制等功能。数十个甚至数百个用户可以管理模拟器。2.虚拟定位内置虚拟定位功能,一步即可完成虚拟定位。3.操作录制录制操作,按下播放按钮将自动播放录制的操作,可以无限期播放。4.支持宏指令操作点击“一键宏”(按键名是如此)按钮,通过宏命令设置,实现组合、循环、语音等功能,多个按键功能被转移到一个按键上,减少了操作。(例如,可以设置按一个键后就开始循环实现多个按键点击事件,不必反复按三次键。)5.小磁盘模式降低磁盘占用空间小磁盘模式简介:在小磁盘模式下挂机,经测试,120g的固态硬盘可以永久25开。(注意:小磁盘模式要2.0.51以上版本才能使用)2.2.2软件特色1.Android5.1.1内核雷电android模拟器是国内成熟的android模拟器。自2016年6月第一版发布以来,平均15天的更新,2.0版采用了android内核5.1.1。2.兼容优化雷电安卓模拟器2.0开始,可以兼容Intel、AMD、x86等多种厂商硬件,WindowsXP/WindowsVista/Windows7/Windows8/Windows8.1/Windows10等多样系统。基于Android5.1.1内核的雷电安卓模拟器兼容市面上99%的游戏和应用。3.按键自定义在手游的按键上增加了控制行程和旋转角度的按键,实现了3D手游360°的平滑旋转和一键连接点。最初的支持句柄是即插即用的,不需要其他映射软件。带有按钮要求的游戏配备了一组默认键。当游戏打开时,会弹出一个提示。用户可以直接使用这些密钥,也可以根据自己的习惯在清除它们之后重新配置它们。4.一键操作多开雷电android模拟器的多开优化方案中增加了批量操作功能,实现了一键多开、关闭模拟器、自动排列窗口、批量创建、复制等功能。方便几十个甚至上百个开放的用户管理模拟器。2.3liteOrm(1)LiteOrm是Github上的一个开源Android数据库框架。(2)LiteOrm是一个快速、小巧、强大的androidORM框架类库,它允许你用一行代码添加、删除、更改和检查数据库,以及持久化和自动映射实体关系。(3)Android自带的sqlite存储已经很好了,但是涉及太多sql语句,为了方便操作,这里使用数据库框架LiteOrm。LiteOrm是一个小巧、强大、比系统自带数据库操作性能快1倍的androidORM框架类库,开发者一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。1.特点(1)效率比Android原始数据库sqlite更高(2)增删改查可以直接操作对象2.目标简单,强大,最有用的androidORM框架库3.原则(1)轻量级、关注性能、优先于线程、关注数据及其关系存储和操作。(2)没有工具支持,没有无参数构造,没有多个注释,约定优于配置。(3)使用极简主义2.3.1特色(1)支持多个库:每个数据库文件对应于LiteOrm管理类的一个实例。(2)SD卡存储:你可以把DB文件放在你认为合理的地方。(3)自动构建表:开发人员不需要担心数据库和表的细节。(4)关系存储和恢复:要真正实现实体关系映射持久性和恢复,只需在实体的关联属性上标记关系类型。(5)独立性和级联性:切换顺畅,独立操作性能高,仅保存对象数据;级联操作更强大,关联对象和关系一起保存。(6)智能列检测:App升级或模型更改,添加新的属性字段,该字段将被检测并添加到数据库中,因此无需担心新字段不被存储。(7)富API支持:保存(替换)、插入、更新、删除、查询、映射等。(8)自动识别类型:转换为几种数据类型的文本,实数,整数和BLOB支持sqlite。(9)自动构建对象,通过反射和探测构造函数参数等方法创建新对象,大多数情况下不需要无参数构造函数。(10)更新指定的列以进行灵活、强制和批量分配,这会忽略被操作对象的实际值。(11)存储序列化字段:日期、ArrayList、Vector等容器被智能保存和读取。(12)约束语法支持:NOTNULL,UNIQUE,DEFAULT,COLLATE,CHECK,PRIMARYKEY,supportconflictalgorithm。(13)灵活的查询和删除:列,其中,罗德,限制,有组等。2.3.2设计理念(1)LiteOrm的主要思想是约定优于配置,因此可以用很少的注释存储复杂的数据。(2)大多数情况下,开发人员不需要向每个对象添加无参数构造,这看起来很愚蠢且多余。(3)关注性能,我仔细考虑了代码的每个模块。每个函数的实现都绕过了android提供的直接接口,更接近底层实现。(4)超级集中,你甚至看不到任何其他的特性,包括线程,你也不必担心项目的负担和引入大的负载。(5)简单的背后,往往是复杂的。而这一切,都是为了还原面向对象的体验,让添加的部分,不添加。
第3章系统设计核心技术3.1框架所用技术RecyclerView是一个更强大的控件,它不仅可以达到与ListView相同的效果,还可以优化ListView中的各种不足之处。它可以垂直或水平滚动数据(ListView不能这样做)。RecyclerView属于新增的控件,Android将RecyclerView定义在support库里。可扩展标记语言,标准通用标记语言的子集,简称XML。是一种标记语言,用于标记电子文件以使其具有结构。在电子计算机中,符号是计算机能理解的信息符号。它可以用于标记数据、定义数据类型,并且是一种允许用户定义自己的标记语言的源语言。它非常适合web传输,提供了一种统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它是互联网环境下的一种跨平台、内容相关的技术,是处理分布式结构信息的有效工具。可扩展标记语言不同于Access、Oracle和SQLServer等数据库,可扩展标记语言提供更强大的数据存储和分析能力,如数据索引、排序、搜索、相关性一致性等,而可扩展标记语言只存储数据。事实上,与其他数据表示形式最大的区别之一是可扩展标记语言非常简单,这是一个看似微不足道的优点,但却是它与众不同的地方。XML简单容易的读/写数据在任何应用程序中,它使XML很快成为唯一的公共数据交换语言,尽管不同的应用软件也支持其他数据交换格式,但很快他们会支持XML,这意味着程序可以更容易地与Windows,MacOS、Linux和其他平台的信息,然后你可以很容易地加载XML数据程序和分析,并以XML格式的输出。3.2布局及控件3.2.1Android六大布局(1)线性布局(LinearLayout):按照垂直或者水平方向布局的组件
(2)帧布局(FrameLayout):组件从屏幕左上方布局组件
(3)表格布局(TableLayout):按照行列方式布局组件
(4)绝对布局(AbsoluteLayout):按照绝对坐标来布局组件
(5)相对布局(RelativeLayout):相对其它组件的布局方式
(6)约束布局(ConstraintLayout):按照约束布局组件3.2.2常用控件1.文本类控件TextViewTextView是Android程序开发中最常用的控件之一。它的主要功能是向用户显示文本的内容。它是不可编辑的,只能在程序中初始化或修改。2.文本类控件EditText与TextView相比,EditText是可编辑的,可用于与用户交互,其用法与TextView类似3.按钮类控件Button按钮控件也是在使用过程中最常用的控件之一,所以需要很好地掌握。用户可以通过点击按钮来触发一系列事件,然后注册按钮的监听器来实现按钮的监听事件。4.按钮类控件ImageButtonImageButton类似于Button,它是一个按钮,ImageButton可以实现任何我们想要的ImageButton的效果,比如我们租一个下载按钮等等。它看起来比button的实现更好,体验也更好,但是它有一个图片作为背景,没有文本。使用属性android:SRC="imagelocation"设置图像背景。5.按钮类控件RadioButton与RadioGroupRadioButton在Android平台上也很常见,因为一些选项使用单选按钮。它是一个单圆形单框双状态按钮,可以选择或不选择。当未选中RadioButton时,用户单击以选择它。但是,在选中它之后,您不能单击以取消选中它。电台组是一个电台组合框,用来框起电台按钮。在多个RadioButton由RadioGroup包含的情况下,同时只能选择一个RadioButton,RadioGroup由setOnCheckedChangeListener来监听。6.按钮类控件CheckBox复选框,顾名思义,是一个可以被多次选中的按钮,默认情况下,它被表示为一个矩形。与RadioButton一样,它已选中和未选中状态。我们可以先在布局文件中定义多个按钮,然后对事件监听器的每个备选setOnCheckedChangeListener按钮,通过isChecked判断该选项是否被选中,相应的事件响应。7.图片控件ImageViewImageView是一个图像控件,负责显示图像。图像的来源可以是系统提供的资源文件,也可以是可绘制对象。相对来说,图像空间是比较容易把握的,因为正如前面提到的ImageButton,许多属性是相同的。8.进度条控件ProgressBarProgressBar用于在界面上显示一个进度条,表示我们的程序正在加载一些数据,运行程序,会看到屏幕中有一个圆形进度条正在旋转。这几个组件是相互独立的,它们可以相互调用并一起工作,从而形成一个真正的Android应用程序。在这些组件之间的通信中,Intent主要起辅助作用。Intent负责描述应用程序中操作的操作、操作中涉及的数据和其他数据。Android负责查找相应的组件,将Intent传递给调用组件,并根据Intent的描述完成组件的调用。因此,Intent在这里充当媒介中介,提供有关相互调用的组件的信息,并将调用方与被调用方解耦。例如,在联系人维护应用程序中,当我们单击联系人列表屏幕上的联系人时(假设对应的活动是listActivity),我们希望看到联系人的详细信息屏幕(假设对应的活动是detailActivity)。要做到这一点,listActivity需要构造一个Intent,用来告诉系统我们要做一个“view”操作,它对应于一个“contact”,然后调用startActivity(IntentIntent)。当构造的Intent传入时,系统将根据Intent中的描述在清单中找到满足Intent需求的活动。系统将调用找到的活动,即detailActivity。最后,意图被传入,detailActivity将根据Intent中的描述执行相应的操作。第4章系统分析与设计4.1系统流程和功能模块分析系统流程主要是对“天天学”App进行详细描述,通过采用系统流程图形来描述管理业务活动、进行规范化说明,主业务流程介绍,如图4-1所示:(1)启动程序,登录界面,输入手机号与密码登录进入代办界面,点击注册进入注册界面;(2)进入注册界面后,出现五个窗口,分别是用户名、手机号、密码、密码2,输入完成点击注册,将信息传入数据库;(3)进入代办界面后,点击右上角加号添加事件,输入名称和时间后点击添加将在代办界面上出现代办项,点击加号可添加子代办项,点击垃圾桶可删除代办项,点击代办项名字进入倒计时时钟;(4)倒计时时钟根据设定的时间,点击开始即开始倒计时,倒计时完成会弹出“完成”;(5)点击底部“读书”进入书籍模块,顶部输入书籍名,再点击放大镜,即可模糊搜索出书籍,点击右下角加号导入手机中的书籍文档,点击星号收藏书籍,点击垃圾桶删除书籍;(6)点击底部“我的”进入个人模块,点击头像进入个人信息,可查看用户名和手机号;点击“我的收藏”查看收藏的书籍;点击“外观设置”可将其中某主题替换当前主题;点击“回收站”可查看已删除的书籍。下面对给个功能模块进行介绍:(1)注册模块:注册账号传入数据库。(2)登录模块:用账号登录软件。(3)代办模块:管理个人计划。(4)书籍模块:管理和查看导入的书籍。(5)个人模块:查看个人信息、收藏、回收站,更换主题。图4-1功能模块图4.2模块设计4.2.1登录模块登录界面:对比数据库检测手机号与密码是否对应,若对应则进入,若错误则给出提示。initView初始化界面,onClick触发事件,对比数据库,检查手机号是否有误、密码是否有误,账号是否存在,密码与账号是否匹配,如图4-2所示。图4-2手机号、密码校验图校验方法为CommonUtil中getBooleanValue方法判断输入数值是否为空,如图4-3所示。图4-3校验方法图isMoblieNo方法校验手机号码,如图4-4所示。图4-4校验手机号图4.2.2代办模块代办模块:可以添加一级栏目,设置任务时间,点击栏目名称触发事件,进入倒计时模块,点击加号为该栏目添加子一级栏目,设置任务时间,之后同理。进入倒计时模块后,时钟部分进度条的最大值为刚刚设置的时间,当前的角度alphaAngle=(currentValue/maxValue)*360。设置时钟的颜色、文字的颜色、背景等,倒计时完毕显示完成。recyclerview主目录相当于一个列表,每个主目录下对应一个二级目录,
二级目录也是一个列表,所以在二级目录里也声明了一个recyclerview,如图4-5所示。图4-5列表图
数据保存使用:初始化数据库图4-6,用的liteOrm(封装了sqllite数据库),其中声明了插入或者更新对象图4-7(有则更新,无则插入),更新数据图4-7,删除对象图4-8,查询数据总数图4-9。查询列表与倒序查询图4-10,根据ID查询数据图4-11,查询某字段等于value值图4-12,模糊查询getQueryByData图4-13。全名查询(查询某字段=value值)用的queryByWhere。图4-6初始化数据库图图4-7插入、更新图图4-8删除图图4-9查询数据总数图图4-10查询列表、倒序查询图图4-11查询ID数据图图4-12校验字段是否正确图图4-13模糊查询图书的列表用注解@Table("booktable")表示一个表。@PrimaryKey(AssignType.BY_MYSELF)为声明自增长的主键,图4-14图4-14建立书表格
倒计时:initData方法是主界面,用到ProgressView控件,在其基础上进行参数的修改,涉及到自定义view。dataTime是上一个界面传过来的设置的时间。时间是1~60。1代表1分钟,60代表60分钟.1分钟60秒,每秒1000毫秒。所以duration的值为1000*60*dataTime。再将duration的值传回initData。initData中封装了一个方法setDuration。其作用是判断,设置的时间与倒计时的时间是否相等,如果相等的话那么就倒计时完成,之后把中间显示时间的数值置换为完成。按进度显示百分比,可选择是否启用数字动画,如图4-15所示。图4-15倒计时算法图4.2.3书籍模块书籍模块:点击右下角加号可以触发读取SD卡中文本的活动,读取成功后显示书籍图片及书籍名称,点击右上角可以删除书籍。点击星号可以收藏当前书籍,再次点击可以取消收藏。顶部有搜索框,可以使用模糊查找,查找到已经导入的书籍,并进入。进入书籍后,可以滑动查看书籍,缓存后可离线阅读。左上角显示章节,左下角显示阅读进度,右下角显示设置,点击设置,可以快速跳转到上一章或者下一章,选择字体加粗或是普通,选择翻页模式滑盖、平移、剪切。调节背景颜色。onActivityResult方法图4-16,拿到手机上txt文件的URL,然后用setOnItemListener对此路径进行判断,是否存在,有没有出路径错误。如果错误,就会用CommonUtil下的showToast方法显示“文件不存在”图4-17。如果是正确的路径,那么通过loadTextFile加载该路径下的txt文件,使用HwTxtPlayActivity插件,加载文件,用getBookName方法得到书名图4-18。图4-16校验路径图图4-17返回校验路径结果图图4-18加载文件图4.2.4注册模块注册界面:检测手机号形式是否合法,检测该用户是否注册过,若未注册过,将新的用户信息上传liteOrm数据库。若注册过则返回提示信息。初始化界面后对比用户名称是否符合标准,如果不符合则弹出“昵称输入有误”,用户名标准后检查手机号是否符合标准,不符合则弹出“手机号输入有误”,检查两次密码是否相同,若不相同则弹出“确认密码有误”,如图4-19所示。若相同,点击注册后弹出“注册成功”,如图4-20所示图4-19信息检测图图4-20注册成功图4.2.5个人模块个人模块,点击头像查看用户名和手机号,头像通过剪裁,为原型置于正中。我的收藏界面可以查看之前点击星号收藏的书籍。外观设置默认为白色,可换位黑色。回收站可以查看删除过的书籍名称和图像。使用GlideUtil插件制作圆形头像,使用glideCircleLoader2方法加载本地图片如图4-21,再用CircleCrop方法对图像进行裁剪。点击头像激发MinePersonActivity进入个人信息图4-22界面。点击我的收藏触发MineSCActivity如图4-22。点击背景修改触发MineBcgActivity如图4-23。点击回收站触发MineLjActivity如图4-24。图4-21加载本地图片图图4-22我的收藏图图4-23背景图图4-24回收站图4.3结构设计4.3.1类结构本学习软件名为“天天学”,存储活动类的包activity其中的类为点击或加载、读取等事件响应,存储布局规划类的adapter包,存储数据操作类的bean包,存储各模块框架类的fragment包,存储数据库操作类的liteOrm包,存储图片裁剪,倒计时运算等工具类的Util包。事件活动类下包含创建代办类HomeAddActivity,登录事件类LoginActivity,背景设置事件类MineBcgActivity,回收站类MineLjActivity,个人信息事件类MinePersonActivity,我的收藏类MineSCActivity,注册界面类RegisterActivity,任务开始活动类TaskStartActivity,加载js类WebViewActivity。存储布局规划类adapter包,包含网络布局分割线类MyGridItemDecoration,线性布局分割线类MyLinearItemDecoration存储数据操作类的包bean,其中有书籍操作类BookBean,书籍路径检查是否规范类BookDelBean,用户个人信息操作类UserBean,选项卡类TabItem,任务操作类TaskBean,任务界面操作类TaskMenuBean。存储各模块框架类的fragment包,其中阅读模块类DataFragment,代办事件类HomeFragmen,个人中心类MineFragment存储数据库操作类的liteOrm包包含数据库的增删改查操作封装类DBHelper。存储工具类的Util包,其中有,判断手机号、判断书籍路径是否正确的工具类CommonUtil,加载图片类GlideUtil,自定义网络加载框类MyProgressDialog,文件储存类SPUtils。存储资源文件res包,其中包含drawable,drawable-v24,layout,mipmap-anydpi-v26,mipmap-hdpi,mipmap-mdpi,mipmap-xhdpi,mipmap-xxhdpi,mipmap-xxxhdpi,values,xml。4.3.2主要函数及变量1.WebViewActivityonDestroy()注销WebView,防止内存泄漏2.MyGridItemDecoration圆点不能作为序号,下面的用(1)(2)圆点不能作为序号,下面的用(1)(2)网络布局分隔线MyGridItemDecoration(inthorizonSpan,intverticalSpan,intcolor,booleanshowLastLine)计算偏移量getItemOffsets(RectoutRect,Viewview,RecyclerViewparent,RecyclerView.Statestate)getSpanCount(RecyclerViewparent)获取列数isLastRaw(RecyclerViewparent,intpos,intspanCount,intchildCount)判断最后一行getResult(intpos,intspanCount,intchildCount)Builder(Contextcontext)使用builder构造setColorResource(@ColorResintresource)通过资源文件,设置分割线颜色setColor(@ColorInt
intcolor)设置颜色setVerticalSpan(@DimenResintvertical)通过dp设置垂直问题setVerticalSpan(floatmVertical)通过px设置垂直问题setHorizontalSpan(@DimenResinthorizontal)通过dp设置水平问题setHorizontalSpan(floathorizontal)通过px设置水平问题setShowLastLine(booleanshow)是否最后一条显示分割线3.MyLinearItemDecoration线性布局分割线MyLinearItemDecoration(intspan,intleftPadding,intrightPadding,intcolor,booleanshow)Builder(Contextcontext)builder模式setSpan(floatpixels)设置分割线宽度setSpan(@DimenRes
intresource)setPadding(floatpixels)设置左右间距setPadding(@DimenRes
intresource)setLeftPadding(floatpixelPadding)设置左间距setRightPadding(floatpixelPadding)设置右间距setLeftPadding(@DimenResintresource)通过资源id设置左间距setRightPadding(@DimenResintresource)通过资源id设置右间距setColorResource(@ColorResintresource)通过资源id设置颜色setColor(@ColorInt
intcolor)设置颜色setShowLastLine(booleanshow)是否最后一条显示分割线4.BasePresenterattachView(Vview,BaseActivitycontext)弱引用detachView()解除绑定cancelRequest(){OkGo.getInstance().cancelTag(this);}取消网络请求5.BaseActivityinitView()初始化控件initData()为控件添加点击事件getPresenter()实例化PresentergetLayoutId()传递用户创建的LayoutId值6.BaseFragmentinitView()初始化控件initData()为控件添加点击事件getPresenter()实例化PresentergetLayoutId()传递用户创建的LayoutId值7.BaseViewshowLoading()网络请求加载框hideLoading()取消网络请求加载框8.DataFragmentchooseFile()checkSearchTv()判断输入框是否有内容9.DBHelperDBHelper()数据库get()initDB(Contextcontext)初始化数据库insertOrUpdate(Objectobject)插入或更新对象update(Objectobject)更新数据insert(Objectobject)插入或者更新对象delete(Objectvar1)删除对象deleteAll(Class<T>var1)删除所有对象queryCount(Class<T>var1)查询数据总数queryDesc(Class<T>var1)查询列表——倒序query(Class<T>var1)查询列表queryById(longvar1,Class<T>var2)根据ID查询数据queryByWhere(Class<T>cla,Stringfield,Stringvalue)查询某字段是否等于Value值queryByWhere2(Class<T>cla,Stringfield,Stringvalue)模糊查询getQueryByData(Class<T>cla,Stringfield,Object[]value)模糊查询10.MainPresentergetLogin(Stringphone,Stringpwd)测试网络接口11.ProgressViewmaxValue=60*60进度条最大值currentValue当前进度值alphaAngle每次扫过的角度,用来设置进度条圆弧对应的圆心角firstColor底部圆弧的颜色secondColor进度条圆弧块的颜色centerTextColor=Color.BLUE中间文字颜色(默认蓝色)centerTextSize中间文字的字体大小(默认40px)circleWidth圆环的宽度circlePaint画圆弧的画笔textPaint画文字的画笔isShowGradient=false是否使用渐变色colorArray=newint[]{Color.parseColor("#2773FF")渐变圆周颜色数组drawCircle(Canvascanvas,intcenter,intradius)绘制进度圆弧drawText(Canvascanvas,intcenter)绘制文字setCircleWidth(intwidth)设置圆弧的宽度setFirstColor(intcolor)设置圆环的底色,默认为亮灰色setSecondColor(intcolor)设置进度条的颜色,默认为蓝色setColorArray(int[]colors)设置进度条渐变色颜色数组setDuration(intduration,OnFinishListenerlistener)按进度显示百分比,可选择是否启用数字动画,动画时长stopAnimator()退出界面时关闭动画,防止自定义view一直绘画第5章系统测试5.1登录模块点击软件图标进入“天天学”APP,首先出现如图5-1所示登录界面,输入手机号、密码,如果与数据库正确匹配,点击登录即可进入主界面。若匹配对应匹配失败,则显示“用户名不存在”或“密码不正确”。测试步骤及结果如表5-1所示。图5-1登录界面图序号操作场景描述测试预期测试结果1手机号与密码匹配进入主界面与预期一致2手机号与数据库不匹配手机号不存在与预期一致3密码与手机号不匹配密码错误与预期一致4点击注册进入注册模块进入注册模块与预期一致表5-1登录模块测试步骤及结果5.2注册模块进入注册模块如图5-2,填写用户名、手机号、密码,并再次确认密码,点击注册,将以上数据联合保存入数据库,显示“注册成功”。如果用户名在数据库中存在,则显示用户名已存在。如果手机号不符合手机号长度,则显示手机号有误。如果两次密码不一致,则显示密码不一致。测试步骤及结果如表5-2所示。图5-2注册界面图序号操作场景描述测试预期测试结果1各部分数据符合规定注册成功与预期一致2用户名在数据库中存在用户名已存在与预期一致3手机号不符合规定手机号有误与预期一致4密码1与密码2不一致密码不一致与预期一致表5-2注册模块测试步骤及结果5.3代办模块代办集模块及时钟模块如图5-3,右上角的加号按钮,点击触发添加事件,输入名称和时间,成功添加代办时间,时间为60min以内。父代办时间右方加号可添加子代办,过程同父代办。右方垃圾桶图标,点击触发删除事件,删除子代办或父代办。点击代办名称,进入倒计时界面,点击开始,即时钟开始倒计时,倒计时完毕显示任务完成。测试步骤及结果如表5-3所示。图5-3代办图序号操作场景描述测试预期测试结果1添加代办事件成功添加并显示与预期一致2添加子代办事件成功添加并显示与预期一致3删除代办/子代办事件成功删除与预期一致4点击开始,开始倒计时,倒计时精确,完成后显示事件完成成功开始,时间准确,结束显示事件完成与预期一致表5-3代办模块测试步骤及结果5.4书籍模块书籍模块如图5-4所示,点击加号进入SD卡,可添加TXT文件,添加完成后点击书的图片即可进入阅读。五角星点击后变成金色为收藏成功并在收藏夹中显示,再次点击触发取消收藏事件,垃圾桶图标点击触发删除事件,删除书籍及有关信息。搜索框可以搜索已经添加的图书名,模糊搜索,点击右边放大镜开始搜索。测试步骤及结果如表5-4所示。图5-4书籍界面图序号操作场景描述测试预期测试结果1点击加号,添加书籍成功添加,并显示书籍及其封面与预期一致2点击星号,收藏书籍成功收藏,并在收藏夹中显示与预期一致3点击垃圾桶,删除书籍删除成功与预期一致4放大镜,模糊搜索书籍显示书籍与预期一致表5-4书籍模块测试步骤及结果5.5个人模块个人模块的界面如图5-5所示,点击头像,进入个人信息模块,可查看用户名、手机号,如图5-5所示。点击我的收藏,查看星文件,如图5-6中1图所示。点击外观设置,可以调节软件整体主题,如图5-6中2图所示。点击回收站,可以看到删除的书籍及封面,如图5-6中3图所示。测试步骤及结果如表5-5所示。图5-5个人界面图序号操作场景描述测试预期测试结果1点击头像,查看个人信息成功查看手机号和ID与预期一致2点击我的收藏,查看收藏书籍成功查看收藏与预期一致3点击外观设置,查看主题类型,其中其一可以改变主题成功查看并改变主题与预期一致4点击垃圾站,查看删除的书籍成功查看删除的书籍与预期一致表5-5个人模块测试步骤及结果图5-6收藏、背景、回收站界面图
结论随着手机在学生中的普及,手机中的学习软件可能伴随他们学习阶段。设计一款实用的学习软件是很重要的,它可以提供简约清新的任务管理,简单高效管理习惯和目标,丰富的计时功能,本文设计了一款书籍管理类app,包括注册模块、登录模块、书籍模块和个人模块。登陆模块实现手机号、密码、登录、注册按钮,头像显示;注册模块实现用户名、手机号、密码、确认;代办模块实现增加、删除代办,主目录下增加删除子目录,倒计时时钟、时钟背景图片插入;书籍模块实现书名模糊搜索,书本、书籍导入,收藏、取消收藏和删除;个人模块实现头像点击进入详细信息,收藏夹、回收站、主题更改。该app可以随时随地获取、整理、分享书籍,让生活更有序、工作更高效、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年丹江口工程管理局职工大学马克思主义基本原理概论期末考试模拟试卷
- 2024年济南护理职业学院马克思主义基本原理概论期末考试笔试题库
- 2025年山东商业职业技术学院马克思主义基本原理概论期末考试真题汇编
- 2025年延安职业技术学院马克思主义基本原理概论期末考试笔试真题汇编
- 2025年湖南医药学院马克思主义基本原理概论期末考试真题汇编
- 2025高中秋季化学真题试卷含答案
- 2025春季高三历史冲刺押题
- 民俗文化节策划方案
- 生态湿地修复建设方案
- 企业员工技能培训方案
- 机械点检员职业资格知识考试题及答案
- 2024人形机器人产业半年研究报告
- NB-T20048-2011核电厂建设项目经济评价方法
- 生物医学分析化学方程式总结
- 钯金的选矿工艺
- 家庭系统疗法
- JCT640-2010 顶进施工法用钢筋混凝土排水管
- 四川省遂宁市2024届高三上学期零诊考试高三生物答案
- 桥梁施工技术培训课件
- 南部山区仲宫街道乡村建设规划一张表
- 锅炉焊接工艺规程
评论
0/150
提交评论