Skip to content

gmyrak/books

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание программы

Интерфейс пользователя

Приложение предоставляет простой консольный интерфейс для работы с библиотекой. В меню верхнего уровня присутствуют 5 операций. Нажатие соответствующей цифры сразу же активирует функцию (без нажатия ENTER).

1 - SELECT, 2 - INSERT, 3 - UPDATE, 4 - DELETE, 5 - EXIT

1 - SELECT

Дополнительно предлагается ввести первые буквы названия книги. Выводимые результаты будут соответственно отфильтрованы. Если ввести пустую строку (просто ENTER) - показываются все книги. В результатах присуствуют колонки id - идентификатор книги, title - название книги. Идентификатор потребуется для использования в других операциях (UPDATE, DELETE). После названия каждой книги выводится список ее авторов.

SELECT:
Enter the first letters of book's title, or nothing (all books)
> Р
5       Робинзон Крузо - Даниэл Дефо
13      Русские народные сказки -
18      Руслан и Людмила - Пушкин Александр Сергеевич

Запрос для выборки:

select b.id, b.title, GROUP_CONCAT(a.name, ', ') au from books b
left join lnk_books_authors l on b.id = l.book_id
left join authors a on l.author_id = a.id
where b.title like :title
group by b.id, b.title";

2 - INSERT

Добавить новую книгу в библиотеку. Сначала предлагается ввести название книги, потом автора. Можно ввести несколько авторов, разделяя их имена запятыми. Каждый из этих авторов будет связан с книгой. Если имя автора уже есть в таблице - используется существующий идентификатор, в противном случае добавляется новый автор.

INSERT:
Enter book title
> Алгебра 9 кл.
Coma separated list of authors
> Мерзляк, Полонский, Якир
1 was added

При вводе пустого название (ENTER) происходит возврат в главное меню и новая книга не добавляется. Возможен пустой список авторов.

3 - UPDATE

Редактирование названия книги и списка авторов. Требуется ввести идентификатор книги для редактирования, потом новое название. Если книга не найдена (ошибочный идентификатор) сразу возвращаемся в меню. Пустой ввод оставляет название без изменений.

После ввода нового названия предлагается ввести изменения в список авторов. Введите список дополнительных авторов, разделяя их имена запятыми. Если автора требуется удалить из списка, поставьте знак - перед именем. Минусование отсутствующих авторов не оказывает никакого эффекта.

UPDATE:
Enter book number for update
> 19
Title: Наследник из калькуты
Enter new book's title
> Наследник из Калькутты
1 Book name was updated
Authors: Штильмарк, Василевский
Coma separater lisn for add (<name>) or delete ( -<name> )
> -Штильмарк, -Василевский, Роберт Штильмарк
Authors add: 1; delete: 2

4 - DELETE

Удаление книги. Требуется ввести идентификатор книги. Вместе с книгой каскадно удаляются и все записи из связующей таблицы.

DELETE:
Enter book's number to delete
> 19
1 was deleted

5 - EXIT

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

База данных

В файловой базе данных SQLite хранятся данные о книгах и авторах.

Таблицы:

  • books
  • authors
  • lnk_books_authors
CREATE TABLE [books](
  [id] INTEGER PRIMARY KEY AUTOINCREMENT, 
  [title] VARCHAR NOT NULL);
  
CREATE TABLE [authors](
  [id] INTEGER PRIMARY KEY AUTOINCREMENT, 
  [name] VARCHAR NOT NULL);
  
CREATE TABLE [lnk_books_authors](
  [book_id] INTEGER REFERENCES [books]([id]) ON DELETE CASCADE, 
  [author_id] INTEGER REFERENCES [authors]([id]) ON DELETE CASCADE, 
  PRIMARY KEY([book_id], [author_id]));  

Таблица lnk_books_authors служит для связи "многие ко многим" между книгами и авторами.

Файл базы данных

Файл SQLite базы данных должен иметь имя books.db, однако полный путь к этому файлу жестко не задан. Программа будет искать базу сначала в текущем каталоге, если не найдет - на уровень выше, потом еще выше, и так до корневой директории. При запуске показывается полный путь к используемой базе данных, например:

Using database file: D:\Projects\books\books.db

В то время как текущий каталог приложения здесь d:\Projects\books\bin\Debug\

Если файл books.db не найден, программа завершается с ошибкой.

About

Тестовое задание Devart

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages