
- •Домашнее задание
- •1.2. Содержание работы
- •1.3. Исходные данные для задачи
- •1.4. Рекомендуемые инструменты
- •1.5. Рекомендуемые источники
- •Аннотация
- •Описание выполненной работы
- •1.1 Анализ исходных данных
- •1.2. Разработка функциональных требований к подсистеме
- •1.3. Разработка модели классов
- •2.1.3. Код создания таблицы "enum"
- •2.1.4. Код создания таблицы "product"
- •2.1.5. Код создания таблицы "param"
- •2.1.6. Код создания таблицы "class_param"
- •2.1.7. Код создания таблицы "prod_param"
- •2.2. Реализация основных функций
- •2.2.1. Функция создания параметра
- •2.2.2. Функция редактирования параметра
- •2.2.3. Функция удаления параметра
- •2.2.4. Функция создания класса параметра
- •2.2.5. Функция изменения класса параметра
- •2.2.6. Функция удаления класса параметра
- •2.2.7. Функция наследования класса параметра
- •2.2.8. Функция изменения приоритета вывода класса параметра
- •2.2.9. Функция создания привязки параметра к изделию
- •2.2.10. Функция изменения привязки параметра и изделия
- •2.2.11. Функция нахождения id параметров у изделия
- •2.2.12. Функция поиска изделий заданного класса параметра
- •2.2.13. Функция поиска изделия с заданным параметром в заданном интервале
2.2.12. Функция поиска изделий заданного класса параметра
функция: find_products_of_class_param - функция поиска изделий заданного класса параметра
-- вход:
-- 1. id_of_class_param_el - id интересующего класса параметра
-- выход:
-- 1. список строк изделий
-- эффекты: нет
-- требования:
-- 1. интересующий класса параметра должен существовать
def find_products_of_class_param(id_of_class_param_el):
cursor.execute('SELECT param_class_name FROM class_param WHERE id = ?', (id_of_class_param_el,))
name_of_class_param_el = cursor.fetchone()
print(f'id_of_class_param_el - {name_of_class_param_el}')
if name_of_class_param_el:
name_of_class_param_el = name_of_class_param_el[0]
else:
print(f'класса параметра с названием - {name_of_class_param_el} не существует.')
return 0
cursor.execute('SELECT class_param_id FROM class_param WHERE id = ?', (id_of_class_param_el,))
class_param_id = cursor.fetchone()
print(f'class_param_id - {class_param_id}')
if class_param_id:
class_param_id = class_param_id[0]
else:
print(f'класс параметра с id категории изделий - {class_param_id} не существует.')
return 0
cursor.execute('SELECT * FROM product WHERE id_category = ?', (class_param_id,))
products = cursor.fetchall()
if products:
products = products[0]
else:
print(f'изделия с id классом параметра - {class_param_id} не существует.')
return 0
return products
2.2.13. Функция поиска изделия с заданным параметром в заданном интервале
функция: find_products_in_interval_param - функция поиска изделия с заданным параметром в заданном интервале
-- вход:
-- 1. param_id - id параметра
-- 2. type_value - тип значения, по которому хотим найти изделия (int/real)
-- 3. start_val - начало интервала
-- 4. end_val - конец интервала
-- выход: изделия с заданным параметром в заданном интервале
-- эффекты: нет
-- требования:
-- 1. параметр должен существовать
-- 2. указать тип значения с содержанием в строке 'int' или 'real'
def find_products_in_interval_param(param_id, type_value, start_val, end_val):
if 'int' in type_value.lower():
cursor.execute('SELECT prod_id FROM prod_param WHERE param_id = ? AND int_value >= ? AND int_value <= ?', (param_id, start_val, end_val))
prod_ids = cursor.fetchall()
if prod_ids:
prod_ids = prod_ids[0]
return prod_ids[0]
else:
print(f'изделий с param_id = {param_id}, type_value = {type_value}, start_val = {start_val}, end_val = {end_val} нет в таблице product')
return
if 'real' in type_value.lower():
cursor.execute('SELECT prod_id FROM prod_param WHERE param_id = ? AND real_value >= ? AND real_value <= ?', (param_id, start_val, end_val))
prod_ids = cursor.fetchall()
if prod_ids:
prod_ids = prod_ids[0]
return prod_ids[0]
else:
print(f'изделий с param_id = {param_id}, type_value = {type_value}, start_val = {start_val}, end_val = {end_val} нет в таблице product')
return
3. Тестирование
3.1. Тестирование основных функций
3.1.1. Функция создания параметра
3.1.2. Функция редактирования параметра
3.1.3. Функция удаления параметра
Как видно параметр “dlina_new” удалился.
3.1.4. Функция создания класса параметра
3.1.5. Функция изменения класса параметра
3.1.6. Функция удаления класса параметра
Удалилось из таблицы terminal_classifier
Удалилось
из таблицы class_param
3.1.7. Функция наследования класса параметра
3.1.8. Функция изменения приоритета вывода класса параметра
3.1.9. Функция создания привязки параметра к изделию
3.1.10. Функция изменения привязки параметра и изделия
3.1.11. Функция нахождения id параметров у изделия
Потому
что ранее добавляли
Вот
они
3.1.12. Функция поиска изделий заданного класса параметра
Добавляли
для категории
3.1.13. Функция поиска изделия с заданным параметром в заданном интервале
id
параметра 4 - Длина
Как раз наш пример
Укажем другие значения
Потому что под параметры в диапазоне подходит теперь только стул_arizone.
Все функции работают корректно.
Вывод
В ходе выполнения домашней работы проведён анализ предметной области, выделены классы изделий, параметры, классы параметров, связка параметр-изделие. Спроектированы и были разработаны средства работы со справочником на основе смоделированного Классификатора изделий в Домашних работах №1 и №2 в том числе разработаны и протестированы процедуры с помощью языка Python и библиотеки для работы с SQL-запросами - SQLite.