# Курсовой проект Курсовой проект служит для закрепления и систематизации знаний и умений **ПМ.05**. ## Что должно быть реализовано - база данных - десктопное приложение для администрирования БД - авторизация - добавление - редактирование - удаление - поиск - фильтрация - сортировка - АПИ-сервер на PHP - мобильное приложение, получающее данные через АПИ-сервер (просмотр/заказ) ## Темы курсовых проектов 1. Автосервис: - список услуг (админка) - запись на сервис (мобилка) с выбором списка услуг 2. Онлайн-пекарня (интернет магазин) - список продукции (админка) - онлайн-заказ (мобильное приложение) 3. Фитнесс-центр - список услуг (админка) - запись на занятие (учесть овербукинг) с выбором услуг 4. Бронирование столика в ресторане - список залов и столиков (количество мест) (админка) - онлайн бронь (мобильное приложение) с учетом овербукинга 5. Автомойка - список услуг - онлайн запись 6. Запись к врачу - список врачей (у каждого свой график работы) - запись (мобилка) 7. Сотовый оператор - список тарифов и опций (админка) - выбор тарифа и опций (мобилка) 8. Транспортная компания (служба доставки) - парк транспортных средств (поезд, самолет, авто) - заказ доставки (вес, расстояние) 9. Заказ ЖД-билетов - список поездов с расписанием - бронирование на нужную дату и кол-во пассажиров 10. Покупка билета в кино - список фильмов, залов, мест - бронирование билетов 11. Шиномонтаж - список услуг - онлайн-запись 12. Стоматолог - список услуг, врачей - запись 13. Аптека - список лекарств - онлайн-покупка 14. Строй.материалы - список товаров - онлайн-покупка 15. Доставка еды (на двоих) - список ресторанов, список блюд, список доставщиков (деливери, яндекс) - формирование заказа (мобилка) - доставка заказа (мобилка) 16. Парикмахерская - список услуг, парикмахеров - запись 17. Книга рецептов - список блюд, ингредиенты - отображение с расчетом калорийности (мобилка) 18. Книжный магазин - список книг - онлайн заказы ## Важно!!! USE-case и ER диаграммы рисуются для всей предметной области. ## Методические рекомендации ### Общие положения Курсовой проект выполняется в виде публичного репозитория на общедоступном сервере контроля версий (github, gitlab...). Пояснительная записка располагается в файле `readme.md` и, соответственно, должна быть написана в формате *MarkDown*. Тема курсового проекта выбирается из списка, либо, по желанию студента. ### Требования к структуре курсового проекта * титульный лист. Разметку HTML можно взять из этого репозитория; * содержание; * введение, в котором раскрываются актуальность и значение темы, формулируются цели и задачи работы, объект, предмет и методы исследования; * теоретическая часть, в которой содержатся теоретические основы разрабатываемой темы: - анализ предметной области: опрос, анкетирование (разработать как минимум одну анкету) - разработать UseCase-диаграмму для основных пользователей системы. - полную диаграмму в формате PDF положить в репозиторий - "свой" кусок картинкой прицепить к пояснительной записке (картинки в *MarkDown* внедряются разметкой: `![](<имя картинки с относительным путём в вашем репозитории>)`). Например, все свои ресурсы вы храните в подкаталоге `src`, тогда для картинки с названием `erd.png` команда будет выглядеть так: `![ER-диаграмма](./src/erd.png)` - разработать спецификацию к UseCase (к 3 самым важным прецедентам). Формат **MarkDown** - для ЧЁТНЫХ номеров: разработать диаграмму состояний (в формате PDF) - для НЕЧЁТНЫХ номеров: разработать диаграмму последовательности (в формате PDF) - проектирование ERD. Необходимо спроектировать максимально полную ERD для предметной области. Обязательна 3 нормальная форма с обеспечением ссылочной целостности. - полную диаграмму в формате PDF положить в репозиторий - "свой" кусок картинкой прицепить к пояснительной записке - разработать словарь данных (MarkDown). * практическая часть, которая состоит из проектирования, описания его реализации - база данных (MYSQL): * создание базы данных. На этом этапе реализовать только основной функционал подсистемы (подойти к преподавателю и утвердить набор обязательных таблиц) * подготовить 3 файла с данными (в РАЗНЫХ форматах csv, txt, xls): 5 записей для справочников, 10 - для данных (список товаров/услуг/клиентов...). Для данных предусмотреть поле для изображения и, соответственно, каталог с изображениями. + таблица с основными данными (продукты) + таблица с составными данными (материалы для продуктов) + таблица связей (продукты + материалы) * импортировать данные в базу данных (в пояснительной записке привести SQL-команды, используемые при импорте) - разработка (C#) * отображение основного списка товаров/услуг с: - условной раскраской (по доступности/цене... уточнить у преподавателя); - выводом изображений - сортировкой (уточнить у преподавателя) - фильтрацией (по справочному полю) - поиском (по нескольким полям) - вычисляемыми полями (по связям) - счетчиками общего количества записей и отображаемых Пример разметки "списком" есть [тут](https://github.com/kolei/de) все действия должны быть "живые", т.е. для фильтрации и поиска не нужно нажимать каких-то специальных кнопок. * добавление, удаление, редактирование записей списка товаров/услуг в отдельных модальных окнах, где это возможно. Если товар уже продавали (услугу оказывали), то выводить уведомление о невозможности удаления. * отображение дополнительного списка (продажи/оказанные услуги) - разработка (PHP) * реализовать API для базы данных * написать инструкцию по развертыванию сервера - разработка (мобильное приложение) * реализовать приложение для записи на услугу/заказ товара - тестирование * разработать библиотеку классов (реализовать в ней метод для расчета вычисляемого поля в основной таблице) * разработать модульные тесты для метода из библиотеки классов (не менее 10) * разработка тестовых сценариев для удаления товара/услуги (не менее 5) - XML-комментарии. Не очевидный код (разработка и тестирование) должен содержать комментарии * заключение, в котором содержатся выводы и рекомендации относительно возможностей практического применения полученных результатов;