




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I 二二一二一二 年年 月月 本本科科毕毕业业论论文文 题题 目目: J J A A V V A A 实实 现现 文文 本本 编编 辑辑 器器 学学生生姓姓名名 : 学学 院院 : 专专 业业: 班班 级级: 指指导导教教师师 : II 摘摘 要要 当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进, 我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。 目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多 种功能和进行 Java 的编译与运行很少,不能更好的适应当前用户的要求。本 设计所完成的文本编辑器功能是针对学习 Java 程序语言,因此我们利用 Java 程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码, 编译,运行。 本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏以及树结构,还 有链接 Java 虚拟机实现编译与运行。使用 SUN 公司的 Java 中的 GUI 作为开发 技术,利用其提供的各种类与接口,首先建立系统应用原型。 本文本编辑器的开发采用 JDK6.0 和 Eclipse 9 为开发工具,操作系统为 Linux/Windows 2000/Windows XP 等。 但是能满足用户实现多种功能和进行 Java 的编译与运行很少, 关键词:面向对象程序设计,GUI,文本编辑器,编译,运行 III AbstractAbstract Now, computer and internet are experience a sharp development, the information automatic function is more and more powerful, and our society is stepping in the information age. So, more Intelligence and more specialized soft are needed to help us improve the efficiency in job. At present the text editor type are many, the function provided are also many too, But can satisfy the user for many kinds of functions and can use Java for the translation and debug are very few, so can not adapt current users request much better. This design completes the text editor function is aims at the Java beginner who study the Java program language, Therefore we use the Java programming hypothesized machine and software form an entire set of complete compilation code to the formation users application process, translation, debug. This text editors development mainly includes the contact of surface menu of the window and the tool fence as well as the tree structure, also links to the java hypothesized machine to the translation and debug. Use Java GUI API, and the classes of SUN Corporation to found the initial prototype system, then, carries on the demand iteration to the initial prototype system, unceasingly reversing and improvement, until forms the feasible system. This text editors development uses JDK6.0 and Eclipse9 as the development kit, operate system for Linux/ Windows 2000/ Windows/XP KeywordsKeywords: OOP, java, GUI(Graphical User Interface),text editor, translation, debug. IV 目目 录录 前前 言言.1 1 1 1 问题的提出及可行性研究问题的提出及可行性研究.2 2 1.1 问题的提出及定义 .2 1.2 可行性研究 .2 1.2.1 对现行文本编辑器的分析 .2 2 2 用户需求分析用户需求分析.4 4 2.1 用户调查 .4 2.2 确定目标系统的功能 .4 3 3 系统设计与开发环境系统设计与开发环境.5 5 3.1 系统相关类的设计.5 3.2 开发语言及其开发环境 .9 3.2.1 开发语言概述.9 3.2.2 Java 开发环境JDK 的介绍 .10 3.3 环境变量的设置 .11 3.3.1.环境变量的作用 .11 3.3.2 如何设置环境变量 .12 4 4 关键技术和源代码的实现关键技术和源代码的实现.1 13 3 4.1 关键技术剖析 .13 4.2 源码分析 .13 5 5 系统测试系统测试.3 32 2 5.1 测试方案 .32 5.2 测试项目 .32 6.3 编辑器截图演示 .33 致致 谢谢.3 34 4 V 参考文献参考文献.3 35 5 1 前前 言言 Java 可以方便的开发 GUI 程序,在 Java 语言提供的 GUI 构建工具中, 可以分为“组件(component)”和“容器”(container)两种。组件有: 按钮,标签,复选框,单选按钮,选择框,列表框,文本框,滚动条,画布, 和菜单等;容器有:程序的启动封面,窗体和对话框。本设计主要是通过 AWT(抽象窗口化工具包)和 Swing 来实现功能的。 本文本编辑器的设计,能打开,编辑和保存 html,java,cpp,txt 文件, 能够在文件中进行查找和替换,而且支持 java 源文件的编译与运行,前提是 机器上已经安装了 java 虚拟机并配置好了 java 相关的环境变量。 此文本编辑器是集代码编写,源代码编译和类运行于一体。 2 1 1 问题的提出及可行性研究问题的提出及可行性研究 1.11.1 问题的提出及定义问题的提出及定义 随着计算机技术的不断发展,文本编辑器成为大家必不可少的工具,但 是不同的用户对文本编辑器有不同的功能需求,所以除了像 office 中的 word 还有去 WPS 等大众文本编辑器,还需要一些带有一定相关专业功能的文 本编辑器,可以方便用户进行工作与开发。 本设计就是针对 java 初学者所开发的,集源代码编辑,编译,运行于一 体的文本编辑器。 1.21.2 可行性研究可行性研究 1.2.1 新文本编辑器的可行性研究分析 根据此文本编辑器的使用对象,新目标的提法不尽相同,例如: 1、提高工作效率和降低难度; 2、提供新的编译与运行处理功能; 新编辑器的目标确定后,就可以从以下三方面对能否实现新目标进行可 行性分析: (1)技术可行性 面向对象是一种新兴的程序设计方法,或者说是一种新的程序设计规范 (paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进 行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统, 并且在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解 决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域 不仅仅是软件,还有计算机体系结构和人工智能等。许多程序开发工具,如 java、Visual Basic 6.0、Delphi 等等,都支持面向对象的程序开发。 3 这些技术目前已经成熟,被广泛应用与各个领域。运用 GUI 中的 awt 和 swing 以及相关的类完全可以实现所要求的功能。因此,其设计开发在技术 上是可行的。 (2)经济可行性 经济可行性研究是对设计投入使用后带来的经济效益进行估计。本设计 所消耗的物力与财力不多,关键是思想架构,设计成功后可在互联网上供用 户下载。经济效益与经济投资是很少的,也达到收支平衡。 (3)运行可行性 系统设计并运行于当前流行的 Windows 系列操作系统,具有 Windows 传 统的操作风格,仅要求系统带有 JVM(java 虚拟机)。此文本编辑器操作简 单,界面友好,用户可以立即使用。总之,系统具有较好的运行可行性。 综上所述,开发一个专门的 java 文本编辑器是可行的。 4 2 2 用户需求分析用户需求分析 2.12.1 用户调查用户调查 经过详细的调研,并多次与初学 java 潜在用户进行研讨后,首先加深了 对 java 文本管理器的的深刻了解,其次,充分熟悉 java 源代码编辑,编译 和运行。 2.22.2 确定目标系统的功能确定目标系统的功能 需求分析的任务是确定功能必须完成的工作,也就是对目标系统提出完 整、准确、清晰、具体的要求。在经过多方了解和调查后,确定了此文本编 辑器必须完成的功能如下: (1) 文本新建功能; (2) 文本打开功能; (3) 文本保存功能; (4) 查找功能; (5) 帮助功能; (6) 代码运行能力。 5 3 3 系统设计系统设计与开发环境与开发环境 系统设计一般分为总体设计和详细设计。经过需求分析阶段的工作,已经 清楚系统必须完成的工作,下面的工作就应该是决定“如何做”的问题。总体 设计的基本目的就是“概括地说系统应该如何实现?”。另一方面的主要工作 是设计软件的结构,即确定系统都由哪些模块组成及模块之间的相互关系。 3.13.1 系统相关类的设计系统相关类的设计 6 Editor Pack ( ); setLocatrion ( ); setVisible ( ); start ( ); setFocusable ( ); addKeyListrner ( ); Frame addImpladdImpl(Component comp,Object con straints, int index) 添加指定的子 Component getContentPane() 返回此窗体的 contentPane 对象 setLayoutsetLayout(LayoutManager manager) 设置 LayoutManager setJMenuBarsetJMenuBar(JMenuBar menubar) 设置此窗体的菜单栏 setIconImage(Image image) setDefaultCloseOperationsetDefaultCloseOperation(int oper ation)设置用户在此窗体上发起 close 时默认执行的操作设置此 frame 要显示在最小化图标中的图像 removeremove(Component comp) 从该容器中移除指定组件 图 4-1 Editor 继承了 JFrame 类 7 JComponet JTextComponen t JMenuBar JOptionPane JToolBar JTre e JPanel JFileChoos er JSplitpan e AbstratButt on JTabbedPane JScrollPan e JButton JMenuItem JMenu JTextArea 8 图 4-2 是本设计中用到的 JComponent 及其扩展类的总括。 ActionListener actionPerformedactionPerformed(ActionE vent e) 发生操作时调用 Act_StartFlash actionPerformedactionPerformed(ActionE vent E_start) Act_StopFlash actionPerformedactionPerformed(ActionE vent E_stop) Act_Timer actionPerformedactionPerformed(ActionE vent E_time) Act_Copy actionPerformedactionPerformed(ActionE vent e_ji9) Act_Paste actionPerformedactionPerformed(ActionE vent e_ji11) Act_Cut actionPerformedactionPerformed(ActionE vent e_ji10) 图 4-3 本图显示复制,粘贴,剪贴,动画的显示停止,启动,暂停事件继承 ActionListener 类 9 JFileChooser getFileViewgetFileView() 返回当前的 文件视图 getIcongetIcon(File f) 返回此文件或文 件类型的图标,这取决 于系统 getNamegetName(File f) 返回文件名 getSelectedFilegetSelectedFile() 返回选中的文件 setCurrentDirectorysetCurrentDirectory(F ile dir) 设置当前目录 setDialogTitlesetDialogTitle(String dialogTitle) 设置显示在 JFileChooser 窗口标题 栏的字符串 FileChooser Filechooser(); approveSelection(); cancelSelection(); 图 4-4 FileChoose 类继承了 JFileChoose 类;此文件选择器能够打开和保存 文件 3.23.2 开发语言及其开发环境开发语言及其开发环境 3.2.1 开发语言概述 Sun 公司在 Java 语言的白皮书中是这样定义 Java 的: 10 Java 是一个简单的、面向对象的、分布的、健壮的、安全的、与平台无 关的、可移植的、高性能的、多线程的,以及动态的解释型语言。 Java 是一种简单的语言。它用到的概念不多,而且多为程序员所熟悉。 如果你是一名程序员,掌握 Java 对你来说是易如反掌的事。即使你没有学过 任何编程语言,学习 Java 也要比学习 C+要容易的多。 Java 是一种支持分布式操作的程序设计语言。使用 Java 提供的 URL 类, 用户可以象访问本地文件一样访问网络上的对象,使用非常方便。在客户机/ 服务器的模式下,Java 还可以将运算从服务器端分散到客户端,提高系统的 效率,避免了服务器的瓶颈制约。Java 的网络类库支持分布式的编程。 Socket 类提供可靠的流式网络的连接,支持 TCP/IP 协议。通过编写协议句柄, 程序员还可以扩充 Java 支持的协议集合。 Java 提供非常有效的安全控制。由于 Java 应用于网络程序的开发,因而 安全性变的至关重要。因为 Java 小程序需要下载到客户端解释执行,所以, 如果没有安全控制,就会给一些网络黑客以可乘之机,这对用户来说是非常危 险的。所幸的是,Java 的安全机制可以有效的防止病毒程序的产生、下载程 序对本地文件系统的破坏,以及网络黑客窃取密码和入侵。 Java 是一种非常健壮的语言。因为在 Java 中使用了以下手段: 自动内存垃圾收集机制。Java 自动收集无用的内存单元,进而防止了由 于内存泄漏导致的动态内存分配问题。 完善的异常处理机制,既简化了错误处理任务和恢复,也增加了程序的可 读性。 3.2.2 Java 开发环境JDK 的介绍 在 Sun 公司推出 Java 语言的同时,也推出了 Java 的一系列开发工具,如 JDK(Java Developers Kit)。JDK 是可以从网上免费下载的 Java 开发工 具集。随后,其它一些著名的公司也相继推出了自己的 Java 开发工具,例如 Microsoft 公司的 Visual J+,Borland 公司的 JBuilder,IBM 公司的 11 VisualAge for Java,Synmentac 的 Caf 等。本节中将简单的介绍一下 Sun 公司的 JDK;至于 Microsoft 公司的 Visual J+,将是本书其它章节重点介绍 的内容。 JDK 是 Sun 公司推出的 Java 开发工具集,由于 Sun 公司是 Java 语言的创 始者和 Java 规范的制定者,所以 JDK 自然是最权威的 Java 开发工具。您写的 Java 程序是否符合 Java 语言规范的要求,用 JDK 提供的 Java 编译器一试便 知。市场上其它公司的 Java 开发工具有的在某些地方并不完全遵从 Java 语言 规范,例如 Microsoft 公司的 Visual J+,但是 JDK 却绝对和 Java 语言规范 保持一致,而且每当有新的 Java 语言规范推出时,就会有相应的 JDK 同时推 出。当前 JDK 已经推出了其最新版本JDK1.6 3.33.3 环境变量的设置环境变量的设置 3.3.1.环境变量的作用 JAVA 程序能够顺利编译需要两个环境变量,一个是 PATH(path), 一个是 CLASSPATH(classpath)。 “假设我们要运行一个 JAVA 程序 (hello.java)就要先把它的 class 文件移动到 JAVA 里的 bin 目录下”,为 什么要这样做呢?因为我们在用到 java hello.class 这条指令的时候,DOS 不知道 hello.class 这个文件在哪里,他就先到当前目录中去找,如果找到就 运行,否则失败。当然,如果说 hello.java 在 D 盘根目录下,你也可以用 java D:hello.class 这条指令来运行,但是每次这样做也确实够麻烦。 WINDOWS 就提供了这样一个环境变量classpath,如果没有就应该新建一 个。我们把 D:这个路径赋值给 classpath,那么下次在运行 java hello.java 的时候就先在当前目录中到,如果找到就运行,如果找不到就在 classpath 的值路径下去找,找到就运行,找不到就失败。 以上说了一下 path 和 classpath 两个环境变量的作用,如果设置好了。 12 java 的编译和运行就基本上没什么问题了。 3.3.2 如何设置环境变量 Windows 下 JAVA 环境变量的设置祥解: Windows 下 JAVA 用到的环境变量主要有 3 个, JAVA_HOME、CLASSPATH、PATH。 下面说一下设置的方法。 设置方法如下: JAVA_HOME=x:JDK_1.4.2 PATH 环境变量原来 Windows 里面就有,你只需修改一下,使他指向 JDK 的 bin 目录,这样你在控制台下面编译、执行程序时就不需要再键入一大串路 径了。设置方法是保留原来的 PATH 的内容,并在其中加上%JAVA_HOME%bin (注,如果你对 DOS 批处理不了解,你可能不明白%引起来的内容是什么意思; 其实这里是引用上一步设定好的环境变量 JAVA_HOME,你写成 x:JDK_1.4.2 也是可以的;你可以打开一个控制台窗口,输入 echo %JAVA_HOME%来看一下 你的设置结果) : PATH=%JAVA_HOME%bin;%PATH% 同样,%PATH%是引用以前你设置的 PATH 环境变量,你照抄以前的值就行 了。 CLASSPATH 环境变量我放在最后面,是因为以后你出现的莫名其妙的怪问 题 80%以上都可能是由于 CLASSPATH 设置不对引起的,所以要加倍小心才行。 CLASSPATH=.;%JAVA_HOME%libtools.jar。 首先要注意的是最前面的.;,这个是告诉 JDK,搜索 CLASS 时先查找 当前目录的 CLASS 文件为什么这样搞,这是由于 LINUX 的安全机制引起的, LINUX 用户很明白,WINDOWS 用户就很难理解(因为 WINDOWS 默认的搜索顺序是 先搜索当前目录的,再搜索系统目录的,再搜索 PATH 环境变量设定的)。 为什么 CLASSPATH 后面指定了 tools.jar 这个具体文件?不指定行不行? 13 这个是由 java 语言的 import 机制和 jar 机制决定的。 具体的设定方法: win2kxp 用户右键点击我的电脑-属性-高级-环境 变量,修改下面系统变量那个框里的值就行了。 4 4 关键技术和源代码的实现关键技术和源代码的实现 4.14.1 关键技术剖析关键技术剖析 JFrame 类的 setJMenuBar 的方法为窗口添加菜单栏 JMenuBar,JMenuBar 的 add 方法为菜单栏添加菜单 JMenu,JMenu 的 add 方法为菜单添加菜单项 JMenuItem,它们之间的关系是树形关系。需要为每个菜单项添加事件处理器, 当单击菜单项时,触发事件。 4.24.2 源码分析源码分析 import java.awt.*; import java.awt.event.*; import java.awt.datatransfer.*; import javax.swing.*; import java.io.*; import java.lang.*; public class Notepad extends JFrame private final Color colorvalues = Color.black, Color.blue, Color.red, Color.green ; /定义 颜色数组 String styleNames = Bold, Italic ;/定义风格数组 String fontNames = 宋体, 华文行楷, 隶书 ;/字体数组 14 String sizeString = new String30;/字号数组 int size = new int30;/与字号数组对应的字号整数,用于设置文字 大小 private JRadioButtonMenuItem colorItems, fonts; private JCheckBoxMenuItem styleItems; private JTextArea displayText;/定义文本编辑区 private ButtonGroup fontGroup, colorGroup;/字体组,跟字色组 private int style;/字体风格 private JScrollPane scroll;/为文本编辑区提供滚动条 private String selectText = ;/存放文本编辑区中选中的文本内容 private JComboBox styleBox,fontBox,sizeBox;/工具栏 private JPanel toolPanel;/存放工具栏 private int rowNumber = 0; private FileDialog fd = new FileDialog(this); / set up GUI public Notepad() super( 文本编辑器 By XXX V1.0 指导老师:XX );/标题 /创建菜单条 JMenuBar bar = new JMenuBar(); setJMenuBar( bar ); /*- -*/ / 设置文件菜单及其菜单项 JMenu fileMenu = new JMenu( 文件(F) ); fileMenu.setMnemonic( F ); / 设置新建菜单项 JMenuItem newItem = new JMenuItem( 新建(N) ); newItem.setMnemonic( N ); fileMenu.add( newItem ); 15 newItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) displayText.setText(); ); / 设置打开菜单项 JMenuItem openItem = new JMenuItem( 打开(O) ); openItem.setMnemonic( O ); fileMenu.add( openItem ); openItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) fd.setTitle(打开); /设置标题 fd.show(); if (fd.getFile() != null) File file = new File(fd.getFile(); /用 从 fd 中取得的文件建立新文件,即打开的文件 displayText.setText( ); try FileReader f = new FileReader(file); BufferedReader b = new BufferedReader(f);/按行读打开的文件,然后传入文本域 String s; try while (s = b.readLine() != null) displayText.append(s + n);/将给 定文本追加到文本域的当前文本(即把读的内容加入文本域) f.close(); b.close(); catch (IOException ex) catch (FileNotFoundException ex) 16 else return; ); fileMenu.addSeparator(); /加分隔线 / 设置保存菜单项 JMenuItem saveItem = new JMenuItem( 保存(S) ); saveItem.setMnemonic( S ); fileMenu.add( saveItem ); saveItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) fd.setFile(*.java); fd.setMode(FileDialog.SAVE); fd.setTitle(保存); fd.show(); if (fd.getFile() != null) File file = new File(fd.getFile(); try PrintWriter pw = new PrintWriter(new FileOutputStream(file); /1.5 版本之前用这一句,之后可以用 PrintWriter pw = new PrintWriter(file); pw.print(displayText.getText(); /这一部分用于把 textArea1 中的内容打印到 pw 指定的文件 file 中去,file 围在对话框中选定的文件 pw.flush(); /刷 新该流的缓冲,然后关闭该流 pw.close(); catch (FileNotFoundException ex) ex.printStackTrace(); else return; ); / 设置另存为菜单项 17 JMenuItem saveAsItem = new JMenuItem( 另存为(Z) ); saveAsItem.setMnemonic( Z ); fileMenu.add( saveAsItem ); saveAsItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) fd.setFile(*.java); fd.setMode(FileDialog.SAVE); fd.setTitle(另存为); fd.show(); if (fd.getFile() != null) File file = new File(fd.getFile(); try PrintWriter pw = new PrintWriter(new FileOutputStream(file); /1.5 版本之前用这一句,之后可以用 PrintWriter pw = new PrintWriter(file); pw.print(displayText.getText(); /这一部分用于把 textArea1 中的内容打印到 pw 指定的文件 file 中去,file 围在对话框中选定的文件 pw.flush(); /刷 新该流的缓冲,然后关闭该流 pw.close(); catch (FileNotFoundException ex) ex.printStackTrace(); else return; ); fileMenu.addSeparator(); /加分隔线 / 设置退出菜单项 JMenuItem exitItem = new JMenuItem( 退出(X) ); exitItem.setMnemonic( x ); fileMenu.add( exitItem ); exitItem.addActionListener( new ActionListener() 18 public void actionPerformed( ActionEvent event ) System.exit( 0 ); ); bar.add( fileMenu ); /*- -*/ /创建编辑菜单及其菜单项 JMenu editMenu = new JMenu( 编辑(E) ); editMenu.setMnemonic( E ); /剪切菜单选项 JMenuItem cutItem = new JMenuItem( 剪切(T) ); cutItem.setMnemonic( T ); editMenu.add( cutItem ); cutItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) selectText = displayText.getSelectedText();/取 得选定的文本 int start = displayText.getSelectionStart();/选定的文本的开始位置 int end = displayText.getSelectionEnd();/ 选定的文本的结束位置 displayText.replaceRange(, start, end);/* 用指定替换文本替换指定开始位置与结束位置之间的文本。 这里指定替换 文本为空,即为剪切了文本*/ ); 19 /复制菜单选项 JMenuItem copyItem = new JMenuItem( 复制(C) ); copyItem.setMnemonic( C ); editMenu.add( copyItem ); copyItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) selectText = displayText.getSelectedText();/获得选中的内容, 并保存在 selectText 里 ); /粘贴的实现 JMenuItem pasteItem = new JMenuItem( 粘贴(P) ); pasteItem.setMnemonic( P ); editMenu.add( pasteItem ); pasteItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) int position = displayText.getCaretPosition();/获得鼠标当 前位置 displayText.insert( selectText,position );/插入到鼠标当前 位置 ); editMenu.addSeparator();/加分隔线 /替换的实现 JMenuItem swapItem = new JMenuItem( 替换(R)) ); swapItem.setMnemonic( R ); editMenu.add( swapItem ); swapItem.addActionListener( new ActionListener() public void actionPerformed( ActionEvent event ) JPanel swapPanel=new JPanel(); JLabel lookupLabel=new JLabel(要替换的内容 20 ); JTextField inputText=new JTextField(10); JLabel swapLabel=new JLabel(替换为:); JTextField changetoText=new JTextField(10); swapPanel.add(lookupLabel); swapPanel.add(inputText); swapPanel.add(swapLabel); swapPanel.add(changetoText); JOptionPane.showMessageDialog(null,swapPanel); String text=displayText.getText();/获得整个文本 内容 String changeText=text.replaceFirst(inputText.getText(),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论