Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Биометрические данные курсовая.docx
Скачиваний:
6
Добавлен:
26.02.2023
Размер:
4.31 Mб
Скачать

2.3 Дополнительные возможности программы

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

  1. Оформление кода вопросов в виде функций, возвращающих результат ответа. Создание DLL-библиотеки, в которой находятся упомянутые подпрограммы;

  2. Создание авторизации на тестовую часть;

  3. Создание массива ответов на тестовые вопросы (True/False), и запись его в файл Microsoft Word;

  4. Создание массива ответов на тестовые вопросы (True/False) и запись его в текстовый файл;

  5. Запись результатов ответов тестовой программы в базу данных Microsoft Access;

  6. Построение диаграммы, отображающей результаты тестирования.

Перейдем к рассмотрению вышеперечисленных возможностей.

По ходу разработки программы была создана пользовательская DLL библиотека с названием Courselib.В ней содержится код вопросов в виде функций, а также функции, реализующие вывод результата тестирования в различные программы (пункты 3-5 из списка задач, представленного выше).

Авторизация пользователя на тестовую часть производится посредством нажатия на кнопку «Ознакомиться с теоретической частью» и ввода в TextBox логина и пароля (пароль при вводе дополнительно шифруется символами «*»). Форма с авторизацией изображена на рисунке 24. Если логин или пароль не введены или некорректны, выдаются соответствующие сообщения: «Введите логин и пароль.», «Ошибка в логине или пароле. Попробуйте еще раз.».

Рисунок 24 – Авторизация на тестовую часть

Программный код для реализации этой дополнительной возможности представлен ниже.

String^login = "mtuci";

String^password = "pleasedontexpelme";

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

String^log = Courselib::Class::input(textBox1);

String^ pass = Courselib::Class::input(textBox2);

if (log == "") {

MessageBox::Show("Введите логин и пароль.", "Ошибка авторизации");

}

else {

if ((log == login) && (pass == password)) {

q1^ obj2 = gcnew q1();

obj2->Show();

this->Hide();

}

else {

MessageBox::Show("Ошибка в логине или пароле. Попробуйте еще раз.", "Ошибка авторизации");

}

}

}

Для получения результата в программе Microsoft Word, пользователю требуется нажать на соответствующую кнопку на финальной форме программы курсовой работы. Результат работы представлен на рисунке 25.

Рисунок 25 – Массив ответов в Microsoft Word

Программный код для реализации этой дополнительной возможности представлен ниже.

Код библиотеки:

static void outputWord(bool* arr)

{

auto Wrd = gcnew Microsoft::Office::Interop::Word::ApplicationClass();

Wrd->Visible = true;

auto inf = Type::Missing;

String^ str;

auto Doc = Wrd->Documents->Add(inf, inf, inf, inf);

Wrd->Selection->TypeText("Результат тестирования");

Wrd->Selection->TypeParagraph();

Object^ t1 = Microsoft::Office::Interop::Word::WdDefaultTableBehavior::wdWord9TableBehavior;

Object^ t2 = Microsoft::Office::Interop::Word::WdAutoFitBehavior::wdAutoFitContent;

Wrd->Selection->TypeParagraph();

Wrd->Selection->TypeParagraph();

Microsoft::Office::Interop::Word::Table^ tbl = Wrd->ActiveDocument->Tables->Add(Wrd->ActiveDocument->Paragraphs[2]->Range, 2, 16, t1, t2);

for (int i = 0; i < 16; i++)

{

tbl->Cell(1, i + 1)->Range->InsertAfter("[" + Convert::ToString(i+1) + "]");

str = String::Format("{0:f0}", arr[i]);

tbl->Cell(2, i + 1)->Range->InsertAfter(str);

}

}

Код на форме программы курсовой работы:

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {

Courselib::out::outputWord(arr);

}

Для получения результата в программе Блокнот, пользователю требуется нажать на соответствующую кнопку на финальной форме программы курсовой работы. После этого появляется приглашение в диалоговом окне следующего содержания: «Введите путь по которому будет сохранен файл и его имя. Расширение добавляется автоматически. Например:C:\\Users\\name\\repos\имя файла». После ввода пути для записи результатов ответа на тестовые вопросы выводится MessageBox с сообщением: «Запись ответов в текстовый файл произведена успешно». Результат работы представлен на рисунках 26, 27.

Рисунок 26 – Ввод пути для .txt файла

Рисунок 27 – Массив ответов в Блокноте

Программный код для реализации этой дополнительной возможности представлен ниже.

Код библиотеки:

static void outputTextbook(DataGridView^ grid)

{

String^ f = Interaction::InputBox("Введите путь по которому будет сохранен файл и его имя. Расширение добавляется автоматически" + "\nНапример:C:\\Users\\name\\repos\"имя файла", "Ввод", "", -1, -1);

String^ filename = f + ".txt";

try

{

auto fk = System::Text::Encoding::GetEncoding(1251);

auto Z = gcnew IO::StreamWriter(filename, false, fk);

String^ msg1;

msg1 = "Результат тестирования";

Z->WriteLine(msg1);

for (int i = 0; i < grid->ColumnCount; i++)//вывод исходного массива

{

Z->WriteLine(Convert::ToString(grid->Rows[1]->Cells[i]->Value));

}

Z->Close();

MessageBox::Show("Запись успешна");

}

catch (System::Exception^ E)

{

MessageBox::Show(E->Message + "\nОшибка", "Ошибка");

}

}

Код на форме программы курсовой работы:

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {

Courselib::out::outputTextbook(dataGridView1);

}

Для получения результата в программе Microsoft Access, пользователю требуется нажать на соответствующую кнопку на финальной форме программы курсовой работы. В качестве подтверждения того, что запись произведена, всплывет сообщение с надписью «В таблицу MS Access добавлены записи». Файл сохраняется в папку с директорией «..\Course\Course». Результат работы представлен на рисунке 28.

Рисунок 28 – Таблица результата в Microsoft Access

Программный код для реализации этой дополнительной возможности представлен ниже.

Код библиотеки:

static void create_file() {

if (File::Exists("Результат.mdb"))

File::Delete("Результат.mdb");

ADOX::Catalog^ k = gcnew ADOX::CatalogClass();

try {

k->Create("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = 'Результат.mdb'");

MessageBox::Show("...");

}

catch (System::Runtime::InteropServices::COMException^ situation)

{

MessageBox::Show(situation->Message);

}

finally

{

k = nullptr;

}

}

static void structure()

{

auto p = gcnew OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Результат.mdb");

p->Open();

auto c = gcnew OleDbCommand("Create Table [Result] (num int NOT NULL, rezmas char (200));", p);

try {

c->ExecuteNonQuery();

MessageBox::Show("Database was created");

}

catch (System::Runtime::InteropServices::COMException^ situation)

{

MessageBox::Show(situation->Message);

}

p->Close();

}

static void add_zap(bool* mas)

{

for (int i = 0; i < 16; i++)

{

auto p = gcnew OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Результат.mdb");

p->Open();

auto c = gcnew OleDbCommand("INSERT INTO Result(num, rezmas) VALUES('" + (i+1) + "','" + mas[i] + "')");

c->Connection = p;

c->ExecuteNonQuery();

p->Close();

}

MessageBox::Show("В таблицу MS Access добавлены записи", "Информация", MessageBoxButtons::OK, MessageBoxIcon::Information);

}

Код на форме программы курсовой работы:

private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {

Courselib::out::create_file();

Courselib::out::structure();

Courselib::out::add_zap(arr);

}

Диаграмма с результатом тестирования представлена на рисунке 29. На вертикальной оси отражены номера вопросов, результат – на столбцах диаграммы (желтым отмечено количество верных ответов, красным – неверных).

Рисунок 29 – Диаграмма с результатом тестирования

Программный код для реализации этой дополнительной возможности представлен ниже.

private: System::Void final_load(System::Object^ sender, System::EventArgs^ e) {

..

int right;

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

if (arr[i] == 1) {

right = right + 1;

}

}

int wrong = 16 - right;

chart1->Series["Верно"]->Points->AddXY(" ", right);

chart1->Series["Неверно"]->Points->AddXY(" ", wrong);

..

}

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

  1. Разработано электронное пособие;

  2. Разработана тестовая программа;

  3. Создана пользовательская DLL библиотека;

  4. Выведена теоретическая часть с помощью текстового файла Microsoft Word;

  5. Записаны результаты ответа на каждый вопрос в текстовый файл, файл Microsoft Word и Microsoft Access;

  6. Выведена диаграмма с результатом тестирования.