МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Вычислительная техника»
Дисциплина «Программирование на языках высокого уровня»
Курсовая работа
на тему: «Программа для учета книг домашней библиотеки»
Выполнил: М.А. Гусева
студент гр. ЭВМд-21
Руководитель: А.Б. Шамшев
к.т.н., старший преподаватель
кафедры «Вычислительная техника»
Ульяновск
2011
Содержание
Введение
Данный курсовой проект представляет собой программно-оформленный каталог Здесь и далее: под каталогом понимается список книг с информацией о них книг, содержащий перечень книг домашней библиотеки с необходимой информацией о них.
Целью курсовой работы является закрепление и углубление теоретических знаний по дисциплине «Программирование на языках высокого уровня» и приобретение практических навыков при разработке приложений на языке 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()