Разработка программы управления домашней библиотекой
Преимущества использования электронных каталогов. Структурное и функциональное проектирование компьютерной программы. Особенности процесса загрузка базы данных книг, сохранение базы данных. Вывод каталога книг на экран, меню сортировки программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 24.12.2017 |
Размер файла | 94,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. ОБЗОР ИСТОЧНИКОВ
1.1 Основные технологии
1.2 Обзор аналогов
2. СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ
3. ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ
4. РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ
4.1 Перемещение курсора в меню
4.2 Вывод рейсов хранящихся в базе данных
4.3 Сортировка данных
4.4 Изменение размеров окон
4.5 Работа с файлами
4.6 Использование потоков для перевода строк в числа
5. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
6. ТЕСТИРОВАНИЕ
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ВВЕДЕНИЕ
Трудно сейчас найти человека, который бы не читал книги. Электронные, аудиокниги или традиционные бумажные книги различных жанров. Читают везде, но особенно приятно это делать дома. И вот настаёт день, когда книг становится много. Найти интересующую книгу уже становится тяжело. Трудно вспомнить, дома ли та книга, которую полдня ищешь, или отдана другу, а он забыл её вернуть! И тогда возникает необходимость создания каталога домашней библиотеки, потому что каталог - это средство контроля за книгами и поддержания библиотеки в порядке.
Раньше владелец домашней библиотеки писал свой каталог в блокноте или на специальных бланках, куда вносились сведения об имеющихся книгах, их расположение в шкафах, а также пометки, если книга кому-то отдана, при таком ведении каталога записи редактировались очень сложно, так как необходимо заранее предусмотреть место для заметок, место для записи данных о новых поступлениях или место для записи, кому книга дана на прочтение.
Современные люди всё чаще отказываются от традиционных бумажных каталогов в пользу электронных, которые представлены специализированными программами для создания баз данных и потенциально обладающих самыми широкими возможностями. Но для пользования ими нужны некоторые навыки, для многих эти программы оказываются слишком сложными и разбираться в них, ради каталога домашней библиотеки готовы не все.
Представленная мной программа обладает простым интерфейсом, предусматривает поля для записи всех данных по книгам, не возникает проблем с редактированием и добавление новых записей.
Данное программное обеспечение должны по достоинству оценить люди, которые трепетно относятся к своему времени и стремятся к максимальной личной организации. Целевая аудитория - активный слой населения, имеющий доступ к современным технологиям, а также частные коллекционеры.
1. ОБЗОР ИСТОЧНИКОВ
1.1 Основные технологии
Язык С++ - компилируемый, статически типизированный язык программирования общего назначения третьего поколения, сочетающий в себе свойства как высокоуровневых, так и низкоуровневых языков программирования. Синтаксис С++ унаследован от языка С.
Объектно-ориентированное программирование (ООП) - это парадигма (совокупность понятий и идей) программирования, в рамках которой «во главу угла» ставят понятия объектов и классов.
База данных - набор сведений, хранящихся некоторым упорядоченным способом. Иными словами, база данных - это хранилище данных.
Система управления базами данных - это совокупность языковых и программных средств, которая осуществляет доступ к данным, позволяет их создавать, менять и удалять, обеспечивает безопасность данных и т. д.
СУБД - это система, позволяющая создавать базы данных и манипулировать сведениями о них.
Пользовательский интерфейс - совокупность средств и методов, при помощи которых пользователь взаимодействует с различными, чаще всего сложными, машинами, устройствами и аппаратурой.
Псевдографика - совокупность символов, включённых в набор символов компьютерного шрифта, отображающих графические примитивы (линии, прямоугольники, треугольники, кресты, различная заливка и т. п.). Псевдографические символы реализуются в рамках формата шрифта (к примеру, матрица 8Ч12 точек) и дополняют в таком наборе цифро-буквенные и служебные символы. Основное назначение псевдографики - графическое оформление программ с текстовым интерфейсом пользователя (в том числе и т. н. консольных) - отображение в них окон, меню, кнопок и прочих элементов интерфейса, создания рамок и таблиц.
1.2 Обзор аналогов
Существует множество аналогов данному проекту. Эти программы разработаны как для государственных библиотек, так и для частных коллекций. Данная программа ориентирована на людей, желающих навести порядок в своей домашней библиотеке, то при разработке данного ПО будут рассматриваться программы, рассчитанные на индивидуальное пользование. Самые крупные из них: AllMyBooks и Calibre. Данные приложения предоставляют удобный функционал для систематизации как бумажных, так и электронных книг, среди которых поиск по множеству параметров, удаление и добавление книг. В приложении используются функции отображения каталога, добавления, удаления и поиска книг, сортировки по различным параметрам, а также возможность регистрации выдачи и возврата книг.
2. СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ
В данном разделе будет произведено структурирование проекта, т.е. указаны основные блоки и их взаимодействие между собой.
В соответствии с поставленными задачами и требованиями, разрабатываемое ПО разделено на следующие подсистемы:
1. Блок графического пользовательского интерфейса (меню)
Подсистема, с помощью которой производится управление программой. Отсюда происходит взаимодействие с «ядром» программы, посредством предоставленных интерфейсом возможностей. Переключение между преобразованиями происходит моментально, посредством выбора подпункта меню и нажатия клавиши Enter, вызывающей ту или иную задачу. Управление в данном блоке происходит с помощью работы с псевдографикой.
2. Блок логического ядра
Подсистема, отвечающая за выполнение основной задачи программы - управление домашней библиотекой. Блок работает с командами, поступившими от пользователя, данные для которых были загружены из подсистемы хранилища данных иблока данных для работы. Это так называемое «ядро» программы. Здесь заключен основной функционал приложения.
3. Блок данных для работы (в оперативной памяти)
Данные, с которыми непосредственно работают алгоритмы. С помощью этого блока происходит обмен информацией между различными функциональными подсистемами, без которого сложно представить практически любую программу.
4. Хранилище данных (файл)
Подсистема, отвечающая за хранение пользовательских данных, в которой находится информация о книгах, содержащихся в домашней библиотеке.
Структурная схема программы представлена в приложении А.
3. ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ
В этом разделе произведён разбор взаимодействия классов между собой посредством выделения и объяснения работы наиболее важных методов этих классов.
Программа содержит три основных класса: класс Menu, через который осуществляется взаимодействие между пользователем и приложением, класс Database, который представляет собой “ядро” приложения, т.е. содержит все основные алгоритмы и функции, необходимые для реализации поставленной выше цели приложения и класс Publication, служащий для хранения данных о книгах каталога во время работы программы.
3.1 Класс Menu
Класс Menu - это внешняя оболочка программы. Именно в этом классе и заключается интерфейс приложения, реализованный с помощью псевдографики. В основе данного класса лежит принцип создания консольных меню, соответствующих различным этапам обработки данных, методы для выбора пунктов меню и для возврата в главное меню после выполнения очередной обработки. Здесь реализованы методы для главного меню приложения, меню сортировки по полю, а также меню для выбора дополнительного параметра сортировки. Методы, реализованные в данном классе приведены ниже:
- voidMainMenu(int)- вывод главного меню.
- intMainMenuChoice()- выбор нужного пункта в главном меню.
- voidSortMenu(int)- вывод меню сортировки.
- intSortMenuChoice()- выбор нужного пункта в меню сортировки.
- voidSortSubmenu(int)- вывод меню дополнительного параметра сортировки.
- intSortSubmenuChoice()- выбор необходимого пункта в меню дополнительного параметра сортировки.
- voidExit()- возврат в главное меню.
3.2 Класс Database
Класс Database - это основополагающий класс программы. Именно здесь и сосредоточены основные методы и алгоритмы, необходимые для реализации поставленной задачи. Сам класс содержит объекты типа Publication, связанные с ним отношением композиции. Здесь осуществляется вывод каталога, добавление, удаление и поиск книг, сортировка по различным параметрам, выдача и возврат книг, сохранение и загрузка данных книг. Методы данного класса описаны ниже:
- voidShow()- вывод каталога книг.
- voidDeleteElement(string)- удаление книги.
- int Give(string, string, string)- выдача книги.
- intTake()- возврат книги.
- Publication* Find(string)- нахождение книги.
- voidSortTitle()- сортировка по названию книги.
- voidSortPlace()- сортировка по месту книги.
- voidSortAuthor()- сортировка по автору.
- voidSortGenre()- сортировка по жанру книги.
- voidSortYear()- сортировка по году издания.
- voidSaveToFile(ifstream&)- сохранение данных в текстовый файл.
- voidUpload(ofstream&)- загрузка данных из текстового файла.
3.3 Класс Publication
В программе реализован класс Publication, являющийся основополагающим в плане хранения данных во время работы программы. Так как данные будут организованы в виде двусвязной очереди, то данный класс имеет два указателя типа Publicationна следующий и предыдущий элементы. Также он содержит указатель типа Lender для хранения данных о выдаче или возврате книг. Необходимый для реализации класс Book является классом-наследником данного класса, что подчёркивает важность класса Publication для хранения данных. Методы данного класса приведены ниже:
- voidShow() = 0 - чисто виртуальная функция вывода данных.
4. РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ
В данном проекте использовано большое количество алгоритмов, предназначенных для удобного управления домашней библиотекой. Но наиболее важными являются определённые алгоритмы предназначенные для работы с базой данных книг, хранящихся в каталоге. Все они были написаны практически с нуля. При написании использовалась литература, приведённая ниже, в особенности книга, посвящённая именно ООП, в различных изданиях, а также сеть Интернет. Далее будут рассмотрены наиболее важные алгоритмы данного проекта.
4.1 Загрузка базы данных книг
Данная операция предполагает как первоначальную загрузку данных из текстового файла при запуске программы, так и добавление записи о книге самим пользователем, при выборе соответствующего пункта главного меню. В первом случае для выполнения данной операции в цикле while производится добавление с помощью функции Add() книг со своими данными, полученными из файла путём построчного считывания. Программа не выделяет память заранее, так как для хранения данных на протяжении всей работы приложения и выполнения различного рада преобразований с ними используется двусвязный список. В случае возникновения ошибки при открытии файла функция вызывает обработчик ошибок, что приведёт к аварийному завершению программы.
При добавлении записи о книге пользователем осуществляется вызов функции Add(), создаётся в памяти запись о книге, с данными полученными от пользователя. Эта запись добавляется в список, где хранится да завершения программы или пока пользователь её не удалит.
При нехватке памяти на осуществление данной операции произойдёт аварийное завершение программы.
4.2 Вывод на экран каталога книг
Первоначально выполняется проверка на наличие книг в каталоге, и если каталог не пустой, то происходит вызов функции отвечающей за вывод на экран шаблона таблицы. После в цикле while происходит поэлементный вывод каталога. Если же каталог оказался пустым, то вывода на экран не произойдёт, а пользователя вернёт обратно в главное меню.
4.3 Удаление записи о книге
Для удобства выводится на экран каталог книг. Далее пользователя просят ввести место удаляемой книги. Осуществляется проверка на существование книги с таким место в базе. Если книга существует, то вызывается функция удаления книги. Если удаляемый элемент оказывается “головой” списка, то в этом случае этот элемент удаляется, следующий за ним становится новой “головой”:
if(previous == fisrt)
head = first->GetNext();
Если удаляемый элемент не является “головой”, то он удаляется, а его место занимает следующий за ним элемент:
else
previous->SetNext(first->GetNext());
4.4 Выдача и возврат книг
Данные функции были разработаны для исключения ситуаций потери книг, по забывчивости её владельца.
При выборе пункта меню “Выдача книг” вызывается соответствующая функция. Далее выводится каталог всех книг для более быстрого поиска нужной. Пользователю предлагается ввести место книги на выдачу. Если введённого места не существует, пользователю предлагается повторно его ввести и так до тех пор, пока не будет введено существующее в каталоге. Пользователю предлагается ввести имя человека, которому выдаётся книга и его email. Если данная книга уже выдана, то выводится соответствующее сообщение, а пользователя возвращает в главное меню.
При выборе пункта меню “Возврат книг” выводится каталог и предлагается пользователю ввести место книги, которая будет возвращена. Если книга не была выдана, то выведется соответствующее сообщение и пользователь будет возвращён в главное меню.
4.5 Сохранение базы данных книг
Чтобы избежать потери каталога при завершении работы была разработана функция сохранения базы книг в текстовом файле. Занесение осуществляется построчной записью полей каждой книги в файл:
year = to_string(dynamic_cast<Book*>(temp)->GetYear());
out << dynamic_cast<Book*>(temp)->GetTitle() << endl;
out << dynamic_cast<Book*>(temp)->GetAuthor() << endl;
out << dynamic_cast<Book*>(temp)->GetGenre() << endl;
out << year << endl;
out << temp->GetPlace() << endl;
out << temp->GetFio() << endl;
out << temp->GetEmail() << endl;
Такой способ работы с файлом предусматривает возможность замены поля книги при ошибке во введённых данных. Однако изменение расположения полей не предусматривается, так как это приведёт к некорректной работе программы.
4.6 Перемещение курсора в меню
электронный каталог меню библиотека
Для выделения некоторого пункта меню объявлена специальная переменная. Зная коды основных клавиш, не составляет труда отловить их: «^»(стрелка вверх) - код 80; «v»(стрелка вниз) - код 72; enter - код 13. Поэтому при каждом нажатии клавиши, программа отлавливает нажатие с помощью функции _getch(). Нажатие стрелок вверх или вниз изменяет переменную, которая отвечает за то, какой пункт меню подсвечивать. Нажатие enter вызывает метод соответствующий подсвеченному меню.
5. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Данное приложение рассчитано в первую очередь на обычного пользователя, задумавшего систематизировать свою домашнюю библиотеку, поэтому будет полезно объяснить, как правильно работать с данным приложением.
Начнем с главного меню (рисунок 5.1).
Рисунок 5.1 - Главное меню программы.
Главное меню состоит из восьми пунктов, по которым легко понять за что они отвечают. Перемещение по меню происходит с помощью кнопок «^» (стрелка вверх) и «v» (стрелка вниз).
При выборе подпункта “Показать список книг в библиотеке” на экран выводится каталог книг, представленный в виде таблицы (рисунок 5.2).
Рисунок 5.2 - Вывод каталога книг на экран.
Подпункт “Добавить книгу” данного меню позволяет добавить запись о новой книге в каталог. Подпункт “Убрать книгу из библиотеки” предназначен для удаления ненужной записи пользователем.
Подпункт “Найти книгу” предназначен для поиска информации о нужной книге в каталоге по месту расположения (рисунок 5.3).
Рисунок 5.3 - Нахождение информации о нужной книге.
Подпункт “Выдать книгу” позволяет добавить запись о выдаче книги в каталог, при условии, что книга не была выдана ранее. Подпункт “Вернуть книгу” предназначен для удаления записи о выдаче книги в каталоге, если она была выдана.
Подпункт “Сортировать” предназначен для сортировки каталога по пяти различным полям (рисунок 5.4).
Рисунок 5.4 - Меню сортировки программы.
После выбора пользователем поля сортировки ему предлагается осуществить сортировку по возрастанию или убыванию (рисунок 5.5).
Рисунок 5.4 - Подменю сортировки программы.
Подпункт “Выход” предназначен для сохранения данных каталога в текстовом файле и завершении работы программы.
6. ТЕСТИРОВАНИЕ
Чтобы протестировать работоспособность приложения, нужно пройти по всем пунктам меню.
В процессе прохождения по всем пунктам меню, производилась проверка на различные типы возможных ошибок в программном коде. При выполнении программы данных ошибок выявлено не было. Связанно это с тем, что для каждого возможного варианта подобных ошибок, были созданы специализированные классы “exception”. В зависимости от возможной ошибки, программа вызывает метод класса, соответствующий данной ошибке. Были произведены тесты, включающие в себя запуск программы без файла базы данных, запуск программы с пустым списком, ввод некорректного года издания, попытка ввода несуществующего места расположения книги в каталоге. Ко всем тестам программа была устойчива. Также было проведено тестирование быстродействия программы, с которым она также справилась. Таким образом была наглядно подтверждена эффективность использования подобных конструкций для объемных программ, где подобные ошибки приводят к экстренному завершению программы.
Проведена проверка на совместимость с различными операционными системами. Она была проверена запуском программы на разных версиях Windows. Точно можно заметить, что на версиях от Windows 7 и выше - программа работает обычном режиме и непредвиденных ошибок не было выявлено. Кроссплатформенности программа не предусматривает, поэтому на GNU/Linux или на Mac OS X программа не работает.
ЗАКЛЮЧЕНИЕ
За время выполнения данной курсовой работы было реализовано все, что было запланировано. Была проделана работа по созданию доступного и понятного любому пользователю интерфейса, в ближайшем будущем в планах организовать графический интерфейс при помощи специализированных для этого приложений, например: OpenGL или QtCreator, добавления большего количества изданий: журналов, газет, аудиокниг. Также планируется организовать обработку и электронных книг.
Проект получился именно таким, каким и был спрогнозирован изначально. Это достаточно удобное приложение, за созданием которого было проведено большое количество времени и с удовольствием составлялись алгоритмы, для решения основной задачи программы. Желание навести порядок в своей домашней библиотеке в совокупности с интересом к изучению ООП, дает свои результаты. Что касается будущего данного проекта, то достигнутые результаты будут обновляться. Будут реализованы новые идеи, которые, не были рассмотрены во время разработки приложения, но возникли после сдачи данного курсового проекта. После добавления некоторого функционала и обновления разработанного входе выполнения курсового проекта интерфейса в сторону функциональности, еще большей оптимизации некоторых алгоритмов данную программу можно будет считать полноценной программой управления домашней библиотекой и в каком-то плане достойным соперником вышеописанным гигантами данной индустрии.
СПИСОК ИСТОЧНИКОВ
[1] Лафоре Р. - Объектно-ориентированное программирование в С++, 4-е издание - СПб: Питер, 2004/2007 - с. 923. - ISBN 978-5-94723-302-5
[2] Луцик Ю. А. Объектно-ориентированное программирование на языке С++ / Ю. А. Луцик, А. М. Ковальчук, И. В. Лукьянова. - Мн.: БГУИР, 2003.
[3] cppstudio - основы программирования на языках Си и C++ для начинающих: [электронный ресурс] http://cppstudio.com/
[4] Как программировать на С++( пятое издание) / Х.М. Дейтел, П.Дж. Дейтел - 2006.
Размещено на Allbest.ru
Подобные документы
Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.
курсовая работа [1,8 M], добавлен 04.02.2013Структура базы данных "Библиотечный фонд". Разработка таблиц "Авторы", "Выдача книг", "Книги фонда". Таблица "Разделы книг" как способ хранения информации о существующих разделах. Способы занесения информации о сотрудниках библиотеки. Формы базы данных.
курсовая работа [940,8 K], добавлен 28.05.2012Базы данных как совокупность структур, предназначенных для хранения больших объемов информации и программных модулей. Анализ способов создания базы данных для учета книг личной библиотеки, особенности использования языка программирования C++Builder.
курсовая работа [8,1 M], добавлен 10.01.2014Основные этапы разработки и внедрения программного обеспечения. Понятие, функции и классификация баз данных. Проектирование базы данных "Библиотека" для ведения картотеки и учета выдачи книг. Пользовательский интерфейс программы, методика ее тестирования.
дипломная работа [2,6 M], добавлен 09.06.2012Требования к функциональным характеристикам программы, составу и параметрам технических средств, программной совместимости. Особенности программирования в среде Access. Описание интерфейса программы, ввод и редактирование данных, добавление новых книг.
курсовая работа [1,5 M], добавлен 17.11.2010Создание на языке C базы данных "Стадионы города", требования к программе. Осуществление загрузки базы данных в массив и вывод главного меню в основной программе. Алгоритм работы программы в виде блок-схемы. Описание функций программы и ее листинг.
курсовая работа [183,6 K], добавлен 06.10.2010Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.
курсовая работа [2,1 M], добавлен 08.06.2012Построение логической и физической структуры базы данных. Сценарии вариантов использования: вход и выход из системы, обновление меню и списка официантов, регистрация и проверка выполнения заказа. Расчёт стоимости и эффективность внедрения программы.
курсовая работа [1,3 M], добавлен 21.09.2015Механизм и основные этапы создания и администрирования базы данных для Картотеки книг или библиотеки при помощи средств Microsoft SQL Server. Характеристика данной базы и требования, предъявляемые к ней. Основные операции с исследуемой базой данных.
курсовая работа [289,8 K], добавлен 21.06.2011Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).
курсовая работа [901,8 K], добавлен 11.02.2014