PYZ计算机131-2面向对象程序设计上机指导.doc_第1页
PYZ计算机131-2面向对象程序设计上机指导.doc_第2页
PYZ计算机131-2面向对象程序设计上机指导.doc_第3页
PYZ计算机131-2面向对象程序设计上机指导.doc_第4页
PYZ计算机131-2面向对象程序设计上机指导.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计上机实践指导书面向对象程序设计课程组2014.3上机一 熟悉开发环境一、预习内容1下载JDK开发工具;2JDK开发工具集中各项含义;3Java两种应用程序的运行步骤;4流程控制语句的功能、特点以及复合语句的作用和注意事项; 二、实践目的1 熟悉Java开发环境;2 掌握Java Application程序上机步骤;3 掌握Java Applet程序上机步骤;4 掌握Java 程序的基本结构;5 掌握分支语句、循环语句、跳转语句的使用方法;三、实践内容1. 思考题(1) 简单叙述java的特点。(2) 简单叙述jdk的构成及功能。(3) 简单叙述针对windows系统,jdk下载、安装、配置及测试过程。(4) 简单叙述java应用程序及java小程序的构成。(5) 简单叙述java程序的开发过程。(6) 什么是java虚拟机?有何用途?(7) Java源程序文件及字节码文件的扩展名分别是什么?(8) 环境变量设置中path和 classpath作用区别?(9) 简述java程序的编程风格分类。2. 拓展训练题(1) 在windows 系统环境中下载jdk,并安装、配置。记录操作过程中出现的问题及解决方法。(2) 例用记事本编辑“Hello.java”程序,然后在dos环境下编译运行,记录运行结果。(3) 卸载并删除jdk,记录操作过程。(4) 在windows 系统下下载jre,并安装、配置,记录操作过程并与jdk比较。(5) 在dos环境下重新运行“hello.class”文件,记录运行结果。在记事本中打开 “hello.java”,并修改如下(修改后保存文件):Public class Hello Public static void main(sting args)System.out.println(“修改运行环境,重新运行。”);(6) 在dos环境下重新编译并运行,记录结果,并说明出现问题的原因及解决方法。(7) 使用循环语句输出一个空心的三角形。(8) 编程输出全部小写英文字母。(9) 编程输出全部三位数的阿姆斯特朗数,所谓阿姆斯特朗数是指三位数中个位数字立方之和等于原三位数,例如 153=13+53+33。(10) 编程测试break语句和continue语句在循环语句中使用时的不同。(11) 编程测试switch语句中使用break语句与不使用break语句的区别。上机二 Java基础编程一、预习内容1Java的基本数据类型;2变量的定义;3各种运算符及表达式的用法;4熟悉一维数组的声明及引用方法;5熟悉String类的主要方法。二、实践目的1掌握Java语言的各种数据类型所能进行的运算;2掌握各种表达式的书写规则及求值方法;3掌握数组的声明与引用;4掌握String类的构造方法及成员方法。三、实践内容1思考题(1) 什么是标识符?简述标识符的命名规则及习惯。(2) 什么是关键字?(3) 简述java数据类型分类。(4) 如何声明常量和变量?(5) 由低到高顺序列出java可相互转换的基本数据类型。(6) 简述java中常用运算符及其含义。(7) 简述java中运算符优先级顺序。2拓展训练题(1) 编程测试下列标识符是否正确?如果错误,说明错误原因,并改正。Myclass ,int,true,p2-6,*abc,this(2) 编程测试下列表达式是否正确?如果错误,说明错误原因并改正。Short s=a;Shar c=257;Int i=(int)false;Long l=0123;Float f=-1.2;Double d=125;(3) 编程输出各基本数据类型默认值。(4) 编程测试下列运算&与&,|与|,与,每组中两个运算符的区别。(5) 编程输出下列表达式输出结果,体会自动类型转换与强制类型转换Byte b=127;Char c=c;Short s=123456;Int i=6363;Long l=456789l;Float f=2.12f;Double d=6.37; b+c b+c+s b+c+s+I b+c+s+i+l b+c+s+i+l+f c+c+s+i+l+f+d (int)l (short)l (int) d (char)s(6) 编程采用异或运算实现两个变量值互换(不允许使用第三个变量)。(7) 编程采用移位运算符计算25(不允许使用乘法运算符)。(8) 编程利用强制类型转换,找出汉字“张”在Unicode编码表中的序号。(9) 找出数组中的最大值和最小值。(10) 将字符串中的大写字母与小写字母分别输出。(11) 编程计算下列表达式的值:假设int a=2,b=3,c=4; a*=16+(b+)-(+c) ab|c7b!=0 & a/b2 a=2&b=1 a&b c2 上机三 类与对象编程上机四 继承与多态上机五 接口编程一、预习内容1类和对象的概念及关系;2类的定义方法;3如何创建对象;4了解访问控制修饰符public、缺省、private、protected的作用;5.构造方法的作用及创建;6.继承的概念,掌握继承机制的实现方法;7.重载和覆盖的概念;8.抽象类的定义和作用;9.包的含义、创建与引用方法;10接口的定义格式及作用。二、实践目的1.掌握类的定义方法;2.掌握对象的创建方法;3.能够编写简单的类,并用它创建对象、引用对象;4.掌握类修饰符的种类及作用;5.掌握数据成员修饰符的种类及作用;6.掌握成员方法修饰符的种类及作用;7.掌握构造方法的作用及建立;8.理解继承的概念,掌握数据成员的继承与隐藏; 9.理解重载和覆盖的概念,掌握成员方法的继承、重载和覆盖;10.掌握构造方法的重载与继承中super和this的用法;11.理解和掌握抽象类的作用;12.掌握包的创建与引用;13.掌握接口的定义与实现。三、实践内容1 思考题(1)比较面向对象与面向过程程序设计的不同。答:面向对象程序设计(Object oriented programming; OOP)是一种程序开发模式,与面向过程的程序设计相比较,更接近于人的自然思维。面向对象程序设计模拟客观世界中事物的特点和规律,采用抽象的方法将软件系统中待解决的问题抽象为人们熟知的对象模型,然后通过模型创建实体(对象),再通过对这些对象状态和行为的描述,来实现软件系统的整体功能。采用面向对象程序设计方法开发的软件系统具有更稳定的软件结构,易于维护、修改、扩充,并可较好的支持代码复用。(2)什么是封装、继承与多态?答:1.封装所谓封装是指将数据和对数据的操作处理放在一起,封装是面向对象程序设计的核心思想之一。2.继承继承是根据已有类(对象模型)创建新类的一种方法,也是面向对象程序设计体现代码复用的关键特性。3.多态性所谓多态性是指使用相同接口完成不同操作或操作不同类型数据,它是面向对象程序设计另一个重要特征。(3)什么是重载?什么是重写?二者有何不同?答:重载,即同一接口可接收不同信息完成不同操作,所谓重载是指在同一个类中出现各个方法名相同,但参数不同的方法。参数不同可以是参数个数不同,也可以是参数类型不同。重写,也就是继承于同一父类的不同子类,改写了父类中的同一属性或行为,从而体现出各自的特征或表现出不同的行为。(4)简述类与对象的关系。答:类是一种数据类型,每个类都有一个特定的数据结构,用于描述一类事物(对象)共有的属性和行为。面向对象程序是由类构成的,面向对象编程的实质就是类设计的过程。对象是类的一个特定实例,类是创建对象的模型。对象的属性通过类中成员变量来描述,对象的行为通过类中成员方法来描述,通过成员方法对变量的操作实现软件系统功能。(5)构造方法可以重载吗?可以重写吗?答:(6)简述类变量与实例变量的区别。答:类变量为该类所有对象共享,而每个对象独自拥有各自的实例变量。类变量可以通过类名访问,也可以通过对象名访问;而实例变量只能通过对象名引用;类变量在加载字节码文件时分配内存,而实例变量在创建对象时分配内存。(7)简述类方法与实例方法的区别。答:类方法可以用类名和对象名两种方法调用,而实例方法只能用对象名调用。实例方法可以调用实例方法和变量也可以调用类方法和类变量;而类方法中不可以使用非static成员。(8)子类可以继承父类的哪些成员?答:1.子类可以继承父类中声明为public和protected的成员。2.如果子类和父类在同一包中,则子类可以继承父类中由默认修饰符修饰的成员。3.子类不可以继承父类中声明为private的成员4.子类不仅继承父类中直接声明的成员,父类继承于上一级父类的成员也可以被子类继承。注意:在父类中子类不能继承的成员变量和方法,子类可以通过父类中公有的成员方法或内部类间接调用。(9)简述final的含义。答:final关键字可用于修饰变量、方法或类。final类不允许继承,也就是final类没有子类。final方法不允许被重写。也就是说子类不能覆盖父类中可继承的final方法,但可以使用。(10)如何调用被局部变量屏蔽的成员变量?(11)如何调用父类的构造方法和被子类隐藏或覆盖的成员?(12)什么叫抽象类?有何作用?(13)简述类的结构及类声明中各个参数的含义。(14)简述包的作用及声明的方法。答:包是Java中提供的一种管理类的机制。使用包可以将相关的类放在同一包中,方便使用;另外,使用包还可以解决类名冲突问题,可以将相同名称的类分别存放在不同的包中;最后,使用包可以控制类及成员的访问范围。声明的方法:使用package语句声明包。package 语句必须作为Java源文件的第一条语句出现。用于指定该源文件中类和接口所在的包。格式:package 包名;(15)简述有包声明语句的Java程序编译及运行的方法。(16)简述Java访问控制权限的种类及含义。(17)new关键字的作用?(18)简述局部变量与成员变量的区别。(19)如何在类的外部访问类中的私有成员?(20)构造方法与普通方法有何不同?(21)如何在Java源文件中引入需要的类?(22)什么上转型对象?叙述上转型对象的使用原则。(23)接口有何用途?如何声明接口?如何实现接口?(24)如何通过接口实现多继承?(25)什么是匿名类?2 拓展训练题(1)定义一个类,包括姓名,学号以及高数、英语、计算机三门课成绩等数据成员,具有设置各个数据成员值的方法,显示各个数据成员值的方法以及求三门课程平均分的方法。(2)定义一个类,包括年、月、日三个数据成员,具有设置日期的方法、显示日期的方法、判断是否为闰年的方法。(3)定义一个类,包含学号、姓名、高考总分等数据成员以及设置学生信息的方法和显示学生信息的方法,将各个数据成员和成员方法前分别加上public、private、protected以及默认修饰符,查看当试图访问这些成员时编译程序会给出哪些信息,验证各个修饰符的作用。(4)定义一个Person类,具有姓名和年龄数据成员,初始化数据成员的构造方法(并重载构造方法),设置数据成员的方法,显示数据成员的方法,定义一个Student类,是Person类的子类,在Student类中除了从Person类中继承父类的姓名成员和设置数据成员的方法外,还隐藏了父类的年龄数据成员,增加了专业、年级等新的数据成员,覆盖父类的显示数据成员的方法。(5)定义一个Student抽象类,包括求学生平均分和显示学生各科分值的方法,定义两个Student类的子类:ComputerStudent类,包括数学、英语、计算机三门课成绩,计算学生平均分的方法、显示学生成绩的方法;ArtStudent类,包括素描、人体、英语、计算机四门课的成绩,计算学生平均分的方法、显示学生成绩的方法。(6)编程测试有包声明语句的Java程序编译及运行的方法。(7)编程测试重载方法的声明及使用的方法。(8)编程测试各访问控制权限修饰符的作用。(9)编程测试继承的原则。(10)编程测试隐藏与覆盖的规则。(11)编程测试构造方法的重载与使用方法。(12)编程测试成员变量与局部变量的区别。(13)编程测试Java中方法调用时参数传递的特点。(14)编程测试类成员与实例成员的不同。(15)编程测试抽象类及抽象方法的使用原则。(16)编程测试final类、方法及变量的使用原则。(17)编程测试父类中构造方法编写的限制。(18)编程测试各修饰符的组合使用情况,包括:(public,protected,private,final,abstract,static)(19)编程测试内部类的使用方法。(20)编程测试接口的声明、实现及继承的原则。上机六 异常处理一、预习内容1Java的异常处理机制;2Java如何抛出和捕获异常。二、实践目的1.熟悉Java异常处理机制;2.掌握异常的抛出与捕获。三、实践内容简答题:1、 举例说明什么是异常?异常处理的目的是什么?2、 简述java异常类体系结构?3、 简述trycatchfinally执行过程。4、 如何自定义异常?5、 Catch和finally块是必须的吗?finally块的作用是什么?6、 简述异常类常用方法及作用?7、 简述throw和throws的作用和区别?8、 说明运行时异常以及非运行时异常产生、抛出及处理过程。9、 所有的异常都可以使用trycatch捕获和处理吗?拓展训练题1、 说明下列程序运行结果及原因public class Mainpublic static void main (string args)try int number=Integer.parseInt(args0);System.out.println(number+);catch (number Format Exception ex) System.out.println(“error”);2、 补全程序通过编译(1) FileInputstream的构造函数使用throws声明 抛出 FileNotFoundException补充下列程序使其通过编译。public class FileUtilpublic static string readFile(String name) throws FileInputStream input = new FileInputStram(name);(2) class Resourcevoid doService() throws IOExceptionclass some extends Resourcevoid doService() throws 3、 说明下列程序可能运行结果(1) public class Mainpublic static void main(String args)tryint number = Integer.parseInt(args0);System.out.println(numbr+);catch (ArrayIndxOutOfBound Exception NumberFormatException ex)System.out.println(“必须输入数字”);(2) 将上文中ArrayIndexOutOfBoundExcption修改为RuntimeExcption再运行。4、编程完成下列问题(1)public class cashBank int sumM;void store(int num) /存 if (num0)System.out.println(“输入负数”);elsesumM=sumM+num;void take(int num) /取 if (num0) System.out.println(“输入负数”);elsesumM=sumM-num;int select()return sum; 请修改上述store和take方法,当传入负数时抛出IuegalArgumentExcaption 当余额(sumM)不足时抛出以下异常。public class InsufficientException extends Exceptionprivte int num;public Insufficient Exception(String messag,int remain)super(messag);this.num=remain;public int getNum()return num;备选题:1.思考题1)什么是异常?2)简述Java异常分类。3)简述Java异常处理方法。4)比较throw和throws的区别和联系。5)简述finally语句的作用。6)简述try catch finally语句的使用注意事项。7)简述如何自定义异常。2.拓展训练题1)编程测试运行时异常(非受检异常)在程序中捕获和不捕获处理,出现的不同情况。2)编程测试受检异常在程序中捕获和不捕获处理,分别出现的不同情况。3)编程测试一个try语句中存在多个catch语句时的使用注意事项。4)编程测试几种获取异常信息的方法的不同,例如printStackTrace()等。5)编程测试throw和throws的使用方法。6)编程测试finally的使用方法。7)编程测试自定义异常实现方法。上机七 输入/出流编程一、预习内容1熟悉java 中的基本输入输出流类:InputStream类、OutputStream类、DataInputStream类、DataOutputStream类、Reader类、Writer类。2熟悉实现顺序文件的类:File类、FileInput类、FileOutput类、FileReader类、FileWriter类等。3熟悉实现随机文件的类:RandomAccessFile类。二、实践目的1掌握Java中的基本输入/输出流类;2掌握顺序文件的建立和访问方法;3掌握随机文件的建立和访问方法。三、实践内容1.思考题(1)请写出File类的构造方法定义?(2)请写出File中常见的方法定义?(3)简要说明流的原理?(4)字符类输入输出流有哪些?(5)如果要利用read()方法取得输入数据流的下一个字节数据,并希望可以将所取得的数据转存成字符(char)数据类型,应该如何做?2.拓展训练题(1)编写一个程序,将一段文字写入到一个名为text.dat的文件中,然后使用文件输入输出流对象将写入的文字读出来并打印到屏幕上。import java.io.*;public class Text public static void main(String args) String s = What the Fuck !;int n = -1;byte bytes = new byte100;String str = null;File f = new File(D:/text.txt);try FileOutputStream fos = new FileOutputStream(f);fos.write(s.getBytes();FileInputStream fis = new FileInputStream(f);while(n = fis.read(bytes,0,100) != -1) str = new String(bytes,0,n);System.out.println(str); catch (Exception e) e.printStackTrace();(2)编写一个程序,将一段文字写入到一个名为text.dat的文件中,然后使用RandomAccessFile对象将写入的文字读出来并打印到屏幕上。(3)有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,把原有的数据和计算出的平均分数存放在磁盘文件“stud ”中。备选题目:1.将从键盘上输入的字符串显示在屏幕上,并统计字符串的长度。2.求键盘上输入的一组整数中最大值、最小值及其平均值。3.建立一个存放学生成绩信息的文本文件(stu.txt)。4.将stu.txt文件复制到student.txt文件中。5.将键盘上输入的学生成绩信息添加到文件stu.txt中。6.创建一个存放学生成绩信息的随机文件(stu.dat),从文件中读出指定序号的学生成绩,并在屏幕上输出。上机八 Swing编程1上机九 Swing编程2一、预习内容1.熟悉常用的布局管理器类;2.熟悉JFrame、JPanel、JScrollPane、JOptionPane的作用;3.熟悉常用的一些控件类的作用;4.了解Java中的事件响应原理;5.熟悉菜单设计和对话框设计的基本方法;二、实践目的1.掌握布局管理器的使用;2.掌握JFrame、JPanel、JScrollPane、JOptionPane的程序设计方法;3.掌握JLable、Jbutton、JCheckBox、JRadioButton等常用组件的编程方法;4.掌握JComboBox、JList、JTextField及JTextArea组件的程序设计方法;5.掌握Swing组件的事件响应原理;6.掌握Java菜单的设计方法;7.掌握对话框的设计方法;三、实践内容1.思考题(1)简述Swing的特点。(2)简述Swing的继承架构。(3)简述Java底层容器的种类及默认布局方式。(4)简述窗口的作用和使用方法。(5)简述菜单的制作方法。(6)列出常用组件功能及创建方法。(7)常用布局分为哪几种,各有什么特点?(8)什么是事件?写出你知道的Java事件。(9)什么是事件源、监听器、事件接口?(10)简述Java事件处理过程。(11)什么是焦点?组件如何获得焦点?(12)简述对话框和窗口的不同。(13)简述有模式对话框和无模式对话框的区别。(14)简述创建消息对话框的方法。(15)简述showMessageDialog(Component parentComponent, Object message, String title, int messageType)方法中,messageType的不同取值对应默认图标。2.拓展训练题(1)编程测试JFrame类常用方法作用。(2)编程测试JFrame类setDefaultCloseOperation(int operation)方法中,operation参数不同取值的作用效果。(3)编程测试包含快捷键、子菜单和菜单分割条的菜单制作和使用方法。(4)编程测试弹出式菜单的制作和使用方法。(5)编程测试带有图片的标签和按钮的制作方法。(6)编程测试设置文本框中显示字符长度以及字符字体和字号的方法。(7)编程测试一个窗口中包含多组单选钮和多组复选框的设计方法。(8)编程测试选择框和列表框的不同。(9)编程测试如何设置密码框的回显字符。(10)编程测试JPanel 和JScrollPane不同以及使用方法。(11)编程测试不同布局方式的使用方法和显示风格。(12)编程测试按钮动作事件处理方法。(13)编程测试文本框动作事件处理方法。(14)编程测试菜单项动作事件处理方法。(15)编程测试鼠标事件、键盘事件以及焦点事件的处理方法。(16)编程测试消息对话框的使用方法。(17)编程测试输入对话框的使用方法。(18) 编程测试文件对话框的使用方法。备选题目:1编写简单的计算器程序。2利用FlowLayout布局设计Swing登录界面。功能要求:在“用户名”文本框中输入“user”,密码框中输入“user”后,单击“确定”按钮或在密码框回车时,弹出“恭喜”对话框,提示“登录成功”;输入的用户名或密码错误时,弹出“警告”对话框,提示相应的错误。单击“重置”按钮时,将“用户名”文本框和密码框清空。3实现如图1所示的“学生成绩管理系统”欢迎界面。面板顶部有四个按钮“录入学生成绩”,“修改学生成绩”,“查询学生成绩”和“删除学生成绩”。自己设计每一部分的窗口界面,要求每一个窗口界面中都包括菜单,并为部分菜单项添加动作事件。图1上机十 多线程编程一、预习内容1了解线程的生命周期。2熟悉有关Thread类的各种方法以及实现线程的不同方法。二、实践目的1理解线程类的作用;2熟悉多线程处理程序的设计。三、实践内容1.思考题(1)什么是线程,线程与进程的区别和联系是什么?(2)线程有哪几个基本状态?它们之间如何转化?简述线程的生命周期。(3)多线程和单线程在程序设计上的区别是什么?(4)线程的优先级是如何定义的?(5)Java中如何创建线程?(6)如何实现线程的同步?(7)Thread.start ()与 Thread.run ()有什么区别?(8)守护线程和用户线程的区别是什么?2.拓展训练题(1)应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread 类的子类)。在主程序中创建 2个线程(用子类),将其中一个线程的优先级设为 10,另一个线程的优先级设为 6。让优先级为10 的线程打印200次“线程 1正在运行”,优先级为6 的线程打印200次“线程 2正在运行”。(提示:设置线程 优先级用setPriority 方法) (2)利用多线程求解某范围素数,每个线程负责 1000范围:线程1找1-1000;线 程 2 找 1001-2000;线程 3 找 2001-3000。编程程序将每个线程找到的素数及时 打印。 (3)编写一个应用程序,在线程同步的情况下来实现“生产者消费者”问题。备选题目:1模拟左右手,左手写10个a,右手写10个b,每写一个字符,左右手都会休息500毫秒。2利用Thread子类和Runnable接口两种方式创建两个不同的线程,比较两种线程的不同。3编写程序,模拟如下过程:上课时学生睡觉,被教师发现后,教师将学生叫醒,学生继续听课。要求教师和学生都用单独的线程完成。4用线程模拟三个干活偷懒的工人,由于工具限制一次只能有一个人干活,但是使用工具的工人总是偷懒,总是在拿着工具的时候睡觉。这时候,其他工人只能眼睁睁地看着他睡觉,却无法去使用工具干自己的活,只能等他睡醒,干完自己的活后把工具交出来,其他工人才能使用。上机十一 网络编程一、预习内容1.了解Java实现网上通信的模式。2.熟悉Java的套接字(Socket)通信的过程。二、实践目的1.理解Socket通信的机制。2.掌握建立Socket通信的基本步骤。三、实践内容1.思考题(1) 介绍使用java Socket创建客户端Socket的过程。(2) 介绍使用java ServerSocket创建服务器端ServerSocket的过程。(3) 对于建立功能齐全的Socket,其工作过程包含哪些步骤?(4) 写出DatagramSocket的常用构造方法。2.拓展训练题(1) 请编写java程序,访问所在的主页文件。(2) 设服务器端程序监听端口为8629, 当收到客户端信息后,首先判断是否是“BYE”,若是,则立即向对方发送“BYE”,然后关闭监听,结束程序。若不是,则在屏幕上输出收到的信息,并由键盘上输入发送到对方的应答信息。请编写程序完成此功能。备选题目:1.设计一个采用TCP实现数据传输的程序,要求客户端从键盘输入数据;并且在单机和多机不同情况下测试程序的执行效果。2.设计一个采用TCP实现数据传输的程序,要求客户端从文件读入数据;服务器端将数据写入磁盘文件,并且在单机和多机不同情况下测试程序的执行效果。3.参考网络聊天程序,去掉IP文本框,为程序添加一个用户列表,实现选择用户来发送信息。四、问题 1. 如何获得主机的IP地址? 2. 服务器如何在一个端口上监听连

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论