Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ПП1 (C++ БД).doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
5 Мб
Скачать
☆

Работа 2.3. Организация надежного ввода

[1], с.585-588, 597-602, 617-619

Цель: Изучение способов защиты полей БД от ввода ошибочных символов.

Результат: Получить интерфейсы, аналогичные рис. 98-100

Основой для выполнения данной работы являются результаты, полученные в лабораторной работе №1.2.

Одним из основных средств надёжного ввода данных является управление видимостью органов управления. Для базы данных ввод информации осуществляется в двух допустимых режимах: ввод новых данных (состояние dsInsert) и редактирование старых данных (состояние dsEdit). Методы защиты различны для разных режимов, но общим требованием остаётся такое:

непосредственный ввод данных в таблицу недопустим.

Это объясняется тем, что при прямом вводе данных средства анализа и защиты сильно ограничены. Поэтому общие рекомендации отражаются в следующей процедуре.

Последовательность действий.

  1. Постройте интерфейс по образцу рис. 98.

Рис. 98. Интерфейс надежного ввода

(На рисунке жирным шрифтом показаны программные имена компонентов, по которым построены программные обработчики. По этому примеру студенты должны оформлять отчёты по лабораторным работам. )

  1. Запретите прямой доступ к таблице с консоли (gSpisok ->ReadOnly = true).

  2. Подготовьте вспомогательные окна редактирования для защищённых полей(Edit1..Edit8).

  3. Делайте видимыми только те компоненты, использование которых допустимо для текущего режима (по образцу рис. 99 - 100).

Рис. 99. При старте обе панели невидимы

Рис. 100. При нажатии кнопки «Добавить» видимой становится только первая панель

  1. Вводите данные в эти дополнительные маски ввода; проверяйте допустимость символов и значений (процедура Proverka – см. листинг программы на рис. 101) и, если проверка завершена успешно, переносите данные из масок ввода в таблицу базы данных.

Листинг программы

#include <vcl.h>

#pragma hdrstop

#include "uDBD.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//запись в метку количества студетов

void KolichStud()

{Form1->lblKolStud->Caption="Всего студентов "+ IntToStr(Form1->tSpisok->RecordCount);

}

/*процедура Proverka проверяет правильность данных в полях ввода. Если данные в

полях допустимы, процедура возвращает true, иначе - false*/

boolean Proverka()

{int gp, gr;/ //год поступления и год рождения

/*1.проверка правильности шифра не производится, так как его уникальность

обеспечивается алгритмическим путём

2.проверка допустимости символов в полях не производится, так как они

защищены обработчиками событий OnKeyPress - см. соответствующие процедуры

3.здесь проверяются только допустимые диапазоны года рождения и года поступления

*/

//проверка полей Panel1 - только для режима ВСТАВКИ

if (Form1->tSpisok->State= =dsInsert)

{gp=StrToInt(Form1->Edit3->Text);gr=StrToInt(Form1->Edit4->Text);

if ((gp>2010)||(gp<1990))

{ ShowMessage("недопустимый год поступления \n"+Form1->Edit3->Text+

"\nРазрешено от 1990 до 2010 " );

return false; }

if ((gr>2000)||(gr<1950))

{ ShowMessage("недопустимый год рождения "+Form1->Edit4->Text +

"\nРазрешено от 1950 до 2000 " );

return false;}

}

Рис. 101. Листинг программы надёжного ввода (начало, продолжение на следующей странице)