Задание
Разработать автоматизированную информационную систему контроля и учета рабочего времени и предоставленных услуг для барбершопа.
Технологии: C#, WPF (.NET 6) + MVVM, PostgreSQL + EntityFramework.
Для симпатичного интерфейса подключен пакет HandyControl, обеспечивающий современный вид элементов управления на интерфейсе пользователя.
Функционал программы
Возможности администратора:
- Ведение списка администраторов, барберов и клиентов
- Учет товаров, включаемых в заказ
- Управление услугами для 3-ех уровней мастерства барбера со своей процентной ставкой: Младший мастер (15%), Мастер (25%), Старший мастер (35%)
- Управление заказами клиентов
- Создание/Выполнение заказа от клиента в удобном поэтапном конструкторе
Возможности барбера:
- Создание/Выполнение заказа от клиента в удобном поэтапном конструкторе
- Просмотр статистики по выполненным заказам
Дополнительные возможности:
- Смена темы приложения Светлая/Тёмная
- Интерактивный поиск на страницах приложения
- Гибкий дизайн
Содержание отчета к программе (50 страниц + Приложение код)
ВВЕДЕНИЕ.. 4
1 Аналитический обзор. 7
1.1 Аналитический обзор современных подходов к организации рабочего процесса барбершопа. 8
1.2 Анализ современных прикладных IT решений в сфере контроля и учета рабочего времени и предоставляемых услуг барбершопа. 11
1.3 Цель и задачи работы.. 23
1.4 Календарно-ресурсное планирование процесса разработки программного комплекса для барбершопа. 24
1.5 Выводы по аналитическому обзору. 26
2 Основная часть. Разработка автоматизированной системы.. 27
2.1 Формализованное описание процесса контроля и учета бизнес-процессов барбершопа. 27
2.2 Структура и характеристика информационного обеспечения системы.. 28
2.3 Разработка функциональной структуры программного комплекса. 30
2.4 Обзор и обоснование выбора инструментальных средств разработки системы.. 32
2.5 Характеристика технического и программного обеспечения системы.. 38
2.6 Обеспечение информационной безопасности. 41
2.7 Тестирование и оценка качества информационной системы.. 42
2.8 Оценка эффективности проекта. 44
2.9 Выводы по основной части. 48
Заключение. 49
Список использованных источников. 50
Фрагмент программного кода
public sealed class OfferService : EntityService<ServiceDto, Service, UpsertServiceCommand> { private readonly IBaseRepository<ServiceSkillLevel> _serviceSkillLevelRepository; public OfferService( IBaseRepository<ServiceSkillLevel> serviceSkillLevelRepository, IBaseRepository<Service> repository, IMapper mapper) : base(repository, mapper) { _serviceSkillLevelRepository = serviceSkillLevelRepository ?? throw new ArgumentNullException(nameof(serviceSkillLevelRepository)); } public override async Task Update(UpsertServiceCommand command) { var storedService = await _entityRepository.GetById(command.Id, x => x.ServiceSkillLevels); await SyncServiceSkillLevel(storedService.ServiceSkillLevels, SkillLevel.Junior, command.JuniorSkill); await SyncServiceSkillLevel(storedService.ServiceSkillLevels, SkillLevel.Middle, command.MiddleSkill); await SyncServiceSkillLevel(storedService.ServiceSkillLevels, SkillLevel.Senior, command.SeniorSkill); var service = _mapper.Map<Service>(command); await _entityRepository.Update(service); } public override async Task<IReadOnlyList<ServiceDto>> GetAll() { var services = await _entityRepository.GetAll(x => x.ServiceSkillLevels); return _mapper.Map<IReadOnlyList<ServiceDto>>(services); } public override async Task<ServiceDto> GetById(int id) { var service = await _entityRepository.GetById(id, x => x.ServiceSkillLevels); return _mapper.Map<ServiceDto>(service); } private async Task SyncServiceSkillLevel(ICollection<ServiceSkillLevel> skillLevels, SkillLevel skillLevel, ServiceSkillLevelDto? serviceSkillLevelDto) { var storedSkillLevel = skillLevels.FirstOrDefault(x => x.SkillLevel == skillLevel); if (storedSkillLevel != null && serviceSkillLevelDto == null) { await _serviceSkillLevelRepository.Remove(storedSkillLevel.Id); } } }
Скриншот архива с проектом
Пояснения по запуску программы
Для запуска программы должны быть установлены следующие компоненты:
- Visual Studio 2019;
- .NET 6;
- PostgreSQL.
Всё это можно установить в установщике Visual Studio Installer при установке Visual Studio 2019.
После просто открыть проект и запустить программу. База автоматически создастся с пользователем admin для входа в программу + начальный набор данных как в видео.
Структура проекта
kostyaLem