Курсовая работа: Средства работы с базами данных

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

При проведении тестирования ошибок выявлено не было. В результате тестирование система показала себя как стабильное и удобное в работе приложение.

информационный интерфейс программа

Заключение

В результате выполнения курсового проекта было создано приложение «Справочник почтовой индексации», реализующее следующие основные функции:

- данные организованы в файлы;

- хранение данные о почтовых индексах и местоположении;

- добавление, редактирование и удаление сведений из таблицы;

- поиск данных по нескольким полям.

Разработанное приложение имеет простой и интуитивно-понятный для пользователя интерфейс.

При реализации работы были пройдены этапы:

- описание и постановка задачи;

- кодирование программы на алгоритмический язык;

- тестирование полученного приложения.

Благодаря получившемуся приложению, пользователи смогут получать информацию о необходимых данных в кратчайшие сроки и в удобной для них форме.

Список использованных источников

1. ЛАБОРАТОРНАЯ РАБОТА №4 Проектирование графического интерфейса пользователя [Электронный ресурс]: https://www.bsuir.by/m/12_101523_1_108313.pdf

2. Структурная схема разрабатываемого программного обеспечения [Электронный ресурс]: https://bstudy.net/725019/informatika/strukturnaya_shema_razrabatyvaemogo_programmnogo_obespecheniya

3. Что такое тестирование ПО [Электронный ресурс]: https://synergy.ru/akademiya/programming/testirovanie_programmnogo_obespecheniya

4. Кетков, Юлий Практика программирования: Visual Basic, C++ Builder, Delphi. Самоучитель (+ дискета) / Юлий Кетков , Александр Кетков. - М.: БХВ-Петербург, 2012. - 464 c.

5. Архангельский, А. Я. Язык С++ в С++Builder / А.Я. Архангельский. - М.: Бином-Пресс, 2008. - 944 c.

6. Федоренко, Ю. П. Алгоритмы и программы на C++ Builder (+ CD-ROM) / Ю.П. Федоренко. - М.: ДМК Пресс, 2010. - 544 c.

Приложение А

Интерфейс программы

Рисунок А.1 - Общий вид главного окна программы

Рисунок А.2 - Панель поиска

Рисунок А.3 - Форма о программе

Приложение Б

Блок-схема программы

Приложение В

Текст программы

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

#include <vcl.h>

#include <memory>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

using namespace std;

TForm1 *Form1;

String fileName = "";

bool flEdit;

int row;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::N4Click(TObject *Sender)

{

if(SaveDialog1->Execute()) //вызываем стандартное окно сохранения файла

{

fileName = SaveDialog1->FileName; //сохраняем имя файла и путь

}

else return; //если пользователь отказался от сохранения выходим из функции

auto_ptr<TStringList> L (new TStringList); //создаем список, куда будем заносить данные для сохранения

for(int i = 0; i < StringGrid1->RowCount; i++) //проходимя по всем строкам таблицы

L->Add(StringGrid1->Rows[i]->CommaText); //добавлем данные для сохранения

L->SaveToFile(fileName); //сохраняем данные в файд

}

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

void __fastcall TForm1::N2Click(TObject *Sender)

{

if (OpenDialog1->Execute()) //вызываем стандартное диалоговое окно открытия

{

fileName = OpenDialog1->FileName; //сохраняем имя файла

auto_ptr<TStringList> L (new TStringList); //создаем список, куда будем читать данные из файла

L->LoadFromFile(fileName); //загружаем данные

for(int i = 0; i < StringGrid1->RowCount; i++)

StringGrid1->Rows[i]->Clear(); //очищаем таблицу для вывода новых данных

StringGrid1->RowCount = L->Count; //устаналиваем количество строк равное количеству запусей

for(int i = 0; i < L->Count; i++) //по всем строкам списка

StringGrid1->Rows[i]->CommaText = L->Strings[i]; //загружаем данные в таблицу

}

}

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

void __fastcall TForm1::N3Click(TObject *Sender)

{

if(fileName== "")

{

if(SaveDialog1->Execute())

{

fileName = SaveDialog1->FileName;

}

else return;

}

auto_ptr<TStringList> L (new TStringList);

for(int i = 0; i < StringGrid1->RowCount; i++)

L->Add(StringGrid1->Rows[i]->CommaText);

L->SaveToFile(fileName);

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

StringGrid1->ColWidths[0] = 250;

StringGrid1->Cells[0][0] = "Республика";

StringGrid1->ColWidths[1] = 250;

StringGrid1->Cells[1][0] = "Край (область)";

StringGrid1->ColWidths[2] = 250;

StringGrid1->Cells[2][0] = "Район";

StringGrid1->ColWidths[3] = 250;

StringGrid1->Cells[3][0] = "Населенный пункт";

StringGrid1->ColWidths[1] = 200;

StringGrid1->Cells[4][0] = "Индекс";

StringGrid2->ColWidths[0] = 250;

StringGrid2->Cells[0][0] = "Республика";

StringGrid2->ColWidths[1] = 250;

StringGrid2->Cells[1][0] = "Край (область)";

StringGrid2->ColWidths[2] = 250;

StringGrid2->Cells[2][0] = "Район";

StringGrid2->ColWidths[3] = 250;

StringGrid2->Cells[3][0] = "Населенный пункт";

StringGrid2->ColWidths[1] = 200;

StringGrid2->Cells[4][0] = "Индекс";

}

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

void __fastcall TForm1::SpeedButton4Click(TObject *Sender)

{if (Panel2->Visible) ShowMessage("Сперва закройте поиск!");

else {

Panel1->Visible = true;

LabeledEdit1->Text = StringGrid1->Cells[0][row];

LabeledEdit2->Text = StringGrid1->Cells[1][row];

LabeledEdit3->Text = StringGrid1->Cells[2][row];

LabeledEdit4->Text = StringGrid1->Cells[3][row];

LabeledEdit5->Text = StringGrid1->Cells[4][row];

flEdit = true;

}

}

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

void __fastcall TForm1::SpeedButton5Click(TObject *Sender)

{

if (Panel2->Visible) ShowMessage("Сперва закройте поиск!"); //если идет работа с панелью поиска, удалять нельзя

else {

if(MessageDlg(L"Удалить строку?", mtWarning, TMsgDlgButtons() << mbOK << mbCancel, 0) == mrOk) //если пользователь согласен

{

row = StringGrid1->Row; //запомнить текущую строку

for (int i=row; i<StringGrid1->RowCount-1; i++) //от текущей строки до конца таблицы

{

StringGrid1->Rows[i] = StringGrid1->Rows[i+1]; //сдвинуть все на одну вверх

}

StringGrid1->RowCount--; //уменьшить количество строк

}

}

}

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

void __fastcall TForm1::SpeedButton3Click(TObject *Sender)

{if (Panel2->Visible) ShowMessage("Сперва закройте поиск!");

else {

Panel1->Visible = true;

flEdit = false;

}

}

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

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)

{

LabeledEdit1->Text = "";

LabeledEdit2->Text = "";

LabeledEdit3->Text = "";

LabeledEdit4->Text = "";

LabeledEdit5->Text = "";

Panel1->Visible = false;

}

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

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)

{

if (flEdit)

{

StringGrid1->Cells[0][row] = LabeledEdit1->Text;

StringGrid1->Cells[1][row] = LabeledEdit2->Text;

StringGrid1->Cells[2][row] = LabeledEdit3->Text;

StringGrid1->Cells[3][row] = LabeledEdit4->Text;

StringGrid1->Cells[4][row] = LabeledEdit5->Text;

}

else

{

int i = StringGrid1->RowCount;

if (StringGrid1->Cells[0][i-1]=="") i--;

StringGrid1->RowCount = i+1;

StringGrid1->FixedRows = 1;

StringGrid1->Cells[0][i] = LabeledEdit1->Text;

StringGrid1->Cells[1][i] = LabeledEdit2->Text;

StringGrid1->Cells[2][i] = LabeledEdit3->Text;

StringGrid1->Cells[3][i] = LabeledEdit4->Text;

StringGrid1->Cells[4][i] = LabeledEdit5->Text;

}

LabeledEdit1->Text = "";

LabeledEdit2->Text = "";

LabeledEdit3->Text = "";

LabeledEdit4->Text = "";

LabeledEdit5->Text = "";

Panel1->Visible = false;

}

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

void __fastcall TForm1::StringGrid1Click(TObject *Sender)

{

row = StringGrid1->Row;

}

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

void __fastcall TForm1::N9Click(TObject *Sender)

{

this->Close();

}

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

void __fastcall TForm1::SpeedButton7Click(TObject *Sender)

{

CheckBox1->Checked = false;

CheckBox2->Checked = false;

CheckBox3->Checked = false;

CheckBox4->Checked = false;

LabeledEdit6->Text = "";

LabeledEdit7->Text = "";

LabeledEdit8->Text = "";

LabeledEdit9->Text = "";

LabeledEdit6->Enabled = false;

LabeledEdit7->Enabled = false;

LabeledEdit8->Enabled = false;

LabeledEdit9->Enabled = false;

StringGrid2->Visible = false;

StringGrid2->RowCount = 2;

StringGrid2->Cells[0][1] = "";

StringGrid2->Cells[1][1] = "";

StringGrid2->Cells[2][1] = "";

StringGrid2->Cells[3][1] = "";

StringGrid2->Cells[4][1] = "";

Panel2->Visible = false;

}

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

void __fastcall TForm1::CheckBox3Click(TObject *Sender)

{

if (CheckBox3->Checked)

LabeledEdit8->Enabled = true;

else

LabeledEdit8->Enabled = false;

}

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

void __fastcall TForm1::CheckBox1Click(TObject *Sender)

{

if (CheckBox1->Checked)

LabeledEdit6->Enabled = true;

else

LabeledEdit6->Enabled = false;

}

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

void __fastcall TForm1::CheckBox2Click(TObject *Sender)

{

if (CheckBox2->Checked)

LabeledEdit7->Enabled = true;

else

LabeledEdit7->Enabled = false;

}

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

void __fastcall TForm1::CheckBox4Click(TObject *Sender)

{

if (CheckBox4->Checked)

LabeledEdit9->Enabled = true;

else

LabeledEdit9->Enabled = false;

}

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

void __fastcall TForm1::N7Click(TObject *Sender)

{

Panel2->Visible = true;

}

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

void __fastcall TForm1::SpeedButton6Click(TObject *Sender)

{

StringGrid2->Visible = true; //показать таблицу поиска

int j = 1; //количество записей 1

if (CheckBox1->Checked) //если выбрано первое поле для поиска

{

for (int i=0; i<=StringGrid1->RowCount; i++) //идти по всем строкам таблицы

{

if (StringGrid1->Cells[0][i] == LabeledEdit6->Text) //если значение совпадает

{

if (CheckBox2->Checked) //если выбрано второе поле для поиска

if (StringGrid1->Cells[1][i] != LabeledEdit7->Text) //сверить значения, если не совпадает

continue; //перейти к следующей записи

if (CheckBox3->Checked) //если выбрано третье поле для поиска

if (StringGrid1->Cells[2][i] != LabeledEdit8->Text) //сверить значения, если не совпадает

continue; //перейти к следующей записи

if (CheckBox4->Checked) //если выбрано четвертое поле для поиска

if (StringGrid1->Cells[3][i] != LabeledEdit9->Text) //сверить значения, если не совпадает

continue; //перейти к следующей записи

j++; //если все надено, что нужно, то увеличиваем количество строка

StringGrid2->RowCount = j; //увеличивает количество строк в таблице

StringGrid2->Rows[j-1] = StringGrid1->Rows[i]; //переносим запись в таблицу поиска

}

}

return; //закончить работу функции

}

if (CheckBox2->Checked)

{

for (int i=0; i<=StringGrid1->RowCount; i++)

{

String temp = StringGrid1->Cells[1][i];

if (StringGrid1->Cells[1][i] == LabeledEdit7->Text)

{

if (CheckBox3->Checked)

if (StringGrid1->Cells[2][i] != LabeledEdit8->Text)

continue;

if (CheckBox4->Checked)

if (StringGrid1->Cells[3][i] != LabeledEdit9->Text)

continue;

j++;

StringGrid2->RowCount = j;

StringGrid2->Rows[j-1] = StringGrid1->Rows[i];

} }

return;

}

if (CheckBox3->Checked)

{

for (int i=0; i<=StringGrid1->RowCount; i++)

{

if (StringGrid1->Cells[2][i] == LabeledEdit8->Text)

{

if (CheckBox4->Checked)

if (StringGrid1->Cells[3][i] != LabeledEdit9->Text)

continue;

j++;

StringGrid2->RowCount = j;

StringGrid2->Rows[j-1] = StringGrid1->Rows[i];

} }

return;

}

if (CheckBox4->Checked)

{

for (int i=0; i<=StringGrid1->RowCount; i++)

{

if (StringGrid1->Cells[3][i] == LabeledEdit9->Text)

{

j++;

StringGrid2->RowCount = j;

StringGrid2->Rows[j-1] = StringGrid1->Rows[i];

}

}

return;

}}

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

void __fastcall TForm1::LabeledEdit5KeyUp(TObject *Sender, WORD &Key,

TShiftState Shift)

{

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

}

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

void __fastcall TForm1::N10Click(TObject *Sender)

{

Form2->ShowModal();

}

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

#include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

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

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

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

Приложение Г

Результат выполнения программы

Рисунок Г.1 - Главное окно программы

Рисунок Г.2 - Открытый файл с данными

Рисунок Г.3 - Панель добавления данных

Рисунок Г.4 - Панель поиска

Рисунок Г.5 - Пример поиска по одному полю

Рисунок Г.6 - Пример поиска по нескольким полям

Рисунок Г.7 - Форма «О программа»