欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    本科毕业设计--基于android操作系统的飞机大战手机游戏.doc

    • 资源ID:88286459       资源大小:1.37MB        全文页数:36页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    本科毕业设计--基于android操作系统的飞机大战手机游戏.doc

    石家庄科技信息职业学院毕 业 论 文题目:基于Android操作系统的飞机大战手机游戏 学 号: 090124012 姓 名: 魏铄 专业班级:软件技术(游戏方向)09-24 班指导教师: 刘永伟 完成日期: 2011-12-22 摘要: 飞机大战是滚动屏动作类游戏的一种,其中融入了很多动作类游戏特有的技术,并且画面流畅、声音震撼。 当今网络发展迅速,益智类游戏被广泛运用到网络各大平台上。借鉴网络各大平台上的游戏,通过Eclipse Android SDK 利用Java语言编写的飞机大战。本文阐述了在Android平台上,面向对象的软件开发思想对飞机大战游戏系统的分析、设计及实现过程。在项目的实践过程中,主要用到了以下技术:手机布局主要使用了XML设计,程序及其子模块的生命周期管理用到了Activity流程控制,游戏的画面更新使用的是手机的2D图形编程。本论文的前半部分将简要介绍系统相关的行业信息及基础的技术知识,后半部分将对本人在系统各模块中所使用的关键技术的实现进行了全面的介绍。 关键词:滚屏游戏;飞机大战;手机游戏 ;Android平台Abstract: the World War II aircraft rolling screen action game one, incorporating many action games unique technology, and smooth picture, sound rock.The network is developing rapidly, a puzzle game is widely applied to the network the platform. From the network the platform game, through the Eclipse Android SDK Java language prepared by the" World War II aircraft".This paper elaborated on the platform of Android, object-oriented software development thought to the World War II aircraft game system analysis, design and implementation process. In the practice of the project process, the main use of the following techniques: the layout of the main mobile phone using XML design, procedures and sub module life cycle management used in the Activity process control, the game screen is updated using the mobile phone 2D graphics programming. In this paper, the front half part of brief introduction of system related industry information and basic technical knowledge, the second part of the each module of the system used in the realization of the key technology for a comprehensive introduction.Key words: scrolling game; World War II aircraft; mobile phone games; Android platform目 录一、 绪论5二、 相关研究综述6(一)关于java语言6 (二) 关于Android8三、系统开发环境及相关技术10四、游戏所需类的分析与实现11(一)游戏的框架简介11(二)游戏界面的框架简介12(三)各个类的简要介绍13五、游戏界面展示22总结27致谢28参考文献29前 言随着3G移动网络应用的推广,手机游戏的规模、复杂程度日益增强;其技术手段、设计思想、系统体系结构都发生了深刻的变化。手机操作系统正朝着高处理能力、多功能、智能化的方向发展。近年来,网络文化市场发展很快,随着互联网的迅速普及、宽带的接入社区和家庭,我国网络游戏市场发展迅速并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展。现在,游戏的类型也由最初的动作游戏和简单益智游戏向更复杂、更高智力,更具真实性的游戏发展。目前的游戏种类繁多,包括角色扮演、仿真模拟类、人工智能、休闲类、渲染类、网络类等等,甚至有的游戏包含了好几种类型。机战类游戏一直以来都很多。但仿真模拟类的游戏却有不少,现在休闲类的技术广泛的应用到很多游戏里面等等。飞机大战游戏是广泛人士喜爱的游戏,通过上下左右键控制方向A键发射子弹,游戏中有加血道具与子弹升级道具。并有关卡BOSS等着与你死战。鉴于游戏的对社会的巨大影响力和光辉的发展前景,以及我们自己对游戏爱好,这次的毕业设计我们决定尝试设计和制作一个具有一定可玩性的游戏。期间,我们收集相关资料、研究同类型的游戏、阅读有关这类型游戏和相关技术性的书籍,通过制作游戏项目来熟悉游戏的制作思路、过程,加深对面向对象编程语言的掌握,培养自己的耐心、细心和考虑问题的全面性,同时解决本课题要完成的问题,如游戏框架如何构建,如何完善游戏的各种功能,如何能让游戏有音乐和音效的实现,如何能让游戏过关,如何能让游戏界面美观,看起来舒服感觉。一、绪论11 研究内容Android平台飞机大战是基于Android手机平台,运用Java语言编写的一款手机滚屏类射击游戏。12 研究意义Android平台手机游戏的开发的意义在于活动人的思维,使人精神放松,锻炼人的反应能力与应变能力。13研究现状和发展趋势据Gartner最新数据显示,2010年第二、三季度全球智能手机销售继续大幅增长,其中第三季度安卓占全球智能手机市场的25.5%,仅次于塞班,成为第二大智能手机系统。2010第二、三季度与去年同期相比,增度分别是15.4%及22%,增势迅猛。而塞班系统较09年的市场份额,尽管终端销量有大幅度提升,但增势下滑10%,形势非常严峻。其他操作系统的表现则要平稳很多。安卓是首款开源代码的操作系统,采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改安卓的SDK软件包。系统的开源性使其具有良好的拓展性,一方面,为众多移动应用开发者提供了良好的系统性平台,有利于移动应用的集合;另一方面,终端厂商可以针对自身的特殊需要“定制化开发”。与此相比,尽管2010年2月,塞班基本完成开源工作,但由于代码臃肿,用户界面设计缺失,塞班的开源并无实际意义,错失发展良机。我们认为,安卓在全球市场的成长壮大,塞班市场份额不断下跌已成不争事实。安卓操作系统发展迅猛主要得益于免费、开源和良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。系统的免费让更多的厂商加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发;应用的丰富吸引了更多用户选择,这也是谷歌值得众多厂商学习的地方。此外,谷歌通过OHA联合众多厂商进行系统研发,不断更新版本,将系统应用推广到更多的终端产品中,确保用户体验持续改善。二、相关研究综述2.1 关于java语言Java编程特点 1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。 9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。 11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。 Java语言的优点1 java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。Java语言的简单性主要体现在以下三个方面:1.Java的风格类似于C+,因而C+程序员是非常熟悉的。从某种意义上讲,Java语言是C及C+语言的一个变种,因此,C+程序员可以很快就掌握Java编程技术。2.Java摒弃了C+中容易引发程序错误的地方,如指针和内存管理。3.Java提供了丰富的类库。2 面向对象可以说是Java最重要的特性。Java语言的设计完全是面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。Java支持静态和动态风格的代码继承及重用。单从面向对象的特性来看,Java类似于SmallTalk,但其它特性、尤其是适用于分布式计算环境的特性远远超越了SmallTalk。3 另外,为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。现在,Java运行系统有Solaris2.4(SPARC),Win32系统(Windows95和WindowsNT)等.Java源程序被编译成一种高层次的与机器无关的byte-code格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。2.2 关于Android 2.2.1 android构架Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:图2.2 Android系统架构2.2.2 XUL界面布局XUL 是一种基于 XML 的语言,因此需要对 XML(特别是 XML 名称空间)很熟悉。XUL是英文“XML User Interface Language”的首字母缩写。顾名思义,它是一种应用XML来描述使用者界面的标示语言。 2.2.3 Android的Activity组件Activity,一般代表手机屏幕的一屏,相当于浏览器的一个页面。在Activity中添加view,实现应用界面和用户交互。一个应用程序一般由多个Activity构成,这些Activity之间可互相跳转,可进行页面间的数据传递。每个Activity都有自己的生命周期。224 SQLite数据库在Android平台上,集成了一个嵌入式关系型数据库SQLite。SQLite是支持结构化查询的轻量级数据库,能很好得适应于移动设备的应用。Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。225 Android 2D图形编程 1、Simple Graphics in View:就是直接使用Android已经实现的一些画图操作,比如说images,shapes,colors,pre-defined animation等等。这种方式只能画静态或者极为简单的2D图画,对于实时性很强的动画,高品质的游戏都是没法实现的。2、Canvas:首先我们要明白这个Canvas是一个2D的概念,是在Skia中定义的。也就是说在这个方式下还是说的画2D图形。三、系统开发环境及相关技术3.1 Android开发环境介绍Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的Android SDK。同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。(1) Java SDK(2) Eclipse(3) Android SDK3.2 Android开发平台搭建Android开发平台搭建步骤:首先到http:/www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载Java EE 集成版本,可以为平台的搭建省下不少工作。接着再去 站点下载SDK后安装,下载 SDK1.5后解压。第一步下载工序就结束了。双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help-> Install New Software-> 选项卡上的Available Software,点击右侧的“Add”输入http:/dl- with”下拉菜单中选择刚才输入的网址。过一会就会出现一个Developer Tools选项,勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件,然后找到Android DDMS和Android Development Tools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。重启后选择Eclipse菜单中的Windows-> Preferences 在左侧的Android项目中SDK Location中填入Android SDK解压后的目录,然后点击Apply。 在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的Android SDK目录下的tools文件夹。四、游戏所需类的分析与实现4.1 游戏的框架简介图4.1 游戏的类框架1、启动游戏,在PlaneActivity中会先进入加载界面ProcessView,然后后台加载欢迎界面WelcomView,当加载完成后屏幕切换到欢迎界面,并启动WelcoeViewThread线程生成欢迎界面的动画效果。2、当欢迎动画播放完成后屏幕会停留在选择状态等待玩家操作。3、当玩家单击“帮助”时将初始化帮助界面HelpView并将其显示出来。4、当玩家大几“开始游戏”按钮时,屏幕将显示加载界面。后台将初始化游戏界面GameView,在地图信息类Maps中初始化此关卡中的所有敌机、变枪的道具、补血的道具等。5、初始化游戏界面的同时启动GameViewBackGroundThread线程,以初始滚动游戏界面的背景图片。6、当玩家发射炮弹或敌机发射炮弹时会创建Bullet对象,并将其添加到已知的容器中。7、在游戏过程中如果需要显示爆炸效果,会创建爆炸效果类Explode以及ExplodeThread类来渲染爆炸效果。8、游戏中所有类中使用的常量全部封装到常量类ConstantUtil类中。4.2 游戏界面的框架简介图4.2 游戏界面的类框架 1、GameView在初始化是会从Maps读取当前关卡的地图信息,包括敌机、补血道具、换枪道具等。 2、在界面初始化的同时,还需要启动MoveThread线程、GameViewBackGroundThread线程、KeyThread线程以及ExplodeThread线程。 3、GameView会在适当的时候从Plane类中读取主战飞机的信息进行绘制。 4、当主战飞机发射子弹时,会创建Bullet对象并添加到指定容器中,此时MoveThread同样需要定时改变子弹对象的位置。 5、在以上过程中,全部都需要PianeActivity的管理与ConstanUtil的参与。4.3各个类的简要介绍1、 共有类:Activity的实现类PlaneActivity,该类是通过扩展基类Activity实现的,是整个游戏程序的入口。键盘监听线程KeyThread,该类为手机键盘的监听线程,每隔一段时间读取一次键盘的状态值,并根据当前键盘状态做出相应的操作package wyf.ytl;public class KeyThread extends Thread int span = 20;/ 睡眠的毫秒数int countMove = 0;/ 飞机移动的计数器int countFine = 0;/ 飞机发子弹的计数器int moveN = 3;/ 每三次循环移动一下int fineN = 5;/ 每五次循环发一次子弹PlaneActivity activity;/ Activity的引用private boolean flag = true;/ 循环标志int action;/ 键盘状态码private boolean KEY_UP = false;/ 向上键是否被按下private boolean KEY_DOWN = false;/ 向下键是否被按下private boolean KEY_LEFT = false;/ 向左的键被按下private boolean KEY_RIGHT = false;/ 向右的键被按下private boolean KEY_A = false;/ A的键被按下private boolean KEY_B = false;/ B的键被按下public KeyThread(PlaneActivity activity) / 构造器this.activity = activity;public void setFlag(boolean flag) / 设置标志位this.flag = flag;public void run() / 重写的方法while (flag) action = activity.action;/ 得到当前键盘的状态码if (action = 19) / 上KEY_UP = true; else KEY_UP = false;if (action = 20) / 下KEY_DOWN = true; else KEY_DOWN = false;if (action = 21) / 左KEY_LEFT = true; else KEY_LEFT = false;if (action = 22) / 右KEY_RIGHT = true; else KEY_RIGHT = false;if (action = 29) / AKEY_A = true; else KEY_A = false;if (activity.gameView.status = 1 | activity.gameView.status = 3) if (countMove = 0) / 每moveN次移动一次if (KEY_UP = true) / 向上键被按下/ 检测在不碰到上边界的情况下if (!(activity.gameView.plane.getY() - activity.gameView.plane.getSpan() < ConstantUtil.top) / 向上移动10个像素activity.gameView.plane.setY(activity.gameView.plane.getY()- activity.gameView.plane.getSpan();/ 通过dir更换图标activity.gameView.plane.setDir(ConstantUtil.DIR_UP);if (KEY_DOWN = true) / 向下键被按下if (!(activity.gameView.plane.getY() + activity.gameView.plane.getSpan() > ConstantUtil.screenHeight- activity.gameView.plane.bitmap1.getHeight() activity.gameView.plane.setY(activity.gameView.plane.getY()+ activity.gameView.plane.getSpan();activity.gameView.plane.setDir(ConstantUtil.DIR_DOWN);if (KEY_LEFT = true) / 向左键被按下if (!(activity.gameView.plane.getX() - activity.gameView.plane.getSpan() < -40) activity.gameView.plane.setX(activity.gameView.plane.getX()- activity.gameView.plane.getSpan();if (KEY_RIGHT = true) / 向右键被按下if (!(activity.gameView.plane.getX() + activity.gameView.plane.getSpan() > ConstantUtil.screenWidth- activity.gameView.plane.bitmap1.getWidth() activity.gameView.plane.setX(activity.gameView.plane.getX()+ activity.gameView.plane.getSpan();/水平态if (KEY_RIGHT = false && KEY_LEFT = false&& KEY_DOWN = false && KEY_UP = false) activity.gameView.plane.setDir(ConstantUtil.DIR_STOP);/如果按下a键发射子弹if (countFine = 0) / 每fineN发一次子弹if (KEY_A = true) / A键被按下activity.gameView.plane.fire();countMove = (countMove + 1) % moveN;countFine = (countFine + 1) % fineN;try Thread.sleep(span);/ 睡觉指定毫秒数 catch (Exception e) e.printStackTrace();常量类ConstantUtil,游戏中用到的所有的常量全部封装到该类中,便于管理与维护。2、 辅助界面相关类欢迎界面WelcomeView,该类为游戏欢迎界面的实现类,主要负责欢迎界面的绘制工作。欢迎界面的动画实现类WelcomeViewThread,该类是为WelcomeView服务的线程类,主要负责欢迎界面中动画的生成。帮助界面HelpView,该类非常简单,主要负责绘制帮助界面的相关图片。加载界面ProcessView,为了使游戏更加人性化,给玩家更好的体验,在长时间加载某些资源时,需要给出加载界面以提示玩家后台加载的进度。胜利界面WinView,该类为玩家顺利过关后的恭喜过关界面。失败界面FailView,该类为主战飞机死亡后显示的失败界面,在该界面中玩家可以选择重新开始游戏或者退出游戏。3、 游戏界面相关类游戏主界面类GameView,该类为游戏菜单界面的实现类,负责界面绘制工作。背景滚动线程GameViewBackGroundThread,该类主要负责背景的滚动、敌机以及各种道具的出现。package wyf.ytl;/* * * 该类为背景滚动、物品出现的类 * */public class GameViewBackGroundThread extends Thread private int sleepSpan = 100;/ 睡眠的毫秒数private int span = 3;/ 图片移动的步长private boolean flag = true;/ 循环标志位GameView gameView;/ GameView的引用long touchTime = 0;/ 当前所到的时间public GameViewBackGroundThread(GameView gameView) / 构造器this.gameView = gameView;public void setFlag(boolean flag) / 设置标记位this.flag = flag;public void run() while (flag) if (gameView.status = 1) / 游戏中时gameView.backGroundIX -= span;if (gameView.backGroundIX < -ConstantUtil.pictureWidth) gameView.i = (gameView.i + 1) % ConstantUtil.pictureCount;gameView.backGroundIX += ConstantUtil.pictureWidth;gameView.cloudX -= span;/ 移动云彩if (gameView.cloudX < -1000) gameView.cloudX = 1000;touchTime+;/ 时间自加/ 滚动地图的时候try for (EnemyPlane ep : gameView.enemyPlanes) / 到时间出现敌机if (ep.touchPoint = touchTime) ep.status = true;if (ep.type = 3) / 到关口了gameView.status = 3;for (Life l : gameView.lifes) / 到时间出现血块if (l.touchPoint = touchTime) l.status = true;for (ChangeBullet cb : gameView.changeBollets) / 到时间出现吃了改变枪的物体if (cb.touchPoint = touchTime) cb.status = true; catch (Exception e) / 捕获异常e.printStackTrace();/ 打印异常信息/ 一分多钟后游戏结束if (touchTime = 641) / 到关口时this.flag = false;try Thread.sleep(sleepSpan);/ 睡眠 catch (Exception e) / 捕获异常e.printStackTrace();/ 打印异常信息地图信息Maps,该类包含着地图的相关信息,例如敌机所有的移动路线、各个关卡中补血道具、换枪道具等。物体的移动线程类MoveThread,该线程负责除了我方主战飞机外所有可移动物的移动。4、 情景相关类主战飞机Plane,该类为主战飞机的封装类,可由玩家控制其方向以及移动状态。敌机EnemyPlane,该类为敌机的封装类。子弹类Bullet,子弹的封装类,

    注意事项

    本文(本科毕业设计--基于android操作系统的飞机大战手机游戏.doc)为本站会员(教****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开