版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-1-基于Android的电子书应用设计与实现摘要:2008年,谷歌发布了一款名叫Android的智能手机操作系统。这款使用Linux内核,可自由使用和修改SDK包的操作系统,因为其系统的开源性和其突出的可拓展性,迅速地占领市场。并于2010年打败了微软的WindowsMobile系统。于2013年,彻底打败了曾经的老大哥——诺基亚的\t"/item/%E5%A1%9E%E7%8F%AD%E7%B3%BB%E7%BB%9F/_blank"Symbian系统。直到今日,安卓的市场占有率依旧居高不下。本文主要讨论了基于Android平台开发的电子阅读器的设计与实现。该设计在充分考虑人机交互的情况下,具有添加删除电子书、关键词搜索、章节自动整理、章节跳转、字体调节、阅读模式设置等主要功能,本文还讨论了应用程序的系统结构、逻辑结构、以及功能模块的设计流程,并在最后提出了对程序进一步功能拓展的展望。关键词:Android、电子书阅读器、智能手机正文目录一、项目概述………………………4(一)课题研究背景………………4(二)目的和意义…………………4二、相关理论及关键技术…………6(一)Android的特征………………6(二)Android的架构………………7(三)Android的应用的构成和工作机制…………8(四)AndroidSDK版本的选取…………………7三、需求分析………………………11(一)概述…………11(二)手机阅读器功能需求………11四、电子书阅读器的总体设计……………………14(一)数据库设计…………………14(二)数据流设计…………………15(三)软件结构设计………………15(四)关键功能演示………………16五、系统测试………………………33(一)Android手机系统测试之打断事件………33(二)测试中发现的问题及修复…………………33(三)本程序的扩展功能…………33(四)测试结果……………………34六、结语……………36致谢………………37参考文献…………38一、项目概述(一)课题研究背景对于手机软件开发者来说,这是一个激动人心的时代。智能手机开始在社会上流行起来,消费者不再满足于功能单一的手机。一些价格昂贵但功能强大的手机成为了年轻人的新宠儿,时尚且多功能的手机具有数不胜数的应用软件,例如GPS导航,听音乐,玩游戏,甚至是网上购物,固定费率、合理价格的数据计划使这些软件在社会上得以广泛应用。因此,它们已经成为吸引越来越多的开发人员创建各种新的有趣应用程序的平台。现如今,市场上有大量的Android设备可供消费者选择,包括带有SA/NSA双模组网的5G的手机和诸如搭载5nm工艺制程的麒麟9000芯片的移动设备,但是真正的赢家却是软件开发人员。因为移动应用的开发是建立在各个手机厂商的私有操作系统之上,限制了第三方应用的开发和部署,得益于日益强大的移动移动硬件,Android开发者可以自由编写应用程序,并在公开市场上销售。Android平台为了给用户和开发者带来便捷,安卓平台开发了很多独特的功能,有经验的应用程序开发者可以很好地利用这些功能来改进和开发其创新产品,并能很容易得扩展到Android平台上。并通过使用安卓为用户和开发者量身定制的AndroidMarket,开发者可以发布所有兼容Android设备的免费或者付费的应用程序,且无需经过审查,而用户也可以通过此平台来下载应用。Android实际上就是一个开源软件栈,包括操作系统、中间件和关键的移动应用程序,以及一套编写移动应用程序的API库。在twitter和Facebook之前,当谷歌只是一个想法时,手机只是一个可以放在公文包里的便携式手机。现在,小巧、时尚、功能强大的手机已经相当普及,并弥补了教训的不足。伴随着硬件的发展,手机的外设变得更加小巧高效的同时也变的越来越多了。在过去,使用C或C++编程的开发人员必须了解编写代码的特定硬件。后来,安卓平台被开发出来,为开发者提供更广泛的目标受众。在鼓励移动开发者开发更丰富的应用程序以更有效地利用硬件方面,这些系统比上面提到的封闭方法更为成功。(二)目的和意义学习关于Android的开发,解析在这一过程中自己学到的知识。最早,Android为保证应用软件在整个平台的通用性,以Linux为内核开发了Dalvik虚拟机,因为其开源的特性,任何人都能为其开发软件。而且自从art在Android5.0中被默认使用,art虚拟机采用预编码的方式来提高应用的运行效率,这种以空间换效率的方法被证明可以加快应用程序的启动速度,并且具有界面可定制性高,可玩性强等优点。Android从此迅速地占领市场,很多软件开发者对此趋之若鹜。选这个题目的意义是想通过这一次的实践,通过对用户的一个整体需求的分析,来完善和改进一个基于Android的手机阅读器。为了解决用户在使用市面上一些电子书阅读器软件时遇到的问题,例如操作复杂、电子书的阅读需要权限、不够美观等问题。通过这一次的实践学习,积累宝贵的经验。
二、相关理论及关键技术网络文学作为互联网上一大热门市场,促进了人们学习阅览的新浪潮。因为手机的便捷性,人们可以随时随地阅览书籍。于此同时,大量的文本资源也在互联网上传播。这些文本资源在促进人们日常阅读需求的同时,不少经营阅读器的商家也因此谋利。很多商家为了利益,舍弃了一些用户的利益,他们过度开发阅读器,一味地追求付费阅读和投放广告,一些花哨的外观和不实用的功能不但没有给顾客带来便捷,还造成了用户手机的资源浪费,时间长了,用户会发现手机出现了CPU、内存等固件的占用率过高等问题。为此,我们选择了开发一款无需付费的阅读器,并对其性能优化。基于Linux操作系统,Java语言编写,两者共同组成了Android移动设备软件平台,并为其提供软件解决方案,包括Linux内核、移动中间件和SDK。为了保证应用软件的可移植性和多样性,Android平台开放了基于Linux内核的开发工具,并为开发者们提供了一个框架。应用程序的开发者们可以利用这个平台开发程序,也可以开发新的组件来为自己或者其他的程序提供程序调用(高焕堂,2008)。(一)Android特征Dalvik虚拟机:达尔维克虚拟机是Android用以运行程序的老牌虚拟机,Java语言通过该虚拟机进行运行,其表达的指令集基于寄存器架构。Dalvik极大地优化了手机,同时确保了API兼容性。它拥有占用资源少,运行效率高等优点。内嵌浏览器:是指在应用软件中使用安卓网页视图在应用内嵌入了浏览器。应用软件使用了浏览器的内核,就可以为应用程序增加HTML支持。SQLite数据库:它诞生于2000年的五月,长期以来为安卓系统提供一种结构化的数据存储,它是一个轻量级数据库,它不仅仅处理速度快,支持事务处理功能,占用的资源还特别的少,一般情况下只需要几百K的内存就够了。总而言之,它是一个集多种优点于一身的数据库。多媒体支持:安卓的多媒体核心是OpenCore,在开发应用软件实现具体功能的时候,需要用到OpenCore的SDK,再通过在应用层实现一个适配器,然后在适配器上实现具体功能。它支持图片、音频等常用的音视频和图像格式。GSM技术:全球移动通信系统,又称“全球通信”,是第二代移动通信技术。它的发展目标是让世界各个地区共同使用一个移动电话的网络标准,是一种广泛用于世界各个地方的数字移动电话系统。无线传输技术:蓝牙5、WIFI6、5G,现如今最前沿的无线传输技术。而值得一提的是5G技术,为了提升网络容量,高效得利用好网络资源,就必须要对各个网络高效管理,现如今5G技术已经可以做到高效地无线传输数据,而我国也处于5G技术开发的世界领先地位。全球定位系统:就是大家耳熟能详的GPS,是美国的第二代卫星导航系统。在应用程序的开发中,具体通过定位管理器来监听位置的变化来实现定位。Compass:又称指南针搜索,它通过一个可以扩展与模块化的开源的Java搜索引擎框架,依靠拥有强大搜索力的搜索引擎,自安卓发布以来一直是其性能强大的系统自带的搜索引擎。强大的开发环境:Eclipse作为一个集成的开发环境(张鹏,2008),其本身只是一个框架和一组服务,通过EclipseIDE开发插件构建了一个开发环境,但是它本身自带的插件集,其中包含了Java开发工具用以调试工具、设备模拟,以及内存和性能测试,构成了一个强大的Android开发环境用以提供给开发者。(二)Andriod的架构Android框架是由最主要的五个部分组成的,第一个部分是Linux内核,第二个部分是Dalvik虚拟机,第三个部分是应用框架,第四和第五部分是C/C++函数库和一些关键的应用组成的。具体参见图1。经由对以这一框架为基础的应用程序进行编译,能够在在一定程度上避免了资源的浪费,以至于它能在虚拟机上运行。图1Android的架构(张鹏,2008)1.关键应用程序诸如电子邮件应用软件,短信等程序可以在Android平台中被开发者调用,这些应用程序被称作关键的应用程序。开发人员可以采用Java开发语言在Android平台上研发,使这些软件更具特色。2.应用程序框架安卓常常会对自身框架里的组件进行不定时且一定程度的优化,用来给程序加以调用,这一切是得利于其开发是以组件和框架为基础。当然,研发人员会对于新组件加以研发,并将其置于框架中,用来给应用程序调用。3.C/C++函数库Android应用框架里有一套C/C++函数库,他们为研发人员提供了组件服务。比如标准C库、多媒体应用中心、浏览器引擎、图形库等。4.Java程序运行环境在Android中Java运行需要核心的数据库和一个虚拟机,它能够合理地利用Java程序的资源对其优化。Dalvik虚拟机的重要优势是它可以利用每一个Android应用程序并在自己的进程里运作。Dalvik设计把文件在单个设备上封装成Dalvik的(.dex)可以执行文件的格式并在众多虚拟机上运行。此即为研发人员得到的最小的占用空间格式。Java编译器能够把创造时的类和执行时候的类转化成格式.dex。Linux内核能够带来给虚拟机很多的优化比如说内存优化与线程优化机智。5.Linux内核Android系统品台的重中之重是Linux内核,它不仅可以管理进程和内存,还可以在手机的软件中起到桥接的作用。其功能为上层软件提供了对于硬件的屏蔽层服务。(三)Andriod的应用的构成和工作机制对于Android应用程序而言,它由活动、意图接收者、服务和内容提供者构成,但并非所有程序均需要通过上述四个部分构成。在对其加以应用的时候,需要采用AndroidMainfest.xml文件中的配置。这个配置文件是所有程序都不可缺少的,定义了组件功能和必要条件。1.ActivityActivity在应用程序开发中充当了重要的构建组件。在Activity中创建一个用户交互的展示窗口,通过调用一个动态显示的视图的方式,就可以在此类窗口中将用户界面加以展示。因此,Android应用程序才能实现了用户的交互。图2变更Activity状态的路径图(刘慧,2007)(1)活动进程的生命周期活动堆栈是活动在系统里的主要管理形式。当某一个新建的活动开始的时候,其被置于堆栈上并变成一个正在运作的活动。新活动以前的活动一直处于堆栈中新活动的下方。在新活动退出之前,它不会返回前台。从图2中的活动状态转换路径图能够看到,活动有如下三种关键的周期:1)活动的整个生命周期:首先,从调用onCreate(Bundle)到末次调用onDestroyO。不管何种类型的初始化均在前者中加以执行,清理都在后者执行来用于对资源的释放。2)活动的可见生存期:用户不用和活动直接交互,通过对onStart()到onStop()的调用,用户们就能在屏幕上看到该活动。并且通过对这两种方法的多次调用,还能够完成维护活动对用户显示的资源以及让活动随时在可见与隐藏之间加以转换等一系列的操作。3)活动的后台生存期:该活动的优先级高于其他各项活动,通过调用调用onResume()到onPause()的方法来和用户进行交互。能够在恢复和暂停直接来回的切换也是该方法的一大功能。(2)活动之间的切换Android程序通过利用Intent类向其他安卓组件请求操作,完成活动之间切换。Intent想完成各组件直接的调用,首先得对操作中的各项数据、动作、附加动作加以描述,通过它描述的内容来找到相应的组件,并把该描述传输给需要调用的组件来完成调用。其功能类似于一个媒体中介,提供了与组件之间彼此调用的相关讯息,并把调用者与被调用者解耦。在程序中,我们能够采取两种形式的Intent:1.直接意图,它对于组件的属性直接加以指定,并依托指定特定的组件类来通知应用程序对于对应的组件加以开启。2.间接意图,即不指定组件属性的意图,但是为了方便确定系统是否能够依靠此类信息来获取能够满足意图的组件,它需要拥有充足的有效信息。2.IntentReceiver意向接收(IntentReceiver)用来对于外部事件加以响应。当此类事件出现的时候,通知管理器将用来对于用户进行通知。当其被触发的时候,系统会在必要的时候将对应的应用程序加以启动。比如,在本系统中,当用户在其他界面上进行操作的时候,倘若朋友传输消息,就会依托通知的形式传输至目前界面的顶部,通知用户。各类程序还能够依托应用上下文对其他应用程序广播其目的接收器。Broadcastintent()实现应用程序之间的通信。3.ServiceService是提供连续信息的应用程序。它是在应用程序后台运行的服务。当用户开展其他活动的时候,服务始终是在以Android平台为基础的即时通讯系统的研究和实现后台运行,直到用户将服务加以终止亦或是服务完成。系统客户端扩展功能的阅读器是依托其设计研发的,用户能够一边阅读一边聊天。4.ContentProvider内容提供商应用程序能够把数据储存于SQL数据库、文件和其他存储设备中。当程序需要对于存储设备里的数据加以应用的时候,它能够通过内容提供者来实现。利用内容提供商能够将底层的存储设备灵活加以替换,让研发人员可以将更多的目光聚焦于对于应用逻辑的研发,而并不需要虑及底层存储设备的细节,使应用系统拥有良好的数据质量。(四)AndroidSDK版本的选取Google官方建议android开发SDK一般选用最新版本。应用程序能运行的Android版本不是由SDK决定的,是由每一个项目的minSDK决定的,且SDK都是向下兼容的,它在不断改进中,新的SDK会更新更强大开发工具,而且更高版本的SDK编译的spk的执行效率会比旧版本的更高。至于每个应用程序应该用什么minSDK,应该根据具体应用的API来。现市面上的主流机型AndroidSDK29。而我们开发使用到的SDK版本为SDK25。
三、需求分析为了可以研发出一款将客户需求加以有效满足的应用软件,我们应该在正式研发以前对产品展开全面系统的需求分析。这是一个至关重要的环节,这不仅仅是出于对用户的实际体验考虑,这也能让开发者对自己的技术水准有所认识,对软件的整体布局以及功能架构有一个初步的框架。(一)概述随着智能手机的快速普及,用户体量的不断增大,现如今市面上的阅读软件多如牛毛,有一些软件因为广告或者弹窗的植入,亦或者功能上的严重缺失导致了用户的使用体验很差。也有很多功能非常完善的阅读器,值得一提的是,本人也是一个阅读器的重度用户,基于我对4款不同阅读器的使用体验,取其精华去其糟粕,对于人机交互,我总结了一些个人观点应用于本次的开发实践。(二)手机阅读器功能需求因为Android大多是以手机平台为基础,不可避免局限于较小的操作屏幕,简洁的界面更易于用户的操作。在页面布局方面也是选择采用了一种相对简单的布局方式GridLayout(网格布局)。通过对阅读器的界面划分来实现用户不用的功能需求,对于用户的操作界面我这里分为了两部分:书籍界面、阅读界面。1.书籍界面需求分析该手机阅读器进入之后首先看到的界面即为书籍界面。用户需将所需阅读的书籍事先下载与手机自身硬盘或者SD卡中。页面还具有对书籍的模糊查询功能,长按书籍的删除功能,以及单击点击书籍后跳转到阅读界面的功能。具体参考图3。图3书籍界面需求分析(1)添加书籍界面这一界面的需求分析具体参见表1。表1录入书籍界面的需求分析参与者用户概述使用者需点击“+”号按钮,调用SDK组件跳转到sdcard界面前置条件sdcark已经扫描完毕,书籍已经处于设备中详细描述用户选择书籍所在的文件点击需要添加的书籍系统跳转回到书籍界面进行刷新后置条件书籍已经载入书籍界面,用户可以用以阅读(2)删除书籍界面这一界面的需求分析具体参见表2。表2删除书籍界面的需求分析参与者用户概述使用者长按书籍,界面底部弹出“删除”按钮前置条件界面有添加好的书籍详细描述用户点击“删除”按钮,书籍就在界面中消失了后置条件界面中如有跟被删除书籍重复的书籍,重复书籍也会一并删除(3)查询书籍界面这一界面的需求分析具体参见表3。表3查询书籍界面的需求分析参与者用户概述用户点击搜索图标弹出输入框前置条件界面有添加好的书籍详细描述1.用户输入文字2.点击输入框右侧的“>”进行模糊查询并进行界面跳转3.新界面中只存在书籍名字含有输入文字的书籍4.点击“清空搜索条件”跳转回原界面后置条件被查询到的书籍依旧拥有删除和阅读的功能(4)阅读界面为了迎合不同年龄段的使用人群,特地在电子书阅读界面中加入了调节字体大小功能以及字体加粗功能。为了方便新用户跳转章节,我们加入了章节进度条,以每个章节作为基本单位进行阅读进度的跳转。通过选择不同颜色的图片来更改背景颜色,增加可切换的翻页过度动画,大大的增加了软件的可玩性。如图4所示为阅读界面用例图。图4阅读界面用例图
四、电子书阅读器的总体设计(一)数据库设计数据库文件和结构的设计应根据不同的目的和要求来确定整体的数据组织。数据库中的数据应该按照一定的数据模型进行组织、描述和存储。它具有可重复性小、数据独立性高、可扩展性强等特点,可以被一定范围的用户共享。在涉及数据库的软件开发中,需要根据所要解决问题的性质和规模以及前端程序生成工具来选择合适的数据库类型。1.数据库及字段属性设计本程序中的数据库设计比较简单,主要由一个book表构成,这个book表主要是用于存储书籍以及查询书籍。如表4所示。表4book字段表属性数据类型外键Books_IDintegerForeignkeyBooks_nameStringBooks_pathString2.数据库的连接Android中的SQLite数据库是一个非常小的数据库,它适用于Android移动平台。Android数据库的存储位置一般在data/data<项目文件>/database/目录下。Android利用ContentProvider作为内容的提供者,利用SQLiteOpenhelper数据库帮助类来操作和创建数据库。使用Context.getContentResolver()方法直接对数据库进行操作。3.数据库的创建Android提供了标准的数据库创建方式,在创建数据库前以下代码先创建Books表。classBooks{
privateBooks(){}
publicstaticclassBookEntryimplementsBaseColumns{
publicstaticfinalStringTABLE_NAME="books";//创建“书本”表
publicstaticfinalStringCOLUMN_NAME_NAME="name";//书名
publicstaticfinalStringCOLUMN_NAME_PATH="path";//路径
}
(二)数据流设计程序开始首先SQLite数据库进行初始化,在showbook()显示电子书前,导入电子书books.db,因为我不是先添加电子书,而又添加了一个模糊查询,主要是遍历查询book表的三个属性:ID、name,以及path。当发现查询到的书与要寻找的书一致时,就把它显示出来。如图5所示。图5系统数据流图(三)软件结构设计手机电子阅读器是基于Android应用程序框架,并且采用了模块化的设计模式,为阅读带来了方便与乐趣。通过对当前的软件主要功能的分析,软件主要分为查找模块和显示模块两个部分,结构图如图6所示。图6软件结构图(四)关键功能演示1.书籍界面的设计书籍界面设计。受限于Android平台手机屏幕的大小,为了不使用户有凌乱的感觉,界面由电子书搜索组件、书架以及添加电子书组件这三部分组成。其中添加电子书功能通过调用安卓SDK中的查找文件模块,访问本地文件对电子书进行添加,不可在线上实时下载电子书。如图7所示。图7添加电子书查询电子书功能使用了模糊查询,对数据库进行读取,在书架页面显示查询出的结果,再单击“清空搜索条件”取消查询并刷新页面。如图8所示。图8查询电子书删除电子书功能需要用户长按书本按钮时长两秒及以上,届时在界面下方会出现“删除”按钮。点击删除完成该电子书在书架的显示。如图9所示。图9删除电子书2.电子书风格设置设计电子书阅览界面通过对含有关键词“第”和“章”的条件语句判断章节,再通过分行符对章节进行分割,用以实现章节的跳转。本电子书软件制作时是在MuMu模拟器上运行的,调用了HwTxtPlayActivity函数,这个函数封装了一般阅读器的大部分功能,故此,背景更改、字体大小的选择、翻页的模式更改以及章节跳转等功能都在该函数里实现了,效果如图10所示:图10电子书风格设置图
五、系统测试(一)Android手机系统测试之打断事件Android手机提供的中断事件在某些机制上与以前的手机不同。当然,有许多机制和以前一样。因此,应从其应用中断机制入手,来定制系统测试用例的中断事件。1.打断事件一般分为系统基本打断事件;2.返回键;3.改变手机的方向;4.长按Home键,切换应用程序;5.内容冲突的检测;6.长按Power键,调出关机界面;Home键回homeapp当测试的应用就会放到后台处于stop状态。如果想监控到Activity生命周期的变化,必然会在Create或Start等处代码来进行处理。(二)测试中发现的问题及修复在设计和开发过程中,该软件遇到了很多问题。在老师和朋友的细心指导下,问题一一解决。本软件的主要问题是在文件的资源获取时,发生因为手机版本和型号的不同,样式冗余,导致本软件在遍历内存时,添加可用文件的时候出现错误的判断,使得电子书不能正常的导入,在朋友的建议下,如果想成功运行本电子书软件,务必在MuMu模拟器上运行。(三)本程序的扩展功能由于设计和制作的时间和精力有限,本程序只实现了预期的各种功能的实现,并没有达到真正意义上的完美。在测试过程中,发现有很多功能可以扩展。这一部分将在以后的改进和程序升级过程中逐步完善。1.本程序界面问题的完善如何完善本程序的界面对于次程序来说,由于时间有限,程序的所有主题和背景仅仅理由了在颜色上的转换,这使得本程序的界面略显单调,缺乏个人创意。在今后的改进过程中,本程序的界面可以通过特殊的设计或图像处理进行优化,让用户在阅读书籍时有更加丰富多彩的视觉体验。2.与其他应用程序的同步处理在测试过程中与其他应用程序同步,程序运行稳定,未发现与其他程序不兼容的情况,因此在今后的功能扩展中,可以考虑为程序增加同步服务,如在运行二次读卡器的同时收听音乐广播,使用户可以在阅读自己喜欢的电子书的同时,还可以听优美的音乐。3.网络资源问题当用户添加自己喜欢的电子书时,如果可以直接在网上添加,会使阅读更加方便。因此,在本程序的升级阶段,我们可以为本程序添加一个在线书店模块。由于在现有网页上下载电子书存在收费问题,本程序将设计制作一个属于本程序的独立网站,并在线更新下载资源,不仅解决了电子书来源问题,而且实现了零收费下载,为所有用户提供了便利的服务。(四)测试结果根据上述方法,我们对改电子书阅读系统进行了测试,测试结果如下:1.程序刚启动的测试效果解释。在启动这个程序的过程中,首先通过动画界面的跳转,有三种活动运行方法:oncreate()、OnStart()、Onresume()。经过对Activity方法生命周期的考察与证明,证明该步骤是正确的运行方法。测试效果如图11所示:图11程序启动测试图2.按返回键测试效果解释。当用户单击return按钮时,Activity的实际操作过程是先销毁当前接口,然后再次运行终止的接口。我们可以发现系统通过onpause()方法终止当前接口,然后运行oncreate()和onstart()方法来实现返回。经过测试,这个过程是正确的。测试效果如图12所示图12按back键时测试图3.按home键测试效果解释。当用户按下home键时,此程序关闭程序并销毁所有Activity活动。因此,图13显示了系统调用onstop()方法来关闭程序。经过测试,流程正确。图13按home键时测试图此测试使用Activity断点测试来分析程序的不同操作步骤。在程序中添加相关断点,将程序分成不同的部分,然后进行测试。测试结果理想,没有严重的程序问题。六、结语通过这次的项目实践,我对Android的开发过程有了更深的了解。在实践的过程中,从最初的对产品的空白到逐渐清晰,我了解了基本的知识内容。我深深体会到Android开发是非常有趣的,可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年核医学科防护操作试题及答案
- 2026年放射卫生资格考试单选题库权威
- 2026年大健康产业管理知识技能测试试题及答案
- 消防安全知识试题附答案
- 父亲思念军中女儿的诗句及解读
- 2026年安全生产考试题库(行业安全规范)安全生产事故案例分析预测卷及答案
- 全科医生转岗培训考试(理论考核)题库及答案(南宁2026年)
- 2026年江苏省邳州市高一数学下册期末考试模拟试卷及答案(典优)
- 2026年村居畜禽屠宰场交叉疫病隔离防控应急预案
- 2026年江苏省海门市高一数学下册期末考试模拟试卷及参考答案一套
- 提高光伏能源项目安装一次合格率QC论文
- 304不锈钢圆管检验报告
- 重庆市建筑工程设计文件编制深度规定及审查要点-智能化
- 急性呼吸困难鉴别诊断与处理课件
- 2016广东省排水管道非开挖修复工程预算定额
- 广东省事业单位改革方案
- 浮针疗法课件
- 人教版(2019) 选择性必修第四册 Unit 5 Launching Your Career阅读简案课件
- 高尔夫球场设计课件
- 小学三年级数学经典应用题100道
- 电影院使用活荷载要求及装修做法
评论
0/150
提交评论