J2SE编程技术实验指导书.docx
J2SE编程技术实验指导书使用专业:计算机实验一、J2SE开发环境的安装与配置 一、 实验目的:掌握JDK和IDE的安装及使用 二、实验要求: 熟悉集成环境,通过设计一个简单的类来完成编码编译及运行的全过程。三、实验原理 java 一门是面向对象高级程序设计语言,源程序由一个或多个类组成,类是由属性和方法组成。Java编译器将java源程序编译成中间的字节码,再由java虚拟机(JVM)转化成可由计算机执行的二进制码,实现一次编写,多次运行的效果。 java的源程序的扩展名为.java,通过javac filename.java命令将源文件编译成 filename. class 文件,通过java filename 命令运行程序。 Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C+和Python等开发工具。四、实验内容1、安装JDK 2、编写程序,掌握eclipse 的使用 程序1:在控制台输出自己的学生信息 程序2:教科书程序设计题第2题五、实验步骤 (1)双击打开eclispe (2)设置工作路径(3)建立java工程(4)新建java类(5)编写源代码(6)运行程序,记录运行结果六、实验记录与小结 打印源码及运行结果实验二、JAVA继承和多态 一、实验目的掌握java 程序语言的继承相关概念和实现方法掌握JAVA语言多态的相关概念及实现方法 二、实验要求: 通过编程体现JAVA的继承和多态特性三、实验原理 Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。 多态性是指允许不同类的对象对同一消息作出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。多态有两种表现形式:重载和覆盖四、实验内容 编写一个程序,计算多种几何图形的周长和面积(如矩形,三角形,圆形等)五、实验步骤 (1)编写基类形状类,定义计算周长和面积方法 (2)编写多个具体形状的子类,改写父类方法 (3)编写使用者类。六、实验记录与小结 打印源码及运行结果参考程序: import java.util.*;import java.io.*;abstract class shapepublic abstract double getArea();public abstract double getPer();public abstract void input();class rectangle extends shapedouble weight,height;public rectangle()public rectangle(double weight,double height)this.weight=weight;this.height=height;public double getArea()return weight*height;public double getPer()return (weight+height)*2;public void input()Scanner sc2=new Scanner(System.in);System.out.print("请输入长:");weight=sc2.nextDouble();System.out.print("请输入宽:");height=sc2.nextDouble(); class circle extends shapefinal double PI=3.14;double r;public circle()public circle(double r)this.r=r;public double getArea()return PI*r*r;public double getPer()return 2*PI*r;public void input()Scanner sc1=new Scanner(System.in);System.out.print("请输入半径:");r=sc1.nextDouble();public class exp2 public static void main(String args) throws IOException String si,s2, temp;BufferedReader br;shape s=new shape2;s0=new rectangle();s1=new circle(); br=new BufferedReader(new InputStreamReader(System.in);System.out.print("请输入要求的图形(circle rectangle)q表示 退出 :"); s2=br.readLine();while(!s2.equals("q")for(int i=0;i<2;i+)si=si.getClass().getName();if(s2.equals(si) si.input();System.out.println("the area of "+si+" is "+si.getArea();System.out.println("the per of "+si+" is "+si.getPer();System.out.print("请输入要求的图形(circle rectangle)q表示 退出 :");s2=br.readLine();实验三 Java输入输出流一、 实验目的了解Java输入输出的方法掌握Java的异常处理掌握Java的常用输入输出类二、 实验要求按要求编写程序,得出正确的结果三、 实验原理当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。Java的中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的。四、 实验内容新建一个文本文件,并编程实现如下功能:(1) 将此文件的内容读出,并存在并将它存放到e:盘以学号命名的文件当中(2) 从键盘输入学号,姓名等个人信息,追加到文件末尾。(3) 将文件内容读出,打印在屏幕上。五、 实验步骤(1) 新建Java工程(2) 新建Java类(3) 编写程序(4) 编译运行(5) 查看结果六、 实验小结(附代码和运行结果的截图)实验四、Java数组、字符串及常用类应用一、实验目的掌握Java中数组的使用掌握Java中字符串的使用掌握File类的使用二、实验要求按要求编写程序,得出正确的结果三、实验原理数组是相同数据类型的元素按一定顺序排列的集合,是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类。为了很方便的代表文件的概念,以及存储一些对于文件的基本操作,在java.io包中设计了一个专门的类File类。在File类中包含了大部分和文件操作的功能方法,该类的对象可以代表一个具体的文件或文件夹。四、实验内容编程实现如下内容1、从键盘输入带路径的文件名,如果文件存在,判断该文件是否目录,如果是,列出该目录下的所有文件,否,读出文件内容。如果文件不存在,则输出提示信息。2、编写程序实现接受键盘输入字符串,并判断该字符是否是回文。五、实验步骤(1)新建Java工程(2)新建Java类(3)编写程序(4)编译运行(5)查看结果六、实验小结(附代码和运行结果的截图)实验五 图形界面编程与事件处理机制(一)一、实验目的 1、掌握图形用户界面各种常用的基本组件的使用方法 2、掌握图形用户界面各种布局策略的设计与使用 3、掌握图形用户界面的响应机制二、实验要求按要求编写程序,得出正确的结果三、实验原理 AWT的全称是抽象窗口工具集(Abstract Window Toolkit)。AWT中包括了图形界面编程的基本类库。其中主要由以下几部分组成,包括:组件类(Component)、容器类(Container)、图形类(Graphics)和布局管理器(LayoutManager)。 在AWT中存在缺少剪贴板、缺少打印支持等缺陷,甚至没有弹出式菜单和滚动窗口等,因此Swing的产生也就成为必然。Swing是纯Java实现的轻量级(light-weight)组件,它不依赖系统的支持。AWT是Swing的基础,但是Swing中却提供了比AWT更多的图形界面组件。而且Swing中组件的类名都是由字母“J”开头,还增加了一些比较复杂的高级组件,如JTable、JTree。事件处理是图形界面和用户进行交互的重要组成部分,Java中的事件处理机制主要包括有事件源、事件和事件处理器3个部分。首先要做的是为事件注册相对应的事件处理器,并制定事件,然后由事件处理器获取后进行相应的事件处理。四、实验内容写 GUI 应用程序, 在 GUI 上,设计两个文本框、 两个标签和两个按钮,当文本框输入两个实数时, 点击相加按钮实现两个实数相加, 并在标签中显示相加结果, 点击清除按钮完成对文本框和运行结果的清除。 程序运行结果如图所示。五、实验步骤(1)定义组件(3个文本框,2块面板,2个标签,2个按钮)(2)设计布局 面板1上添加顺序添加文本框和标签,并把面板1放置在框架的中间。 面板2上添加两个按钮,并把面板2放置在框架的南边(3)分别为两个按钮注册事件监听,并编写事件处理代码。六、实验小结(附代码和运行结果的截图)参考程序实验六 图形界面编程与事件处理机制(二)一、实验目的 1、掌握图形用户界面各种常用的基本组件的使用方法 2、掌握图形用户界面各种布局策略的设计与使用 3、掌握图形用户界面的响应机制二、实验要求按要求编写程序,得出正确的结果三、实验原理菜单分为三类,一类是固定的,即程序顶上的下拉式菜单,一类是弹出式菜单,另一类则是浮动式菜单。固定菜单,建立JMenuBar对象JMenuBar menubar = new JMenuBar();将JMenuBar加入窗体: JFrame.setJMenuBar(menubar);建立菜单Menu menuFile = new JMenu("File")menubar.add(menuFile);建立下拉菜单项,JMenuItem newItem = new JMenuItem("New");menuFile.add(newItem);弹出式菜单建立顶级菜单 JPopupMenu popup = new JPopupMenu();建立菜单选项JMenuItem cutItem = new JMenuItem("Cut"); popup.add(cutItem);浮动式菜单JToolBar toolbar = new JToolBar();添加各种组件toolbar.add(exitAction);四、实验内容编写GUI程序,实现一个简易记事本,能够完成文件的读写。见面如下:五、实验步骤(1)定义组件 菜单栏,文件菜单 三个菜单选项,弹出式菜单,弹出式菜单选项,工具栏,工具栏上按钮组件,文本区,滚动面板。(2)设计布局 将菜单栏安置在框架上面,在菜单栏上添加菜单,在菜单上添加下拉菜单项,在弹出式菜单上添加菜单选项。在框架的北部添加工具栏,在中部添加带文本区的滚动面板。(3)事件处理 在菜单项和按钮上注册动作事件,在文本区上注册鼠标事件。六、实验小结(附代码和运行结果的截图)实验七 java数据库编程一、实验目的 1、理解JDBC的组成和结构 2、掌握Java程序与数据库的链接技术 3、掌握在Java程序中使用java.sql包中提供的DriverManager类、Connection 、Statement、ResultSet类来存取数据库中数据的方法 二、实验要求(1)使用的数据库系统不受限制,可以是小型数据库系统如MS Access,VFP,MySql或者大型数据库,如SQL server 等。 (2)使用JDBC不受限制,可以使用J2SE中提供的JDBCC-ODBC桥,也可以使用其他数据库专用的JDBC。 (3)在每项操作前后,分别显示相应信息,以验证操作是否正确完成。三、实验原理JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果JAVA 数据库编程中常用的类有:(1)DriverManager类是用来管理数据库驱动的(2)java.sql.Connection接口表示应用程序与数据库的连接对象(3)Statement接口的对象是用来执行SQL语句的(4)ResultSet接口用来表示查询结果集四、实验内容首先建立一个数据库,在数据库中建立一个表,表名为学生,其结构为:学号、姓名、性别、年龄、成绩,在表中输入多条记录(自己设计具体数据) 在此基础上通过编程实现以下功能(1)查询所有学生记录(2)列出成绩不及格的学生信息(3) 6号学生成绩加10分(4)删除成绩高于90分记录五、实验步骤(1)建立数据库(2) 编写程序 1、装载驱动程序Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");2、建立连接 con=DriverManager.getConnection("jdbc:odbc:xuesheng);3、创建对象Statement stmt = con.createStatement();4、执行SQL语句stmt.executeUpdate("delete from stu where sno=50");ResultSet rs=stmt.executeQuery("select * from stu where grade>80");stmt.executeUpdate("update stu set grade=grade+10 where sno=6");5、处理结果while(rs.next()System.out.printf("%dt%st%st%st%dn",rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5);六、实验结论import java.sql.*;class access public static void main(String arg)Connection con=null;tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");/con=DriverManager.getConnection("jdbc:odbc:driver=Microsoft Access Driver (*.mdb);DBQ=f:db2.mdb"); con=DriverManager.getConnection("jdbc:odbc:xuesheng);Statement stmt = con.createStatement(); ResultSet rs=stmt.executeQuery("select * from stu"); System.out.println("当前表内容为:n");System.out.println("学号t姓名t性别t年龄t成绩");while(rs.next()System.out.printf("%dt%st%st%st%dn",rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5);/删除学号为50的学生stmt.executeUpdate("delete from stu where sno=50");System.out.println("学号t姓名t性别t年龄t成绩"); ResultSet rs=stmt.executeQuery("select * from stu");while(rs.next()System.out.printf("%dt%st%st%st%dn",rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5);/列出成绩大于80的学生 ResultSet rs=stmt.executeQuery("select * from stu where grade>80");while(rs.next()System.out.printf("%dt%st%st%st%dn",rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5);/6号学生成绩增加10stmt.executeUpdate("update stu set grade=grade+10 where sno=6");ResultSet rs=stmt.executeQuery("select * from stu");while(rs.next()System.out.printf("%dt%st%st%st%dn",rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5);rs.close();stmt.close();con.close();catch (Exception e) e.printStackTrace();实验八 java网络编程一、实验目的:(1)掌握客户端套接字(2)掌握服务端套接字(3)掌握套接字通信原理二、实验要求: 编程实现两条主机的通信三、实验原理一个典型的客户机服务器的对话过程如下1.服务器监听指定端口的输入2.客户机发出一个请求3.服务器收到这个请求4.服务器处理这个请求,并把结果返回给客户机5.客户机收到结果,并做出相应处理四、实验内容:(1)编写程序实现客户和服务器的通信,要求从服务器传送信息,客户接受并且显示出来。主要仪器设备:配备有Java集成环境的PC机。五、实验步骤 客户端(socket) 过程:绑定接口,主机,建立连接 socket = new Socket(server, port); 得到输入流,输出流和服务交换数据写数据(发送) PrintWriter os=new PrintWriter(socket.getOutputStream(); os.println(line); 读数据(接收) BufferedReader is=new BufferedReader(new InputStreamReader (socket.getInputStream(); is.readLine() 完成后 :socket.close(); os.close(); is.close()服务器端:SeverSocket过程: 绑定端口, 建立一个SeverSocket 对象 server=new ServerSocket(4700); 等待客户端的请求: socket=server.accept(); 建立输入流,输出流和客户端交换数据 写数据(发送) PrintWriter os=new PrintWriter(socket.getOutputStream(); os.println(line); 读数据(接收) BufferedReader is=new BufferedReader(new InputStreamReader (socket.getInputStream(); is.readLine() 完成后 :socket.close(); os.close(); is.close()六、实验小结参考程序客户端import java.io.*;import .*;public class Client /* * param args */public static void main(String args) trySocket client=new Socket("127.0.0.1",5000);BufferedReader sin=new BufferedReader(new InputStreamReader(System.in);BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream();PrintWriter os=new PrintWriter(client.getOutputStream();String cmsg,smsg;cmsg=sin.readLine();while(!cmsg.equals("bye")os.println(cmsg);os.flush();System.out.println("me "+ cmsg);smsg=is.readLine();if (smsg=null) break;System.out.println("server; "+smsg);cmsg=sin.readLine();System.out.println("over");os.close();is.close();client.close();catch (IOException e) System.out.println("err"); 服务器端import .*;import java.io.*;public class Server static int clientNum=1;public static void main (String args)throws IOException ServerSocket serversocket=null; try serversocket=new ServerSocket(5000); System.out.println("power on the server"); catch (IOException e) System.out.println("err"); while (true) ServerThread st=new ServerThread(serversocket.accept(),clientNum ); st.start(); clientNum+; class ServerThread extends ThreadSocket server=null;int counter;public ServerThread(Socket socket,int num)server=socket;counter=num;public void run()tryString msg;BufferedReader sin=new BufferedReader(new InputStreamReader(System.in);BufferedReader is=new BufferedReader(new InputStreamReader(server.getInputStream();PrintWriter os=new PrintWriter(server.getOutputStream();String cmsg;cmsg=is.readLine();System.out.println("client"+counter+":"+cmsg);msg=sin.readLine();while(!msg.equals("bye")os.println(msg);os.flush();System.out.println("me"+msg);cmsg=is.readLine();if (cmsg=null) break;System.out.println("client"+counter+":"+cmsg);msg=sin.readLine();System.out.println("over");os.close();is.close();server.close();catch (IOException e) System.out.println("err"); 注意 为了方便调试应该打开多个控制台的显示界面 用eclipse 使用如下:1.运行上述2个程序(它们需要不同的控制台)2.右击已经打开的Console窗口,选择Detached(控制台脱离eclipse,可以调整位置和大小)3.在Console的最右边有个Open Console下拉按钮,选中new console view。此时,又新建了一个Console,这个Console位置可能不在原来的地方,找到它,然后继续右击Detached,让它脱离4.在一个console上,点击Display Selected Console下拉按钮,选择TestServer;而在另一个console上,点击Display Selected Console下拉按钮,选择TestClient。5.在2个console上都点击Pin Console按钮这样,就可以达到2个控制台的目的了,同样的方法还可以开多个