JAVA画图工具课程设计_第1页
JAVA画图工具课程设计_第2页
JAVA画图工具课程设计_第3页
JAVA画图工具课程设计_第4页
JAVA画图工具课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1 南南 昌昌 航航 空空 大大 学学 软软 件件 1 学学 院院 课课 程程 设设 计计 画图工具程序设计系统 班级 092013 学号 09201319 姓名 许谱龙 指导老师指导老师 苏曦苏曦 提交日期 提交日期 2011 07 08 1 2 摘摘 要要 随着科学技术的不断提高 计算机科学日渐成熟 其强大的功 能已为人们深刻认识 它已进入人类社会的各个领域并发挥着越来 越重要的作用 JAVA是一门很优秀的编程语言 具有面向对象 与平台无关 安全 稳定和多线程等特点 是目前软件设计中极为健壮的编程语 言 JAVA不仅可以用来开发大型的应用程序 而且特别适合 Internet的应用开发 JAVA确实具备 一次写成 处处运行 的特 点 JAVA以成为网络时代最重要的编程语言之一 本报告中介绍了 用JAVA语言实现画笔系统的全部过程 本次课程设计是配合JAVA程序设计课程 帮助我们深入学习掌 握JAVA语言 熟练运用这个工具来编写的 通过课程设计各个项目 的综合训练 培养学生实际分析问题 编程和动手能力 提高学生 的综合素质 本课程设计尝试使用一些较生动的示例和设计项目 激发学生学习兴趣 引导学生主动学习 正确理解 接受需要重点 掌握的知识点 为参加项目开发及更深入学习做好准备 本次课程设计主要是用 JAVA 实现画笔系统 其系统主要完成 以下功能 设计一个画图程序 能够实现画笔 画箭头 画直线 画圆形 画椭圆 画矩形 画多边形 书写文字修改该画笔的大小 以及颜色 该画图程序还需具有橡皮擦功能以及清空整个画面的功 能 关键词 关键词 画图工具 画图工具 JAVA 3 目录目录 摘 要 2 目录 3 1 绪论 4 2 开发环境介绍 5 3 需求分析 6 3 1 总体目标 6 3 2 要实现的功能 7 4 概要设计 8 4 1 设计准备 8 4 2 需要用到的类 8 5 详细设计 9 5 5 类的设计 9 5 2 类的方法设计 9 6 测试数据及运行结果 10 7 总结 15 8 参考文献 15 9 源程序 15 4 1 绪论绪论 Java 不依赖平台的特点使它受到广泛的关注 Java 已成为网络 时代最重要的语言之一 目前 Java 语言不仅是一门被广泛使用的编程语言 而且已成 为软件设计开发者应当掌握的一门基础语言 因为很多新的技术领 域都涉及到 Java 语言 国内外许多大学已将 Java 语言列入本科教 学计划 而 IT 行业对 Java 人才的需求也在不断的增长 因此 掌 握 Java 已经成为共识 Java 是一门说简单也不简单 说难也不难的课程 所以 我们在学 习的过程中要根据自己的具体情况 合理安排编程训练时间 相信 编程能力会在不知不觉中得到提高 在此次的课程设计实践中 我学到了教科书上没有的东西 这 次课程设计 我按照课程设计的要求 分块实现程序的功能 在实 践中我遇到许多的问题 但我都克服 最终我成功的完成了这次课 程设计 从中我充分理解了 Java 面对对象的特性 并体会到 Java 与 C 语言的不同之处 在实践的同时 我又从中成长了许多 特别是在对程序的编译 和调试中掌握了许多的技巧和方法 为今后的其他计算机语言的学 5 习奠定了一定的基础 2 开发环境介绍开发环境介绍 该项目所使用的软件开发环境如下 操作系统 Windows xp 开发工 具 eclipse3 2 及其 VE 插件 Eclipse 简介 Eclipse 是一个开放源代码 的 基于 Java 的可扩展开发平台 就其本身而言 它只是一个框 架和一组服务 用于通过插件组件构建开发环境 幸运的是 Eclipse 附带了一个标准的插件集 包括 Java 开发工具 Eclipse 是著名的跨平台的自由集成开发环境 IDE 最初 主要用来 Java 语 言开发 但是目前亦有人通过插件使其作为其他 计算机语言比如 C 和 Python 的开发工具 Eclipse 的本身只是一 个框架平台 但是众多插件的支持 使得 Eclipse 拥有其他功能相对 固定的 IDE 软件很难具有的灵活性 许多软件开发商以 Eclipse 为 框架开发自己的 IDE Eclipse 最初由 OTI 和 IBM 两家公司的 IDE 产品开发组创建 起始于 1999 年 4 月 IBM 提供了最初的 Eclipse 代码基础 包括 Platform JDT 和 PDE 目前由 IBM 牵头 围绕着 Eclipse 项目已 经发展成为了一个庞大的 Eclipse 联盟 有 150 多家软件公司参与 到 Eclipse 项目中 其中包括 Borland Rational Software Red Hat 及 Sybase 等 Eclipse 是一个开发源码项目 它其实是 Visual Age for Java 的替代品 其界面跟先前的 Visual Age for Java 差 6 不多 但由于其开放源码 任何人都可以免费得到 并可以在此基 础上开发各自的插件 因此越来越受人们关注 近期还有包括 Oracle 在内的许多 大公司也纷纷加入了该项目 并宣称 Eclipse 将来能成为可进行任何语言开发的 IDE 集大成者 使用者只需下载 各种语言的插件即可 3 需求分析需求分析 3 1 总体目标总体目标 设计一个画图程序 能够实现画图工具 画直线 画箭头 画 椭圆 画多边形的功能 并且在绘图 过程中能够修改该画笔的大 小以及颜色 该画图程序还需具有橡皮擦功能以及清空整个画面的 功能 7 3 2 要实现的功能要实现的功能 1 这个画图程序 最基本的功能是 作为一个画图工具利用它实现在屏幕上任 意绘画 书写的功能 2 利用这个画图程序 通过选择画直线 画箭头 画多边形 画矩形 椭圆 圆形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能 3 这个画图程序 还需具备橡皮擦的功能 利用这个橡皮擦能够擦除屏幕上的 图案 并且此橡皮擦也应该能够改变大小 4 这个画图程序 还应该做到能够改变画笔颜色的功能 5 这个画图程序 还应该具备能够清除整个屏幕已绘制图画的功能 8 4 概要设计概要设计 4 1 设计准备设计准备 1 此程序为实现这些功能模块 必须首先定义一个工具面板 将这些画笔 画 箭头 椭圆 圆 多边形直线 画矩形 画笔颜色 画笔大小 橡皮等功能组 件放入这个工具面板中 2 此程序为实现利用鼠标做画笔的功能 必会产生鼠标事件 MouseEvent 因 此 为实现鼠标画图的功能 必须用到鼠标触发事件 故在此程序中 必须实 现 委托事件模型 用到事件源 事件对象以及监听者对象 3 此程序中 必须用到的包如下 import java awt import javax swing import java awt event 4 2 需用到的类需用到的类 1 class Mycanvas 此类用于定义一组数据成员 并且使用构造函数将他们分别初使化 以方 便在下面的程序中使用他们 2 classclass MyframeMyframe 此类用于实现这个程序的大部分功能 在这个类中除了定义一些基本变量 以及构造函数外 还定义了很多成员方法 这些成员方法将实现鼠标触发事件 的一系列绘图功能 3 public class Text 这个类是主类 是程序得以运行的入口 在这个主类中定义了主方法 是 该程序执行的入口 9 5 详细设计详细设计 5 1 类的设计类的设计 1 class Mycanvas 在这个类中定义了用于截断的一系列标志变量 有初始坐标 颜色 工具选择 等 并且在这个类中还定义了构造函数void setx1 int x1 用于完成对 这些变量的初始化工作 2 classclass MyframeMyframe 这个类用来实现整个程序的大部分功能 并且在这个类中定义了大部分的 成员函数和成员方法 在这个类中用到的主要成员方法如下 public void actionPerformed ActionEvent e public void itemStateChanged ItemEvent e public void mousePressed MouseEvent e public void mouseRelesed MouseEvent e public void mouseEntered MouseEvent e public void mouseExited MouseEvent e public void mouseClicked MouseEvent e public void mouseDragged MouseEvent e public void mouseMoved MouseEvent e 5 2 类的方法介绍类的方法介绍 定义的变量 在这个类中 首先定义了画笔的大小 画笔的颜色 画笔的粗细 橡 皮的大小 工具的选择等一些变量 并且还用到了系统中自带的一些类初使 化了一些面板工具对象 用于完成对面板工具 画直线 画椭圆 画矩形 橡皮擦 清除等一些工具按钮的定义 初使化构造函数 在这个初使化构造函数中 首先继承了父类 Frame 然后初使化了各工 具按钮以及各个选择项 包括颜色选择 画笔大小选择 橡皮大小选择 并 且将这些组件添加到了工具面板中 最后还对各个组件注册了事件监听者对 象 paint 方法 这个方法主要用于在 Applet 的界面中显示文字 图形和其它界面元素 本程序中 在这个方法中 定义了一些工具选项设置 给用户选择画笔 画直 10 线 画圆 橡皮擦等一些功能 itemStateChanged 方法 这个方法用来实现的功能很简单 主要是用来改变画笔大小 画笔颜色 橡皮大小的 在此方法中 设置了大小以及颜色的一些预选项 以供用户对大 小以及颜色做出选择 mouseDragged 方法 此方法是处理 MouseEvent 事件以实现 MouseMotionListener 接口的对象 MouseMotionListener 是事件监听者 mouseDragged MouseEvent e 是成员 方法 代表鼠标拖动事件 在这个方法中 还用到了 MouseEvent 类常用成 员方法 public int getX 以及 public int getY 用来返回发生鼠标 事件的 X 及 Y 的坐标 这个方法中 主要用来控件画笔和橡皮的转换 mousePressed 方法 此方法是处理 MouseEvent 事件以实现 MouseListener 接口的对象 MouseListener 是事件监听者 mouseDPressed MouseEvent e 是成员方法 代 表鼠标按下事件 这个方法主要用来控件用户画直线 画圆 画矩形这些功能 之间的转换 mouseReleased 方法 mouseEntered 方法 mouseExited 方法 mouseClicked 方法 这些方法和 mousePressed 方法属于同一类 他主要用来表示鼠标释 放事件 是对上述各个功能完成后对鼠标事件的又一次触发 11 6 测试数据及运行结果测试数据及运行结果 1 画笔在屏幕上绘画 12 2 改变画笔的粗细 13 3 画直线 画圆 画矩形 14 4 改变颜色 15 7 总结总结 此软件基本达到理想效果 在编写这一软件的过程中我学到了很多 java 编程知识 并学会了如何快速的改正程序中的错误 经过一周的课程设计 java 编程方面的知识收获很大 但这只是 java 编 程知识的冰山一角 还有很多东西没有学到 这次课程设计受益匪浅 不仅锻 炼了我做事坚持不懈的心态 也慢慢地培养了我不懂就查书的好习惯 我的自 学能力也有了一定的提高 我更明白了搞计算机这行 要学到真正的技术完全 要靠自己 在课堂上只能学到最基本的东西 但这最基本的东西也一定要学好 大三在即 在以后的工作学习中 我还会将更多的时间与精力投入到 Java 的学习中 不断为自己所学的知识补充新鲜血液 8 参考文献参考文献 java2 实用教程 耿祥于 张跃平编著 清华大学出版社 9 源程序源程序 package SimplePaint123 import java awt import java awt event public class Mycanvas extends Canvas int x1 y1 x2 y2 x3 y3 r int d 3 int huabi 1 double x new double 8 y new double 8 int x4 new int 8 y4 new int 8 Double X new Double 8 Y new Double 8 16 Color c Mycanvas setBackground Color white void setx1 int x1 this x1 x1 void sety1 int y1 this y1 y1 void setx2 int x2 this x2 x2 void sety2 int y2 this y2 y2 void setx3 int x3 this x3 x3 void sety3 int y3 this y3 y3 void setcolor Color c this c c void setarc int d this d d void setr int e r e void sethuabi int huabi this huabi huabi public void paint Graphics g int i g setColor c Graphics2D g 2d Graphics2D g BasicStroke bs new 17 BasicStroke huabi BasicStroke CAP ROUND BasicStroke JOIN MITER g 2d setStroke bs if i 1 g drawOval x1 y1 x2 y2 else if i 2 g drawLine x1 y1 x2 y2 else if i 3 g drawRect x1 y1 x2 y2 public void Paint Graphics g Graphics2D g 2d Graphics2D g BasicStroke bs new BasicStroke huabi BasicStroke CAP ROUND BasicStroke JOIN MITER g 2d setStroke bs for int i 0 i d i X i new Double x i x4 i X i intValue Y i new Double y i y4 i Y i intValue for int i 0 i d i g drawLine x4 i d y4 i d x4 i 1 d y4 i 1 d public void painto Graphics g g setColor c if d 3 x 0 x3 y 0 y3 r x 1 x3 Math sqrt 3 000 2 r y 1 y3 1 000 2 r x 2 x3 Math sqrt 3 000 2 r y 2 y3 1 000 2 r Paint g else if d 4 18 x 0 x3 Math sqrt 2 000 2 r y 0 y3 Math sqrt 2 000 2 r x 1 x3 Math sqrt 2 000 2 r y 1 y3 Math sqrt 2 000 2 r x 2 x3 Math sqrt 2 000 2 r y 2 y3 Math sqrt 2 000 2 r x 3 x3 Math sqrt 2 000 2 r y 3 y3 Math sqrt 2 000 2 r Paint g else if d 5 x 0 x3 y 0 y3 r x 1 x3 Math cos Math PI 0 1 r y 1 y3 Math sin Math PI 0 1 r x 2 x3 Math cos Math PI 0 3 r y 2 y3 Math sin Math PI 0 3 r x 3 x3 Math cos Math PI 0 3 r y 3 y3 Math sin Math PI 0 3 r x 4 x3 Math cos Math PI 0 1 r y 4 y3 Math sin Math PI 0 1 r Paint g else if d 6 x 0 x3 0 5 r y 0 y3 Math sqrt 3 000 2 r x 1 x3 0 5 r y 1 y3 Math sqrt 3 000 2 r x 2 x3 r y 2 y3 x 3 x3 0 5 r y 3 y3 Math sqrt 3 000 2 r x 4 x3 0 5 r y 4 y3 Math sqrt 3 000 2 r x 5 x3 r y 5 y3 Paint g else if d 7 x 0 x3 y 0 y3 r x 1 x3 r Math cos 3 Math PI 14 y 1 y3 r Math sin 3 Math PI 14 x 2 x3 r Math cos Math PI 14 y 2 y3 r Math sin Math PI 14 x 3 x3 r Math cos 5 Math PI 14 y 3 y3 r Math sin 5 Math PI 14 x 4 x3 r Math cos 5 Math PI 14 y 4 y3 r Math sin 5 Math PI 14 x 5 x3 r Math cos Math PI 14 y 5 y3 r Math sin Math PI 14 x 6 x3 r Math cos 3 Math PI 14 y 6 y3 r Math sin 3 Math PI 14 Paint g else if d 8 x 0 x3 r Math sin Math PI 8 y 0 y3 r Math cos Math PI 8 x 1 x3 r Math sin Math PI 8 y 1 y3 r Math cos Math PI 8 x 2 x3 r Math cos Math PI 8 y 2 y3 r Math sin Math PI 8 x 3 x3 r Math cos Math PI 8 y 3 y3 r Math sin Math PI 8 x 4 x3 r Math sin Math PI 8 y 4 y3 r Math cos Math PI 8 19 x 5 x3 r Math sin Math PI 8 y 5 y3 r Math cos Math PI 8 x 6 x3 r Math cos Math PI 8 y 6 y3 r Math sin Math PI 8 x 7 x3 r Math cos Math PI 8 y 7 y3 r Math sin Math PI 8 Paint g public void paintk Graphics g g setColor c Graphics2D g 2d Graphics2D g BasicStroke bs new BasicStroke huabi BasicStroke CAP ROUND BasicStroke JOIN MITER g 2d setStroke bs double H 10 箭头高度 double L 7 底边的一半 int x3 0 int y3 0 int x4 0 int y4 0 double awrad Math atan L H 箭头角度 double arraow len Math sqrt L L H H 箭头的长度 double arrXY 1 rotateVec x2 x1 y2 y1 awrad true arraow len double arrXY 2 rotateVec x2 x1 y2 y1 awrad true arraow len double x 3 x2 arrXY 1 0 x3 y3 是第一端点 double y 3 y2 arrXY 1 1 double x 4 x2 arrXY 2 0 x4 y4 是第二端点 double y 4 y2 arrXY 2 1 Double X3 new Double x 3 x3 X3 intValue Double Y3 new Double y 3 y3 Y3 intValue Double X4 new Double x 4 x4 X4 intValue Double Y4 new Double y 4 y4 Y4 intValue g setColor SWT COLOR WHITE 画线 g drawLine x1 y1 x2 y2 画箭头的一半 g drawLine x2 y2 x3 y3 g drawLine x2 y2 x4 y4 public double rotateVec int px int py double ang boolean isChLen double newLen double mathstr new double 2 20 矢量旋转函数 参数含义分别是 x 分量 y 分量 旋转角 是否改变长度 新长度 double vx px Math cos ang py Math sin ang double vy px Math sin ang py Math cos ang if isChLen double d Math sqrt vx vx vy vy vx vx d newLen vy vy d newLen mathstr 0 vx mathstr 1 vy return mathstr package SimplePaint123 import java awt import javax swing import java awt event public class Myframe extends Frame implements ActionListener ItemListener MouseListener MouseMotionListener Mycanvas canvas Graphics g int x y z r int p q int flag 0 int xiangpi 4 int huabi 1 Panel panel1 panel2 panel3 Label label1 label2 label3 label4 label5 label6 label7 label8 Button b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 TextField t1 t2 t3 t4 t5 t6 t7 Box baseBox box1 box2 box3 box4 Choice choice choice1 choice2 choice3 Myframe super 画图工具 canvas new Mycanvas choice new Choice choice1 new Choice choice2 new Choice choice3 new Choice label1 new Label 操作 label2 new Label 参数 label3 new Label 颜色 label4 new Label 多边形 label5 new Label 橡皮擦 21 label6 new Label 画笔 label7 new Label 外接圆圆心 label8 new Label 外接圆半径 panel1 new Panel panel2 new Panel panel3 new Panel b1 new Button 圆 b2 new Button 椭圆 b3 new Button 直线 b4 new Button 矩形 b5 new Button 箭头 b6 new Button 清除 b7 new Button 退出 b8 new Button 橡皮擦 b9 new Button 绘画 b10 new Button 多边形 t1 new TextField 5 t2 new TextField 5 t3 new TextField 5 t4 new TextField 5 t5 new TextField 5 t6 new TextField 5 t7 new TextField 5 choice add 红 choice add 绿 choice add 蓝 choice add 黄 choice add 青 choice add 橙 choice add 黑 choice1 add 3 choice1 add 4 choice1 add 5 choice1 add 6 choice1 add 7 choice1 add 8 choice2 add 4 choice2 add 10 choice2 add 20 choice2 add 50 choice2 add 100 choice2 add 200 choice3 add 1 choice3 add 3 22 choice3 add 8 choice3 add 10 choice3 add 13 choice3 add 16 b1 addActionListener this b2 addActionListener this b3 addActionListener this b4 addActionListener this b5 addActionListener this b6 addActionListener this b7 addActionListener this b8 addActionListener this b9 addActionListener this b10 addActionListener this choice addItemListener this choice1 addItemListener this choice2 addItemListener this choice3 addItemListener this box1 Box createHorizontalBox box1 add label1 box1 add Box createHorizontalStrut 4 box1 add b1 box1 add Box createHorizontalStrut 8 box1 add b2 box1 add Box createHorizontalStrut 8 box1 add b3 box1 add Box createHorizontalStrut 8 box1 add b4 box1 add Box createHorizontalStrut 8 box1 add b5 box2 Box createHorizontalBox box2 add label2 box2 add Box createHorizontalStrut 8 box2 add t1 box2 add Box createHorizontalStrut 5 box2 add t2 box2 add Box createHorizontalStrut 5 box2 add t3 box2 add Box createHorizontalStrut 5 box2 add t4 box3 Box createHorizontalBox box3 add label3 box3 add Box createHorizontalStrut 5 box3 add choice 23 box3 add Box createHorizontalStrut 5 box3 add label4 box3 add Box createHorizontalStrut 5 box3 add choice1 box3 add Box createHorizontalStrut 5 box3 add label5 box3 add Box createHorizontalStrut 5 box3 add choice2 box3 add Box createHorizontalStrut 5 box3 add label6 box3 add Box createHorizontalStrut 5 box3 add choice3 box4 Box createHorizontalBox box4 add b10 box4 add Box createHorizontalStrut 8 box4 add label7 box4 add Box createHorizontalStrut 8 box4 add t5 box4 add Box createHorizontalStrut 8 box4 add t6 box4 add Box createHorizontalStrut 8 box4 add label8 box4 add Box createHorizontalStrut 8 box4 add t7 baseBox Box createVerticalBox baseBox add box1 baseBox add Box createVerticalStrut 5 baseBox add box2 baseBox add Box createVerticalStrut 5 baseBox add box3 baseBox add Box createVerticalStrut 5 baseBox add box4 panel1 add baseBox panel1 setBackground Color cyan panel3 add panel1 BorderLayout WEST panel2 add b6 panel2 add b7 panel2 add b8 panel2 add b9 panel2 setBackground Color yellow panel3 add panel2 BorderLayout EAST add panel3 BorderLayout NORTH add canvas BorderLayout CENTER canvas addMouseListener this 24 canvas addMouseMotionListener this setBackground Color darkGray setBounds 100 100 200 200 setVisible true validate public void actionPerformed ActionEvent e int a b c g canvas getGraphics if e getSource b7 System exit 0 else if e getSource b6 canvas update g else if e getSource b10 a Integer parseInt t5 getText b Integer parseInt t6 getText c Integer parseInt t7 getText canvas setx3 a canvas sety3 b canvas setr c canvas painto g else if e getSource b8 flag 1 else if e getSource b9 flag 0 x Integer parseInt t1 getText y Integer parseInt t2 getText z Integer parseInt t3 getText r Integer parseInt t4 getText canvas setx1 x canvas sety1 y canvas setx2 z canvas sety2 r if e getSource b5 canvas paintk g if e getSource b1 e getSource b2 25 canvas paint g 1 else if e getSource b3 canvas paint g 2 else if e getSource b4 canvas paint g 3 public void itemStateChanged ItemEvent e if e getSource choice if choice getSelectedIndex 0 canvas setcolor Color red if choice getSelectedIndex 1 canvas setcolor Color green if choice getSelectedIndex 2 canvas setcolor Color blue if choice getSelectedIndex 3 canvas setcolor Color yellow if choice getSelectedIndex 4 canvas setcolor Color cyan if choice getSelectedIndex 5 canvas setcolor Color orange if choice getSelectedIndex 6 canvas setcolor Color black else if e getSource choice1 if choice1 getSelectedIndex 0 canvas setarc 3 b10 setLabel 正三边形 if choice1 getSelectedIndex 1 canvas setarc 4 b10 setLabel 正四边形 if choice1 getSelectedIndex 2 canvas setarc 5 b10 setLabel 正五边形 if choice1 getSelectedIndex 3 canvas setarc 6 b10 setLabel 正六边形 if choice1 getSelectedIndex 4 canvas setarc 7 b10 setL

温馨提示

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

评论

0/150

提交评论