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

    Java语言程序设计基础教程课件(第11章).ppt

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

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

    Java语言程序设计基础教程课件(第11章).ppt

    第11章Java Applet基础 nJava Applet的运行原理的运行原理nApplet类及其常用方法类及其常用方法n一个显示动画的一个显示动画的Applet程序程序nApplet中使用中使用URL nApplet中建立新线程中建立新线程nApplet中播放声音中播放声音11.1 Java Applet的运行原理 n一个Java Applet程序中必须有一个类是Applet类的子类。称该子类是Java Applet的主类,并且主类必须修饰为public。nJava Applet程序是通过浏览器来执行的,因此,它和Java应用程序有许多不同之处。11.1.1 Applet的运行环境n一个Java应用程序经过编译成.class后,可直接通过Java解释器来执行。一个Java Applet在执行时也是先被编译成为.class文件,但必须再将字节码文件嵌入到Web页面中,通过浏览器或使用JDK中的appletviewer命令来运行。n下面通过例子来说明一个Java Applet的运行原理。【例11-1】一个名为HelloEducation.java的Applet类,在浏览器的坐标(25,25)位置显示字符串。npackage chapter11;nimport java.applet.Applet;/Applet类是所有的Java applet的父类;nimport java.awt.Graphics;/在进行显示输出时,需要用到类Graphics的对象;npublic class HelloEducation extends Applet n/程序员给这个类取名为HelloEducationn/所有的applet程序都是Applet类的子类npublic String s;npublic void init()ns=new String(Welcome to Tongfang Education);n/生成一个字符串对象nnpublic void paint(Graphics g)ng.drawString(s,25,25);/在浏览器中坐标为(25,25)的位置显示字符串snnnApplet应用程序必须嵌入在HTML页面中,才能得到解释执行;nApplet可以从Web页面中获得参数,并和Web页面进行交互。n含有Applet的网页的HTML文件代码中必须带有applet和/applet这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小程序代码并在本地计算机上执行该Applet小程序。nApplet是一种Java的小程序,它通过使用该Applet的HTML文件,由支持Java的网页浏览器下载运行。也可以通过java开发工具的appletviewer来运行。Applet 程序离不开使用它的HTML文件。这个HTML文件中关于Applet的信息至少应包含以下三点:n字节码文件名(编译后的Java文件,以.class为后缀);n字节码文件的地址;n在网页上显示Applet的方式。n一个HTML文件增加Applet有关的内容只是使网页更加富有生气,如添加声音、动画等这些吸引人的特征,它并不会改变HTML文件中与Applet无关的元素。11.1.2 什么是什么是appletviewernappletviewer是JDK下的一个Applet查看工具,在Java安装目录下的bin文件夹中可以找到这个可执行文件。nappletviewer带有一个命令行参数形式的URL,它指向一个含有Applet引用的HTML文件。这个Applet引用是一个指定了appletviewer要装载代码的HTML标记:11.1.3 Java Applet程序开发步骤程序开发步骤nApplet程序开发主要步骤如下:n选用EDIT或Windows Notepad等工具作为编辑器建立Java Applet源程序。n把Applet的源程序转换为字节码文件。n编制使用class 的HTML文件。在HTML文件内放入必要的APPLET语句。n下面举一个最简单的HelloWorld 例子11-2来说明Applet程序的开发过程:1编辑编辑Applet 的的java源文件源文件n创建文件夹C:ghq,在该文件夹下建立 HelloWorld.java n【例11-2】nimport java.applet.Applet;nimport java.awt.*;npublic class HelloWorld extends Applet/继承Appelet类,这是Appelet Java程序的特点nnpublic void paint(Graphics g)ng.drawString(Hello World!,5,35);nnn保存上述程序在C:java_work11HelloWorld.java文件里。2编译编译Appletn编译HelloWorld.java源文件可使用如下JDK命令:n注意:注意:如果编写的源程序违反了Java编程语言的语法规则,Java编译器将在屏幕上显示语法错误提示信息。源文件中必须不含任何语法错误,Java编译器才能成功地把源程序转换为appletviewer和浏览器能够执行的字节码程序。n成功地编译Java applet之后生成响应的字节码文件HelloWorld.class的文件。用资源管理器或DIR命令列出目录列表,将会发现目录C:ghq中多了一个名为HelloWorld.class的文件。3创建创建HTML文件文件n在运行创建的HelloWorld.class 之前,还需创建一个HTML文件,appletviewer或浏览器将通过该 文 件 访 问 创 建 的 Applet。为 运 行HelloWorld.class,需要创建包含如下HTML语句的名为HelloWorld.html的文件。n【例11-3】nn n My applet HelloWorld starting pagen n n n !-n -n n n4执行执行HelloWorld.htmln如果用appletviewer运行HelloWorld.html,需输入如下的命令行:n如下图所示,可以看出,该命令启动了appletviewer并指明了html文件,该html文件中包含对应于HelloWorld的applet语句。11.1.4 Applet的安全机制的安全机制 n浏览一个包含Applet的网页时,实际上是从远程服务器上下载到用户本地机上运行的,所以安全问题显得十分重要。Applet本身设定了相应的安全规则来保证用户的系统安全,这些规则包括:qApplet永远无法运行本地机上的可执行程序。qApplet除了与所在的服务器联系外,无法再同任何其他的服务器取得联系。qApplet不能对本地文件系统进行读写操作。q除了本地机上使用的Java版本号、操作系统名称和版本、系统使用的特殊字符外,Applet不能获取其他有关本地计算机的信息。特别是本地系统的用户名以及Email等信息。qApplet的弹出式窗口都会带有一个警告信息。n由于Applet是在Java虚拟机中解释执行,而不是由用户计算机的CPU直接运行,才使得这些安全规则成为可能。因为解释器会检查所有的关键指令和程序运行范围,能够防止恶意编写的Applet导致计算机崩溃、重写系统内存或改变系统权限。n在某些情况下,通过使用签名的Applet还可以针对不同的情况给予其不同级别的安全等级。被签名的Applet携带一个可以证明其签名者身份的证书,加密技术能够保证这种证书不能被伪造,如果用户信任签名者,就可以赋给Applet额外的权限。11.2 Applet类及其方法nApplet类是所有Applet应用的基类,所有的Java小应用程序都必须继承该类。如下所示。nimport java.applet.*;npublic class OurApplet extends Appletnn.n.nnApplet类的构造函数只有一种,即:npublic Applet();11.2.1 Applet类的基本方法n表11-1 Applet的常用方法类名功能描述finalvoidsetStub(AppletStubstub)设置当前Applet与应用程序运行所需浏览器环境之间的接口booleanisActive();判断一个Applet是否处于活动状态URLgetDocumentBase();检索表示该Applet运行的文件目录的对象URLgetCodeBase();获取该Applet代码的URL地址StringgetParameter(Stringname);获取该Applet由name指定参数的值AppletContextgetAppletContext();返回浏览器或小应用程序观察器voidresize(intwidth,intheight);调整Applet运行的窗口尺寸voidresize(Dimensiond);调整Applet运行的窗口尺寸voidshowStatus(Stringmsg);在浏览器的状态条中显示指定的信息ImagegetImage(URLurl);按url指定的地址装入图象ImagegetImage(URLurl,Stringname)按url指定的地址和文件名加载图像AudioClipgetAudioClip(URLurl)按url指定的地址获取声音文件AudioClipgetAudioClip(URLurl,Stringname)按url指定的地址和文件名获取声音StringgetAppletInfo()返回Applet应用有关的作者、版本和版权方面的信息StringgetParameterInfo()返回描述Applet参数的字符串数组,该数组通常包含三个字符串:参数名、该参数所需值的类型和该参数的说明voidplay(URLurl)加载并播放一个url指定的音频剪辑voiddestroy()撤消Applet及其所占用的资源。若该Applet是活动的,则先终止该Applet的运行11.2.2 Applet运行状态控制方法运行状态控制方法nApplet类中提供了四种基本方法用来控制其运行状态:init()、start()、stop()、destroy()。它们构成了创建任何Applet的框架,并实现了一个Applet从诞生、执行到停止、消亡的生命周期。n(1)init()方法:Applet第一次被加载时调用,主要功能是完成初始化操作,包括创建Applet对象、分配内存、设置初始状态等,在Applet生命周期中只运行一次。通常可以在该方法中完成从网页向Applet传递参数,添加用户界面的基本组件等操作。其格式为:qpublic void init()qqn(2)start()方法:初始化后或Applet停止运行随后又重新启动时调用,主要用于创建、启动及重新启动Applet,系统在调用完init()方法之后,将自动调用start()方法。而且,每当用户离开包含该Applet的主页后又再返回时,系统又会再执行一遍start()方法。这就意味着start()方法可以被多次执行,而不像init()方法。因此,可把只希望执行一遍的代码放在init()方法中。可以在start()方法中开始一个线程,如继续一个动画、声音等。在Applet生命周期中,start()方法被调用多次,一般与stop方法配套运行。其格式为:npublic void start()nnn(3)stop()方法:这个方法在用户离开Applet所在页面时执行,该方法的主要功能是停止耗时操作,以免降低系统运行速度,该方法会在Applet生命周期中调用多次。它使你可以在用户并不注意Applet的时候,停止一些耗用系统资源的工作以免影响系统的运行速度,且并不需要人为地去调用该方法。如果Applet中不包含动画、声音等程序,通常也不必实现该方法。n(4)destroy():Web浏览器中的Java解释器重新载入HTML或关闭包含Applet页面的浏览器时调用,该方法的功能是清除Applet,释放其所占用的系统资源。与对象的finalize()方法不同,Java在浏览器关闭的时候才调用该方法。Applet是嵌在HTML文件中的,所以destroty()方法不关心何时Applet被关闭,它在浏览器关闭的时候自动执行。在destroy()方法中一般可以要求收回占用的非内存独立资源。如果在Applet仍在运行时浏览器被关闭,系统将先执行stop()方法,再执行destroy()方法。11.2.3 Applet应用的有关参数n利用Applet来接收从HTML中传递过来的参数,下面对这些参数作一简单说明:n(1)CODE标志nCODE标志指定Applet的类名;WIDTH和HEIGHT标志指定Applet窗口的像素尺寸。在APPLET语句里还可使用其他一些标志。n(2)CODEBASE 标志nCODEBASE标志指定Applet的URL地址。Applet的通用资源定位地址URL,它可以是绝对地址,如。也可以是相对于当前HTML所在目录的相对地址,如/AppletPath/Name。如果HTML文件不指定CODEBASE 标志,浏览器将使用和HTML文件相同的URL。n(3)ALT 标志n虽然Java在WWW上很受欢迎,但并非所有浏览器都对其提供支持。如果某浏览器无法运行Java Applet,那么它在遇到APPLET语句时将显示ALT标志指定的文本信息。n(4)ALIGN 标志nALIGN标志可用来控制把Applet窗口显示在HTML文档窗口的什么位置。与HTML的语句一样,ALIGN标志指定的值可以是TOP、MIDDLE或BOTTOM。n(5)VSPACE与HSPACE 标志nVSPACE和HSPACE标志指定浏览器显示在Applet窗口周围的水平和竖直空白条的尺寸,单位为像素。如下例使用该标志在Applet窗口之上和之下各留出50像素的空白,在其左和其右各留出25像素的空白。n(6)NAME 标志nNAME标志把指定的名字赋予Applet的当前实例。当浏览器同时运行两个或多个Applet时,各Applet可通过名字相互引用或交换信息。如果忽略NAME标志,Applet的名字将对应于其类名。n(7)PARAM 标志n通用性是程序设计所追求的目标之一。使用户或者程序员能很方便地使用同一个Applet完成不同的任务是通用性的具体表现。从HTML文件获取信息是提高Applet通用性的一条有效途径。11.3一个显示动画的Applet的程序nJava 不仅提供了对图形、图像的支持,还允许用户实现连续的图像播放,即动画技术。Java 动画的实现,首先用java.awt 包中的Graphics类的drawImage()方法在屏幕上画出图像,然后通过定义一个线程,让该线程睡眠一段时间,然后再切换成另外一幅图像;如此循环,在屏幕上画出一系列的帧来造成运动的感觉,从而达到显示动画的目的。n为了每秒钟多次更新屏幕,必须创建一个线程来实现动画的循环,这个循环要跟踪当前帧并响应周期性的屏幕更新要求;实现线程的方法有两种,可以创建一个类Thread 的派生类,或附和在一个Runnable的界面上。11.3.1 重载update()n当AWT接收到一个applet的重绘请求时,它就调用applet的 update(),默认地,update()清除applet的背景,然后调用 paint()。重载 update(),将以前在paint()中的绘图代码包含在update()中,从而避免每次重绘时将整个区域清除。下面是 update()方法的原始程序代码:n【例11-4】update()方法的原始程序代码。npublic void update(Graphics g)nn/首先用背景色来绘制整个画面n g.setColor(getBackGround();n g.fillRect(0,0,width,height);n/接着设置前景色为绘制图像的颜色,然后调用paint()方法n g.setColor(getForeGround();n paint(g);n11.3.2 使用双缓冲技术n另一种减小帧之间闪烁的方法是使用双缓冲,它在许多动画Applet中被使用。其主要原理是创建一个后台图像,将需要绘制的一帧画入图像,然后调用DrawImage()将整个图像一次画到屏幕上去;好处是大部分绘制是离屏的,将离屏图像一次绘至屏幕上比直接在屏幕上绘制要有效得多,大大提高做图的性能。n双缓冲可以使动画平滑,但有一个缺点,要分配一张后台图像,如果图像相当大,这将需要很大一块内存;当你使用双缓冲技术时,应重载update()。11.3.3 例子n下面的例11-5,通过一个时钟的动态走动,来说明如何处理动画。n【例11-5】nimport java.util.*;nimport java.awt.*;nimport java.applet.*;nimport java.text.*;npublic class AnimatorDemo extends Applet implements Runnable nThread timer;/用于显示时钟的线程nint lastxs,lastys,lastxm,lastym,lastxh,lastyh;nSimpleDateFormat formatter;/格式化时间显示nString lastdate;/保存当前时间的字符串nFont clockFaceFont;/设置显示时钟里面的数字的字体nDate currentDate;/显示当前时间nColor handColor;/用于显示时针、分针和表盘的颜色nColor numberColor;/用于显示秒针和数字的颜色npublic void init()nint x,y;nlastxs=lastys=lastxm=lastym=lastxh=lastyh=0;nformatter=new SimpleDateFormat(yyyy EEE MMM dd hh:mm:ss);ncurrentDate=new Date();nlastdate=formatter.format(currentDate);nclockFaceFont=new Font(Serif,Font.PLAIN,14);nhandColor=Color.blue;nnumberColor=Color.darkGray;ntry nsetBackground(new Color(Integer.parseInt(getParameter(bgcolor),n16);n catch(Exception E)nntry nhandColor=new Color(Integern.parseInt(getParameter(fgcolor1),16);n catch(Exception E)nntry nnumberColor=new Color(Integer.parseInt(getParameter(fgcolor2),n16);n catch(Exception E)nnresize(300,300);/设置时钟窗口大小nn/计算四分之一的圆弧npublic void plotpoints(int x0,int y0,int x,int y,Graphics g)ng.drawLine(x0+x,y0+y,x0+x,y0+y);ng.drawLine(x0+y,y0+x,x0+y,y0+x);ng.drawLine(x0+y,y0-x,x0+y,y0-x);ng.drawLine(x0+x,y0-y,x0+x,y0-y);ng.drawLine(x0-x,y0-y,x0-x,y0-y);ng.drawLine(x0-y,y0-x,x0-y,y0-x);ng.drawLine(x0-y,y0+x,x0-y,y0+x);ng.drawLine(x0-x,y0+y,x0-x,y0+y);nn/用Bresenham算法来画圆,其中(x0,y0)是圆的中心,r为圆半径npublic void circle(int x0,int y0,int r,Graphics g)nint x,y;nfloat d;nx=0;ny=r;nd=5/4-r;nplotpoints(x0,y0,x,y,g);nwhile(y x)nif(d 0)nd=d+2*x+3;nx+;n else nd=d+2*(x-y)+5;nx+;ny-;nnplotpoints(x0,y0,x,y,g);nnnpublic void paint(Graphics g)nint xh,yh,xm,ym,xs,ys,s=0,m=10,h=10,xcenter,ycenter;nString today;ncurrentDate=new Date();nSimpleDateFormat formatter=new SimpleDateFormat(s,Localen.getDefault();ntry ns=Integer.parseInt(formatter.format(currentDate);n catch(NumberFormatException n)ns=0;nnformatter.applyPattern(m);ntry nm=Integer.parseInt(formatter.format(currentDate);n catch(NumberFormatException n)nm=10;nnformatter.applyPattern(h);ntry nh=Integer.parseInt(formatter.format(currentDate);n catch(NumberFormatException n)nh=10;nnformatter.applyPattern(EEE MMM dd HH:mm:ss yyyy);ntoday=formatter.format(currentDate);n/设置时钟的表盘的中心点为(80,55)nxcenter=80;nycenter=55;n/a=s*pi/2-pi/2(to switch 0,0 from 3:00 to 12:00)n/x=r(cos a)+xcenter,y=r(sin a)+ycenternxs=(int)(Math.cos(s*3.14f/30-3.14f/2)*45+xcenter);nys=(int)(Math.sin(s*3.14f/30-3.14f/2)*45+ycenter);nxm=(int)(Math.cos(m*3.14f/30-3.14f/2)*40+xcenter);nym=(int)(Math.sin(m*3.14f/30-3.14f/2)*40+ycenter);nxh=(int)(Math.cos(h*30+m/2)*3.14f/180-3.14f/2)*30+xcenter);nyh=(int)(Math.sin(h*30+m/2)*3.14f/180-3.14f/2)*30+ycenter);运行该Applet 需要的AnimatorDemo.html 的内容。nnn 一个时钟的例子nnn n n nn运行后的结果如下所示:11.4 Applet中使用URL nApplet类的npublic AppletContext getAppletContext();n方法返回一个AppletContext对象,确定此applet的上下文,上下文允许applet查询和影响它所运行的环境。在Java Applet程序中可以使用这个方法返回一个AppletContext对象,该对象调用nvoid showDocument(URL url)n方法完成从嵌入Java Applet的Web页链接另一个Web页面的工作,程序只需提供URL,其他的工作将自动完成。n下面的例子11-7中,在一个文本框中输入网址,然后单击“确定”按钮,即可链接到指定的页面。nimport java.applet.*;nimport java.awt.*;nimport java.awt.event.*;nimport .*;npublic class Boy extends Applet implements ActionListener nButton button;nURL url;nTextField text;npublic void init()ntext=new TextField(18);nbutton=new Button(确定);nadd(new Label(输入网址:);nadd(text);nadd(button);nbutton.addActionListener(this);nnpublic void actionPerformed(ActionEvent e)nif(e.getSource()=button)ntry nurl=new URL(text.getText().trim();ngetAppletContext().showDocument(url);n catch(MalformedURLException g)ntext.setText(不正确的URL:+url);nnnn11.5 Applet中建立新线程nJava Applet的主类的对象由浏览器负责创建,然后浏览器会启动一个专门的线程称为Java Applet的主线程,在这个线程中让主类的对象调用strat()方法。因此,应当在Java Applet程序的start()方法中启动其他的线程。n下面的例子11-8是一个左手画圆右手画方的例子。在Java Applet的主线程中创建了两个线程:left和right,其中一个负责画圆,另一个负责画方。在这个例子中,使用了容器类的一个方法getGraphics(),来获取一个Graphics对象。nimport java.applet.*;nimport java.awt.*;npublic class CircleAndRect extends Applet implements Runnable nThread left,right;nGraphics mypen;nint x,y;npublic void init()nleft=new Thread(this);nright=new Thread(this);nx=10;ny=10;nmypen=getGraphics();nnpublic void start()ntry nleft.start();nright.start();n catch(Exception e)nnnpublic void run()nwhile(true)nif(Thread.currentThread()=left)nx=x+1;nif(x 240)nx=10;nmypen.setColor(Color.blue);nmypen.clearRect(10,10,300,40);nmypen.drawRect(10+x,10,40,40);ntry nleft.sleep(60);n catch(InterruptedException e)nn else if(Thread.currentThread()=right)ny=y+1;nif(y 240)ny=10;nmypen.setColor(Color.red);nmypen.clearRect(10,90,300,40);nmypen.drawOval(10+y,90,40,40);ntry nright.sleep(60);n catch(InterruptedException e)nnnnnn运行Applet,必须定义一个html文件,ep11_8.html文件内容如下:nn n n n n n n nn使用appletviewer命令运行ep11_8.html:n程序运行后的结果如下所示:11.6 Applet中播放声音q在有些情况下,可能需要在发生某事件时伴之以声音,尢其是在Applet 中装载图像的同时播放声音,这样将大大地丰富Applet的内容。协调使用图像的声音是十分重要的。q下面的例子11-9,演示了声音和图像的协调。【例11-9】在Applet中演示声音和图像。nimport java.awt.*;nimport java.applet.*;nimport java.util.*;npublic class ep11_9 extends Applet implements Runnable nAudioClip audioClip;nThread ShapeThread=null;nRandom RandomNumber=new Random();nColor ImageColor;npublic void init()naudioClip=getAudioClip(getCodeBase(),Sample.AU);/创建一个AudioClip对象nnpublic void start()nif(ShapeThread=null)nShapeThread=new Thread(this);nShapeThread.start();nnnpublic void run()nwhile(true)nswitch(RandomNumber.nextInt(5)/把随机数转换为04之间的值ncase 0:nImageColor=Color.black;nbreak;ncase 1:nImageColor=Color.blue;nbreak;ncase 2:nImageColor=Color.cyan;nbreak;ncase 3:nImageColor=Color.magenta;nbreak;ncase 4:nImageColor=Color.orange;nbreak;ndefault:nImageColor=Color.red;nntry nShapeThread.sleep(300);/线程睡眠n catch(InterruptedException e)n/忽略异常nrepaint();nnnnpublic void paint(Graphics g)ng.setColor(ImageColor);naudioClip.play();/播放声音nswitch(RandomNumber.nextInt(2)/获取随机数与2整除的余数nncase 0:ng.fillRect(25,25,200,200);/添充一个矩形nbreak;ndefault:ng.fillOval(25,25,200,200);/添充一个椭圆nbreak;nnn11.7 练习思考题n1、简述Java Applet的开发和运行步骤。n2、小应用程序界面的宽度和高度一般在_文件中指定,其中用来指定宽度和高度的关键字分别是_和_。n3、如果一个Java程序既是应用程序又是小应用程序,那么它必定含有_类的子类,同时含有成员方法_。n4、JDK中提供的一个专为查看Applet的工具是_。

    注意事项

    本文(Java语言程序设计基础教程课件(第11章).ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




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

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

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

    收起
    展开