Домашняя библиотека
Автор работы: Пользователь скрыл имя, 09 Января 2012 в 18:53, курсовая работа
Краткое описание
В данной курсовой работе реализован класс «Домашняя библиотека». В качестве средства разработки выбрана платформа Borland C++ Builder 6. Используется объектно-ориентированный язык программирования – С++.
Содержание работы
Введение 3
Постановка задачи 4
Описание класса 5
Описание полей класса 5
Описание методов класса 6
Работа со строками 12
Используемые компоненты 13
Форма 13
StringGrid 14
MainMenu 16
Выводы 17
Список литературы 18
Приложение А. Текст программы 19
Содержимое работы - 1 файл
Курсовая работа.docx
— 407.61 Кб (Скачать файл)МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГОУ
ВПО «Чувашский Государственный
Университет им. И.Н. Ульянова»
ФАКУЛЬТЕТ
ИНОРМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
КАФЕДРА МАТЕМАТИЧЕСКОГО И АППАРАТНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
Курсовая работа
по
дисциплине: Программирование на ЯВУ
Вариант 25
«Домашняя
библиотека»
Выполнил студент
группы ИВТ-11-08
Столяров Е. Г.
Проверил преподаватель:
Ильина
Л.А
Чебоксары 2009
Оглавление
Введение 3
Постановка задачи 4
Описание класса 5
Описание полей класса 5
Описание методов класса 6
Работа со строками 12
Используемые компоненты 13
Форма 13
StringGrid 14
MainMenu 16
Выводы 17
Список литературы 18
Приложение А. Текст программы 19
Введение
Объектно-ориентированное программирование - это подход к разработке программного обеспечения, основанный на объектах. Программы, разрабатываемые на основе концепций объектно-ориентированного программирования, реализуют алгоритмы, описывающие взаимодействие между объектами.
Одним
из центральных понятий в
В
данной курсовой работе реализован класс
«Домашняя библиотека». В качестве
средства разработки выбрана платформа
Borland C++ Builder 6. Используется объектно-ориентированный
язык программирования – С++.
Постановка задачи
Задача данной курсовой работы состоит в реализации класса «Домашняя библиотека».
В программе необходимо предусмотреть возможность работы с произвольным числом книг, поиск книги по какому-либо признаку, добавление книги в библиотеку, удаление книг из нее. Сортировка книг по разным полям.
Программа должна содержать меню, позволяющее осуществить проверку всех функций класса.
Данные должны храниться в файле.
Описание класса
Класс «Домашняя библиотека» объявлен следующим образом:
class HomeBibl{
public:
char *avtor;
char *name;
int year;
HomeBibl();
void SearchBook();
void SortBooks(int mode, bool HighLow);
void DelBook(int idx);
void DelAllBooks();
void AddBook();
void EditBook(int idx);
~HomeBibl(){};
};
Все методы и поля объявлены как public. Доступ к таким членам класса можно получить из любой части программы, они доступны любым объектам любых классов.
Далее объявлен массив объектов типа «класс»:
HomeBibl ob [Max_Num_Books];
Описание полей класса
Для хранения таких данных как ФИО автора и название книги используется тип данных – строка. Год издания хранится в переменной типа «целое число».
Строки рассматриваются как массив символов, оканчивающиеся нулевым символом (‘\0’). Функции работы со строками описаны в стандартном заголовочном файле "string.h".
Строку можно объявить как массив символов или как переменную типа char*. В данной работе используется второй вариант.
char *avtor;
Данное поле предназначено для хранения данных об авторе: ФИО автора. Используется тип данных – строка.
char *name;
Данное поле предназначено для хранения данных о названии книжки. Используется тип данных – строка.
int year;
Данное поле предназначено для хранения данных о годе издания книжки. Тип данных – целое число (int).
Описание методов класса
void SearchBook()
Метод предназначен для поиска книги в библиотеке. Алгоритм поиска выглядит следующим образом:
//сохраняем данные книги, которую надо найти
book.avtor = avtor;
book.name = name;
book.year = year;
// цикл по всем книгам
for (int i=0; i<Num;i++) {
//ищем книгу с заданными параметрами
if (book.avtor = book[i]. avtor) &&
(book.name = book[i]. name) &&
(book.year = book[i]. year) then Ok
}
Результат работы:
void AddBook()
Метод предназначен для добавления книги в библиотеку. Алгоритм поиска выглядит следующим образом:
//записываем данные о новой книге в конец файла
Add(file);
//увеличиваем число книг в библиотеке
numRecords++;
//добавляем данные о новой книге в массив
ob[numRecords].avtor = this->avtor;
ob[numRecords].name = this->name;
ob[numRecords].year = this->year;
Результат работы:
void
DelAllBooks()
Метод предназначен для удаления всех книг из библиотеки. Алгоритм удаления книг выглядит следующим образом:
//цикл по всем книгам
for(int i = 0; i<numRecords; i++){
//присваиваем данным о книге пустые значения
ob[i].avtor = "";
ob[i].name = "";
ob[i].year = 0;
};
// очистить файл с данными о книгах
Del(file);
Результат работы:
void
DelBook (int idx)
Метод
предназначен для удаления книги из
библиотеки. Метод содержит один параметр
– индекс удаляемой книги в массиве книг.
Алгоритм удаления книги выглядит следующим
образом:
//цикл по всем книгам
for (int i = 0; i < numRecords; i++){
// перемещяем данные о книге
ob[idx+i].avtor = ob[idx+i+1].avtor;
ob[idx+i].name = ob[idx+i+1].name;
ob[idx+i].year = ob[idx+i+1].year;
}
//уменьшаем число книг в библиотеке
numRecords--;
//удаляем книгу в файле
Del(file, book)
Результат
работы:
void
EditBook (int idx)
Метод
предназначен для редактирования книги
из библиотеки. Алгоритм редактирования
книги выглядит следующим образом:
//сохраним данные о редактируемой книге в переменную
HomeBibl book;
//найдем книгу и изменим ее данные
ob[idx].avtor = this->avtor;
ob[idx].name = this->name;
ob[idx].year = this->year;
//записываем данные в файл
Write(book, file)
Результат
работы:
void
SortBooks(int mode, bool HighLow)
Метод
предназначен для сортировки книг из
библиотеки. Метод содержит два параметра:
mode – режим сортировки (1 – по названию,
2 – по автору, 3 – по году издания); HighLow
– может принимать два значения true – сортировка
по возрастанию, false – сортировка по убыванию.
Алгоритм сортировки книг выглядит следующим
образом:
//цикл по всем книжкам
for (i = 0; i<numRecords; i++) {
switch (mode) {
case 1: s1 = ob[i].avtor;
case 2: s1 = ob[i].name;
case 3: s1 = ob[i].year;
}
//цикл по всем книжкам
for (j = i+1; j<numRecords; j++) {
case 1: s2 = ob[j].avtor;
case 2: s2 = ob[j].name;
case 3: s2 = ob[j].year;
if (HighLow)
//если в первой строке символ больше чем во второй то меняем местами имена
if (s1 > s2) change = true; else change = false;