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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

            else {

                if (strcmp(this->name, "") != 0) {

                   for(int i = 0; i<numRecords; i++){

                     if (strcmp(AnsiStrLower(ob[i].name), this->name)==0)

                          if (this->year != 0)

                            if (ob[i].year == this->year) f = true; else f=false;

                          else f=true;

                     //else f=true;

                     if (f) {arr[k].idx=i; k++;}

                     f = false;

                   }

                }

                else {

                  if (this->year != 0) {

                     for(int i = 0; i<numRecords; i++){

                          if (this->year != 0)

                            if (ob[i].year == this->year) f = true; else f=false;

                          else f=true;

                          if (f) {arr[k].idx=i; k++;}

                          f = false;

                      }

                  }

                }

            }

            numFindRecords = k;

    } 

    //********** Удаление книги *****************

    void HomeBibl::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--;

            char line[256]; // Буфер для ввода строки

            int i;

            AnsiString as;

            FILE *f = fopen(BiblFile, "w");

            for (int i = 0; i < numRecords; i++){

              fputs(ob[i].avtor, f);

              fputs("\n", f);

              fputs(ob[i].name, f);

              fputs("\n", f);

              as = IntToStr(ob[i].year);

              fputs(as.c_str(), f);

              fputs("\n", f);

            }

            fclose(f);

    }

    //********** Редактирование книги *****************

    void HomeBibl::EditBook (int idx){

            ob[idx].avtor = this->avtor;

            ob[idx].name = this->name;

            ob[idx].year = this->year;

            char line[256]; // Буфер для ввода строки

            int i;

            AnsiString as;

            FILE *f = fopen(BiblFile, "w");

            for (int i = 0; i < numRecords; i++){

              fputs(ob[i].avtor, f);

              fputs("\n", f);

              fputs(ob[i].name, f);

              fputs("\n", f);

              as = IntToStr(ob[i].year);

              fputs(as.c_str(), f);

              fputs("\n", f);

            }

            fclose(f);

    }

 

    AddFormUnit.cpp 

    //---------------------------------------------------------------------------

    #include <vcl.h>

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #include <ctype.h>

    #pragma hdrstop 

    #include "AddFormUnit.h"

    #include "Bibl.cpp"

    //---------------------------------------------------------------------------

    #pragma package(smart_init)

    #pragma resource "*.dfm"

    TAddBookForm *AddBookForm;

    //---------------------------------------------------------------------------

    __fastcall TAddBookForm::TAddBookForm(TComponent* Owner)

            : TForm(Owner)

    {

    }

    //---------------------------------------------------------------------------

    void __fastcall TAddBookForm::bCancelClick(TObject *Sender)

    {

            AddBookForm->Close();       

    }

    //---------------------------------------------------------------------------

    void __fastcall TAddBookForm::bOKClick(TObject *Sender)

    {

            HomeBibl book;

            char *s;

            //avtor

            s = (char *) malloc((strlen(eAvtor->Text.c_str())) +1);

            strcpy(s, eAvtor->Text.c_str());

            book.avtor = s;

            //name

            s = (char *) malloc((strlen(eBook->Text.c_str())) +1);

            strcpy(s, eBook->Text.c_str());

            book.name = s;

            //year

            s = (char *) malloc((strlen(eYear->Text.c_str())) +1);

            strcpy(s, eYear->Text.c_str());

            book.year = atoi(s); 

            if (book.year == 0)

               ShowMessage("Год издания введен неверно!");

             else

               {book.AddBook();ShowMessage("Книжка успешно  добавлена!");}

           

            if (book.year != 0) {

              AddBookForm->Close();

              eAvtor->Text = "";

              eBook->Text = "";

              eYear->Text = "";

            } 

    }

    //---------------------------------------------------------------------------

 

    EditUnit.cpp 

    //---------------------------------------------------------------------------

    #include <vcl.h>

    #pragma hdrstop 

    #include "EditUnit.h"

    #include "Bibl.cpp"

    //---------------------------------------------------------------------------

    #pragma package(smart_init)

    #pragma resource "*.dfm"

    TEditForm *EditForm;

    //---------------------------------------------------------------------------

    __fastcall TEditForm::TEditForm(TComponent* Owner)

            : TForm(Owner)

    {

    }

    //---------------------------------------------------------------------------

    void __fastcall TEditForm::bCancelClick(TObject *Sender)

    {

            EditForm->Close();

    }

    //---------------------------------------------------------------------------

    void __fastcall TEditForm::bOKClick(TObject *Sender)

    {

            HomeBibl b;

            int len = 0;

            len = strlen(eAvtor->Text.c_str());

            b.avtor = (char *) malloc((len) +1);

            strcpy(b.avtor, eAvtor->Text.c_str()); 

            len = strlen(eBook->Text.c_str());

            b.name = (char *) malloc((len) +1);

            strcpy(b.name, eBook->Text.c_str()); 

            b.year = StrToInt(eYear->Text);

           

            b.EditBook(StrToInt(Edit1->Text));

            EditForm->Close(); 

    }

    //---------------------------------------------------------------------------

 

    MainFormUnit.cpp 

    //---------------------------------------------------------------------------

    #include <vcl.h>

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #include <ctype.h> 

    #pragma hdrstop 

    #include "MainFormUnit.h"

    #include "ProgInfUnit.h"

    #include "AddFormUnit.h"

    #include "Bibl.cpp"

    #include "SearchUnit.h"

    #include "EditUnit.h"

    //---------------------------------------------------------------------------

    #pragma package(smart_init)

    #pragma resource "*.dfm" 

    TMainForm *MainForm; 

    //---------------------------------------------------------------------------

    __fastcall TMainForm::TMainForm(TComponent* Owner)

            : TForm(Owner){ 

    }

    //---------------------------------------------------------------------------

    void __fastcall TMainForm::bExitClick(TObject *Sender){

            MainForm->Close();

    }

    //---------------------------------------------------------------------------

    void __fastcall TMainForm::bProgInfClick(TObject *Sender)

    {

            InfForm->Show();

    }

    //--------------------------------------------------------------------------- 

    void __fastcall TMainForm::bSortOkClick(TObject *Sender)

    {

            char *s1, *s2, *t1, *t2, *t3;

            int l1,l2;

            //сортировка по имени автора

            if (rbAvtor->Checked) {

               if (rbHigh->Checked) ob->SortBooks(1, true); else ob->SortBooks(1, false);

            }

            else

            if (rbName->Checked) {

               //сортировка по названию

               if (rbHigh->Checked) ob->SortBooks(2, true); else ob->SortBooks(2, false);

            }

            if (rbYear->Checked) {

               //сортировка по году издания

               if (rbHigh->Checked) ob->SortBooks(3, true); else ob->SortBooks(3, false);

            }

        for(int i=0;i<numRecords;i++){

            Table->Cells[0][i+1]= ob[i].avtor;

            Table->Cells[1][i+1]= ob[i].name;

            Table->Cells[2][i+1]= ob[i].year;

        }

    }

    //--------------------------------------------------------------------------- 

    void __fastcall TMainForm::bAddClick(TObject *Sender)

    {

            AddBookForm->Show();

    }

    //---------------------------------------------------------------------------

    void __fastcall TMainForm::FormShow(TObject *Sender)

    {

        LoadBooks();

        Table->RowCount = numRecords+1;

        Table->Font->Style=TFontStyles()<<fsBold;

        Table->Cells[0][0]="Автор книги";

        Table->Cells[1][0]="Название книги";

        Table->Cells[2][0]="Год издания";

        Table->Font->Size = 8;

        for(int i=0;i<numRecords;i++){

            Table->Cells[0][i+1]= ob[i].avtor;

            Table->Cells[1][i+1]= ob[i].name;

            Table->Cells[2][i+1]= ob[i].year;

        }

        Label3->Caption="Количество записей: "+IntToStr(numRecords); 

    }

    //---------------------------------------------------------------------------

    void __fastcall TMainForm::bDelAllBooksClick(TObject *Sender)

    {

            ob->DelAllBooks();

            for(int i=0;i<numRecords;i++){

              Table->Cells[0][i+1]= ob[i].avtor;

              Table->Cells[1][i+1]= ob[i].name;

              Table->Cells[2][i+1]= ob[i].year;

            }

            numRecords = 0;

    }

    //---------------------------------------------------------------------------

    void __fastcall TMainForm::bFindClick(TObject *Sender)

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