为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java实验报告

2017-10-08 34页 doc 271KB 147阅读

用户头像

is_337177

暂无简介

举报
java实验报告java实验报告 Java程序设计实验报告 学号:109074186 姓名:黄 燕 班级:软 102 指导老师:李伟 安徽工业大学计算机学院 2012年12月9日 目录 实验一、面向对象编程实验 .................................................................. 3 ?接口的编写 .....................................................................................
java实验报告
java实验 Java程序设计实验报告 学号:109074186 姓名:黄 燕 班级:软 102 指导老师:李伟 安徽工业大学计算机学院 2012年12月9日 目录 实验一、面向对象编程实验 .................................................................. 3 ?接口的编写 ................................................................................... 3 ?多态在工资系统中的应用 ............................................................ 4 ? 包的建立与使用 .......................................................................... 7 实验二、异常处理实验 .......................................................................... 9 ?异常的捕获 ................................................................................... 9 ?定义异常 ....................................................................................... 9 实验三、多线程实验......................................... 错误~未定义书签。11 ?使用Runnable接口的方法实现多线程 .. 错误~未定义书签。11 ? 实现简单动画............................................................................ 13 实验四、输入输出流实验 ................................. 错误~未定义书签。14 ?编写程序读取文本文件内容 ................... 错误~未定义书签。14 ? 读取图像文件......................................... 错误~未定义书签。15 ?将内容写入文件....................................... 错误~未定义书签。16 课程设计——学生信息查询系统 ..................... 错误~未定义书签。17 实验一、面向对象编程实验 一、实验目的 ?掌握接口的编写及使用 ?理解继承、多态 ?掌握包的编写以及如何使用包中的类 二、预习内容 java的基本语法知识 三、实验设备与环境 装有JAVA语言工具软件 (JCreator )的微机若干 四、实验内容 package com.haungyan; interface Interfaceclass { int i=4; int k=5; void func1(); int func2(int x); } class UseInterface implements Interfaceclass{ int j; public void func1() { System.out.println("func1="+i); } public int func2(int i){ System.out.println("func2="+i); return i; } public static void main(String[] args) { // TODO Auto-generated method stub UseInterface x=new UseInterface(); x.func1(); x.func2(k); } } ?多态在工资系统中的应用 设计一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。 Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、 CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。 对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Earnings()派出生的。所有在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引导 并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每个对象的employee()方法。 package huangyan; abstract class Employee { abstract void earnings(); abstract int employee(); } final class Boss extends Employee { @Override void earnings() { // TODO Auto-generated method stub int base_pay; int salary=0; base_pay=employee()*4; salary+=base_pay; System.out.println("我的工资是:"+salary); } @Override int employee() { // TODO Auto-generated method stub System.out.println("我的职位是:Boss"); return 4000; } } final class CommissionWorker extends Employee { public int sell() { int mysell=300; return (mysell*20-100); } @Override void earnings() { // TODO Auto-generated method stub int base_pay; int change_pay=0; int salary=0; base_pay=employee(); change_pay=sell(); salary+=base_pay+change_pay; System.out.println("我的工资是:"+salary); } @Override int employee() { // TODO Auto-generated method stub int x=5000; System.out.println("我的职位是:CommissionWorker"); return x; } } final class PieceWorker extends Employee { @Override void earnings() { // TODO Auto-generated method stub int count = 3000; int base_pay; int salary=0; base_pay=employee(); salary+=base_pay+count*3; System.out.println("我的工资是:"+salary); } @Override int employee() { // TODO Auto-generated method stub int y=0; System.out.println("我的职位是:PieceWorker"); return y; } } final class HourlyWorker extends Employee { @Override void earnings() { // TODO Auto-generated method stub int work_time=100; int base_pay; int salary=0; base_pay=employee(); salary+=base_pay+work_time*21; System.out.println("我的工资是:"+salary); } @Override int employee() { // TODO Auto-generated method stub int x=0; System.out.println("我的职位是:HourlyWorker"); return x; } } public class Myemployee { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Boss bs=new Boss(); bs.earnings(); CommissionWorker com=new CommissionWorker(); com.earnings(); PieceWorker pie=new PieceWorker(); pie.earnings(); HourlyWorker hou=new HourlyWorker(); hou.earnings(); } } ? 包的建立与使用 package calculate; interface Interfaceclass { int i=4; int k=5; void func1(); int func2(int x); } public class calculate{ private int a; public calculate(int a) {this.a=a; System.out.println("from constrartion"+this.a); } public double volume(double height,double width,double depth) { return height*width*depth; } int add(int x, int y) { return x+y; } protected void a() { System .out.println("from constration"+a); } } package calculate; public class PackageDemo { public static void main(String ags[ ]) { calculate c=new calculate(10); double s=c.volume(5,6,7); System.out.println(s); } } 实验二、异常处理实验 一、实验目的 ?异常的生产及捕获 ?自定义异常及其使用 二、预习内容 面向对象的基本知识 三、实验设备与环境 装有JAVA语言工具软件 (JCreator )的微机若干 四、实验内容 ?异常的捕获 计算两数相除并输出结果。使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。 编译并运行,当输入除数为0时,将有异常出现,当输入的不是整数时,如将30输成了3o,出现的是另一种异常。 ?定义异常 编写程序包含自定义异常,当输入数值为13和4时抛出该异常。 编译并运行,分别取消注释上面程序中被注释的语句。当释放a.setX(13)语句后,查看运行结果,当释放a.setX(4)语句后,查看运行结果。 package huangyan; public class ex2 extends Exception { ex2(String msg){ super(msg); } } public class myex { private int x; void setX(int x){ this.x=x; } void f1()throws ex2{ if(x==13) throw new ex2("I don't like 13!"); else if(x==4) throw new ex2("I don't like 4!"); else System.out.println(100/x); } } public class example4 { public static void main(String[] args) { // TODO Auto-generated method stub myex a=new myex(); try{ a.setX(5); //a.setX(13); //a.setX(4); //a.setX(0); a.f1(); } catch(ex2 e){ System.out.println("getmessage:"+e.getMessage()); } } 实验三、多线程实验 一、实验目的 ?掌握多线程的实现方法 ?学会利用多线程来显示动画 二、预习内容 线程与进程的基础知识 三、实验设备与环境 装有JAVA语言工具软件 (JCreator )的微机若干 四、实验内容 ?使用Runnable接口的方法实现多线程 编辑TestRunnable.java,保存在D:\myjava目录下。 import java.applet.*; import java.awt.*; public class TestRunnable extends Applet implements Runnable { Label prompt1=new Label("the first thread"); Label prompt2=new Label("the second thread"); TextField threadFirst=new TextField(14); TextField threadSecond=new TextField(20); Thread Thread1, Thread2; int count1=0,count2=0; private String currentRunning; public void init() { add(prompt1); add(threadFirst); add(prompt2); add(threadSecond); } public void start() { Thread1=new Thread(this, "FirstThread"); Thread2=new Thread(this, "SecondThread"); Thread1.start(); Thread2.start(); } public void run(){ String currentRunning; while(true){ try{ Thread.sleep((int)(Math.random()*10000)); } catch(Exception e) {} currentRunning=Thread.currentThread().getName(); if(currentRunning.equals("FirstTheard")) { count1++; threadFirst.setText("the first thread"+count1+"use");} else if(currentRunning.equals("SecondThread")){ count2++; threadSecond.setText("the second thread"+count2+"use");} } } } (1) 编译TestRunnable.java。 (2) 编辑TestRunnable.htm,要求与TestRunnable.class在同一目录下。 (3) 运行TestRunnable.htm。 ? 实现简单动画 实现一个简单动画,效果为一个球由小到大,从屏幕左侧滚动到右侧。 package mypackage; import java.applet.*; import java.awt.*; public class Mov extends Applet { int x1=50,x2=5,y1=25,y2=5; public void paint(Graphics g) { int w=this.getWidth(); int h=this.getHeight(); if(x1>=w) { x1=50; } if(x2>h) { x2=5; } g.setColor(Color.BLUE); g.fillOval(x1,y1,x2,x2); g.drawOval(x1,y1,x2,x2); x1+=50; x2+=5; try{ Thread.sleep(500); } catch(Exception e) {} repaint(); } } 实验四、输入输出流实验 一、实验目的 ?了解文件的概念和文件对象的创建方法 ?了解FileInputStream和FileOutoutStream的基本概念 ?学会创建文件输入输出流 ?掌握使用文件输入输出流读写文件的方法 二、预习内容 输入输出类的使用方法 三、实验设备与环境 装有JAVA语言工具软件 (JCreator )的微机若干 四、实验内容 ?编写程序读取文本文件内容 ? 读取图像文件 编辑ReadPic.java。设保存在D:myjava目录下。设该目录下已经存在一个run.gif文件(可以在此目录下放置一个本机已有的图像文件名字为run.gif。) package 实验9; import java.io.*; public class ReadPic { //*此程序将当前目录下的run.gif文件复制到copyrun.gif中 ReadPic() { try{ File f=new File("run.gif"); File f1=new File("copyrun.gif"); FileInputStream inFile=new FileInputStream(f); BufferedInputStream inB=new BufferedInputStream(inFile); FileOutputStream outFile=new FileOutputStream(f1); BufferedOutputStream putB=new BufferedOutputStream(outFile); byte[] b=new byte[(int) f.length()]; while(inB. read(b)!=-1) { putB. write(b); } putB.flush(); inB.close(); putB.close(); } catch(Exception e) {e.printStackTrace();} } public static void main(String args[ ]) { new ReadPic(); } } (1) 编译并运行ReadPic..class。 (2) 打开copyrun.gif与run.gif进行对比。 ?将内容写入文件 编辑UseStream1.java,设保存在D:\myjava目录下。 package 实验9; import java.io.*; class useStream1 { useStream1(String path) { try{ File f=new File(path, "test1.txt"); //向文件test1.txt中写入数据 FileWriter putFile=new FileWriter(f); BufferedWriter OutB=new BufferedWriter(putFile); String s="你们好,这是一个测试写入数据的文件。"; OutB.write(s); //插入一行 OutB.newLine(); OutB.write("这是利用FileWrite与 BuffereWrite的例题。"); //需要调用flush()方法 OutB.flush(); //写入完毕要关闭流 OutB.close(); //从text.txt中读取数据 FileReader inFile=new FileReader(f); BufferedReader inB=new BufferedReader(inFile); /*inB中含有能够直接读取一行数据的方法raesLine()供我们使用,当然返回值null时,意味着读取结束*/ String fileContent="",str=""; while((fileContent=inB.readLine())!=null) { str=str+fileContent+"\n"; } System.out.println(str); inB.close(); } catch(Exception e){e.printStackTrace();} } public static void main(String args[ ]) { 作业"); new useStream1("G:\\ } } 编译并运行UseStream1.class。 课程设计——学生信息查询系统 (1) 建立数据库,使用Access,建立数据表”学生表”。 (2) 建立数据源指向该数据库,数据源名为db1。 (3) 编辑Main .java,程序主窗体。使用Jframe窗体. package student.message; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import java.sql.*; public class Main { public static void main(String args[]){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){ System.out.println(""+e); } DatabaseWin win = new DatabaseWin(); } } class DatabaseWin extends JFrame implements ActionListener{ JMenuBar menubar;//创建菜单条 JMenu menu;//创建菜单 JMenuItem itemShow,itemUpdate,itemInsert;//创建菜单项 ShowRecord showRecord; ModifyRecord modifyRecord; InsertRecord insertRecord; DatabaseWin(){ menubar = new JMenuBar(); menu = new JMenu("操作数据库"); itemShow = new JMenuItem("显示"); itemUpdate = new JMenuItem("更新记录"); itemInsert = new JMenuItem("插入记录"); itemShow.addActionListener(this); itemUpdate.addActionListener(this); itemInsert.addActionListener(this); menu.add(itemShow); menu.add(itemUpdate); menu.add(itemInsert); menubar.add(menu); showRecord = new ShowRecord("显示记录对话框"); modifyRecord = new ModifyRecord("修改记录对话框"); insertRecord = new InsertRecord("插入记录对话框"); setJMenuBar(menubar); setBounds(100,100,370,250); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e){ if(e.getSource()==itemShow){ showRecord.setVisible(true); } else if(e.getSource()==itemUpdate){ modifyRecord.setVisible(true); } else if(e.getSource()==itemInsert){ insertRecord.setVisible(true); } } } (4) 编辑ShowRecord.java,显示学生表的信息 package student.message; import javax.swing.*; import java.sql.*; import java.awt.event.*; import java.awt.*; public class ShowRecord extends JDialog implements ActionListener{ JTable table;//创建标签 Object a[][]; Object[] name = {"学号","姓名","性别","班级","出生年月"}; JButton showRecord; Connection con; Statement sql; ResultSet rs; ShowRecord(String title){ setTitle(title); showRecord = new JButton("显示记录"); showRecord.addActionListener(this); add(showRecord,BorderLayout.NORTH); setBounds(200,60,400,250); } public void actionPerformed(ActionEvent e){ try{ con = DriverManager.getConnection("jdbc:odbc:db1","",""); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM 学生表"); rs.last(); int lastNumber = rs.getRow(); a = new Object[lastNumber][5]; int k = 0; rs.beforeFirst(); while(rs.next()){ a[k][0] = rs.getString(1); a[k][1] = rs.getString(2); a[k][2] = rs.getString(3); a[k][3] = rs.getString(4); a[k][4] = rs.getDate(5); k++; } con.close(); } catch(SQLException ee){ System.out.println(ee); } table = new JTable(a,name); getContentPane().removeAll(); add(showRecord,BorderLayout.NORTH); add(new JScrollPane(table),BorderLayout.CENTER); validate(); } } (5) 编辑InsertRecord.java,实现插入功能。 package student.message; import javax.swing.*; import java.awt.event.*; import java.sql.*; public class InsertRecord extends JDialog implements ActionListener{ JLabel hintLabel; Object[] name = {"学号","姓名","性别","班级","出生年月"}; Object a[][] = new Object[1][5]; JTable table; JButton enterInsert; Connection con; Statement sql; ResultSet rs; String num; InsertRecord(String s){ setTitle(s); hintLabel = new JLabel("输入新纪录"); table = new JTable(a,name); enterInsert = new JButton("插入新纪录"); setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel); baseBox.add(new JScrollPane(table)); baseBox.add(enterInsert); add(baseBox); baseBox.setBounds(10, 40, 600, 38); enterInsert.addActionListener(this); setBounds(120,160,700,200); } public void actionPerformed(ActionEvent e){ try{ con = DriverManager.getConnection("jdbc:odbc:db1","",""); sql = con.createStatement(); int k = sql.executeUpdate("INSERT INTO 学生表 VALUES('"+a[0][0]+"','"+a[0][1]+"','"+a[0][2]+"','"+a[0][3]+"','"+a[0][4]+"')"); //int k = sql.executeUpdate("INSERT INTO 学生表 VALUES(a[0][0],a[0][1],a[0][2],a[0][3],a[0][4],a[0][5])"); if(k==1){ JOptionPane.showMessageDialog(this, "插入记录成功","成功",JOptionPane.PLAIN_MESSAGE); con.close(); } } catch(SQLException ee){ JOptionPane.showMessageDialog(this, "插入记录失败"+ee,"失败",+JOptionPane.ERROR_MESSAGE); } } } (6) 编辑Modify.java,实现更改表的内容 package student.message; import javax.swing.*; import java.awt.event.*; import java.sql.*; public class ModifyRecord extends JDialog implements ActionListener { JLabel hintLabel; JTextField inputNumber; Object name[] = {"姓名","性别","班级","出生年月"}; Object a[][] = new Object[1][5]; JTable table; JButton enterModify; Connection con; Statement sql; ResultSet rs; String num; ModifyRecord(String s){ setTitle(s); hintLabel = new JLabel("输入学号(回车确认):"); inputNumber = new JTextField(20); table = new JTable(a,name); enterModify = new JButton("更新记录"); setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel); baseBox.add(inputNumber); baseBox.add(new JScrollPane(table)); baseBox.add(enterModify); add(baseBox); baseBox.setBounds(10,40,600,38); inputNumber.addActionListener(this); enterModify.addActionListener(this); setBounds(20,60,700,200); } public void actionPerformed(ActionEvent e){ if(e.getSource()== inputNumber) try{ num = inputNumber.getText().trim(); con = DriverManager.getConnection("jdbc:odbc:db1","",""); sql = con.createStatement(); rs = sql.executeQuery("SELECT * FROM 学生表 WHERE 学号 ='"+num+"'"); boolean boo = rs.next(); if(boo==false){ JOptionPane.showMessageDialog(this, "学号不存在","提示",JOptionPane.WARNING_MESSAGE); } else{ a[0][0] = rs.getString(2); a[0][1] = rs.getString(3); a[0][2] = rs.getString(4); a[0][3] =rs.getDate(5).toString(); table.repaint(); } con.close(); } catch(SQLException ee){ System.out.println(ee); } if(e.getSource()==enterModify) try{ con = DriverManager.getConnection("jdbc:odbc:db1","",""); sql = con.createStatement(); sql.executeUpdate("UPDATE 学生表 SET 姓名 ='"+a[0][0]+"',性别='"+a[0][1]+"',班级='"+a[0][2]+"',出生年月='"+a[0][3]+"'WHERE 学号='"+num+"'"); JOptionPane.showMessageDialog(this, "更新成功","成功",JOptionPane.PLAIN_MESSAGE); con.close(); } catch(SQLException ee){ JOptionPane.showMessageDialog(this, "更新失败"+ee,"失败 ",JOptionPane.ERROR_MESSAGE); } } }
/
本文档为【java实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索