Файл: Курсовой проект (Пояснительная записка) Учебная дисциплина Основы алгоритмизации и программирования Тема Разработка приложения для учета программного обеспечения Выполнил(а) учся гр. По21 Корзун А. И.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 73
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рисунок 3.1 - Структура программного средства
Модуль главного окна программы дает возможность использовать основной функционал программы: просматривать записи, выбирать нужные. Также позволяет сортировать записи в таблице по нужному типу.
Модуль работы с БД дает пользователю возможность использовать модули для управления данными в таблице приложения. Подмодули добавление, редактирование, удаление позволяют выполнять основные функции для управления данными в таблице. Пользователь может, как добавить, так и изменить существующую запись, а также удалить.
В разделе поиска, пользователь может искать нужные записи. Подмодуль отчетность предоставляет пользователю предварительно посмотреть отчет в Excel и распечатать его в случае необходимости.
3.3 Разработка схемы алгоритма
На рисунке 3.2 представлена обобщенная схема алгоритма добавления записей в базу данных.
После открытия новой формы добавления ПО, пользователю предлагается ввести нужные данные в DBEdit.
Далее данные поступают в data set, после чего идет проверка введенных данных. Если данные не верны, пользователю отобразится ошибка, и данные не будут записаны.
Если же все данные верны, они передаются в базу данных, и записываются в таблицу.
Рисунок 3.2 - Блок-схема алгоритма
3.4 Разработка интерфейса приложения и программного кода
Компоненты, которые будут использованы для реализации приложения, представлены ниже:
Главный модуль программы для работы с БД представлен на рисунке 3.3
Рисунок 3.3 – Главное окно программы
На Form1 были использованы следующие компоненты:
-
MainMenu1 – осуществляет главное меню программы, без которого не обходится ни одна программа (рисунок 3.4)
Рисунок 3.4 - Элементы компонента MainMenu
Рассмотрим фрагменты кода каждого элемента MainMenu:
Добавить:
void __fastcall TForm1::N4Click(TObject *Sender) { fDM->ADOQuery1->Append(); fDM->VN->Append(); fDM->Post->Append(); Form2->ShowModal(); } |
Редактировать:
void __fastcall TForm1::N5Click(TObject *Sender) { Form2->ShowModal(); } |
Удалить:
void __fastcall TForm1::N6Click(TObject *Sender) { fDM->ADOQuery1->Delete(); } |
Выход:
void __fastcall TForm1::N8Click(TObject *Sender) { Form1->Close(); } |
Отчетность:
void __fastcall TForm1::Excel1Click(TObject *Sender) { Variant App,Books,Book,Sheets,Sheet,Cells,Cell;//Переменные для работы с OLE int ind,kd; int ob; App=CreateOleObject("Excel.Application");//Создаем объект Excel Books=App.OlePropertyGet("Workbooks");//Создаем объект книга Books.OleProcedure("Add");//добавляем книгу Book=Books.OlePropertyGet("Item",1);//задаем количество книг Sheets=Book.OlePropertyGet("Worksheets");//создаем объект лист Sheet=Sheets.OlePropertyGet("Item",1);//указываем количество листов Sheet.OlePropertySet("Name",WideString("Отчет1"));//называем лист «Отчет1» Cell=Sheet.OlePropertyGet("Cells");//создаем объект строка Cell.OlePropertyGet("Font").OlePropertySet("Size",10);//задаем размер шрифта Cell.OlePropertyGet("Item",1,1).OlePropertySet("Value",WideString("Лицензионное ПО")); Cell.OlePropertyGet("Item",1,1).OlePropertyGet("Font").OlePropertySet("Italic",true); Cell.OlePropertyGet("Item",1,1).OlePropertyGet("Font").OlePropertySet("Size",12); Cell=Sheet.OlePropertyGet("Range",WideString("A2:H2")); Cell.OlePropertyGet("Borders").OlePropertySet("Weight",2); Cell.OlePropertyGet("Font").OlePropertySet("Bold",true); //Задаем длину столбцов Cell.OlePropertyGet("Item",1,1).OlePropertySet("ColumnWidth",5); Cell.OlePropertyGet("Item",1,2).OlePropertySet("ColumnWidth",40); Cell.OlePropertyGet("Item",1,3).OlePropertySet("ColumnWidth",20); Cell.OlePropertyGet("Item",1,4).OlePropertySet("ColumnWidth",30); Cell.OlePropertyGet("Item",1,5).OlePropertySet("ColumnWidth",30); Cell.OlePropertyGet("Item",1,6).OlePropertySet("ColumnWidth",10); //Задаем название столбцам Cell.OlePropertyGet("Item",1,1).OlePropertySet("Value",WideString("Инвентарный номер")); Cell.OlePropertyGet("Item",1,2).OlePropertySet("Value",WideString("Название")); Cell.OlePropertyGet("Item",1,3).OlePropertySet("Value",WideString("Краткое название")); Cell.OlePropertyGet("Item",1,4).OlePropertySet("Value",WideString("Тип")); Cell.OlePropertyGet("Item",1,5).OlePropertySet("Value",WideString("Производитель")); Cell.OlePropertyGet("Item",1,6).OlePropertySet("Value",WideString("Цена ПО")); fDM->ADOQuery1->First(); ind=2; while (!fDM->ADOQuery1->Eof) { Cell.OlePropertyGet("Item",ind,1).OlePropertySet("Value",((WideString)fDM->ADOQuery1Инвентарныйномер->Text)); Cell.OlePropertyGet("Item",ind,1).OlePropertyGet("Font").OlePropertySet("Size",12); Cell.OlePropertyGet("Item",ind,1).OlePropertyGet("Font").OlePropertySet("Bold",true); Cell.OlePropertyGet("Item",ind,2).OlePropertySet("Value",((WideString)fDM->ADOQuery1Название->Text)); Cell.OlePropertyGet("Item",ind,2).OlePropertyGet("Font").OlePropertySet("Size",12); Cell.OlePropertyGet("Item",ind,2).OlePropertyGet("Font").OlePropertySet("Bold",true); Cell.OlePropertyGet("Item",ind,3).OlePropertySet("Value",((WideString)fDM->ADOQuery1Краткоеназвание->Text)); Cell.OlePropertyGet("Item",ind,3).OlePropertyGet("Font").OlePropertySet("Size",12); Cell.OlePropertyGet("Item",ind,4).OlePropertySet("Value",((WideString)fDM->ADOQuery1Тип->Text)); Cell.OlePropertyGet("Item",ind,4).OlePropertyGet("Font").OlePropertySet("Size",12); Cell.OlePropertyGet("Item",ind,5).OlePropertySet("Value",((WideString)fDM->ADOQuery1Производитель->Text)); Cell.OlePropertyGet("Item",ind,5).OlePropertyGet("Font").OlePropertySet("Size",12); Cell.OlePropertyGet("Item",ind,6).OlePropertySet("Value",((WideString)fDM->ADOQuery1Цена ПО->Text)); Cell.OlePropertyGet("Item",ind,6).OlePropertyGet("Font").OlePropertySet("Size",12); fDM->ADOQuery1->Next(); ind=ind+1; } App.OlePropertySet("Visible",true); } |
Выход:
void __fastcall TForm1::N3Click(TObject *Sender) { Form1->Close();} |
Так же для удобства работы приложения будут использоваться компоненты:
-
Panel1, Panel2, Panel3 – панель, на которой расположены компоненты программы -
Bevel1, Bevel2 – Создание обособленной рамки для удобства интерфейса. -
Button1 (Редактировать) – осуществляет открытие специальной формы, которая отвечает за редактирование данных. Фрагмент кода:
void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->ShowModal(); } |
Рисунок 3.5 – Кнопка редактирования
-
Button2 (Добавить) - осуществляет открытие специальной формы, которая отвечает за добавление данных. Фрагмент кода:
void __fastcall TForm1::RadioButton4Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY [Цена ПО] Asc"); fDM->ADOQuery1->Open(); } |
Рисунок 3.6 – Кнопка добавления
-
Button3 (Удалить) – осуществляет удаление данных из DBGrid. Фрагмент кода:
void __fastcall TForm1::RadioButton3Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY [Цена ПО] Desc"); fDM->ADOQuery1->Open } |
Рисунок 3.7 - Кнопка удаления
-
Button4 (Поиск) – осуществляет открытие формы поиска, которая работает по выбору категории. Фрагмент кода:
void __fastcall TForm1::Button4Click(TObject *Sender) { Form3->Show(); } |
Рисунок 3.8 – Кнопка поиска
-
Button5 (Обновить таблицу) – осуществляет обновление таблицы. Фрагмент кода:
void __fastcall TForm1::Button5Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("Select * FROM [Лицензионное ПО]"); fDM->ADOQuery1->Open(); } |
Рисунок 3.9 – Кнопка обновления таблицы
Компоненты RadioButton представлены на рисунке 3.10:
Рисунок 3.10 – Компоненты сортировки
-
RadioButton1 – осуществляет отображение категории данных «Поставщик» в компоненте DBGrid2 -
RadioButton2 – осуществляет отображение категории данных «Внедрение» в компоненте DBGrid2
Рисунок 3.11 – Кнопки «Поставщик» и «Внедрение»
-
RadioButton3 (По высокой цене) – осуществляет сортировку данных по высокой цене в DBGrid1 -
RadioButton4 (По низкой цене) – осуществляет сортировку по низкой цене в компоненте DBGrid1 -
RadioButton5 (От а до я) – осуществляет сортировку в алфавитном порядке в компоненте DBGrid1 -
RadioButton6 (От я до а) – осуществляет сортировку в обратном алфавитном порядке в компоненте DBGrid1 -
RadioButton7 (По номеру сверху) – осуществляет сортировку по номеру сверху в компоненте DBGrid1 -
RadioButton8 (По номеру снизу) – осуществляет сортировку по номеру снизу в компоненте DBGrid1
Фрагмент кода RadioButton
void __fastcall TForm1::RadioButton1Click(TObject *Sender) { if (RadioButton1->Checked) { DBGrid2->DataSource=fDM->Post1; } } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton2Click(TObject *Sender) { if (RadioButton2->Checked) { DBGrid2->DataSource=fDM->VN1; } } void __fastcall TForm1::Button3Click(TObject *Sender) { fDM->ADOQuery1->Delete(); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton3Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY [Цена ПО] Desc"); fDM->ADOQuery1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton4Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY [Цена ПО] Asc"); fDM->ADOQuery1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton7Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY [Инвентарный номер] Asc"); fDM->ADOQuery1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton8Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY [Инвентарный номер] Desc"); fDM->ADOQuery1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton5Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY Название Asc"); fDM->ADOQuery1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioButton6Click(TObject *Sender) { fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add("SELECT * FROM [Лицензионное ПО] ORDER BY Название Desc"); fDM->ADOQuery1->Open(); } |
На Form2 были использованы следующие компоненты:
-
DBGrid1, DBGrid2 – компонент визуализации данных -
Splitter1 – разделяет компоненты DBGrid1 и DBGrid2 -
Bevel1, Bevel2, Bevel3 – Создание обособленной рамки для удобства интерфейса
Модуль добавления и редактирования данных (рисунок 3.12):
Рисунок 3.12 – Модуль добавления и редактирования данных
-
Button1 (Сохранить и выйти) – осуществляет сохранение данных и выход из формы при редактировании. Фрагмент кода:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if (fDM->ADOQuery1->Modified) {
fDM->ADOQuery1->Post();
}
if (fDM->VN->Modified) {
fDM->VN->Post();
}
if (fDM->Post->Modified) {
fDM->Post->Post();
}
Form2->Close();
}
-
Button2 (Добавить ещё ПО) – осуществляет ввод данных в DBGrid1 при их добавлении. Фрагмент кода:
void __fastcall TForm2::Button2Click(TObject *Sender) { fDM->ADOQuery1->Append(); // Открытие объектов данных fDM->VN->Append(); // Открытие объектов из таблицы «Внедрение» fDM->Post->Append(); // Открытие объектов из таблицы «Поставщик» DBEdit1->SetFocus(); // осуществление фокуса компонента } |
-
GroupBox1, GroupBox2, GroupBox3– объединение интерфейсных элементов -
DBNavigator1 – осуществляет перемещение по записям БД -
Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8, Label8, Label9, Label10– текстовые метки, содержащие информацию для ввода данных -
DBEdit1, DBEdit2, DBEdit3, DBEdit4, DBEdit5, DBEdit6, DBEdit7, DBEdit8, DBEdit9, DBEdit10, DBEdit11– поля редактирования, относящиеся к компоненту DBCtrls, необходимые для ввода данных и вывод их в основной модуль программы.
Модуль осуществления поиска данных (рисунок 3.13):
Рисунок 3.13 – Поиск данных
На Form3 были использованы следующие компоненты:
-
Button1 (Поиск) – кнопка осуществления поиска. Фрагмент кода:
void __fastcall TForm3::Button1Click(TObject *Sender) { AnsiString query; switch(ComboBox1->ItemIndex) { case 0: query="SELECT * FROM [Лицензионное ПО] WHERE Название LIKE '%"+Edit1->Text+"%'"; break; case 1: query="SELECT * FROM [Лицензионное ПО] WHERE Тип LIKE '%"+Edit1->Text+"%'"; break; case 2: query="SELECT * FROM [Лицензионное ПО] WHERE Производитель LIKE '%"+Edit1->Text+"%'"; break; case 3: query="SELECT * FROM [Лицензионное ПО] WHERE [Цена ПО] LIKE '%"+Edit1->Text+"%'"; break; } fDM->ADOQuery1->Close(); fDM->ADOQuery1->SQL->Clear(); fDM->ADOQuery1->SQL->Add(query); fDM->ADOQuery1->Open(); Form3->Edit1->Clear(); } |