Разработка информационно-программного комплекса для использования на IBM-совместимых ПК в качестве автоматизированного рабочего места обработки информации

Разработка информационно-программного комплекса для использования на IBM-совместимых ПК в качестве автоматизированного рабочего места обработки информации. Реализация базы данных в СУБД IBexpert. Характеристики разработанной информационной системы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.08.2012
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание

  • Термины и определения
  • 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. Пользовательский интерфейс. Краткое руководство пользователя
  • Заключение
  • Список литературы

Термины и определения

Информационно-программный комплекс (ИПК) - программно-аппаратный комплекс, предназначенный для выполнения следующих функций, задач:

-Централизованное хранение, накопление и выдача по запросам пользователей данных.

-Преобразование и обработка данных.

-Организация удобного интерфейса пользователя.

БД - центральное звено всего ИПК.

Бизнес-логика -- в разработке информационных систем -- совокупность правил, принципов, зависимостей поведения объектов предметной области (области человеческой деятельности, которую система поддерживает). Иначе можно сказать, что бизнес-логика -- это реализация правил и ограничений автоматизируемых операций. Является синонимом термина «логика предметной области».

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

Даталогическая модель данных (базы данных) - под даталогической понимается модель, отражающая логические взаимосвязи между элементами данных безотносительно их содержания и физической организации. При этом даталогическая модель разрабатывается с учетом конкретной реализации СУБД, также с учетом специфики конкретной предметной области на основе ее инфологической модели.

1. Общие требования

1.1 Назначение информационно-программного комплекса

Информационно-программный комплекс (ИПК) предназначен для использования на IBM-совместимых ПК в качестве автоматизированного рабочего места обработки информации.

1.2 Требования к функциональным характеристикам ИПК

ИПК должен обеспечивать:

диалог пользователя с помощью разработанного интерфейса;

работу с базами данных комплекса (ввод, корректировка, удаление и просмотр записей);

выполнение ряда стандартных запросов к базам данных;

выпуск стандартных отчетов.

1.3 Требования к техническим и программным средствам

ИПК должен функционировать на IBM-совместимых ПК в среде Windows. База данных должна быть создана при помощи СУБД Ibex pert. Отчёты формируются при помощи FastReport 4.0

1.4 Требования к характеристикам БД

Объем введенных данных в ИПК должен позволять продемонстрировать выполнение комплексом заданных функциональных требований. Число записей в каждой таблице должно составлять не менее 20-30. При работе с БД должны быть использованы средства поддержания целостности БД на уровне полей, записей, таблиц и связанных таблиц.

1.5. Требования к квалификации пользователя

ИПК должен быть ориентирован на пользователя-непрограммиста, имеющего навык работы в среде операционной системы Windows.

2. Формулировка варианта задания

2.1 ВАРИАНТ С

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

Данные о производителях товаров: название, адрес, директор, главный бухгалтер, производимый товар, банковские реквизиты.

Данные о договоре на поставку: номер договора, дата заключения, краткий текст, товар (наименование, цена, количество), условия поставки, поставщик, сумма.

Данные по счету: номер счета, номер договора, дата продажи, сумма, НДС, отметка об оплате, отметка о поступлении.

Данные о товаре: наименование, характеристики, цена за единицу, упаковка, поставка партии, примечание и др.

2.2 Требуемые запросы

Номенклатура, количество продаваемого товара;

Номенклатура, количество и стоимость товара на складе;

Поставщики товара по типу товара;

О заключенных договорах на поставку товар;

Об оплате счетов и суммах оплаты;

О продажах за период (день, декада, месяц) (номенклатура, количество, стоимость)

О поставках за период (день, декада, месяц) (номенклатура, количество, стоимость).

2.3 Отчеты

Оформленные в документальном виде типовые запросы.

Подвариант:

С10 - директор магазина одежды.

3. Бизнес-логика

Директор магазина при помощи ИПК осуществляет управление магазином. ИПК должно содержать в себе все необходимые для этого функции. информационный система база данных

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

При заключении договора Поставщики предоставляет информацию о себе и предоставляемых товарах. Директор просматривает список поставщиков/товаров и заказывает необходимые товары. Магазин предоставляет информацию о складе, на который должен быть доставлен товар а также информацию по банковским реквизитам, по которым происходят денежные переводы. Поставщик, с которым заключён договор так же предоставляет информацию по банковским реквизитам.

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

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

При покупке товара клиентом товар удаляется из «наличия» и добавляется в «проданное». Так происходит учёт проданного товара. Это необходимо для соблюдения сроков годности товара, гарантийного срока в случае возвращения товара клиентом.

Когда товар в наличии подходит к концу - заключается новый договор и т.д.

4. Инфологическая модель данных

Рис.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.razmer - размер, тип integer.

Prodannoe.cena - цена товара, тип integer.

Prodannoe.upakovka - наличие упаковки, тип char(1).

Prodannoe.garant_srok - гарантийный срок на товар, тип char(15).

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.

TOVARY_DOGOVOR cena - цена товара, тип integer.

TOVARY_DOGOVOR upakovka - наличие упаковки, тип char(1).

TOVARY_DOGOVOR garant_srok - гарантийный срок на товар, тип char(15).

TOVARY_DOGOVOR id_dogovor - номер договора, тип integer.

TOVARY_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,

fin_nomer_karty integer,

fin_vladelec char(30),

fin_telefon char(15),

fin_skidka char(11),

fin_id_shop integer)

as

begin

if (:fin_id < 0) then

begin

insert into DISCONT (NOMER_KARTY, VLADELEC, TELEFON, SKIDKA, ID_SHOP)

values (:fin_nomer_karty, :fin_vladelec, :fin_telefon, :fin_skidka, :fin_id_shop);

end

else

begin

update

DISCONT

set

NOMER_KARTY = :fin_nomer_karty,

VLADELEC = :fin_vladelec,

TELEFON = :fin_telefon,

SKIDKA = :fin_skidka,

ID_SHOP = :fin_id_shop

where

id = :fin_id;

end

end

CREATE PROCEDURE PROC_DOG (

fin_postavshik char(30),

fin_datadogovora date,

fin_prime4anie char(30),

fin_summa integer,

fin_id_shop integer)

as

begin

insert into DOGOVOR(POSTAVSHIK, DATADOGOVORA, PRIME4ANIE, SUMMA, ID_SHOP)

values (:fin_postavshik, :fin_datadogovora, :fin_prime4anie, :fin_summa, :fin_id_shop);

end

CREATE PROCEDURE PROC_NAL (

fin_id integer,

fin_naimenovanie char(30),

fin_razmer char(10),

fin_cena integer,

fin_upakovka char(1),

fin_garantsrok char(20),

fin_datapostupleni9 date,

fin_id_otdel integer)

as

begin

if (:fin_id < 0) then

begin

insert into NALI4IE(NAIMENOVANIE, RAZMER, CENA, UPAKOVKA, GARANTSROK, DATAPOSTUPLENI9, ID_OTDEL)

values (:fin_naimenovanie, :fin_razmer, :fin_cena, :fin_upakovka, :fin_garantsrok, :fin_datapostupleni9, :fin_id_otdel);

end

else

begin

update

NALI4IE

set

NAIMENOVANIE = :fin_naimenovanie,

RAZMER = :fin_razmer,

CENA = :fin_cena,

UPAKOVKA = :fin_upakovka,

GARANTSROK = :fin_garantsrok,

DATAPOSTUPLENI9 = :fin_datapostupleni9,

ID_OTDEL = :fin_id_otdel

where

id = :fin_id;

end

end

CREATE PROCEDURE PROC_OTDELY (

fin_id_otdel integer,

fin_otdel char(15),

fin_prodavec char(30),

fin_telefon char(15),

fin_faks char(15),

fin_skidki integer,

fin_id_shop smallint)

as

begin

if (:fin_id_otdel < 0) then

begin

insert into OTDELY(OTDEL, PRODAVEC, TELEFON, FAKS, SKIDKI, ID_SHOP)

values (:fin_otdel, :fin_prodavec, :fin_telefon, :fin_faks, :fin_skidki, :fin_id_shop);

end

else

begin

update

otdely

set

OTDEL = :fin_OTDEL,

PRODAVEC = :fin_PRODAVEC,

TELEFON = :fin_TELEFON,

FAKS = :fin_FAKS,

SKIDKI = :fin_SKIDKI,

ID_SHOP = :fin_ID_SHOP

where

id_otdel = :fin_id_otdel;

end

end

CREATE PROCEDURE PROC_PROD (

fin_id integer,

fin_naimenovanie char(30),

fin_razmer char(10),

fin_cena integer,

fin_upakovka char(1),

fin_dataprodaji date,

fin_iste4eniegarantii date,

fin_id_otdel integer)

as

begin

if (:fin_id < 0) then

begin

insert into PRODANNOE(NAIMENOVANIE, RAZMER, CENA, UPAKOVKA, DATAPRODAJI, ISTE4ENIEGARANTII , ID_OTDEL)

values (:fin_naimenovanie, :fin_razmer, :fin_cena, :fin_upakovka, :fin_dataprodaji, :fin_iste4eniegarantii, :fin_id_otdel);

end

else

begin

update

PRODANNOE

set

NAIMENOVANIE = :fin_naimenovanie,

RAZMER = :fin_razmer,

CENA = :fin_cena,

UPAKOVKA = :fin_upakovka,

DATAPRODAJI = :fin_dataprodaji,

ISTE4ENIEGARANTII = :fin_iste4eniegarantii,

ID_OTDEL = :fin_id_otdel

where

id = :fin_id;

end

end

CREATE PROCEDURE PROC_SHOP (

fin_id_shop integer,

fin_nazvanie char(25),

fin_adres char(40),

fin_director char(30),

fin_chasy char(11),

fin_banks4et integer,

fin_telefon char(15),

fin_faks char(15))

as

begin

update

shop

set

NAZVANIE = :fin_nazvanie,

ADRES = :fin_adres,

DIRECTOR = :fin_director,

CHASYRABOTY = :fin_chasy,

BANK_S4ET = :FIN_BANKS4ET,

TELEFON = :fin_telefon,

FAKS = :fin_faks

where

id_shop = :fin_id_shop;

end

CREATE trigger discont_bi for discont

active before insert position 0

AS

begin

if (new.id is null) then

new.id = gen_id(gen_discont_id,1);

end

CREATE trigger dogovor_bi for dogovor

active before insert position 0

AS

begin

if (new.id is null) then

new.id = gen_id(gen_DOGOVOR_id,1);

end

CREATE trigger nali4ie_bi for nali4ie

active before insert position 0

as

begin

if (new.id is null) then

new.id = gen_id(gen_nali4ie_id,1);

end

CREATE trigger otdely_bi for otdely

active before insert position 0

AS

begin

if (new.id_otdel is null) then

new.id_otdel = gen_id(gen_otdely_id,1);

end

CREATE trigger prodannoe_bi for prodannoe

active before insert position 0

as

begin

if (new.id is null) then

new.id = gen_id(gen_prodannoe_id,1);

end

9. Код программы

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, ComCtrls,

IBCustomDataSet, IBDatabase, IBQuery, IBTable, frxClass;

type

TForm1 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Memo1: TMemo;

GroupBox2: TGroupBox;

ProgressBar1: TProgressBar;

Timer1: TTimer;

Button2: TButton;

IBQuery1: TIBQuery;

IBDatabase1: TIBDatabase;

IBDataSet1: TIBDataSet;

IBTransaction1: TIBTransaction;

ComboBox1: TComboBox;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Label2: TLabel;

ComboBox2: TComboBox;

Label3: TLabel;

Button1: TButton;

GroupBox1: TGroupBox;

Button6: TButton;

Button7: TButton;

Button8: TButton;

GroupBox3: TGroupBox;

Button9: TButton;

Button10: TButton;

Button11: TButton;

RadioGroup1: TRadioGroup;

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Edit3: TEdit;

Label4: TLabel;

Edit4: TEdit;

GroupBox4: TGroupBox;

Button12: TButton;

RadioGroup2: TRadioGroup;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Button13: TButton;

RadioGroup3: TRadioGroup;

Edit9: TEdit;

Edit10: TEdit;

Edit11: TEdit;

GroupBox5: TGroupBox;

Label5: TLabel;

Label6: TLabel;

Edit12: TEdit;

Button14: TButton;

DBGrid2: TDBGrid;

GroupBox6: TGroupBox;

Button15: TButton;

Button16: TButton;

Button17: TButton;

GroupBox7: TGroupBox;

Button18: TButton;

Button19: TButton;

Button20: TButton;

Button21: TButton;

IBQuery2: TIBQuery;

DataSource2: TDataSource;

IBDataSet2: TIBDataSet;

IBTransaction2: TIBTransaction;

IBDatabase2: TIBDatabase;

Memo2: TMemo;

Button22: TButton;

Label7: TLabel;

Label8: TLabel;

GroupBox8: TGroupBox;

Button23: TButton;

Button24: TButton;

Button25: TButton;

Button26: TButton;

GroupBox9: TGroupBox;

Button27: TButton;

Label9: TLabel;

Edit13: TEdit;

Button28: TButton;

procedure Button1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure ComboBox2Change(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure RadioGroup2Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure RadioGroup3Click(Sender: TObject);

procedure Button14Click(Sender: TObject);

procedure Button19Click(Sender: TObject);

procedure Button20Click(Sender: TObject);

procedure Button21Click(Sender: TObject);

procedure Button18Click(Sender: TObject);

procedure Button17Click(Sender: TObject);

procedure Button16Click(Sender: TObject);

procedure Button22Click(Sender: TObject);

procedure Button15Click(Sender: TObject);

procedure Button23Click(Sender: TObject);

procedure Button24Click(Sender: TObject);

procedure Button25Click(Sender: TObject);

procedure Button26Click(Sender: TObject);

procedure Button27Click(Sender: TObject);

procedure Button28Click(Sender: TObject);

private

{ Private declarations }

public

end;

var

Form1: TForm1;

Flag,Flag1: Boolean;

Korzina:Boolean = false;

dogovor:integer;

implementation

uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); // main

var i:integer;

begin

Application.MessageBox('Клиент по работе с БД. Евгений Лукин, И493', 'О программе');

end;

cedure TForm1.Timer1Timer(Sender: TObject); // filling progressbar

begin

Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+Timer1.Interval;

end;

procedure TForm1.Button2Click(Sender: TObject); // help

begin

ShellExecute(Handle, 'open',

'c:\windows\notepad.exe', 'help.txt', nil,

SW_SHOWNORMAL);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

if ComboBox1.Text = 'Данные:' then

begin

Application.MessageBox('Выберите данные для добавления','Добавление данных');

exit;

end

else

if ComboBox1.Text = 'Информация о магазине' then

begin

Application.MessageBox('В базе данных только один магазин','Магазин');

exit

end;

if ComboBox1.Text = 'Договоры' then

begin

Application.MessageBox('Вы можете заключить договор, выбрав товары, и добавив их в корзину','Договор');

exit

end;

Flag := True;

Flag1 := True;

if ComboBox1.Text = 'Товары в наличии' then

begin

Form2.Visible := False;

Form2.Visible := True;

end else

if ComboBox1.Text = 'Проданные товары' then

begin

Form3.Visible := False;

Form3.Visible := True;

end else

if ComboBox1.Text = 'Дисконтные карты' then

begin

Form4.Visible := False;

Form4.Visible := True;

end else

if ComboBox1.Text = 'Информация по отделам' then

begin

Form6.Visible := False;

Form6.Visible := True;

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

if ComboBox1.Text = 'Данные:' then begin

Application.MessageBox('Выберите данные для редактирования','Редактирование данных');

exit;

end;

Flag := False;

Flag1 := False;

if ComboBox1.Text = 'Проданные товары' then

begin

Form3.Visible:= False;

Form3.Visible:= True;

end

else

if ComboBox1.Text = 'Товары в наличии' then

begin

Form2.Visible := False;

Form2.Visible := True;

end

else

if ComboBox1.Text = 'Дисконтные карты' then

begin

Form4.Visible := False;

Form4.Visible := True;

end

else

if ComboBox1.Text = 'Информация о магазине' then

begin

Form5.Visible := False;

Form5.Visible := True;

end else

if ComboBox1.Text = 'Информация по отделам' then

begin

Form6.Visible := False;

Form6.Visible := True;

end else

if ComboBox1.Text = 'Договоры' then

begin

Application.MessageBox('Невозможно редактировать заключённый договор','Договор');

exit

end;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

if ComboBox1.Text = 'Данные:' then begin

Application.MessageBox('Выберите данные для удаления','Удаление данных');

exit;

end;

if Application.MessageBox('Вы уверены, что хотите удалить запись?','Удаление записи',

MB_ICONQUESTION + MB_YESNO) = IDNO then

exit;

Form2.IBQuery2.Close;

Form2.IBQuery2.SQL.Clear;

if ComboBox1.Text = 'Товары в наличии' then

with Form2.IBQuery2 do

SQL.Text := 'delete from NALI4IE where id = ' + IBQuery1.FieldByName('ID').AsString

else

if ComboBox1.Text = 'Проданные товары' then

with Form2.IBQuery2 do

SQL.Text := 'delete from PRODANNOE where id = ' + IBQuery1.FieldByName('ID').AsString

else

if ComboBox1.Text = 'Информация о магазине' then

begin

Application.MessageBox('Нельзя удалить запись о магазине','Удаление записи');

exit;

end

else

if ComboBox1.Text = 'Дисконтные карты' then

with Form2.IBQuery2 do

SQL.Text := 'delete from DISCONT where id = ' + IBQuery1.FieldByName('ID').AsString

else

if ComboBox1.Text = 'Информация по отделам' then

with Form2.IBQuery2 do

SQL.Text := 'delete from OTDELY where id_otdel = ' + IBQuery1.FieldByName('ID_OTDEL').AsString

else

if ComboBox1.Text = 'Договоры' then

with Form2.IBQuery2 do

SQL.Text := 'delete from DOGOVOR where id = ' + IBQuery1.FieldByName('ID').AsString;

Form2.IBQuery2.Open;

Form2.IBQuery2.Close;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

ComboBox2.Enabled := True;

if ComboBox1.Text = 'Товары в наличии' then

Memo1.Lines[0] := 'select * from NALI4IE'

else

if ComboBox1.Text = 'Проданные товары' then

Memo1.Lines[0] := 'select * from PRODANNOE'

else

if ComboBox1.Text = 'Информация о магазине' then begin

ComboBox2.Enabled := False;

Memo1.Lines[0] := 'select * from SHOP'

end

else

if ComboBox1.Text = 'Информация по отделам' then

begin

ComboBox2.Enabled := False;

Memo1.Lines[0] := 'select * from OTDELY';

end

else

if ComboBox1.Text = 'Дисконтные карты' then

Memo1.Lines[0] := 'select * from DISCONT'

else

if ComboBox1.Text = 'Договоры' then

Memo1.Lines[0] := 'select * from DOGOVOR';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

PostMessage(ProgressBar1.Handle, $0409, 0, clLime); // progressbar change color to Lime

Form1.ProgressBar1.Position:=0; // progressbar null

Timer1.Enabled:=true;

end;

procedure TForm1.ComboBox2Change(Sender: TObject);

var bufer: string;

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

bufer := Memo1.Lines[0];

if ComboBox2.Text = 'Возрастанию' then

Memo1.Lines[0] := Memo1.Lines[0] + ' order by ID'

else

if ComboBox2.Text = 'Убыванию' then

Memo1.Lines[0] := Memo1.Lines[0] + ' order by id desc'

else

if ComboBox2.Text = 'Наименованию' then

Memo1.Lines[0] := Memo1.Lines[0] + ' order by NAIMENOVANIE'

else

if ComboBox2.Text = 'Дате' then

begin

if ComboBox1.Text = 'Проданные товары' then

Memo1.Lines[0] := Memo1.Lines[0] + ' order by DATAPRODAJI';

if ComboBox1.Text = 'Товары в наличии' then

Memo1.Lines[0] := Memo1.Lines[0] + ' order by DATAPOSTUPLENI9';

if ComboBox1.Text = 'Договоры' then

Memo1.Lines[0] := Memo1.Lines[0] + ' order by DATADOGOVORA';

end;

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

Memo1.Lines[0] := bufer;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from nali4ie where id_otdel=1';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from nali4ie where id_otdel=2';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from nali4ie where id_otdel=3';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

Edit1.Enabled := False; Edit2.Enabled := False; Edit3.Enabled :=False;

Edit4.Enabled := False;

case RadioGroup1.ItemIndex of

0: Edit1.Enabled := True;

1: begin

Edit2.Enabled := True;

Edit3.Enabled := True;

end;

2: Edit4.Enabled := True;

end;

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from prodannoe where id_otdel=1';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button10Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from prodannoe where id_otdel=2';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button11Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from prodannoe where id_otdel=3';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button12Click(Sender: TObject);

begin

IBQuery1.Close;

if RadioGroup1.ItemIndex = 0 then

Memo1.Lines[0] := 'select * from prodannoe where DATAPRODAJI=''' + Edit1.Text

else

if RadioGroup1.ItemIndex = 1 then

Memo1.Lines[0] := 'select * from prodannoe where (DATAPRODAJI>''' + Edit2.Text + ')and(DATAPRODAJI<''' + Edit3.Text + ')'

else

if RadioGroup1.ItemIndex = 2 then

Memo1.Lines[0] := 'select * from prodannoe where (DATAPRODAJI>=''' +'01.'

+ Edit4.Text + ')' + 'and(DATAPRODAJI<=''' + '31.'

+ Edit4.Text + ')';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.RadioGroup2Click(Sender: TObject);

begin

Edit5.Enabled := false; Edit6.Enabled := false; Edit7.Enabled := false;

Edit8.Enabled := false;

case RadioGroup2.ItemIndex of

0: Edit5.Enabled := True;

1: Edit6.Enabled := True;

2: Edit7.Enabled := True;

3: Edit8.Enabled := True;

end;

end;

procedure TForm1.Button13Click(Sender: TObject);

begin

IBQuery1.Close;

if RadioGroup2.ItemIndex = 0 then

Memo1.Lines[0] := 'select * from nali4ie where NAIMENOVANIE=''' + Edit5.Text

else

if RadioGroup2.ItemIndex = 1 then

Memo1.Lines[0] := 'select * from nali4ie where ID=''' + Edit6.Text

else

if RadioGroup2.ItemIndex = 2 then

Memo1.Lines[0] := 'select * from nali4ie where CENA>=''' + Edit7.Text

else

if RadioGroup2.ItemIndex = 3 then

Memo1.Lines[0] := 'select * from nali4ie where RAZMER=''' + Edit8.Text;

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.RadioGroup3Click(Sender: TObject);

begin

Edit9.Enabled := False; Edit10.Enabled := False; Edit11.Enabled :=False;

Edit12.Enabled := False;

case RadioGroup3.ItemIndex of

0: Edit9.Enabled := True;

1: begin

Edit10.Enabled := True;

Edit11.Enabled := True;

end;

2: Edit12.Enabled := True;

end;

end;

procedure TForm1.Button14Click(Sender: TObject);

begin

IBQuery1.Close;

if RadioGroup3.ItemIndex = 0 then

Memo1.Lines[0] := 'select * from DOGOVOR where DATADOGOVORA=''' + Edit9.Text

else

if RadioGroup3.ItemIndex = 1 then

Memo1.Lines[0] := 'select * from DOGOVOR where (DATADOGOVORA>''' + Edit10.Text + ')and(DATADOGOVORA<''' + Edit11.Text + ')'

else

if RadioGroup3.ItemIndex = 2 then

Memo1.Lines[0] := 'select * from DOGOVOR where (DATADOGOVORA>=''' +'01.'

+ Edit12.Text + ')' + 'and(DATADOGOVORA<=''' + '30.'

+ Edit12.Text + ')';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button19Click(Sender: TObject);

begin

Button17.Enabled := true;

IBQuery1.Close;

Memo1.Lines[0] := 'select * from postavwik where id_otdel=1';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button20Click(Sender: TObject);

begin

Button17.Enabled := true;

IBQuery1.Close;

Memo1.Lines[0] := 'select * from postavwik where id_otdel=2';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button21Click(Sender: TObject);

begin

Button17.Enabled := true;

IBQuery1.Close;

Memo1.Lines[0] := 'select * from postavwik where id_otdel=3';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

ocedure TForm1.Button18Click(Sender: TObject);

begin

Button17.Enabled := true;

IBQuery1.Close;

Memo1.Lines[0] := 'select * from postavwik';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button17Click(Sender: TObject);

var summa :String;

begin

Button16.Enabled := true;

Button15.Enabled := true;

Button22.Enabled := true;

IBQuery2.Close;

IBQuery2.SQL.Clear;

Memo2.Lines[0] := 'select * from dogovor';

IBQuery2.SQL := Memo2.Lines;

IBQuery2.Open;

IBQuery2.Last;

dogovor := IBQuery2.RecordCount +1;

IBQuery2.Close;

IBQuery2.SQL.Clear;

// else begin

IBQuery2.SQL.Clear;

Memo2.Lines.Clear;

Memo2.Lines[0] := 'Insert into KORZINA(ID,NAIMENOVANIE,RAZMER,CENA,UPAKOVKA,GARANTSROK,ID_DOGOVOR,ID_OTDEL)' +

' values (' + IBQuery1.FieldByName('ID').AsString + ',''' +

IBQuery1.FieldByName('NAIMENOVANIE').AsString + ''',''' +

IBQuery1.FieldByName('RAZMER').AsString + ''',''' +

IBQuery1.FieldByName('CENA').AsString + ''',''' +

IBQuery1.FieldByName('UPAKOVKA').AsString + ''',''' +

IBQuery1.FieldByName('GARANTSROK').AsString + ''',''' +

IntToStr(dogovor) + ''',''' +

IBQuery1.FieldByName('ID_OTDEL').AsString + ''')';

IBQuery2.SQL := Memo2.Lines;

IBQuery2.Open;

IBQuery2.Transaction.Commit;

IBQuery2.Close;

Memo2.Lines.Clear;

// end;

IBQuery2.Close;

IBQuery2.SQL.Clear;

Memo2.Lines[0] := 'select SUM(CENA) from KORZINA';

IBQuery2.SQL := Memo2.Lines;

IBQuery2.Open;

Label8.Caption:= IBQuery2.FieldByName('SUM').AsString;

IBQuery2.Close;

IBQuery2.SQL.Clear;

Memo2.Lines[0] :='select * from KORZINA';

IBQuery2.SQL := Memo2.Lines;

IBQuery2.Open;

end;

procedure TForm1.Button16Click(Sender: TObject);

begin

IBQuery2.SQL.Text :='delete from KORZINA' +

' where id = ' + IBQuery2.FieldByName('ID').AsString;

IBQuery2.Open;

IBQuery2.Transaction.Commit;

IBQuery2.Close;

Memo2.Lines.Clear;

Memo2.Lines[0] := 'select SUM(CENA) from KORZINA';

IBQuery2.SQL := Memo2.Lines;

IBQuery2.Open;

if IBQuery2.FieldByName('SUM').AsString = '' then

Label8.Caption := '0' else

Label8.Caption:= IBQuery2.FieldByName('SUM').AsString;

IBQuery2.Close;

Memo2.Lines.Clear;

Memo2.Lines[0] :='select * from KORZINA';

IBQuery2.SQL := Memo2.Lines;

IBQuery2.Open;

IBQuery2.Last;

if IBQuery2.RecordCount = 0 then begin

Button22.Enabled := false;

Button16.Enabled := false;

end;

end;

procedure TForm1.Button22Click(Sender: TObject);

begin

Button15.Enabled := false;

Button22.Enabled := false;

Button16.Enabled := false;

Label8.Caption := '0';

IBQuery2.Close;

IBQuery2.SQL.Clear;

IBQuery2.SQL.Text :='DELETE FROM KORZINA';

IBQuery2.Open;

IBQuery2.Transaction.Commit;

IBquery2.Close;

end;

procedure TForm1.Button15Click(Sender: TObject);

begin

Form7.Visible := true;

Form7.Edit4.Text := Form1.Label8.Caption;

end;

procedure TForm1.Button23Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from TOVARY_DOGOVOR';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button24Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from TOVARY_DOGOVOR where id_otdel = 1';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button25Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from TOVARY_DOGOVOR where id_otdel = 2';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button26Click(Sender: TObject);

begin

IBQuery1.Close;

Memo1.Lines[0] := 'select * from TOVARY_DOGOVOR where id_otdel = 3';

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button27Click(Sender: TObject);

begin

if Edit13.Text = '' then begin

Application.MessageBox('Введите id договора','товары');

exit;

end;

Button28.Enabled := true;

IBQuery1.Close;

Memo1.Lines.Clear;

Memo1.Lines[0] := 'select * from TOVARY_DOGOVOR where ID_DOGOVOR= ' + Edit13.Text;

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

end;

procedure TForm1.Button28Click(Sender: TObject);

var t:TfrxMemoView;

begin

if Edit13.Text = '' then begin

Application.MessageBox('Введите id договора','товары');

exit;

end;

t:= TfrxMemoView(Form8.frxReport1.FindObject('Memo10'));

if t <> nil then

t.memo.text := Edit13.Text;

IBQuery1.Close;

IBQuery1.SQL.Clear;

Memo1.Lines.Clear;

Memo1.Lines[0]:= 'select * from DOGOVOR where id= ' + Edit13.Text;

IBquery1.SQL := Memo1.Lines;

IBQuery1.Open;

t:= TfrxMemoView(Form8.frxReport1.FindObject('Memo11'));

if t <> nil then

t.memo.text := IBQuery1.FieldByName('DATADOGOVORA').AsString;

t := TfrxMemoView(Form8.frxReport1.FindObject('Memo14'));

if t <> nil then

t.memo.Text := IBQuery1.FieldByName('SUMMA').AsString;

IBQuery1.SQL.Clear;

Memo1.Lines.Clear;

Memo1.Lines[0]:='select * from TOVARY_DOGOVOR where id_dogovor= ' + Edit13.Text;

IBQuery1.SQL := Memo1.Lines;

IBQuery1.Open;

Form8.Show;

Form8.frxReport1.ShowReport;

end;

end.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, unit1, IBDatabase, DB, IBCustomDataSet, IBQuery;

type

TForm2 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Button1: TButton;

IBQuery2: TIBQuery;

IBTransaction2: TIBTransaction;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label5: TLabel;

Label6: TLabel;

Edit7: TEdit;

Label7: TLabel;

CheckBox1: TCheckBox;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

var check:string;

begin

IBQuery2.Close;

IBQuery2.SQL.Clear;

if Form2.CheckBox1.Checked then check := '+' else check := '-';

if Flag then

begin

with IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_NAL(-1,''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''',''' +

check +''','''+ Edit5.Text +''','''+ Edit6.Text +''',''' +

Edit7.Text +''')';

end;

end

else

begin

with IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_NAL('+ Form1.IBQuery1.FieldByName('ID').AsString +',''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''',''' +

check +''','''+ Edit5.Text +''','''+ Edit6.Text +''',''' +

Edit7.Text +''')';

end;

end;

IBQuery2.Open;

IBQuery2.Close;

Form1.IBQuery1.Close;

Form1.IBQuery1.Open;

if Flag1 then Form2.Close;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

Form2.Close;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, unit1, StdCtrls;

type

TForm3 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label5: TLabel;

Label6: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit5: TEdit;

Edit6: TEdit;

CheckBox1: TCheckBox;

Label7: TLabel;

Button1: TButton;

Edit7: TEdit;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

var check:string;

begin

Form2.IBQuery2.Close;

Form2.IBQuery2.SQL.Clear;

if Form3.CheckBox1.Checked then check := '+' else check := '-';

if Flag then

begin

with Form2.IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_PROD(-1,''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''',''' +

check +''','''+ Edit5.Text +''','''+ Edit6.Text +''',''' +

Edit7.Text +''')';

end;

end

else

begin

with Form2.IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_PROD('+ Form1.IBQuery1.FieldByName('ID').AsString +',''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''',''' +

check +''','''+ Edit5.Text +''','''+ Edit6.Text +''',''' +

Edit7.Text +''')';

end;

end;

Form2.IBQuery2.Open;

Form2.IBQuery2.Close;

Form1.IBQuery1.Close;

Form1.IBQuery1.Open;

if Flag1 then Form3.Close;

end;

procedure TForm3.Button2Click(Sender: TObject);

begin

Form3.Close;

end;

end.

unit Unit4;

interface

uses

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

Dialogs, StdCtrls, unit1;

type

TForm4 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label5: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit5: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);

begin

Form2.IBQuery2.Close;

Form2.IBQuery2.SQL.Clear;

if Flag then

begin

with Form2.IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_DISC(-1,''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''+

Edit5.Text +''',''' +

'1' +''')';

end;

end

else

begin

with Form2.IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_DISC('+ Form1.IBQuery1.FieldByName('ID').AsString +',''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''+

Edit5.Text +''',''' +

'1' +''')';

end;

end;

Form2.IBQuery2.Open;

Form2.IBQuery2.Close;

Form1.IBQuery1.Close;

Form1.IBQuery1.Open;

if Flag1 then Form4.Close;

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

Form4.Close;

end;

end.

unit Unit5;

interface

uses

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

Dialogs, StdCtrls;

type

TForm5 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Button1: TButton;

Button2: TButton;

Label5: TLabel;

Edit5: TEdit;

Label6: TLabel;

Edit6: TEdit;

Label7: TLabel;

Edit7: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit2, Unit1;

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);

begin

Form2.IBQuery2.Close;

Form2.IBQuery2.SQL.Clear;

with Form2.IBQuery2 do

begin

SQL.Text :='execute procedure PROC_SHOP('+ Form1.IBQuery1.FieldByName('ID_SHOP').AsString +','''+

Edit7.Text +''','''+Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''+

Edit4.Text +''','''+ Edit5.Text +''','''+ Edit6.Text +''')';

end;

Form2.IBQuery2.Open;

Form2.IBQuery2.Close;

Form1.IBQuery1.Close;

Form1.IBQuery1.Open;

if Flag1 then Form5.Close;

end;

procedure TForm5.Button2Click(Sender: TObject);

begin

Form5.Close;

end;

end.

unit Unit6;

interface

uses

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

Dialogs, StdCtrls, unit1;

type

TForm6 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label5: TLabel;

Label6: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject);

begin

Form2.IBQuery2.Close;

Form2.IBQuery2.SQL.Clear;

if Flag then

begin

with Form2.IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_OTDELY(-1,''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''+

Edit5.Text +''','''+ Edit6.Text +''',1)';

end;

end

else

begin

with Form2.IBQuery2 do

begin

SQL.Text := 'execute procedure PROC_OTDELY('+ Form1.IBQuery1.FieldByName('ID_OTDEL').AsString +',''' +

Edit1.Text +''','''+ Edit2.Text +''','''+ Edit3.Text +''','''+

Edit5.Text +''','''+ Edit6.Text +''',1)';

end;

end;

Form2.IBQuery2.Open;

Form2.IBQuery2.Close;

Form1.IBQuery1.Close;

Form1.IBQuery1.Open;

if Flag1 then Form6.Close;

end;

procedure TForm6.Button2Click(Sender: TObject);

begin

Form6.Close;

end;

end.

unit Unit7;

interface

uses

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

Dialogs, StdCtrls, frxClass;

type

TForm7 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

uses Unit1, Unit9;

{$R *.dfm}

procedure TForm7.Button1Click(Sender: TObject);

var t:TfrxMemoView;

begin

with Form1.IBQuery1 do begin

Close;

SQL.Clear;

SQL.Text := 'execute procedure PROC_DOG(''' + Edit1.Text +''',''' + Edit2.Text + ''','''+ Edit3.Text +''','''+ Edit4.Text +''',1)';

Open;

Transaction.Commit;

Close;

SQL.Text := 'select * from dogovor';

Open;

end;

{==============}

t:= TfrxMemoView(Form9.frxReport1.FindObject('Memo5'));

if t <> nil then

t.memo.text := Edit2.Text;

t:= TfrxMemoView(Form9.frxReport1.FindObject('Memo7'));

if t <> nil then

t.memo.text := Edit4.Text;

t:= TfrxMemoView(Form9.frxReport1.FindObject('Memo9'));

if t <> nil then

t.memo.text := Edit1.Text;

Form1.IBQuery2.Last;

t:= TfrxMemoView(Form9.frxReport1.FindObject('Memo15'));

if t <> nil then

t.memo.text := IntToStr(Form1.IBQuery2.RecordCount);

t:= TfrxMemoView(Form9.frxReport1.FindObject('Memo3'));

if t <> nil then

t.memo.text := Form1.IBQuery2.FieldByName('ID_DOGOVOR').AsString;

Form1.IBQuery2.Close;

Form1.IBQuery2.SQL.Clear;

Form1.IBQuery2.SQL.Text := 'select * from SHOP';

Form1.IBQuery2.Open;

t:= TfrxMemoView(Form9.frxReport1.FindObject('Memo11'));

if t <> nil then

t.memo.text := Form1.IBQuery2.FieldByName('NAZVANIE').AsString;

t:= TfrxMemoView(Form9.frxReport1.FindObject('Memo13'));

if t <> nil then

t.memo.text := Form1.IBQuery2.FieldByName('BANK_S4ET').AsString;

Form9.Show;

Form9.frxReport1.ShowReport;

{==============}

with Form1.IBQuery2 do begin

Close;

SQL.Clear;

SQL.Text := 'Insert into TOVARY_DOGOVOR(ID,NAIMENOVANIE,RAZMER,CENA,UPAKOVKA,GARANTSROK,ID_DOGOVOR,ID_OTDEL) ' +

'select * from KORZINA';

Open;

Transaction.Commit;

Close;

SQL.Clear;

SQL.Text := 'DELETE FROM KORZINA';

Open;

Transaction.Commit;

Close;

end;

Form1.Button15.Enabled := false;

Form1.Button22.Enabled := false;

Form1.Button16.Enabled := false;

Form1.Label8.Caption := '0';

Form7.Visible := false;

end;

procedure TForm7.Button2Click(Sender: TObject);

begin

Form7.Visible := false;

end;

end.

unit Unit8;

interface

uses

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

Dialogs, frxClass, frxDBSet, frxPreview, StdCtrls, frxExportXLS;

type

TForm8 = class(TForm)

frxReport1: TfrxReport;

frxPreview1: TfrxPreview;

frxDBDataset1: TfrxDBDataset;

frxXLSExport1: TfrxXLSExport;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

{$R *.dfm}

procedure TForm8.Button1Click(Sender: TObject);

begin

Form8.frxReport1.Export(Form8.frxXLSExport1);

end;

end.

unit Unit9;

interface

uses

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

Dialogs, StdCtrls, frxClass, frxPreview, frxExportRTF, frxDBSet;

type

TForm9 = class(TForm)

frxDBDataset1: TfrxDBDataset;

frxReport1: TfrxReport;

frxRTFExport1: TfrxRTFExport;

frxPreview1: TfrxPreview;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form9: TForm9;

implementation

{$R *.dfm}

procedure TForm9.Button1Click(Sender: TObject);

begin

Form9.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. Базы данных. Конспект лекций.

2. Техническая документация по DELPHI7. Москва, 2007.

3. IBexpert. Руководство пользователя.

4. FastReport 4.0. Руководство пользователя с сайта www.fastreport.com

5. Правила оформления текстовых документов. ГОСТ № 7.32-2001.

6. Базы данных: Модели, Разработка, Реализация., Карпова Т., 2001.

7. Базы данных: Основы проектирования, использование., Малыкина М., 8 изд., 2003.

8. Введение в системы БД., Дейт К., 7 изд., 2001.

9. Теория и практика построения БД., Кренке Т., 8 изд. 2003.

10. Правила оформления отчёта. ГОСТ № 7.32-91.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.