# Курсовой проект

Курсовой проект служит для закрепления и систематизации знаний и умений **ПМ.05**.

Разделы курсового проекта соответстсвуют демо-экзамену компетенции "Программные решения для бизнеса"

## Темы курсовых проектов

1. Автосервис. Подсистема работы с клиентами. (Батанов)
2. Автосервис. Подсистема работы с сотрудниками. (Галимулин)
3. Автосервис. Подсистема работы с услугами. (Егоров)
4. Автосервис. Подсистема для управления компанией. (Журавлёв)
5. Школа иностранных языков. Подсистема работы с клиентами. (Иванков)
6. Школа иностранных языков. Подсистема работы с сотрудниками. (Изергин)
7. Школа иностранных языков. Подсистема работы с услугами. (Клёнов)
8. Школа иностранных языков. Подсистема для управления компанией. (Логинов)
9. Фитнесс-центр. Подсистема работы с клиентами. (Минин)
10. Фитнесс-центр. Подсистема работы с сотрудниками. (Михайлов)
11. Фитнесс-центр. Подсистема работы с услугами. (Неметжанова)
12. Фитнесс-центр. Подсистема работы с товарами. (Орифшоев)
13. Фитнесс-центр. Подсистема для управления компанией. (Пенкин)
14. Мини-пекарня. Подсистема работы с клиентами. (Решетов)
15. Мини-пекарня. Подсистема работы с сотрудниками. (Садовин)
16. Мини-пекарня. Подсистема работы с услугами. (Светлаков)
17. Мини-пекарня. Подсистема работы с товарами. (Смирнов)
18. Мини-пекарня. Подсистема для управления компанией. (Стариков)
19. Интернет-провайдер. Подсистема работы с клиентами. (Топорова)
20. Интернет-провайдер. Подсистема работы с сотрудниками. (Троегубов)
21. Интернет-провайдер. Подсистема работы с услугами. (Чулков)
22. Интернет-провайдер. Подсистема работы с товарами. (Новоселов)
23. Интернет-провайдер. Подсистема для управления компанией.

## Методические рекомендации

### Общие положения

Курсовой проект выполняется в виде публичного репозитория на общедоступном сервере контроля версий (github, gitlab...). Пояснительная записка располагается в файле `readme.md` и, соответственно, должна быть написана в формате *MarkDown*.

Тема курсового проекта выбирается из списка, либо, по желанию студента. 

### Требования к структуре курсового проекта

* введение, в котором раскрываются актуальность и значение темы, формулируются цели и задачи работы, объект, предмет и методы исследования;
* теоретическая часть, в которой содержатся теоретические основы разрабатываемой темы:
    - анализ предметной области: опрос, анкетирование (разработать как минимум одну анкету)
    - разработать UseCase-диаграмму для основных пользователей системы (в формате PDF)
    - разработать спецификацию к UseCase (к 3 самым важным прецедентам)
    - для ЧЁТНЫХ номеров: разработать диаграмму состояний (в формате PDF)
    - для НЕЧЁТНЫХ номеров: разработать диаграмму последовательности (в формате PDF)
    - проектирование ERD. Необходимо спроектировать максимально полную ERD для предметной области. Обязательна 3 нормальная форма с обеспечением ссылочной целостности.
    - разработать словарь данных.
* практическая часть, которая состоит из проектирования, описания его реализации
    - база данных (MSSQL):
        * создание базы данных. На этом этапе реализовать только основной функционал подсистемы (подойти к преподавателю и утвердить набор обязательных таблиц)
        * подготовить 3 файла с данными (в РАЗНЫХ форматах csv, txt, xls): 5 записей для справочников, 10 - для данных (список товаров/услуг/клиентов...). Для данных предусмотреть поле для изображения и, соответственно, каталог с изображениями.
        * импортировать данные в базу данных (в пояснительной записке привести SQL-команды, используемые при импорте)
    - разработка (C#)
        * отображение основного списка товаров/услуг с:
            - условной раскраской (по доступности/цене... уточнить у преподавателя);
            - выводом изображений
            - сортировкой (уточнить у преподавателя)
            - фильтрацией (по справочному полю)
            - поиском (по нескольким полям)
            - вычисляемыми полями (по связям)
            - счетчиками общего количества записей и отображаемых

            все действия должны быть "живые", т.е. для фильтрации и поиска не нужно нажимать каких-то специальных кнопок.
        * режим администртора    
        * добавление, удаление, редактирование записей списка товаров/услуг (только в режиме администратора) в отдельных модальных окнах, где это возможно. Если товар уже продавали (услугу оказывали), то выводить уведомление о невозможности удаления.
        * отображение дополнительного списка (продажи/оказанные услуги)
    - тестирование
        * разработать библиотеку классов (реализовать в ней метод для расчета вычисляемого поля в основной таблице)
        * разработать модульные тесты для метода из библиотеки классов (не менее 10)
        * разработка тестовых сценариев для удаления товара/услуги (не менее 5)
    - XML-комментарии. Не очевидный код (разработка и тестирование) должен содержать комментарии
* заключение, в котором содержатся выводы и рекомендации относительно возможностей практического применения полученных результатов;