Зразок роботи
ВСТУП
Актуальність роботи. За останні десятиліття сфера громадського харчування та доставки зазнала значних змін. Із зростанням популярності онлайн-технологій та змінами у споживчих звичках, з'явилася потреба у розробці зручних та інноваційних інструментів для замовлення та доставки. На сьогоднішній день інтернет-сервіси доставки стали необхідною складовою галузі обслуговування та гостинності.
Метою даної курсової роботи є розробка веб-застосунку для сервісу доставки на базі фреймворку ASP.NET Core з архітектурою MVC. Головною метою застосунку є створення ефективного та інтуїтивно зрозумілого інструменту для залучення клієнтів та полегшення процесу замовлення та доставки.
Об'єктом дослідження є веб-застосунок для доставки, який надає можливості реєстрації користувачів, замовлення продуктів, а також взаємодії з каталогом товарів та процесом доставки.
Предметом дослідження є функціональність та ефективність веб-застосунку, його зручність для користувачів різних категорій, а також можливості адміністрування та управління системою.
Завданнями цієї роботи є:
• Розробка веб-застосунку на базі фреймворку ASP.NET Core з архітектурою MVC.
• Реалізація різних ролей користувачів, таких як Гість, Користувач, Кур'єр та Адміністратор.
• Створення зручного та ефективного інтерфейсу для замовлення та доставки продуктів.
• Реалізація можливостей адміністрування системи, управління замовленнями та каталогом товарів.
• Тестування та оптимізація роботи веб-застосунку для забезпечення його стабільності та швидкодії.
РОЗДІЛ 1
ОПИС ПРЕДМЕТНОЇ ОБЛАСТІ
1.1 Огляд галузі громадського харчування та доставки товарів
Сучасний розвиток технологій і зміни в споживчих звичках призвели до значного розширення галузі громадського харчування та доставки товарів. Цей сегмент ринку є одним із найбільш динамічних та конкурентних, пропонуючи нові можливості як для підприємців, так і для споживачів.
Однією з ключових тенденцій є зростання популярності онлайн-сервісів та мобільних додатків для замовлення товарів. Користувачі все частіше віддають перевагу зручній онлайн-платформі, що дозволяє замовляти їжу з різноманітних ресторанів та кафе з одного місця.
Ринок доставки товарів активно розширюється, пропонуючи нові сервіси та можливості. Кур'єрські служби та платформи для замовлення товарів співпрацюють з різними закладами, включаючи ресторани, кафе, пекарні та інші, щоб задовольнити різноманітні смакові уподобання користувачів.
Прогнозується подальше зростання галузі громадського харчування та доставки товарів завдяки стрімкому розвитку технологій, змінам в споживчих звичках та підвищенню усвідомленості користувачів про зручність та доступність таких сервісів.
1.2 Аналіз функціональних потреб користувачів
Гість – це користувач, який ще не зареєстрований у системі. Йому доступна інформація про сервіс, така як домашня сторінка, сторінка "Про Нас", FAQ і т.д. Гість може реєструвати свій обліковий запис, створюючи профіль користувача.
Зареєстрований користувач може використовувати всі можливості системи, включаючи:
• Замовлення продуктів із каталогу.
• Додавання товарів у кошик та оформлення замовлення.
• Зміна персональних даних у своєму профілі.
• Слідкування за статусом своїх замовлень.
• Перегляд історії замовлень.
• Кур'єр має всі можливості звичайного користувача, а також може:
• Приймати замовлення для доставки.
• Змінювати статуси замовлень (наприклад, "в процесі виконання" або "готове до видачі").
Адміністратор володіє повним контролем над системою. Йому доступні такі функції:
• Керування сторінками та інформацією сайту.
• Редагування каталогу товарів.
• Перегляд інформації про виконані замовлення та користувачів.
1.3 Опис сутностей
1.3.1 CartItem (Елемент кошика)
Сутність, яка представляє елемент кошика користувача. Містить інформацію про продукт, його кількість та прив'язку до конкретного замовлення.
Поля:
• Id (int): Унікальний ідентифікатор елемента кошика (первинний ключ).
• UserId (int): Ідентифікатор користувача, до якого належить елемент кошика.
• ProductId (int): Ідентифікатор продукту, який додано до кошика.
• Quantity (int): Кількість одиниць продукту в кошику.
• OrderId (int, nullable): Ідентифікатор замовлення, до якого прив'язаний елемент кошика (може бути null, якщо елемент не пов'язаний із замовленням).
1.3.2 Courier (Кур'єр)
Сутність, яка представляє кур'єра в системі доставки. Зберігає інформацію про особисті дані кур'єра та тип доставки, яким він займається.
Поля:
• Id (int): Унікальний ідентифікатор кур'єра (первинний ключ).
• Birthday (DateTime): Дата народження кур'єра.
• TypeOfDelivery (string): Тип доставки, яким займається кур'єр (наприклад, "експрес", "стандарт", тощо).
• PassportCode (string): Код паспорта кур'єра.
• UserId (int, nullable): Ідентифікатор користувача, пов'язаного із кур'єром (може бути null).
1.3.3 OrderItem (Елемент замовлення)
Сутність, яка представляє елемент замовлення. Містить інформацію про продукт та його кількість у замовленні.
Поля:
• Id (int): Унікальний ідентифікатор елемента замовлення (первинний ключ).
• ProductId (int): Ідентифікатор продукту у замовленні.
• Quantity (int): Кількість одиниць продукту у замовленні.
• OrderId (int): Ідентифікатор замовлення, до якого належить елемент.
1.3.4 Order (Замовлення)
Сутність, яка представляє замовлення користувача. Зберігає інформацію про замовлення, його статус, суму та прив'язку до користувача та кур'єра.
Поля:
• Id (int): Унікальний ідентифікатор замовлення (первинний ключ).
• UserId (int): Ідентифікатор користувача, який здійснив замовлення.
• TotalAmount (decimal): Загальна сума замовлення.
• CourierId (int, nullable): Ідентифікатор кур'єра, призначеного для доставки замовлення (може бути null).
• Status (string): Статус замовлення (наприклад, "в процесі", "завершено", тощо).
1.3.5 Product (Продукт)
Сутність, яка представляє продукт, який доступний для замовлення. Зберігає інформацію про назву, вагу, ціну та зображення продукту.
Поля:
• Id (int): Унікальний ідентифікатор продукту (первинний ключ).
• Name (string): Назва продукту.
• Weight (int): Вага продукту.
• Price (decimal): Ціна продукту.
• ImageUrl (string, nullable): URL-адреса зображення продукту (може бути null).
1.3.6 User (Користувач)
Сутність, яка представляє користувача системи. Зберігає основні дані про користувача.
Поля:
• Id (int): Унікальний ідентифікатор користувача (первинний ключ).
• Username (nvarchar(max)): Ім'я користувача.
• Email (nvarchar(max)): Адреса електронної пошти користувача.
• Password (nvarchar(max)): Хеш паролю користувача.
• Address (nvarchar(max)): Адреса проживання користувача.
• PhoneNumber (nvarchar(max)): Номер телефону користувача.
• RoleId (int): Ідентифікатор ролі користувача у системі (зовнішній ключ до таблиці Roles).
1.3.7 Role (Роль)
Сутність, яка представляє роль користувача в системі. Визначає права та обов'язки користувача в залежності від його ролі.
Поля:
• Id (int): Унікальний ідентифікатор ролі (первинний ключ).
• Name (string): Назва ролі (наприклад, "Guest", "User", "Courier", "Admin").
РОЗДІЛ 2
РОЗРОБКА ПРОГРАМНОГО ПРОДУКТУ
2.1 Аналіз та вибір технологій для розробки
Розробка веб-застосунку для доставки товарів базується на виборі відповідних технологій, які забезпечать ефективність, безпеку та зручність використання для кінцевих користувачів. У цьому розділі проводиться аналіз і обґрунтування обраних технологій.
Для реалізації веб-застосунку обрано мову програмування C# у зв'язці з фреймворком ASP.NET Core. Цей вибір обумовлений великою швидкістю розробки, високою продуктивністю та підтримкою широкого спектру функцій, необхідних для веб-застосунку з доставки товарів.
Для зберігання даних обрана реляційна база даних MS SQL. Ця система забезпечує надійність, стабільність та високу продуктивність в умовах великої кількості транзакцій та обробки даних.
Для розробки користувацького інтерфейсу використовуватимуться стандартні технології web-розробки: HTML, CSS та JavaScript. Для полегшення стилізації та респонсивного дизайну використовуватиметься фреймворк Bootstrap.
Для забезпечення безпеки та конфіденційності даних користувачів у проекті використовується система аутентифікації та авторизації, яка вбудована в ASP.NET Core Identity. ASP.NET Core Identity - це набір бібліотек для роботи з аутентифікацією, авторизацією та управлінням користувачами в додатках ASP.NET Core.
Розглянемо основні принципи безпеки та конфіденційності.
Аутентифікація:
• Користувачі реєструються та аутентифікуються в системі з використанням своїх електронних адрес та паролів.
• Використовується вбудована система ASP.NET Core Identity для зберігання та перевірки інформації про користувачів.
Авторизація:
• Визначення рівнів доступу на основі ролей, які прив'язані до користувачів.
• Застосування атрибутів ролей в контроллерах та діях для визначення доступу до конкретних частин функціоналу.
Ролі користувачів:
• Система має три основні ролі: "admin", "courier", "user".
• Ролі визначають рівень доступу користувача до певних функцій і ресурсів.
Управління сесіями та використання кукі:
• Використання механізмів управління сесіями для збереження стану аутентифікації між запитами користувача.
• Кукі використовуються для збереження інформації про сесію на боці клієнта.
Використання ASP.NET Core Identity спрощує реалізацію системи аутентифікації та авторизації, забезпечуючи стандартні функціональність для управління користувачами, ролями та іншими аспектами безпеки.
Для покращення взаємодії з користувачами та оптимізації веб-застосунку можуть використовуватися додаткові бібліотеки та сервіси, такі як jQuery для зручного взаємодії з DOM елементами та AJAX запитами.
Вибір технологій для розробки веб-застосунку обумовлений потребами у високій продуктивності, безпеці даних та зручному інтерфейсі для користувачів. Обрані технології мають широку підтримку спільноти, що сприятиме стабільності та ефективності проекту.