Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

а Индекс уникален для любого экземпляра книги среди всех книг в библиотеках города Автор строка Назв

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

Лабораторная задача

Создать консольное приложение для управления каталогом книг в нескольких библиотеках. Оно позволяет найти книгу в одной или нескольких библиотеках, заказать ее или сообщить о возврате.

Книга

Каждая книга характеризуется следующими полями:

- Уникальный индекс (положительная цифра). Индекс уникален для любого экземпляра книги среди всех книг в библиотеках города

- Автор (строка)

- Название (строка)

- Дата выдачи (если книга выдана на руки, или пустая строка)

- Абонент (строка, если книга выдана на руки, или пустая строка)

Библиотеки.

В городе существует несколько библиотек. Решением исполкомы организуется предприятие «Центральный библиотечный индекс», который позволит найти и заказать нужную книгу в любой из библиотек.

В каждой из городских библиотек уже есть компьютерный индекс, но каждая из них использует один из следующих видов хранения данных об издании: Text или CSV. В будущем возможны появления систем хранения другого типа, например DB (хранение в базе данных)

Компьютер Центрального библиотечного индекса имеет прямой доступ чтение/запись к сетевой файловой системе каждой из библиотек.

В Text-библиотеках, информация о каждой книге хранится в отдельном файле определенной директории в формате, указанном в приложении 1. В CSV-библиотеках (от английского comma-separated values – значения разделенные запятыми, классических общеизвестный формат) каждой книге соответствует отдельная строка в одном из файлов, также лежащих в определенной директории.

С точки зрения нашего приложения, мы можем рассматривать хранилище данных как директорию на диске следующего вида:

Libraries

|-CSV_Lenina

| |- A.csv

| |- B.csv

| |- …

|-CSV_Karbysheva

| |- A.csv

| |- B.csv

| |- …

|-Text_GRSU

| |- 01.properties

| |- 02.properties

| |- …

Каждой библиотеке соответствует директория вида Text_<имя библиотеки> или CSV_<имя библиотеки> в каталоге Libraries.

Приложение

Приложение «Центральный библиотечный индекс» представляет собой исполняемую java-программу, которая поддерживает интерактивный режим с помощью нескольких команд (вводимых пользователем с консоли) и ответов на них. О каждой из команд которые пользователь может ввести с консоли ниже. Если формат команды не совпадает с указанным, программа возвращает в вывод строку SYNTAXERROR.

Для простоты задачи, названия библиотек, Книг, авторов, абонентов не содержат символов запятая, знак равенства, пробел и кавычка.

FIND

Найти книгу в библиотеке.

Формат ввода:

FIND [author=<автор>] [name=<bookname>]

Один из параметров может отсутствовать. Книга считается подходящей по критерию если в ее имя или автора входит целиком указанная пользователем строка. Например, запрос

FIND author=Bulg

Должен вернуть все книги авторов Bulgakov и Bulgarin.

Вывод в случае если книга найдена и может быть взята на абонемент:

FOUND id=<индекс1> lib=<библиотека1>

FOUND id=<индекс2> lib=<библиотека2>

Вывод в случае если книга найдена но все экземпляры на руках:

FOUNDMISSING id=<индекс1> lib=<библиотека1> issued=<дата выдачи1>

FOUNDMISSING id=<индекс2> lib=<библиотека2> issued=<дата выдачи2>

Вывод в случае если книга не найдена:

NOTFOUND

ORDER

Заказать книгу на абонемент

Формат ввода:

ORDER id=<индекс> abonent=<имя абонента>

Вывод в случае если книга успешно заказана:

OK abonent=<имя абонента> date= <текущая дата>

В случае успешного заказа, приложение модифицирует соответствующий файл данных таким образом что для этой книги помечается дата выдачи и имя абонента

Вывод в случае если книга уже у кого-то на руках:

RESERVED abonent=<имя абонента> date= <текущая дата>

Вывод в случае если книга с таким индексом не найдена:

NOTFOUND

RETURN

Возврат книги в библиотеку.

Формат ввода:

RETURN id=<индекс>


Вывод в случае если книга успешно возвращена:

OK abonent=<имя абонента>

В случае успешного заказа, приложение модифицирует соответствующий файл данных таким образом что для этой книги сбрасывается дата выдачи и имя абонента

Вывод в случае если книга согласно базе данных уже в библиотеке:

ALREADYRETURNED

Вывод в случае если книга с таким индексом не найдена:

NOTFOUND

EXIT

Выход из приложения

Приложение 1. Пример файла хранящегося в Text-хранилище

Index=1000

Author=Asimov

Name=Foundation

Issued=2006.12.10 // это поле может содержать пустое значение

Issuedto=Yavorchuk // это поле может содержать пустое значение

Приложение 2. Пример файла хранящегося в CSV-хранилище

1000, Asimov,Foundation,2006.12.10, Yavorchuk

1001,Bulgakov,Margaritha,,

1002,Bulgakov,SobachjeSerdce, 2006.12.06,Slapik

1003,Oreilly,ThinkingInJava,,


Знания и инструменты.

Для разработки этого приложения, вам надо обладать базовыми знаниями о

  1.  синтаксисе языка Java
  2.  базовых пакетах JDK, таких как java.lang, java.util
  3.  принципах объектно-ориентированного программирования и шаблонах ООП (OOP patterns)

Как инструментарий, мы рекомендуем использовать IDE IntelliJ IDEA или Borland Jbuilder на выбор. Вы можете скачать их из Интернета или найти на дисках с ПО.

Используйте:

  1.  Java: JDK версии 1.4.х или 1.5.x.

Проектирование кода

Мы хотели бы увидеть в Вашем результате в первую очередь понимание принципов ООП и способность применять их на практике, декомпозицию кода на составляющие модули, а также Вашу способность изучать и применять документацию различного профиля.

Постарайтесь не писать программу «в столбик», по устаревшей схеме процедурного программирования. Подумайте, на какие независимые составные части (модули) вы можете разделить проект; старайтесь связать их посредством интерфейсов. Попытайтесь представить себе возможное изменение требований к проекту, например:

  1.  создать приложение такой же функциональности, только не консольное, а веб- или оконное
  2.  Изменить источник данных с файлов на диске на записи в БД

И постройте ваш код таким образом, чтобы такие изменения требовали от вас как можно меньшего объема переписанного кода.

Советы

Постарайтесь, чтобы ваш код выглядел читабельно. Комментарии (на английском языке) приветствуются. Следите за тем, сколько новых объектов вы создаете, какие места в вашем коде могут привести к медленной работе приложения, и по возможности оптимизируйте код с этой точки зрения. Заводите константы для предопределенных строк (например, имена HTML-элементов) вместо повторов строк в коде. Разделяйте классы по пакетам. Избегайте использования статических методов. При необходимости, создавайте специальные классы для доступа к объектам (Factories). Попробуйте по мере возможности отделить код, ответственный за отображение данных от кода, реализующего доступ к данным. Прежде чем писать какую-то функциональность самому, поищите – может аналогичная уже есть в JDK или пакетах сторонних разработчиков. Подумайте над организацией обработки исключений (Exceptions). Желательно, чтобы вашу программу было легко настроить и запустить.




1. Принятие роли в юношеской группе в зависимости от уровня идентичности
2. .1. Поняття договору найму оренди 1
3. . Проголошення ВР україни акту про державну незалежність відбулося 24 серпня 1991р
4. Иван 4 и его время
5. com-bestpslterium Самая большая библиотека ВКонтакте Присоединяйтесь Бывшему боксеру Джонни Фаррару пришлос
6. Задание- Сигналы поступают в контроллер в виде 8разрядных параллельных кодов по 4 каналам с интервалом 1 мс.
7. Об оказании друг другу помощи и поддержки в войне а также пункты о не заключении сепаратного мира
8. . Динамика внешней торговли Германии и России в 90е
9. Вариант 10 I. Прочитайте в Учебном объяснительном словаре терминов следующие статьи- стиль стилистическа
10. Тема занятия- Понятие предмет задачи социальной психологии Организационная форма занятия- лекция Цель
11. тематики Пол Эрдос и Альфред Реньи написав восемь статей о принципах формирования социальных сетей
12. Средняя общеобразовательная школа 8 Справка по итогам семестра
13. Расчет МДП-транзистора с индуцированным каналом.html
14. предмет и метод2
15. Статья- Критерии эффективности электронного документооборота
16. Могу ли Я действительно улучшить свою самодисциплину всего за десять дней
17. ИжГТУ имени МТКалашникова Воткинский филиал Автор- Уразбахтина А
18.  Введение Функция предпринимательства в теории К
19. Тема- Сущность биологическое и медицинское значение компенсации и адаптации приспособления
20. Нарушение периферического кровообращения