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

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

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

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

1. Автосервис. Подсистема работы с клиентами. (Батанов)
    * список клиентов (юзеров)
    * список автомобилей
    * автомобили пользователя (таблица связей)

2. Автосервис. Подсистема работы с сотрудниками. (Галимулин)
    * список сотрудников с ролями (юзеров)
    * список услуг автосервиса
    * список услуг сотрудника (таблица связей)

3. Автосервис. Подсистема работы с услугами. (Егоров)
4. Автосервис. Подсистема для управления компанией. (Журавлёв)
5. Школа иностранных языков. Подсистема работы с клиентами. (Иванков)
6. Школа иностранных языков. Подсистема работы с сотрудниками. (Изергин)
7. Школа иностранных языков. Подсистема работы с услугами. (Клёнов)
    * список услуг
    * список составных частей услуги
    * услуга + часть

8. Школа иностранных языков. Подсистема для управления компанией. (Логинов)
    * список договоров (приход, расход): фото клиента/сотрудника или логотип компании, номер, дата, список последних 3-х операций. Подсветка, если нет операций за последний месяц
    * операции по договору: приход для клиентов, расход для сотрудников и контрагентов

9. Фитнесс-центр. Подсистема работы с клиентами. (Минин)
    * заказ на услуги (csv): фото клиента, дата номер заказа, сумма
    * список оригинальных услуг (txt): название, стоимость, единица измерения
    * список услуг/товаров в заказе (xls): название, номер заказа, количество, цена 

10. Фитнесс-центр. Подсистема работы с сотрудниками. (Михайлов)
    * список сотрудников (csv): фото, должность, ФИО, оклад
    * список услуг (txt): название услуги, стоимость, единица измерения
    * список услуг тренера (xls): ФИО, название услуги

11. Фитнесс-центр. Подсистема работы с услугами. (Неметжанова)
    * список услуг: логотип, название, итог, компоненты
    * словарь компонентов: название, стоимость
    * таблица связей услуга-компонент

12. Фитнесс-центр. Подсистема работы с товарами. (Орифшоев)
    * список заказов (csv): логотип поставщика, номер дата заказа, стоимость
    * список товаров (txt): название, стоимость
    * список товаров в заказе (xls): номер заказа, название товара, количество, цена

13. Фитнесс-центр. Подсистема для управления компанией. (Пенкин)

14. Мини-пекарня. Подсистема работы с клиентами. (Решетов)
    * список заказов (csv): номер, дата, доставщик, логотип доставщика, сумма заказа
    * список товаров (txt): название, цена, картинка
    * список товаров в заказе (xls): номер заказа, название товара, количество, цена

15. Мини-пекарня. Подсистема работы с сотрудниками. (Садовин)
    * список сотрудников (подсвечивать сотрудников с просроченными документами): фио, фото, должность
    * список документов: название, срок действия
    * список документов сотрудника

16. Мини-пекарня. Подсистема работы с услугами. (Светлаков)

17. Мини-пекарня. Подсистема работы с товарами. (Смирнов)

18. Мини-пекарня. Подсистема для управления компанией. (Стариков)

19. Интернет-провайдер. Подсистема работы с клиентами. (Топорова)
    * список клиентских договоров с выводом списка логотипов сервисов, краткой информацией по договору и итоговой суммой 
    * список услуг в договоре
    * список услуг компании

20. Интернет-провайдер. Подсистема работы с сотрудниками. (Троегубов)
    * список сотрудников с фото, окладом и списком последних 3-х зарплат
    * список начислений по сотрудниками
    
21. Интернет-провайдер. Подсистема работы с услугами. (Чулков)
    * заказ-наряды на оказание услуг: адрес, номер, исполнитель
    * список услуг: название, цена
    * услуги в заказе: номер заказа, название услуги, количество, цена
    
22. Интернет-провайдер. Подсистема работы с товарами. (Новоселов)
    * список заказов (csv): логотип поставщика, номер дата заказа, стоимость
    * список товаров (txt): название, стоимость
    * список товаров в заказе (xls): номер заказа, название товара, количество, цена
    - Person
    - Product
    - ProductType
    - Provider
    - ProviderOrder
    - ProviderOrderProduct


23. Интернет-провайдер. Подсистема для управления компанией.

## Важно!!!

USE-case и ER диаграммы рисуются для всей предметной области. На этом этапе приветствуется командная работа. Для каджого глобального проекта будет создана своя база данных, в которой вы потом будете делать свою часть. 
 
## Методические рекомендации

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

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

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

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

* титульный лист. Разметку HTML можно взять из этого репозитория;
* содержание;
* введение, в котором раскрываются актуальность и значение темы, формулируются цели и задачи работы, объект, предмет и методы исследования;
* теоретическая часть, в которой содержатся теоретические основы разрабатываемой темы:
    - анализ предметной области: опрос, анкетирование (разработать как минимум одну анкету)
    - разработать UseCase-диаграмму для основных пользователей системы. 
        - полную диаграмму в формате PDF положить в репозиторий
        - "свой" кусок картинкой прицепить к пояснительной записке (картинки в *MarkDown* внедряются разметкой: `![<alt>](<имя картинки с относительным путём в вашем репозитории>)`). Например, все свои ресурсы вы храните в подкаталоге `src`, тогда для картинки с названием `erd.png` команда будет выглядеть так: `![ER-диаграмма](./src/erd.png)`
    - разработать спецификацию к UseCase (к 3 самым важным прецедентам). Формат **MarkDown**
    - для ЧЁТНЫХ номеров: разработать диаграмму состояний (в формате PDF)
    - для НЕЧЁТНЫХ номеров: разработать диаграмму последовательности (в формате PDF)
    - проектирование ERD. Необходимо спроектировать максимально полную ERD для предметной области. Обязательна 3 нормальная форма с обеспечением ссылочной целостности.
        - полную диаграмму в формате PDF положить в репозиторий
        - "свой" кусок картинкой прицепить к пояснительной записке
    - разработать словарь данных (MarkDown).
* практическая часть, которая состоит из проектирования, описания его реализации
    - база данных (MSSQL):
        * создание базы данных. На этом этапе реализовать только основной функционал подсистемы (подойти к преподавателю и утвердить набор обязательных таблиц)
        * подготовить 3 файла с данными (в РАЗНЫХ форматах csv, txt, xls): 5 записей для справочников, 10 - для данных (список товаров/услуг/клиентов...). Для данных предусмотреть поле для изображения и, соответственно, каталог с изображениями.
            + таблица с основными данными (продукты)
            + таблица с составными данными (материалы для продуктов)
            + таблица связей (продукты + материалы)
        * импортировать данные в базу данных (в пояснительной записке привести SQL-команды, используемые при импорте)
    - разработка (C#)
        * отображение основного списка товаров/услуг с:
            - условной раскраской (по доступности/цене... уточнить у преподавателя);
            - выводом изображений
            - сортировкой (уточнить у преподавателя)
            - фильтрацией (по справочному полю)
            - поиском (по нескольким полям)
            - вычисляемыми полями (по связям)
            - счетчиками общего количества записей и отображаемых

            Припер разметки "списком" есть [тут](https://github.com/kolei/de)

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