CHƯƠNG 1: GIỚI THIỆU1.1 Tổng quan đề tài Quản lý thông tin giao thức ăn nhanh đang trở thành một lĩnh vực ngày càng quan trọng nhờ vào sự gia tăng của nhu cầu sử dụng dịch vụ giao h
GIỚI THIỆU
Tổng quan đề tài
Quản lý thông tin giao thức ăn nhanh đang ngày càng trở nên quan trọng do nhu cầu dịch vụ giao hàng tăng cao và sự phát triển mạnh mẽ của thương mại điện tử Trong bối cảnh cạnh tranh gay gắt trong ngành thực phẩm, các doanh nghiệp cần tối ưu hóa quy trình vận hành, nâng cao chất lượng phục vụ và đáp ứng nhanh chóng nhu cầu khách hàng Để thành công, họ cần tập trung vào việc cá nhân hóa trải nghiệm khách hàng và cung cấp thông tin đầy đủ, chính xác về thực đơn, giá cả và thời gian giao hàng.
Lý do chọn đề tài
Đề tài "Quản lý thông tin giao thức ăn nhanh" được lựa chọn vì sự phát triển nhanh chóng của lĩnh vực này, phản ánh xu hướng tiêu dùng hiện đại và lối sống bận rộn của người tiêu dùng Thị trường giao thức ăn nhanh không chỉ mang lại lợi nhuận cao mà còn tạo điều kiện cho việc ứng dụng công nghệ thông tin trong quản lý và phân phối sản phẩm Nghiên cứu trong lĩnh vực này giúp hiểu rõ nhu cầu khách hàng, từ đó phát triển chiến lược tiếp thị hiệu quả và xây dựng thương hiệu mạnh mẽ.
xây dựng database
Mô hình quản lý thông tin giao thức ăn nhanh bao gồm các đối tượng chính như Khách hàng, Đơn hàng và Sản phẩm Mỗi đối tượng này có các thuộc tính cần thiết để lưu trữ thông tin cơ bản, phục vụ cho việc quản lý hiệu quả và phân tích dữ liệu Thiết kế cấu trúc dữ liệu hợp lý giúp tối ưu hóa quy trình giao hàng và nâng cao trải nghiệm khách hàng.
- Diễn giải chi tiết các đối tượng trong mô hình, nêu ví dụ minh họa liên quan đến đề tài.
- Tạo cơ sở dữ liệu và các đối tượng trong CSDL Nhập dữ liệu vào CSDL.
_id: ObjectId('670ab59a46a0439a802453ef'), ten_danhmuc: 'Thức ăn nhanh', mota_danhmuc: 'Các loại thức ăn nhanh như bánh mì, sandwich, burger '
_id: ObjectId('670ab59a46a0439a802453f0'), ten_danhmuc: 'Thức uống', mota_danhmuc: 'Các loại nước uống như trà sữa, nước ngọt, nước trái cây ' }
_id: ObjectId('670ab59a46a0439a802453fd'), id_khachhang: ObjectId('670ab59a46a0439a802453ea'), chitiethoadon: [
{ id_sanpham: ObjectId('670ab59a46a0439a802453fb'), soluong_mua: 2, giasanpham: 100000
{ id_sanpham: ObjectId('670ab59a46a0439a802453fc'), soluong_mua: 3, giasanpham: 35000
], id_phi_vanchuyen: ObjectId('670ab59a46a0439a802453f9'), tongtien: 305000, ngaymua: 2024-10-12T17:44:58.799Z, id_thanhtoan: ObjectId('670ab59a46a0439a802453f4'), id_khuyenmai: ObjectId('670ab59a46a0439a802453f1')
_id: ObjectId('670ab59a46a0439a802453fd'), id_khachhang: ObjectId('670ab59a46a0439a802453ea'), chitiethoadon: [
{ id_sanpham: ObjectId('670ab59a46a0439a802453fb'), soluong_mua: 2, giasanpham: 100000
{ id_sanpham: ObjectId('670ab59a46a0439a802453fc'), soluong_mua: 3, giasanpham: 35000
], id_phi_vanchuyen: ObjectId('670ab59a46a0439a802453f9'), tongtien: 305000, ngaymua: 2024-10-12T17:44:58.799Z, id_thanhtoan: ObjectId('670ab59a46a0439a802453f4'), id_khuyenmai: ObjectId('670ab59a46a0439a802453f1')
_id: ObjectId('670ab59a46a0439a802453ea'), ten_khachhang: 'Đinh Văn Tài', sdt_khachhang: '0321456789', diachi_khachhang: 'TP Hồ Chí Minh', email: 'dinhvantai@example.com', ngay_sinh: 1970-01-01T00:00:00.000Z, gioi_tinh: 'Nam'
_id: ObjectId('670ab59a46a0439a802453eb'), ten_khachhang: 'Hồ Thiên Tỷ', sdt_khachhang: '0987654321', diachi_khachhang: 'Hà Nội', email: 'thienty@example.com', ngay_sinh: 2003-04-27T00:00:00.000Z, gioi_tinh: 'Nam'
_id: ObjectId('670ab59a46a0439a802453ec'), ten_khachhang: 'Đặng Anh Tú', sdt_khachhang: '0945998901', diachi_khachhang: 'Đà Nẵng', email: 'levanc@example.com', ngay_sinh: 2001-03-20T00:00:00.000Z, gioi_tinh: 'Nam'
_id: ObjectId('670ab59a46a0439a802453ed'), ten_khachhang: 'Trần Trung Đạt', sdt_khachhang: '0345678901', diachi_khachhang: 'TP Hồ Chí Minh', email: 'trungdat@example.com', ngay_sinh: 2002-03-10T00:00:00.000Z, gioi_tinh: 'Nam'
_id: ObjectId('670ab59a46a0439a802453ee'), ten_khachhang: 'Vũ Thị Phương Anh', sdt_khachhang: '0123456789', diachi_khachhang: 'Hà Nội', email: 'phuongAnh@example.com', ngay_sinh: 2005-03-20T00:00:00.000Z, gioi_tinh: 'Nữ'
_id: ObjectId('670ab59a46a0439a802453f1'), ma_khuyenmai: 'KM001', loai_khuyenmai: 'Giảm giá', muc_khuyenmai: '20%'
_id: ObjectId('670ab59a46a0439a802453f2'), ma_khuyenmai: 'KM002', loai_khuyenmai: 'Miễn phí vận chuyển', muc_khuyenmai: 'Miễn phí'
_id: ObjectId('670ab59a46a0439a802453f2'), ma_khuyenmai: 'KM002', loai_khuyenmai: 'Miễn phí vận chuyển', muc_khuyenmai: 'Miễn phí'
_id: ObjectId('670ab59a46a0439a802453f8'), ten_tinh: 'Hà Nội', ten_quan: 'Hoàn Kiếm', ten_phuong: 'Phường Tràng Tiền', phivanchuyen: 20000
_id: ObjectId('670ab59a46a0439a802453f9'), ten_tinh: 'TP Hồ Chí Minh', ten_quan: 'Bình Tân', ten_phuong: 'Bình Hưng Hòa', phivanchuyen: 25000
_id: ObjectId('670ab59a46a0439a802453f9'), ten_tinh: 'TP Hồ Chí Minh', ten_quan: 'Bình Tân', ten_phuong: 'Bình Hưng Hòa', phivanchuyen: 25000
_id: ObjectId('670ab59a46a0439a802453fb'), ten_sanpham: 'Gà rán', gia_sanpham: 100000, mota_sanpham: 'Gà rán nguyên con', id_danhmuc: ObjectId('670ab59a46a0439a802453ef')
_id: ObjectId('670ab59a46a0439a802453fb'), ten_sanpham: 'Gà rán', gia_sanpham: 100000, mota_sanpham: 'Gà rán nguyên con', id_danhmuc: ObjectId('670ab59a46a0439a802453ef')
_id: ObjectId('670ab59a46a0439a802453f4'), hinhthuc_thanhtoan: 'Thẻ tín dụng', trangthai_thanhtoan: 'Đã thanh toán'
_id: ObjectId('670ab59a46a0439a802453f5'), hinhthuc_thanhtoan: 'Thẻ tín dụng', trangthai_thanhtoan: 'Chưa thanh toán'
_id: ObjectId('670ab59a46a0439a802453f6'), hinhthuc_thanhtoan: 'Tiền mặt', trangthai_thanhtoan: 'Đã thanh toán'
_id: ObjectId('670ab59a46a0439a802453f6'), hinhthuc_thanhtoan: 'Tiền mặt', trangthai_thanhtoan: 'Đã thanh toán'
1 Tìm tất cả khách hàng đã mua sản phẩm "Gà rán" và có tổng hóa đơn lớn hơn 200,000 VND db.hoadon.aggregate([
$lookup: { from: "sanpham", localField: "chitiethoadon.id_sanpham", foreignField: "_id", as: "sanpham_details"
"sanpham_details.ten_sanpham": "Gà rán", tongtien: { $gt: 200000 }
$lookup: { from: "khachhang", localField: "id_khachhang", foreignField: "_id", as: "khachhang_details"
"khachhang_details.sdt_khachhang": 1, tongtien: 1
2 Tìm tất cả hóa đơn có sử dụng mã khuyến mãi và phương thức thanh toán là "Thẻ tín dụng" db.hoadon.aggregate([
$lookup: { from: "khuyenmai", localField: "id_khuyenmai", foreignField: "_id", as: "khuyenmai_details"
$lookup: { from: "thanhtoan", localField: "id_thanhtoan", foreignField: "_id", as: "thanhtoan_details"
"thanhtoan_details.hinhthuc_thanhtoan": "Thẻ tín dụng", id_khuyenmai: { $ne: null }
3 Tìm khách hàng đã mua cả "Gà rán" và "Trà sữa" trong cùng một hóa đơn db.hoadon.aggregate([
$lookup: { from: "sanpham", localField: "chitiethoadon.id_sanpham", foreignField: "_id", as: "sanpham_details"
"sanpham_details.ten_sanpham": { $all: ["Gà rán", "Trà sữa"] }
$lookup: { from: "khachhang", localField: "id_khachhang", foreignField: "_id", as: "khachhang_details"
1 Tìm các khuyến mãi giảm giá lớn hơn hoặc bằng 10%, và đếm số lượng khuyến mãi cho từng loại khuyến mãi db.khuyenmai.aggregate([
$match: { loai_khuyenmai: 'Giảm giá' }
$project: { muc_giam: { $toDouble: { $substr: ['$muc_khuyenmai', 0, -1] } }, loai_khuyenmai: 1
_id: '$loai_khuyenmai', total_khuyenmai: { $sum: 1 }
2 Tìm các khuyến mãi với mức giảm giá cao nhất, kèm theo chi tiết sản phẩm tương ứng db.khuyenmai.aggregate([
$match: { loai_khuyenmai: 'Giảm giá' }
$project: { muc_giam: { $toDouble: { $substr: ['$muc_khuyenmai', 0, -1] } }, ma_khuyenmai: 1
$lookup: { from: 'sanpham', localField: 'ma_khuyenmai', foreignField: 'ma_khuyenmai', as: 'sanpham_giamgia'
3 Tính tổng số thanh toán đã hoàn thành theo từng hình thức thanh toán db.thanhtoan.aggregate([
$match: { trangthai_thanhtoan: 'Đã thanh toán' }
_id: '$hinhthuc_thanhtoan', total_thanhtoan: { $sum: 1 }
1 Tìm sản phẩm có giá thấp nhất và lấy mô tả sản phẩm, danh mục liên quan db.sanpham.aggregate([
$lookup: { from: 'danhmuc', localField: 'id_danhmuc', foreignField: '_id', as: 'danhmuc'
$project: { ten_sanpham: 1, gia_sanpham: 1, mota_sanpham: 1,
2 Tìm tổng số sản phẩm theo từng danh mục và tính giá trung bình cho mỗi danh mục db.sanpham.aggregate([
$lookup: { from: 'danhmuc', localField: 'id_danhmuc', foreignField: '_id', as: 'chi_tiet_danhmuc'
_id: '$chi_tiet_danhmuc.ten_danhmuc', total_sanpham: { $sum: 1 }, gia_trungbinh: { $avg: '$gia_sanpham' }
3 Tìm sản phẩm có giá lớn hơn một mức giá nhất định và đồng thời lấy thông tin danh mục sản phẩm db.sanpham.aggregate([
$lookup: { from: 'danhmuc', localField: 'id_danhmuc', foreignField: '_id', as: 'chi_tiet_danhmuc'
$project: { ten_sanpham: 1, gia_sanpham: 1,
'chi_tiet_danhmuc.ten_danhmuc': 1
1 Tìm các khách hàng đã mua sản phẩm với tổng tiền hóa đơn lớn hơn 300,000 VND và họ đã sử dụng mã khuyến mãi db.hoadon.aggregate([
$match: { tongtien: { $gt: 300000 }, id_khuyenmai: { $ne: null }
$lookup: { from: "khachhang", localField: "id_khachhang", foreignField: "_id", as: "khachhang_info"
"khachhang_info.ten_khachhang": 1, tongtien: 1, id_khuyenmai: 1
Để liệt kê các hóa đơn của khách hàng có địa chỉ tại TP Hồ Chí Minh, bạn có thể sử dụng cú pháp truy vấn sau: db.hoadon.aggregate([ Hãy đảm bảo rằng kết quả trả về bao gồm thông tin chi tiết về sản phẩm và phương thức thanh toán.
$lookup: { from: "khachhang", localField: "id_khachhang", foreignField: "_id", as: "khachhang_info"
"khachhang_info.diachi_khachhang": "TP Hồ Chí Minh"
$lookup: { from: "sanpham", localField: "chitiethoadon.id_sanpham", foreignField: "_id", as: "sanpham_info"
$lookup: { from: "thanhtoan", localField: "id_thanhtoan", foreignField: "_id", as: "thanhtoan_info"
"thanhtoan_info.hinhthuc_thanhtoan": 1, tongtien: 1
3 Tính tổng doanh thu từ các đơn hàng đã thanh toán thành công qua thẻ tín dụng. db.hoadon.aggregate([
$lookup: { from: "thanhtoan", localField: "id_thanhtoan", foreignField: "_id", as: "thanhtoan_info"
"thanhtoan_info.hinhthuc_thanhtoan": "Thẻ tín dụng",
"thanhtoan_info.trangthai_thanhtoan": "Đã thanh toán"
_id: null, tong_doanhthu: { $sum: "$tongtien" }
1 Tìm khách hàng (18 < Khách nam < 25) db.khachhang.find({
{ $subtract: [new Date(), "$ngay_sinh"] },
{ $subtract: [new Date(), "$ngay_sinh"] },
}).forEach(function(customer) { if (customer.gioi_tinh === "Nam") { print(customer.ten_khachhang);
2 Tìm khách hàng nữ ở TP Hồ Chí Minh db.khachhang.find({ gioi_tinh: "Nữ", diachi_khachhang: "TP Hồ Chí Minh"
}).forEach(function(customer) { print(customer.ten_khachhang);
3 Truy vấn khách hàng với thông tin cụ thể db.khachhang.find({ ten_khachhang: "Đinh Văn Tài", sdt_khachhang: "0947733609", diachi_khachhang: "TP Hồ Chí Minh", ngay_sinh: new Date("2003-03-30")
}).forEach(function(customer) { print(customer);
4 Tính số lượng hóa đơn mỗi khách hàng db.hoadon.aggregate([
_id: "$id_khachhang", count: { $sum: 1 }
$lookup: { from: "khachhang", localField: "_id", foreignField: "_id", as: "khachhangInfo"
_id: 0, ten_khachhang: "$khachhangInfo.ten_khachhang", count: 1
]).forEach(function(result) { print(`Khách hàng: ${result.ten_khachhang} có ${result.count} hóa đơn`);
5 Tính tổng doanh thu từ hóa đơn trong một khoảng thời gian const totalRevenue = db.hoadon.aggregate([
_id: null, total: { $sum: "$tongtien" }
]).toArray(); print(`Tổng doanh thu: ${totalRevenue[0]?.total}`);
CÀI ĐẶT CHƯƠNG TRÌNH
Các môi trường và ngôn ngữ cài đặt được sử dụng
3.1.1: ngôn ngữ lập trình C#
C# (C-sharp) là ngôn ngữ lập trình hiện đại, hướng đối tượng do Microsoft phát triển từ năm 2000, được thiết kế để xây dựng nhiều loại ứng dụng, từ desktop đến web và di động Ngôn ngữ này nổi bật với tính an toàn, bảo mật và khả năng quản lý bộ nhớ dễ dàng, đồng thời mạnh mẽ nhờ tích hợp nhiều mô hình lập trình như hướng đối tượng, hướng sự kiện và hướng dịch vụ.
3.1.2: Môi trường cài đặt
Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn nhẹ nhưng mạnh mẽ, hỗ trợ đa dạng ngôn ngữ lập trình, trong đó có PHP VS Code nổi bật với nhiều tính năng hữu ích.
Mở rộng (Extensions): Hỗ trợ các tiện ích mở rộng giúp tăng cường chức năng, bao gồm hỗ trợ PHP, HTML, CSS, và JavaScript.
Gỡ lỗi tích hợp: VS Code cung cấp các công cụ gỡ lỗi cho phép người dùng kiểm tra mã nguồn một cách trực quan.
Tích hợp Git: Người dùng có thể quản lý mã nguồn và theo dõi các thay đổi thông qua giao diện dễ sử dụng.
Terminal tích hợp: VS Code cho phép sử dụng terminal ngay trong giao diện, giúp tiết kiệm thời gian chuyển đổi giữa các ứng dụng.
Thiết lập môi trường kết nối