图形用户界面和文件的实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.实验目的及实验环境

1)掌握File类及其API函数

2 ) 熟练掌握java文件读写操作

3)掌握字节流,字符流,对象流

二.实验内容

1.编写文件复制功能,用命令行方式提供源文件名和目标文件名

2.编写一个程序,从键盘输入5个学生的信息(包含学号、姓名、3科成绩),统计各个学生的总分,然后将学生信息和统计结果存入二进制数据文件STUDENT.DAT文件中;

3.编写一个程序,从上题中建立的STUDENT.DAT文件中读取数据,按学生的总分递减排序后,显示前3个学生的学号、姓名和总分;

4.编写一个程序,从键盘输入5个学生的信息(包含学号、姓名、3科成绩),统计各个学生总分,然后将学生信息和统计结果存入文本文件STUDENT.TXT 中;

5.编写一个程序,从上题中建立的STUDENT.TXT文件中读取数据,按学生的总分递减排序后,显示前3个学生的学号、姓名和总分;

三.方案设计

1. 输入源文件时须从所存在的目录下写,而输入目标文件时需要判断,如果不存在就创建,然后用while语句实现读写复制。创建一个类FileCopyTest,使用JUNIT4测试方法执行。

2. 创建一个学生类Student,实现Serializable接口,在DAT文件中,文件使用二进制的方式保存,为乱码,需要使用ObjectInputStream和ObjectOutputStream两个类完成读写;在TXT文件中,文件使用UTF-8编码,中文不会乱码,此时需要使用BufferedWriter和BufferedReader完整文件读写;四.测试数据及运行结果

1.正常测试数据(3组)及运行结果;

2.非正常测试数据(2组)及运行结果。

五.总结

1.实验过程中遇到的问题及解决办法;

保存及读取对象的数据时,应该在流中以对象为单位进行传输,这时就要用到对象流,先实现Serializable接口,创建InputStream流,及对象输入流或对象输出流

完的美的程序需要多次调整,比如说异常的处理需要处理Runtime异常和代码中抛出的异常;

2.对设计及调试过程的心得体会。

异常的处理需要多次调试,观察各种RuntimeException的出现方式,分别使用try--catch语句进行捕获并处理;简化IO操作,可以使用Jakarta的common.io包进行代码编写

通过这次试验更加懂得学习JA V A要经常动手练习,在练习中才能发现错误,像一些小知识点要记录下来经常复习

六.代码

1.public class FileCopyTest {

public void fileCopy() {

String originalFileName = "";

String destFileName = "";

File originalFile = null;

File destFile = null;

FileInputStream fis = null;

FileOutputStream fos = null;

Scanner scanner = new Scanner(System.in);

System.out.print("请输入源文件名(项目目录下):");

try {

originalFileName = scanner.next();

originalFile = new File(originalFileName);

if (!originalFile.exists()) {

System.out.println("目标文件不存在");

} else {

System.out.print("请输入目标文件名称:");

destFileName = scanner.next();

destFile = new File(destFileName);

if (destFile.exists()) {

System.out.println("目标文件存在,覆盖文件");

} else {

boolean flag = destFile.createNewFile();

if (flag == true) {

System.out.println("目标文件创建成功");

} else {

System.out.println("目标文件创建失败");

throw new IOException();

}

}

fis = new FileInputStream(originalFile);

fos = new FileOutputStream(destFile);

byte[] buffer = new byte[1024];

int length = 0;

while ((length = fis.read(buffer)) != -1) {

fos.write(buffer, 0, length);

}

System.out.println("文件复制成功");

}

} catch (FileNotFoundException e) {

e.printStackTrace();

System.out.println("目标文件不存在");

} catch (IOException e) {

e.printStackTrace();

System.out.println("目标文件读取失败");

}finally{

try {

fis.close();

fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

4.public class Student implements Serializable{

private static final long serialVersionUID = 3880353223704557926L;

private String id;

private String name;

private int chinese;

private int math;

private int english;

private int total;

public Student(String id, String name, int chinese, int math, int english) { super();

相关文档
最新文档