Разработка информационно-программного комплекса для использования на IBM-совместимых ПК в качестве автоматизированного рабочего места обработки информации
Содержание
Термины
и определения
1. Общие требования
1.1
Назначение информационно-программного комплекса
1.2
Требования к функциональным характеристикам ИПК
1.3
Требования к техническим и программным средствам
1.4
Требования к характеристикам БД
1.5
Требования к квалификации пользователя
2.
Формулировка варианта задания
2.1
ВАРИАНТ С
2.2
Требуемые запросы
2.3
Отчеты
3.
Бизнес-логика
4.
Инфологическая модель данных
5.
Даталогическая модель данных
6.
Описание таблиц и их полей
7.
Используемое ПО
8.
Хранимые процедуры, триггеры
9.
Код программы
10.
Пользовательский интерфейс. Краткое руководство пользователя
Заключение
Список
литературы
Термины и определения
Информационно-программный комплекс
(ИПК) - программно-аппаратный
комплекс, предназначенный для выполнения следующих функций, задач:
Централизованное хранение, накопление и выдача по
запросам пользователей данных.
Преобразование и обработка данных.
Организация удобного интерфейса пользователя.
БД - центральное звено всего ИПК.
Бизнес-логика - в разработке информационных систем
- совокупность правил, принципов, зависимостей поведения объектов предметной
области (области человеческой деятельности, которую система поддерживает).
Иначе можно сказать, что бизнес-логика - это реализация правил и ограничений автоматизируемых
операций. Является синонимом термина «логика предметной области».
Инфологическая модель ПО - формализованное описание ПО,
выполняемое без ориентации на используемые в дальнейшем программные и
технические средства.
Даталогическая модель данных (базы данных) - под даталогической понимается модель, отражающая
логические взаимосвязи между элементами данных безотносительно их содержания и
физической организации. При этом даталогическая модель разрабатывается с учетом
конкретной реализации СУБД, также с учетом специфики конкретной предметной
области на основе ее инфологической модели
<#"551938.files/image001.gif">
Рис.1. Инфологическая модель данных
5. Даталогическая модель данных
Рис.2. Даталогическая модель данных
6. Описание таблиц и их полей
Таблица Shop -
содержит информацию о магазине.
Shop.ID -
номер магазина, тип integer.
Shop.Nazvanie - название магазина, тип char(30).
Shop.adres
- адрес магазина, тип char(30).
Shop.Director - ФИО директора магазина, тип char(30).
Shop.chasyraboty - часы работы магазина, тип char(10).
Shop.bank_schet - банковский счёт магазина, тип integer.
Shop.Telefon
- телефон магазина, тип char(15).
Shop.Faks -
Факс магазина, тип char(15).
Таблица Otdely
- содержит информацию об отделах магазина.
Otdely.id_otdel - номер отдела, тип integer.
Otdely.otdel
- наименование отдела, тип char(15).
Otdely.prodavec - ФИО продавца отдела, тип char(30).
Otdely.telefon
- телефон отдела, тип char(15).
Otdely.faks -
Факс отдела, тип char(15).
Otdely.skidki
- скидки по отделу в процентах, тип integer.
Otdely.id_shop - номер магазина, integer.
Таблица Discont
- содержит информацию о дисконтных картах.
Discont.id -
порядковый номер кортежа, тип integer.
Discont.nomer_karty - номер карты, тип integer.
Discont.vladelec - ФИО владельца, тип char(30).
Discont.telefon
- телефон владельца, тип char(15).
Discont.skidka
- скидка по карте в процентах, тип integer.
Discont.id_shop - номер магазина,
integer.
-Таблица Postavwik - содержит данные о товарах, предлагаемых поставщиком.
Postavwik.id - порядковый номер кортежа, тип integer.
Postavwik.naimenovanie - наименование товара, тип char(30).
Postavwik.razmer - размер, тип integer.
Postavwik.cena - цена товара, тип integer.
Postavwik.upakovka - наличие упаковки, тип char(1).
Postavwik.garant_srok -
гарантийный срок на товар, тип char(15).
Postavwik.id_otdel - номер
отдела, тип integer.
Таблица Prodannoe - содержит информацию о проданных товарах.
Prodannoe.id - порядковый номер кортежа, тип integer.
Prodannoe.naimenovanie - наименование товара, тип char(30).
Prodannoe.dataprodaji - дата продажи товара, тип date.
Prodannoe.iste4enniegarantii - срок истечения гарантии, тип date.
Prodannoe.id_otdel - номер
отдела, тип integer
Таблица NALI4IE - содержит информацию о товарах в
наличии.
NALI4IE.id - порядковый номер кортежа, тип integer.
NALI4IE.naimenovanie - наименование товара, тип char(30).
NALI4IE.razmer - размер, тип integer.
NALI4IE.cena - цена товара, тип integer.
NALI4IE.upakovka - наличие упаковки, тип char(1).
NALI4IE.garant_srok - гарантийный срок на товар, тип char(15).
NALI4IE.datapostupeni9 - дата поступления товара, тип date.
NALI4IE.id_otdel - номер отдела, тип integer
-Таблица KORZINA - содержит информацию о заказываемых в настоящий момент
товарах.
KORZINA.id -
порядковый номер кортежа, тип integer.
KORZINA.naimenovanie - наименование товара, тип char(30).
KORZINA.razmer
- размер, тип integer.
KORZINA.cena -
цена товара, тип integer.
KORZINA.upakovka - наличие упаковки, тип char(1).
KORZINA.garant_srok - гарантийный срок на товар, тип char(15).
KORZINA.id_dogovor - номер договора, тип integer.
KORZINA.id_otdel - номер отдела, тип integer
Таблица TOVARY_DOGOVOR - содержит информацию о заказанных
товарах по всему договору.
TOVARY_DOGOVOR id - порядковый
номер кортежа, тип integer.
TOVARY_DOGOVOR naimenovanie -
наименование товара, тип char(30).
TOVARY_DOGOVOR razmer - размер, тип integer._DOGOVOR cena - цена товара, тип integer._DOGOVOR upakovka - наличие упаковки, тип char(1)._DOGOVOR garant_srok - гарантийный срок на товар, тип char(15)._DOGOVOR id_dogovor - номер договора,
тип integer._DOGOVOR id_otdel
- номер отдела, тип integer.
-Таблица DOGOVOR - содержит информацию о заключённых договорах.
Dogovor.id -
номер договора, тип integer.
Dogovor.postavshik - поставщик товаров, тип char(15).
Dogovor.data_dogovora - дата договора, тип date.
Dogovor.prime4anie - примечание по договору, тип char(30).
Dogovor.summa
- сумма на оплату по договору, тип integer.
Dogovor.id_shop - номер магазина, тип integer.
S4ETA - отчёт,
формируемый по выбранному договору при помощи FastReport 4.0, содержащий информацию о
поставщике, сумме к оплате, банковском счёте.
7. Используемое ПО
1. IBexpert - GUI-оболочка, предназначенная для разработки и
администрирования баз данных Interbase и Firebird, а также для выбора и изменения
данных, хранящихся в базах
2. FireBird 2.0 - Firebird является сервером баз
данных. Один сервер Firebird может обрабатывать несколько сотен независимых баз
данных, каждую с множеством пользовательских соединений. Он является полностью
свободным от лицензионных отчислений даже для коммерческого использования.
3. Delphi 7 - структурированный,
объектно-ориентированный язык программирования, диалект Object Pascal.
4. FastReport 4.0 - Fast Reports, Inc - российская компания по разработке
программного обеспечения для формирования отчетов.
8. Хранимые процедуры, триггеры
CREATE PROCEDURE PROC_DISC (
fin_id integer,_nomer_karty
integer,_vladelec char(30),_telefon char(15),_skidka char(11),_id_shop integer)(:fin_id
< 0) theninto DISCONT (NOMER_KARTY, VLADELEC, TELEFON, SKIDKA, ID_SHOP)(:fin_nomer_karty,
:fin_vladelec, :fin_telefon, :fin_skidka, :fin_id_shop);_KARTY =
:fin_nomer_karty,= :fin_vladelec,= :fin_telefon,= :fin_skidka,_SHOP =
:fin_id_shop= :fin_id;
end
CREATE PROCEDURE PROC_DOG (
fin_postavshik char(30),_datadogovora
date,_prime4anie char(30),_summa integer,_id_shop integer)into
DOGOVOR(POSTAVSHIK, DATADOGOVORA, PRIME4ANIE, SUMMA, ID_SHOP)(:fin_postavshik,
:fin_datadogovora, :fin_prime4anie, :fin_summa, :fin_id_shop);
end
CREATE PROCEDURE PROC_NAL (
fin_id integer,_naimenovanie
char(30),_razmer char(10),_cena integer,_upakovka char(1),_garantsrok
char(20),_datapostupleni9 date,_id_otdel integer)(:fin_id < 0)
theninto NALI4IE(NAIMENOVANIE, RAZMER, CENA, UPAKOVKA, GARANTSROK,
DATAPOSTUPLENI9, ID_OTDEL)(:fin_naimenovanie, :fin_razmer, :fin_cena,
:fin_upakovka, :fin_garantsrok, :fin_datapostupleni9, :fin_id_otdel);IE=
:fin_naimenovanie,= :fin_razmer,= :fin_cena,= :fin_upakovka,= :fin_garantsrok,=
:fin_datapostupleni9,_OTDEL = :fin_id_otdel= :fin_id;
end
CREATE PROCEDURE PROC_OTDELY (
fin_id_otdel integer,_otdel
char(15),_prodavec char(30),_telefon char(15),_faks char(15),_skidki
integer,_id_shop smallint)(:fin_id_otdel < 0) theninto OTDELY(OTDEL,
PRODAVEC, TELEFON, FAKS, SKIDKI, ID_SHOP)(:fin_otdel, :fin_prodavec,
:fin_telefon, :fin_faks, :fin_skidki, :fin_id_shop);= :fin_OTDEL,=
:fin_PRODAVEC,= :fin_TELEFON,= :fin_FAKS,= :fin_SKIDKI,_SHOP =
:fin_ID_SHOP_otdel = :fin_id_otdel;
end
CREATE PROCEDURE PROC_PROD (
fin_id integer,_naimenovanie
char(30),_razmer char(10),_cena integer,_upakovka char(1),_dataprodaji
date,_iste4eniegarantii date,_id_otdel integer)(:fin_id < 0) theninto
PRODANNOE(NAIMENOVANIE, RAZMER, CENA, UPAKOVKA, DATAPRODAJI, ISTE4ENIEGARANTII
, ID_OTDEL)(:fin_naimenovanie, :fin_razmer, :fin_cena, :fin_upakovka,
:fin_dataprodaji, :fin_iste4eniegarantii, :fin_id_otdel);= :fin_naimenovanie,=
:fin_razmer,= :fin_cena,= :fin_upakovka,= :fin_dataprodaji,ENIEGARANTII =
:fin_iste4eniegarantii,_OTDEL = :fin_id_otdel= :fin_id;
end
CREATE PROCEDURE PROC_SHOP (
fin_id_shop integer,_nazvanie
char(25),_adres char(40),_director char(30),_chasy char(11),_banks4et
integer,_telefon char(15),_faks char(15))= :fin_nazvanie,= :fin_adres,=
:fin_director,= :fin_chasy,_S4ET = :FIN_BANKS4ET,= :fin_telefon,=
:fin_faks_shop = :fin_id_shop;
end
CREATE trigger discont_bi for discont
active before insert position
0(new.id is null) then.id = gen_id(gen_discont_id,1);
end
CREATE trigger dogovor_bi for dogovor
active before insert position
0(new.id is null) then.id = gen_id(gen_DOGOVOR_id,1);
end
CREATE trigger nali4ie_bi for nali4ie
active before insert position
0(new.id is null) then.id = gen_id(gen_nali4ie_id,1);
end
CREATE trigger otdely_bi for otdely
active before insert position
0(new.id_otdel is null) then.id_otdel = gen_id(gen_otdely_id,1);
end
CREATE trigger prodannoe_bi for
prodannoe
end
9. Код программы
unit Unit1;, Messages, ShellApi,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls,
DBCtrls, Grids, DBGrids, DB, ADODB, ComCtrls,, IBDatabase, IBQuery, IBTable,
frxClass;= class(TForm): TDataSource;: TDBGrid;: TMemo;: TGroupBox;:
TProgressBar;: TTimer;: TButton;: TIBQuery;: TIBDatabase;: TIBDataSet;:
TIBTransaction;: TComboBox;: TButton;: TButton;: TButton;: TLabel;: TComboBox;:
TLabel;: TButton;: TGroupBox;: TButton;: TButton;: TButton;: TGroupBox;:
TButton;: TButton;: TButton;: TRadioGroup;: TEdit;: TEdit;: TLabel;: TEdit;:
TLabel;: TEdit;: TGroupBox;: TButton;: TRadioGroup;: TEdit;: TEdit;: TEdit;:
TEdit;: TButton;: TRadioGroup;: TEdit;: TEdit;: TEdit;: TGroupBox;: TLabel;:
TLabel;: TEdit;: TButton;: TDBGrid;: TGroupBox;: TButton;: TButton;: TButton;:
TGroupBox;: TButton;: TButton;: TButton;: TButton;: TIBQuery;: TDataSource;: TIBDataSet;:
TIBTransaction;: TIBDatabase;: TMemo;: TButton;: TLabel;: TLabel;: TGroupBox;:
TButton;: TButton;: TButton;: TButton;: TGroupBox;: TButton;: TLabel;: TEdit;:
TButton;Button1Click(Sender: TObject);Timer1Timer(Sender:
TObject);Button2Click(Sender: TObject);Button3Click(Sender:
TObject);Button4Click(Sender: TObject);Button5Click(Sender:
TObject);ComboBox1Change(Sender: TObject);ComboBox2Change(Sender:
TObject);Button6Click(Sender: TObject);Button7Click(Sender:
TObject);Button8Click(Sender: TObject);RadioGroup1Click(Sender:
TObject);Button9Click(Sender: TObject);Button10Click(Sender:
TObject);Button11Click(Sender: TObject);Button12Click(Sender:
TObject);RadioGroup2Click(Sender: TObject);Button13Click(Sender:
TObject);RadioGroup3Click(Sender: TObject);Button14Click(Sender:
TObject);Button19Click(Sender: TObject);Button20Click(Sender:
TObject);Button21Click(Sender: TObject);Button18Click(Sender:
TObject);Button17Click(Sender: TObject);Button16Click(Sender:
TObject);Button22Click(Sender: TObject);Button15Click(Sender:
TObject);Button23Click(Sender: TObject);Button24Click(Sender:
TObject);Button25Click(Sender: TObject);Button26Click(Sender:
TObject);Button27Click(Sender: TObject);Button28Click(Sender: TObject);
{ Private declarations };:
TForm1;,Flag1: Boolean;:Boolean = false;:integer;Unit2, Unit3, Unit4, Unit5,
Unit6, Unit7, Unit8;
{$R *.dfm}TForm1.Button1Click(Sender:
TObject); // maini:integer;.MessageBox('Клиент
по работе
с БД. Евгений Лукин,
И493', 'О программе');
end;TForm1.Timer1Timer(Sender:
TObject); // filling
progressbar.ProgressBar1.Position:=Form1.ProgressBar1.Position+Timer1.Interval;;TForm1.Button2Click(Sender:
TObject); // help(Handle, 'open',
'c:\windows\notepad.exe', 'help.txt',
nil,_SHOWNORMAL);;TForm1.Button3Click(Sender: TObject);ComboBox1.Text = 'Данные:' then
begin.MessageBox('Выберите данные для
добавления','Добавление данных');
exit;ComboBox1.Text = 'Информация о магазине' then
begin.MessageBox('В базе данных только один
магазин','Магазин');
exit;ComboBox1.Text = 'Договоры' then
begin.MessageBox('Вы можете заключить договор, выбрав
товары, и добавив их в корзину','Договор');
exit;:= True;:= True;ComboBox1.Text =
'Товары в наличии' then.Visible := False;.Visible :=
True;elseComboBox1.Text = 'Проданные товары' then.Visible := False;.Visible :=
True;elseComboBox1.Text = 'Дисконтные карты' then.Visible := False;.Visible :=
True;elseComboBox1.Text = 'Информация по отделам' then.Visible :=
False;.Visible := True;;;TForm1.Button4Click(Sender: TObject);ComboBox1.Text =
'Данные:' then begin
Application.MessageBox('Выберите данные для
редактирования','Редактирование данных');
exit;;:= False;:=
False;ComboBox1.Text = 'Проданные товары' then.Visible:= False;.Visible:= True;ComboBox1.Text = 'Товары в наличии' then.Visible := False;.Visible :=
True;ComboBox1.Text = 'Дисконтные карты' then.Visible := False;.Visible := True;ComboBox1.Text = 'Информация о магазине' then.Visible := False;.Visible :=
True;elseComboBox1.Text = 'Информация по отделам' then.Visible :=
False;.Visible := True;elseComboBox1.Text = 'Договоры' then
begin.MessageBox('Невозможно редактировать заключённый
договор','Договор');
exit;;TForm1.Button5Click(Sender:
TObject);ComboBox1.Text = 'Данные:'
then begin
Application.MessageBox('Выберите данные для
удаления','Удаление данных');;;Application.MessageBox('Вы уверены, что хотите
удалить запись?','Удаление записи',
MB_ICONQUESTION + MB_YESNO) = IDNO
then;.IBQuery2.Close;.IBQuery2.SQL.Clear;ComboBox1.Text = 'Товары в наличии' thenForm2.IBQuery2 do.Text :=
'delete from NALI4IE where id = ' +
IBQuery1.FieldByName('ID').AsStringComboBox1.Text = 'Проданные товары' thenForm2.IBQuery2 do.Text := 'delete from PRODANNOE where
id = ' + IBQuery1.FieldByName('ID').AsStringComboBox1.Text = 'Информация о магазине' then
Application.MessageBox('Нельзя удалить запись о
магазине','Удаление записи');
exit;ComboBox1.Text = 'Дисконтные карты' thenForm2.IBQuery2 do.Text := 'delete from DISCONT where id
= ' + IBQuery1.FieldByName('ID').AsString
elseComboBox1.Text = 'Информация по отделам' then
with Form2.IBQuery2 do.Text :=
'delete from OTDELY where id_otdel = ' +
IBQuery1.FieldByName('ID_OTDEL').AsStringComboBox1.Text = 'Договоры' thenForm2.IBQuery2 do.Text :=
'delete from DOGOVOR where id = ' +
IBQuery1.FieldByName('ID').AsString;.IBQuery2.Open;.IBQuery2.Close;.Close;.Open;;TForm1.ComboBox1Change(Sender:
TObject);.Close;.SQL.Clear;.Enabled := True;ComboBox1.Text = 'Товары в наличии' then.Lines[0] := 'select * from
NALI4IE'ComboBox1.Text = 'Проданные товары' then.Lines[0] := 'select * from
PRODANNOE'ComboBox1.Text = 'Информация о магазине' then begin.Enabled :=
False;.Lines[0] := 'select * from SHOP'ComboBox1.Text = 'Информация по отделам' then.Enabled := False;.Lines[0] :=
'select * from OTDELY';ComboBox1.Text = 'Дисконтные карты' then.Lines[0] := 'select
* from DISCONT'ComboBox1.Text = 'Договоры' then.Lines[0] := 'select * from DOGOVOR';.SQL :=
Memo1.Lines;.Open;(ProgressBar1.Handle, $0409, 0, clLime); // progressbar
change color to Lime.ProgressBar1.Position:=0; // progressbar
null.Enabled:=true;;TForm1.ComboBox2Change(Sender: TObject);bufer:
string;.Close;.SQL.Clear;:= Memo1.Lines[0];ComboBox2.Text = 'Возрастанию' then.Lines[0] := Memo1.Lines[0] + '
order by ID'ComboBox2.Text = 'Убыванию'
then.Lines[0] := Memo1.Lines[0] + ' order by id desc'ComboBox2.Text = 'Наименованию' then.Lines[0] := Memo1.Lines[0] + '
order by NAIMENOVANIE'ComboBox2.Text = 'Дате' thenComboBox1.Text = 'Проданные товары' then.Lines[0] :=
Memo1.Lines[0] + ' order by DATAPRODAJI';ComboBox1.Text = 'Товары в наличии' then.Lines[0] := Memo1.Lines[0] + '
order by DATAPOSTUPLENI9';ComboBox1.Text = 'Договоры' then.Lines[0] := Memo1.Lines[0] + ' order by
DATADOGOVORA';;.SQL := Memo1.Lines;.Open;.Lines[0] :=
bufer;;TForm1.Button6Click(Sender: TObject);.Close;.Lines[0] := 'select * from
nali4ie where id_otdel=1';.SQL :=
Memo1.Lines;.Open;;TForm1.Button7Click(Sender: TObject);.Close;.Lines[0] :=
'select * from nali4ie where id_otdel=2';.SQL :=
Memo1.Lines;.Open;;TForm1.Button8Click(Sender: TObject);.Close;.Lines[0] :=
'select * from nali4ie where id_otdel=3';.SQL :=
Memo1.Lines;.Open;;TForm1.RadioGroup1Click(Sender: TObject);.Enabled := False;
Edit2.Enabled := False; Edit3.Enabled :=False;.Enabled :=
False;RadioGroup1.ItemIndex of
: Edit1.Enabled := True;
: begin.Enabled := True;.Enabled :=
True;;
: Edit4.Enabled :=
True;;;TForm1.Button9Click(Sender: TObject);.Close;.Lines[0] := 'select * from
prodannoe where id_otdel=1';.SQL :=
Memo1.Lines;.Open;;TForm1.Button10Click(Sender: TObject);.Close;.Lines[0] :=
'select * from prodannoe where id_otdel=2';.SQL := Memo1.Lines;.Open;;TForm1.Button11Click(Sender:
TObject);.Close;.Lines[0] := 'select * from prodannoe where id_otdel=3';.SQL :=
Memo1.Lines;.Open;;TForm1.Button12Click(Sender:
TObject);.Close;RadioGroup1.ItemIndex = 0 then.Lines[0] := 'select * from prodannoe
where DATAPRODAJI=''' + Edit1.TextRadioGroup1.ItemIndex = 1 then.Lines[0] :=
'select * from prodannoe where (DATAPRODAJI>''' + Edit2.Text +
')and(DATAPRODAJI<''' + Edit3.Text + ')'RadioGroup1.ItemIndex = 2
then.Lines[0] := 'select * from prodannoe where (DATAPRODAJI>=''' +'01.'
+ Edit4.Text + ')' +
'and(DATAPRODAJI<=''' + '31.'
+ Edit4.Text + ')';.SQL :=
Memo1.Lines;.Open;;TForm1.RadioGroup2Click(Sender: TObject);.Enabled := false;
Edit6.Enabled := false; Edit7.Enabled := false;.Enabled := false;RadioGroup2.ItemIndex
of
: Edit5.Enabled := True;
: Edit6.Enabled := True;
: Edit7.Enabled := True;
: Edit8.Enabled :=
True;;;TForm1.Button13Click(Sender: TObject);.Close;RadioGroup2.ItemIndex = 0
then.Lines[0] := 'select * from nali4ie where NAIMENOVANIE=''' + Edit5.TextRadioGroup2.ItemIndex
= 1 then.Lines[0] := 'select * from nali4ie where ID=''' +
Edit6.TextRadioGroup2.ItemIndex = 2 then.Lines[0] := 'select * from nali4ie
where CENA>=''' + Edit7.TextRadioGroup2.ItemIndex = 3 then.Lines[0] :=
'select * from nali4ie where RAZMER=''' + Edit8.Text;.SQL :=
Memo1.Lines;.Open;;TForm1.RadioGroup3Click(Sender: TObject);.Enabled := False;
Edit10.Enabled := False; Edit11.Enabled :=False;.Enabled :=
False;RadioGroup3.ItemIndex of
: Edit9.Enabled := True;
: begin.Enabled := True;.Enabled :=
True;;
: Edit12.Enabled :=
True;;;TForm1.Button14Click(Sender: TObject);.Close;RadioGroup3.ItemIndex = 0
then.Lines[0] := 'select * from DOGOVOR where DATADOGOVORA=''' +
Edit9.TextRadioGroup3.ItemIndex = 1 then.Lines[0] := 'select * from DOGOVOR
where (DATADOGOVORA>''' + Edit10.Text + ')and(DATADOGOVORA<''' +
Edit11.Text + ')'RadioGroup3.ItemIndex = 2 then.Lines[0] := 'select * from
DOGOVOR where (DATADOGOVORA>=''' +'01.'
+ Edit12.Text + ')' +
'and(DATADOGOVORA<=''' + '30.'
+ Edit12.Text + ')';.SQL :=
Memo1.Lines;.Open;;TForm1.Button19Click(Sender: TObject);.Enabled :=
true;.Close;.Lines[0] := 'select * from postavwik where id_otdel=1';.SQL :=
Memo1.Lines;.Open;;TForm1.Button20Click(Sender: TObject);.Enabled :=
true;.Close;.Lines[0] := 'select * from postavwik where id_otdel=2';.SQL :=
Memo1.Lines;.Open;;TForm1.Button21Click(Sender: TObject);.Enabled :=
true;.Close;.Lines[0] := 'select * from postavwik where id_otdel=3';.SQL :=
Memo1.Lines;.Open;;TForm1.Button18Click(Sender: TObject);.Enabled :=
true;.Close;.Lines[0] := 'select * from postavwik';.SQL :=
Memo1.Lines;.Open;;TForm1.Button17Click(Sender: TObject);summa :String;.Enabled
:= true;.Enabled := true;.Enabled := true;.Close;.SQL.Clear;.Lines[0] :=
'select * from dogovor';.SQL := Memo2.Lines;.Open;.Last;:= IBQuery2.RecordCount
+1;.Close;.SQL.Clear;
// else
begin.SQL.Clear;.Lines.Clear;.Lines[0] := 'Insert into
KORZINA(ID,NAIMENOVANIE,RAZMER,CENA,UPAKOVKA,GARANTSROK,ID_DOGOVOR,ID_OTDEL)' +
' values (' +
IBQuery1.FieldByName('ID').AsString + ','''
+.FieldByName('NAIMENOVANIE').AsString + ''','''
+.FieldByName('RAZMER').AsString + ''',''' +.FieldByName('CENA').AsString +
''',''' +.FieldByName('UPAKOVKA').AsString + ''','''
+.FieldByName('GARANTSROK').AsString + ''',''' +(dogovor) + ''',''' +.FieldByName('ID_OTDEL').AsString
+ ''')';.SQL := Memo2.Lines;.Open;.Transaction.Commit;.Close;.Lines.Clear;
// end;.Close;.SQL.Clear;.Lines[0] :=
'select SUM(CENA) from KORZINA';.SQL := Memo2.Lines;.Open;.Caption:=
IBQuery2.FieldByName('SUM').AsString;.Close;.SQL.Clear;.Lines[0] :='select *
from KORZINA';.SQL := Memo2.Lines;.Open;;TForm1.Button16Click(Sender:
TObject);.SQL.Text :='delete from KORZINA' +
' where id = ' +
IBQuery2.FieldByName('ID').AsString;.Open;.Transaction.Commit;.Close;.Lines.Clear;.Lines[0]
:= 'select SUM(CENA) from KORZINA';.SQL :=
Memo2.Lines;.Open;IBQuery2.FieldByName('SUM').AsString = '' then.Caption := '0'
else.Caption:=
IBQuery2.FieldByName('SUM').AsString;.Close;.Lines.Clear;.Lines[0] :='select *
from KORZINA';.SQL := Memo2.Lines;.Open;.Last;IBQuery2.RecordCount = 0 then
begin.Enabled := false;.Enabled := false;;;TForm1.Button22Click(Sender:
TObject);.Enabled := false;.Enabled := false;.Enabled := false;.Caption :=
'0';.Close;.SQL.Clear;.SQL.Text :='DELETE FROM KORZINA';.Open;.Transaction.Commit;.Close;;TForm1.Button15Click(Sender:
TObject);.Visible := true;.Edit4.Text :=
Form1.Label8.Caption;;TForm1.Button23Click(Sender: TObject);.Close;.Lines[0] :=
'select * from TOVARY_DOGOVOR';.SQL :=
Memo1.Lines;.Open;;TForm1.Button24Click(Sender: TObject);.Close;.Lines[0] :=
'select * from TOVARY_DOGOVOR where id_otdel = 1';.SQL :=
Memo1.Lines;.Open;;TForm1.Button25Click(Sender: TObject);.Close;.Lines[0] :=
'select * from TOVARY_DOGOVOR where id_otdel = 2';.SQL :=
Memo1.Lines;.Open;;TForm1.Button26Click(Sender: TObject);.Close;.Lines[0] :=
'select * from TOVARY_DOGOVOR where id_otdel = 3';.SQL :=
Memo1.Lines;.Open;;TForm1.Button27Click(Sender: TObject);Edit13.Text = '' then
begin.MessageBox('Введите id договора','товары');;;.Enabled := true;.Close;.Lines.Clear;.Lines[0] :=
'select * from TOVARY_DOGOVOR where ID_DOGOVOR= ' + Edit13.Text;.SQL :=
Memo1.Lines;.Open;;TForm1.Button28Click(Sender:
TObject);t:TfrxMemoView;Edit13.Text = '' then begin.MessageBox('Введите id договора','товары');;;:= TfrxMemoView(Form8.frxReport1.FindObject('Memo10'));t
<> nil then.memo.text :=
Edit13.Text;.Close;.SQL.Clear;.Lines.Clear;.Lines[0]:= 'select * from DOGOVOR
where id= ' + Edit13.Text;.SQL := Memo1.Lines;.Open;:=
TfrxMemoView(Form8.frxReport1.FindObject('Memo11'));t <> nil
then.memo.text := IBQuery1.FieldByName('DATADOGOVORA').AsString;:=
TfrxMemoView(Form8.frxReport1.FindObject('Memo14'));t <> nil
then.memo.Text :=
IBQuery1.FieldByName('SUMMA').AsString;.SQL.Clear;.Lines.Clear;.Lines[0]:='select
* from TOVARY_DOGOVOR where id_dogovor= ' + Edit13.Text;.SQL :=
Memo1.Lines;.Open;.Show;.frxReport1.ShowReport;;
end.
unit Unit2;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, unit1, IBDatabase, DB,
IBCustomDataSet, IBQuery;= class(TForm): TEdit;: TEdit;: TEdit;: TEdit;:
TEdit;: TButton;: TIBQuery;: TIBTransaction;: TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TEdit;: TLabel;: TCheckBox;: TButton;Button1Click(Sender:
TObject);Button2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm2;
{$R *.dfm}TForm2.Button1Click(Sender:
TObject);check:string;.Close;.SQL.Clear;Form2.CheckBox1.Checked then check :=
'+' else check := '-';Flag thenIBQuery2 do.Text := 'execute procedure
PROC_NAL(-1,''' +.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''
++''','''+ Edit5.Text +''','''+ Edit6.Text +''',''' +.Text +''')';;IBQuery2
do.Text := 'execute procedure PROC_NAL('+
Form1.IBQuery1.FieldByName('ID').AsString +',''' +.Text +''','''+ Edit2.Text
+''','''+ Edit3.Text +''',''' ++''','''+ Edit5.Text +''','''+ Edit6.Text
+''',''' +.Text +''')';;;.Open;.Close;.IBQuery1.Close;.IBQuery1.Open;Flag1 then
Form2.Close;;TForm2.Button2Click(Sender: TObject);.Close;;
end.
unit Unit3;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, unit1, StdCtrls;= class(TForm):
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TEdit;:
TEdit;: TCheckBox;: TLabel;: TButton;: TEdit;: TButton;Button1Click(Sender:
TObject);Button2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TForm3;Unit2;
{$R *.dfm}TForm3.Button1Click(Sender:
TObject);check:string;.IBQuery2.Close;.IBQuery2.SQL.Clear;Form3.CheckBox1.Checked
then check := '+' else check := '-';Flag thenForm2.IBQuery2 do.Text := 'execute
procedure PROC_PROD(-1,''' +.Text +''','''+ Edit2.Text +''','''+ Edit3.Text
+''',''' ++''','''+ Edit5.Text +''','''+ Edit6.Text +''',''' +.Text
+''')';;Form2.IBQuery2 do.Text := 'execute procedure PROC_PROD('+
Form1.IBQuery1.FieldByName('ID').AsString +',''' +.Text +''','''+ Edit2.Text
+''','''+ Edit3.Text +''',''' ++''','''+ Edit5.Text +''','''+ Edit6.Text
+''',''' +.Text
+''')';;;.IBQuery2.Open;.IBQuery2.Close;.IBQuery1.Close;.IBQuery1.Open;Flag1
then Form3.Close;;TForm3.Button2Click(Sender: TObject);.Close;;
end.
unit Unit4;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, unit1;= class(TForm):
TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TEdit;: TButton;:
TButton;Button1Click(Sender: TObject);Button2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TForm4;Unit2;
{$R *.dfm}TForm4.Button1Click(Sender:
TObject);.IBQuery2.Close;.IBQuery2.SQL.Clear;Flag thenForm2.IBQuery2 do.Text :=
'execute procedure PROC_DISC(-1,''' +.Text +''','''+ Edit2.Text +''','''+
Edit3.Text +''','''+.Text +''',''' +
'1' +''')';;Form2.IBQuery2 do.Text :=
'execute procedure PROC_DISC('+ Form1.IBQuery1.FieldByName('ID').AsString
+',''' +.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''+.Text +''','''
+
'1' +''')';;;.IBQuery2.Open;.IBQuery2.Close;.IBQuery1.Close;.IBQuery1.Open;Flag1
then Form4.Close;;TForm4.Button2Click(Sender: TObject);.Close;;
end.
unit Unit5;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class(TForm): TEdit;:
TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TButton;: TButton;:
TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;Button1Click(Sender:
TObject);Button2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TForm5;Unit2, Unit1;
{$R *.dfm}TForm5.Button1Click(Sender:
TObject);.IBQuery2.Close;.IBQuery2.SQL.Clear;Form2.IBQuery2 do.Text :='execute
procedure PROC_SHOP('+ Form1.IBQuery1.FieldByName('ID_SHOP').AsString
+','''+.Text +''','''+Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''+.Text
+''','''+ Edit5.Text +''','''+ Edit6.Text
+''')';;.IBQuery2.Open;.IBQuery2.Close;.IBQuery1.Close;.IBQuery1.Open;Flag1
then Form5.Close;;TForm5.Button2Click(Sender: TObject);.Close;;
end.
unit Unit6;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, unit1;= class(TForm):
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;: TEdit;: TEdit;: TEdit;:
TEdit;: TButton;: TButton;Button1Click(Sender: TObject);Button2Click(Sender:
TObject);
{ Private declarations }
{ Public declarations };:
TForm6;Unit2;
{$R *.dfm}TForm6.Button1Click(Sender:
TObject);.IBQuery2.Close;.IBQuery2.SQL.Clear;Flag thenForm2.IBQuery2 do.Text :=
'execute procedure PROC_OTDELY(-1,''' +.Text +''','''+ Edit2.Text +''','''+
Edit3.Text +''','''+.Text +''','''+ Edit6.Text +''',1)';;Form2.IBQuery2 do.Text
:= 'execute procedure PROC_OTDELY('+
Form1.IBQuery1.FieldByName('ID_OTDEL').AsString +',''' +.Text +''','''+
Edit2.Text +''','''+ Edit3.Text +''','''+.Text +''','''+ Edit6.Text
+''',1)';;;.IBQuery2.Open;.IBQuery2.Close;.IBQuery1.Close;.IBQuery1.Open;Flag1
then Form6.Close;;TForm6.Button2Click(Sender: TObject);.Close;;
end.
unit Unit7;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, frxClass;=
class(TForm): TEdit;: TEdit;: TEdit;: TEdit;: TLabel;: TLabel;: TLabel;:
TLabel;: TButton;: TButton;Button1Click(Sender: TObject);Button2Click(Sender:
TObject);
{ Public declarations };:
TForm7;Unit1, Unit9;
{$R *.dfm}TForm7.Button1Click(Sender:
TObject);t:TfrxMemoView;Form1.IBQuery1 do begin;.Clear;.Text := 'execute
procedure PROC_DOG(''' + Edit1.Text +''',''' + Edit2.Text + ''','''+ Edit3.Text
+''','''+ Edit4.Text +''',1)';;.Commit;;.Text := 'select * from dogovor';;;
{==============}:=
TfrxMemoView(Form9.frxReport1.FindObject('Memo5'));t <> nil
then.memo.text := Edit2.Text;:=
TfrxMemoView(Form9.frxReport1.FindObject('Memo7'));t <> nil
then.memo.text := Edit4.Text;:=
TfrxMemoView(Form9.frxReport1.FindObject('Memo9'));t <> nil then.memo.text
:= Edit1.Text;.IBQuery2.Last;:=
TfrxMemoView(Form9.frxReport1.FindObject('Memo15'));t <> nil
then.memo.text := IntToStr(Form1.IBQuery2.RecordCount);:=
TfrxMemoView(Form9.frxReport1.FindObject('Memo3'));t <> nil
then.memo.text := Form1.IBQuery2.FieldByName('ID_DOGOVOR').AsString;.IBQuery2.Close;.IBQuery2.SQL.Clear;.IBQuery2.SQL.Text
:= 'select * from SHOP';.IBQuery2.Open;:=
TfrxMemoView(Form9.frxReport1.FindObject('Memo11'));t <> nil
then.memo.text := Form1.IBQuery2.FieldByName('NAZVANIE').AsString;:=
TfrxMemoView(Form9.frxReport1.FindObject('Memo13'));t <> nil
then.memo.text :=
Form1.IBQuery2.FieldByName('BANK_S4ET').AsString;.Show;.frxReport1.ShowReport;
{==============}Form1.IBQuery2 do
begin;.Clear;.Text := 'Insert into
TOVARY_DOGOVOR(ID,NAIMENOVANIE,RAZMER,CENA,UPAKOVKA,GARANTSROK,ID_DOGOVOR,ID_OTDEL)
' +
'select * from
KORZINA';;.Commit;;.Clear;.Text := 'DELETE FROM
KORZINA';;.Commit;;;.Button15.Enabled := false;.Button22.Enabled :=
false;.Button16.Enabled := false;.Label8.Caption := '0';.Visible :=
false;;TForm7.Button2Click(Sender: TObject);.Visible := false;;
end.
unit Unit8;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, frxClass, frxDBSet, frxPreview,
StdCtrls, frxExportXLS;= class(TForm): TfrxReport;: TfrxPreview;:
TfrxDBDataset;: TfrxXLSExport;: TButton;Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm8;
{$R *.dfm}TForm8.Button1Click(Sender:
TObject);.frxReport1.Export(Form8.frxXLSExport1);;
end.
unit Unit9;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, frxClass, frxPreview,
frxExportRTF, frxDBSet;= class(TForm): TfrxDBDataset;: TfrxReport;:
TfrxRTFExport;: TfrxPreview;: TButton;Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm9;
{$R *.dfm}TForm9.Button1Click(Sender:
TObject);.frxReport1.Export(Form9.frxRTFExport1);
end;
end.
10. Пользовательский интерфейс.
Краткое руководство пользователя
Чтобы запустить ИПК необходимо дважды кликнуть левой
кнопкой мыши по значку BD.exe. Перед вами откроется основное окно
работы:
Рис.3. Основное окно работы
В этом окне будут совершаться все последующие действия
с БД. На форме расположены вспомогательные кнопки для более быстрого доступа к
информации, хранимой в базе. Каждая кнопка подписана, вся форма разделена на
поля, подписи которых соответствуют их функциональному назначению в программе.
Для непосредственно работы с данными предусмотрено
окно информации и соответствующие кнопки «Добавить», «Редактировать»,
«Удалить». Кнопки не работают пока не будут выбраны данные, с которыми должно
проводиться изменения:
Рис.4. Сообщение, выводимое при
отсутствии выбора данных
После выбора данных, вся информация по ним будет
выведено в окно информации:
Рис5. Окно информации и данные в нём
Данные, выводимые в окно информации можно
упорядочивать по нескольким параметрам, зависящим от данных, которые выводятся
в окно информации.
При нажатии на одну из кнопок «Добавить»,
«Редактировать» и «Удалить» выводится соответствующее окно, в которое
необходимо ввести желаемую информацию:
Рис 6. Добавление информации
В блоках «За время», «Поиск товара в наличии» и
«Договоры за время» перед вводом информации в текстовое поле необходимо сначала
выбрать нужную радиокнопку - ключ, по которому ИПК будет совершать запрос в БД.
Не выбрав радиокнопку - поиск будет невозможен. Вводить данные необходимо без
кавычек, форматом, указанным рядом с радиокнопкой.
Рис.7. Пример неверного введения
информации для поиска
Заключение договора происходит по следующей схеме:
Пользователь просматривает товары поставщика, выбирает необходимый и нажимает
кнопку «Добавить в корзину»:
Рис. 8. Добавление в корзину
Пользователь может удалять корзину, удалять товары из
корзины. Рядом расположен счётчик, который считает стоимость товаров в корзине.
Нажав на кнопку «Заключить договор», Пользователю
открывается окно, куда он вводит всю необходимую информация, после чего
нажимает «Сохранить». Сразу же, ему представится отчёт о заключённом договоре,
который можно сохранить на ПК:
Рис. 9. Отчёт по заключённому
договору
Отчёт возможно экспортировать в Microsoft Office Word любой версии. Все данные по отчёту автоматически
заносятся в БД.
В случае, если Пользователю необходимо оформить отчёт
по уже заключённых договорам, ему необходимо в соответствующем блоке ввести ID интересующего его договора и нажать
кнопку «Отчёт»:
Рис. 10. Отчёт по товарам в договоре
Отчёт возможно экспортировать в Microsoft Office EXCEL любой версии. Все данные по отчёту автоматически
считываются из БД.
Заключение
Был создан ИПК, полностью удовлетворяющий всем
требованиям и обеспечивающий автоматизированную обработку информации на IBM совместимых компьютерах.
Список использованной литературы
1. Базы данных. Конспект лекций.
. Техническая документация по DELPHI7. Москва, 2007.
3. IBexpert. Руководство пользователя.
4. FastReport
4.0. Руководство пользователя с сайта www.fastreport.com
. Правила
оформления текстовых документов. ГОСТ № 7.32-2001.
. Базы
данных: Модели, Разработка, Реализация., Карпова Т., 2001.
. Базы
данных: Основы проектирования, использование., Малыкина М., 8 изд., 2003.
. Введение
в системы БД., Дейт К., 7 изд., 2001.
. Теория
и практика построения БД., Кренке Т., 8 изд. 2003.
. Правила
оформления отчёта. ГОСТ № 7.32-91.