Главная страница
Навигация по странице:

  • Исходный код программы frmMain (Unit1. cpp)

  • Библиотека. библиотека. Задание на курсовой проект Студенту Джаборову Алламырату (фамилия, имя собственное, отчество) группа 10701121 Тема курсовой работы Электронная библиотека Сроки сдачи финальной работы 19 декабря 2022 г


    Скачать 486.8 Kb.
    НазваниеЗадание на курсовой проект Студенту Джаборову Алламырату (фамилия, имя собственное, отчество) группа 10701121 Тема курсовой работы Электронная библиотека Сроки сдачи финальной работы 19 декабря 2022 г
    АнкорБиблиотека
    Дата01.11.2022
    Размер486.8 Kb.
    Формат файлаdocx
    Имя файлабиблиотека.docx
    ТипКурсовой проект
    #765616
    страница4 из 5
    1   2   3   4   5



    6. Список используемой литературы

    1. Wikipedia.org/

    2. books.net-soft.ru/

    3. board.com/

    4. sqlforum.ru/

    5. Бьерн Страуструп "Язык программирования C++"


    Приложение А


    Исходный код программы

    frmMain (Unit1. cpp)

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

    #include

    #pragma hdrstop

    #include "Unit1. h" // frmMain

    #include "Unit2. h" // frmSearch

    #include "Unit3. h" // frmEdit

    #include "Unit4. h" // frmAbout

    #include "UserFunctions_unit. h"

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

    #pragma package (smart_init)

    #pragma resource "*. dfm"

    TfrmMain *frmMain;

    int frmEditState; // Объявление переменной, указывающей на тип формы frmEdit (добавление данных или редактирование)

    bool sortedbooks = false; // переменная, указывающая были ли отсортированы книги

    MyFunctions func; // объявление объекта типа MyFunctions

    //

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

    __fastcall TfrmMain:: TfrmMain (TComponent* Owner)

    : TForm (Owner)

    {

    // Задаем начальную надпись в панели статуса

    StatusBar1->Panels->Items [0] - >Text = " Просмотр списка всех книг в библиотеке";

    try // Перехватываем возможные ошибки во время выполнения блока программного кода

    {

    String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

    ADOQuery1->SQL->Clear (); // очистить SQL-запрос

    ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

    ADOQuery1->Open (); // активировать SQL-запрос

    }

    catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

    {

    Application->MessageBox ("Ошибка при работе с базой данных", "Вывод записей", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

    }

    func. ChangeCollName (DBGrid1); // Изменение названий столбцов

    }

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

    // Функция завершения работы приложения

    void __fastcall TfrmMain:: mnuExitClick (TObject *Sender)

    {

    this->Close (); // Закрыть приложение

    }

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

    // Функция вызова формы поиска

    void __fastcall TfrmMain:: mnuSearchClick (TObject *Sender)

    {

    frmSearch->Show (); // Открытие формы поиска

    }

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

    // Функция вызова формы поиска

    void __fastcall TfrmMain:: popmnuSearchClick (TObject *Sender)

    {

    frmSearch->Show (); // Открытие формы поиска

    }

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

    // Функция вызова формы добавления книги

    void __fastcall TfrmMain:: mnuAddClick (TObject *Sender)

    {

    if (! frmEdit->Showing) // если форма еще не открыта

    {

    frmEditState = 0; // устанавливаем состояние формы, указывающее на функции добавления книги

    frmEdit->Show (); // Открытие формы добавления книги

    }

    }

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

    // Функция вызова формы редактирования книги

    void __fastcall TfrmMain:: mnuEditBookClick (TObject *Sender)

    {

    if (! frmEdit->Showing) // если форма еще не открыта

    {

    frmEditState = 1; // устанавливаем состояние формы, указывающее на функции редактирования книги

    frmEdit->Show (); // Открытие формы добавления книги

    }

    }

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

    // Функция вызова формы добавления книги

    void __fastcall TfrmMain:: popmnuAddClick (TObject *Sender)

    {

    if (! frmEdit->Showing) // если форма еще не открыта

    {

    frmEditState = 0; // устанавливаем состояние формы, указывающее на функции добавления книги

    frmEdit->Show (); // Открытие формы добавления книги

    }

    }

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

    // Функция вызова формы редактирования книги

    void __fastcall TfrmMain:: popmnuEditBookClick (TObject *Sender)

    {

    if (! frmEdit->Showing) // если форма еще не открыта

    {

    frmEditState = 1; // устанавливаем состояние формы, указывающее на функции редактирования книги

    frmEdit->Show (); // Открытие формы добавления книги

    }

    }

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

    // Функция вызова метода удаления книги

    void __fastcall TfrmMain:: mnuDeleteClick (TObject *Sender)

    {

    frmMain->DeleteBook (); // вызов функции удаления книги

    }

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

    // Функция удаления книги

    void __fastcall TfrmMain:: DeleteBook ()

    {

    if (Application->MessageBox ("Вы действительно жедаете удалить книгу?", "Удаление записи о книге", MB_OKCANCEL + MB_ICONWARNING) == IDOK) // Вызываем MessageBox. Если пользователь нажмет на кнопку OK

    {

    // формирование SQL запроса // то продолжаем выполнять действия

    String QueryDelete = "DELETE FROM Books" \

    " WHERE num_udk='"+DBGrid1->Fields [0] - >AsString+"' and autor='"+DBGrid1->Fields [1] - >AsString+"'and title='"+DBGrid1->Fields [2] - >AsString+"'and year_print="+DBGrid1->Fields [3] - >AsString+" and count_in_library="+DBGrid1->Fields [4] - >AsString; // Строковая переменная, содержащая SQL запрос к базе данных

    try // Перехватываем возможные ошибки во время выполнения блока программного кода

    {

    ADOCommand1->CommandText = QueryDelete; // Устанавливаем значение SQL-запроса в объект ADOCommand1

    ADOCommand1->Execute (); // выполнение SQL-запрос

    // Обновление списка книг в таюлице DBGrid1

    String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

    ADOQuery1->SQL->Clear (); // очистить SQL-запрос

    ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

    ADOQuery1->Open (); // активировать SQL-запрос

    func. ChangeCollName (DBGrid1); // Изменение названий столбцов

    }

    catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

    {

    Application->MessageBox ("Ошибка при работе с базой данных", "Вывод записей", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

    }

    }

    }

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

    // Функция вызова метода удаления книги

    void __fastcall TfrmMain:: popmnuDeleteClick (TObject *Sender)

    {

    frmMain->DeleteBook (); // вызов функции удаления книги

    }

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

    // Функция вызова формы frmAbout

    void __fastcall TfrmMain:: mnuAboutClick (TObject *Sender)

    {

    frmAbout->Show (); // Открытие формы frmAbout

    }

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

    // Функция выводит список всех книг в библиотеке

    void __fastcall TfrmMain:: mnuShowAllClick (TObject *Sender)

    {

    String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

    ADOQuery1->SQL->Clear (); // очистить SQL-запрос

    ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

    ADOQuery1->Open (); // активировать SQL-запрос

    func. ChangeCollName (DBGrid1); // Изменение названий столбцов

    frmMain->mnuShowAll->Visible = false; // скрываем пункты меню

    frmMain->popmnuShowAll->Visible = false; // так как при выведенном полном списке книг они не востребованы

    StatusBar1->Panels->Items [0] - >Text = " Просмотр списка всех книг в библиотеке"; // Изменяем текст на панели статуса

    }

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

    // Функция выводит список всех книг в библиотеке

    void __fastcall TfrmMain:: popmnuShowAllClick (TObject *Sender)

    {

    String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

    ADOQuery1->SQL->Clear (); // очистить SQL-запрос

    ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

    ADOQuery1->Open (); // активировать SQL-запрос

    func. ChangeCollName (DBGrid1); // Изменение названий столбцов

    frmMain->mnuShowAll->Visible = false; // скрываем пункты меню

    frmMain->popmnuShowAll->Visible = false; // так как при выведенном полном списке книг они не востребованы

    StatusBar1->Panels->Items [0] - >Text = " Просмотр списка всех книг в библиотеке"; // Изменяем текст на панели статуса

    }

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

    // Функция открытия файла справки help. chm

    void __fastcall TfrmMain:: mnuHelpContentClick (TObject *Sender)

    {

    AnsiString FILE_HELP_NAME_STR = "help. chm"; // Задаем имя файла справки

    if (FileExists (FILE_HELP_NAME_STR)) // Если файл help. chm присутствует в каталоге программы

    {

    ShellExecute (Handle, "open", "help. chm", 0, 0, SW_SHOWNORMAL); // запускаем на выполнение

    return;

    }

    else

    {

    ShowMessage ("Файл справки \"help. chm\" в папке с исполняемым файлом не найден. Для исправления данной ситуации можно либо переустановить программу, либо искать файл самостоятельно. ");

    return;

    }

    }

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

    // Функция вызова метода сортировки книг

    void __fastcall TfrmMain:: mnuSortByYearClick (TObject *Sender)

    {

    SortBook (); // вызов функции сортировки книг

    }

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

    // Функция сортировки книг

    void __fastcall TfrmMain:: SortBook ()

    {

    if (! sortedbooks) // Если книги не отсортированны, то проводим сортировку

    {

    String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books ORDER BY year_print DESC"; // Строковая переменная, содержащая SQL запрос к базе данных

    ADOQuery1->SQL->Clear (); // очистить SQL-запрос

    ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

    ADOQuery1->Open (); // активировать SQL-запрос

    func. ChangeCollName (DBGrid1); // Изменение названий столбцов

    mnuSortByYear->Caption = "Отменить сортировку по годам"; // Изменяем названия

    popSortByYear->Caption = "Отменить сортировку по годам"; // пунктов меню

    sortedbooks = true; // и значение переменной на обратные

    }

    else // Если книги отсортированны, то отменяем сортировку

    {

    String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

    ADOQuery1->SQL->Clear (); // очистить SQL-запрос

    ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

    ADOQuery1->Open (); // активировать SQL-запрос

    func. ChangeCollName (DBGrid1); // Изменение названий столбцов

    mnuSortByYear->Caption = "Упорялочить по годам"; // Изменяем названия

    popSortByYear->Caption = "Упорялочить по годам"; // пунктов меню

    sortedbooks = false; // и значение переменной на обратные

    }

    }

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

    // Функция вызова метода сортировки книг

    void __fastcall TfrmMain:: popSortByYearClick (TObject *Sender)

    {

    SortBook (); // вызов функции сортировки книг

    }

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

    frmMain (Unit1. h)

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

    #ifndef Unit1H

    #define Unit1H

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

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

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

    class TfrmMain: public TForm

    {

    __published: // IDE-managed Components

    TADOConnection *ADOConnection1;

    TADOQuery *ADOQuery1;

    TDBGrid *DBGrid1;

    TDataSource *DataSource1;

    TStatusBar *StatusBar1;

    TMainMenu *MainMenu1;

    TMenuItem *mnuFile;

    TMenuItem *mnuExit;

    TMenuItem *mnuEdit;

    TMenuItem *mnuAdd;

    TMenuItem *mnuDelete;

    TMenuItem *mnuSearch;

    TMenuItem *N3;

    TMenuItem *mnuHelp;

    TMenuItem *mnuHelpContent;

    TMenuItem *N1;

    TMenuItem *mnuAbout;

    TPopupMenu *PopupMenu1;

    TMenuItem *popmnuAdd;

    TMenuItem *popmnuDelete;

    TMenuItem *N2;

    TMenuItem *popmnuSearch;

    TMenuItem *popmnuEditBook;

    TMenuItem *mnuEditBook;

    TADOCommand *ADOCommand1;

    TADODataSet *ADODataSet1;

    TMenuItem *mnuShowAll;

    TMenuItem *popmnuShowAll;

    TMenuItem *N4;

    TMenuItem *mnuSortByYear;

    TMenuItem *N5;

    TMenuItem *popSortByYear;

    void __fastcall mnuExitClick (TObject *Sender);

    void __fastcall mnuSearchClick (TObject *Sender);

    void __fastcall popmnuSearchClick (TObject *Sender);

    void __fastcall mnuAddClick (TObject *Sender);

    void __fastcall mnuEditBookClick (TObject *Sender);

    void __fastcall popmnuAddClick (TObject *Sender);

    void __fastcall popmnuEditBookClick (TObject *Sender);

    void __fastcall mnuDeleteClick (TObject *Sender);

    void __fastcall DeleteBook ();

    void __fastcall popmnuDeleteClick (TObject *Sender);

    void __fastcall mnuAboutClick (TObject *Sender);

    void __fastcall mnuShowAllClick (TObject *Sender);

    void __fastcall popmnuShowAllClick (TObject *Sender);

    void __fastcall mnuHelpContentClick (TObject *Sender);

    void __fastcall mnuSortByYearClick (TObject *Sender); // Функция удаления выделенной книги

    void __fastcall SortBook ();

    void __fastcall popSortByYearClick (TObject *Sender);

    private: // User declarations

    public: // User declarations

    __fastcall TfrmMain (TComponent* Owner);

    };

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

    extern PACKAGE TfrmMain *frmMain;

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

    #endif

    frmSearch (Unit2. cpp)

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

    #include

    #pragma hdrstop

    #include "Unit1. h"

    #include "Unit2. h"

    #include "UserFunctions_unit. h" // подключение пользовательской функции

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

    #pragma package (smart_init)

    #pragma resource "*. dfm"

    TfrmSearch *frmSearch;

    extern bool sortedbooks; // Объявляем общую переменную для форм frmMain, frmEdit и frmSearch

    MyFunctions func2; // объявление объекта типа MyFunctions

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

    __fastcall TfrmSearch:: TfrmSearch (TComponent* Owner)

    : TForm (Owner)

    {

    }

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

    // Функция обработки нажатия кнопки btnSearch

    void __fastcall TfrmSearch:: btnSearchClick (TObject *Sender)

    {

    bool searchOK = false; // переменная, указывающая заполнено ли хоть одно поле для поиска

    String QuerySearch = "SELECT num_udk, autor, title, year_print, count_in_library from Books WHERE "; // Строковая переменная, содержащая SQL запрос к базе данных

    if (txtUdk->Text! = "") // Если txtUdk содержит текст

    {

    searchOK = true; // переменной присваиваем true

    QuerySearch = QuerySearch + "num_udk = '" + txtUdk->Text + "' "; // добкавляем текст поиска к SQL запросу

    }

    if (txtAuthor->Text! = "") // Если txtAuthor содержит текст

    {

    if (searchOK) QuerySearch = QuerySearch + " and "; // если это не первое заполненное поле

    QuerySearch = QuerySearch + "autor like '%" + txtAuthor->Text + "%' "; // добкавляем текст поиска к SQL запросу

    searchOK = true; // переменной присваиваем true

    }

    if (txtTitle->Text! = "")

    {

    if (searchOK) QuerySearch = QuerySearch + " and ";

    QuerySearch = QuerySearch + "title like '%" + txtTitle->Text + "%' ";

    searchOK = true;

    }

    if (txtYear->Text! = "")

    {

    if (searchOK) QuerySearch = QuerySearch + " and ";

    QuerySearch = QuerySearch + "year_print = " + txtYear->Text + " ";

    searchOK = true;

    }

    if (txtNum_in_lib->Text! = "")

    {

    if (searchOK) QuerySearch = QuerySearch + " and ";

    QuerySearch = QuerySearch + "count_in_library = " + txtNum_in_lib->Text + " ";

    searchOK = true;

    }

    // Если хотябы одно текстовое поле заполнено выполняем поиск

    if (txtAuthor->Text! ="" || txtNum_in_lib->Text! ="" || txtTitle->Text! ="" || txtUdk->Text! ="" || txtYear->Text! ="")

    {

    try // Перехватываем возможные ошибки во время выполнения блока программного кода

    {

    frmMain->ADOQuery1->SQL->Clear (); // очистить SQL-запрос

    frmMain->ADOQuery1->SQL->Add (QuerySearch); // Устанавливаем значение SQL-запроса в объект ADOQuery1

    frmMain->ADOQuery1->Open (); // активировать SQL-запрос

    }

    catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

    {

    Application->MessageBox ("Ошибка при выполнении поиска", "Поиск", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

    }

    frmMain->mnuShowAll->Visible = true; // Показываем пункты меню "Отобразить все книги"

    frmMain->popmnuShowAll->Visible = true; // Показываем пункты меню "Отобразить все книги"

    frmSearch->Close (); // Закрываем форму поиска

    frmMain->StatusBar1->Panels->Items [0] - >Text = " Результат поиска"; // Изменяем текст в панели статусак

    frmMain->mnuSortByYear->Caption = "Упорялочить по годам"; // Изменяем название пункта сортировки

    frmMain->popSortByYear->Caption = "Упорялочить по годам"; // Изменяем название пункта сортировки

    sortedbooks = false; // значение переменной - сортировка не проводилась

    func2. ChangeCollName (frmMain->DBGrid1); // Изменение названий столбцов

    }

    else ShowMessage ("Не заданы параметры поиска"); // Если не заполнено поле поиска выводим сообщение

    }

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

    void __fastcall TfrmSearch:: btnCleartextClick (TObject *Sender) // Очищаем текстовые поля

    {

    txtAuthor->Text = ""; // Присваиваем текстовым полям пустое значение

    txtNum_in_lib->Text = "";

    txtTitle->Text = "";

    txtUdk->Text = "";

    txtYear->Text = "";

    }

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

    // Функция обработки ввода текста в поле txtYear

    void __fastcall TfrmSearch:: txtYearKeyPress (TObject *Sender, char &Key)

    {

    // разрешаем вводить только цифры

    if (! ( (Key >= '0' && Key <= '9') || Key == VK_BACK)) Key = 0x00;

    }

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

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

    // Функция обработки ввода текста в поле txtNum

    void __fastcall TfrmSearch:: txtNum_in_libKeyPress (TObject *Sender,

    char &Key)

    {

    // разрешаем вводить только цифры

    if (! ( (Key >= '0' && Key <= '9') || Key == VK_BACK)) Key = 0x00;

    }

    // ---------------------------------------------------------------------------
    1   2   3   4   5


    написать администратору сайта