资源描述
学生学号
实验课成绩
武汉理工大学
学 生 实 验 报 告 书
实验课程名称 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有了进一步了解,并且通过这实验动手实践了所学的知识,增强了自己的动手能力,同时开阔了视野,为自己以后的学习打下了基础。
展开阅读全文