ava语言程序设计实验指导书.doc_第1页
ava语言程序设计实验指导书.doc_第2页
ava语言程序设计实验指导书.doc_第3页
ava语言程序设计实验指导书.doc_第4页
ava语言程序设计实验指导书.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

实验一:熟悉java开发环境一、实验目的1.了解Java开发运行环境,同时学会设置JDK6.0路径;2.学习在DOS环境下编译和运行Application程序。三、实验内容1.先安装JDK6.0,安装好后,进行JDK6.0路径设置(验证性实验)。2.在DOS环境下编译和运行程序HelloJava.java,观察运行成果(验证性实验)。四、实验的软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统:Windows XP或Windows 7软件:JDK 6.0;DOS环境五、知识准备前期要求掌握的知识: 了解如何配置JDK编译环境。实验相关理论或原理: JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。本实验指导书使用最新的jdk1.6.0_02。六、验证性实验1.JDK6.0的安装和JDK6.0路径设置(1)从网上下载JDK6.0,如:(2)双击后进行JDK6.0的安装,如图1.1所示:图1.1进入安装界面(3)点击接受后,可以自定义安装,这里使用安装程序的默认路径:C:Program FilesJavajdk1.6.0_02;如图1.2所示:图1.2设置安装路径,开始自定义安装(4)点击下一步,就可以安装了如图1.3所示:图1.3正在安装JDK6.0(5)等到安装完成会弹出“安装完成”框,如图1.4所示,则完成JDK6.0的安装:图1.4 JDK6.0安装完成(6)安装好JDK6.0后,可以打开安装的目录如图1.5所示:图1.6 JDK安装好后生成的文件如果想在系统的任意目录下编译和运行编写好的Java程序,需要先设置环境变量,请按以下步骤配置(记着JDK的默认安装路径C:Program FilesJavajdk1.6.0_02;)。(7)鼠标右键单击“我的电脑”,选择“属性”,在弹出对话框中选择“高级”下的环境变量如图1.7所示:图1.7 Windows系统特性界面(8)在“系统变量”中选择Path,单击“编辑”按钮(如图1.8所示),在弹出的“变量值”文本框中添加“;C:Program FilesJavajdk1.6.0_02bin”,单击确定按钮(如图1.9所示)。 图1.8Windows系统变量对话框图1.9编辑系统变量Path(9)在“系统变量”中单击“新建”按钮(如图1.10所示),在弹出对话框中的“变量名”后输入java_home,“变量值”后输入“C:Program FilesJavajdk1.6.0_02bin”,单击“确定”按钮(如图1.11所示)。图1.10选择“新建”系统变量图1.11 新建系统变量java_home(10)在“环境变量”下单击“新建”按钮,在弹出对话框中的“变量名”后输入classpath,在“变量值”后输入“C:Program FilesJavajdk1.6.0_02bintools.jar; C:Program FilesJavajdk1.6.0_02jrelibrt.jar;.;”,单击“确定”按钮(如图1.12所示结果)。图1.12 新建系统变量classpath(11)至此环境变量设置完毕,用户可以通过在DOS环境下直接键入javac命令按回车来检查环境变量设置是否成功,如果设置成功则可以看到如图1.12所示结果。图1.12 javac命令的相关使用语法在以后需要进入DOS命令直接编译和运行Java程序时,只需进入Java程序所在的存放目录,通过javac和Java命令编译和执行相应程序。2. 在DOS环境下编译运行ApplicationHelloJava.java(1)实验要求在试验1所安装的JDK6.0和设置的JDK路径的基础上,使用任意文本编辑器编写程序HelloJava.java(代码见参考代码),编写好后,将文件保存成以HelloJava.java为文件名的文件。使用DOS命令进入HelloJava.java文件所放的目录(如图1.13所示,如:C:Example),使用javac命令编译该程序,通过编译后再该文件夹中会生成一个名为HelloJava.class的class文件(如图1.14所示),该class文件包含程序的字节码,使用Java命令执行该class文件,可在控制台下看到执行的结果(如图1.16所示)。图1.13 HelloJava.java文件的目录在DOS环境下使用【cd 文件名】格式进入下一级目录,然后键入javac HelloJava.java编译程序。(可通过cd.返回上一级目录)图1.14 编译程序HelloJava.java这样打开Example文件,将发现系统自动生成了HelloJava.class文件,如图1.15所示:图1.15 生成了HelloJava.class文件然后继续输入java HelloJava命令,按回车后可以发现输出“Hello Java!”,这也就是程序运行的结果(如图1.16所示)。图1.16 一个Application 输出Hello Java(2)源程序代码参考public class HelloJava /输出Hello Java! /主程序入口public static void main(String args) System.out.println(Hello Java!);实验二:对象和类一、实验名称和性质所属课程面向对象程序设计实验名称对象和类实验学时2实验性质验证 综合设计必做/选做必做 选做二、实验目的1理解对象和类,用类建立对象模型;2学会如何定义类和创建类的对象;3. 在用构造方法创建对象时理解构造方法的作用;4. 学会使用关键字this访问对象。三、实验内容1.编写日期类MyDate,定义日期所用变量并进行初始化,定义修改日期的方法changeDate() 用布尔变量flag来实现程序的结束与否,用displayDate() 输出日期,用方法showTips() 制出菜单,写出main()方法演示程序功能(验证性实验)。2. 编写一个圆类Circle,其中有圆周率,半径和圆对象个数,其中圆周率和圆对象个数为static成员,此外,Circle中还有两个static方法分别是设置圆周率和显示当前圆对象个数的,其余都是实例成员(设计性实验)。3.编写一个复数类,包含实部和虚部属性,还有复数相加、相减以及复数的求模、输出复数字符串“a+bi” (设计性实验)。四、实验的软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统: Windows XP或Windows 7软件:JDK 6.0;DOS环境五、知识准备前期要求掌握的知识:了解Java中类的创建,对象的创建和使用。实验相关理论或原理:(1) 在Java语言里,对象是一组描述对象的属性和操作方法的集合,其中属性表明对象的状态,方法表明对象的行为。类是对象的定义。一个对象具有哪些属性和方法,由类来决定。从编程角度看,类是一种复合数据类型,它封装了一组变量和方法(函数)。(2)对象与类是不同但是又紧密相联的概念。类是对象的定义,对象由类来生成。类与对象的关系好比铸造车间里模具与产品的关系。模具只有一个,但是用这个模具可以浇铸出很多成型的产品出来,模具的形状决定了浇铸出来的产品的外形。在Java语言里用new关键字来生成对象,通常的格式为: 类名 对象名=new 类名(参数);(3)静态变量:类加载时初始化,全类公有,类名.访问;成员变量:创建对象过程中初始化,对象公有,对象.访问。六、验证性实验验证性实验11实验要求创建、编译和运行程序MyDate.java,运行结果如图7.1所示:图7.1 日期类运行结果2. 程序参考代码/MyDate.javaimport java.util.InputMismatchException;import java.util.Scanner;public class MyDate int year;int month;int day;int num_order;/ 接受来自命令行的输入,int类型,只要负责showTips()的命令代号和日期的修改boolean flag = true;/ 控制程序的退出,当flag = false时,退出public MyDate()year = 2012;month = 3;day = 14; / 构造函数public MyDate(int year, int month, int day) this.year = year; this.month = month; this.day = day;/ showTips()用于提示用户相关操作代号 public void showTips() System.out.println(1修改年份); System.out.println(2修改月份); System.out.println(3修改日期); System.out.println(4修改全部); System.out.println(5退出修改); public void changeDate() /修改日期的函数 Scanner _order = new Scanner(System.in); System.out.print(请输入您的命令:); /下面的数字异常没有捕获 num_order = _order.nextInt(); if (num_order = 1) System.out.println(请输入新的年份:); year = _order.nextInt(); System.out.println(); else if (num_order = 2) System.out.println(请输入新的月份:); month = _order.nextInt(); System.out.println(); else if (num_order = 3) System.out.println(请输入新的日份:); day = _order.nextInt(); System.out.println(); else if (num_order = 4) System.out.println(请输入新的年份:); year = _order.nextInt(); System.out.println(请输入新的月份:); month = _order.nextInt(); System.out.println(请输入新的日份:); day = _order.nextInt(); System.out.println(); else if (num_order = 5) flag = false; System.out.println(程序结束); public void displayDate() /输出现在的日期函数 if (month = 0 & month = 1 & day = 31) System.out.println(目前的日期为: + year + 年 + month + 月 + day + 日); else System.out.print(您的输入与设计情况不相符,请确认后重新来过!); showTips(); changeDate(); public static void main(String args) MyDate mydate = new MyDate(); while (mydate.flag) try mydate.displayDate(); catch (InputMismatchException ime) System.out.print(您的输入与要求不一致,请确定后重新来过!); mydate.changeDate(); 七、设计性实验【实验一】1实验要求编写一个圆类Circle,其中有圆周率,半径和圆对象个数,其中圆周率和圆对象个数为static成员,此外,Circle中还有两个static方法分别是设置圆周率和显示当前圆对象个数的,其余都是实例成员。程序运行结果如图7.2所示:图7.3 程序运行结果2. 程序参考代码/StaticTest.javaclass Circle static double pi = 3.14; static int objectNo = 0; int radius; Circle(int r) radius=r; objectNo+; Circle( ) radius = 2; objectNo+; double getArea( ) return pi*radius*radius; static void setPI(double p) pi = p; void setRadius(int r) radius = r; static void displayNo( ) System.out.println(当前圆对象个数是: + objectNo); public class StaticTest public static void main( String args ) Circle cir1 = new Circle(5); System.out.println(cir1圆周率是: + cir1.pi); System.out.println(cir1的半径是: + cir1.radius); System.out.println(cir1的面积是: + cir1.getArea(); cir1.displayNo(); cir1.setRadius(10); Circle cir2 = new Circle( ); cir2.setPI(3.1415); System.out.println(cir1圆周率是: + cir1.pi); System.out.println(cir1的半径是: + cir1.radius); System.out.println(cir2的半径是: + cir2.radius); System.out.println(cir2的面积是: + cir2.getArea(); cir2.displayNo(); 实验三:图形用户界面程序设计入门一、实验名称和性质所属课程面向对象程序设计实验名称图形用户界面程序设计入门实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1.理解和掌握图形上下文和图形对象的基本概念; 2.了解Color类的构造方法和常用的方法;3.熟练掌握和运用常用的绘图方法;4.了解和运用Math类来解决实际问题。三、实验内容1国际象棋棋盘由8行*8列的深浅相间的格子构成。编写程序绘制基本国际象棋棋盘(验证性实验)。2. 绘制Sin(x)和Cos(x)曲线,编写程序Trigonmetric.java,实现Java中特殊图形的输出(验证性实验)。四、实验的软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统:Windows XP或Windows 7软件: MyEclipse五、知识准备前期要求掌握的知识:Java的Math类和Color类。实验相关理论或原理: ColorSpace此抽象类用做一个颜色空间标记,标识 Color 对象的特定颜色空间,或者通过 ColorModel 对象标识 Image、BufferedImage 或 GraphicsDevice 的特定颜色空间。ICC_ColorSpaceICC_ColorSpace 类是抽象 ColorSpace 类的实现。ICC_Profile与设备无关和设备相关颜色空间的颜色配置文件数据表示形式,该表示形式基于国际色彩联盟规范 ICC.1:2001-12,颜色配置文件的文件格式。ICC_ProfileGrayICC_Profile 类的子类,表示满足以下标准的配置文件:配置文件的颜色空间类型是 TYPE_GRAY,并且配置文件包括 grayTRCTag 和 mediaWhitePointTag 标记。ICC_ProfileRGBICC_ProfileRGB 类是 ICC_Profile 类的子类,它表示满足以下标准的配置文件: 配置文件的颜色空间类型是 RGB。验证性实验11 实验要求编写程序Chessboard.java程序,输出国际象棋棋盘如图12.1所示:12.1JApplet小程序的运行结果2. 实验参考代码 /Chessboard.javaimport java.awt.*;import javax.swing.*;public class Chessboard extends JApplet int baseXPosition,baseYPosition; int currentXPosition,currentYPosition; public void init() baseXPosition = 40;/棋盘的开始x位置 baseYPosition = 40;/棋盘的开始y位置 setBackground(Color.black);/设置背景颜色黑色 public void paint(Graphics g)/绘制棋盘 currentXPosition=baseXPosition;/currentXPosition当前的x位置; currentYPosition=baseYPosition;/currentYPosition当前的y位置; for (int row = 0; row 8; row+) currentXPosition=baseXPosition+row*40; for (int column = 0;column 8; column+) if(column+row)%2=0) g.setColor(Color.blue);/设置棋盘格子的颜色 else g.setColor(Color.GRAY); /设置棋盘格子的颜色 currentYPosition=baseXPosition+column*40; g.fillRect(currentXPosition, currentYPosition, 40, 40); /在当前位置绘制棋盘的格子,每个格子的大小是4040像素; /end for /end paint;验证性实验21. 实验要求编译、运行程序Trigonmetric.java程序,分析通过Math类实现特殊图形的绘制。结果如图12.2所示:12.2三角函数图形结果2. 实验参考代码/Trigonometric.javaimport java.awt.*;import javax.swing.*;public class Trigonmetric extends JFrame public Trigonmetric() super();setTitle(三角函数);setSize(400,300);setVisible(true);public void paint(Graphics g)Dimension d=getSize();int y1,y2;g.setColor(Color.black);int h = d.height / 4; g.drawLine(0,h*2,d.width,h*2); g.drawLine(h,0,h,d.height); for (int x = 10 ; x d.width; x+) y1 = h+(int)(1.0 + Math.sin(x - 10)*0.05)*h); /求sin曲线y轴坐标y2=h+(int)(1.0+Math.cos(x-10)*0.05)*h);/求cos曲线y轴坐标g.setColor(Color.red);g.drawOval(x,y1,5,5);g.setColor(Color.blue);g.drawOval(x,y2,5,5); public static void main(String args)Trigonmetric tr=new Trigonmetric();tr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);实验四:图形一、实验名称和性质所属课程面向对象程序设计实验名称图形实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1.理解Java的坐标系; 2.使用Graphics类中的方法画图;3.理解如何以及何时创建Graphics对象;三、实验内容1.学习MessagePanel类,StillClock类, 编写程序DisplayClock.java文件,实现时钟的输出(验证性实验)。四、实验的软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统:Windows XP或Windows 7软件: MyEclipse五、知识准备前期要求掌握的知识:Java程序的运行过程和Java类的使用方法。实验相关理论或原理: MessagePanel类:允许用户设置信息的位置、居中放置信息、用指定间距移动信息。StillClock类:可以通过这个类模拟一个时钟,使用MessagePanel类在面板上显示小时、分钟和秒。六、验证性实验1.实验要求编写程序DisplayClock.java程序,输出时钟如图13.1所示:13.1时钟程序的运行结果2. 实验参考代码 /DisplayClock.javaimport java.awt.*;import javax.swing.*;import java.util.*;import java.awt.Color;import java.awt.FontMetrics;import java.awt.Dimension;import java.awt.Graphics;import javax.swing.JPanel;public class DisplayClock extends JFrame public DisplayClock() / Create an analog clock for the current time StillClock clock = new StillClock(); / Display hour, minute, and hour in the message panel MessagePanel messagePanel = new MessagePanel(clock.getHour() + : + clock.getMinute() + : + clock.getSecond(); messagePanel.setCentered(true); messagePanel.setForeground(Color.blue); messagePanel.setFont(new Font(Courie, Font.BOLD, 16); / Add the clock and message panel to the frame getContentPane().add(clock); getContentPane().add(messagePanel, BorderLayout.SOUTH); public static void main(String args) DisplayClock frame = new DisplayClock(); frame.setTitle(DisplayClock); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 350); frame.setVisible(true); /StillClock 类class StillClock extends JPanel private int hour; private int minute; private int second; /* Construct a default clock with the current time*/ public StillClock() setCurrentTime(); /* Construct a clock with specified hour, minute, and second */ public StillClock(int hour, int minute, int second) this.hour = hour; this.minute = minute; this.second = second; /* Return hour */ public int getHour() return hour; /* Set a new hour */ public void setHour(int hour) this.hour = hour; repaint(); /* Return minute */ public int getMinute() return minute; /* Set a new minute */ public void setMinute(int minute) this.minute = minute; repaint(); /* Return second */ public int getSecond() return second; /* Set a new second */ public void setSecond(int second) this.second = second; repaint(); /* Draw the clock */ protected void paintComponent(Graphics g) super.paintComponent(g); / Initialize clock parameters int clockRadius = (int)(Math.min(getWidth(), getHeight() * 0.8 * 0.5); int xCenter = getWidth() / 2; int yCenter = getHeight() / 2; / Draw circle g.setColor(Color.black); g.drawOval(xCenter - clockRadius, yCenter - clockRadius, 2 * clockRadius, 2 * clockRadius); g.drawString(12, xCenter - 5, yCenter - clockRadius + 12); g.drawString(9, xCenter - clockRadius + 3, yCenter + 5); g.drawString(3, xCenter + clockRadius - 10, yCenter + 3); g.drawString(6, xCenter - 3, yCenter + clockRadius - 3); / Draw second hand int sLength = (int)(clockRadius * 0.8); int xSecond = (int)(xCenter + sLength * Math.sin(second * (2 * Math.PI / 60); int ySecond = (int)(yCenter - sLength * Math.cos(second * (2 * Math.PI / 60); g.setColor(Color.red); g.drawLine(xCenter, yCenter, xSecond, ySecond); / Draw minute hand int mLength = (int)(clockRadius * 0.65); int xMinute = (int)(xCenter + mLength * Math.sin(minute * (2 * Math.PI / 60); int yMinute = (int)(yCenter - mLength * Math.cos(minute * (2 * Math.PI / 60); g.setColor(Color.blue); g.drawLine(xCenter, yCenter, xMinute, yMinute); / Draw hour hand int hLength = (int)(clockRadius * 0.5); int xHour = (int)(xCenter + hLength * Math.sin(hour % 12 + minute / 60.0) * (2 * Math.PI / 12); int yHour = (int)(yCenter - hLength * Math.cos(hour % 12 + minute / 60.0) * (2 * Math.PI / 12); g.setColor(Color.green); g.drawLine(xCenter, yCenter, xHour, yHour); public void setCurrentTime() / Construct a calendar for the current date and time Calendar calendar = new GregorianCalendar(); / Set current hour, minute and second this.hour = calendar.get(Calendar.HOUR_OF_DAY); this.minute = calendar.get(Calendar.MINUTE); this.second = calendar.get(Calendar.SECOND); public Dimension getPreferredSize() return new Dimension(200, 200); /MessagePanel类class MessagePanel extends JPanel /* The message to be displayed */ private String message = Welcome to Java; /* The x coordinate where the message is displayed */ private int xCoordinate = 20; /* The y coordinate where the message is displayed */ private int yCoordinate = 20; /* Indicate whether the message is displayed in the center */ private boolean centered; /* The interval for moving the message horizontally and vertically */ private int interval = 10; /* Construct with default properties */ public MessagePanel() /* Construct a message panel with a specified message */ public MessagePanel(String message) this.message = message; /* Return message */ public String getMessage() return message; /* Set a new message */ public void setMessage(String message) this.message = message; repaint(); /* Return xCoordinator */ public int getXCoordinate() return xCoordinate; /* Set a new xCoordinator */ public void setXCoordinate(int x) this.xCoordinate = x; repaint(); /* Return yCoordinator */ public int getYCoordinate() return yCoordinate; /* Set a new yCoordinator */ public void setYCoordinate(int y) this.yCoordinate = y; repaint(); /* Return centered */ public boolean isCentered() return centered; /* Set a new centered */ public void setCentered(boolean centered) this.centered = centered; repaint(); /* Return interval */ public int getInterval() return interval; /* Set a new interval */ public void setInterval(int interval) erval = interval; repaint(); /* Paint the message */ protected void paintComponent(Graphics g) super.paintComponent(g); if (centered) / Get font metrics for the current font FontMetrics fm = g.getFontMetrics(); / Find the center location to display int stringWidth = fm.stringWidth(message); int stringAscent = fm.getAscent(); / Get the position of the leftmost character in the baseline xCoordinate = getWidth() / 2 - stringWidth / 2; yCoordinate = getHeight() / 2 + stringAscent / 2; g.drawString(message, xCoordinate, yCoordinate); /

温馨提示

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

评论

0/150

提交评论