Trong dự án này, project chính là `QLCoffee`, và nó chứa các thành phần sau: Configuration Files: appsettings.Development.json, appsettings.json: Các file cấu hình dùng để lưu trữ các
Trang 1M4.1
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUY NHƠN
BÁO CÁO HỌC PHẦN CÔNG NGHỆ WEB
Công nghệ thông tin Tên đề tài: Quản lý quán cafe
Người hướng dẫn: Vũ Sơn Lâm Sinh viên thực hiện: Đoàn Lê Duy
Nguyễn Trương Thái Khang
Mã số sinh viên: 4351055000 4451050154
Trang 21 GIỚI THIỆU 3
2 CẤU TRÚC DỰ ÁN 4
3 THIẾT KẾ CƠ SỞ DỮ LIỆU 5
4 CÁC TÍNH NĂNG CHÍNH 6
5 CONTROLLER 7
6 MODELS 8
7 VIEWS 10
8 TRUY CẬP DỮ LIỆU 12
9 KẾT LUẬN 14
Trang 31 GIỚI THIỆU
Tổng quan về dự án:
Mục tiêu: Xây dựng một hệ thống quản lý quán cafe toàn diện, giúp tối ưu hóa quy trình quản lý và phục vụ khách hàng
Mục đích:
Đơn giản hóa việc quản lý quán cafe, từ quản lý nhân viên, thực đơn đến xử lý đơn hàng
và thanh toán
Tăng cường hiệu quả hoạt động của quán cafe, giảm thiểu sai sót và tiết kiệm thời gian
Cải thiện trải nghiệm khách hàng thông qua giao diện thân thiện và chức năng đặt hàng trực tuyến
Mục tiêu:
Xử lý đơn hàng: Theo dõi và quản lý đơn hàng từ lúc khách hàng đặt đến khi thanh toán
Quản lý kho: Kiểm soát và cập nhật tình trạng nguyên liệu trong kho
Báo cáo và thống kê: Cung cấp các báo cáo doanh thu, hoạt động bán hàng, giúp quản lý
dễ dàng theo dõi tình hình kinh doanh
Trang 42 CẤU TRÚC DỰ ÁN
Giải thích về cấu trúc Solution và Project:
Solution (.sln file): Solution là một tập hợp các project và các file liên quan, giúp quản lý
và tổ chức các thành phần của ứng dụng Trong dự án này, file solution chính là
`QLCoffee.sln`
Project: Một project là một thành phần con của solution, chứa các file mã nguồn, tài nguyên, và các thông tin cấu hình cần thiết để xây dựng một phần của ứng dụng Trong
dự án này, project chính là `QLCoffee`, và nó chứa các thành phần sau:
Configuration Files:
appsettings.Development.json, appsettings.json: Các file cấu hình dùng để lưu trữ các thiết lập của ứng dụng như kết nối cơ sở dữ liệu, các thông số cấu hình khác nhau cho các môi trường (phát triển, sản xuất, v.v.)
bundleconfig.json: Dùng để cấu hình các gói tài nguyên front-end
Folders:
Controllers: Chứa các lớp controller điều khiển luồng dữ liệu giữa model và view Mỗi controller xử lý các yêu cầu HTTP cụ thể và trả về các kết quả tương ứng
Data: Chứa các lớp và file liên quan đến việc truy cập và quản lý dữ liệu, như lớp
DbContext của Entity Framework
Migrations: Chứa các file migration dùng để quản lý và thay đổi schema của cơ sở dữ liệu
Models: Chứa các lớp model đại diện cho dữ liệu và các logic nghiệp vụ của ứng dụng
Views: Chứa các file view (Razor) dùng để hiển thị giao diện người dùng
wwwroot: Chứa các file tĩnh như CSS, JavaScript, hình ảnh, v.v
Source Files
Program.cs: Là file khởi tạo và cấu hình ứng dụng, bao gồm hàm Main là điểm bắt đầu của ứng dụng
QLCoffee.csproj: File cấu hình của project, chứa thông tin về các package, tài nguyên và các thiết lập cần thiết để xây dựng project
Trang 53 THIẾT KẾ CƠ SỞ DỮ LIỆU
Thiết kế cơ sở dữ liệu cho hệ thống quản lý quán cafe bao gồm các bảng chính như sau:
Bảng Users: Quản lý thông tin người dùng (nhân viên, khách hàng)
Bảng Products: Quản lý thông tin về các sản phẩm (thức uống, đồ ăn) của quán
Bảng OrderDetails: Quản lý chi tiết từng sản phẩm trong mỗi đơn hàng
Bảng Inventory: Quản lý thông tin về kho hàng và nguyên liệu
Trang 64 CÁC TÍNH NĂNG CHÍNH
Quản lý người dùng:
Quản lý thực đơn:
Xử lý đơn hàng:
Quản lý kho:
Báo cáo & thống kê:
Giao diện người dùng thân thiện:
Đặt hàng trực tuyến:
Trang 75 CONTROLLER
Các Controller chính trong hệ thống quản lý quán café:
HomeController
Chức năng: Quản lý các yêu cầu chung của trang chủ, như hiển thị thông tin về quán cafe, thông tin liên hệ
o Index: Hiển thị trang chủ của ứng dụng
o Privacy: Hiển thị trang thông tin về chính sách bảo mật
QLDoUongsControllers
sửa, xóa và hiển thị chi tiết sản phẩm
o Index: Hiển thị danh sách các đồ uống hiện có trong thực đơn
o Create: Hiển thị trang thông tin về quán cafe
o Edit: Chỉnh sửa thông tin đồ uống hiện có
o Delete: Xóa đồ uống khỏi thực đơn
o Details: Hiển thị thông tin chi tiết của một đồ uống cụ thể
QLHoaDonsControllers
Chức năng: Quản lý các hóa đơn từ khi khách hàng đặt hàng đến khi thanh toán và giao hàng
o Index: Hiển thị danh sách các hóa đơn hiện có
o Create: Tạo hóa đơn mới
o Edit: Chỉnh sửa thông tin hóa đơn hiện có
o Delete: Xóa hóa đơn khỏi hệ thống
o Details: Hiển thị thông tin chi tiết của một hóa đơn cụ thể
QLNhanViensController
Chức năng: Quản lý thông tin và hoạt động của nhân viên, bao gồm việc thêm mới, chỉnh sửa, xóa và hiển thị chi tiết thông tin nhân viên
o Index: Hiển thị danh sách các nhân viên hiện có
o Create: Thêm nhân viên mới
o Edit: Chỉnh sửa thông tin nhân viên hiện có
o Delete: Xóa nhân viên khỏi hệ thống
o Details: Hiển thị thông tin chi tiết của một nhân viên cụ thể
Trang 86 MODELS
Các Models chính trong hệ thống quản lý quán café:
Users Model
o UserID: ID của người dùng (Primary Key)
o UserName: Tên người dùng
o Password: Mật khẩu người dùng
o Email: Địa chỉ email của người dùng
o Role: Vai trò của người dùng (nhân viên, quản lý, khách hàng)
Product Model
Chức năng: Đại diện cho các sản phẩm (đồ uống, đồ ăn) trong thực đơn của quán cafe
o ProductID: ID của sản phẩm (Primary Key)
o ProductName: Tên sản phẩm
o Price: Giá của sản phẩm
o Category: Loại sản phẩm (đồ uống, đồ ăn)
o Stock: Số lượng tồn kho của sản phẩm
Order Model
o OrderID: ID của đơn hàng (Primary Key)
o OrderDate: Ngày đặt hàng
o UserID: ID của người dùng thực hiện đơn hàng (Foreign Key)
o TotalAmount: Tổng số tiền của đơn hàng
OrderDetail Model
Chức năng: Đại diện cho chi tiết của từng sản phẩm trong đơn hàng
o OrderDetailID: ID chi tiết đơn hàng (Primary Key)
o OrderID: ID của đơn hàng (Foreign Key)
o ProductID: ID của sản phẩm (Foreign Key)
o Quantity: Số lượng sản phẩm
o UnitPrice: Đơn giá của sản phẩm
Inventory
Chức năng: Đại diện cho thông tin về kho hàng và nguyên liệu
o InventoryID: ID của kho hàng (Primary Key)
Trang 9o ProductID: ID của sản phẩm (Foreign Key).
o Quantity: Số lượng sản phẩm tồn kho
o LastUpdated: Ngày cập nhật cuối cùng
Trang 107 VIEWS
Các Views chính trong hệ thống quản lý quán café
Home Views:
Index.cshtml: Hiển thị trang chủ với các thông tin cơ bản về quán cafe.
Privacy.cshtml: Hiển thị trang thông tin về chính sách bảo mật của quán cafe.
QLDoUongs Views:
Index.cshtml: Hiển thị danh sách các đồ uống hiện có trong thực đơn.
Create.cshtml: Form để thêm đồ uống mới vào thực đơn.
Edit.cshtml: Form để chỉnh sửa thông tin đồ uống hiện có.
Delete.cshtml: Xác nhận xóa đồ uống khỏi thực đơn.
Details.cshtml: Hiển thị thông tin chi tiết của một đồ uống cụ thể.
QLHoaDons Views:
Index.cshtml: Hiển thị danh sách các hóa đơn hiện có.
Create.cshtml: Form để tạo hóa đơn mới.
Edit.cshtml: Form để chỉnh sửa thông tin hóa đơn hiện có.
Delete.cshtml: Xác nhận xóa hóa đơn khỏi hệ thống.
Details.cshtml: Hiển thị thông tin chi tiết của một hóa đơn cụ thể.
Trang 11QLNhanViens Views:
Index.cshtml: Hiển thị danh sách các nhân viên hiện có.
Create.cshtml: Form để thêm nhân viên mới.
Edit.cshtml: Form để chỉnh sửa thông tin nhân viên hiện có.
Delete.cshtml: Xác nhận xóa nhân viên khỏi hệ thống.
Details.cshtml: Hiển thị thông tin chi tiết của một nhân viên cụ thể.
Trang 128 TRUY CẬP DỮ LIỆU
Giải thích về lớp truy cập dữ liệu QLCoffeeContext
Tổng quan: Lớp QLCoffeeContext là một lớp DbContext trong Entity Framework Core, chịu trách nhiệm quản lý kết nối với cơ sở dữ liệu và theo dõi các thay đổi của các thực thể Lớp này định nghĩa các DbSet tương ứng với các bảng trong cơ sở dữ liệu, giúp thực hiện các thao tác CRUD (Create, Read, Update, Delete) trên các thực thể.
Giải thích chi tiết
Namespace & Using Directives:
namespace QLCoffee.Data: Định nghĩa namespace cho lớp QLCoffeeContext
Các using directives nhập khẩu các namespace cần thiết để sử dụng các tính năng của NET và Entity Framework Core, cũng như các models từ namespace QLCoffee.Models
Khai báo lớp QLCoffeeContext:
Public class QLCoffeeContext : DbContext: Lớp QLCoffeeContext kế thừa từ lớp DbContext của Entity Framework Core Điều này cho phép QLCoffeeContext sử dụng các tính năng của Entity Framework Core để quản lý kết nối cơ sở dữ liệu và theo dõi các thay đổi của thực thể
Constructor:
Public QLCoffeeContext(DbContextOptions<QLCoffeeContext> options) : base(options): Constructor của lớp QLCoffeeContext nhận tham số DbContextOptions<QLCoffeeContext> để cấu hình các tùy chọn kết nối cơ sở dữ liệu Constructor này gọi đến constructor của lớp cơ sở DbContext với các tùy chọn này
DbSet Properties:
public DbSet<QLCoffee.Models.QLNhanVien> QLNhanVien { get; set; } = default!;: Định nghĩa một DbSet cho thực thể QLNhanVien DbSet này tương ứng với một bảng trong cơ sở dữ liệu và cho phép thực hiện các thao tác CRUD trên thực thể QLNhanVien
Trang 13public DbSet<QLCoffee.Models.QLDoUong> QLDoUong { get; set; } = default!;: Định nghĩa một DbSet cho thực thể QLDoUong DbSet này tương ứng với một bảng trong cơ sở dữ liệu và cho phép thực hiện các thao tác CRUD trên thực thể QLDoUong
public DbSet<QLCoffee.Models.QLHoaDon> QLHoaDon { get; set; } = default!;: Định nghĩa một DbSet cho thực thể QLHoaDon DbSet này tương ứng với một bảng trong cơ sở dữ liệu và cho phép thực hiện các thao tác CRUD trên thực thể QLHoaDon
Trang 149 KẾT LUẬN
Những điểm cần cải thiện:
Tối ưu hóa hiệu suất: Cải thiện thời gian phản hồi của ứng dụng
Giao diện người dùng: Cải thiện thiết kế giao diện để thân thiện và trực quan hơn
Tính năng bổ sung: Tích hợp các tính năng mới như báo cáo thống kê chi tiết hơn, quản lý chương trình khuyến mãi và giảm giá
Những điểm không cải thiện:
Cấu trúc cơ sở dữ liệu: Thiết kế cơ sở dữ liệu hiện tại đáp ứng tốt các yêu cầu của hệ thống, đảm bảo tính toàn vẹn và truy xuất hiệu quả
xử lý đơn hàng hoạt động ổn định và đáng tin cậy
giản hóa các thao tác với cơ sở dữ liệu và đảm bảo hiệu suất cao