Решение задач по математике | Лабораторная работа на тему работа со сканером | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Лабораторная работа на тему работа со сканером


ЛАБОРАТОРНАЯ РАБОТА №6-7. НА ТЕМУ РАБОТА СО СКАНЕРОМ. СОЗДАНИЕ МЕНЮ. РАБОТА С ФАЙЛАМИ.

Откройте Java-проект, созданный в лабораторной работе №4. Изменим набор классов Item, Book, MusicCD, MusicDVD и TestItem для организации работы со сканером и возможностью ввода и вывода данных в внешние файлы.

Первая задача – это работа со сканером. Изменим наши классы так, чтобы данные для новых объектов классов пользователь ввод сам с клавиатуры в консоле. Также добавим для удобства общее пользовательское меню для работы с классами, в котором организуем ввод данных для создания объектов классов, сохранение и выгрузку данных в текстовые файлы.

Вторая задача – это организация работы с файлами, а именно сохранение и извлечение данных.

Первая задача

Откройте первый класс – Book.class. Добавим возможность в класс ввода данных пользователем с клавиатуры.

Для возможности работы со сканером подключите библиотеку import java. util. Scanner;

Для работы со сканером создайте следующую процедуру:

public static Book makeNewBook(Scanner in) {

in. skip("rn");

System.out.println("Программное создание объекта класса Book….");

System.out.println("Введите название книги….");

String newnaimenovanie = in. nextLine();

System.out.println("Введите фамилию автора….");

String newname = in. nextLine();

System.out.println("Введите год издательства….");

int newgod = in. nextInt();

System.out.println("Введите издательство….");

String newizdatelstvo = in. nextLine();

System.out.println("Введите цену ….");

float newprice = in. nextFloat();

System.out.println("Введите кол-во страниц….");

int newdlitelnost = in. nextInt();

return new Book (newnaimenovanie, newname, newgod, newizdatelstvo, newprice, newdlitelnost); // возвращение введенных значений в конструктор класса

}

Далее самостоятельно измените аналогично классы MusicCD, MusicDVD.

Затем добавим пользовательское меню в класс TestItem.

Подключите библиотеку import java. util. Scanner;

Создайте следующую процедуру, которая выведет меню на экран:

private static void showMenu() {

System.out.println("n");

System.out.println("1 — Show collection");

System.out.println("2 — Add new Book");

System.out.println("3 — Add new MusicCD");

System.out.println("4 — Add new MusicDVD");

System.out.println("5 — Save program");

System.out.println("6 — Load program");

System.out.println("7 — Exit");

}

Далее, для того, чтобы организовать возможность пользователю выбирать элементы меню с клавиатуры реализуем работу со сканером. Для этого внутри класса TestItem в главной процедуре main объявим сканер и реализуем работу с меню. Для этого измените процедуру main на следующую:

public static void main (String args[]) {

Scanner in = new Scanner(System.in).useDelimiter("rn");

showMenu();

while(true) {

int menuItem = in. nextInt();

if (menuItem == 7) {

System.out.println("Bye");

System.exit(0);

} else if (menuItem == 1) {

//пока ничего не делаем

} else if (menuItem == 2) {

Book newBook = Book.makeNewBook(in);

System.out.println("Информация про книгу: "+newBook. toString());

} else if (menuItem == 3) {

MusicCD newMusicCD= MusicCD. makeNewMusicCD(in);

System. out. println("Информация про музыку: "+newMusicCD. toString());

} else if (menuItem == 4) {

MusicDVD newMusicDVD= MusicDVD. makeNewMusicDVD(in);

System. out. println("Информация про фильм: "+newMusicDVD. toString());

} else if (menuItem == 5) {

// сохранить данные в файл

} else if (menuItem == 6) {

// извлечь данные из файла

}

showMenu();

}

}

Далее, организуем работу с коллекциями. Например, мы хотим вводить не по одному объекту, а хотим, чтобы каждый новый объект добавлялся в коллекцию Book, MusicCD, MusicDVD.

Создадим специальный класс для работы с коллекцией. Создайте и добавьте в свой пакет новый класс Compar. class.

import java. util.*;

public class Compar {

private Comparator<Item> comparator = null; // объявление будущей сортировки

private ArrayList<Item> item = new ArrayList<Item>(); // создание коллекции списка-массива типа класса Item – общего родительского класса

public void setItem(ArrayList<Item> item) { // присвоение коллекции

this.item = item;

}

public ArrayList<Item> getItem(){ // возвращение коллекции

return item;

}

public void add(Item item_service) {

// добавление элементов в коллекцию

this.item.add(item_service);

}

public void setComparator(Comparator<Item> comparator) {

this.comparator = comparator;

}

public void show() {

// отображение на экран всей коллекции

if (this.comparator != null)

Collections.sort(this.item, this.comparator); // сортировка коллекции

Iterator<Item> iter = this.item.iterator(); // установка итератора на начало коллекции

while (iter.hasNext()) { // пока не конец коллекции

System.out.println(iter.next()); // вывод объектов коллекции

}

}

}

Далее изменим базовый родительский класс для реализации интерфейса сортировки по коллекции.

Для этого откройте класс Item.class вверху подключите библиотеку import java.util.*;, чтобы были доступны интерфейсы Collection, ArrayList, Iterator, Comparator.

Далее измените объявление класса на следующее:

public class Item implements Comparable<Item>

Далее необходимо описать в классе метод сортировки, допустим мы будем сортировать коллекцию по возрастанию цены продукции. Для этого добавьте еще один метод в класс:

public int compareTo(Item another) {

return (int)(this.price — another. getPrice());

}

Далее изменим класс TestItem в главной процедуре main. Измените библиотеку на import java.util.*;, чтобы были доступны интерфейсы Collection, ArrayList, Iterator, Comparator.

Внутри процедуры main создайте новый объект класса Compar:

Compar compar = new Compar();

Затем изменим меню. Для того, чтобы обеспечить создание новых объектов и добавление их в коллекцию нужно вызвать метод compar. add(obj).

Например, для объектов книг меню изменится на:

else if (menuItem == 2) {

Book newBook = Book.makeNewBook(in);

System.out.println("Информация про книгу: "+newBook. toString());

compar. add(newBook);

}

Аналогично выполните изменение меню для объектов классов MusicCD и MusicDVD.

Далее, чтобы вывести всю отсортированную коллекцию на экран нужно вызвать метод compar. show(). Поэтому измените соответствующее меню на:

else if (menuItem == 1) {

compar. show(); }

Варианты заданий для самостоятельной работы

1)  Записная книжка контактов. Выполнить преобразование класса в коллекцию. Создать пользовательское меню. Организовать добавление объектов в коллекцию и вывод отсортированных объектов коллекции на экран с помощью меню.

2)  Система управления доставкой товара. Выполнить преобразование класса в коллекцию. Создать пользовательское меню. Организовать добавление объектов в коллекцию и вывод отсортированных объектов коллекции на экран с помощью меню.

3)  Телепрограмма. Выполнить преобразование класса в коллекцию. Создать пользовательское меню. Организовать добавление объектов в коллекцию и вывод отсортированных объектов коллекции на экран с помощью меню.

4)  Гостиница. Выполнить преобразование класса в коллекцию. Создать пользовательское меню. Организовать добавление объектов в коллекцию и вывод отсортированных объектов коллекции на экран с помощью меню.

5)  Реализация готовой продукции. Выполнить преобразование класса в коллекцию. Создать пользовательское меню. Организовать добавление объектов в коллекцию и вывод отсортированных объектов коллекции на экран с помощью меню.

Вторая задача

Откройте Java-проект, созданный в лабораторной работе №6. Изменим набор классов Item, Book, MusicCD, MusicDVD и TestItem для организации возможности ввода и вывода данных в внешние файлы.

Для этого варианты все классы сохраняемых объектов должны реализовывать интерфейс java. io. Serializable, например изменим базовый класс:

import java. io.*;

public class Item implements Comparable<Item>, java. io. Serializable

Аналогично самостоятельно реализуйте интерфейс java. io. Serializable в классах Book, MusicCD, MusicDVD.

Затем необходимо создать в классе-родителе Item. class создать два метода для сохранения ( метод save() )и извлечения (метод load() ) объектов из внешнего файла.

public void save(DataOutputStream out) throws IOException {

}

public Item load(DataInputStream in) throws IOException {

return null;

}

Эти методы пока будут только обрабатывать исключения в случае ошибки, а саму реализацию пропишем в классе реализующего коллекции Compar.class. Аналогично самостоятельно реализуйте интерфейс java. io. Serializable в этом классе.

Далее создадим два метода для сохранения и загрузки коллекции в текстовый файл:

public void save(DataOutputStream out) throws IOException {

out. writeInt(this.item.size());

Iterator<Item> iter = this.item.iterator();

while (iter. hasNext()) {

iter. next().save(out); // сохранить объект в текстовый файл

}

}

public Compar load(DataInputStream in) throws IOException {

int size = in. readInt();

for (int i = 0; i < size; i++) {

String x = in. readUTF();

if (x. equals("Book")){

Booknew book = new Booknew();

this.item.add(book. load(in)); // добавить объект в коллекцию

}

}

return this;

}

Далее откройте класс, который будет все запускать TestItem.class. Аналогично самостоятельно реализуйте интерфейс java. io. Serializable в этом классе.

Cоздадим в нем два метода Saving и Loading:

public static void Saving(Compar compar){

DataOutputStream out = null;

ObjectOutputStream out1 = null;

try {

out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File("test. txt"))));

out1 = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(new File("test1.txt"))));

try {

compar. save(out);

out1.writeObject(compar. getItem());

} catch (IOException e) {

System.out.println("Maybe disk is full, or you haven’t permissions to write");

}

try {

out. close();

out1.close();

} catch (IOException e) {

System.out.println("Ошибка");

}

} catch (FileNotFoundException e) {

System.out.println("Отсутсвует файл.");

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

public static Compar Loading(Compar compar){

DataInputStream in = null;

ObjectInputStream in1 = null;

try {

in = new DataInputStream(new BufferedInputStream(new FileInputStream(new File("test. txt"))));

in1 = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File("test1.txt"))));

try {

compar. setItem((ArrayList<Item>)in1.readObject());

} catch (IOException e) {

System.out.println(e. getMessage());

e. printStackTrace();

System.out.println("Maybe disk is full, or you haven’t permissions to write");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e. printStackTrace();

}

try {

in. close();

in1.close();

} catch (IOException e) {

System.out.println("ошибка");

}

} catch (FileNotFoundException e) {

System.out.println("Отсутсвует файл.");

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

return compar;

}

Далее изменим меню для запуска созданных методов. Для этого измените следующие пункты меню:

else if (menuItem == 5) {

Saving(compar);

}

else if (menuItem == 6) {

compar. getItem().clear();

Loading(compar);

compar. show();

}

При запуске программы, сначала подобавляйте элементы в коллекцию, например, нажав 2 элемент меню.

Затем просмотрите результат, нажав на 1 элемент меню.

Затем сохранитесь в текстовый файл под именем test1.txt. Откройте этот файл в своей папке и проверьте, что данные действительно были туда записаны.

Затем нажмите на 6 элемент меню, с помощью которого будут добавлены объекты в коллекцию из текстового файла. Затем просмотрите результат, нажав на 1 элемент меню и убедитесь, что все объекты из текстового файла были добавлены.

Варианты заданий для самостоятельной работы

1)  Записная книжка контактов. Организовать сохранение объектов из коллекции в текстовый файл и загрузку объектов из текстового файла в коллекцию. Изменить пользовательское меню для добавления работы с внешними файлами.

2)  Система управления доставкой товара. Организовать сохранение объектов из коллекции в текстовый файл и загрузку объектов из текстового файла в коллекцию. Изменить пользовательское меню для добавления работы с внешними файлами.

3)  Телепрограмма. Организовать сохранение объектов из коллекции в текстовый файл и загрузку объектов из текстового файла в коллекцию. Изменить пользовательское меню для добавления работы с внешними файлами.

4)  Гостиница. Организовать сохранение объектов из коллекции в текстовый файл и загрузку объектов из текстового файла в коллекцию. Изменить пользовательское меню для добавления работы с внешними файлами.

5)  Реализация готовой продукции. Организовать сохранение объектов из коллекции в текстовый файл и загрузку объектов из текстового файла в коллекцию. Изменить пользовательское меню для добавления работы с внешними файлами.

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020

А ты боишься COVID-19?

 Пройди опрос и получи промокод