Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-й семестр / Лаб.работы / Мет.ук. к л.р.6.doc
Скачиваний:
65
Добавлен:
12.03.2016
Размер:
300.54 Кб
Скачать

Задание 2

Изменить программу, созданную на Java на основе задания 2 лабораторной работы № 5. В класс индивидуального варианта добавить метод diskIn(), который записывает поля объекта в файл и метод diskOut(), который читает поля объекта из файла. В метод main() добавить запись массива объектов класса индивидуального варианта в файл и чтения их из файла с использованием методов diskIn() и disk() .

Пример 2

В листинге 2 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, а также осуществляется поиск информации о рейтинге студента по его фамилии. Исходный список студента сортируется по фамилии в алфавитном порядке. В программе имеется возможность записи списка студентов в текстовый файл и чтение списка студентов из текстового файла.

Для создания программы использовалась среда разработки NetBeans IDE 8.0. На рисунке 3 показан состав проекта программы.

Рисунок 3 – Состав проекта программы

Создание проекта в NetBeans: Файл -> Создать проект -> Java -> Приложение Java.

Компиляция, сборка и выполнение проекта: Выполнить -> Запустить проект.

На рисунке 4 показан результат выполнения программы.

Листинг 2

// Student.java

package primer2;

import java.util.*;

import java.io.*;

class Student implements Comparable

{ private String fam;

private String name;

private int grade; //рейтинг

public Student(String fam, String name, int grade)

{ this.fam = fam;

this.name = name;

this.grade = grade;

}

public Student(){};

public String getfam(){ return fam;}

public String getname(){ return name;}

public int getgrade(){ return grade;}

public void input()throws Exception

{ Scanner in = new Scanner(System.in);

System.out.print("Фамилия: "); fam = in.nextLine();

System.out.print("Имя: "); name = in.nextLine();

System.out.print("Рейтинг: "); grade = in.nextInt();

if (grade < 0 || grade > 100)

throw new Exception("Ошибка: Рейтинг должен быть от 0 до 100!");

}

public void output()

{ System.out.printf("%-10s%-10s %d\n",fam,name,grade);

}

public void diskOut(BufferedWriter bw) throws Exception

{ bw.write(fam + "\r\n");

bw.write(name + "\r\n");

bw.write(grade + "\r\n");

}

public void diskIn(BufferedReader br) throws Exception

{fam = br.readLine();

name = br.readLine();

grade = Integer.parseInt(br.readLine());

if (grade < 0 || grade > 100)

throw new Exception("Ошибка в содержимом файла: Рейтинг должен быть от 0 до 100!");

}

@Override

public int compareTo(Object obj)

{ Student tmp = (Student)obj;

return fam.compareTo(tmp.getfam());

}

}

// Primer2.java

package primer2;

import java.util.*;

import java.io.*;

class Primer2 {

public static void main(String[] args) {

Scanner in; int p; int n; Student[] st = null;

boolean ff = true;

try

{do

{

System.out.println("Введите: ");

System.out.println("1 - Ввод списка студентов и запись в файл");

System.out.println("2 - Чтение списка студентов из файла");

System.out.print(">");

in = new Scanner(System.in);

p = in.nextInt();

if (p == 1)

{ ff = false;

System.out.print("Введите кол-во студентов: ");

in = new Scanner(System.in);

n = in.nextInt();

st = new Student[n];

for (int i = 0; i<st.length; i++)

{ st[i] = new Student();

st[i].input();

}

BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\Student.txt"));

bw.write(n + "\r\n");

for(int i = 0; i<n; i++)

st[i].diskOut(bw);

bw.close();

}

if (p == 2)

{ ff = false;

BufferedReader br = new BufferedReader(new FileReader("E:\\Student.txt"));

n = Integer.parseInt(br.readLine());

st = new Student[n];

for (int i = 0; i < n; i++)

{ st[i] = new Student();

st[i].diskIn(br);

}

br.close();

}

}while(ff);

Arrays.sort(st);

System.out.println("Список студентов: ");

System.out.printf("%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг");

for (Student st1 : st) {

st1.output();

}

int min = st[0].getgrade();

for (Student st1 : st) {

if (st1.getgrade() < min) {

min = st1.getgrade();

}

}

in = new Scanner(System.in);

System.out.print("Укажите фамилию студента: ");

String fam = in.nextLine();

String f; int fl = 0;

for (Student st1 : st) {

f = st1.getfam();

if (f.equals(fam)) {

System.out.println("Рейтинг студента "+ fam+" - " + st1.getgrade());

fl = 1;

}

}

if (fl == 0) System.out.println("Нет в списке студента "+fam);

System.out.println("Список студентов с минимальным рейтингом: ");

System.out.printf("%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг");

for (Student st1 : st) {

if (st1.getgrade() == min) {

st1.output();

}

}

}

catch (InputMismatchException e)

{ System.out.println("Это НЕ число!!!" + e);

}

catch (NumberFormatException e)

{ System.out.println("Ошибка чтения из файла " + e);}

catch (Exception e)

{ System.out.println(e);}

}

}

Рисунок 4 – Результат выполнения программы

Соседние файлы в папке Лаб.работы