- •Введение
- •1 Выбор состава технических и программных средств
- •1.1 Выбор языка программирования
- •1.2 Обоснование управления данными с помощью interbase.
- •1.3 Отчеты с помощью FastReport 5.0
- •2 Разработка программы
- •2.1 Схема данных
- •2.2 Описание таблиц бд
- •2.3 Создание бд
- •2.4 Стадии разработки пп.
- •2.4.1 Альфа тестирование.
- •2.4.2 Бета тестирование
- •3 Руководство пользователя
- •4 Спецификация программы
- •Заключение
- •Список использованных источников
1.3 Отчеты с помощью FastReport 5.0
В Delphi 7 не предусмотрены компоненты для создания отчетов, вывода их на печать и сохранения в отдельный файл. Все эти и многие другие функции может выполнять генератор отчетов FastReport 5.0. При установке FastReport 5.0 он автоматически встраивается в Delphi 7, что очень удобно для данного проекта.
2 Разработка программы
2.1 Схема данных
Схема базы данных включает в себя описания содержания, структуры и ограничений целостности, используемые для создания и поддержки базы данных.
Постоянные данные в среде базы данных включают в себя схему и базу данных. Система управления базами данных (СУБД) использует определения данных в схеме для обеспечения доступа и управления доступом к данным в базе данных.
Схема базы данных (от англ. Database schema) — её структура, описанная на формальном языке, поддерживаемом СУБД. В реляционных базах данных схема определяет таблицы, поля в каждой таблице (обычно с указанием их названия, типа, обязательности), и ограничения целостности (первичный, потенциальные и внешние ключи и другие ограничения).
Схемы в общем случае хранятся в словаре данных. Хотя схема определена на языке базы данных в виде текста, термин часто используется для обозначения графического представления структуры базы данных.
Основными объектами графического представления схемы являются таблицы и связи, определяемые внешними ключами.
2.2 Описание таблиц бд
Всего имеется одиннадцать таблиц: «Список товаров(TOVARY)», «Материнские платы(MATPLAT)», «Звуковые карты(MEDIACARD)», «ОЗУ(OZY)», «Процессоры(PROCESSORS)», «Видеокарты(VIDEOCARD)», «Винчестеры(VINCHESTERS)», «Расход(RASHOD)», «Приход(PRIHOD)», «Покупатели(POKYPATELY)», «Поставщики(POSTAVSHIKI)».
2.3 Создание бд
Для создания таблиц в базе данных применялись следующие SQL-скрипты:
Таблица POSTAVSHIKI
CREATE TABLE "POSTAVSHIKI"
(
"N_POS" INTEGER NOT NULL,
"NAME" VARCHAR(70) CHARACTER SET WIN1251,
"GOROD" VARCHAR(30) CHARACTER SET WIN1251,
"TELEPHON" VARCHAR(20) CHARACTER SET WIN1251,
CONSTRAINT "PK_POSTAVSHIKI" PRIMARY KEY ("N_POS")
);
Таблица POKYPATELY
CREATE TABLE "POKYPATELY"
(
"N_POK" INTEGER NOT NULL,
"NAME" VARCHAR(70) CHARACTER SET WIN1251,
"GOROD" VARCHAR(30) CHARACTER SET WIN1251,
"TELEPHON" VARCHAR(20) CHARACTER SET WIN1251,
CONSTRAINT "PK_POKYPATELY" PRIMARY KEY ("N_POK")
);
Таблица MATPLAT
CREATE TABLE "MATPLAT"
(
"PODPROC" VARCHAR(20) CHARACTER SET WIN1251,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251 NOT NULL,
"KOLVO" INTEGER,
"ID" INTEGER NOT NULL,
CONSTRAINT "PK_MATPLAT" PRIMARY KEY ("ID")
);
Таблица MEDIACARD
CREATE TABLE "MEDIACARD"
(
"ID" INTEGER NOT NULL,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251,
"KOLVO" INTEGER,
CONSTRAINT "PK_MEDIACARD" PRIMARY KEY ("ID")
);
ALTER TABLE "MEDIACARD" ADD CONSTRAINT "FK_MEDIACARD_1" FOREIGN KEY ("TOVAR") REFERENCES TOVARY ("TOVAR");
Таблица OZY
CREATE TABLE "OZY"
(
"ID" INTEGER NOT NULL,
"OBEM" VARCHAR(20) CHARACTER SET WIN1251,
"TIP" VARCHAR(20) CHARACTER SET WIN1251,
"CHASTOTA" VARCHAR(20) CHARACTER SET WIN1251,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251,
"KOLVO" INTEGER,
CONSTRAINT "PK_OZY" PRIMARY KEY ("ID")
);
ALTER TABLE "OZY" ADD CONSTRAINT "FK_OZY_1" FOREIGN KEY ("TOVAR") REFERENCES TOVARY ("TOVAR");
Таблица PRIHOD
CREATE TABLE "PRIHOD"
(
"N_PRIH" INTEGER NOT NULL,
"DAT_PRIH" DATE,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251,
"KOLVO" INTEGER,
"N_POS" INTEGER,
CONSTRAINT "PK_PRIHOD" PRIMARY KEY ("N_PRIH")
);
ALTER TABLE "PRIHOD" ADD CONSTRAINT "FK_PRIHOD_1" FOREIGN KEY ("TOVAR") REFERENCES TOVARY ("TOVAR");
ALTER TABLE "PRIHOD" ADD CONSTRAINT "FK_PRIHOD_2" FOREIGN KEY ("N_POS") REFERENCES POSTAVSHIKI ("N_POS");
Таблица PROCESSORS
CREATE TABLE "PROCESSORS"
(
"ID" INTEGER NOT NULL,
"FIRMA" VARCHAR(20) CHARACTER SET WIN1251,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251,
"KOLVO" INTEGER,
CONSTRAINT "PK_PROCESSORS" PRIMARY KEY ("ID")
);
ALTER TABLE "PROCESSORS" ADD CONSTRAINT "FK_PROCESSORS_1" FOREIGN KEY ("TOVAR") REFERENCES TOVARY ("TOVAR");
Таблица RASHOD
CREATE TABLE "RASHOD"
(
"N_RAS" INTEGER NOT NULL,
"DAT_RAS" DATE,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251,
"KOLVO" INTEGER,
"N_POK" INTEGER,
CONSTRAINT "PK_RASHOD" PRIMARY KEY ("N_RAS")
);
ALTER TABLE "RASHOD" ADD CONSTRAINT "FK_RASHOD_1" FOREIGN KEY ("TOVAR") REFERENCES TOVARY ("TOVAR");
ALTER TABLE "RASHOD" ADD CONSTRAINT "FK_RASHOD_2" FOREIGN KEY ("N_POK") REFERENCES POKYPATELY ("N_POK");
Таблица TOVARY
CREATE TABLE "TOVARY"
(
"CATEGORY" VARCHAR(57) CHARACTER SET WIN1251 NOT NULL,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251 NOT NULL,
CONSTRAINT "PK_TOVARY" PRIMARY KEY ("TOVAR")
);
Таблица VIDEOCARD
CREATE TABLE "VIDEOCARD"
(
"ID" INTEGER NOT NULL,
"FIRM" VARCHAR(20) CHARACTER SET WIN1251,
"OBEM" VARCHAR(20) CHARACTER SET WIN1251,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251,
"KOLVO" INTEGER,
CONSTRAINT "PK_VIDEOCARD" PRIMARY KEY ("ID")
);
ALTER TABLE "VIDEOCARD" ADD CONSTRAINT "FK_VIDEOCARD_1" FOREIGN KEY ("TOVAR") REFERENCES TOVARY ("TOVAR");
Таблица VINCHESTERS
CREATE TABLE "VINCHESTERS"
(
"ID" INTEGER NOT NULL,
"OBEM" VARCHAR(20) CHARACTER SET WIN1251,
"TIPE" VARCHAR(20) CHARACTER SET WIN1251,
"TOVAR" VARCHAR(250) CHARACTER SET WIN1251,
"KOLVO" INTEGER,
CONSTRAINT "PK_VINCHESTERS" PRIMARY KEY ("ID")
);
ALTER TABLE "VINCHESTERS" ADD CONSTRAINT "FK_VINCHESTERS_1" FOREIGN KEY ("TOVAR") REFERENCES TOVARY ("TOVAR");
Для упрощения удаления данных из связанный таблиц применялись триггеры(в количестве 2 штук). Ниже приведен пример триггера на удаление покупателя из таблицы «POKYPATELY» и всех расходов, связанных с этим покупателем из таблицы «RASHOD».
CREATE TRIGGER "DELETE_POKYPATELY" FOR "POKYPATELY"
ACTIVE AFTER DELETE POSITION 0
AS
begin
delete From RASHOD Where RASHOD.N_POK=pokypately.N_POK;
end
Для автоматического заполнения поля «ID» во таблицах кроме «TOVARY» были созданы генераторы и процедуры(по 3 штуки для каждой таблицы). Пример генератора и процедуры к таблице «MATPLAT».
CREATE GENERATOR "GEN_MATPLAT_ID";
CREATE PROCEDURE "SP_GEN_MATPLAT_ID"
RETURNS
(
"ID" INTEGER
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "SP_GEN_MATPLAT_ID"
RETURNS
(
"ID" INTEGER
)
AS
begin
id = gen_id(gen_matplat_id, 1);
suspend;
end
CREATE TRIGGER "MATPLAT_BI" FOR "MATPLAT"
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_matplat_id,1);
end
