中国矿业大学java实验报告.doc_第1页
中国矿业大学java实验报告.doc_第2页
中国矿业大学java实验报告.doc_第3页
中国矿业大学java实验报告.doc_第4页
中国矿业大学java实验报告.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

中国矿业大学计算机学院 2012 级本科生课程报告课程名称 网络编程 报告时间 2015年1月8日 学生姓名 陈开武 学 号 08123634 专 业 信息安全 任课教师 目 录序言2实验三 面向对象程序设计33.1求最小公因数33.2复数类Complex的设计43.3编写一个包含圆类的程序53.4编写含有一个圆类、圆柱类和主类的程序63.5编写一个学生类83.6了解抽象类程序103.7了解接口程序11实验七 图形用户界面应用程序设计12 7.1PressMe类实现事件接口127.2mouseUp实现笑脸哭脸轮换137.3“自助早餐”的图形界面事件处理程序157.4加减乘除运算器18实验九 异常处理,线程控制21 9.1自定义异常类21 9.2实现两个定时线程229.3实现三个定时线程239.4Applet用一个线程控制标签移动25 9.5图形界面两线程控制两个标签移动26实验总结29任课教师评语31序 言网络编程是计算机科学与技术专业、电子科学与技术专业、信息安全专业和网络工程专业的专业实践课程,是配合专业选修课程Java语言与网络编程和专业平台课程数据库原理等课程的实践课程,课程内容以Java语言与网络编程课程的实验内容为主,辅助配合数据库原理课程的实践需求。1. 课程的目的与任务通过本课程的独立程序设计过程和实践,巩固Java语言与网络编程、数据库原理课堂所学的知识,掌握实际操作技术,提高程序设计能力和动手能力。2. 课程的基本要求1) 掌握Java开发工具的安装、配置和使用;2) 掌握Java语言基本语法和面向对象的程序设计方法;3) 掌握Java系统包的使用;4) 掌握图形用户界面、Applet的程序设计技术;5) 掌握的异常处理、线程控制的程序设计技术;6) 了解和基本掌握Java网络编程技术;7) 了解和基本掌握JDBC。2. 课程内容实验一 开发工具和语言基础.实验二 流程控制程序设计.实验三 面向对象程序设计实验四 语言基础与面向对象实验五 Java类库实验六 图形用户界面程序设计基础实验七 图形用户界面应用程序设计实验八 Applet程序设计实验九 异常处理、线程控制实验十 I/O编程实验十一 网络通讯编程实验十二 JDBC程序设计注:本实验报告只涉及三,七,九实验内容实验三 面向对象程序设计一、实验目的和要求掌握类、对象、方法、继承、接口的编程技术;要求至少完成实验内容题的70%。二、实验内容 1编一程序,求两个正整数m、n的最大公约数。 要求程序中有两个方法,分别使用循环和递归求最大公约数,最后在主方法中分别调用这两个方法求解56与91的最大公约数。 提示:用辗转相除法。方法:(1) 求m除n的余数r; (2) 如果r为0,则n为最大公约数,结束。否则转(3); (3) 用n置m,用r置n ,回到(1)。源程序代码:import java.io.*;import java.util.*;public class gys private static int m; private static int n;gys(int a,int b)m=a;n=b;public int digui(int m,int n) if(n=0)return m;else return digui(n,m%n);public int xh(int m,int n) while(n!=0)int temp=m;m=n;n=temp%n;return m;public void getnum()throws IOExceptiontrySystem.out.print(请输入两个数字:);Scanner in=new Scanner(System.in);m=in.nextInt();n=in.nextInt();catch(Exception e) System.out.print(输入有错!);System.exit(-1);public static void main(String args) throws IOExceptiongys h=new gys(56,91);System.out.println(要求解的两个数分别是:+m+ +n);System.out.println(递归法求得:+h.digui(m,n);System.out.println(循环法求得:+h.xh(m,n);h.getnum();System.out.println(要求解的两个数分别是:+m+ +n);System.out.println(递归法求得:+h.digui(m,n);System.out.println(循环法求得:+h.xh(m,n);结果演示:2编写一个完整的Java Application程序,其中设计一个复数类Complex,利用它验证两个复数 1+2i 和3+4i 相加产生一个新的复数 4+6i 。复数类Complex的设计必须满足如下要求:1)Complex 的属性有:realPart:int型,代表复数的实数部分;maginPart:int型,代表复数的虚数部分。2)Complex 的方法有:Complex():构造方法,将复数的实部和虚部都置0;Complex(int r , int i ):构造方法,形参 r 为实部的初值,i为虚部的初值。3)Complex complexAdd(Complex a):将当前复数对象与形参复数对象相加,最后的结果仍是一个复数对象,返回给此方法的调用者。4)String toString(): 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。源程序代码:class Complexprivate double RealPart, ImaginPart;public Complex(double r, double i) this.RealPart = r; this.ImaginPart = i; public Complex() this.RealPart = 0; this.ImaginPart = 0; public Complex complexAdd(Complex a) Complex temp = new Complex(); temp.RealPart=this.RealPart+a.RealPart; temp.ImaginPart=this.ImaginPart+a.ImaginPart; return temp; public String toString() return (+RealPart+ImaginPart+i); public static void main(String args) Complex c1=new Complex(1,2); Complex c2=new Complex(3,4); Complex c3=new Complex(); c3 = plexAdd(c2); System.out.println(c1.toString()+c2.toString()+= +c3.toString(); 结果演示:3编写一个包含圆类的程序,并为圆类设计几个构造方法和一般方法,在主方法中创建一个圆类对象并输出它的周长和面积。要求: 属性有3个:x,y,r,分别放置圆心坐标和半径; 构造方法有2个。一个是无参的,用于设置3个属性的值都为0;另一个有参的,用于设置3个属性的值,以确定一个具体的圆。 计算周长的方法:double zc();计算面积的方法:double mj()。源程序代码:public class Circle double x,y,r; Circle() x=y=r=0; Circle(int x1, int y1, int r1)this.x=x1;this.y=y1;this.r=r1; double zc() return Math.PI*2*r; double mj() return Math.PI*r*r; void print() System.out.println(圆心位置:(+x+, +y+ ); System.out.println(圆的半径:+r); public static void main(String args) Circle c1=new Circle(4, 4, 4); c1.print(); System.out.println(周长: + c1.zc() ); System.out.println(面积: + c1.mj() ); 结果演示:4编写一个程序,它含有一个圆类、圆柱类和主类。要求: 1)圆类参考上一题中的圆类; 2)圆柱类:继承圆类,并加入一个属性h(高); 构造方法(给4个属性赋值); 计算面积的方法(double mj(); 计算体积的方法(double tj()。 注意,要充分利用父类的方法。3)主类:在主方法中创建圆和圆柱类的对象,然后计算并输出它们的面积及圆柱的体积。源程序代码:public class Mainmath public static void main(String args) Circle circle=new Circle(5,6,7);Cylinder cylinder=new Cylinder(6,7,8,9);System.out.println(圆的周长为:+circle.zc();System.out.println(圆的面积为:+circle.mj();System.out.println(圆柱的面积为:+cylinder.mj();System.out.println(圆柱的体积为:+cylinder.tj(); class Circleprotected double x,y,r;public Circle(int x1,int y1,int r1) this.x =x1;this.y =y1;this.r =r1;public double zc()return Math.PI*2*r;public double mj()return Math.PI*r*r;class Cylinder extends Circle private double hight;public Cylinder(int x,int y,int r,int hight)super(x,y,r);this.hight=hight;public double mj()return 2*super.mj()+hight*super.zc();public double tj()return hight*super.mj();结果演示:5编写一个含有5个类的程序: 类Person: 属性:编号、姓名、性别; 构造方法:确定编号和姓名; 一般方法:修改编号、姓名,获取编号、姓名。 类Teacher:继承类Person并增加: 属性:系别; 构造方法:调用父类的构造方法; 一般方法:修改、获取系别。 类Student:继承类Person并增加: 属性:班级; 构造方法:调用父类的构造方法; 一般方法:修改、获取班级属性值。 类Classes: 属性:班级名称,学生名单(Student类对象的数组); 构造方法:确定班级名称; 一般方法:建立学生名单,输出学生名单。 类Main:主类。主方法中创建一个班级,然后建立该班级的学生名单,最后 输出学生名单。 源程序代码:public class Mainclass public static void main(String args) Classes c1=new Classes(信安12-3);c1.Studentlist();class Person String num, name, sex;public Person(String n,String m,String s)this.num=n;=m;this.sex=s;public void Set(String n,String m)this.num=n;=m;public String Getnum()return num;public String Getname()return name; class Teacher extends Person String depatrment;public Teacher(String n,String m,String s)super(n,m,s);public void Setdepatrment(String d)this.depatrment=d;public String Getdepatrment()return depatrment; class Student extends Person String classroom;public Student(String n, String m,String s,String c) super(n, m,s);this.classroom = c;public void SetClassroom(String c) this.classroom = c; public String getClassroom() return classroom; public String Getsex() return sex; class Classes private String classname;private Student students;public Classes(String c)this.classname=c;public void SetClassname(String c) this.classname = c;public String GetClassname() return classname;public void Studentlist()System.out.println(学生名单:);students=new Student4;students0=new Student(08123634,陈开武,男,信安12-3);students1=new Student(08123635,陈秋羽,男,信安12-3);students2=new Student(08123636,刘师师,女,信安12-3);students3=new Student(08123637,党涛涛,男,信安12-3);for(int i=0;i6) t.setText(求您不要再点了); 结果演示:2编写一个“变脸”程序:将实验六第5题中的两个脸合到一个程序中,利用事件处理程序mouseUp()实现程序运行后出现一张笑脸,鼠标点击一次则变成哭脸,再点击一次又变成笑脸,依次轮换。源程序代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ChangeFace extends Panel public static int i=0;public static boolean bool=true;public static void main(String args)JFrame f=new JFrame(变脸);ChangeFace mb=new ChangeFace();f.add(mb);f.setBounds(200, 200, 200, 220); f.setVisible(true);public void paint(Graphics g)g.setColor(Color.blue); if(bool) g.drawOval(50,50,80,100); g.drawArc(70,80,14,7,0,180); g.drawArc(110,80,14,7,0,180); g.drawArc(70,110,40,20,180,180); g.drawString(笑!,30,55); else g.drawOval(50,50,80,100); g.drawArc(70,80,14,7,180,180); g.drawArc(110,80,14,7,180,180); g.drawArc(70,110,40,20,0,180); g.drawString(哭!,30,55); public boolean mouseUp(Event event,int x, int y)i+;if(i%2=1)bool=false;repaint();return true;else bool=true; repaint();return true; 结果演示: 3设计一个“自助早餐”的图形界面事件处理程序,运行后界面如下图左;选择早点后界面如下图右;点击“退出”则结束程序运行。(提示:需要编写列表的itemStateChanged()事件处理方法)源程序代码:import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.text.DecimalFormat;public class Breakfast extends JFrame TextArea t1;List list=new List(10,true);public Breakfast()Panel p=new Panel();Label la1,la2;la1=new Label(请选择早点:);la1.setBounds(10,5,70,30);la2=new Label(您选择了:);la2.setBounds(120, 5, 60, 30);p.add(la1);p.add(la2);t1=new TextArea();list.setBounds(4,35,80,170);p.add(list);list.add( 名称 单价);list.add(*);list.add( 馒头 0.20元);list.add( 花卷 0.30元);list.add( 面包 0.50元);list.add( 蛋糕 0.20元);list.add( 豆浆 0.80元);list.add( 牛奶 1.00元);t1=new TextArea();p.add(t1);t1.setBounds(90,35,140,140);Button b1=new Button(退出);b1.setBounds(120, 177, 70, 30);p.add(b1);p.setLayout(null);item n=new item();myListener m=new myListener();b1.addActionListener(m);list.addItemListener(n);this.add(p);private class myListener implements ActionListenerpublic void actionPerformed(ActionEvent e) System.exit(0); private class item implements ItemListenerpublic void itemStateChanged(ItemEvent e)int a;String a1;float sum=0;DecimalFormat df=new DecimalFormat(0.00);a1=list.getSelectedItems();a=list.getSelectedIndexes();sum=0;t1.setText( );for(int i=0;ia1.length;i+)if(a1i.equals( 名称 单价)|a1i.equals(*) t1.append();else t1.append(a1i+n+ );for(int i=0;i60)IOException a=new IOException(随机数大于60);throw a;else return i;结果演示:2 编写一个多线程程序,在其中实现两个定时线程,一个线程每隔1秒显示一次秒数,另一个每隔3秒显示一次字母(a,b,)。源程序代码:public class Timer extends Threadprivate int a;private int b;private String name;public Timer (String m,int a,int b)=m;this.a=a;this.b=b;public void run()if(a=1)tryfor(int i=0;i=b;i+ ) System.out.println(name+: + i); Thread.sleep(1000); catch(Exception e) System.out.println(e.toString(); if(a=3)tryfor(char c=97;(c-97)=b;c+)System.out.println(name+:+c);Thread.sleep(3000);catch(Exception e) System.out.println(e.toString(); public static void main(String args) Thread timer1=new Timer(first,1,10); Thread timer2=new Timer(second,3,5); timer1.start(); timer2.start(); 结果演示:3编写一程序,在其中定义一个线程类ABC,它能够实现下面三种功能之一:1)每隔1秒显示一次秒数;2)每隔2秒显示一个字母(A,B,);3)每隔3秒显示一个字母(H,I,)。构造方法有二个整型参数:m,n,m确定时间间隔(也是由它确定要实现的功能),n确定输出的字符的个数。在主方法中建立三个线程对象:A1、A2、A3,分别设置它们的优先级为:4,6,8,最后启动这三个线程,输出110、AE、HK,请观察运行结果。源程序代码:public class ABC extends Threadprivate int m;private int n;public ABC(int m,int n)this.m=m;this.n=n;public void run()if(m=1) tryfor(int i=1;i=n;i+ ) System.out.println(i); Thread.sleep(1000); catch(Exception e) System.out.println(e.toString(); if(m=2)tryfor(char a=65;a=n;a+)System.out.println(a);Thread.sleep(2000);catch(Exception e) System.out.println(e.toString(); if(m=3)tryfor(char h=72;h=n;h+)System.out.println(h);Thread.sleep(3000);catch(Exception e) System.out.println(e.toString(); public static void main(String args) Thread A1=new ABC(1,10); Thread A2=new ABC(2,69); Thread A3=new ABC(3,75);A1.setPriority(4);A2.setPriority(6);A3.setPriority(8);A1.start(); A2.start(); A3.start();结果演示:4编写一个Applet(或JApplet),Applet窗体宽300,高100,布局管理器为null,窗体上有一个标签和一个按钮,标签的位置是(10,20),按钮的位置是(100,60),它们的宽度和高度都是80和20。 再编写一个线程,该线程可以让标签向右移动10次,每次移动10个单位,间隔1秒,通过按钮的动作事件

温馨提示

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

评论

0/150

提交评论