ava备忘录编写源代码及运行界面截图_第1页
ava备忘录编写源代码及运行界面截图_第2页
ava备忘录编写源代码及运行界面截图_第3页
ava备忘录编写源代码及运行界面截图_第4页
ava备忘录编写源代码及运行界面截图_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、/Memorial. javaimport java.awt.*;import java.awt.event.*;import java.awt.image.Bufferedlmage;import java.io.*;import java.util.*;import javax.imageio.ImagelO;import javax.swing.*;public class Memorial extends JFrame implements ActionListener/* param args*/private JLabel title,picture,mark,jl1,jl2,jl

2、3,jl4;private JTextField jt1,jt2,jt3;private JButton Ok ,Cancle;private static String name1 =null;private static String pass1 = null;/构造函数public Memorial()title = new JLabel(我的备忘录);picture = new JLabel(new ImageIcon(photos/ 3.jpg); 背景标签/*mark = new JLabel(new ImageIcon(3.jpg); */jl1 =new JLabel(登录名:

3、);jl2 =new JLabel(登录密码:);jl3 =new JLabel();jl4 = new JLabel(看不清);jt1 = new JTextField();jt2 = new JTextField();jt3 = new JTextField();Ok = new JButton (登录);Cancle = new JButton(取消);页面布局public void launchFrame()JPanel p = (JPanel) getContentPane();jl3.setText( getcode();jl3.setForeground(Color.cyan);

4、 / 设置验证码的颜色jl3.setBorder(BorderFactory.createRaisedBevelBorder();/ 使验证码凸出显示jl4.setForeground(Color.magenta);/设置看不清标签的前景色为洋红色jl4.addMouseListener(new addEvent(); 为看不清标签添加鼠标监听器Ok.addActionListener(this); / 为登录按钮添加监听器Cancle.addActionListener(this); / 为取消按钮添加监听器Ok.setBorder(BorderFactory.createRaisedBev

5、elBorder(); 使按钮凸出显示 Cancle.setBorder(BorderFactory.createRaisedBevelBorder();/*设置背景图片p.setLayout(null);/ 使用 setBounds(),必须使布局为 null picture.setBounds(0,0,500,330);p.add(picture);p.setOpaque(false);/使内容窗格透明/把背景图片添加到分层窗格的最底层作为背景getLayeredPane().add(picture,new Integer(Integer.MIN_VALUE);/*设置标题title.se

6、tForeground(Color.red);title.setFont(new Font(华文行楷”,Font.BOLD,20);title.setBounds(190,20,120,40);p.add(title);/*设置图标Bufferedlmage icon = null;tryicon = ImageIO.read( new File( photos/9.jpg);this.setIconImage(icon);catch( Exception e )jl1.setBounds(140,80,100,25);p.add(jl1);jt1.setBounds(240,80,100,2

7、5);p.add(jt1);jl2.setBounds(140,120,100,25);p.add(jl2);jt2.setBounds(240,120,100,25);p.add(jt2);jt3.setBounds(140,160,70,25);p.add(jt3);jl3.setBounds(250,160,40,25);p.add(jl3);jl4.setBounds(300, 160, 50, 25);p.add(jl4);Ok.setBounds(150,220,60,30);p.add(Ok);Cancle.setBounds(260,220,60,30);p.add(Cancl

8、e);setTitle(登录界面);setBounds(300,200,500,330);setResizable(false);窗 口不能被拖动setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/获取验证码public String getcode()Random rd = new Random();String str =;int a口 = new int 4;for(int i = 0; i =48&ai=65&ai=97&ai=-10000&year=10000)showYear.setText(+year)

9、;cal.setYear(year);cal.setCal(year,cal.getMonth(); elseJOptionPane.showMessageDialog(null,输入的年份有误,请重 新输入!”,错误提示,JOptionPane.ERROR_MESSAGE);showYear.setText(); catch(NumberFormatException ee) JOptionPane.showMessageDialog(null,请输入正确的年份格式! ,错误提示,JOptionPane.ERROR_MESSAGE);showYear.setText();/Month.jav

10、a/对月份的选择 import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Month extends JPanel /ActionListener 接口private int month;private JTextField showMonth=null;private JButton lastMonth,nextMonth;private CalendarPad cal;public Month( CalendarPad c )this.cal = c;showMonth = new JTextF

11、ield();month = c.getMonth();nextMonth = new JButton(下月);lastMonth = new JButton(上月力 launch();/页面布局public void launch()showMonth.setEditable(false); 设置月份不可被编辑 showMonth.setForeground(Color.blue);showMonth.setFont(new Font(宋体,Font.BOLD,16);setLayout(new GridLayout(1,3,5,5);add(lastMonth);add(showMonth

12、);add(nextMonth);lastMonth.addActionListener(new addEvent();nextMonth.addActionListener(new addEvent();lastMonth.setBorder(BorderFactory.createRaisedBevelBorder(); nextMonth.setBorder(BorderFactory.createRaisedBevelBorder(); showMonth.setText(+month);public void setMonth(int month)if(month=1)this.mo

13、nth=month;elsethis.month=1;showMonth.setText(+month);public int getMonth()return month;/事件处理class addEvent implements ActionListenerOverridepublic void actionPerformed(ActionEvent e)if(e.getSource()=lastMonth)if(month=2)month=month-1;cal.setMonth(month);cal.setCal(cal.getYear(),month);else if(month=

14、1)month=12; cal.setMonth(month);cal.setCal(cal.getYear(),month); showMonth.setText(+month);else if(e.getSource(尸nextMonth)if(month12) month=month+1;cal.setMonth(month);cal.setCal(cal.getYear(),month);else if(month=12) month=1;cal.setMonth(month);cal.setCal(cal.getYear(),month);showMonth.setText(+mon

15、th);/ Clock.java提取当前的年月日时分秒,时钟import java.awt.*;import java.text.SimpleDateFormat;/SimpleDateFormat 是一个以与语言环境相关的方式来格 式化和分析日期的具体类import java.util.Calendar;import javax.swing.JPanel;/* 1.创建线程一种方法是将类声明为Thread的子类。该子类应重写 Thread类的run方法。接下来可以分配并启动该子类的实例。另一种方法是声明实现Runnable接口的类,该类然后实现run方法。然后可以分配该类的实例,在创建 Th

16、read时作为一个参数来传递并启动。2.Canvas组件为Component的一个子类,表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。应用程序必须为Canvas类创建子类,以获得有用的功能(如创建自定义组件)。必须重写paint方法,以便在 canvas上执行自定义图形。*/class Clock extends Canvas implements Runnable CalendarPad cp;Thread t;/Multi-Thread (斜体)线程 是程序中的执行线程。Java虚拟机允许应用程序并发地运行多个执行线程。String time;

17、public Clock(CalendarPad cp) this.cp=cp;setSize(280,40);setBackground( Color.pink );t = new Thread( this );/ 实例化线程t.start();/调用线程Override public void run() while(true) tryThread.sleep(1000);/ 休眠 1 秒钟 catch(InterruptedException e) System.out.println(异常); this.repaint(1000);/ 重画屏幕 /* Graphics类是所有图形上下文

18、的抽象基类, *允许应用程序可以在组件(已经在各种设备上实现),*以及闭屏图像上,进行绘制。 */对paint函数进行重写,在canvas上执行自定义图形public void paint( Graphics g )/super.paintComponent(g);SimpleDateFormat sdf=new SimpleDateFormat( yyyy年MM月dd日 HH:mm:ss);格式化时间显示类型 Calendar now=Calendar.getInstance(); / time=sdf.format(now.getTime();/format()格式化时间对象,得到当前日期

19、和时间 g.setFont(new Font(华文行楷”,Font.BOLD,18); g.setColor(Color.red); g.drawString(time,50,25);使用此图形上下文的当前字体和颜色,在指定的坐标位置,绘制由指定 string给定的文本 CalendarPad.java/Calendar日历记事本import java.util.Calendar;import javax.imageio.ImagelO;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.

20、image.Bufferedlmage;import java.io.File;public class CalendarPad extends JFrameint year,month,day;private JTextField showDay;private JLabel title口;Calendar cal =Calendar.getInstance();/ 实例化 Calendar int week;Note note=null;Month ChangeMonth;Year ChangeYear;String w=星期日,星期一,星期二,星期三,星期四,星期五,星期六; priva

21、te JPanel leftPanel,rightPanel;/构造函数public CalendarPad( int year,int month,int day )leftPanel=new JPanel(); / 左侧是日历rightPanel=new JPanel(); 右侧显示相应的记事 this.year=year;this.month=month;this.day=day;ChangeYear=new Year(this);ChangeYear.setYear(year);ChangeMonth=new Month(this);ChangeMonth.setMonth(month

22、); launch();/页面布局public void launch()JPanel leftCenter=new JPanel(); 左侧放置日历JPanel leftNorth=new JPanel();/ 右侧放置事件,*设置图标*/Bufferedlmage icon = null;tryicon = ImageIO.read( new File( photos/7.jpg);this.setlconlmage(icon);catch( Exception e )/*左面板中间部分的面板布置*/leftCenter.setLayout(new GridLayout(7,7);titl

23、e=new JLabel7;showDay=new JTextField42; /day用不可被编辑的文本框显示for(int j=0;j7;j+)titlej=new JLabel();titlej.setText(wj);/“星期日”到“星期六”titlej.setBorder(BorderFactory.createRaisedBevelBorder();/创建一个具有凸出斜面边缘的边框,将组件当前背景色的较亮的色度用于突出显示,较暗的色度用于阴影leftCenter.add(titlej);title0.setForeground(Color.orange);/设置 “星期日字体颜色,

24、设置前景色title6.setForeground(Color.green);/ 设置星期六字体颜色for(int i=0;i42;i+)showDayi=new JTextField();showDayi.addMouseListener(new addEvent();showDayi.setEditable(false); / 日期不可被编辑leftCenter.add(showDayi);/*左面板北面部分的面板,由与年份和月份有关的组件组成*/JPanel p = new JPanel();p.setLayout(new GridLayout(1,2);p.add(ChangeYear

25、);p.add(ChangeMonth);leftNorth.add(p);/*左侧面板整体布置*/leftPanel.setLayout( new BorderLayout();leftPanel.add( leftNorth,North);leftPanel.add( leftCenter,Center);leftPanel.add( new Clock(this),South); /!调用 Clock 类实例,显示当前时 间leftPanel.validate();/*右侧面板整体布局*/rightPanel.add( new Label(文本框输入年份,按 Enter键确定(负数表示公

26、元 前),North);note=new Note(this);当前日历rightPanel.add(note,Center); 把 note 放在右侧面板中间部分setCal(year,month);/*备忘录界面总布局*/Container c = getContentPane();/ 获得大内容嵌板JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPanel,rightPanel); c.add(split);/*JSplitPane用于分隔两个(只能两个)Component,使用 JSplitPane.HOR

27、IZONTAL_SPLITI 让分隔窗格中的两个Component从左到右排列*/Container c = getContentPane();c.setLayout(new GridLayout(1,2);c.add(leftPanel);c.add(rightPanel); */此种添加方式,两个 Component之间没有分隔 ,比较突pack();setTitle(备忘录);setVisible(true);setResizable(false);窗 口不能被拖动 setBounds(350,100,620,350);validate。;鼠标事件处理,单击某日期,获取该日的备忘录信息c

28、lass addEvent extends MouseAdapterOverridepublic void mousePressed( MouseEvent e)JTextField source=(JTextField)e.getSource(); tryday = Integer.parseInt(source.getText();note.setDay(day);note.setTimeLabel(year,month,day); /在右侧面板上显示点击的时间 note.setText(null);note.getLog(year,month,day);/获取该天的备忘录信息catch(

29、Exception ee)/设置每月的天数public void setCal(int year,int month)cal.set(year,month-1,1); 调用 Calendar 类的 set()函数,设置年、月week=cal.get(Calendar.DAY_OF_WEEK)-1; /倜用 get()函数读取if(month=1|month=2|month=3|month=5|month=7 |month=8|month=10|month=12) SearchNum(week,31);else if(month=4|month=6|month=9|month=11)Search

30、Num(week,30);else if(month=2) if(year%4=0&year%100!=0)|(year%400=0)SearchNum(week,29); / 闰年else SearchNum(week,28); / 平年/查找日期public void SearchNum(int w_num, int month_num)for( int i = w_num, n = 1; iw_num + month_num; i + )showDayi.setText(+n);if(n=day)设置被查询到的某天日期颜色,大小showDayi.setFont(new Font(Time

31、sRoman,Font.BOLD,24);showDayi.setForeground(Color.cyan); else showDayi.setFont(new Font(TimesRoman,Font.BOLD,14);showDayi.setForeground(Color.gray);if(i%7=6)showDayi.setForeground(Color.green);/ 一个月内为周六的所有日期颜if(i%7=0)showDayi.setForeground(Color.orange);/ 一个月内为周日的所有日期颜 n+;for(int i=0;iw_num;i+)showD

32、ayi.setText();/ 每月月初前为空for(int i=w_num+month_num;i42;i+)showDayi.setText();/ 每月月末后为空/set、get 函数 public void setYear(int y)year=y;note.setYear(year);public int getYear()return year;public void setMonth(int m)month=m;note.setMonth(month);public int getMonth()return month;public void setDay(int d)day=d

33、;note.setDay(day);public int getDay()return day;/LinkData.java/连接数据库import java.sql.*;public class LinkData private Connection con = null;private Statement stmt = null;public LinkData()String driver = org.hsqldb.jdbcDriver;String user = sa;String url = jdbc:hsqldb:hsql:localhost;String pass =;tryCla

34、ss.forName(driver);con = DriverManager.getConnection( url, user, pass );catch( Exception e )e.printStackTrace();修改信息public boolean modifyMessage( String sql ) throws SQLException boolean b = false;stmt = con.createStatement();b = stmt.execute( sql );stmt.close();stmt = null;return b;/ 获彳导 ResultSetp

35、ublic ResultSet query( String sql ) throws SQLExceptionreturn con.createStatement().executeQuery(sql);public void close()if( con != null )trycon.close();catch( SQLException ex )System.out.println(数据库关闭异常!);/Note.javaimport java.awt.*;import java.awt.event.*;import java.io.File;import java.sql.Result

36、Set;import java.sql.SQLException;import java.util.Calendar;/import java.util.Hashtable;import javax.swing.*;public class Note extends JPanel implements ActionListenerprivate JTextArea jta;private JScrollPane jsp;private JButton add,change,delete,refresh;private JLabel time_label;int year,month,day;p

37、rivate String num =;private boolean flag = false;private int data_num = 0;CalendarPad calendar;Note(CalendarPad calendar)/ 构造函数 this.calendar=calendar;year = calendar.getYear();month = calendar.getMonth();day = calendar.getDay();time_label=new JLabel(+year+年+month+月+day+日,JLabel.CENTER);/股置水 平对齐方式为后

38、中jta = new JTextArea(12,24);jsp = new JScrollPane(jta); /为文本区添加滚动条 add = new JButton(添力口);change = new JButton(修改);delete = new JButton(删除)refresh = new JButton(刷新);launch();页面布局public void launch()add.addActionListener(this);change.addActionListener(this);delete.addActionListener(this);refresh.addA

39、ctionListener(this);/使按钮凸出显示add.setBorder(BorderFactory.createRaisedBevelBorder();change.setBorder(BorderFactory.createRaisedBevelBorder();delete.setBorder(BorderFactory.createRaisedBevelBorder();refresh.setBorder(BorderFactory.createRaisedBevelBorder();time_label.setFont(new Font(TimesRoman,Font.BO

40、LD,16);time_label.setForeground(Color.magenta); /洋红色jta.setFont(new Font(华文行楷”,Font.PLAIN,16 );jta.setEditable(false);/ 文本区不可被编辑/note面板布局 setLayout(new BorderLayout();add(time_label,North);add(jsp,Center);将添加滚动条的文本区,放在右侧面板的中间位置JPanel pSouth=new JPanel();pSouth.add(add);pSouth.add(change);pSouth.add(

41、delete);pSouth.add(refresh);add(pSouth,South);/按钮事件处理Overridepublic void actionPerformed(ActionEvent e) if(e.getSource(尸add)new AddTest( +year+month+day ,data_num );else if(e.getSource(尸change) if( isExit( +year+month+day )new ChangeTest( +year+month+day );elseJOptionPane.showMessageDialog(null,当天无备

42、忘录!); else if(e.getSource() = delete) if( isExit( +year+month+day ) )num = JOptionPane.showInputDialog(null,请输入你要删除的备忘录的编 号:”);if( num = null )else if( num.equals()JOptionPane.showMessageDialog(null,所要删除的当天的编号不能 为空!);num = JOptionPane.showInputDialog(null,请输入你要删除的备忘录 的编号:);else try delLog(year,month

43、,day); catch (SQLException e1) e1.printStackTrace();else);JOptionPane.showMessageDialog(null,当天无备忘录,不用删除! else if(e.getSource()=refresh)getLog( year, month, day );JOptionPane.showMessageDialog(null,备忘录已刷新成功!);else/在文本区上方添加当前日期public void setTimeLabel(int year,int month,int day)time_label.setText(+ye

44、ar+年+month+月+day+日);public void setText(String s) jta.setText;给文本区赋值/判断某天信息是否存在public boolean isExit( String date )LinkData ld_connection = new LinkData();String sql = select * from mymemo where date=+date+”;ResultSet rs = null;try rs = ld_connection.query(sql);if( rs.next() )rs.close();ld_connectio

45、n.close();return true;catch (SQLException e)return false;读取某天的备忘录public void getLog(int year,int month,int day)/连接数据库data_num = 0;LinkData ld_connection = new LinkData();ResultSet rs = null;String data =;String time =+year+month+day;String sql = select * from mymemo where date=+time+;if( isExit(time

46、) )try rs = ld_connection.query(sql);while( rs.next()data += rs.getString( 2 )+.+rs.getString( 3 )+n; data_num +;catch (SQLException e) e.printStackTrace();jta.setText( data );elsejta.setText(无记录);删除数据库里面的内容public void delLog(int year,int month,int day) throws SQLExceptionLinkData ld_connection = ne

47、w LinkData();String str=删除+year+年+month+月+day+日+第+ num +”条的记录吗?;String time =+year+month+day;ResultSet rs = null;String sel_sql = select * from mymemo where date= +time+and num = +num+;rs = ld_connection.query(sel_sql);if( rs.next() )int ok = JOptionPane.showConfirmDialog( this,str,” 询 问 ”,JOptionPa

48、ne.YES_NO_OPTION);if( ok=JOptionPane.YES_OPTION )String sql = delete from mymemo where date= +time+and num =+num+;trydata_num = 0;ld_connection.modifyMessage(sql); if( !isExit(time) jta.setText(无记录);elseint i = 0;String口 data_str = new String100;String sql_ref = select * from mymemo where date= +tim

49、e+”; rs = ld_connection.query( sql_ref ); while( rs.next() ) data_stri = rs.getString( 3 );i +;String del_sql = delete from mymemo where date= +time+; ld_connection.modifyMessage(del_sql);for( int j = 0; j i; j + )String insert_sql = insert into mymemovalues。+time+,+(j+1)+,+data_strj+);ld_connection

50、.modifyMessage(insert_sql); data_num = i; catch( Exception e) e.printStackTrace(); elseJOptionPane.showMessageDialog( null,你输入的编号不存在!);rs.close();ld_connection.close();/get、 set 函数 public void setYear(int year) this.year=year;public int getYear()return year;public void setMonth(int month)this.month=

51、month;public int getMonth()return month;public void setDay(int day)this.day=day;public int getDay()return day;/AddTest.javaimport java.awt.*;import java.awt.event.*;import java.awt.image.BufferedImage;import java.io.File;import java.sql.SQLException;import javax.imageio.ImageIO;import javax.swing.*;

52、public class AddTest extends JFrameprivate JLabel signal,picture;private JTextArea editer;private JScrollPane jsp;private JButton Ok,Cancle,Clear;private int number;private String date;public AddTest ( String date, int data_num )this.number = data_num;this.date = date;signal = new JLabel(请输入你要添加的信息:

53、);picture = new JLabel(new ImageIcon(photos/17.jpg);/ 背景标签 editer = new JTextArea();jsp = new JScrollPane(editer);/ 为文本区添加滚动条Ok = new JButton(确定);Cancle = new JButton(取消);Clear = new JButton(清空);launch();public void launch()JPanel p = (JPanel)getContentPane();Ok.addActionListener(new addEvent();Canc

54、le.addActionListener(new addEvent();Clear.addActionListener(new addEvent();setLayout(null);Ok.setBorder(BorderFactory.createRaisedBevelBorder(); / 使按钮凸出显示Cancle.setBorder(BorderFactory.createRaisedBevelBorder(); 使按钮凸出显示Clear.setBorder(BorderFactory.createRaisedBevelBorder(); / 使按钮凸出显示/*设置背景图片picture

55、.setBounds(0,0,300,300);p.add(picture);p.setOpaque(false);/使内容窗格透明/把背景图片添加到分层窗格的最底层作为背景getLayeredPane().add(picture,new Integer(Integer.MIN_VALUE);/*设置图标BufferedImage icon = null;tryicon = ImageIO.read( new File( photos/12.jpg);this.setIconImage(icon);catch( Exception e ) signal.setFont(new Font(华文行

56、楷”,Font.PLAIN,18 );signal.setForeground(Color.red);signal.setBounds(55,20,200,20);p.add(signal);editer.setLineWrap(true);/ 自动换行editer.setFont(new Font(华文行楷”,Font.PLAIN,16 );jsp.setBounds(40,60,210,150);p.add(jsp);Ok.setBounds(60,230,60,20);p.add(Ok);Cancle.setBounds(120,230,60,20);p.add(Cancle);Clea

57、r.setBounds(180,230,60,20);p.add(Clear);setTitle(添加备忘录);setBounds(300,200,300,300);setResizable(false); 窗 口 不能被拖动 setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);class addEvent implements ActionListenerOverridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method st

58、ubObject source = e.getSource();if(source = Ok)if(editer.getText().equals() JOptionPane.showMessageDialog(null,请输入你要添力口的内容!); elseLinkData ld_connection = new LinkData();String insert_sql = insert into mymemo values。 +date+,+(number+1)+,+editer.getTextO+);try ld_connection.modifyMessage(insert_sql);

59、 catch (SQLException e1) e1.printStackTrace();JOptionPane.showMessageDialog(null,备忘录已添加成功!);ld_connection.close(); dispose();else if(source = Cancle)int n;if(editer.getText().equals()n = JOptionPane.showCon巾rmDialog(null,你还未输入任何信息,确定 取消添加?,询问,JOptionPane.YES_NO_OPTION);if(n = JOptionPane.YES_OPTION)

60、dispose。;/退出添加界面elsen = JOptionPane.showConfirmDialog(null,确定取消添加这条内容? 询问,JOptionPane.YES_NO_OPTION);if(n = JOptionPane.YES_OPTION) dispose。;/退出添加界面else if(source = Clear)editer.setText(null); 清空文本区else/ChangeTest.javaimport java.awt.*;import java.awt.event.*;import java.awt.image.BufferedImage;impo

温馨提示

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

评论

0/150

提交评论