● Thông tin order món của khách hàng sẽ được gửi tự động xuống bếp, pha chế vàthu ngân● Tình trạng chế biến các món cập nhật liên tục để khách hàng theo dõi ● Khách hàng có thể xem hoá đ
Trang 1BÁO CÁO SƠ BỘ THỰC HÀNH LÀM VIỆC NHÓM
Ý tưởng Ứng dụng order nhanh ngay tại nhà hàng :
Trang 2∙ Xử lý trao đổi tin nhắn của các người dùng. 7
Trang 3III Xây dựng cơ sở dữ liệu 14
Trang 4- Trên mỗi bàn ăn cần có 1 máy tính bảng để khách hàng tự order.
- Mỗi bàn sẽ có 1 tài khoản đăng nhập trước khi để khách hàng order (dễ phânbiệt giữa các bàn VD: BanSo1, BanSo2)
- Trang order gồm có các chức năng:
o Thực đơn (Tên món, giá tiền)
⮚ Thực đơn sẽ phân loại các món ăn (Món khai vị, món mặn, món chay),phân loại nước uống (bia / rượu, sinh tố, nước có ga, nước trái cây,kem)
o Bảng oder (Tên món đã đặt, số lượng, thành tiền, tình trạng món ăn, tổngtiền)
Trang 5⮚ Thêm các chức năng: Gửi bếp & pha chế, sửa & xoá, in hoá đơn, thanhtoán
o Thanh toán (Quét mã Qr, thẻ ATM, visa, tiền mặt)
● Quầy bếp & pha chế
- Thông tin món ăn, nước uống ( Tên món, số lượng, tình trạng món, số bànđặt)
● Quầy thu ngân
- Hoá đơn từng bàn (Tên món, số lượng, thành tiền, tổng tiền)
- Thanh toán, in hoá đơn
3 Ưu điểm:
● Xây dựng tính chuyên nghiệp và đẳng cấp của nhà hàng
● Đơn giản hoá quy trình và rút ngắn thời gian phục vụ
● Tiết kiệm thời gian order món
● Giảm thiểu số lượng nhân sự
● Tiết kiệm quãng đường di chuyển từ nơi order đến thu ngân, đến nhà bếp
● Ngăn chặn tình trạng nhầm lẫn trong quá trình chế biến
● Thanh toán hoá đơn chính xác, tiết kiệm thời gian
4 Quy trình order:
● Khách hàng tự order món ăn trên máy tính bảng
Trang 6● Thông tin order món của khách hàng sẽ được gửi tự động xuống bếp, pha chế vàthu ngân
● Tình trạng chế biến các món cập nhật liên tục để khách hàng theo dõi
● Khách hàng có thể xem hoá đơn và yêu cầu thanh toán bằng nhiều cách trên máytính bảng
II Phân tích chức năng cơ bản.
1 Chức năng chính phía server.
● Quản lý cơ sở dữ liệu.
- Nhận yêu cầu đặt hàng: Server sẽ nhận yêu cầu đặt hàng từ máy tính bảngcủa khách hàng sau khi họ đã chọn món ăn từ menu
- Xác minh đơn đặt hàng: Server sẽ xác minh các thông tin trong đơn đặthàng, bao gồm số bàn, danh sách món ăn và tổng tiền, để đảm bảo tínhchính xác
- Ghi vào cơ sở dữ liệu: Server sẽ ghi thông tin về đơn đặt hàng mới vào cơ
sở dữ liệu, bao gồm số bàn, danh sách món ăn và tổng tiền
- Cập nhật cơ sở dữ liệu: Server sẽ cập nhật cơ sở dữ liệu khi có thay đổi,bao gồm cập nhật thông tin đơn đặt hàng, thêm mới món ăn vào menuhoặc xoá món ăn khỏi menu
● Xử lý yêu cầu đặt hàng.
- Nhận yêu cầu đặt hàng: Server sẽ nhận yêu cầu đặt hàng từ máy tính bảngcủa khách hàng sau khi họ đã chọn món ăn từ menu
Trang 7- Xác minh đơn đặt hàng: Server sẽ xác minh các thông tin trong đơn đặthàng, bao gồm số bàn, danh sách món ăn và tổng tiền, để đảm bảo tínhchính xác.
- Ghi vào cơ sở dữ liệu: Server sẽ ghi thông tin về đơn đặt hàng mới vào cơ
sở dữ liệu, bao gồm số bàn, danh sách món ăn và tổng tiền
- Cập nhật cơ sở dữ liệu: Server sẽ cập nhật cơ sở dữ liệu khi có thay đổi,bao gồm cập nhật thông tin đơn đặt hàng, thêm mới món ăn vào menuhoặc xoá món ăn khỏi menu
● Đồng bộ hóa dữ liệu.
- Đồng bộ hóa đơn đặt hàng: Server sẽ đảm bảo rằng các thay đổi trong đơnđặt hàng (như xác nhận, huỷ bỏ hoặc cập nhật trạng thái) được cập nhật vàđồng bộ hóa với tất cả các máy tính bảng khác mà khách hàng và nhânviên sử dụng
- Đồng bộ hóa menu: Server sẽ đồng bộ hóa các thay đổi trong menu (nhưthêm, sửa, xóa món ăn) với tất cả các máy tính bảng khác mà khách hàng
và nhân viên sử dụng
● Xử lý trao đổi tin nhắn của các người dùng.
2 Chức năng chính phía client.
- Thanh toán: Khách hàng sẽ thực hiện thanh toán sau khi thêm đầy đủ món
ăn vào đơn hàng
- Xem đơn đặt hàng: Khách hàng có thể xem thông tin về đơn đặt hàng hiệntại, có thể hủy trong thời gian cho phép
Trang 8- Chat: Khách hàng có thể trao đổi trực tiếp với nhà hàng thông qua mục tinnhắn.
- Đánh giá nhà hàng/Khiếu nại: Khách hàng có thể đánh giá mức độ trảinghiệm dịch vụ của nhà hàng
● Quản lý/Thu ngân.
- Quản lý menu: Quản lý có thể thêm, sửa, xóa các món ăn và đồ uốngtrong menu
- Quản lý đơn đặt hàng: Quản lý có thể xem danh sách đơn đặt hàng từkhách hàng, thông tin chi tiết về mỗi đơn và thực hiện các hành động nhưxác nhận, huỷ bỏ hoặc chỉnh sửa đơn hàng
- Quản lý sản phẩm, tài khoản, bàn
- Thanh toán: Quản lý có thể chọn phương thức thanh toán và hoàn thànhthanh toán cho đơn đặt hàng của khách hàng
- Xem danh sách đơn đặt hàng: Nhân viên theo dõi tình trạng các đơn hàng
- Chat: Nhân viên nhận lệnh và trao đổi với Quản lý
Trang 93 Kịch bản thực hiện một số chức năng cơ bản.
● Đăng nhập hệ thống:
- Chức năng: Đăng nhập.
- Người tác động: Quản lý, khách hàng, thu ngân, đầu bếp, nhân viên.
- Tiền điều kiện: Người dùng phải có tài khoản trước đó.
- Luồng sự kiện chính:
Hành động của người dùng Phản hồi hệ thống
1 Truy cập vào trang chủ
2 Hiển thị trang chủ (bao gồmyêu cầu đăng nhập, đăng ký)
3 Truy cập vào trang đăng nhập
4 Hiển thị trang đăng nhập
5 Nhập thông tin đăng nhập
6 Nhấn nút đăng nhập
7 Tra cứu trong CSDL xemngười dùng là khách hànghay quản lý, thu ngân, đầubếp, nhân viên
8 Hiển thị giao diện tương ứng(quản lý, khách hàng, thungân, đầu bếp, nhân viên)
- Luồng sự kiện rẽ nhánh (ngoại lệ): Nếu thông tin đăng nhập không chính
xác, người dùng sẽ không được đăng nhập vào hệ thống (ở bước 7) và hiểnthị thông báo lỗi
Trang 10● Tìm kiếm món ăn
- Chức năng: Tìm kiếm món ăn
- Người tác động: Khách hàng.
- Luồng sự kiện chính:
Hành động của người dùng Phản hồi của hệ thống
1 Trên màn hình chính, click vào
mục Menu
2 Hiển thị các menu nhỏ hơn baogồm: Khai vị, món chay, mónmặn, nước uống, tráng miệng,món khác
3 Click vào từng menu nhỏ hơn
để xem danh sách các món của
menu đó
4 Truy vấn từ cơ sở dữ liệu vàhiển thị lên màn hình nhữngmón ăn thuộc menu nhỏ màkhách hàng chọn
● Đặt hàng tới hệ thống.
- Chức năng: Đặt hàng.
Trang 11- Người tác động: Khách hàng.
- Luồng sự kiện chính:
- Luồng sự kiện rẽ nhánh (ngoại lệ):
Hành động của người dùng Phản hồi của hệ thống
ở view hoá đơn
3 Click vào nút “Tạo đơn” để gửi
đơn hàng cho quầy bếp
4 Tạo 1 hóa đơn trong cơ sở dữliệu
5 Hiển thị đơn hàng mới trongmàn hình của Quầy bếp
6 Hiển thị thông báo đặt hàngthành công trên màn hình kháchhàng
7 Hiển thị đơn hàng mới trên mànhình Quản lý/Thu ngân
8 Sau khi click đặt món thì resetlại menu
Trang 12▪Sau khi đơn hàng hiển thị trên màn hình Quản lý, quản lý có thể kiểmtra lại tình trạng món có thể không đủ hoặc không có sẵn, có thể thôngbáo với khách hàng để đổi/hủy món và cập nhật lại đơn hàng.
▪Sau khi đơn hàng tới nhà bếp, nếu trong bếp không đủ đồ dùng để làmmón nào đó có thể báo tới quản lý để xử lý, quản lý sẽ trao đổi vớikhách hàng để đổi/hủy món và cập nhật lại đơn hàng
● Thanh toán sau khi ăn xong.
- Chức năng: thanh toán.
3 Click vào nút “Thanh toán” để
thanh toán tất cả các hoá đơn
4 Hiển thị nút “xác nhận thanhtoán” và “báo lỗi” (để phản hồi
về hoá đơn)
5 Click “xác nhận thanh toán”
6 Hiển thị lên màn hình cácphương thức thanh toán: Dùng
Trang 13tiền mặt hoặc chuyển khoảnqua mã QR
7 Khách hàng chọn Quét mã QR
để thanh toán
8 Hiển thị mã QR
9 Quét mã QR để chuyển khoản
10.Sau khi thu ngân xác nhận thìxoá đơn hàng khỏi bảng “Hoáđơn đang phục vụ” trong csdl.11.Hiển thị thông báo thành công
và reset lại bàn
- Luồng sự kiện rẽ nhánh (ngoại lệ):
▪Nếu khách hàng click nút “báo lỗi” thì hệ thống gửi thông báo đếnquản lý để xử lý trực tiếp
▪Nếu khách hàng click nút “Dùng tiền mặt” thì gửi thông báo đến nhânviên để xử lý trực tiếp
▪Nếu khách hàng chỉ muốn thanh toán cho một số hoá đơn nhất định, thìtrong danh sách hoá đơn, click vào các ô vuông bên cạnh hoá đơn đểđánh dấu hoá đơn đó, sau đó thanh toán như bình thường Sau khithanh toán xong bàn sẽ không reset và quay lại menu Đơn hàng
▪Nếu khách hàng click vào hoá đơn nào đó thì hiển thị thông tin chi tiếthoá đơn
● Quản lý sản phẩm:
Trang 14- Chức năng: quản lí sản phẩm (thêm, xoá).
3.Click vào hàng chứa món ăn cần
xoá và click nút “Xoá” để xoá món
ăn khỏi thực đơn hoặc nhập thông
tin của món ăn mới vào ô trống và
click nút “Thêm” để thêm món ăn
4.Hệ thống cập nhật thông tinMenu món ăn
III Xây dựng cơ sở dữ liệu
1 Xác định các thực thể:
a Users: Lưu trữ thông tin tài khoản, gồm có các thuộc tính:
● id_user: là khoá chính, lưu id của tài khoản.
●tenTaiKhoan: lưu tên đăng nhập của tài khoản.
● matKhau: lưu mật khẩu đăng nhập của tài khoản.
Trang 15●email: lưu email của tài khoản.
●loaiTaiKhoan: lưu loại tài khoản (thu ngân, quản lý, nhân viên,
…)
b. Orders: lưu thông tin của đơn đặt hàng
●id_order: là khoá chính lưu id của đơn đặt hàng
● id_user: là khoá phụ, kết nối đến bảng Users, lưu trữ id của tàikhoản thực hiện đặt hàng
●soTien: tổng tiền hóa đơn
●chuThich: chú thích về món ăn với bếp làm theo yêu cầu
●id_status: lưu trữ trạng thái của đơn đặt hàng
●thoiGianTao: lưu thời gian tạo của đơn đặt hàng
c Kitchen: lưu thông tin đơn đã chuyển đến bếp
●id_kitchen: là khoá chính, lưu id của đơn đã chuyển đến bếp
●id_order: là khoá phụ, kết nối với bảng Orders, lưu id của đơn đặt
hàng
●thoiGianTao: lưu thời gian bắt đầu làm của món ăn
● thoiGianCapNhat: lưu thời gian món ăn hoàn thành
d. Menu: lưu thông tin các món ăn trong nhà hàng/ quán ăn
Trang 16● id_menu: là khoá chính, lưu id của món ăn có trong nhàhàng/quán ăn.
●id_typeFood: là khóa phụ, lưu id của loại món ăn kết nối đến bảngTypeFood
● tenMon: lưu tên món ăn.
●moTa: lưu thông tin mô tả chi tiết món ăn
●tinhTrangMon: lưu tình trạng món ăn (hết hàng, còn …)
● gia: lưu giá tiền của món ăn.
e. OrderItem: lưu thông tin của từng món ăn/nước uống trong đơn đặthàng
●id_orderItem: là khoá chính, lưu id của món ăn trong đơn đặthàng
●id_order: là khoá phụ, kết nối với bảng Orders, lưu id của đơn đặthàng
● id_menu: là khoá phụ, kết nối với bảng Menu, lưu id của món ăntrong menu
● soLuong: lưu số lượng của món ăn trong đơn đặt hàng
f. PayMent: lưu thông tin về hoá đơn thanh toán của đơn đặt hàng
● id_payment: là khoá chính, lưu id của hoá đơn thanh toán
Trang 17● id_order: là khoá phụ, kết nối với bản Orders, lưu id của đơn đặthàng
●id_methodPayment: lưu hình thức thanh toán của khách hàng
(chuyển khoản/tiền mặt)
● thoiGianTao: lưu thời gian tạo hoá đơn thanh toán
g Statu: lưu các trạng thái của hóa đơn
● id_status: là khóa chính, lưu id của trạng thái
● trangThai: tên trạng thái
h MethodPayment: lưu các phương thức thanh toán
● id_methodPayment: là khóa chính, lưu id của phương thức thanh
toán
●tenPhuongThuc: tên phương thức thanh toán
k TypeFood: lưu các loại topic món ăn
●id_typeFood: là khóa chính, lưu id của loại món ăn
●tenLoaiMonAn: lưu tên topic món ăn
2 Sơ đồ quan hệ:
Trang 183 Code tạo cơ sở dữ liệu:
loaiTaiKhoan varchar(16) not null)
go
create table Menu
(
Trang 19id_menu int primary key identity(1,1),id_typeFood int not null,
hinhAnh image null,
tenMon nvarchar(100) not null,
moTa nvarchar(255) null,
tinhTrangMon int not null,
gia int not null
id_status int not null,
soTien int not null,
chuThich nvarchar(255) null,
thoiGianTao datetime not null
id_menu int not null,
soLuong int not null
id_methodPayment int not null,
thoiGianTao datetime not null
thoiGianTao datetime not null,
thoiGianCapNhat datetime not null)
go
create table Statu
Trang 20id_status int primary key identity(1,1),
trangThai nvarchar(32) not null
ALTER TABLE Orders
ADD CONSTRAINT fk_idUser
FOREIGN KEY (id_user)
REFERENCES Users(id_user)
ON DELETE CASCADE
ON UPDATE CASCADE;
go
ALTER TABLE Payment
ADD CONSTRAINT fk_methodPayment
FOREIGN KEY (id_methodPayment)
REFERENCES MethodPayment(id_methodPayment)
ON DELETE CASCADE
ON UPDATE CASCADE;
go
ALTER TABLE OrderItem
ADD CONSTRAINT fk_idOrder_OrderItemFOREIGN KEY (id_order)
REFERENCES Orders(id_order)
ON DELETE CASCADE
ON UPDATE CASCADE;
go
ALTER TABLE OrderItem
ADD CONSTRAINT fk_idMenu
FOREIGN KEY (id_menu)
REFERENCES Menu(id_menu)
ON DELETE CASCADE
ON UPDATE CASCADE;
Trang 21ALTER TABLE Payment
ADD CONSTRAINT fk_idOrderPayment
FOREIGN KEY (id_order)
REFERENCES Orders(id_order)
ON DELETE CASCADE
ON UPDATE CASCADE;
go
ALTER TABLE Kitchen
ADD CONSTRAINT fk_idOrderKitchen
FOREIGN KEY (id_order)
REFERENCES Orders(id_order)
ON DELETE CASCADE
ON UPDATE CASCADE;
go
ALTER TABLE Orders
ADD CONSTRAINT fk_idStatus
FOREIGN KEY (id_status)
REFERENCES Statu(id_status)
ON DELETE CASCADE
ON UPDATE CASCADE;
go
ALTER TABLE Menu
ADD CONSTRAINT fk_idTypeFood
FOREIGN KEY (id_typeFood)
('ban2', 'mkban2', 'ban2@gmail.com', 'KH'),
('ban3', 'mkban3', 'ban3@gmail.com', 'KH'),
('ban4', 'mkban4', 'ban4@gmail.com', 'KH'),
('ban5', 'mkban5', 'ban5@gmail.com', 'KH'),
('ban6', 'mkban6', 'ban6@gmail.com', 'KH'),
('ban7', 'mkban7', 'ban7@gmail.com', 'KH'),
('ban8', 'mkban8', 'ban8@gmail.com', 'KH'),
Trang 22('ban9', 'mkban9', 'ban9@gmail.com', 'KH'),
('ban10', 'mkban10', 'ban10@gmail.com', 'KH'),
(3, N'Sụn gà chiên mắm', N'Sụn gà lột vỏ chiên với măm cá ngừ phú quốc', 1,150000),
(6, N'Thanh long Hái quả', N'Thanh long nấu với quả thập cẩm', 1, 100000),(2, N'Cơm chiên thầy chùa', N'Cơm mua chiên xong ở ngoài siêu thị đem vô hấp rồi bán', 0, 55000),
(3, N'Mì thanh long', N'Lần đầu tiên', 1, 25000),
(4, N'Nước ép dưa hấu', N'Dưa hấu hư đem hấp rồi ép ra uống', 1, 20000),(1, N'Đậu hủ luộc chấm xì dầu', N'Đậu hủ mua 5k bán 50k', 1, 50000),(2, N'Tôm chiên chay', N'Tôm chiên với dầu cá mè', 0, 110000),
(4, N'Nước ép cà rốt', N'Thỏ nuôi gặm cà rốt ra nước', 1, 30000),
(6, N'Hành phi cháy tỏi', N'Hành tím chiên giòn xào với tỏi phi', 1, 33000);go
insert into MethodPayment (tenPhuongThuc) values
Trang 23id_danhGia int primary key identity(1,1),
id_user int not null,
noiDung nvarchar(255) not null,
thoiGian datetime not null
)
Trang 24IV Thiết kế giao diện ứng dụng
1 Giao diện chung:
- Đăng nhập
2 Giao diện chính cho khách hàng
● Màn hình chính
Trang 25● Menu
● Xem đơn hàng
Trang 26● Chat
● Đánh giá
Trang 27Điền đủ và đúng thông tin đăng nhập
Click vào “Khai vị”
Hiển thị danh sách các món khai
vị có trong nhà hàng
Trang 28Hiển thị danh sách các món mặn
có trong nhà hàngClick vào “Nước
uống”
Hiển thị danh sách các loại nước uống có trong nhà hàngClick vào “Tráng
miệng”
Hiển thị danh sách các món trángmiệng có trong nhà hàngClick vào “Món
khác”
Hiển thị danh sách các món đặc biệt khác
3 Đặt
món
Thao tác chuẩn:
●Trong mục menu, click hàng chứa món ăn và click
“Thêm” để thêm món vào view hoáđơn
●Tăng số lượng của 1 món chỉ cần thêm lại 1 lần nữa, bên view hóa
●Hiển thị thông báo “Tạo đơn thành công” và đơn được gửi đến quản lý, nhânviên, bếp
●Reset lại view hoá đơn
Trang 29Click nút tạo đơn
khi chưa thêm món