收藏 分享(赏)

《Java程序设计》实验指导书——马程.doc

上传人:dzzj200808 文档编号:2770198 上传时间:2018-09-27 格式:DOC 页数:34 大小:1.59MB
下载 相关 举报
《Java程序设计》实验指导书——马程.doc_第1页
第1页 / 共34页
《Java程序设计》实验指导书——马程.doc_第2页
第2页 / 共34页
《Java程序设计》实验指导书——马程.doc_第3页
第3页 / 共34页
《Java程序设计》实验指导书——马程.doc_第4页
第4页 / 共34页
《Java程序设计》实验指导书——马程.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、 Java 程序设计实验指导书计算机科学与技术系2014 年 4 月目 录实验介绍 3实验一 建立 Java 开发环境 5实验二 Java 语言基础.6实验三 Java 面向对象编程基础.9实验四 图形用户界面的设计 14实验五 字符和字节流输入/输出 .20实验六 异常处理 24实验七 网络编程 29实验八 多线程 32实验介绍一、本实验课程的性质、特点和发展现状课程的性质:Java 程序设计是计算机本科相关专业的必修课程,实验课程是整个学习过程中的一个重要的环节。在理论学习的基础上结合上机实验,才能够真正掌握 Java 编程的技巧。课程的特点:Java 程序设计实验是以实践为基础,通过课堂

2、教学及上机实验相结合,加深学生对面向对象程序编程的理解,熟悉并熟练使用一些开发工具,掌握 Java 程序设计的基本知识,为以后的深入学习 Java 程序打下坚实基础。发展现状:实验的教学在计算机专业的教学过程中是非常重要的。Java 程序设计的实验教学也不例外,贯穿了整个教学过程。由于学生编程技能和对知识的掌握程度差别较大,而本大纲所要求的实验为每个学生必须完成的实验,即最低要求。其它上机内容由学生在教师指导下自选,内容可以是习题中编写的程序,也可以是学生解决实际问题中所编写的程序。二、本实验课程的目的、任务和主要内容实验课程是程序设计相关课程的一个十分重要的环节,其主要目的概括为以下几点:1

3、、帮助学生加深对抽象、枯燥的语法结构和语义现象及程序执行过程的理解。2、使学生较为容易理解 Java 程序的运行的整个流程,掌握编程环境的使用方法,包括程序的编辑、编译、调试与测试等技能都能得到严格的训练和提高。3、培养学生的编程能力和阅读、分析程序的能力。属于验证性实验项目中的编程题目,一般要求以上机测验的形式在实验室内当场完成;属于综合性实验项目的编程题目,除了规定的实验时数之外,允许学生增加一些课外时数。本课程使学生熟悉 Java 语言的基本语法特性,了解 C+与 Java 的区别;理解面向对象程序设计的基本原理,包括类、对象、抽象、封装、继承和多态性等关键要素以及其关键语法特性类;掌握

4、如何使用帮助来查找 Java 的开发工具包中的一些类及方法,从而能够提高编程的效率。了解Java 的网络编程的技巧。三、教学方法和手段教学方法:采用理论加实践的方法,实验课是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。教学手段:实验课教学可通过教师演示软件给学生进行示范。然后让学生独立的练习完成作业,最后验收作业。让学生真正的掌握每个知识点。四、考核方式与成绩评定1、考核方式:本课程采用理论考试与实验(上机)操作相结合的方式进行考核。其中,实验考核包括平时上交的作业和期末考试及最后上交的软件项目。2、课程考核的成绩评定:成绩五级制计分,最终成绩的构成为平

5、时成绩占 20%、期末考试成绩占 60%、上交的软件项目成绩占 20%(注:最终成绩的构成比例以有关教学管理制度的规定为依据) 。五、实验学时分配序号 实验项目名称 学时 实验类型1 建立 Java 开发环境 2 基础性2 Java 语言基础 2 基础性3 Java 面向对象编程基础 2 基础性4 图形用户界面的设计 2 基础性5 字符和字节流输入/输出 2 基础性6 异常处理 2 基础性7 网络编程 2 基础性8 多线程 2 基础性六、实验内容安排(附后)七、实验教材与参考书1、基于 JDK6 和 NetBeans 实现,宋波等,清华大学出版社出版社,2011,第 1 版。2、Java 程序

6、设计教程,杨文军,董玉涛,清华大学出版社出版社,2010,第 1 版。3、Java2 参考大全,Herbert Schildt,清华大学出版社出版社,2011,第 1 版。4、Java 编程思想,Bruce Eckel,候捷译,机械工业出版社,2002,第 2 版。实验一 建立 Java 开发环境一、实验目的与要求1、熟悉安装和配置 JDK 开发环境。2、熟悉安装和配置 IDE 开发工具。3、掌握 Java 程序编辑、编译和运行的过程。4、掌握 Java 程序的构成特点。5、总结在调试过程中的错误。二、实验环境1、计算机硬件:需满足显存 526M,cpu 奔四 2.0,内存 1G,硬盘 40G

7、 以上。2、计算机软件:安装 winXP 或 win2003 操作系统,JDK1.6 版本,NeatBean6.9.1 版本,Eclipse3.1。三、实验内容和步骤1、下载、安装并设置 Java SDK 软件包。2、安装 Java IDE 软件,解压到 jdk 安装目录。3、编写一个简单的 Java 程序,运行结果为在屏幕上输出“HELLO WORLD!” 。public class Hellopublic static void main(String args)System.out.println(“HELLO WORLD!“);4、编写一个 Java Applet 程序实现功能为:在屏

8、幕上显示 HELLO WORLD!。四、思考题1、什么是 Java 虚拟机?它的作用是什么?2、如何在不同的环境下设置环境变量?实验二 Java 语言基础一、实验目的与要求1、掌握 Java 基本数据类型、运算符与表达式、数组和字符串的使用方法。2、掌握各种变量的声明方式。3、理解 Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。4、通过以上内容,掌握 Java 语言的编程规则。5、了解 Java 程序文件名和类名的说明方法。二、实验环境1、计算机硬件:需满足显存 526M,cpu 奔四 2.0,内存 1G,硬盘 40G 以上。2、计算机软件:安装 winXP 或

9、win2003 操作系统,JDK1.6 版本,NeatBean6.9.1 版本,Eclipse3.1。三、实验内容和步骤1、编写声明不同数据类型变量的程序文件 Java2_1.java,源代码如下:public class Java2_1public static void main(String args)byte b=0x55;short s=0x55ff;int i=1000000;long l=0xffffL;char c=a;float f=0.23F;double d=0.7E-3;boolean B=true;String S=“这是字符串类数据类型“;System.out.pr

10、intln(“字节型变量 b = “+b); System.out.println(“短整型变量 s = “+s); System.out.println(“整型变量 i = “+i); System.out.println(“长整型变量 l = “+l); System.out.println(“字符型变量 c = “+c);System.out.println(“浮点型变量 f = “+f);System.out.println(“双精度变量 d = “+d);System.out.println(“布尔型变量 B = “+B); System.out.println(“字符串类对象 S

11、= “+S);编译并运行该程序。2、建立 Java2_2.java 文件,通过本程序了解变量的使用范围,源代码如下。public class Java2_2static int i=10;public static void main(String args)int k=10; System.out.println(“i=“+i);System.out.println(“k=“+k);System.out.println(“i=“+i);System.out.println(“k=“+k); /编译时将出错,已出 k 的使用范围编译 Java2_2.java,此时会出现错误提示。因为变量 k

12、在方法块中声明,在方法块之外它是不存在的,所以编译时会出错。修改上面的程序,并成功运行该程序。如程序修改为:public class Java2_2static int i=10;int k=10; public static void main(String args)System.out.println(“i=“+i);System.out.println(“k=“+k);System.out.println(“i=“+i);System.out.println(“k=“+k); 编译 Java2_2.java,此时会出现错误提示。如何修改?3、编程采用冒泡法实现对数组元素由小到大排序,冒

13、泡法排序对相邻的两个元素进行比较,并把小的元素交换到前面。提示:关键代码如下:for(i=0;iintArrayj)t=intArrayi;intArrayi=intArrayj;intArrayj=t;4、运行下面的程序 Java2_3.java,理解 String 类常用方法的使用。public class Java2_3public static void main (String args)String str=“I like java programming“;int i1=str.indexOf(j);String s1=str.substring(i1);String s2=st

14、r.substring(i1,i1+4);int i2=str.lastIndexOf(j);String s3=str.substring(i2+5);System.out.println(“s1=“+s1);System.out.println(“s2=“+s2);System.out.println(“s3=“+s3);5、有一组数,1、2、3、4、5、6、7、8、9、10,要求通过数组移动的方法将其变为6、7、8、9、10、1、2、3、4、5,请编程实现。四、思考题1、定义变量的作用是什么?2、private String lastName;public Employee(String

15、 first,String last)firstName=first;lastName=last;public String getEmployeeName()return firstName;public String getLastName()return lastName; public String toStrings()return firstName+ +lastName; public double earnings()System.out.println(“Employs salary is 0.0“);return 0.0;/定义 Boss 类,为 Employee 的子类c

16、lass Boss extends Employeeprivate double weeklySalary;public Boss(String first,String last,double s)super(first,last);setWeeklySalary(s);public void setWeeklySalary(double s)weeklySalary=(s0?s:0);public double earnings()return weeklySalary;public String toStrings()return “Boss: “+super.toStrings();/

17、定义 PieceWorker 类,为 Employee 的子类class PieceWorker extends Employeeprivate double wagePiece;private int quantity;public PieceWorker(String first,String last,double w,int q)super(first,last);setWage(w);setQuantity(q);public void setWage(double w)wagePiece=(w0?w:0); public void setQuantity(int q)quantit

18、y=(q0?q:0);public double earnings()return quantity*wagePiece;public String toStrings()return “PieceWoeker: “+super.toStrings();/定义 HourlyWorker 类,为 Employee 的子类class HourlyWorker extends Employeeprivate double wage;private double hours;public HourlyWorker(String first,String last ,double w,double h)

19、 super(first,last);setWage(w);setHours(h);public void setWage (double w)wage=(w0?w:0); public void setHours(double h)hours=(h=0public double earnings()return wage*hours;public String toStrings()return “HourlyWorker: “+super.toStrings(); public class TestEmployeepublic static void main(String args )/

20、使用超类声明 refEmployee ref; String out=“;/分别定义各子类 Boss b=new Boss(“Hohn“,“Smith“,800.00);PieceWorker p=new PieceWorker(“Bob“,“Lewis“,2.5,200);HourlyWorker h=new HourlyWorker(“Karen“,“price“,13.75,40);/使用子类分别实例化ref=b;out+=ref.toStrings()+“earned $“+ref.earnings()+“n“+b.toStrings()+“ earned $“+b.earnings(

21、)+“n“;System.out.print(out);ref=p;out+=ref.toStrings()+“earned $“+ref.earnings()+“n“+p.toStrings()+“ earned $“+p.earnings()+“n“;System.out.print(out);ref=h;out+=ref.toStrings()+“earned $“+ref.earnings()+“n“+h.toStrings()+“ earned $“+h.earnings()+“n“;System.out.print(out);2、编程让一个类实现对个自定义的接口。要求定义两个接口收

22、费和调节温度。分别定义公交汽车、出租车、电影院,实现以上定义的两个接口。interface Chargepublic void charging();interface Adaptpublic void controlTemperature();class Bus implements Charge public void charging()System.out.println(“公共汽车:一元/张,不计算公里数“); class Taxis implements Charge, Adapt public void charging()System.out.println(“出租车:1.60

23、 元/公里,起价 3 公里“);public void controlTemperature()System.out.println(“安装了 Hair 空调“);class Cinema implements Charge, Adapt public void charging ()System.out.println(“电影院:门票,十元/张“);public void controlTemperature() System.out.println(“安装了中央空调“);class Examplepublic static void main(String args)Bus busofli

24、ne7=new Bus();Taxi 天宇=new 出租车();电影院 红星=new 电影院();七路.收取费用();天宇.收取费用();红星.收取费用();天宇.controlTemperature();红星.controlTemperature();四、思考题1、如何继承一个类?2、为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?3、同名的不同方法共存的情况称为什么?如何区分这些同名方法?4、内部类 inner class 和外部类的区别?5、抽象类和接口的区别?实验四 图形用户界面的设计一、实验目的与要求1、掌握 GUI 编程中的主要概念:AWT、Swing

25、、窗口、面板、容器布局、布局管理器。2、掌握 GUI 编程。3、掌握事件编程机制。二、实验环境1、计算机硬件:需满足显存 526M,cpu 奔四 2.0,内存 1G,硬盘 40G 以上。2、计算机软件:安装 winXP 或 win2003 操作系统,JDK1.6 版本,NeatBean6.9.1 版本,Eclipse3.1。三、实验内容和步骤1、创建一个黄色面板,通过 add()方法在面板中添加了一个按钮,然后将该面板添加到一个JFrame 的实例中,JFrame 实例的背景被设置为蓝绿色。import java.awt.*;import javax.swing.*;public class

26、FrameWithPanel public static void main(String args) JFrame frame = new JFrame(“Frame with Panel“);Container contentPane = frame.getContentPane();contentPane.setBackground(Color.CYAN);JPanel panel = new JPanel();panel.setBackground(Color.yellow);JButton button = new JButton(“Press me“);panel.add(butt

27、on);contentPane.add(panel, BorderLayout.SOUTH);frame.setSize(300, 200);frame.setVisible(true);2、ActionEvent 事件的监听程序定义在组件类中.在 Frame 中添加一个自定义的命令按钮类(mybutton)对象,让它为注册事件的监听程序。import java.awt.*;import javax.swing.*;import java.awt.event.*;public class ActionEventDemo2 public static void main(String args)

28、 JFrame frame = new JFrame(“ActionEvent Demo2“);/ 创建自定义组件 MyButton 的实例MyButton b = new MyButton(“Close“);frame.getContentPane().add(b, BorderLayout.CENTER);frame.pack();frame.setVisible(true);/ 下面是 MyButton 类的定义:class MyButton extends JButton implements ActionListener public MyButton(String text) su

29、per(text);/ 注册事件的监听程序addActionListener(this);/ 出现 ActionEvent 事件时,将结束程序的运行public void actionPerformed(ActionEvent e) System.exit(0);3、使用 CardLayout 布局管理器管理组件,实现翻扑克牌的效果。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class CardLayoutDemo extends MouseAdapter JPanel p1,p2,p3,p4,p

30、5;JLabel l1,l2,l3,l4,l5;/声明一个 CardLayout 对象CardLayout myCard;JFrame frame;Container contentPane;public static void main (String args) CardLayoutDemo that = new CardLayoutDemo();that.go();public void go() frame = new JFrame (“Card Test“);contentPane = frame.getContentPane();myCard = new CardLayout();

31、/设置 CardLayout 布局管理器contentPane.setLayout(myCard);p1 = new JPanel();p2 = new JPanel();p3 = new JPanel();p4 = new JPanel();p5 = new JPanel();/为每个 JPanel 创建一个标签并设定不同的/背景颜色,以便于区分l1 = new JLabel(“This is the first JPanel“);p1.add(l1);p1.setBackground(Color.yellow);l2 = new JLabel(“This is the second JPa

32、nel“);p2.add(l2);p2.setBackground(Color.green);l3 = new JLabel(“This is the third JPanel“);p3.add(l3);p3.setBackground(Color.magenta);l4 = new JLabel(“This is the fourth JPanel“);p4.add(l4);p4.setBackground(Color.white);l5 = new JLabel(“This is the fifth JPanel“);p5.add(l5);p5.setBackground(Color.cy

33、an);/ 设定鼠标事件的监听程序p1.addMouseListener(this);p2.addMouseListener(this);p3.addMouseListener(this);p4.addMouseListener(this);p5.addMouseListener(this);/将每个 JPanel 作为一张卡片加入 frame 的内容窗格contentPane.add(p1, “First“);contentPane.add(p2, “Second“);contentPane.add(p3, “Third“);contentPane.add(p4, “Fourth“);con

34、tentPane.add(p5, “Fifth“);/显示第一张卡片myCard.show(contentPane, “First“);frame.setSize(300, 200);frame.setVisible(true);/ 处理鼠标事件,每当敲击鼠标键时,即显示下一张卡片。/ 如果已经显示到最后一张,则重新显示第一张。public void mouseClicked(MouseEvent e) myCard.next(contentPane);4、求给定整数的平方根.编写一个综合程序,带有简单的界面,实现整数的平方根计算(可选)。import java.awt.event.*;imp

35、ort java.awt.*;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;class Dwindow extends JFrame implements ActionListener JTextField inputNumber;JTextArea show;Dwindow(String s) super(s);inputNumber = new

36、JTextField(22);inputNumber.addActionListener(this);show = new JTextArea();add(inputNumber, BorderLayout.NORTH);JScrollPane sp = new JScrollPane();sp.setViewportView(show);add(sp, BorderLayout.CENTER);setBounds(60, 60, 300, 300);setVisible(true);validate();addWindowListener(new WindowAdapter() public

37、 void windowClosing(WindowEvent e) System.exit(0););public void actionPerformed(ActionEvent e) boolean boo = false;if (e.getSource() = inputNumber) String s = inputNumber.getText();char a = s.toCharArray();for (int i = 0; i a.length; i+) if (!(Character.isDigit(ai)boo = true;if (boo = true) / 弹出“警告”

38、消息对话框JOptionPane.showMessageDialog(this, “您输入了非法字符“, “警告对话框“,JOptionPane.WARNING_MESSAGE);inputNumber.setText(null); else if (boo = false) int number = Integer.parseInt(s);show.append(“n“ + number + “平方根:“ + Math.sqrt(number);public class Ex01 public static void main(String args) new Dwindow(“带对话框的窗

39、口,求给定整数的平方根“);四、思考题1、Java 的事件处理机制是怎样?2、若一个数据只有两种取值可能,采用哪种组件表示比较合适?如果有二种到三种取值可能,采用哪种合适?如果取值的可能大于 5 个,采用哪种组件合适?实验五 字符和字节流输入/输出一、实验目的与要求1、了解文件的概念和文件对象的创建方法。2、了解 FileInputStream 和 FileOutoutStream 的基本概念。3、学会创建文件输入输出流。4、掌握使用文件输入输出流读写文件的方法。二、实验环境1、计算机硬件:需满足显存 526M,cpu 奔四 2.0,内存 1G,硬盘 40G 以上。2、计算机软件:安装 win

40、XP 或 win2003 操作系统,JDK1.6 版本,NeatBean6.9.1 版本,Eclipse3.1。三、实验内容和步骤1、创建一个 File 类对象,判断它是否存在,是否是文件、目录,是否是隐藏文件,如果存在,读取文件的名字、大小、最后修改时间、它的绝对路径等。代码如下:import java.io.File;import java.io.IOException;class FileDemopublic static void main(String args)tryFile file=new File(“file1.txt“);System.out.println(“文件是否存在

41、: “+file.exists();System.out.println(“是文件吗: “+file.isFile();System.out.println(“是文件夹吗: “+file.isDirectory();System.out.println(“是否隐藏: “+file.isHidden();System.out.println(“名称: “+file.getName();System.out.println(“标准文件名: “+file.getCanonicalFile();System.out.println(“相对路径: “+file.getPath(); System.out

42、.println(“绝对路径: “+file.getAbsolutePath();System.out.println(“标准路径: “+file.getCanonicalPath();System.out.println(“最后修改时间: “+file.lastModified();System.out.println(“文件大小: “+file.length()+“ 字节“); catch(IOException ex)ex.printStackTrace(); 2、利用 FileWriter 类及 BufferedWriter 来输出数据文件,利用 FileReader 类及 Buffe

43、redRead类读入数据。import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.FileReader;import java.io.IOException;public class BufferReaderandBufferWriterpublic static void main(String args)tryFileWriter fw=new FileWriter(“file1.txt“);BufferedWriter bw=new Buffe

44、redWriter(fw);bw.write(“大家好,我正在学习Java“);bw.newLine();bw.write(“请多多指教“);System.out.println(“file1.txt写入成功!*开始读n“);bw.flush();bw.close();FileReader fr=new FileReader(“file1.txt“);BufferedReader br=new BufferedReader(fr);String temp=null;dotemp=br.readLine();System.out.println(temp=null?“:temp);while(t

45、emp!=null);fr.close();br.close();System.out.println(“file1.txt已经读完!*“);catch(IOException ex)ex.printStackTrace(); 3、利用 FileInputStream 类实现输出数据,利用 FileOutputStream 类实现输出数据。import java.io.*;public class FileStream public static void main(String args) throws ExceptionFileOutputStream out = new FileOutp

46、utStream(“test.txt“);out.write(““.getBytes();/读取字符串,write()不能直接读取字符串,所以只能转换成字节数out.close();/关闭输入文件对象byte buf = new byte1024;File f = new File(“test.txt“);FileInputStream in = new FileInputStream(f);int len = in.read(buf);/取文件的长度System.out.println(new String(buf,0,len);in.close();4、编程将百度首页的文本内容分别通过字符

47、流和字节流在屏幕上显示出来,看看这两者流对象的区别。import java.io.IOException;import java.io.InputStream;import .MalformedURLException;import .URL;import java.io.*;public class Test public static void main(String args)try URL url = new URL(“http:/“);InputStream in = url.openStream();int n;StringBuffer buffer = new StringBuf

48、fer();/ 用字节流读取while(n= in.read() != -1)buffer.append(char)n);/ / 用字符流读取BufferedReader reader = new BufferedReader(new InputStreamReader(in);while(n = reader.read() != -1)buffer.append(char)n);/ 转码并打印结果String response = new String(buffer.toString().getBytes(“iso-8859-1“) , “GBK“);/ String response = new String(buffer.toString();System.out.println(response); catch (MalformedURLException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); 四、思考题1、字符流和字节流的区别是什么?实验六 异常处理一、实验目的与要求1、了解Java 中异常

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报