欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于Android系统的音乐播放器设计与实现.doc

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

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

    毕业设计(论文)基于Android系统的音乐播放器设计与实现.doc

    毕 业 设 计(论 文)题 目 基于Android系统的音乐播放器设计与实现 姓 名 学 号 所在学院 专业班级 指导教师 日 期 摘 要 当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉效果及用户体验,因此,也逐步的提高了对系统的要求。本文主要是在Android系统上对音乐播放器应用程序的设计与实现进行讨论,通过这一过程来进一步学习与应用Android平台,这样对个人的未来发展也很有意义。本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse开发工具对播放器代码进行编写。同时给出了详细的系统设计过程、部分界面截图及主要的功能流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、歌词显示、后台播放等功能于一体,性能良好,在Android系统中能独立运行。MP3是一种声音文件的压缩格式,由于本播放器只限于应用层程序的探讨,所以对具体的压缩算法不做深究。实验证明,基于Android平台的软件开发简单,使用方便简洁,必将成为未来几年的发展方向,具有普遍意义。关键字:Android,音乐播放器,MP3,java,EclipseABSTRACTToday's increasingly fast pace of life in society, with the hardware of mobile devices become increasingly sophisticated, people demand more and more mobile devices, high technology from the past to the present pursuit of the pursuit of visual and user experience, therefore, also gradually increased the system requirements. This article is in the Android system, music player application on the design and implementation to discuss the process through which to further study and application of Android, so the future development of personal sense. Music player of this paper uses Android open-source system technology, the use of Java language and Eclipse development tools for the preparation of the player code. At the same time gives a detailed system design process, some interface screenshots and the major function of flow, the paper also encountered in the process of development problems and solutions were discussed in detail, the music player, set play, pause, stop, on one, the next song, lyrics display, background play and other functions, good performance, in the Android system can run independently. MP3 is a compressed audio file format, as the player is limited to the application layer of the program, so not to go into the specific compression algorithm. Experiments show that, based on the Android platform, software development is simple, concise and easy to use, will become the development direction of the next few years, have universal significance. Keywords: Android, music player, MP3, java, Eclipse 显示对应的拉丁字符的拼音目 录摘 要15目 录17第一章 引言11.1项目背景11.2 编写目的1第二章 系统需求分析32.1功能需求(用例图分析)32.1.1播放器的基本控制需求42.1.2 功能需求(时序图)分析62.2系统结构图和流程图72.3 系统界面需求82.4 系统性能需求112.5运行环境需求11第三章 Android项目介绍133.1什么是Android133.1.1 Android 简介133.2 Android平台五大优势特色133.2.1开放性133.2 Android应用软件开发的语言163.2.1 Simple163.2.2 Scala163.2.3 Java173.3.1 Android 项目17第四章 搭建开发环境184.1.1 计算机配置184.1.2 下载SDK初始包184.1.3 安装ADT184.1.4 配置Android sdk194.1.5 升级sdk版本194.2 ADT的使用234.2.1 创建一个Android项目23第五章 Android平台应用程序基础305.1 Android 应用程序介绍305.2 Android应用程序组件305.3 AndroidManifest.xml 文件325.4 Intent 介绍335.5 Android 模拟器中sd卡的创建 和文件的上传355.5.1 sd卡的创建355.5.2 向sd卡里面上传文件38第六章 音乐播放器详细设计406.1.1 播放器主界面406.1.2 歌曲列表界面设计426.2.1 Android的媒体播放原理:436.3.1 歌曲列表实现细节436.4 播放功能实现细节466.4.1 Service概念及用途:476.4.2 Service与Activity交互原理486.4.3歌词显示功能实现496.5其它功能实现概述506.5.1 来电广播接收器506.5.2 音量调节52第七章 结论53致 谢54参考文献551 引言1.1 项目背景自2007年Google公司推出Android以来,一直受到人们的热捧。Android是基于Linux内核的软件平台和操作系统,它包括移动电话工作所需的全部软件,而且不存在任何以往羁绊移动产业创新的专有权障碍,并迅速发展成为智能移动终端的操作系统。由于手机市场发展迅速,使得手机操作系统也出现了不同种类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统那个,其中占有开源代码优势的Android系统有最大的发展前景。Android的开放性就优于其它封闭式的手机系统,因此,任何人都可以根据自己的爱好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。计算机应用越来越广泛,手机市场也日新月异,各种音频、视频资源在网上广为流传,这些资源看似平凡,但是已经成为了人们生活中不可缺少的一部分了,于是各种手机播放器也紧跟着发展起来,但是很多播放器都是一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,在用户需要多任务操作时,受到不少影响,带来了许多不便。 那么能否在手机上拥有自己编写的个性音乐播放器呢?谷歌的Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别文件格式,分析各种编码方式的优缺点,以及各种播放器本身的缺点和特点,编写出功能实用,使用方便快捷的播放器。1.2 编写目的现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放MP3文件格式的播放器,并且可以控制播放,暂停,停止,上一首,下一首,音量调节,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更加生动灵活化,与人们更为接近,让手机主人随时随地处于音乐旋律之中。使人们的生活更加多样化。也使设计者更加熟悉基于Android平台的应用布局及开发模式的特点。为以后实现更复杂的应用打好基础。2 系统需求分析2.1功能需求(用例图分析)根据项目的目标,我们可获得项目系统的基本需求,一下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,播放器的基本控制需求。以下分别描述:2.1.1播放器的基本控制需求图2-1 播放器基本控制图 在播放器正在运行时,用户单击“播放”按钮,播放器将播放选中的播放列表中的音乐,并同时显示同步歌词和当前进度;当歌曲未暂停或停止时,用户单击“暂停”按钮,播放器将进入暂停状态;播放器正在播放或暂停时,用户单击“停止按钮”,播放器将停止播放;播放器正在播放或暂停时,用户点击“上一首”或“下一首”按钮,播放器将播放上一首或下一首歌曲;当播放器正在播放或暂停时,用户拖动进度条,播放器将播放进度条对应的位置;当播放器正在播放时,用户进入手机桌面,播放器仍在播放中。2.1.2 功能需求(时序图)分析图2-2 音乐播放器的时序图从以上时序图可以看到播放器中消息发送及调用过程。2.2系统结构图和流程图2-3 音乐播放器系统流程图以上显示了播放器的各个流程。2.3 系统界面需求 播放器界面要求布局合理,简约,颜色舒适,控制按钮友好,能让用户一眼就能看出各个按钮的作用及操作方法。能实现要求的功能,但又不重复。要考虑到不同手机屏幕大小可能不一样,应尽量兼容大多数手机屏幕尺寸,使之显示无障碍。2.4 系统性能需求根据Android手机系统要求无响应时间为5秒,所有就有如下性能要求:1、当要求歌曲播放时,程序响应时间最长不能超过5秒2、当要求歌曲暂停时,程序响应时间最长不能超过5秒3、当要求歌曲停止时,程序响应时间最长不能超过5秒4、当要求歌曲上/下一首时,程序响应时间最长不能超过5秒5、歌词同步显示误差不应超过2秒6、界面切换响应时间最长不能超过3秒2.5运行环境需求操作系统:Windows xp支持环境:Android 2.1版本开发环境:Eclipse 3.5 ADT 0.953 Android应用软件开发基础 3.1 Android简介Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。Android平台五大优势特色:1、开放性2、挣脱运营商的束缚3、丰富的硬件选择4、不受任何限制的开发商5、无缝结合的Google应用图3-1 Android 软件体系结构图Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:第一、操作系统层(OS)第二、各种库(Libraries)和Android 运行环境(RunTime)第三、应用程序框架(Application Framework)第四、应用程序(Application)3.2 Android应用软件开发的核心技术3.2.1 Android 应用开发语言Java是Android上的主流开发语言,各种支持也最完善。Android发布的API和SDK也都主要是面向Java开发人员的。我们的播放器实例也是用Java开发的。3.2.2 Android应用程序组件Android应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。例如假设我们需要编写一个内嵌有网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的Chrome Lite浏览器组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图片的组件,那么我们在另外一个应用程序中就可以使用该组件,而不需要再编写该功能。也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。Android应用程序的组件有以下四种:1. Activities 一个activity实际上表现出来的就是一个程序的界面。这个界面可能有许多种不同的形式,比如有列表形式,有文字形式,有图像格子等形式。一个应用程序也可能有不止一个activity。比如一个短消息的程序,需要有列表显示所有消息的activity,还至少需要一个编辑短消息的activity(界面),还可能需要设置、菜单等界面。每个activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其它窗口之上(如Android中的Toast信息),Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的activity。我们可以用Activity.setContentView()方法来设置一个activity中所要显示的view。2. Services service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件是至关重要的。以下载管理器为例,用户肯定希望能够在切换到其它程序时仍然在后台进行下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由activity完成,同时我们还希望能控制下载过程,如停止、继续等,这就需要activity与service之间进行通信。 Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service的行为。3. Broadcast receivers Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载完毕等。Broadcast receiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其它组件去处理广播消息。它可以启动一个activity来同用户交互,也可以使用NotificationManager向用户发出通知。NitificationManager的通知形式有许多种,比如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。4. Content providers content provider是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其它任何有效的方式保存。ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法。ContentResolver可以与任何content provider交互,获取其中的数据。只要需要某个组件,Android就会尽力保证它的可用:如果该组件还没启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。3.2.3 Intent 介绍Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。3.2.4 AndroidManifest.xml 文件在Android启动某个程序之前,它得事先知道程序中有哪些组件。因此,apk文件中需要有一些描述信息,告知Android系统,这个任务就由AndroidManifest.xml文件完成。AndroidManifest.xml文件是一个结构化的XML文件,它除了包含有各个组件的信息,还包括许多其它的信息,如声明该程序所需要用到的库、声明所需要的权限等。它的基本样式如下所示:<?xml version="1.0" encoding="utf-8"?><manifest . . . > <application . . . > <activity android:name="com.example.project.FreneticActivity" android:icon="drawable/small_pic.png" android:label="string/freneticLabel" . . . > </activity> . . . </application></manifest>不难看出,name,icon,lable这些属性就分别指activity的名称、图标、标识。我们通过manifest描述程序的信息,Android系统就能读取出来并产生相应的行为。3.3 搭建开发环境3.3.1 计算机配置开发Android应用所用到的开发工具较占内存,尤其是模拟器。官方并未给出最低配置要求,根据个人实际体会,在本人Intel T2080双核及1G内存的情况,基本上能流畅使用。另外还需有600MB以上的剩余磁盘空间(官方文档中的说明)。3.3.2 下载SDK初始包初始包中有开发Android程序所要用到的工具,这些工具包括了从编译到运行Android应用程序所需要的各种工具。因此,事实上最基本的开发环境至此就已经搭建完整。(SDK的下载地址为 ,本来官方网站为,但是经常被封锁,该链接更为稳定。)3.3.3 安装ADT按照2.2.2安装完SDK初始包后,就可以开始开发Android应用程序了,但是为了更高效地进行开发,Android团队推出了Android Development Tools (ADT) 。ADT是目前开发Android应用最有效的工具,它是一个Eclipse插件,支持Eclipse 3.4及3.4以上的版本。以Eclipse 3.5 (Galileo)为例,安装过程如下:1. 打开Eclipse,选择 Help > Install New Softare。2. 在Available Software 对话框中,点击Add.。3. 在弹出的Add Site 对话框中,任意填写一个名字到Name一栏。在Location一栏,则填入这一URL:“https:/dl-4. 返回到Available Software 窗口后,就能看到列表中出现了"Developer Tools" ,选中它前面的复选框,再点击“Next”,就会开始下载安装ADT的各种组件了。5. 安装完毕后将弹出窗口显示ADT相关的各种信息以及许可协议,点击“Finish“即可完成安装。6. 重新启动Eclipse。3.3.4 设置Eclipse1. 选择"Window > Preferences. "打开偏好设置2. 从左侧边栏中选择"Android"一栏。3. 单击SDK Location一栏边的Browse按钮,选择刚刚下载的SDK保存的路径。4. 点击Apply,OK,设置生效。至此,Android的开发环境就已经搭建完毕,可以使用了 。3.4 Android 模拟器中sd卡的创建 和文件的上传在android模拟器中,初始是没有sdcard的,为了存放音乐文件,需要自己创建sdcard,我们先来看看如何创建sdcard以及文件上传。3.4.1 sd卡的创建:通过Android的Tools 来创建sd卡并导入进来   1.打开dos ,windows+R 键打开。转换到你的sdk安装包的tools目录下,如我的目录如下:D:Androidandroid sdktools  2.创建sd卡。在命令行中输入:mksdcard 1024M D:androidsdcard.img  【这个1024M就是我们要创建的SD卡的大小,还是根据自己的需要来输入,最后面的那个D:androidsdcard.img就是我们所设置的SD存放路径,这里也可以根据我们自己的需要改变路径的,但要注意路径中不能有空格出现】3.在eclipse里面创建模拟器,并以该sd卡来创建4.创建完成之后,启动该模拟器。可以在Android SDK and AVD Manager 里面指定模拟器并启动5.同样打开eclipse的DDMS>File-Explorer  看到如下的目录结构证明已经安装SD卡成功了。3.4.2 向sd卡里面上传文件及异常解决:右边两个小手机按钮就是传输文件的按钮了,用它来实现文件的传入和传出了,向做的表示把手机里的文件导出,向右的表示把文件导入到手机里面。这里很容易出现异常。异常如下:异常一:Failed to push selection: Invalid argument   出现此异常,多半是文件所在的目录里面有中文或者文件的名字是中文导致的。建议修改一下试试。还有就是观察自己的操作权限是不是不够,如果是:d-rwxr-x  那就是可以的。如果,sd卡是在eclipse里面系统自动创建的,试着重启一下IDE。异常二:Failed to push the item(s).   出现这个异常是因为,传输超时造成的。可以修改。    打开windowsPreferenceandroidDDMS把 ADB connection time out项的超时时间改大点。4 音乐播放器详细设计4.1 播放器界面说明Android的每一个可视化界面,都有其唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对个配置文件进行读取。这样就可以形成不同的可视化界面和绚丽的效果。主界面布局文件内容如下:<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout xmlns:android="android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="+id/musicName" android:layout_width="fill_parent"android:layout_height="wrap_content" />此处一个TextView用于显示歌曲名称,长和高均覆盖内容<ImageButton android:id="+id/LastImageButton"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_x="10px" android:layout_y="70px" android:background="drawable/last" />此处是上一首图片按钮,id为LastImageButton,长和高均覆盖内容,x坐标为10px,y坐标为70px,背景图片为drawable文件夹中的last图片<ImageButton android:id="+id/StopImageButton"android:layout_height="wrap_content" android:layout_width="wrap_content"android:layout_x="85px" android:layout_y="70px" android:background="drawable/stop" />停止按钮,此处同上<ImageButton android:id="+id/playbtn"android:layout_height="wrap_content" android:layout_width="wrap_content"android:layout_x="160px" android:layout_y="70px" android:background="drawable/start" />播放按钮,同上<ImageButton android:id="+id/NextImageButton"android:layout_width="wrap_content" android:layout_height="wrap_content"android:layout_x="235px" android:layout_y="70px" android:background="drawable/next" />下一首按钮,同上<TextView android:id="+id/lrc" android:layout_width="fill_parent"android:gravity="center_horizontal" android:layout_height="wrap_content"android:layout_y="170dp" />此TextView用于显示歌词,长和高覆盖内容,居中,y坐标为170dp<SeekBar android:id="+id/SeekBar01" android:layout_height="wrap_content"android:layout_x="0dp" android:layout_y="200dp" android:layout_width="fill_parent"android:max="100" android:progress="0" android:secondaryProgress="0"android:visibility="visible" />此SeekBar表示进度条,长填充父容器,高覆盖内容,x坐标为0dp,y坐标为200dp,最大值为100,初始为0,可见。<TextView android:layout_height="wrap_content"android:layout_width="fill_parent" android:layout_y="250dp"android:id="+id/currentProgress" />此TextView用于显示当前进度,长填充父容器,高覆盖内容,y坐标为250dp<TextView android:layout_height="wrap_content"android:layout_width="fill_parent" android:layout_y="300dp"android:id="+id/curtimeandtotaltime" />此TextView用于显示总时间,y坐标为300dp</AbsoluteLayout>4.2 Android的媒体播放原理:Android 源程序已经为我们封装了一个接口类,叫MediaPlayer。该接口在执行前需要一个数据源,通过如下四个步骤:第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放做准备。第二步:传入歌曲数据源,这里也是一个数据源MediaPlayer.setDataSource(String path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。第三步:准备播放数据源,调用MediaPlayer.prepare();第四步:MediaPlayer.start();播放数据源,该数据源播放后,不在于程序有关,需要调用MediaPlayer.stop()方法让其停止或MediaPlayer.start();让其启动。4.3.1 歌曲列表实现细节在进入播放器之前,应该先有个播放列表,将sdcard里的音乐文件列出来,供用户选择播放哪首。这里用到了ListActivity类。ListActivity类有个重要的方法:setListAdapter()方法用于设置ListAdapter的列表项目。参数为继承BaseAdapter的类,可以自定义,也可以使用Android内置的Adapter。Adapter相当于前台列表显示与后台交互的桥梁。内置的Adapter有3种:只是数据源不同而已1. String: ArrayAdapter2. List<Map<String,?>>: SimpleAdapter3. 数据库Cursor: SimpleCursorAdapter这里我用的是自定义的Adapter,MusicAdapter继承BaseAdapter;重写父类方法:/*获得游标对象的记录数目publc int getCount() return myCur.getCount();/得到位于position处的对象public Object getItem(int position) return position;/得到位于position处的ItemIdpublic long getItemId(int position) return position;最重要的是重写方法public View getView(int position, View convertView, ViewGroup parent) /通过这个方法来设置列表显示样式。public View getView(int position, View convertView, ViewGroup parent) /给convertView赋初值,使之从musiclist这个布局文件得到列表结构convertView = LayoutInflater.from(myCon).inflate(R.layout.musiclist,null);/将游标对象移动到position位置myCur.moveToPosition(position);/获得显示歌曲名称的TextViewTextView titleView = (TextView) convertView.findViewById(R.id.musicName);/从游标中取出歌曲名,然后将名称显示出来titleView.setText(myCur.getString(0).trim();/获得显示作者的TextViewTextView artistView = (TextView) convertView.findViewById(R.id.artist); /获得用于显示持续时间的TextViewTextView durationView = (TextView) convertView.findViewById(R.id.duration); /如果作者是unknown,则设为未知艺术家。if (myCur.getString(2).equals("<unknown>") artistView.setText("未知艺术家"); else /设置歌曲作者arti

    注意事项

    本文(毕业设计(论文)基于Android系统的音乐播放器设计与实现.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开