Библиотека. библиотека. Задание на курсовой проект Студенту Джаборову Алламырату (фамилия, имя собственное, отчество) группа 10701121 Тема курсовой работы Электронная библиотека Сроки сдачи финальной работы 19 декабря 2022 г
Скачать 486.8 Kb.
|
6. Список используемой литературы Wikipedia.org/ books.net-soft.ru/ board.com/ sqlforum.ru/ Бьерн Страуструп "Язык программирования 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; } // --------------------------------------------------------------------------- |