Автор работы: Пользователь скрыл имя, 09 Января 2012 в 18:53, курсовая работа
В данной курсовой работе реализован класс «Домашняя библиотека». В качестве средства разработки выбрана платформа Borland C++ Builder 6. Используется объектно-ориентированный язык программирования – С++.
Введение 3
Постановка задачи 4
Описание класса 5
Описание полей класса 5
Описание методов класса 6
Работа со строками 12
Используемые компоненты 13
Форма 13
StringGrid 14
MainMenu 16
Выводы 17
Список литературы 18
Приложение А. Текст программы 19
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГОУ
ВПО «Чувашский Государственный
Университет им. И.Н. Ульянова»
ФАКУЛЬТЕТ
ИНОРМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
КАФЕДРА МАТЕМАТИЧЕСКОГО И АППАРАТНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
Курсовая работа
по
дисциплине: Программирование на ЯВУ
Вариант 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;