Средства и порядок испытаний

Во время испытания приложения «SHOP» необходимо использовать персональный компьютер с установленной операционной системой Windows XP и выше. К тому же на компьютере должны быть установлены Delphi 2009, Firebird 2.5, IBExpert.

Для проверки правильности работы системы был принят следующий порядок действий:

а) запустить программу на выполнение;

б) провести тестирование программы по тестам;

в) сравнить реакции программы с ожидаемым результатом;

г) сделать выводы по результатам тестирования о работоспособности программы.

7.6 Методы испытаний

Для проверки правильности работы программы были разработаны тестовые примеры.

Тестовый пример 1. Проверка функции учет информации о производителях.

При запуске приложения на экране появится главное окно приложения (Рисунок Б.1). Таблица изготовителя будет уже заполнена данными об изготовителе. Чтобы заполнить таблицу изготовителя, необходимо заполнить все соответствующие поля, для этого щелкнуть по кнопке «Добавить». Откроется новое окно приложения, в которое нужно будет ввести необходимые данные и нажать кнопку «ОК» (Рисунок Б.2). Чтобы обновить данные в таблице, следует нажать кнопку «Обновить», в результате чего информация в таблице изготовителя будет обновлена (Рисунок Б.3). Для изменения какой – либо записи таблицы, требуется нажать на кнопку «Изменить» и внести необходимые изменения записи, после чего нажать «ОК» (Рисунок Б.4). Записи из таблицы можно также и удалять. Для этого требуется выделить необходимую запись и нажать на кнопку «Удалить». После этого откроется окно с предупреждением, нужно ли удалять данную запись или нет (Рисунок Б.5). Требуется сделать выбор, нажав на кнопку «Да» или «Нет» (Рисунок Б.6).

Тестовый пример 2. Чтобы начать работу с таблицей ассортимент, требуется использовать кнопки «Добавить», «Изменить», «Удалить», «Запросы», а также использовать поле «Фильтр» для фильтрации информации в таблице. Для добавления записи в таблицу требуется использовать кнопку «Добавить» (Рисунок Б.7). При нажатии на эту кнопку осуществляется добавление записи в таблицу ассортимента (Рисунок Б.8). После открытия формы для добавления новой записи, требуется заполнить соответствующие пустые поля «Товар», «Размер», «Цена», «Количество», поле «Текущая дата» заполняется автоматически датой на настоящее время, но если требуется, то можно выбрать другую дату (Рисунок Б.9). После чего, необходимо нажать на кнопку «ОК» (Рисунок Б.10), либо «Отмена» (Рисунок Б.11).

Чтобы изменить какую – то запись в таблице, в начале нужно ее выделить и нажать кнопку «Изменить» (Рисунок Б.12). В результате чего откроется окно изменения записи (Рисунок Б.13). Чтобы внести изменения нужно установить курсор в соответствующее поле и отредактировать информацию (Рисунок Б.14). Далее нажать кнопку «ОК» для подтверждения или «Отменить» для выхода из окна изменений записи.

Чтобы удалить какую – то запись из таблицы, следует выделить ее, после чего нажать кнопку «Удалить» (Рисунок Б.15). Программа выдаст окно с подтверждением, нужно ли удалять текущую запись или нет (Рисунок Б.16). Сделать выбор при помощи кнопки «Да», для того, чтобы запись была удалена, либо кнопки «Нет» для отмены удаления записи из таблицы.

Для выполнения запросов, требуется нажать на кнопку «Запросы» (Рисунок Б.16). Приложение выдаст форму с таблицей и кнопками «Максимальная цена» (Рисунок Б.17), «Средний размер» (Рисунок Б.18), «Значение размера с максимальной ценой больше 1200» (Рисунок Б.19), «Количество размеров» (Рисунок Б.19). Для того, чтобы в таблице отобразилась информация с максимальной ценой обуви, требуется нажать кнопку «Максимальная цена» (Рисунок Б.17), результат будет отображен в таблице (Рисунок Б.20). Для отображения информации обуви среднего размера, нажать кнопку «Средний размер» (Рисунок Б.18). В таблице будет отображен результат данного запроса (Рисунок Б.21). Чтобы приложение вывело в таблицу информацию о том, каково значение размера с максимальной ценой больше 1200, нажать кнопку «Значение размера с максимальной ценой больше 1200» (Рисунок Б.19). В таблице будет выведен результат данного запроса (Рисунок Б.22). Если пользователю необходима информация о количестве размеров обуви, ему необходимо нажать кнопку «Количество размеров» (Рисунок Б.19). После чего приложение выдаст результат данного запроса, который будет выведен в таблице (Рисунок Б.23).

Чтобы выйти завершить работу с запросами, необходимо нажать кнопку «Выход» (Рисунок Б.24).

При работе с таблицей ассортимента товара обуви можно также еще и произвести фильтрацию всей информации таблицы. Для этого в пустое поле ввода информации для фильтрации (Рисунок Б.25) ввести ту информацию, которая должна быть найдена (Рисунок Б.26). После чего поставить галочку рядом со словом «Фильтр» (Рисунок Б.27). Приложение выведет найденную запись с введенной в поле фильтрации информацию (Рисунок Б.28).

На форме «Учет о сведениях работы обувного магазина» приложения SHOP существует главное меню, которое состоит из трех пунктов: Файл (Рисунок Б.29), Таблица (Рисунок Б.30), Отчет (Рисунок Б.31). После нажатия на кнопку главного меню «Файл» будет виден выпадающий список с выбором «Выйти» (Рисунок Б.31) для выхода из приложения и «Обновить» (Рисунок Б.32) для обновления информации в таблице изготовитель. После нажатия на кнопку главного меню «Таблица» (Рисунок Б.30) откроется выпадающий список с выбором действий «Добавить» (Рисунок Б.33) для добавления записи в таблицу, «Изменить» (Рисунок Б.34) для изменения записи в таблице, «Удалить» для удаления какой – либо записи из таблицы. На главной форме приложения в главном меню представлена также кнопка «Отчет (Рисунок Б.35). Это пункт нужен для отображения отчета на экран об ассортименте обуви и ее изготовителе (Рисунок Б.36).

8.2 Условия применения

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

Приложение работает как на локальном компьютере, так и в сети. Для работы на сервере на нем установлены СУБД Firebird 2.5 и файл с БД, а на рабочей станции – приложение для работы с БД. Для работы на локальном компьютере на нем установлены СУБД Firebird, приложение для работы с БД, файл с БД.

Описание задачи

8.1 Назначение программы

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

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

- учет данных об изготовителях;

- учет данных об ассортименте;

- осуществлять запросы к базе данных;

- формировать отчетные документы об ассортименте обуви и ее производителях.

8.2 Условия применения

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

Приложение работает как на локальном компьютере, так и в сети. Для работы на сервере на нем установлены СУБД Firebird 2.5 и файл с БД, а на рабочей станции – приложение для работы с БД. Для работы на локальном компьютере на нем установлены СУБД Firebird, приложение для работы с БД, файл с БД. Программа должна быть совместима с операционной системой Windows XP/7/8.

Описание задачи

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

- отображать информацию об ассортименте имеющейся обуви - идентификатор ассортимента, наименование обуви, размер, цену, количество, текущую дату;

- отображать информацию об изготовителе обуви - идентификатор изготовителя, название фирмы, ее адрес;

- формировать сведения об ассортименте обуви;

- формировать сведения об изготовителе обуви;

- осуществлять запросы к базе данных;

- формировать отчетные документы.

Тестовый пример 1. Проверка функции учет информации о производителях.

При запуске приложения на экране появится главное окно приложения (Рисунок Б.1). Таблица изготовителя будет уже заполнена данными об изготовителе. Чтобы заполнить таблицу изготовителя, необходимо заполнить все соответствующие поля, для этого щелкнуть по кнопке «Добавить». Откроется новое окно приложения, в которое нужно будет ввести необходимые данные и нажать кнопку «ОК» (Рисунок Б.2). Чтобы обновить данные в таблице, следует нажать кнопку «Обновить», в результате чего информация в таблице изготовителя будет обновлена (Рисунок Б.3). Для изменения какой – либо записи таблицы, требуется нажать на кнопку «Изменить» и внести необходимые изменения записи, после чего нажать «ОК» (Рисунок Б.4). Записи из таблицы можно также и удалять. Для этого требуется выделить необходимую запись и нажать на кнопку «Удалить». После этого откроется окно с предупреждением, нужно ли удалять данную запись или нет (Рисунок Б.5). Требуется сделать выбор, нажав на кнопку «Да» или «Нет» (Рисунок Б.6).

Тестовый пример 2. Чтобы начать работу с таблицей ассортимент, требуется использовать кнопки «Добавить», «Изменить», «Удалить», «Запросы», а также использовать поле «Фильтр» для фильтрации информации в таблице. Для добавления записи в таблицу требуется использовать кнопку «Добавить» (Рисунок Б.7). При нажатии на эту кнопку осуществляется добавление записи в таблицу ассортимента (Рисунок Б.8). После открытия формы для добавления новой записи, требуется заполнить соответствующие пустые поля «Товар», «Размер», «Цена», «Количество», поле «Текущая дата» заполняется автоматически датой на настоящее время, но если требуется, то можно выбрать другую дату (Рисунок Б.9). После чего, необходимо нажать на кнопку «ОК» (Рисунок Б.10), либо «Отмена» (Рисунок Б.11).

Чтобы изменить какую – то запись в таблице, в начале нужно ее выделить и нажать кнопку «Изменить» (Рисунок Б.12). В результате чего откроется окно изменения записи (Рисунок Б.13). Чтобы внести изменения нужно установить курсор в соответствующее поле и отредактировать информацию (Рисунок Б.14). Далее нажать кнопку «ОК» для подтверждения или «Отменить» для выхода из окна изменений записи.

Чтобы удалить какую – то запись из таблицы, следует выделить ее, после чего нажать кнопку «Удалить» (Рисунок Б.15). Программа выдаст окно с подтверждением, нужно ли удалять текущую запись или нет (Рисунок Б.16). Сделать выбор при помощи кнопки «Да», для того, чтобы запись была удалена, либо кнопки «Нет» для отмены удаления записи из таблицы.

Для выполнения запросов, требуется нажать на кнопку «Запросы» (Рисунок Б.17). Приложение выдаст форму с таблицей и кнопками «Максимальная цена» (Рисунок Б.18), «Средний размер» (Рисунок Б.19), «Значение размера с максимальной ценой больше 1200» (Рисунок Б.20), «Количество размеров» (Рисунок Б.20). Для того, чтобы в таблице отобразилась информация с максимальной ценой обуви, требуется нажать кнопку «Максимальная цена» (Рисунок Б.18), результат будет отображен в таблице (Рисунок Б.21). Для отображения информации обуви среднего размера, нажать кнопку «Средний размер» (Рисунок Б.19). В таблице будет отображен результат данного запроса (Рисунок Б.22). Чтобы приложение вывело в таблицу информацию о том, каково значение размера с максимальной ценой больше 1200, нажать кнопку «Значение размера с максимальной ценой больше 1200» (Рисунок Б.20). В таблице будет выведен результат данного запроса (Рисунок Б.23). Если пользователю необходима информация о количестве размеров обуви, ему необходимо нажать кнопку «Количество размеров» (Рисунок Б.20). После чего приложение выдаст результат данного запроса, который будет выведен в таблице (Рисунок Б.24).

Чтобы выйти завершить работу с запросами, необходимо нажать кнопку «Выход» (Рисунок Б.25).

При работе с таблицей ассортимента товара обуви можно также еще и произвести фильтрацию всей информации таблицы. Для этого в пустое поле ввода информации для фильтрации (Рисунок Б.26) ввести ту информацию, которая должна быть найдена (Рисунок Б.27). После чего поставить галочку рядом со словом «Фильтр» (Рисунок Б.28). Приложение выведет найденную запись с введенной в поле фильтрации информацию (Рисунок Б.29).

На форме «Учет о сведениях работы обувного магазина» приложения SHOP существует главное меню, которое состоит из трех пунктов: Файл (Рисунок Б.30), Таблица (Рисунок Б.31), Отчет (Рисунок Б.32). После нажатия на кнопку главного меню «Файл» будет виден выпадающий список с выбором «Выйти» (Рисунок Б.32) для выхода из приложения и «Обновить» (Рисунок Б.33) для обновления информации в таблице изготовитель. После нажатия на кнопку главного меню «Таблица» (Рисунок Б.31) откроется выпадающий список с выбором действий «Добавить» (Рисунок Б.34) для добавления записи в таблицу, «Изменить» (Рисунок Б.35) для изменения записи в таблице, «Удалить» для удаления какой – либо записи из таблицы. На главной форме приложения в главном меню представлена также кнопка «Отчет (Рисунок Б.36). Это пункт нужен для отображения отчета на экран об ассортименте обуви и ее изготовителе (Рисунок Б.37).

8.4 Входные и выходные данные

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

Заключение

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

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

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

1. Еременко А.В., Бобрышева Г.В., Долгова И.А. Проектирование баз данных с помощью Open ModelSphere. - Пенза: Издательство ПГУ, 2011. - 76 с.

2. Еременко А.В., Долгова И.А., Щербакова С.В. Базы данных. Учебник. - Пенза: Издательство ПГУ, 2010. - 110 с.

3. http://dep_ivs.pnzgu.ru/

Приложение А
(обязательное)

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

unit main001;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, ComCtrls, ExtCtrls, Grids, DBGrids, ActnList, DM;

type

TfmMain = class(TForm)

Panel1: TPanel;

StatusBar1: TStatusBar;

buExit: TButton;

buRefresh: TButton;

DBGrid1: TDBGrid;

buAdd: TButton;

buEdit: TButton;

buDelete: TButton;

MainMenu1: TMainMenu;

mFile: TMenuItem;

mExit: TMenuItem;

mRefresh: TMenuItem;

ActionList1: TActionList;

acQuit: TAction;

acRefresh: TAction;

mTable: TMenuItem;

mInsert: TMenuItem;

mUpdate: TMenuItem;

mDelete: TMenuItem;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

DBGrid2: TDBGrid;

chbFiltr: TCheckBox;

edFilter: TEdit;

Panel2: TPanel;

N1: TMenuItem;

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure acQuitExecute(Sender: TObject);

procedure acRefreshExecute(Sender: TObject);

procedure buAddClick(Sender: TObject);

procedure buEditClick(Sender: TObject);

procedure buDeleteClick(Sender: TObject);

procedure mInsertClick(Sender: TObject);

procedure mUpdateClick(Sender: TObject);

procedure mDeleteClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure chbFiltrClick(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmMain: TfmMain;

implementation

uses Add, Edit, EditPrep, AddPrep, Zaproci;

{$R *.dfm}

procedure TfmMain.acQuitExecute(Sender: TObject);

begin

Application.Terminate;

end;

procedure TfmMain.acRefreshExecute(Sender: TObject);

begin

with dm1 do

begin

//Обновляем набор данных dstVid_Voisk

dstAssortiment.FullRefresh;

dstIsgotovitel.FullRefresh;

//Выводим количество записей в таблице Vid_Voisk

StatusBar1.Panels[1].Text := IntToStr(dstAssortiment.RecordCount);

end;

end;

procedure TfmMain.buAddClick(Sender: TObject);

begin

//Создаем форму Add

fmAdd := TfmAdd.Create(Application);

//Выполняем на этой форме добавление записи

if fmAdd.ShowModal = mrOK then

begin

//Подтверждаем транзакцию

dm1.dstAssortiment.Post;

StatusBar1.Panels[1].Text := IntToStr(dm1.dstAssortiment.RecordCount);

end

//или откатываем ее

else dm1.dstAssortiment.Cancel;

end;

procedure TfmMain.buDeleteClick(Sender: TObject);

begin

with dm1 do

begin

if dstAssortiment.RecordCount= 0 then exit;

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then dstAssortiment.Delete;

StatusBar1.Panels[1].Text := IntToStr(dstAssortiment.RecordCount);

end;

end;

procedure TfmMain.buEditClick(Sender: TObject);

begin

//Проверить существуют ли записи в таблице

if dm1.dstAssortiment.RecordCount = 0 then exit;

//Создать форму fmEdit

fmEdit := TfmEdit.Create(Application);

//Выполняем на этой форме изменение записи

if fmEdit.ShowModal = mrOK then

begin

//Подтверждаем транзакцию

dm1.dstAssortiment.Post;

StatusBar1.Panels[1].Text := IntToStr(dm1.dstAssortiment.RecordCount);

end

//или откатываем ее

else dm1.dstAssortiment.Cancel;

end;

procedure TfmMain.Button1Click(Sender: TObject);

begin

fmZaprosi.Show;

end;

procedure TfmMain.Button2Click(Sender: TObject);

begin

//Создаем форму Add

fmAddPrep := TfmAddPrep.Create(Application);

//Выполняем на этой форме добавление записи

if fmAddPrep.ShowModal = mrOK then

begin

//Подтверждаем транзакцию

dm1.dstIsgotovitel.Post;

StatusBar1.Panels[1].Text := IntToStr(dm1.dstIsgotovitel.RecordCount);

end

//или откатываем ее

else dm1.dstIsgotovitel.Cancel;

end;

procedure TfmMain.Button3Click(Sender: TObject);

begin

//Проверить существуют ли записи в таблице

if dm1.dstIsgotovitel.RecordCount = 0 then exit;

//Создать форму fmEdit

fmEdPrep := TfmEdPrep.Create(Application);

//Выполняем на этой форме изменение записи

if fmEdPrep.ShowModal = mrOK then

begin

//Подтверждаем транзакцию

dm1.dstIsgotovitel.Post;

StatusBar1.Panels[1].Text := IntToStr(dm1.dstIsgotovitel.RecordCount);

end

//или откатываем ее

else dm1.dstIsgotovitel.Cancel;

end;

procedure TfmMain.Button4Click(Sender: TObject);

begin

with dm1 do

begin

if dstIsgotovitel.RecordCount= 0 then exit;

if Application.MessageBox('Удалить текущую запись?', 'Удаление',

MB_YESNO) = mrYes then dstIsgotovitel.Delete;

StatusBar1.Panels[1].Text := IntToStr(dstIsgotovitel.RecordCount);

end;

end;

procedure TfmMain.chbFiltrClick(Sender: TObject);

var fn : string;

begin

fn := '';

if (chbFiltr.Checked) and (edFilter.Text<>'') then

begin

//Если свойство checked установлено и есть образец для поиска

fn := '(NAME LIKE '''+edFilter.Text+'%'')';

dm1.dstIsgotovitel.Close;

dm1.dstIsgotovitel.MainWhereClause := fn;

dm1.dstIsgotovitel.Open;

end

else

begin

//Если свойство checked не установлено

dm1.dstIsgotovitel.Close;

dm1.dstIsgotovitel.MainWhereClause := fn;

dm1.dstIsgotovitel.Open;

end;

end;

procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);

begin

with dm1 do

begin

//Запрос закрывается.

dstAssortiment.Active := False;

//Закрываем связь с базой данных

dbShop.Connected := False;

end;

end;

procedure TfmMain.FormShow(Sender: TObject);

begin

//Открыть базу данных

with dm1 do

begin

dbShop.Connected := True;

dstIsgotovitel.Active := True;

StatusBar1.Panels[1].Text := IntToStr(dstIsgotovitel.RecordCount);

end;

end;

procedure TfmMain.mDeleteClick(Sender: TObject);

begin

buDelete.Click;

end;

procedure TfmMain.mInsertClick(Sender: TObject);

begin

buAdd.Click;

end;

procedure TfmMain.mUpdateClick(Sender: TObject);

begin

buEdit.Click;

end;

procedure TfmMain.N1Click(Sender: TObject);

begin

with dm1 do

begin

frxReport1.ShowReport();

end;

end;

end.

unit DM;

interface

uses

SysUtils, Classes, DB, pFIBDataSet, FIBDatabase, pFIBDatabase, FIBDataSet,

frxClass, frxDBSet;

type

Tdm1 = class(TDataModule)

dbShop: TpFIBDatabase;

ReadTransaction: TpFIBTransaction;

WriteTransaction: TpFIBTransaction;

dstAssortiment: TpFIBDataSet;

dsAssortiment: TDataSource;

dsQuery: TDataSource;

dstQuery: TpFIBDataSet;

dsIsgotovitel: TDataSource;

dstIsgotovitel: TpFIBDataSet;

dstAssortimentID_F: TFIBIntegerField;

dstAssortimentISDELIE: TFIBStringField;

dstAssortimentADRES: TFIBStringField;

dstIsgotovitelID_ISG: TFIBIntegerField;

dstIsgotovitelNAME: TFIBStringField;

dstIsgotovitelRAZMER: TFIBIntegerField;

dstIsgotovitelCOST: TFIBFloatField;

dstIsgotovitelKOL: TFIBIntegerField;

dstIsgotovitelTEDATA: TFIBDateField;

dstIsgotovitelID_IS: TFIBIntegerField;

dstIsgotovitelISG: TStringField;

dsAll: TDataSource;

dstAll: TpFIBDataSet;

frxReport1: TfrxReport;

frxDBDataset1: TfrxDBDataset;

private

{ Private declarations }

public

{ Public declarations }

end;

var

dm1: Tdm1;

implementation

{$R *.dfm}

end.

unit Zaproci;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, ExtCtrls, DM, StdCtrls;

type

TfmZaprosi = class(TForm)

Panel1: TPanel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button6: TButton;

DBGrid1: TDBGrid;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmZaprosi: TfmZaprosi;

implementation

{$R *.dfm}

procedure TfmZaprosi.Button1Click(Sender: TObject);

begin

DBGrid1.Columns[0].Visible := True;

DBGrid1.Columns[1].Visible := False;

DBGrid1.Columns[2].Visible := False;

DBGrid1.Columns[3].Visible := False;

DBGrid1.Columns[4].Visible := False;

with dm1 do

begin

if dstQuery.Active then dstQuery.Close;

dstQuery.SelectSQL.Clear;

dstQuery.SelectSQL.Add('SELECT MAX(COST)');

dstQuery.SelectSQL.Add('FROM ISGOTOVITEL');

dstQuery.Open;

end;

end;

procedure TfmZaprosi.Button2Click(Sender: TObject);

begin

DBGrid1.Columns[0].Visible := False;

DBGrid1.Columns[1].Visible := True;

DBGrid1.Columns[2].Visible := False;

DBGrid1.Columns[3].Visible := False;

DBGrid1.Columns[4].Visible := False;

with dm1 do

begin

if dstQuery.Active then dstQuery.Close;

dstQuery.SelectSQL.Clear;

dstQuery.SelectSQL.Add('SELECT AVG(RAZMER)');

dstQuery.SelectSQL.Add('FROM ISGOTOVITEL');

dstQuery.Open;

end;

end;

procedure TfmZaprosi.Button3Click(Sender: TObject);

begin

with dm1 do

begin

DBGrid1.Columns[0].Visible := True;

DBGrid1.Columns[1].Visible := False;

DBGrid1.Columns[2].Visible := False;

DBGrid1.Columns[3].Visible := True;

DBGrid1.Columns[4].Visible := False;

if dstQuery.Active then dstQuery.Close;

dstQuery.SelectSQL.Clear;

dstQuery.SelectSQL.Add('SELECT RAZMER, MAX(COST)');

dstQuery.SelectSQL.Add('FROM ISGOTOVITEL');

dstQuery.SelectSQL.Add('GROUP BY RAZMER');

dstQuery.SelectSQL.Add('HAVING (MAX(COST))>1200');

dstQuery.Open;

end;

end;

procedure TfmZaprosi.Button4Click(Sender: TObject);

begin

fmZaprosi.Close;

end;

procedure TfmZaprosi.Button6Click(Sender: TObject);

begin

DBGrid1.Columns[0].Visible := False;

DBGrid1.Columns[1].Visible := False;

DBGrid1.Columns[2].Visible := False;

DBGrid1.Columns[3].Visible := False;

DBGrid1.Columns[4].Visible := True;

with dm1 do

begin

if dstQuery.Active then dstQuery.Close;

dstQuery.SelectSQL.Clear;

dstQuery.SelectSQL.Add('SELECT COUNT (DISTINCT RAZMER)');

dstQuery.SelectSQL.Add('FROM ISGOTOVITEL');

dstQuery.Open;

end;

end;

end.

unit AddPrep;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, ExtCtrls, ComCtrls;

type

TfmAddPrep = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label7: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

Panel1: TPanel;

Panel2: TPanel;

buOK: TButton;

buCancel: TButton;

dtpTime: TDateTimePicker;

procedure buOKClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmAddPrep: TfmAddPrep;

implementation

uses DM;

{$R *.dfm}

procedure TfmAddPrep.buOKClick(Sender: TObject);

begin

with dm1 do

begin

//Включаем набор данных в режим добавления записи

dstIsgotovitel.Insert;

//Заносим введенные значения в набор данных dstPhone

dstIsgotovitel.FBN('NAME').AsString := edit1.Text;

dstIsgotovitel.FBN('RAZMER').AsInteger := StrToInt(edit2.Text);

dstIsgotovitel.FBN('COST').AsInteger := StrToInt(edit3.Text);

dstIsgotovitel.FBN('KOL').AsInteger := StrToInt(edit4.Text);

dstIsgotovitel.FBN('TEDATA').AsDateTime := dtpTime.Date;

dstIsgotovitel.FBN('ISG').AsString := DBLookupComboBox1.KeyValue;

end;

end;

procedure TfmAddPrep.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//Удаляем форму из памяти компьютера

Action := caFree;

fmAddPrep := nil;

end;

end.

unit EditPrep;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, ExtCtrls, ComCtrls;

type

TfmEdPrep = class(TForm)

Panel1: TPanel;

Label7: TLabel;

Label5: TLabel;

Label4: TLabel;

Label3: TLabel;

Label2: TLabel;

Label1: TLabel;

Edit4: TEdit;

Edit3: TEdit;

Edit2: TEdit;

Edit1: TEdit;

DBLookupComboBox1: TDBLookupComboBox;

Panel2: TPanel;

buOK: TButton;

buCancel: TButton;

dtpTime: TDateTimePicker;

procedure buOKClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

fmEdPrep: TfmEdPrep;

implementation

uses DM;

{$R *.dfm}

procedure TfmEdPrep.buOKClick(Sender: TObject);

begin

with dm1 do

begin

//Включаем набор данных в режим добавления записи

dstIsgotovitel.Insert;

//Заносим введенные значения в набор данных dstPhone

dstIsgotovitel.FBN('NAME').AsString := edit1.Text;

dstIsgotovitel.FBN('RAZMER').AsInteger := StrToInt(edit2.Text);

dstIsgotovitel.FBN('COST').AsInteger := StrToInt(edit3.Text);

dstIsgotovitel.FBN('KOL').AsInteger := StrToInt(edit4.Text);

dstIsgotovitel.FBN('TEDATA').AsDateTime := dtpTime.Date;

dstIsgotovitel.FBN('ISG').AsString := DBLookupComboBox1.KeyValue;

end;

end;

procedure TfmEdPrep.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//Удаляем форму из памяти компьютера

Action := caFree;

fmEdPrep := nil;

end;

procedure TfmEdPrep.FormShow(Sender: TObject);

begin

with dm1 do

begin

edit1.Text:=dstIsgotovitel.FBN('NAME').AsString;

edit2.Text:=dstIsgotovitel.FBN('RAZMER').AsString;

edit3.Text:=dstIsgotovitel.FBN('COST').AsString;

edit4.Text:=dstIsgotovitel.FBN('KOL').AsString;

dtpTime.Date := dstIsgotovitel.FBN('TEDATA').AsDateTime;

DBLookupComboBox1.KeyValue:=dstIsgotovitel.FBN('ISG').AsString;

end;

edit1.SetFocus;

end;

end.

ЭКРАННЫЕ ФОРМЫ

Приложение Б

(обязательное)

Средства и порядок испытаний - student2.ru

Рисунок Б.1 – Главное окно приложения

Средства и порядок испытаний - student2.ru

Рисунок Б.2 – Добавление записи в таблицу Isgotovitel

Средства и порядок испытаний - student2.ru

Рисунок Б.3 – Обновление данных в таблице

Средства и порядок испытаний - student2.ru

Рисунок Б.4 – Изменение записи

Средства и порядок испытаний - student2.ru

Рисунок Б.5 – Удаление выбранной записи

Средства и порядок испытаний - student2.ru

Рисунок Б.6 – Подтверждение удаления текущей записи

Средства и порядок испытаний - student2.ru

Рисунок Б.7 – Кнопка добавления записи в таблицу Assortiment

Средства и порядок испытаний - student2.ru

Рисунок Б.8 – Добавление записи в таблицу Assortiment

Средства и порядок испытаний - student2.ru

Рисунок Б.9 – Заполнение полей для добавления новой записи

Средства и порядок испытаний - student2.ru

Рисунок Б.10 – Выбор кнопки «ОК» для подтверждения добавления записи

Средства и порядок испытаний - student2.ru

Рисунок Б.11 – Выбор кнопки «Отмена» для отмены добавления записи

Средства и порядок испытаний - student2.ru

Рисунок Б.12 – Выделение записи и выбор кнопки «Изменить»

Средства и порядок испытаний - student2.ru

Рисунок Б.13 – Изменение записи

Средства и порядок испытаний - student2.ru

Рисунок Б.14 – Установление курсора в поле с необходимой информации и ее редактирование

Средства и порядок испытаний - student2.ru

Рисунок Б.15 – Выделение записи и выбор кнопки «Удалить» для удаления записи из таблицы

Средства и порядок испытаний - student2.ru

Рисунок Б.16 – Сообщение с подтверждением удаления текущей записи

Средства и порядок испытаний - student2.ru

Рисунок Б.17 – Выбор кнопки «Запросы» для выполнения программой запросов

Средства и порядок испытаний - student2.ru

Рисунок Б.18 – Выбор кнопки «Максимальная цена» для осуществления запроса и вывода необходимой информации в таблицу

Средства и порядок испытаний - student2.ru

Рисунок Б.19 - Выбор кнопки «Средний размер» для осуществления запроса и вывода необходимой информации в таблицу

Средства и порядок испытаний - student2.ru

Рисунок Б.20 - Выбор кнопки «Значение размера с максимальной ценой больше 1200» для осуществления запроса и вывода необходимой информации в таблицу

Средства и порядок испытаний - student2.ru

Рисунок Б.21 - Выбор кнопки «Количество размеров» для осуществления запроса и вывода необходимой информации в таблицу

Средства и порядок испытаний - student2.ru

Рисунок Б.22 – Вывод в таблицу информацию с максимальной ценой обуви

Средства и порядок испытаний - student2.ru

Рисунок Б.23 – Вывод в таблицу информацию со средним размеров обуви

Средства и порядок испытаний - student2.ru

Рисунок Б.24 – Вывод в таблицу информацию об обуви значения размера с максимальной ценой больше 1200

Средства и порядок испытаний - student2.ru

Рисунок Б.25 – Вывод в таблицу информацию об ассортименте обуви с количеством размеров

Средства и порядок испытаний - student2.ru

Рисунок Б.26 – Выбор кнопки «Выход» для выхода из окна запросов

Средства и порядок испытаний - student2.ru

Рисунок Б.27 – Поле для ввода информации, которая должна быть отфильтрована

Средства и порядок испытаний - student2.ru

Рисунок Б.28 – Ввод в поле информацию, по которой нужно найти запись

Средства и порядок испытаний - student2.ru

Рисунок Б.29 – Вывод отфильтрованной информации по введенному значению (товар)

Средства и порядок испытаний - student2.ru

Рисунок Б.30 – Расположение пункта «Файл» на главном меню приложения

Средства и порядок испытаний - student2.ru

Рисунок Б.31 – Расположение пункта «Таблица» на главном меню приложения

Средства и порядок испытаний - student2.ru

Рисунок Б.31 – Расположение пункта «Отчет» на главном меню приложения

Средства и порядок испытаний - student2.ru

Рисунок Б.32 – Расположение подпункта «Выйти» для выхода из приложения на главном меню приложения

Средства и порядок испытаний - student2.ru

Рисунок Б.33 – Расположение подпункта «Обновить» для выхода из приложения на главном меню приложения

Средства и порядок испытаний - student2.ru

Рисунок Б.34 – Расположение пункта «Таблица» для работы с таблицей из приложения

Средства и порядок испытаний - student2.ru

Рисунок Б.35 – Расположение подпункта «Добавить» для добавления записи в таблицу

Средства и порядок испытаний - student2.ru

Рисунок Б.35 – Расположение подпункта «Изменить» для изменения записи в таблице

Средства и порядок испытаний - student2.ru

Рисунок Б.36 – Расположение подпункта «Удалить» для удаления записи в таблице

Средства и порядок испытаний - student2.ru

Рисунок Б.37 – Расположение пункта «Отчет» выводы отчета с ассортиментом обуви и ее изготовителях

Средства и порядок испытаний - student2.ru

Рисунок 38 – Вывод отчета об ассортименте обуви и ее изготовителях

Приложение В

(рекомендуемое)

(SQL-скрипт)

/***********************************************************

Прямое проектирование

Plugin: Инструмент генерации ANSI DDL операторов (3.2.0 - 05-12-2009), Grandite

Имя базы данных : "База данных"

Source file : "f:\projects2009\shop.sms"

Generated on : 16.11.2014 8:56:00

Generated by Open ModelSphere Версия 3.2"

***********************************************************

***********************************************************

CREATE STATEMENTS

***********************************************************/

--/***********************************************************

-- TABLE 'ASSORTIMENT'

--***********************************************************/

CREATE TABLE ASSORTIMENT

(

AID INTEGER NOT NULL,

NAME VARCHAR(20),

RAZMER INTEGER,

COST DOUBLE PRECISION,

KOL INTEGER,

TEDATA DATE,

IID INTEGER NOT NULL

);

--/***********************************************************

-- TABLE 'IZGOTOVITEL'

--***********************************************************/

CREATE TABLE IZGOTOVITEL

(

IID INTEGER NOT NULL,

NAME VARCHAR(30),

ADRES VARCHAR(20)

);

--/***********************************************************

-- TABLE 'PRODAJI'

--***********************************************************/

CREATE TABLE PRODAJI

(

PID INTEGER NOT NULL,

PDATA DATE,

QTY INTEGER,

SID INTEGER NOT NULL

);

--/***********************************************************

-- TABLE 'SKLAD'

--***********************************************************/

CREATE TABLE SKLAD

(

SID INTEGER NOT NULL,

QTY INTEGER,

SDATA DATE,

IID INTEGER NOT NULL,

AID INTEGER NOT NULL

);

--/***********************************************************

-- PRIMARY/UNIQUE KEY 'PK_ASSORTIMENT'

--***********************************************************/

ALTER TABLE ASSORTIMENT

ADD CONSTRAINT PK_ASSORTIMENT PRIMARY KEY (

IID, AID) ;

--/***********************************************************

-- PRIMARY/UNIQUE KEY 'PK_IZGOTOVITEL'

--***********************************************************/

ALTER TABLE IZGOTOVITEL

ADD CONSTRAINT PK_IZGOTOVITEL PRIMARY KEY (

IID) ;

--/***********************************************************

-- PRIMARY/UNIQUE KEY 'PK_PRODAJI'

--***********************************************************/

ALTER TABLE PRODAJI

ADD CONSTRAINT PK_PRODAJI PRIMARY KEY (

SID, PID) ;

--/***********************************************************

-- PRIMARY/UNIQUE KEY 'PK_SKLAD'

--***********************************************************/

ALTER TABLE SKLAD

ADD CONSTRAINT PK_SKLAD PRIMARY KEY (

SID) ;

ALTER TABLE ASSORTIMENT

ADD CONSTRAINT FK_ASSORTIMENT_1

FOREIGN KEY (IID)

REFERENCES IZGOTOVITEL;

ALTER TABLE PRODAJI

ADD CONSTRAINT FK_PRODAJI_1

FOREIGN KEY (SID)

REFERENCES SKLAD;

ALTER TABLE SKLAD

ADD CONSTRAINT FK_SKLAD_1

FOREIGN KEY (IID, AID)

REFERENCES ASSORTIMENT;

*******************************************************************/

/*** Generated by IBExpert 2012.12.18.1 01.12.2014 22:11:19 ***/

*******************************************************************/

SET SQL DIALECT 3;

SET NAMES WIN1251;

CREATE DATABASE 'SQLEDU03:C:\Users\user\Desktop\5 семестр\БД\ЛР16\SHOP.fdb'

USER 'SYSDBA' PASSWORD 'masterkey'

PAGE_SIZE 16384

DEFAULT CHARACTER SET WIN1251 COLLATION WIN1251;

*******************************************************************/

/*** Stored Procedures ***/

********************************************************************/

SET TERM ^ ;

create or alter procedure UVELICHENIE (

UVEL double precision)

as

begin

update ISGOTOVITEL

set COST=COST*(:uvel/100+1);

end^

SET TERM ; ^

/* Following GRANT statetements are generated automatically */

GRANT SELECT,UPDATE ON ISGOTOVITEL TO PROCEDURE UVELICHENIE;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE UVELICHENIE TO TEAM009;

SET TERM ^ ;

create or alter procedure VSEGO

returns (

OK double precision)

as

begin

select sum(COST) from ISGOTOVITEL

into :OK;

SUSPEND;

end^

SET TERM ; ^

/* Following GRANT statetements are generated automatically */

GRANT SELECT ON ISGOTOVITEL TO PROCEDURE VSEGO;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE VSEGO TO TEAM009;

/******************************************************************************/

/*** Generated by IBExpert 24.12.2014 22:13:44 ***/

/******************************************************************************/

/******************************************************************************/

/*** Following SET SQL DIALECT is just for the Database Comparer ***/

/******************************************************************************/

SET SQL DIALECT 3;

/******************************************************************************/

/*** Tables ***/

/******************************************************************************/

CREATE GENERATOR GEN1;

CREATE TABLE ASSORTIMENT (

ID_F PERCENT NOT NULL /* PERCENT = INTEGER */,

ISDELIE PERSON /* PERSON = VARCHAR(20) */,

ADRES ADDRESSES /* ADDRESSES = VARCHAR(30) */

);

/******************************************************************************/

/*** Primary Keys ***/

/******************************************************************************/

ALTER TABLE ASSORTIMENT ADD CONSTRAINT PK_ASSORTIMENT PRIMARY KEY (ID_F);

/******************************************************************************/

/*** Triggers ***/

/******************************************************************************/

SET TERM ^ ;

/******************************************************************************/

/*** Triggers for tables ***/

/******************************************************************************/

/* Trigger: ASSORTIMENT_BI0 */

CREATE OR ALTER TRIGGER ASSORTIMENT_BI0 FOR ASSORTIMENT

ACTIVE BEFORE INSERT POSITION 0

AS

begin

if ((new.id_f is null) or (new.id_f = 0)) then

begin

new.ID_F = gen_id(gen1, 1);

end

end

^

SET TERM ; ^

/******************************************************************************/

/*** Privileges ***/

/******************************************************************************/

/* Privileges of users */

GRANT ALL ON ASSORTIMENT TO TEAM009 WITH GRANT OPTION;

/******************************************************************************/

/*** Generated by IBExpert 24.12.2014 22:14:47 ***/

/******************************************************************************/

/******************************************************************************/

/*** Following SET SQL DIALECT is just for the Database Comparer ***/

/******************************************************************************/

SET SQL DIALECT 3;

/******************************************************************************/

/*** Tables ***/

/******************************************************************************/

CREATE GENERATOR GEN2;

CREATE TABLE ISGOTOVITEL (

ID_ISG PERCENT NOT NULL /* PERCENT = INTEGER */,

NAME PERSON /* PERSON = VARCHAR(20) */,

RAZMER PERCENT /* PERCENT = INTEGER */,

COST MONEY /* MONEY = DOUBLE PRECISION */,

KOL PERCENT /* PERCENT = INTEGER */,

TEDATA DATES /* DATES = DATE */,

ID_IS PERCENT NOT NULL /* PERCENT = INTEGER */

);

/******************************************************************************/

/*** Primary Keys ***/

/******************************************************************************/

ALTER TABLE ISGOTOVITEL ADD CONSTRAINT PK_ISGOTOVITEL PRIMARY KEY (ID_ISG);

/******************************************************************************/

/*** Foreign Keys ***/

/******************************************************************************/

ALTER TABLE ISGOTOVITEL ADD CONSTRAINT FK_ISGOTOVITEL_1 FOREIGN KEY (ID_IS) REFERENCES ASSORTIMENT (ID_F) ON DELETE CASCADE;

/******************************************************************************/

/*** Triggers ***/

/******************************************************************************/

SET TERM ^ ;

/******************************************************************************/

/*** Triggers for tables ***/

/******************************************************************************/

/* Trigger: ISGOTOVITEL_BI0 */

CREATE OR ALTER TRIGGER ISGOTOVITEL_BI0 FOR ISGOTOVITEL

ACTIVE BEFORE INSERT POSITION 0

AS

begin

if ((new.id_isg is null) or (new.id_isg = 0)) then

begin

new.ID_ISG = gen_id(gen2, 1);

end

end

^

SET TERM ; ^

/******************************************************************************/

/*** Privileges ***/

/******************************************************************************/

/* Privileges of users */

GRANT ALL ON ISGOTOVITEL TO TEAM009 WITH GRANT OPTION;

ТЕКСТ DFM - ФАЙЛОВ

Приложение Г

(справочное)

*** Файл базы данных: ***

D:\DATA\ЛР16\SHOP.FDB

*** Файл архива: ***

D:\DATA\ЛР16\архивирование\SHOP-arh.FDB

================== Начало архивирования ==================

gbak:readied database D:\DATA\ЛР16\SHOP.FDB for backup

gbak:creating file D:\DATA\ЛР16\архивирование\SHOP-arh.FDB

gbak:starting transaction

gbak:database D:\DATA\ЛР16\SHOP.FDB has a page size of 16384 bytes.

gbak:writing domains

gbak: writing domain MONEY

gbak: writing domain PERSON

gbak: writing domain PERCENT

gbak: writing domain BIRTHDAY

gbak: writing domain TELEFON

gbak: writing domain GENDER

gbak: writing domain DATES

gbak: writing domain ADRESSES

gbak: writing domain TELEPHONE

gbak: writing domain ADDRESSES

gbak: writing domain RDB$22

gbak: writing domain RDB$27

gbak:writing shadow files

gbak:writing character sets

gbak:writing collations

gbak:writing functions

gbak:writing tables

gbak: writing table ISGOTOVITEL

gbak: writing column COST

gbak: writing column ID_IS

gbak: writing column ID_ISG

gbak: writing column RAZMER

gbak: writing column KOL

gbak: writing column TEDATA

gbak: writing column NAME

gbak: writing table ASSORTIMENT

gbak: writing column ADRES

gbak: writing column ID_F

gbak: writing column ISDELIE

gbak:writing types

gbak:writing filters

gbak:writing id generators

gbak: writing generator GEN1 value 8

gbak: writing generator GEN2 value 21

gbak:writing stored procedures

gbak:writing stored procedure VSEGO

gbak:writing parameter OK for stored procedure

gbak:writing stored procedure UVELICHENIE

gbak:writing parameter UVEL for stored procedure

gbak:writing exceptions

gbak:writing exception ASSORTIMENTY

gbak:writing exception RAZMERY

gbak: writing index PK_ASSORTIMENT

gbak: writing data for table ASSORTIMENT

gbak:8 records written

gbak: writing index PK_ISGOTOVITEL

gbak: writing index FK_ISGOTOVITEL_1

gbak: writing data for table ISGOTOVITEL

gbak:7 records written

gbak:writing triggers

gbak: writing trigger CHECK_2

gbak: writing trigger ASSORTIMENT_BI0

gbak: writing trigger ISGOTOVITEL_BI0

gbak:writing trigger messages

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user PUBLIC

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user PUBLIC

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user PUBLIC

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak: writing privilege for user TEAM009

gbak:writing table constraints

gbak:writing constraint PK_ISGOTOVITEL

gbak:writing constraint INTEG_26

gbak:writing constraint FK_ISGOTOVITEL_1

gbak:writing constraint PK_ASSORTIMENT

gbak:writing referential constraints

gbak:writing check constraints

gbak:writing SQL roles

gbak:writing names mapping

gbak:closing file, committing, and finishing. 6144 bytes written

================== Конец архивирования ==================

Наши рекомендации