Домашняя библиотека

Автор работы: Пользователь скрыл имя, 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;

Информация о работе Домашняя библиотека