Admin Mô tả: Người quản trị hệ thống, có toàn quyền quản lý dữ liệu và giám sát hoạt động của người dùng.. o Xem báo cáo thống kê hệ thống: Tổng số người dùng, thực đơn, món ăn, ngu
Trang 1BÁO CÁO GIỮA KỲ HỌC PHẦN : ĐỒ ÁN NHÓM : 6
GVHD: Ths.Hoàng Văn Hiếu
Trang 2THÀNH VIÊN NHÓM
Trang 3I.Phân tích yêu cầu đồ án 1
1 Phân tích các đối tượng sử dụng phần mềm (Phân tích rõ từng đối tượng) 1
2 Phân tích các chức năng có trong hệ thống (phân tích chi tiết từng chức năng) 1
2.1 Chức năng dành cho Admin 1
2.2 Chức năng dành cho User 2
II Phân tích và thiết kế cơ sở dữ liệu 4
1 Xác định hệ quản trị cơ sở dữ liệu (DBMS) 4
1.1 Ưu điểm của MySQL: 4
1.2 Lựa chọn mô hình cơ sở dữ liệu 4
2 Phân tích và thiết kế cơ sở dữ liệu 4
2.1 Phân tích cơ sở dữ liệu 4
2.2 Thiết kế cơ sở dữ liệu 5
2.3 Mô tả quan hệ giữa các bảng 7
III Giao diện ứng dụng 8
1.Giao diện User 8
2.Giao diện Admin 11
Trang 4I.Phân tích yêu cầu đồ án
1 Phân tích các đối tượng sử dụng phần mềm (Phân tích rõ từng đối tượng).
Trong hệ thống Becooker, các đối tượng sử dụng chính bao gồm Admin User, , và
System (tự động gợi ý) Mỗi đối tượng có vai trò và quyền truy cập khác nhau: 1.1 Admin
Mô tả: Người quản trị hệ thống, có toàn quyền quản lý dữ liệu và giám sát
hoạt động của người dùng
o Quản lý người dùng:
Thêm, sửa, xóa tài khoản
Phân quyền người dùng (User/Admin)
o Quản lý thực đơn (Menus):
Xem, thêm, chỉnh sửa, xóa thực đơn
Bật/tắt trạng thái hiển thị thực đơn
o Quản lý món ăn (Dishes):
Xem, thêm, chỉnh sửa, xóa món ăn
Bật/tắt trạng thái hiển thị món ăn
o Quản lý nguyên liệu (Ingredients):
Xem, thêm, chỉnh sửa, xóa nguyên liệu
Bật/tắt trạng thái hiển thị nguyên liệu
o Xem báo cáo thống kê hệ thống:
Tổng số người dùng, thực đơn, món ăn, nguyên liệu
1.2 User
Mô tả: Người dùng hệ thống, sử dụng để quản lý thực đơn cá nhân và lên kế
hoạch ăn uống
o Quản lý tài khoản cá nhân:
Đăng ký, đăng nhập, đổi mật khẩu
Chỉnh sửa thông tin cá nhân
o Quản lý thực đơn cá nhân:
Tạo, chỉnh sửa, xóa thực đơn
Xem chi tiết thực đơn
1
Trang 5Quản lý món ăn:
Thêm món ăn mới
Viết công thức chế biến
Lưu món ăn yêu thích
Tải lên hình ảnh minh họa món ăn
Xuất công thức ra file PDF
o Lên kế hoạch ăn uống:
Tạo kế hoạch bữa ăn theo ngày/tuần
Xuất danh sách mua sắm nguyên liệu theo từng kế hoạch
Theo dõi dinh dưỡng (calo, protein, carb, fat)
o Tìm kiếm thông minh:
Tìm kiếm theo tên món ăn, nguyên liệu
Gợi ý món ăn theo chế độ ăn uống
1.3 Hệ thống gợi ý (System Suggest)
Mô tả: Hệ thống tự động gợi ý món ăn dựa trên dữ liệu cung cấp bởi người
dùng
o Gợi ý món ăn dựa trên nguyên liệu có sẵn trong tủ lạnh
o Gợi ý món ăn theo chế độ ăn uống (giảm cân, tăng cơ, ăn chay, )
2 Phân tích các chức năng có trong hệ thống (phân tích chi tiết từng chức năng)
2.1 Chức năng dành cho Admin
1 Quản lý người dùng:
o Mô tả: Cho phép admin xem danh sách người dùng, thêm mới, chỉnh sửa hoặc xóa người dùng.
o Chi tiết:
Thêm tài khoản mới (Username, Email, Role).
Chỉnh sửa thông tin người dùng.
Xóa tài khoản khỏi hệ thống.
Phân quyền (User hoặc Admin).
2 Quản lý thực đơn (Menus):
o Mô tả: Cho phép admin xem, thêm, chỉnh sửa hoặc xóa thực đơn.
o Chi tiết:
2
Trang 6 Xem danh sách toàn bộ thực đơn trong hệ thống.
Thêm hoặc chỉnh sửa tên, mô tả thực đơn.
Bật/tắt trạng thái hiển thị thực đơn (Ẩn/Hiện).
Xóa thực đơn không cần thiết.
3 Quản lý món ăn (Dishes):
o Mô tả: Quản lý thông tin món ăn trong hệ thống.
o Chi tiết:
Xem danh sách món ăn.
Thêm món ăn mới vào hệ thống.
Chỉnh sửa hoặc xóa món ăn.
Bật/tắt trạng thái hiển thị món ăn.
4 Quản lý nguyên liệu (Ingredients):
o Mô tả: Quản lý danh sách nguyên liệu trong hệ thống.
o Chi tiết:
Xem danh sách nguyên liệu.
Thêm nguyên liệu mới.
Chỉnh sửa thông tin nguyên liệu (tên, mô tả, calo).
Bật/tắt trạng thái hiển thị nguyên liệu.
5 Báo cáo thống kê hệ thống:
o Mô tả: Cung cấp số liệu về hệ thống.
o Chi tiết:
Tổng số người dùng.
Tổng số thực đơn.
Tổng số món ăn.
Tổng số nguyên liệu.
2.2 Chức năng dành cho User
1 Quản lý tài khoản cá nhân:
o Mô tả: Cho phép người dùng đăng ký, đăng nhập, đổi mật khẩu và chỉnh sửa thông tin.
o Chi tiết:
Đăng ký tài khoản mới.
Đăng nhập/đăng xuất.
Đổi mật khẩu.
3
Trang 7 Chỉnh sửa thông tin cá nhân.
2 Quản lý thực đơn cá nhân:
o Mô tả: Người dùng có thể tự tạo và quản lý thực đơn riêng.
o Chi tiết:
Tạo thực đơn mới (Tên, Mô tả).
Thêm món ăn vào thực đơn.
Chỉnh sửa/xóa thực đơn.
Xem chi tiết thực đơn.
3 Quản lý món ăn:
o Mô tả: Người dùng có thể tạo và lưu món ăn của mình.
o Chi tiết:
Tạo món ăn mới (Tên, Nguyên liệu, Hướng dẫn chế biến).
Lưu món ăn yêu thích.
Viết công thức nấu ăn chi tiết.
Xuất công thức dưới dạng file PDF.
4 Lên kế hoạch ăn uống:
o Mô tả: Giúp người dùng lên kế hoạch bữa ăn theo ngày hoặc tuần.
o Chi tiết:
Tạo kế hoạch ăn uống.
Chọn món ăn theo ngày hoặc tuần.
Xuất danh sách mua sắm nguyên liệu từ kế hoạch.
Theo dõi dinh dưỡng (calo, protein, carb, fat).
5 Tìm kiếm thông minh:
o Mô tả: Cho phép tìm kiếm món ăn và thực đơn.
o Chi tiết:
Tìm kiếm theo tên món ăn, nguyên liệu hoặc loại bữa ăn.
Lọc kết quả theo calo, nguyên liệu, thời gian nấu.
6 Hệ thống gợi ý (System Suggest):
o Mô tả: Gợi ý món ăn cho người dùng.
o Chi tiết:
Gợi ý dựa trên nguyên liệu sẵn có.
Gợi ý theo chế độ ăn uống(Giảm cân, tăng cơ, ăn chay,…).
4
Trang 8II Phân tích và thiết kế cơ sở dữ liệu
1 Xác định hệ quản trị cơ sở dữ liệu (DBMS)
Hệ thống Becooker sử dụng MySQL làm hệ quản trị cơ sở dữ liệu Dưới đây là các lý do lựa chọn:
1.1 Ưu điểm của MySQL:
Hiệu suất cao: MySQL được tối ưu hóa cho các ứng dụng cần xử lý nhiều giao dịch và đọc/ghi dữ liệu nhanh.
Tính mở rộng: MySQL có thể hỗ trợ từ các ứng dụng nhỏ đến hệ thống lớn với hàng triệu bản ghi.
Tính tương thích: Tích hợp tốt với các công nghệ phổ biến như Spring Boot, Hibernate, và React.js.
Đa nền tảng: MySQL chạy được trên nhiều hệ điều hành như Windows, Linux, macOS.
Hỗ trợ cộng đồng lớn: MySQL có tài liệu phong phú và cộng đồng phát triển mạnh.
1.2 Lựa chọn mô hình cơ sở dữ liệu
Kiểu cơ sở dữ liệu: Quan hệ (Relational Database).
Ngôn ngữ truy vấn: SQL (Structured Query Language).
Mô hình quan hệ: Tất cả các thực thể trong hệ thống được biểu diễn dưới dạng bảng và có mối quan hệ rõ ràng thông qua khóa chính và khóa ngoại.
2 Phân tích và thiết kế cơ sở dữ liệu
2.1 Phân tích cơ sở dữ liệu
Hệ thống Becooker quản lý nhiều thực thể như: users, dishes, menus, ingredients, plans, và các mối quan hệ giữa chúng Dưới đây là các yêu cầu chính:
Người dùng (users):
o Lưu trữ thông tin người dùng, vai trò (User/Admin).
o Mỗi người dùng có thể tạo nhiều thực đơn và kế hoạch ăn uống.
Thực đơn (menus):
o Lưu trữ thông tin về tên, mô tả thực đơn.
o Mỗi thực đơn thuộc về một người dùng.
Món ăn (dishes):
o Lưu trữ thông tin về tên món ăn, nguyên liệu, công thức, lượng calo.
o Món ăn có thể thuộc nhiều thực đơn khác nhau.
Nguyên liệu (ingredients):
o Lưu trữ thông tin về nguyên liệu (tên, calo).
5
Trang 9Mỗi món ăn có thể bao gồm nhiều nguyên liệu.
Kế hoạch ăn uống (plans):
o Lưu trữ thông tin về kế hoạch ăn uống (theo ngày hoặc tuần).
o Mỗi kế hoạch gắn liền với người dùng và món ăn đã chọn.
2.2 Thiết kế cơ sở dữ liệu
Dưới đây là mô hình thiết kế cơ sở dữ liệu (ERD) với các bảng chính:
1 Bảng users
o Lưu thông tin người dùng.
o Các cột:
id (Primary Key)
username (Unique)
email (Unique)
password
role (ENUM: USER, ADMIN)
created_at, updated_at
2 Bảng menus
o Lưu trữ thực đơn của người dùng.
o Các cột:
id (Primary Key)
name
description
user_id (Foreign Key, tham chiếu users.id)
created_at, updated_at
3 Bảng dishes
o Lưu trữ thông tin món ăn.
o Các cột:
id (Primary Key)
name
ingredients (TEXT: chứa danh sách nguyên liệu)
instructions (TEXT: công thức nấu ăn)
image_url (Link hình ảnh minh họa)
calories, carb, fat, protein (Chỉ số dinh dưỡng)
temperature (ENUM: HOT, COLD, WARM)
6
Trang 10 difficulty_level (ENUM: EASY, MEDIUM, HARD)
prep_time (Thời gian nấu)
taste_profile (ENUM: SWEET, SPICY, SOUR, SALTY)
popularity_score (Điểm đánh giá)
created_by (Foreign Key, tham chiếu users.id)
created_at, updated_at
4 Bảng ingredients
o Lưu trữ thông tin nguyên liệu.
o Các cột:
id (Primary Key)
name
description
calories
created_at, updated_at
5 Bảng plans
o Lưu trữ kế hoạch ăn uống của người dùng.
o Các cột:
id (Primary Key)
user_id (Foreign Key, tham chiếu users.id)
plan_type (ENUM: DAILY, WEEKLY)
menu_id (Foreign Key, tham chiếu menus.id)
created_at, updated_at
6 Bảng shopping_lists
o Lưu danh sách mua sắm dựa trên kế hoạch.
o Các cột:
id (Primary Key)
plan_id (Foreign Key, tham chiếu plans.id)
items (TEXT: chứa danh sách nguyên liệu)
created_at
7 Bảng favorite_dishes
o Lưu trữ món ăn yêu thích của người dùng.
o Các cột:
id (Primary Key)
7
Trang 11 user_id (Foreign Key, tham chiếu users.id)
dish_id (Foreign Key, tham chiếu dishes.id)
created_at
2.3 Mô tả quan hệ giữa các bảng
1-N (One-to-Many):
o Một người dùng (users) có thể tạo nhiều thực đơn (menus).
o Một thực đơn (menus) chứa nhiều món ăn (dishes).
N-M (Many-to-Many):
o Một món ăn (dishes) có thể được sử dụng trong nhiều thực đơn (menus).
o Một món ăn (dishes) có thể thuộc nhiều kế hoạch (plans), và ngược lại.
1-1 (One-to-One):
o Một kế hoạch (plans) có một danh sách mua sắm (shopping_lists).
8
Trang 12III Giao diện ứng dụng
1.Giao diện User
Figure 1.Homepage User
Figure 2.Profile User
9
Trang 13Figure 4.Menu User
10
Trang 14Figure 6.Plans User
11
Trang 152.Giao diện Admin
Figure 7.Homepage Admin
Figure 8.User Management Admin
12
Trang 16Figure 10.System Report Admin
13