Курсовая работа: Программа для учета книг домашней библиотеки

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра «Вычислительная техника»

Дисциплина «Программирование на языках высокого уровня»

Курсовая работа

на тему: «Программа для учета книг домашней библиотеки»

Выполнил: М.А. Гусева

студент гр. ЭВМд-21

Руководитель: А.Б. Шамшев

к.т.н., старший преподаватель

кафедры «Вычислительная техника»

Ульяновск

2011

Содержание

  • Введение
  • 1. Техническое задание
  • 2. Описание программы
  • 3. Требования к техническим и программным средствам
  • 4. Входные данные
  • 5. Выходные данные
  • 6. Проблемы отладки
  • 7. Использование программы GIT в процессе написания и отладки приложения
  • Заключение
  • Список использованных сокращений
  • Приложение

Введение

Данный курсовой проект представляет собой программно-оформленный каталог Здесь и далее: под каталогом понимается список книг с информацией о них книг, содержащий перечень книг домашней библиотеки с необходимой информацией о них.

Целью курсовой работы является закрепление и углубление теоретических знаний по дисциплине «Программирование на языках высокого уровня» и приобретение практических навыков при разработке приложений на языке Visual C#.

Основными задачами курсового проекта являются:

· Выбор, изучение конкретной проблемы (или предметной области), анализ возможных подходов и методов решения этой проблемы и обоснование выбранного подхода;

· Углубленное изучение языка программирования Visual C# и применение этих навыков на практике;

· Разработка приложения в конкретной предметной области;

· Анализ результатов работы приложения.

1. Техническое задание

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

Программа была разработана в качестве курсовой работы по дисциплине «Программирование на языках высокого уровня».

Назначение разработки

Программа, которую предоставляет данный курсовой проект, называется «Каталог книг». Назначениями являются:

· Наглядное предоставления полного списка книг домашней библиотеки;

· Быстрый поиск необходимой книги;

· Предоставление необходимой информации о ней.

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

программа учет домашняя библиотека

Общие сведения

В рамках курсового проекта мной была разработана программа «Каталог книг». Программа была написана на языке объектно-ориентированного программирования Visual C# с использованием технологии Windows Forms.

Основным элементом, с которым работает программа, является книга. У неё есть следующие параметры:

· уникальный идентификатор

· автор

· название

· жанр

· год выпуска

· издательство

· дополнительная информация

С помощью программы пользователь может:

· создавать новый список книг

· открывать существующий список из файла

· сохранять список в файл

· добавлять новую книгу в список

· редактировать книгу из списка

· удалять книгу из списка

· сортировать книги в списке по:

· автору

· названию

· жанру

· году выпуска

· издательству

· делать выборку по какому-либо параметру в отсортированном списке

· искать книгу в списке по:

· автору

· названию

Более наглядно возможности пользователя представлены на рисунке 1.

Рис.1 Диаграмма Use Case

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

Программа состоит из 10 основных файлов:

· 4 файла - конструкторы формы (описание форм и работы с ними смотри ниже);

· 4 файла - коды, обрабатывающие действия, происходящие на соответствующих формах;

· 2 файла - описание структур BookInfo и Books (будут описаны ниже).

Автоматически создаются дополнительные файлы: точка входа

приложения, дизайнеру форм.

В папке с приложением так же находятся 4 иконки для соответствующих 4х форм.

Описание форм и работы с ними

В данной работе была использована технология MDI, что позволило разделить работу с формами и работу с их содержимым. Программа состоит из четырех форм: одной родительской и трёх дочерних.

В родительской форме (рисунок 2) осуществляется работа с каталогом.

Рис. 2 Родительская форма

При нажатии на элемент меню «Каталог» появляется подменю, в котором можно выбрать одно из трех действий: создать новый каталог, открыть уже существующий из файла и сохранить открытый каталог в файл.

Нажатие на элемент меню «Выход» вызывает событие закрытия формы.

При нажатии на элемент меню «Каталог/Новый» открывается окно «Новый каталог» (рисунок 3).

Как видно из рисунка, у этого окна есть собственное меню. Оно состоит из двух элементов: «Книга» и «Поиск».

С помощью элемента «Книга» можно осуществлять следующие действия:

· Добавление новой книги;

· Редактирование уже существующей книги;

· Удаление книги.

Рис. 3 Окно «Новый каталог»

По клику на элемент меню «Книга/Добавить» появляется следующее окно, представленное на рисунке 4.

В этом окне заполняются поля, содержащие информацию о книге. Обязательными являются поля «Название» и «Год издания». В поле «Год издания» вводится четырехзначное число в диапазоне от 1900 до 2011. При необходимости диапазон можно расширить или сузить, изменив соответствующие значения в коде программы. Поля «Автор», «Издательство» и «Жанр» являются полями типа ComboBox. Это необходимо для проверки корректности ввода. Если вводимый элемент не входит в коллекцию, программа спросит пользователя, уверен ли он в правильности введенного значения. При положительном ответе пользователя элемент автоматически добавляется в коллекцию.

Рис. 4 Окно «Новая книга»

В окне так же есть три кнопки:

1. «Добавить в каталог». При нажатии на неё книга с введенными параметрами добавляется в каталог, а форма очищается. Если введенные данные некорректны, показывается соответствующее сообщение.

2. «Перейти к каталогу». Осуществляется переход к окну, представленному на рисунке 3, без сохранения текущих данных.

3. «Сброс». Осуществляется очистка всех форм (без сохранения текущих данных).

Продолжим рассмотрение возможностей окна, представленного на рисунке 3. При добавлении книг в каталог мы можем воспользоваться такими функциями как:

· Просмотр полной информации о книге. Для этого достаточно кликнуть на ячейку с номером строки, в которой содержится частичная информация о ней.

· Сортировка списка. Производится по клику на кнопку «Сортировать». При список сортируется по различным параметрам в зависимости от того, какой из них был выбран при помощи элементов управления RadioButton, находящихся над кнопкой

· Редактирование и удаление книги из списка. Доступно после выбора книги кликом по номеру строки с её краткой информацией. Осуществляются при помощи элементов меню «Книга/Редактировать» и «Книга/Удалить». Для редактирования открывается та же форма, что и для добавления, только с уже заполненными ячейками (рисунок 5).

· При клике по кнопке «Сортировать» становится доступным так же дерево выборки, с помощью которого можно сгруппировать книги по определенному признаку и увидеть соответствующий результат в таблице (рисунок 6).

Рис. 5 Окно «Новая книга», открытое после нажатия на элемент меню «Книга/Редактировать»

Рис. 6 Окно «Новый каталог» с отсортированным по автору списком

В таблице отражена книга, написанная автором, чья фамилия начинается с буквы «Д» (в соответствии с параметром, выбранным в дереве выборки).

Как можно увидеть на рисунке 6, после сохранения каталога в файл в заголовке окна появляется имя файла, в который он был сохранен.

Еще одна, не рассмотренная нами, функция - это поиск книги. Открытие окна поиска осуществляется по нажатию на элемент меню «Поиск» в окне «Новый каталог» (рисунок 7).

Выбор параметра поиска осуществляется при помощи элемента управления ComboBox. Этих параметров два:

1. Автор

2. Название

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

Объект поиска вводится в форму под элементом управления ComboBox. Поиск не является регистро-чувствительным.

Рис. 7 Окно «Поиск книги»

Управление поискам осуществляется с помощью двух кнопок:

1. «Искать». Осуществляется поиск в списке по введенному параметру. При этом если форма с объектом поиска не заполнена, пользователю покажется соответствующее сообщение.

2. «Перейти к каталогу». Осуществляется переход к окну, представленному на рисунке 6.

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

Описание некоторых функций, используемых в процессе работы программы

Основной единицей с которой работает программа является книга. Для её описания был создан класс BookInfo. Он нем реализованы три функции:

1. public BookInfo(int id_, string author_, string title_, int year_, string publisher_, string type_, string extraInfo_)

Конструктор. Принимает пять параметров типа string и два параметра типа int.

id_ - уникальный идентификатор книги

author_ - автор книги

title_ - название

year_ - год издания

publisher_ - издательство

type_ - жанр

extraInfo_ - дополнительная информация

2. public string getInfoString()

Возвращает строку, формирующуюся из всех данных о книге. Строка составляется следующим образом:

Название_параметра: его_значение

3. public string getStringForFile()

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

Значение_параметра + разделитель + Значение_следующего_параметра

При этом разделитель не должен содержатся ни в одном значении параметров, иначе возможно неверное прочтение из файла.

Для описания и работы со списком книг был написан класс Books. Он работает с массивом данных типа BookInfo. В данном случае для уменьшения объема кода используется стандартные класс List. Функции класса Books:

1. public Books()

Конструктор. Выделяет память по список List<BookInfo> books

2. private int findMaxId()

Возвращает максимальный из уникальных идентификаторов книг

3. public void addNewBook(string author, string title, int year, string

publisher, string type, string extraInfo)

Добавление в список новой книги с передаваемыми параметрами

author - автор книги

title - название

year - год издания

publisher - издательство

type - жанр

extraInfo - дополнительная информация

4. private int getIndex(itemBook item)

Получение индекса книги в списке. Принимает делегат itemBook

public delegate bool itemBook(BookInfo book);

5. public void removeBook(int id)

Удаление книги из списка по уникальному идентификатору, который передается в функцию в качестве параметра.

6. public void editBook(int id, string author, string title, int year, string

publisher, string type, string extraInfo)

Редактирование книги. Принимает семь параметров:

id - указывает по какому идентификатору следует изменять книгу

остальные 6 - передают новые параметры книги

7. public void clearCatal()

Очистка списка и присвоение ему значения null

8. public string getInfoString(int id)

Получение всех параметров книги в виде строки по передаваемому уникальному идентификатору

9. private string getStringForFile(int index)

Получение всех параметров книги по передаваемому индексу для записи в файл

10. public void getCatalFromString(string[] str)

Получение списка из массива строк. Указанный массив передается в качестве параметра

11. public string[] catalToStringArray()

Возвращает массив строк, сформированный из всех элементов списка для записи в файл

12. private void exchange(int index)

Перестановка местами двух соседних элементов списка.

index - индекс первого из переставляемых элементов

13. private void sort(compare delCompare)

Сортировка списка методом пузырька. В качестве параметра передается делегат типа bool

public delegate bool compare(BookInfo book1, BookInfo book2);

14. public void sortAuthor()