收藏 分销(赏)

java实验报告.doc

上传人:仙人****88 文档编号:11397993 上传时间:2025-07-21 格式:DOC 页数:16 大小:392KB 下载积分:10 金币
下载 相关
java实验报告.doc_第1页
第1页 / 共16页
java实验报告.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
学生学号 实验课成绩 武汉理工大学 学 生 实 验 报 告 书 实验课程名称 java语言与程序设计 开 课 学 院 指导老师姓名 学 生 姓 名 学生专业班级 2012 — 2013 学年 第 一 学期 实验课程名称: java语言程序设计 实验项目名称 Java文件输入输出流 实验成绩 实验者 专业班级 组别 同组者 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一、 实验内容描述(问题域描述) 把下列数据写到一个名为c:\myfile.data 的文件中。 姓名 年龄 电子邮件 Zhang san 20 Zhang-San@ Li Si 18 Li_Si@ Wang Er Mazi 21 Wang_er_mazi@ Liu Bang 240 Liu-Bang@ (一) 利用java.io.FileOutputStream 和java.io.DataOutputStream 直接把表中的数据写到文件中 (二) 方法2:编写一个表示每行数据的Java Bean,例如Person,然后再使用对象数组 (三) 方法3:同方法2,但是使用数据结构java.util.Vector 利用文件输入流和数据输入流读入上述文件。 利用文件字符流和缓冲字符流读入下列文件(文件名C:\sales.txt): 2300 5890 7830 7850 并统计以上数值之和。 二、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 ) 源程序: package pkg; import java.io.*; public class MyClass { public void method01() throws IOException { FileOutputStream fos = new FileOutputStream("c:\\myfile.data"); DataOutputStream dos = new DataOutputStream(fos); dos.writeUTF("Zhang san"); dos.writeInt(20); dos.writeUTF("Zhang_san@"); dos.writeUTF("Li Si"); dos.writeInt(18); dos.writeUTF("Li_Si@"); dos.writeUTF("Wang Er Mazi"); dos.writeInt(21); dos.writeUTF("Wang_Er_Mazi@"); dos.writeUTF("Liu Bang"); dos.writeInt(18); dos.writeUTF("Liu_Bang@"); fos.close(); dos.close();} public void method02() throws IOException { FileInputStream fis = new FileInputStream("c:\\myfile.data"); DataInputStream dis = new DataInputStream(fis); String name,email; int age,count; while((count=dis.available())!=0) { name = dis.readUTF(); age = dis.readInt(); email = dis.readUTF(); System.out.printf("%-20s\t%-6d\t%-30s\n", name,age,email);// \t是水平制表符 ,相当于TAB空格 } fis.close(); dis.close();} public void method03() throws IOException { FileReader fr = new FileReader("c:\\sales.txt"); BufferedReader br = new BufferedReader(fr); String data; int sum = 0; while((data=br.readLine()) != null) {sum += Integer.parseInt(data); } System.out.println("sum = " + sum); fr.close(); br.close(); } public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub MyClass mc = new MyClass(); mc.method01(); //mc.method02(); //mc.method03(); //依次调用method01()、method02()、method03() } } 三、主要实验工具、仪器设备及耗材 个人计算机,Eclipse 第二部分:实验结果分析(可加页) 一、 实验结果描述 先执行方法一: 再执行方法二: 最后执行方法三: 二. 实验小结、建议及体会 经过这次实验,我对java语言有了初步认识,对如何使用java编程有了初步了解,并且尝试编出一个简单的小程序,实现了先生成文件再将数据写入文件的目的,这对我有很大的帮助,为我以后的java学习打下了基础,以后我会多加练习,争取更大的进步。 实验课程名称: java语言程序设计 实验项目名称 Java类继承及接口 实验成绩 实验者 专业班级 组别 同组者 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一. 实验内容描述(问题域描述) 1、接口之一定义四则运算的加减法,接口之二定义四则运算的乘除运算。类一有一个打印一个字符串和一个整数的成员方法,要求打印的数据通过形式参数导入。类二继承类一并实现接口一和接口二,且含有用于计算20 和30 四则运算并打印计算结果的主函数。  2、利用标准输入流输入一元二次方程的三个系数,并解该方程。 二、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 ) 第一题源代码: 接口一: package javacourse; public interface Interface01 { public int add(int a, int b); public int sub(int a, int b); } 接口二: package javacourse; public interface Interace02 { public int prod(int a, int b); public int div(int a, int b); } 父类: package javacourse; public class FatherClass { public static void print(String str,int a) { System.out.println(str+":"+a); } } 子类: package javacourse; public class AChildClass extends FatherClass implements Interface01, Interace02 { public AChildClass() { // TODO Auto-generated constructor stub } @Override public int prod(int a, int b) { // TODO Auto-generated method stub return (a*b); } 2 @Override public int div(int a, int b) { // TODO Auto-generated method stub try{ return (a/b); }catch(Exception ex) { System.out.println("a/b with b=0"); return -999; } } @Override public int add(int a, int b) { // TODO Auto-generated method stub return (a+b); } @Override public int sub(int a, int b) { // TODO Auto-generated method stub return (a-b); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub AChildClass cc = new AChildClass(); print("30+20",cc.add(20, 30)); print("30-20",cc.sub(30,20)); print("30*20",cc.prod(30, 20)); print("30/20",cc.div(30, 20)); } } 第二题参考代码: package javacourse; import java.io.*; public class ROOT { private double a,b,c,x1,x2; private boolean haRealRoots; 3 public ROOT() { super(); // TODO Auto-generated constructor stub } public ROOT(double a, double b, double c) { super(); this.a = a; this.b = b; this.c = c; } public double getX1() { return x1; } public double getX2() { return x2; } public boolean isHaRealRoots() { return haRealRoots; } public void pstr(String str) { System.out.println(str); } public static void print(String str,double a) { System.out.println(str+a); } public void calRoots() throws IOException,NumberFormatException { byte[]arrA,arrB,arrC; String strA,strB,strC; double delta; arrA = new byte[80]; arrB = new byte[80]; arrC = new byte[80]; pstr("Input coefficient a:"); System.in.read(arrA); 4 pstr("Input coefficient b:"); System.in.read(arrB); pstr("Input coefficient c:"); System.in.read(arrC); strA = new String(arrA); strB = new String(arrB); strC = new String(arrC); a = Double.parseDouble(strA); b = Double.parseDouble(strB); c = Double.parseDouble(strC); delta = b*b - 4*a*c; if(delta<0) this.haRealRoots=false; else { this.haRealRoots=true; x1=(-b+Math.sqrt(delta))/(2*a); x2=(-b-Math.sqrt(delta))/(2*a); } } /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub ROOT rt = new ROOT(); rt.calRoots(); if(rt.isHaRealRoots()) { print("x1=",rt.getX1()); print("x2=",rt.getX2()); } else { rt.pstr("Don't exist real roots"); } } } 三、主要实验工具、仪器设备及耗材 个人计算机, Eclipse 第二部分:实验结果分析(可加页) 一、 实验结果描述 输入方程无解: 输入方程有解: 二、 实验小结、建议及体会 经过这次实验我对java的类继承及接口有了初步的认识,同时也进一步了解了java的各种类型和变量定义以及表达式的运算,并且亲自动手编了两个程序来巩固自己所学。java语言跟c语言极有相似之处又有不同之处,这次实验让我对java语言的学习打下了很好的基础。 实验课程名称: java语言程序设计 实验项目名称 掌握可视化编程,数据结构,和文件输入、输出流 实验成绩 实验者 专业班级 组别 同组者 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一.实验内容描述(问题域描述) 实验内容: 编写一个表示学生信息(姓名,电话号码,电子邮箱,性别)的Java Bean。要求这个“结构体”实现java.io.Serializable,以便能够把若干这样的对象写到文件中。使用java.util.Hashtable,即哈希表,来处理这样的Java Bean。使用文件输入、输出流和对象输入、输出流来读、写这样一个哈希表对象。 图形用户界面要用到采单,列表,对话框等。Java.awt.Menu, Dialog, List, 等。事件接口可以是java.awt.event.ActionListener 或 java.awt.event.MouseListener。对话框用于输入一个学生的四项信息,而四个列表用于显示所有学生的四项信息。软件具备四个功能:输入一个学生的信息,显示所有学生的信息,从文件中加载数据,以及把当前所有的数据保存到文件中。而这四项功能由一个采单来选择。 二.实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 ) 实验步骤: (1)把myfile.data 数据文件拷到C 盘(因为里面有一些初始数据)。 (2) 在C 盘下创建文件夹:C:\wk\javacourse。 (3)把源代码文件StudentManagmentSystem.java 拷到该文件夹之下,并编译、解释执行。 (4)按照你的想法,修改程序,体会有关标准类的使用方法。 源程序: package javacourse; import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; public class StudentInfoManagment extends WindowAdapter implements ActionListener { Frame mainWindow;MenuBar mb; Menu menu; MenuItem[] actions; Dialog d1,d2; Font font; java.awt.List[] lists; Label[] titles; /***Controls for inputing student's info ***/ Label[] d1Labs; TextField[] d1TFs; Button[] d1Btns; Checkbox[] d1CBs; CheckboxGroup d1Grp;Button d1Quit; /*** Some constant strings ***/ final String[] messages = { "Input student'info", "Display all students'infos", "Save data into the file", "Load info from the file", }; /*** Hashtable to handle students' infos ***/ Hashtable<String,STUDENT> students = new Hashtable<String,STUDENT>(); final String[] d1Str = { "NAME","PHONE","EMAIL" }; final int NumberFunctionalities = 4; public StudentInfoManagment() { // TODO Auto-generated constructor stub } public void guiSetup() { mainWindow = new Frame("A Student Information System"); mainWindow.setSize(600,400); mainWindow.setLocation(100, 100); font = new Font("Times New Roman",Font.ITALIC,18); mainWindow.setFont(font); mb = new MenuBar(); menu = new Menu("Functionalities"); actions = new MenuItem[NumberFunctionalities]; for(int i=0;i<NumberFunctionalities;i++) { actions[i]=new MenuItem(messages[i]); menu.add(actions[i]); actions[i].addActionListener(this); } mb.add(menu); mainWindow.setLayout(new GridLayout(1,4)); titles = new Label[4]; lists = new java.awt.List[4]; for(int i=0;i<4;i++) { 3 titles[i]= new Label(); lists[i]=new java.awt.List(); } titles[0].setText("NAME"); titles[1].setText("PHONE"); titles[2].setText("EMAIL"); titles[3].setText("SEX"); for(int i=0;i<4;i++) mainWindow.add(lists[i]); mainWindow.setMenuBar(mb); mainWindow.addWindowListener(this); /***Dialog 01 setup ***/ d1 = new Dialog(mainWindow,messages[0],false); d1.setBounds(100,100,400,200); d1Labs = new Label[3]; d1TFs = new TextField[3]; for(int i=0;i<3;i++) { d1Labs[i]= new Label(d1Str[i]); d1TFs[i] = new TextField(20); } d1CBs = new Checkbox[2]; d1Grp = new CheckboxGroup(); d1CBs[0]=new Checkbox("Male",d1Grp,true); d1CBs[1]=new Checkbox("Female",d1Grp,false); d1Btns = new Button[2]; d1Btns[0] = new Button("SUBMIT"); d1Btns[1] = new Button("RESET"); d1Quit = new Button("QUIT"); d1Btns[0].addActionListener(this); d1Btns[1].addActionListener(this); d1Quit.addActionListener(this); d1.setLayout(new GridLayout(6,2)); for(int i=0;i<3;i++) { d1.add(d1Labs[i]); d1.add(d1TFs[i]); } d1.add(d1CBs[0]); d1.add(d1CBs[1]); d1.add(d1Btns[0]); d1.add(d1Btns[1]); d1.add(d1Quit); 4 mainWindow.setVisible(true); } public void actionPerformed(ActionEvent e) { Object o = e.getSource(); if(o==actions[0]) { d1.setVisible(true); } else if(o==d1Btns[0]) { String name,phone,email; boolean isFemale; name = d1TFs[0].getText(); phone= d1TFs[1].getText(); email= d1TFs[2].getText(); isFemale=d1CBs[1].getState(); STUDENT aStudent = new STUDENT(name,phone,email,isFemale); students.put(name,aStudent); } else if(o==d1Btns[1]) { for(int i=0;i<3;i++) d1TFs[i].setText(""); } else if(o==d1Quit) { d1.dispose(); } else if(o==actions[1]) { for(int i=0;i<4;i++) lists[i].removeAll(); Enumeration<STUDENT> enu = students.elements(); StringBuffer buf = new StringBuffer(); String sexStr; while(enu.hasMoreElements()) { STUDENT stu = enu.nextElement(); 5 if(stu.isFemale)sexStr="Female"; else sexStr="Male"; lists[0].add(stu.getName()); lists[1].add(stu.getPhone()); lists[2].add(stu.getEmail()); lists[3].add(sexStr); } } else if(o==actions[2]) { try{ File file = new File("C:\\myfile.data"); FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(students); fos.close(); oos.close(); }catch(Exception ex) { ex.printStackTrace(); } } else if(o==actions[3]) { try{ File file = new File("C:\\myfile.data"); FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fis); Hashtable temp = (Hashtable)ois.readObject(); Enumeration<STUDENT> enu = temp.elements(); while(enu.hasMoreElements()) { STUDENT stu = enu.nextElement(); students.put(stu.getName(), stu); } fis.close(); ois.close(); }catch(Exception ex) { ex.printStackTrace(); } 6 } } public void windowClosing(WindowEvent e) { System.exit(0); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new StudentInfoManagment().guiSetup(); } } class STUDENT implements Serializable { private String name,phone,email; boolean isFemale; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public boolean isFemale() { return isFemale; } public void setFemale(boolean isFemale) { this.isFemale = isFemale; } public STUDENT(String name, String phone, String email, boolean isFemale) { 7 super(); this.name = name; this.phone = phone; this.email = email; this.isFemale = isFemale; } public STUDENT() { super(); // TODO Auto-generated constructor stub } } 三、主要实验工具、仪器设备及耗材 个人计算机,Eclipse 第二部分:实验结果分析 一.实验结果描述 主界面:在采单Functionalities 中共有四个选项: Input student’s info 弹出一个对话框用于输入某个学生的四项信息。见下图: 采单的第二项:Display all students’ info。把所有学生的信息显示在四个列表里。(见主界面) 采单的第三项:Save data into the file。把数据保存到名为C:\myfile.data 的文件中。 采单的第四项:Load data from the file。从以上的文件中加载旧数据,并把其追加到运行的哈希表中。 二.实验小结、建议及体会 经过这次实验,我对可视化编程、数据结构,以及文件输入、输出流有了更深的掌握,而且对java中使用Hash表来处理这样的Java Bean有了进一步了解,并且通过这实验动手实践了所学的知识,增强了自己的动手能力,同时开阔了视野,为自己以后的学习打下了基础。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服