Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 сем / 3 / МиСПрИС_1374_3_Наволоцкий_Харитонов_Зырянов.docx
Скачиваний:
6
Добавлен:
29.03.2025
Размер:
2.61 Mб
Скачать

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.

Соседние файлы в папке 3