




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE54本科毕业论文论文题Android平台手机文件监控系统的设计与开发学院计算机科学与教育软件学院专业班级姓名学号指导教师填表日期Android平台手机文件监控系统的设计与开发摘要随着Android智能手机的普及,手机的安全问题也就接踵而来。我们都知道,保护系统安全的一个重要组成部分就是保护文件的安全,所以,通过文件监控这个方法来时刻监控文件是否完整是保护系统安全以及发生安全问题后进行初步评估的一个重要基础。不仅如此,在个人私隐方面,监控文件,可以让用户知道自己手机内的文件是否在自己不知情的情况下被他人查看,是一个保护个人私隐的有效途径。本文研究Android文件系统,发现Android系统API提供了FileObserver抽象类,这是一个基于Linux的INotify机制的类,这个类可以用来监听系统中的文件。文章详细说明如何通过这个类来实现对Android系统中的多个文件或文件夹进行有效的监控,实现了一个Android平台手机文件监控系统,从而让我们可以通过监控系统查看到文件发生打开、删除、修改等事件。关键词Android智能手机;文件监控;FileObserver;JavaABSTRACTWiththepopularityoftheAndroidsmartphone,thephone'ssecurityproblemswillfollow.Weallknowthattoprotectanimportantpartofsystemsecurityistoprotectdocumentsecurity,filemonitoringmethodtomonitorfileatalltimesiscompleteprotectionsystemsafetyandsecurityproblemsanimportantbasisforapreliminaryassessment.Moreover,intermsofpersonalprivacy,controlfile,youcanlettheuserknowthatthefileswithintheirowncellphoneontheirownwithouttheknowledgeofotherstoview,isaneffectivewaytoprotectpersonalprivacy.Inthispaper,theAndroidfilesystem,theAndroidsystemAPIprovidesFileObserverabstractclass,whichisaLinux-basedinotifymechanismclass,thisclasscanbeusedinthemonitoringsystemfile.ThearticledetaileddescriptionofhowtoachievethisclassAndroidsysteminmultiplefilesorfoldersforeffectivemonitoring,anAndroidplatformformobilephonesfilemonitoringsystem,sothatwecanthroughthemonitoringsystemtoviewfileisopen,delete,modifyandotherevents.KEYWORDSAndroidsmartphone;FileMonitor;FileObserver;Java目录1前言 11.1课题背景 11.2研究现状 22相关介绍 22.1Android系统基本介绍 22.1.1什么是Android? 22.1.2Android的由来 32.1.3Android系统的特点与优势 42.1.4Android开发环境的配置 42.2Linux的INotify机制 62.2.1INotify机制基本介绍 62.2.2FileObserver类作用 72.2.3FileObserver类的基本使用方法 82.3java程序设计语言 113.系统设计 113.1课题来源 113.2业务需求 124.系统分析与设计方案 134.1文件监控系统的总体设计思想 134.1.1实现思想 134.1.2实现步骤 13系统流程图: 155.监控系统各功能模块 155.1开始界面模块 155.2监控路径选择模块 165.3监控模块 175.4日志查询模块 186.各个类的作用 18总类: 196.1MainActivity类 196.2FileMonitorService类 206.3MyFileObserver类 216.4Utility类 216.5NavigationView类 226.7FileLayout类 226.8FileManagerLayout类 237.系统设计与实现 247.1开发环境工具 247.2硬件环境 257.3监控系统功能测试 257.3.1在模拟器中测试: 257.3.2在android手机上测试 277.3.3测试结论 288总结 298.1毕业设计总结 298.2经验和感想 29参考文献 31致谢 32Android平台手机文件监控系统的设计与开发1前言1.1课题背景随着科技的发展,以及近年来各种手机操作系统的不断出现,可以说,手机的功能是越来越多也越来越完善。因此,手机也更加像是一台移动微型计算机。在日常生活中,我们使用手机的时间越来越多,甚至在某些方面,手机还代替了个人电脑做到以往只能用个人电脑才能做的事情,譬如:收发邮件,查看文档,网上购物等等。然而,随着对智能手机的依赖,智能手机不仅仅是一个手机的存在,更是一个存放重要个人信息的一个存储器,越来越多的人都在智能手机上存放了一些个人信息,便于日常生活的需要,例如:网上购物的网银账号等。一旦这些信息泄露或损坏,将对手机用户造成无法估计的损失。另一方面,智能手机的越发普及,针对智能手机的恶意软件也不断地出现。这些恶意软件就像计算机软件一般,包含了各种木马、蠕虫、间谍软件或其他病毒,给手机上的用户信息安全带来了极大的威胁。我们都知道,如何维护计算机系统的安全有很多种途径,其中系统中的文件安全问题是不可忽视的。通过文件监控来时刻监控文件是否完整是保护系统安全以及发生安全问题后进行初步评估的一个有效方法。除此之外,监控手机文件在一定程度上也是保护了用户的私隐。例如,手机内的文件在用户不知情的情况下被别人偷看,那么,通过监控系统,用户可以知道自己的什么私隐在什么时候被其他人知道,有了初步的损失估算。为此,对智能手机上的文件进行监控是必不可少的。论文通过对Android的学习和研究后,发现Android系统API里面有着一个名叫FileObserver的抽象类,这是一个基于Linux的INotify机制的类,这个类可以用来监听系统中的某个文件。以此为基础,本文设计实现了一个Android平台手机文件监控系统。1.2研究现状Android中文名称为安卓,实际上是一个基于Linux的手机系统的名称。在2007年11月5日,该系统由Google正式发布。平台由四部分组成,分别是操作系统、中间件、用户界面和应用软件,号称是第一个为移动平台专门打造的真正开放以及完整的移动软件。随着Android平台的普及以及该平台的开放性,许多在Android平台上运行的软件也越来越多。当然,除了那些比较流行的游戏类和一些网络聊天类等软件,杀毒软件也日新月异,还有一些比较实用的文件管理的软件。可以说,Android平台上该有的软件基本都有了,那些不该有的也有所出现。那么,对于文件监控这个模块的软件,是不是就没有了它的存在价值呢?就如上面所说的,文件监控是为了保证数据的完整性以及用于灾情评估的。但是,有人会说,杀毒软件起到的作用不是更加直接?可是,杀毒软件是基本作用是用于杀毒以及维护系统的安全的,对于哪个文件的损坏或者被修改,是无法知道的,这时候,文件监控就起到这个作用。系统在发生病毒感染后,某些文件也许会被修改或者损坏,通过文件监控可以得知是哪个文件被打开过、受到损坏或者被修改。通过得知的结果,手机用户可以以此评估这次中毒可能要面临的损失大概是怎么样的。同时,在日常生活中,手机被不是该手机用户的人所查看,手机用户可以在事后通过文件监控得知自己手机的哪个文档被打开查看过,这样可以起到一定的保护私隐的作用。相信,以后会出现一些功能更加全面的文件管理方面的软件,那些软件除了能对系统内的所有文件进行管理的同时,也有着监控的功能,甚至是对某个文件进行加密。这样的软件,对于手机用户来说,无疑是一个不错的选择。2相关介绍2.1Android系统基本介绍2.1.1什么是Android?Android,简单来说,是一个开源手机系统的名称。用过Android系统的人都会看到一个类似机器人的图标,这实际上就是Android原来的意思。在2007年11月5日,该系统由Google正式发布。平台由四部分组成,分别是操作系统、中间件、用户界面和应用软件,号称是第一个为移动平台专门打造的真正开放以及完整的移动软件。简单地说,Android是与java、symbian、windowsmobile、ios等并驾齐驱在手机市场上的一个手机操作系统平台。在Google发布后的一年,Android正式兴起,而且在很短的时间内就迅速崛起,成为了2010年最热门的手机操作平台。2.1.2Android的由来Android(中文名为:安卓)美国的一家成立于2003年的公司,它的创办人一共有三位,分别是AndyRubin,AndyMcFadden以及RichardMinerChrisWhite。这家公司的主要业务为有两个,是手机软件和手机操作系统。AndyRubin创立有两个手机操作系统公司:Danger和Android。曾经,Andy把Danger和Android分别以5亿和4千万美元分别卖给微软和Google。在2007年11月5日,该系统由Google正式发布。Android平台一共由四部分组成:操作系统(底层)、界面(用户看到的部分)、应用软件以及中间件。同时,Google认为Android是第一个为移动平台专门打造的操作系统,具有开放性以及完整性。Android采用的是一种名叫软件堆层的架构,这种架构又叫做软件叠成架构,这种架构主要分为三部分。分别是底层、中间层以及最上层。其中,以linux作为内核工作基础的是底层,只提供最基本的那些功能。并且这部分的实现是由C语言开发的。至于中间层,却是由C++语言开发。这部分主要包括函数库和虚拟机。最后,则是最上层,通俗来说,这部分相当于我们平常用的各种手机应用软件。这些应用软件大部分由各个公司自行开发,例如通信程序、短信程序等等。还有,最上层与前两层的开发语言又不一样,是用java编写程序的。从Google发布android的那天,Google就和各种与移动设备相关的产业建立起深层次的合作关系,例如软件和硬件开发商、设备制造商、电信运行商等等。同时,Google也希望通过这样的合作,建立起一个具有标准化和开放式特点的手机软件平台,并且形成一个良好的生态系统。2.1.3Android系统的特点与优势Android系统是一个完全开放,完全开源,完全的自由式系统。应用程序可以并行运行。方便,快捷的获得应用程序。倘若说之前的Symbian系统以及WindowsMobile系统都是按照别人的意思来生产手机的话,那么Android系统则是让厂商们的彻底地放开了手脚。这也是为什么在Android系统发布不到一年的时间里,HTCSence、MOTOBlur等众多让人称赞的自定义UI就出现在我们的视线里的原因。大家对于这些优秀的UI可以说是称赞不绝,同时对于发展商来说,这有利于他们宣扬自己的那些品牌理念。所以,越来越多的人们认可了这一个名叫Android的移动平台系统。还记得2008年以前,我们到市面上买一台功能比较健全的手机,花费可是很大的。然而,对比现在,买一台功能全面的智能手机的价格却不是很高。很多人会说,时代进步了,科技发达了。这种说法很对,但是不准确。Android的出现,可以说是时代的不断进步的结果,其实,最大的原因是android平台的开源。因为,智能手机的操作系统的授权费可是不低的。正是由于Android的这种开源性,广大的厂商在利用Android平台进行手机开发的时候不再需要支付过去那很贵的授权费用。可以说,这是很大程度上减少了厂商们的开发成本,这样,也就有越来越多的厂商愿意投资开发Android平台的移动设备。另一个原因是2009年发生了金融风暴,很多厂商都缩减了开支,这时候android的出现就为他们带来了一条新的道路。2.1.4Android开发环境的配置1.安装JDK在官网上找到JDK的安装包并把安装包下载下来,并且进行安装。安装完后,可以通过打开windows系统的命令提示符,输入java–version,如果安装成功,会看到JDK的版本。2.安装Eclipse在官网上找到Eclipse的压缩包,解压后就可以使用了。如下图,是Eclipse的其中一个版本。3.安装AndroidSDK在AndroidDevelopers下载android-sdk_r05-windows.zip,解压后运行安装。4.安装ADT打开Eclipse,打开菜单“help——》InstallNewSoftware”。点击Add按钮,具体操作请看下面图片介绍。5.创建AVD(为了以后配置android的模拟器)在Eclipse中,进行一下操作:Windows>AndroidSDKandAVDManager>VirtualDevices>New>填入Name,选择Target的API(SDCard大小任意,Skin随便选)Hardware目前保持默认值
>CreateAVD完成以上操作即可完成创建AVD。2.2Linux的INotify机制2.2.1INotify机制基本介绍1.什么是Inotify平常,设备的运行维护过程中,我们很多时候是需要备份一些文件的,或者对一些诸如重要的配置文件进行监控。其中linux内核的inotify机制,就能实现对文件的监控。通过查看资料,Inotify是一个具有强大、细粒度和异步特点的机制。实际上,就是一种基于inode级别文件系统监控技术。很多各种各样的文件监控需求,它都能够很好地完成,不仅是性能,在安全方面也同样出色。对于那些被监视的目标,Inotify是不需要打开它们的文件描述符的。同时,当那些被监控的目标是在可移动的介质里,这个机制在umount那个可移动介质上的文件系统后,那些与文件对应的watch就会被自动删除,这时候会产生一个umount的事件。以下是Inotify机制的特点:Inotify不仅可以监视文件,而且可以监视目录。Inotify使用系统调用却不是SIGIO来通知文件系统事件。Inotify的接口是通过使用文件的描述符。所以,Inotify监控文件的变化时,是可以使用通常的文件I/O操作的,例如:select和poll。2.Inotify可监视的文件系统事件1、IN_ACCESS:文件被访问2、IN_MODIFY:文件被写入东西3、IN_ATTRIB:文件属性被修改4、IN_CLOSE_WRITE:可写的文件被关闭5、IN_CLOSE_NOWRITE:不可写的文件被关闭6、IN_OPEN:文件被打开7、IN_MOVED_FROM:文件被移走,如mv8、IN_MOVED_TO:文件被移来,如mv、cp9、IN_CREATE:创建新文件10、IN_DELETE:文件被删除,如rm11、IN_DELETE_SELF:可执行文件自己删除了自己(执行过程中)12、IN_MOVE_SELF:可执行文件自移动(移动过程中)13、IN_UNMOUNT:宿主文件系统被umount14、IN_CLOSE:文件被关闭,等同于(IN_CLOSE_WRITE|IN_CLOSE_NOWRITE)15、IN_MOVE:文件被移动,等同于(IN_MOVED_FROM|IN_MOVED_TO)2.2.2FileObserver类作用1.概述:FileObserver类是在Android的api中,实际上,这个类是基于linuxInotify机制的。主要用于监控文件的一些事件,例如文件被访问创建、修改、删除、移动等。FileObserver是个抽象类,所以必须继承它才能使用。通过查看Androidapi文档,得知FileObserver监听的对象可以是一个单独的文件又或者是一个文件夹。当监视的是一个文件夹,那么当该文件夹下所有的文件和子目录发生事件时,FileObserver都会被触发。2.监听的事件类型:1、ACCESS,即文件被访问。2、MODIFY,文件被修改。3、ATTRIB,文件属性被修改,如chmod、chown、touch等。4、CLOSE_WRITE,可写文件被close。5、CLOSE_NOWRITE,不可写文件被close。6、OPEN,文件被open。7、MOVED_FROM,文件被移走,如mv。8、MOVED_TO,文件被移来,如mv、cp。9、CREATE,创建新文件。10、DELETE,文件被删除,如rm。11、DELETE_SELF,自删除,即一个可执行文件在执行时删除自己。12、MOVE_SELF,自移动,即一个可执行文件在执行时移动自己。13、CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE|IN_CLOSE_NOWRITE)。14、ALL_EVENTS,包括上面的所有事件。2.2.3FileObserver类的基本使用方法当我们要对一个文件或者文件夹进行监听的时候,我们可以使用androidapi中的android.os.FileObserver这个抽象类。如何实现一个FileObserver:FileObserver是个抽象类,必须继承它才能使用。这时候,我们可以新建一个类通过extends关键字来继承FileObserver这个类。然后覆盖其构造器,最后覆盖onEvent(intevent,Stringpath)方法:例如:publicclassMyFileObserverextendsFileObserver{/**path是所监听的文件夹或者文件名。*/publicMyFileObserver(Stringpath){super(path);}@OverridepublicvoidonEvent(intevent,Stringpath){}监听你所关心的事件:在onEvent(intevent,Stringpath)中,我们可以通过匹配event的值,这样,就可以捕获你想要捕获的已经发生的事件。例如:publicvoidonEvent(intevent,Stringpath){switch(event){caseandroid.os.FileObserver.ALL_EVENTS://所有事件相当于default的功能/**相关操作**/break;caseandroid.os.FileObserver.CREATE://文件被创建/**相关操作**/break;caseandroid.os.FileObserver.OPEN://文件被打开/**相关操作**/break;caseandroid.os.FileObserver.ACCESS://打开文件后,读文件内容操作/**相关操作**/break;caseandroid.os.FileObserver.MODIFY://文件被修改/**相关操作**/break;caseandroid.os.FileObserver.ATTRIB://未明操作/**相关操作**/break;caseandroid.os.FileObserver.CLOSE_NOWRITE://没有编辑文件,关闭/**相关操作**/break;caseandroid.os.FileObserver.CLOSE_WRITE://编辑完文件,关闭/**相关操作**/break;caseandroid.os.FileObserver.DELETE://文件被删除/**相关操作**/break;caseandroid.os.FileObserver.MOVED_FROM://文件被移动/**相关操作**/break;}}在onEvent(intevent,Stringpath)中,path返回的是发生事件的文件名,并且不带路径,当我们在某个事件当中需要找到发生事件的文件就要结合它的路径才能找得到。2.3java程序设计语言java编程语言是一种风格跟c、c++语言非常接近的语言。既然它们是如此相似,毫不例外,java语言如同C或C++一样也是面向对象的程序设计语言。其中java语言的面向对象技术的核心是从C++语言继承过来的。当然,两者之间也是有所区别的,例如:java舍弃了c语言中的指针。说起java,就不得不说java语言的跨平台特性。Java语言跟一般的计算机语言的编译执行和解释执行过程有着很大的不同。java不是直接编译的,代码运行之前需要先将源代码编译成字节码,再利用不同平台上的java虚拟机对这些字节码进行解释。所以,在我看来,java语言是一门应用十分广泛的程序设计语言。除此之外,java语言还有其他的特点,就不详细说明。例如:面向对象、解释型、多线程、分布式、健壮、安全、动态、体系结构中立、可移植、高性能等等特点。3.系统设计3.1课题来源随着手机越发接近计算机时,病毒或者一些间谍软件也将智能手机当做重点的入侵对象。对于手机用户来说,这是一个很严重的问题,让手机用户时刻面临手机信息安全的威胁。对文件时刻进行监控,是一种保护文件的有效手段同时也是以后的灾情评估的基础,在系统安全上起到重要的作用。为此,文件监控是手机系统仲很重要的一部分。3.2业务需求设计一个android系统上的文件监控系统,为用户提供监控手机上文件的功能,用户可以通过这个系统获取一些关于手机中的文件发生事件后的信息。例如,在用户不知情的情况下,手机中的一个文件被其他人打开并且查看,监控系统就会把这个事件记录下来,用户可以通过监控的系统的日志查看功能知道这件事情。3.2.1开始界面1)开始监控按钮:当用户选择好需要监听的文件或文件夹时,按下这个按钮,就能启动监控系统的监控模块,从而为用户提供监控服务。2)停止监控按钮:当用户不再需要监控系统提供监控服务时,就可以按下这个按钮,就能停止监控服务。3)目录选择模板:在这个模板上,会显示出当前智能手机上的所有文件目录,用户可以通过这个模板选择自己需要监控的文件目录。4)日志查看按钮:当用户已经启用监控系统的监控服务后,当监控范围内的文件发生一些事件(如打开,被删除,被修改等),会通过后台服务把发生事件的时间以及发生什么事件记录在日志上,这时候,用户可以通过点击这个按钮,系统的界面会跳转到日志查看界面,从而让用户知道监控过程中发生的事件以及事件发生时间。3.3.2监控并生成日志1)属于系统后台的服务,是实现监控功能的模块。当用户点击在开始界面上的监控按钮,这个模块就会启动,对用户已经选择好的目录进行监控。2)当监控系统开始监控服务(用户点击开始监控按钮),系统会生成一个log.txt,负责记录系统监控过程中的信息。3)监听系统中的文件目录或某一个文件(用户在开始界面选择的目录或文件),当某一个文件发生一些事件时,会把该文件的名字、路径、发生的事件以及发生事件的时间这些信息“写进”之前生成的log.txt文件中。3.3.3监控结果查询界面1)返回按钮:当用户查看完日志后,可以通过点击这个按钮返回开始界面进行操作。2)日志显示模块:显示出log.txt里面的内容,就是把一些文件已经发生的事件、时间、文件名字以及该文件的路径显示出来。3)刷新按钮:可以通过这个按钮刷新当前显示状态。例如,当查看日志的同时,有文件发生事件,可以通过刷新按钮刷新当前显示界面的信息。4.系统分析与设计方案4.1文件监控系统的总体设计思想4.1.1实现思想1)分析文件系统,建立文件监控目录列表,用户可以通过这个目录列表选择需要监听的目录。2)根据用户已经选择的目录,为该目录且以及该目录下的子目录设置监听器。(监听器由FileObserver类构成,经过多次的测试,每个FileObserver类对象只能监听一个文件或文件夹,并不像Android文档上面说的:监听一个文件夹,那么那个文件夹下的所有文件或子文件夹发生事件时,监听器都能响应。实际上当监听的对象是文件夹时,那么,该文件夹下的文件是可以被监听到的,但是,对于文件夹下的子文件夹发生事件,FileObserver是不会响应的。)3)记录文件发生事件(被打开、修改、删除等)后的信息。新建一个.TXT文件,负责保存那些信息。再通过查看.TXT文件,以此作为监控系统的信息查询模块。4.1.2实现步骤1)新建一个文件列表的布局类FileLayout。通过android.os.Environment中的getExternalStorageDirectory()方法获取sd卡的目录路径。自定义方法stringCmp()把文件目录按照字母表排序显示。自定义方法String[]getSelectedFiles()获取用户选中的要监控的文件列表。2)构造好一个监听器MyFileObserver(extendsFileObserver),把所需要响应的事件在onEvent()方法中写好,同时把事件发生后的信息记录在log.txt文件中RandomAccessFileraf=newRandomAccessFile(log,"rw");raf.write(msg.getBytes("UTF-8"))。3)创建一个后台服务类FileMonitorService,用于给目录(已经被用户选中的目录)以及目录下的子目录设置监听器。(递归调用监听器MyFileObserver,以此遍历监听被选目录下的每个子目录)4)创建一个工具类Utility。用于日志信息的接收以及备份。自定义一个方法readFile()读取监听器发送过来的信息。自定义方法backUpLog()备份log。5)方法initLog()初始化日志界面,用于显示log.txt中的信息。系统流程图:5.监控系统各功能模块5.1开始界面模块这个模块主要为用户提供了了一些对监控系统进行一系列操作的按钮,包括开始监控、停止监控、日志查看这三个按钮。界面如下图:5.2监控路径选择模块这个模块主要是提供给用户一个选择路径的界面。客户可以从这个界面中选择想要监控的文件夹,同时也能通过这个模块来查看系统中各个目录以及各个目录下的文件。其中,这个界面有一个“上一级”的按钮,通过点击这个按钮可以返回上一个目录。具体界面如下:
5.3监控模块这是一个属于后台服务的模块,通过点击开始界面的开始监控按钮以及停止监控按钮会执行监控文件和停止监控这两个功能。这个模块的功能实现过程大致如下:5.4日志查询模块通过点击开始界面的日志查看按钮,可以查看监控过程中发生的事件。具体图示如下:其中,刷新按钮可以用于刷新日志显示,查看最新的日志。例如:当查看日志的过程中,又有文件发生某些事件,这时候,点击刷新按钮,能看到这个刚刚查看过程发生的事件。返回按钮,点击该按钮能返回主界面。6.各个类的作用总类:6.1MainActivity类(相关布局文件:activity_main.xml)类说明:显示出开始界面,通过点击界面的三个按钮(开始监控、停止监控、日志查看),用户可以对系统进行相关的操作。6.2FileMonitorService类类说明:属于后台服务类,接收来自主界面发来的路径信息,根据路径信息,递归调用MyFileObserver类,从而实现遍历监控文件夹的功能。6.3MyFileObserver类类说明:监听器,根据FileMonitorService类的调用,对文件夹进行监控。是监控模块中的监听器,当文件或文件夹发生事件时,能够做出相应的响应,同时把事件信息发送到Utility类。6.4Utility类类说明:在sdcard目录下生成log.txt文件,接收来自MyFileObserver类的信息,并把信息记录在log.txt文件里。6.5NavigationView类类说明:导航控件,用于响应路径选择模块中上一级、下一级两个控件。记录当前所在的目录6.7FileLayout类类说明:是文件列表的布局类,获取sd卡下的文件和目录列表以及获取用户选中的要监控的文件列表。6.8FileManagerLayout类类说明:是一个用于主界面的控件布局类。主要用于初始化控件的排版。7.系统设计与实现7.1开发环境工具1)java环境:jdkJDK即为JavaDevelopmentKit,是SunMicrosystems公司针对Java开发员而研发的产品。可是说,JDK是整个java的核心,里面包括有java的运行环境、工具以及基础类库。2)Android平台:eclipse+androidsdkEclipse,在我看来,是一个用于进行java代码编写的工具。实际上,通过相关资料的查看,我明白到自己的理解只是很片面的一小部分。它应该是一个可扩展开发平台,例如,本次的Android监控系统就是通过Eclipce和ADT搭配环境后编写的。对于本身来说,它只是一个框架以及一组服务,依靠插件组件来构建开发环境。当然它自身附带了一个标准的插件集,其中包括Java的开发工具JDK。很多人都把Eclipse仅仅当作java的开发环境来使用,事实上,它的功能不仅仅是这样。它有一个组件PDE,具有能让软件开发人员扩展Eclipse的功能,软件开发员通过这个组件往Eclipse中插入一些插件,从而搭配成一个用于其他开发的环境。另外,Eclipse也是适用于其他语言的。例如,C/C++、COBOL、PHP等编程语言的插件有得已经可以使用或者有得预计将会推出。SDK即为softwaredevelopmentkit,是一个软件开发工具包。AndroidSDK就是指专门用于进行Android开发的软件工具包。3)Android手机模拟器当利用上面介绍的开发工具搭建好Android开发环境后,就可以通过AndroidSDK自带的工具配置一个Android的模拟器,通过这个模拟器,我们可以测试相关版本的Android程序。7.2硬件环境本系统运行环境所需用到的环境为:
硬件配置:中央处理器(CPU):P42.0G的处理器;硬盘:40GB以上硬盘;内存:1024DDR内存;显示器:17寸显示器等;软件环境:WINDOWSXP/Win7。7.3监控系统功能测试7.3.1在模拟器中测试:测试前期准备:1)往Android模拟器中安装监控系统FileMonitor2)往Android模拟器的sdcard中添加了两个文件,其中,1.txt在sd卡的目录下另外,2.txt在sd卡的子目录DCI下测试说明:由于文件能发生的事件比较多,所以选取了删除以及修改这两个事件作为测试事件。打开监控系统图标,进入监控系统。1、主界面(路径选择)由上图所示,在sdcard的左边打了一个勾(选择了sdcard作为监控的文件夹)然后点击开始监控,系统开始监控sdcard。2、查询日志点击日志查看按钮,界面跳转到日志查看的界面,通过日志显示可以看出:对两个文件进行相关的操作后,无论是直接在sdcard目录下的1.txt还是在sdcard子目录下的2.txt都被监控到了,并且发生的事件都在日志中显示。7.3.2在android手机上测试1、软件打开界面2、路径选择以Music这个文件夹作为监控目录,点击开始监控,系统开始监控Music这个文件夹里面的所有文件(文件夹)。3、监控结果(日志查看)打开Music文件夹下的音乐文件“陈柏宇-潮密语.mp3”,系统日志显示出该文件在晚上11点55分被打开。7.3.3测试结论经过在模拟器以及android智能手机上对本系统的测试可以看出,本系统基本能实现监控需求。8总结8.1毕业设计总结本毕业设计实现了简单的在Android平台上的文件监控系统。在功能方面,通过以上在模拟器以及Android手机上的测试可以看出,本监控系统是能够比较好地实现了监控功能。至于界面,由于学习Android的时间比较短,很多关于界面布局的知识都没有学到,所以做出来的系统很简单而且色彩单调。同时,在做这个系统的过程中,发现有很多java的知识还是没有掌握好,用java编写代码还是不熟练。例如:有时候在一个类中要用到别的类时,会出现错误,这是因为忘记声明那个类的对象。诸如这样的小问题,在编写代码的过程中总是出现。所以在今后,要多注意代码编写的细节,多看看别人写的代码,同时多练习,从而减少在那些细节上发生的错误。可以说,毕业设计大致上是完成了。可是,对于刚刚上面所说的那些错误或者系统的不完善,我还是会不断改善自己同时也改进这个文件监控系统。我并不会因为完成了毕业设计就停下对Android方面的学习。通过日后的再学习,我会把这个系统做得更好,例如:把界面设计得更加美观,让用户用起来更加的方便舒服。或者,在监控的基础上加上一些实用的功能,例如加上一个文件管理的模块,甚至是加上能进行文件的传输功能等等。同时,希望能通过这次的实践,对以后的工作或研究有所帮助。8.2经验和感想
在这次毕业设计实践中,要学习的东西还是不少的。刚开始接触Android方面的开发,跟着教学视频做出第一个Helloword的Android程序,当时就像是在大一的时候,第一次学习c语言那样的情景。可以说,在这次实践中,最大的收获就是学习到关于Android方面开发的知识。另一方面,在看完Android的教学视频后,开始进行毕业设计的代码编写的过程中,我明白到了一些东西。刚刚开始的时候,可以说是毫无头绪,于是在网上查看了一些关于Android监控文件的一些资料,最后发现了Android.os包下的FileObserver类,于是查看Android文档,里面写到当FileObserver类监听文件夹,那么文件夹下所有的文件和级联子目录的改变都会触发监听的事件。那时候,我天真地以为只要做一个界面activity,然后调用一个继承FileObserver类的服务类就可以了。可是结果不如我意,程序运行后,没有起到监听的效果。后来经过查阅了网上的资料以及自己进行了测试才知道,Android文档说的不完全正确。我的理解是:要实现监听文件夹下的所有文件(包含子文件夹),并且能对事件做出响应,是需要对每一个文件(文件夹)设置一个监听器(FileObserver类)。从这事了解到,当学习了一些新的东西的时候,不仅仅是需要学习,还要进行相关的实践,这样才真正的学到所要学的东西。参考文献韩超.Android经典应用程序开发[J].人力资源出版社,2011:3-18.马越.Android的架构与应用[D].中国地质大学(北京),2008.陈煜.基于Android系统的手机文件管理器的设计与实现[D].西南交通大学,2012.左玲.基于Android恶意软件检测系统的设计与实现[D].电子科技大学,2012.李凯.Android操作系统分析与移植[D].华南理工大学,2011.冯相忠.计算机类专业的JAVA语言程序设计课程的教学研究[J].福建电脑,2009:31.陈璟,陈平华,李文亮.Android内核分析[J].现代计算机(专业版),2009:112-115.贺建英.如何提高高校学生Java语言的实践能力[J].电脑知识与技术,2008:95-97.余永佳.高职Android操作系统课程教学与研究[J].徐州建筑职业技术学院学报,2011:52-54.丁丽萍.Android操作系统的安全性分析[J].信息网络安全,2012:28-31+41.ChaoWang,WeiDuan,JianzhangMa.TheresearchofAndroidSystemarchitectureandapplicationprogramming[C].ComputerScienceandNetworkTechnology(ICCSNT),2011InternationalConference,2011.785-790ChrisHaseman.AndroidEssentials[B].ApressSpringer2008Springer.5-68MaoqiangSong,HaiyanSong,XianglingFu.MethodologyofuserinterfacesdesignbasedonAndroid[C].MultimediaTechnology(ICMT),2011InternationalConference,2011.408-411WeiHu,TianzhouChen,QingsongShi.SmartphoneSoftwareDevelopmentCourseDesignBasedonAndroid[C].ComputerandInformationTechnology(CIT),2010IEEE10thInternationalConference,2010.2180-2184KumarMaji,A.,KangliHao.CharacterizingFailuresinMobileOSes:ACaseStudywithAndroidandSymbian[C].SoftwareReliabilityEngineering(ISSRE),2010IEEE21stInternationalSymposium,2010.1071-9458致谢转眼间,毕业设计就要结束了,在完成了Android平台的文件监控系统的功能设计后,我感到由衷的喜悦。在我做毕业设计期间,老师,同学和朋友给我无私的关怀和帮助,在此,我要向他们表示衷心的感谢,首先,我要特别感谢带我毕业设计的綦科老师,感谢老师在毕业设计期间给了我悉心的关怀与帮助,并且给了我许多关键的,建设性的指导。并且老师优秀的专业素养,严谨的治学精神和认真负责的工作态度都给我留下了深刻印象。同时,更加感谢学校四年以来,为我们计划了许多有用的课程,为我能做好毕业设计打下了比较好的理论基础。当然,四年的学习生活是少不了同学之间的互相讨论,感谢四年来一起学习一起生活的同学。这次的毕业设计让我受益匪浅。为了能做好这个毕业设计,我从网上下载了Android的教学视频,通过视频,我学习了Android开发方面的知识,虽然那些知识还是比较基础,不过,这对于以后的关于Android的深入学习可是很有帮助的。同时,在做毕业设计的过程中,也加深了我对java语言的了解,纠正了一些编写java代码时的一些坏习惯。当然,困难可是一直围绕在我周围,为了克服这些困难,从而能很好的完成毕业设计,我只好更加用功地查阅资料,用好网上的那些文献网站,用好百度,用好google。可以说,通过这次的毕业设计,学到的不仅仅是知识,更是学到了如何自学,如何快速地解决问题。当然,在实际的运用中,可能我设计的系统并不是尽善尽美,但是我在毕业设计期间学会的分析方法和解决方法的能力对我却是受益匪浅。最后,请允许我再一次向毕业期间无私帮助过我的老师,同学和朋友表示最衷心的感谢。在这里,特别感谢我的毕业设计导师,。附录资料:不需要的可以自行删除Excel的50个使用技巧一、建立分类下拉列表填充项我们常常要将企业的名称输入到表格中,为了保持名称的一致性,利用“数据有效性”功能建了一个分类下拉列表填充项。1.在Sheet2中,将企业名称按类别(如“工业企业”、“商业企业”、“个体企业”等)分别输入不同列中,建立一个企业名称数据库。
2.选中A列(“工业企业”名称所在列),在“名称”栏内,输入“工业企业”字符后,按“回车”键进行确认。仿照上面的操作,将B、C……列分别命名为“商业企业”、“个体企业”……3.切换到Sheet1中,选中需要输入“企业类别”的列(如C列),执行“数据→有效性”命令,打开“数据有效性”对话框。在“设置”标签中,单击“允许”右侧的下拉按钮,选中“序列”选项,在下面的“来源”方框中,输入“工业企业”,“商业企业”,“个体企业”……序列(各元素之间用英文逗号隔开),确定退出。
再选中需要输入企业名称的列(如D列),再打开“数据有效性”对话框,选中“序列”选项后,在“来源”方框中输入公式:=INDIRECT(C1),确定退出。4.选中C列任意单元格(如C4),单击右侧下拉按钮,选择相应的“企业类别”填入单元格中。然后选中该单元格对应的D列单元格(如D4),单击下拉按钮,即可从相应类别的企业名称列表中选择需要的企业名称填入该单元格中。提示:在以后打印报表时,如果不需要打印“企业类别”列,可以选中该列,右击鼠标,选“隐藏”选项,将该列隐藏起来即可。二、建立“常用文档”新菜单在菜单栏上新建一个“常用文档”菜单,将常用的工作簿文档添加到其中,方便随时调用。1.在工具栏空白处右击鼠标,选“自定义”选项,打开“自定义”对话框。在“命令”标签中,选中“类别”下的“新菜单”项,再将“命令”下面的“新菜单”拖到菜单栏。按“更改所选内容”按钮,在弹出菜单的“命名”框中输入一个名称(如“常用文档”)。2.再在“类别”下面任选一项(如“插入”选项),在右边“命令”下面任选一项(如“超链接”选项),将它拖到新菜单(常用文档)中,并仿照上面的操作对它进行命名(如“工资表”等),建立第一个工作簿文档列表名称。重复上面的操作,多添加几个文档列表名称。3.选中“常用文档”菜单中某个菜单项(如“工资表”等),右击鼠标,在弹出的快捷菜单中,选“分配超链接→打开”选项,打开“分配超链接”对话框。通过按“查找范围”右侧的下拉按钮,定位到相应的工作簿(如“工资.xls”等)文件夹,并选中该工作簿文档。重复上面的操作,将菜单项和与它对应的工作簿文档超链接起来。4.以后需要打开“常用文档”菜单中的某个工作簿文档时,只要展开“常用文档”菜单,单击其中的相应选项即可。提示:尽管我们将“超链接”选项拖到了“常用文档”菜单中,但并不影响“插入”菜单中“超链接”菜单项和“常用”工具栏上的“插入超链接”按钮的功能。三、让不同类型数据用不同颜色显示在工资表中,如果想让大于等于2000元的工资总额以“红色”显示,大于等于1500元的工资总额以“蓝色”显示,低于1000元的工资总额以“棕色”显示,其它以“黑色”显示,我们可以这样设置。1.打开“工资表”工作簿,选中“工资总额”所在列,执行“格式→条件格式”命令,打开“条件格式”对话框。单击第二个方框右侧的下拉按钮,选中“大于或等于”选项,在后面的方框中输入数值“2000”。单击“格式”按钮,打开“单元格格式”对话框,将“字体”的“颜色”设置为“红色”。2.按“添加”按钮,并仿照上面的操作设置好其它条件(大于等于1500,字体设置为“蓝色”;小于1000,字体设置为“棕色”)。3.设置完成后,按下“确定”按钮。看看工资表吧,工资总额的数据是不是按你的要求以不同颜色显示出来了。四、制作“专业符号”工具栏在编辑专业表格时,常常需要输入一些特殊的专业符号,为了方便输入,我们可以制作一个属于自己的“专业符号”工具栏。
1.执行“工具→宏→录制新宏”命令,打开“录制新宏”对话框,输入宏名?如“fuhao1”?并将宏保存在“个人宏工作簿”中,然后“确定”开始录制。选中“录制宏”工具栏上的“相对引用”按钮,然后将需要的特殊符号输入到某个单元格中,再单击“录制宏”工具栏上的“停止”按钮,完成宏的录制。仿照上面的操作,一一录制好其它特殊符号的输入“宏”。2.打开“自定义”对话框,在“工具栏”标签中,单击“新建”按钮,弹出“新建工具栏”对话框,输入名称——“专业符号”,确定后,即在工作区中出现一个工具条。切换到“命令”标签中,选中“类别”下面的“宏”,将“命令”下面的“自定义按钮”项拖到“专业符号”栏上(有多少个特殊符号就拖多少个按钮)。3.选中其中一个“自定义按钮”,仿照第2个秘技的第1点对它们进行命名。4.右击某个命名后的按钮,在随后弹出的快捷菜单中,选“指定宏”选项,打开“指定宏”对话框,选中相应的宏(如fuhao1等),确定退出。重复此步操作,将按钮与相应的宏链接起来。5.关闭“自定义”对话框,以后可以像使用普通工具栏一样,使用“专业符号”工具栏,向单元格中快速输入专业符号了。五、用“视面管理器”保存多个打印页面有的工作表,经常需要打印其中不同的区域,用“视面管理器”吧。1.打开需要打印的工作表,用鼠标在不需要打印的行(或列)标上拖拉,选中它们再右击鼠标,在随后出现的快捷菜单中,选“隐藏”选项,将不需要打印的行(或列)隐藏起来。2.执行“视图→视面管理器”命令,打开“视面管理器”对话框,单击“添加”按钮,弹出“添加视面”对话框,输入一个名称(如“上报表”)后,单击“确定”按钮。3.将隐藏的行(或列)显示出来,并重复上述操作,“添加”好其它的打印视面。4.以后需要打印某种表格时,打开“视面管理器”,选中需要打印的表格名称,单击“显示”按钮,工作表即刻按事先设定好的界面显示出来,简单设置、排版一下,按下工具栏上的“打印”按钮,一切就OK了。六、让数据按需排序如果你要将员工按其所在的部门进行排序,这些部门名称既的有关信息不是按拼音顺序,也不是按笔画顺序,怎么办?可采用自定义序列来排序。1.执行“格式→选项”命令,打开“选项”对话框,进入“自定义序列”标签中,在“输入序列”下面的方框中输入部门排序的序列(如“机关,车队,一车间,二车间,三车间”等),单击“添加”和“确定”按钮退出。
2.选中“部门”列中任意一个单元格,执行“数据→排序”命令,打开“排序”对话框,单击“选项”按钮,弹出“排序选项”对话框,按其中的下拉按钮,选中刚才自定义的序列,按两次“确定”按钮返回,所有数据就按要求进行了排序。七、把数据彻底隐藏起来工作表部分单元格中的内容不想让浏览者查阅,只好将它隐藏起来了。1.选中需要隐藏内容的单元格(区域),执行“格式→单元格”命令,打开“单元格格式”对话框,在“数字”标签的“分类”下面选中“自定义”选项,然后在右边“类型”下面的方框中输入“;;;”(三个英文状态下的分号)。2.再切换到“保护”标签下,选中其中的“隐藏”选项,按“确定”按钮退出。3.执行“工具→保护→保护工作表”命令,打开“保护工作表”对话框,设置好密码后,“确定”返回。经过这样的设置以后,上述单元格中的内容不再显示出来,就是使用Excel的透明功能也不能让其现形。提示:在“保护”标签下,请不要清除“锁定”前面复选框中的“∨”号,这样可以防止别人删除你隐藏起来的数据。八、让中、英文输入法智能化地出现在编辑表格时,有的单元格中要输入英文,有的单元格中要输入中文,反复切换输入法实在不方便,何不设置一下,让输入法智能化地调整呢?选中需要输入中文的单元格区域,执行“数据→有效性”命令,打开“数据有效性”对话框,切换到“输入法模式”标签下,按“模式”右侧的下拉按钮,选中“打开”选项后,“确定”退出。以后当选中需要输入中文的单元格区域中任意一个单元格时,中文输入法(输入法列表中的第1个中文输入法)自动打开,当选中其它单元格时,中文输入法自动关闭。九、让“自动更正”输入统一的文本你是不是经常为输入某些固定的文本,如《电脑报》而烦恼呢?那就往下看吧。1.执行“工具→自动更正”命令,打开“自动更正”对话框。2.在“替换”下面的方框中输入“pcw”(也可以是其他字符,“pcw”用小写),在“替换为”下面的方框中输入“《电脑报》”,再单击“添加”和“确定”按钮。3.以后如果需要输入上述文本时,只要输入“pcw”字符?此时可以不考虑“pcw”的大小写?,然后确认一下就成了。十、在Excel中自定义函数Excel函数虽然丰富,但并不能满足我们的所有需要。我们可以自定义一个函数,来完成一些特定的运算。下面,我们就来自定义一个计算梯形面积的函数:1.执行“工具→宏→Visual
Basic编辑器”菜单命令(或按“Alt+F11”快捷键),打开Visual
Basic编辑窗口。2.在窗口中,执行“插入→模块”菜单命令,插入一个新的模块——模块1。3.在右边的“代码窗口”中输入以下代码:Function
V(a,b,h)V
=
h*(a+b)/2End
Function4.关闭窗口,自定义函数完成。以后可以像使用内置函数一样使用自定义函数。提示:用上面方法自定义的函数通常只能在相应的工作簿中使用十一、表头下面衬张图片为工作表添加的背景,是衬在整个工作表下面的,能不能只衬在表头下面呢?1.执行“格式→工作表→背景”命令,打开“工作表背景”对话框,选中需要作为背景的图片后,按下“插入”按钮,将图片衬于整个工作表下面。2.在按住Ctrl键的同时,用鼠标在不需要衬图片的单元格(区域)中拖拉,同时选中这些单元格(区域)。3.按“格式”工具栏上的“填充颜色”右侧的下拉按钮,在随后出现的“调色板”中,选中“白色”。经过这样的设置以后,留下的单元格下面衬上了图片,而上述选中的单元格(区域)下面就没有衬图片了(其实,是图片被“白色”遮盖了)。提示?衬在单元格下面的图片是不支持打印的。十二、用连字符“&”来合并文本如果我们想将多列的内容合并到一列中,不需要利用函数,一个小小的连字符“&”就能将它搞定(此处假定将B、C、D列合并到一列中)。1.在D列后面插入两个空列(E、F列),然后在D1单元格中输入公式:=B1&C1&D1。2.再次选中D1单元格,用“填充柄”将上述公式复制到D列下面的单元格中,B、C、D列的内容即被合并到E列对应的单元格中。3.选中E列,执行“复制”操作,然后选中F列,执行“编辑→选择性粘贴”命令,打开“选择性粘贴”对话框,选中其中的“数值”选项,按下“确定”按钮,E列的内容(不是公式)即被复制到F列中。4.将B、C、D、E列删除,完成合并工作。提示:完成第1、2步的操作,合并效果已经实现,但此时如果删除B、C、D列,公式会出现错误。故须进行第3步操作,将公式转换为不变的“值”。十三、快速打印学生成绩条常有朋友问“如何打印成绩条”这样的问题,有不少人采取录制宏或VBA的方法来实现,这对于初学者来说有一定难度。出于此种考虑,我在这里给出一种用函数实现的简便方法。此处假定学生成绩保存在Sheet1工作表的A1至G64单元格区域中,其中第1行为标题,第2行为学科名称。1.切换到Sheet2工作表中,选中A1单元格,输入公式:=IF(MOD(ROW(),3)=0,″″,IF(0MOD?ROW(),3(=1,sheet1!A$2,INDEX(sheet1!$A:$G,INT(((ROW()+4)/3)+1),COLUMN())))。2.再次选中A1单元格,用“填充柄”将上述公式复制到B1至G1单元格中;然后,再同时选中A1至G1单元格区域,用“填充柄”将上述公式复制到A2至G185单元格中。至此,成绩条基本成型,下面简单修饰一下。3.调整好行高和列宽后,同时选中A1至G2单元格区域(第1位学生的成绩条区域),按“格式”工具栏“边框”右侧的下拉按钮,在随后出现的边框列表中,选中“所有框线”选项,为选中的区域添加边框(如果不需要边框,可以不进行此步及下面的操作)。4.同时选中A1至G3单元格区域,点击“常用”工具栏上的“格式刷”按钮,然后按住鼠标左键,自A4拖拉至G186单元格区域,为所有的成绩条添加边框。按“打印”按钮,即可将成绩条打印出来。十四、Excel帮你选函数在用函数处理数据时,常常不知道使用什么函数比较合适。Excel的“搜索函数”功能可以帮你缩小范围,挑选出合适的函数。执行“插入→函数”命令,打开“插入函数”对话框,在“搜索函数”下面的方框中输入要求(如“计数”),然后单击“转到”按钮,系统即刻将与“计数”有关的函数挑选出来,并显示在“选择函数”下面的列表框中。再结合查看相关的帮助文件,即可快速确定所需要的函数。十五、同时查看不同工作表中多个单元格内的数据有时,我们编辑某个工作表(Sheet1)时,需要查看其它工作表中(Sheet2、Sheet3……)某个单元格的内容,可以利用Excel的“监视窗口”功能来实现。执行“视图→工具栏→监视窗口”命令,打开“监视窗口”,单击其中的“添加监视”按钮,展开“添加监视点”对话框,用鼠标选中需要查看的单元格后,再单击“添加”按钮。重复前述操作,添加其它“监视点”。以后,无论在哪个工作表中,只要打开“监视窗口”,即可查看所有被监视点单元格内的数据和相关信息。十六、为单元格快速画边框在Excel2002以前的版本中,为单元格区域添加边框的操作比较麻烦,Excel2002对此功能进行了全新的拓展。单击“格式”工具栏上“边框”右侧的下拉按钮,在随后弹出的下拉列表中,选“绘图边框”选项,或者执行“视图→工具栏→边框”命令,展开“边框”工具栏。单击工具栏最左侧的下拉按钮
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版健身房及游泳馆专业保洁服务合同
- 2025年高空桥梁施工设备搬运合同范本
- 二零二五年餐饮业员工职业发展与技能培训合同
- 2025版标准化第三方担保借款合同标准化模板
- 2025版材料采购合同(含产品优化)规范范本
- 二零二五年度企业协同办公SaaS定制化销售合同
- 2025年财务人员担保责任书范本
- 二零二五年度XX工业园区污水厂综合治理技术服务合同
- 二零二五年度房产车辆转让与子女婚后共同财产协议
- 二零二五餐饮合伙企业股份分配管理合同
- 虚拟货币行业分析及未来展望研究报告
- 农业水利考试试题及答案
- 2025中国核工业集团公司招聘(300人)笔试参考题库附带答案详解
- 肺结核患者护理课件
- 商业房屋租赁合同协议书
- 2025江苏省招聘村级后备干部考试题(含答案)
- 相控阵超声检测技术及应用
- 弘扬教育家精神做新时代大学教师
- 生态环境执法案件培训
- 孕期健康方式课件
- 2026年高考政治一轮复习:高考政治命题备考策略
评论
0/150
提交评论