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

2.2.24. Заполнение базы данных контрольным примером

функция: fill_data_example - заполнение базы данных контрольным примером

-- вход: нет

-- выход: нет

-- эффекты:

-- 1. заполнение базы данных

-- требования:

-- 1. сущестовование базы данных и соотвествующих таблиц

def fill_data_example():

add_category("неопределенные")

add_category("изделия")

##

add_subcategory("изделия", "столы")

add_subcategory("столы", "столы-металл")

add_product("стол_arizone", "столы-металл", 110, 2500)

add_product("стол_garden_story", "столы-металл", 54, 5665)

#

add_subcategory("столы", "столы-дерево")

add_product("стол_эстер", "столы-дерево", 124, 6460)

add_product("стол_кентуки", "столы-дерево", 1340, 2400)

##

add_subcategory("изделия", "стулья")

add_subcategory("стулья", "стулья-пластик")

add_product("стул_rambo", "стулья-пластик", 435, 1580)

add_product("стул_keter", "стулья-пластик", 252, 1300)

#

add_subcategory("стулья", "стулья-металл")

add_product("стул_arizone", "стулья-металл", 245, 3400)

add_product("стул_giardino", "стулья-металл", 25, 2400)

##

add_subcategory("изделия", "кресла")

add_subcategory("кресла", "кресла-кресло_кокон")

add_product("кресло-m-group", "кресла-кресло_кокон", 24, 12000)

add_product("кресло-гамак", "кресла-кресло_кокон", 14, 15500)

#

add_subcategory("кресла", "кресла-двухместное_кресло")

add_product("кресло-gemini_promob", "кресла-двухместное_кресло", 4, 8999)

add_product("кресло-парящая_кровать", "кресла-двухместное_кресло", 54, 9999)

2.3. Тестирование разработанных процедур

2.3.1. Тестирование проверки категории на существование

2.3.2. Тестирование проверки изделия на существование

2.3.3. Тестирование добавления категории

2.3.4. Тестирование добавления подкатегории

2.3.5. Тестирование добавления изделия

2.3.6. Тестирование получения всех категорий

2.3.7. Тестирование получения всех изделий

2.3.8. Тестирование обновления цены изделия

2.3.9. Тестирование обновления количества изделия

2.3.10. Тестирование изменения категории изделия

2.3.11. Тестирование удаления изделия

2.3.12. Тестирование удаления категории

2.3.13. Тестирование удаление подкатегории

2.3.14. Тестирование проверки на цикл при изменении родителя подкатегории

Специально сделаем цикл стулья - стулья-пластик

Было:

Стало:

Проверим категории без цикла:

2.3.15. Тестирование изменения родителя подкатегории

Поменяем родителя таким образом, что категория “стулья” станет дочерней у “стулья-металл” (изначально наоборот).

Начальное состояние:

Пробуем:

Итог:

Цикла не возникло.

В следующем примере сделаем категорию корневой, передав в качестве аргумента название этой категории. Сделаем категорию “стулья” - одной из корневых:

Результат - категория “стулья” стала одной из корневых (в поле id_parent значение NULL):

2.3.16. Тестирование изменения имени категории

2.3.17. Тестирование изменения имени изделия

2.3.18. Тестирование получения всех родителей подкатегории

2.3.18.1. На подкатегории

Для наглядности работы рекурсивности добавим к категории “кресла-кресло_кокон_new” подкатегорию “кресла-кресло_кокон_new_child”.

2.3.18.2. На категории

Возьмем категорию “стулья”.

Результат ожидаем, ведь у категории “стулья” нет родителей.

2.3.19. Тестирование получения всех детей категории

2.3.19.1. На подкатегории

Ожидаемый результат, тк у “кресла-кресло_кокон_new_child” нет дочерних элементов

2.3.19.2 На категории

2.3.19.2.1. Прямой порядок вывода

Ожидаемый результат, ведь у категории “стулья” как раз 4 дочерних элемента:

2.3.19.2.2. Обратный порядок вывода

2.2.20. Тестирование получения всех изделий у категории

2.2.21. Тестирование удаления всех таблиц

Имеются 2 таблицы (не считая системной sqlite_sequence):

  1. Category

  1. Product

Имеем в итогу пустую базу данных (не считая системной таблицы sqlite_sequence):

3. Заключение

В ходе выполнения домашней работы был проведён анализ предметной области, выделен класс изделия, класс категории. Были проектированы, разработаны и протестированы средства работы с классификатором изделий. Использовалась библиотека типа sql "sqlite3", входящий в пакет языка программирования python3.

4. Список использованных источников

  1. Приемы объектно-ориентированного проектирования. Паттерны проектирования: Изд-во «ПИТЕР», 2008

  2. В.А.Дубенецкий, А.Г. Кузнецов Проектирование информационных систем с использованием UML: учебно-методическое пособие. СПбГЭТУ «ЛЭТИ», 2016. 62 с.

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