Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МиСПрИС_Задание2_4_Петрова_Романова_Заболотников_9373

.pdf
Скачиваний:
16
Добавлен:
20.06.2023
Размер:
1.31 Mб
Скачать

select add_class('Краска_дляЗвонка',10,8);

select add_class('Корзинка',null,7);

--Типы продуктов

select add_varConf('Изделие без конфигурации'); select add_varConf('Типовое изделие с конфигурацией'); select add_varConf('Вариация конфигурации');

--Типы парметров

select add_typeParam('Численный'); select add_typeParam('Перечисление');

--Перечисления

select add_enum('Цвет_Рамы'); select add_enum('Цвет_Звонка');

select add_enum('Количество_болтов'); select add_enum('Количество_передач'); select add_enum('Наличие_корзины'); --Значения перечислений

select add_value ('Белый', null, 1); select add_value ('Голубой', null, 1); select add_value ('Зелёный',null, 1);

select add_value ('Чёрный', null, 2); select add_value ('Золотой', null, 2); select add_value ('Серебряный',null, 2);

select add_value ('36', 36, 3); select add_value ('42', 42, 3); select add_value ('30',30, 3);

select add_value ('3', 3, 4); select add_value ('4', 4, 4); select add_value ('5',5, 4);

11

select add_value ('Есть', 1, 5); select add_value ('Нет', 0, 5);

--Параметры PNAME text,

--PUOM integer,

--PTYPEPAR integer, 1-численный 2-перечисление

--pIdEnum integer

select add_parameter('Цвет_Рамы',null,2,1); select add_parameter('Цвет_Звонка',null,2,2); select add_parameter('Количество_Болтов',7,2,3); select add_parameter('Количество_Передач',7,2,4); select add_parameter('Наличие_корзины',null,2,5); select add_parameter('Вес',6,1,null);

select add_parameter('МаксиамальнаяВысотаРуля',5,1,null);

select delete_param(3);

--Заполним таблицу класс-параметр iIdCl int, iIdParam int, max_value int default null, min_value int default null select add_class_param (2,7,15,10);--Вес

select add_class_param (2,8,300,60);--Макс высота руля

--Добавим типовой продукт велосипед Орион

--nameOfNewProduct text,

--idClassOfNewProduct integer,

--idTypeProd integer,

--idVar integer

select * from ins_prod('Орион',2,null,2);

select * from ins_prod('Стрела',4,null,2); --Руль select * from ins_prod('Бараний_Рог',4,null,2); --Руль select * from ins_prod('Лукошко',13,null,2); --Корзина select * from ins_prod('Звезда',9,null,2); --Болт

select * from ins_prod('Снежинка',11,null,2); --Краска_рама select * from ins_prod('Лазурь',11,null,2);--Краска_рама select * from ins_prod('Травушка-Муравушка',11,null,2);--

Краска_рама

12

select * from ins_prod('Угольная',12,null,2); ----Краска_звонок select * from ins_prod('Золотая',12,null,2);--Краска_звонок select * from ins_prod('Серебряная',12,null,2); --Краска_звонок select * from ins_prod('Перекати_Поле',7,null,2);

select * from ins_prod('Друзья_навек',8,null,2); --Добавим ему параметр

-- Заполним таблицу typeProd_param: iIdProd int, iIdParam int, max_value int default null, min_value int default null

select add_typeprod_param(1,2,null,null); --Цвет рамы select add_typeprod_param(1,3,null,null); --Цвет звонка select add_typeprod_param(1,4,43,29); --кол-воБолтов select add_typeprod_param(1,5,5,1); --Кол-воПередач select add_typeprod_param(1,6,1,0); --НаличиеКорзинки

--Зададим правила

select add_rule('Для_Руля_Стрела'); select add_rule('Для_Руля_БранийРог'); select add_rule('Для_Корзины_Лукошко'); select add_rule('Для_Болта_Зв1'); select add_rule('Для_Болта_Зв2'); select add_rule('Для_Болта_Зв3'); select add_rule('Для_КраскаР_Снежинка');

select add_rule('Для_КраскаР_Травушка-Муравушка'); select add_rule('Для_КраскаР_Лазурь');

select add_rule('Для_КраскаЗ_Угольная'); select add_rule('Для_КраскаЗ_Серебряная'); select add_rule('Для_КраскаЗ_Золотая');

--Создадим, используемые предикаты add_predicat(pIdPar integer,pOper text,pVal integer)

select add_predicat(4,'=',12); --Количество болтов равно 42 select add_predicat(4,'<',12); --Количество болтов < 42 select add_predicat(4,'=',13); --Количество болтов равно 30 select add_predicat(4,'=',11); --Количество болтов равно 30 select add_predicat(6,'=',17); --Корзина - есть

select add_predicat(6,'=',18); --Корзина - отсутсвует select add_predicat(5,'=',16); --Кол-во передачч равно 5 select add_predicat(5,'<',16); --Кол-во передачч < 5 select add_predicat(2,'=',4); --Цвет рамы - белый

13

select add_predicat(2,'=',6); --Цвет рамы - голубой select add_predicat(2,'=',7); --Цвет рамы - зелёный

--Зададим тела функций add_predInBody(pIdF integer,pNumD integer, pIdPred integer)

--Кб=42 и Корзина-отсутсвтует и Кп = 5 -> Руль:Стрела select add_predInBody(1,1,1);--Количество болтов равно 42 select add_predInBody(1,1,4);--Корзина-отсутсвтует select add_predInBody(1,1,5);--Количество передач равно 5

--Кб<42 или Корзина-есть или Кп < 5 -> Руль:Бараний Рог select add_predInBody(2,1,2);--Количество болтов < 42 select add_predInBody(2,2,3);--Корзина-есть

select add_predInBody(2,3,8);--Количество передач < 5

--Корзина-есть -> Корзина:Лукошко

select add_predInBody(3,1,3);--Корзина-есть

--Кб=42 -> Болт:Звёздочка 42

select add_predInBody(4,1,1);--Количество болтов равно 42

--Кб=36 -> Болт:Звёздочка 36

select add_predInBody(5,1,7);--Количество болтов равно 36

--Кб=30 -> Болт:Звёздочка 30

select add_predInBody(6,1,6);--Количество болтов равно 30

--Цр = Белый -> Краска_рамная:Снежинка

select add_predInBody(7,1,9);--Цвет рамы - белый

--Цр = Зелёный -> Краска_рамная:Травушка-Муравушка select add_predInBody(8,1,11);--Цвет рамы - зелёный

--Цр = Голубой -> Краска_рамная:Лазурь

select add_predInBody(9,1,10);--Цвет рамы - голубой

14

--Добавим теперь значения параметров update_prod_param (iIdProd int, iIdParam int, val double precision, iIdEnumVal int) RETURNS table(ORES integer)

select update_prod_param(1,2,null,4); --Белый цвет рамы select update_prod_param(1,4,null,12); --42 Болта select update_prod_param(1,5,null,16); --5 передач select update_prod_param(1,6,null,18);--нет корзины select update_prod_param(1,7,13,null);-- Вес 13 кг

select update_prod_param(1,8,150,null);--150 мм макс высота руля

--Добавим позиции спецификации для данного типового изделия

/*add_posSP ( id_mainProductN integer, id_useProductN integer, countInSPN integer, idFuc integer,

flagN integer)*/

select add_posSp(1,2,1,1,null);--Вставим позицию Руль-Стрела select add_posSp(1,3,1,2,null);--Вставим позицию Руль-БранийРог select add_posSp(1,4,1,3,null);--Вставим позицию Корзина-Лукошко select add_posSp(1,5,42,4,null);--Вставим позицию Кб = 42 select add_posSp(1,5,36,5,null);--Вставим позицию Кб = 36 select add_posSp(1,5,30,6,null);--Вставим позицию Кб = 30 select add_posSp(1,6,1,7,null);--Вставим позицию Краска_для_рамы

- Снежинка

select add_posSp(1,7,1,9,null);--Вставим позицию Краска_для_рамы

- Лазурь

select add_posSp(1,8,1,8,null);--Вставим позицию Краска_для_рамы

- Травушка-муравушка

select add_posSp(1,9,1,7,null);--Вставим позицию Краска_для_звонка - Угольная

select add_posSp(1,10,1,9,null);--Вставим позицию Краска_для_рамы

- Золотая

select add_posSp(1,11,1,8,null);--Вставим позицию Краска_для_рамы

- Серебристая

15

select add_posSp(1,12,2,null,null);--Вставим позицию Колесо:Перекати_Поле

select add_posSp(1,13,1,null,null);--Вставим позицию Цепь:Друзья_Навек

---Посмотрим спцификацию

select * from READ_SPEC_CONF(1,1,0); --Создадим вариацию типового продукта Орион select new_var_prod(1);

--Зададим значения прамметров для вариации

select update_prod_param(14,2,null,6);-- Голубой цвет рамы select update_prod_param(14,4,null,11);-- 36 болтов select update_prod_param(14,5,null,14); --3 передачи select update_prod_param(14,6,null,17); --Корзина есть

---Посотрим спцификацию только

select * from READ_SPEC_CONF(14,14,0);

--Узннаем сводные нормы для 10 велосипедов Орион в 1 вариации

SUM_Q_F (

--PIDEL integer,

--PQ double precision,

--PGR integer)

select * from sum_q_f(14,10,2);

--Добавим спицы

select add_class('Спицы',null,7);

select * from ins_prod('Игла',21,null,2); --Спица игла ид.15 select add_posSp(12,15,10,null,null);--Встави позицию для колеса

Тестирование процедур работы со спецификацией изделия.

На рис. 6 – 16 представлены результаты работы программы.

Рисунок 6 – Создание типового продукта

16

Рисунок 7 – Создание списка для классовых параметров

Рисунок 8 – Добавили остальные типовые изделия

Рисунок 9 – Обновлённые значения параметров типового велосипеда

17

Рисунок 10 – Добавление позиции спецификатора для типового

"Ориона"

Рисунок 11 – Спецификация для типового продукта

Рисунок 12 – Таблица списков параметров после добавления новой

вариации Ориона с id 14

18

Рисунок 13 – Обновлённые значения параметров у вариации

Рисунок 14 – Спецификация для вариации с заданными параметрами

Рисунок 15 – Сводные номы для десяти велосипедов вариации

19

Рисунок 16 – После того как вставили десять спиц "Игла" в каждое

колесо

20