1、 学生学号 实验课成绩 武汉理工大学 学 生 实 验 报 告 书 实验课程名称 java语言与程序设计 开 课 学 院 指导老师姓名 学 生 姓 名 学生专业班级 2012 — 2013 学年 第 一 学期 实
2、验课程名称: java语言程序设计 实验项目名称 Java文件输入输出流 实验成绩 实验者 专业班级 组别 同组者 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一、 实验内容描述(问题域描述) 把下列数据写到一个名为c:\myfile.data 的文件中。 姓名 年龄 电子邮件 Zhang san 20 Zhang-San@ Li Si 18 Li_Si@ Wang Er Mazi 21 W
3、ang_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 并统计以上数值
4、之和。 二、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 ) 源程序: 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("Zha
5、ng 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("L
6、iu_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 =
7、 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"); BufferedRe
8、ader 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-gener
9、ated method stub MyClass mc = new MyClass(); mc.method01(); //mc.method02(); //mc.method03(); //依次调用method01()、method02()、method03() } } 三、主要实验工具、仪器设备及耗材 个人计算机,Eclipse 第二部分:实验结果分析(可加页) 一、 实验结果描述 先执行方法一: 再执行方法二: 最后执行方法三: 二. 实验小结、建议及体会 经过这次实验,我对j
10、ava语言有了初步认识,对如何使用java编程有了初步了解,并且尝试编出一个简单的小程序,实现了先生成文件再将数据写入文件的目的,这对我有很大的帮助,为我以后的java学习打下了基础,以后我会多加练习,争取更大的进步。 实验课程名称: java语言程序设计 实验项目名称 Java类继承及接口 实验成绩 实验者 专业班级 组别 同组者 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一. 实验内容描述(问题域描述) 1、接口之一定义四则运算的加减法,接口之二定义四则运算的
11、乘除运算。类一有一个打印一个字符串和一个整数的成员方法,要求打印的数据通过形式参数导入。类二继承类一并实现接口一和接口二,且含有用于计算20 和30 四则运算并打印计算结果的主函数。 2、利用标准输入流输入一元二次方程的三个系数,并解该方程。 二、 实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 ) 第一题源代码: 接口一: package javacourse; public interface Interface01 { public int add(int a, int b); public int sub(int a, int b); }
12、 接口二: 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 cla
13、ss 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 Aut
14、o-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 st
15、ub 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)); } } 第二题参考
16、代码: 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; } publ
17、ic 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()
18、 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 coe
19、fficient 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
20、 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=",
21、rt.getX2()); } else { rt.pstr("Don't exist real roots"); } } } 三、主要实验工具、仪器设备及耗材 个人计算机, Eclipse 第二部分:实验结果分析(可加页) 一、 实验结果描述 输入方程无解: 输入方程有解: 二、 实验小结、建议及体会 经过这次实验我对java的类继承及接口有了初步的认识,同时也进一步了解了java的各种类型和变量定义以及表达式的运算,并且亲自动手编了两个程序来巩固自己所学。java语言跟c语言极有相似之处又有不同之处,
22、这次实验让我对java语言的学习打下了很好的基础。 实验课程名称: java语言程序设计 实验项目名称 掌握可视化编程,数据结构,和文件输入、输出流 实验成绩 实验者 专业班级 组别 同组者 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一.实验内容描述(问题域描述) 实验内容: 编写一个表示学生信息(姓名,电话号码,电子邮箱,性别)的Java Bean。要求这个“结构体”实现java.io.Serializable,以便
23、能够把若干这样的对象写到文件中。使用java.util.Hashtable,即哈希表,来处理这样的Java Bean。使用文件输入、输出流和对象输入、输出流来读、写这样一个哈希表对象。 图形用户界面要用到采单,列表,对话框等。Java.awt.Menu, Dialog, List, 等。事件接口可以是java.awt.event.ActionListener 或 java.awt.event.MouseListener。对话框用于输入一个学生的四项信息,而四个列表用于显示所有学生的四项信息。软件具备四个功能:输入一个学生的信息,显示所有学生的信息,从文件中加载数据,以及把当前所有的数据保存到
24、文件中。而这四项功能由一个采单来选择。 二.实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等 ) 实验步骤: (1)把myfile.data 数据文件拷到C 盘(因为里面有一些初始数据)。 (2) 在C 盘下创建文件夹:C:\wk\javacourse。 (3)把源代码文件StudentManagmentSystem.java 拷到该文件夹之下,并编译、解释执行。 (4)按照你的想法,修改程序,体会有关标准类的使用方法。 源程序: package javacourse; import java.awt.*; import java.awt
25、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 stud
26、ent'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",
27、};
/*** Hashtable to handle students' infos ***/
Hashtable
28、oid 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 MenuIte
29、m[NumberFunctionalities];
for(int i=0;i 30、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); 31、
/***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 CheckboxGro 32、up();
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.a 33、ddActionListener(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 34、)
{
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(na 35、me,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 36、ngBuffer 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);
}
}
el 37、se 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 38、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 39、NT 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-g 40、enerated 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 41、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;
42、
}
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
}
}
三、主要实验工具、仪器设备及耗材
个人计算机,Ecl 43、ipse
第二部分:实验结果分析
一.实验结果描述
主界面:在采单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有了进一步了解,并且通过这实验动手实践了所学的知识,增强了自己的动手能力,同时开阔了视野,为自己以后的学习打下了基础。






