1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế ứng dụng android và gửi dữ liệu lên database ứng dụng trong việc gọi món trong nhà hàng và quán ăn

54 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 2,04 MB
File đính kèm ThiếukếUDgọimónkếthợpgửinhậnDB.rar (2 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Video demo: https:youtu.be0WkCXIwr8Rw Bài báo cáo sử dụng ngôn ngữ lập trình Dart trên SDK Flutter để thiết kế. Sử dụng DB MySql và Localhost để quản lý các đơn hàng, xuất hóa đơn. Kết nối mobile app và database thành một hệ thống hoàn chỉnh.Với phương hướng đặt ra là giảm sự tiếp xúc giữa nhân viên phục vụ trong nhà hàng, quán ăn với thực khách nhiều nhất có thể cũng như tiếp xúc giữa các thực khách với nhau.

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA ĐÀO TẠO CHÂT LƯỢNG CAO

ĐỒ ÁN MÔN HỌC 2

ĐỀ TÀI: THIẾT KẾ ỨNG DỤNG ANDROID VÀ

GỬI DỮ LIỆU LÊN DATABASE ỨNG DỤNG TRONG VIỆC GỌI MÓN TRONG NHÀ HÀNG VÀ QUÁN ĂN

MSSV: 171057 Trần Thái Hà Phong MSSV: 17161115

Hồ Chí Minh, ngày 10 tháng 01 năm 2022

Trang 2

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc

Ngành: CNKT Điện tử- Viễn thông Lớp:18161CLVT2B

Giảng viên hướng dẫn:Th.S Phan Học ĐT: 0869683324

Ngày nhận đề tài:06/09/2021 Ngày nộp đề tài: 10/01/2022

1 Tên đề tài: Thiết kế ứng dụng android và gửi dữ liệu lên database ứng dụng trongviệc gọi món trong nhà hàng và quán ăn

2 Các số liệu, tài liệu ban đầu:

- Trang web https://docs.flutter.dev/

- Trang web https://stackoverflow.com/

3 Nội dung thực hiện đề tài:

- Tìm hiểu về cách xây dựng mobile app bằng ngôn ngữ Dart sử dụng SDK Flutter

- Tìm hiểu và xây dựng database

- Kết nối mobile app và database thành một hệ thống hoàn chỉnh

4 Sản phẩm:

Ứng dụng android có thể gửi dữ liệu lên database

Trang 3

- PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Họ và tên Sinh viên: Nguyễn Vũ Long MSSV: 17161057

Trần Thái Hà Khang MSSV: 17161115

Ngành: CNKT Điện tử – Viễn thông

Tên đề tài: Thiết kế ứng dụng android và gửi dữ liệu lên database ứng dụng trong việc gọimón trong nhà hàng và quán ăn

Họ và tên Giáo viên hướng dẫn: TS Phan Học

NHẬN XÉT

1 Về nội dung đề tài & khối lượng thực hiện:

Ưu điểm:

2 Khuyết điểm:

3 Đề nghị cho bảo vệ hay không?

4 Đánh giá loại:

5 Điểm:……….(Bằng chữ: )

Tp Hồ Chí Minh, ngày 10 tháng 01 năm 2022

Giáo viên hướng dẫn

Trang 4

(Ký & ghi rõ họ tên)

- PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Họ và tên Sinh viên: Nguyễn Vũ Long MSSV: 17161057

Trần Thái Hà Khang MSSV: 17161115

Ngành: CNKT Điện tử – Viễn thông

Tên đề tài: Thiết kế ứng dụng android và gửi dữ liệu lên database ứng dụng trong việc gọimón trong nhà hàng và quán ăn

Họ và tên Giáo viên hướng dẫn: TS Phan Học

NHẬN XÉT

1 Về nội dung đề tài & khối lượng thực hiện:

2 Ưu điểm:

3 Khuyết điểm:

4 Đề nghị cho bảo vệ hay không?

5 Đánh giá loại:

6 Điểm:……….(Bằng chữ: )

Tp Hồ Chí Minh, ngày 10 tháng 01 năm 2022

Trang 5

(Ký & ghi rõ họ tên)

LỜI CẢM ƠN

Quá trình thực hiện Đồ án môn học 2 là giai đoạn quan trọng trong quãng đời mỗisinh viên, nó là tiền đề nhằm trang bị kiến thức quý báu, kỹ năng nghiên cứu lẫn kinhnghiệm khi thi công để chuẩn bị cho đồ án tốt nghiệp

Trước tiên, em xin gửi lời cảm ơn chân thành đến các Thầy trong khoa Đào tạoChất lượng cao, trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, nhữngngười đã truyền đạt cho em những kiến thức quý báu, chỉ dẫn và định hướng cho nhómtrong quá trình học tập

Em xin trân trọng cảm ơn thầy Phan Học đã tận tình giúp đỡ, định hướng cách tưduy và cách làm việc khoa học Đó là những góp ý hết sức quý báu không chỉ trong quátrình thực hiện đồ án này mà còn là hành trang tiếp bước cho em trong quá trình học tập

và lập nghiệp sau này

Do kiến thức còn hạn hẹp nên mặc dù đã hoàn thành đề tài nhưng cũng khó tránhkhỏi thiếu sót, rất mong sự chỉ dẫn và đóng góp của Thầy để đề tài của em được hoànthiện hơn

Em xin chân thành cảm ơn!

Trang 6

LỜI NÓI ĐẦU

Trong tình hình dịch bệnh COVID-19 đang ngày càng diễn biến theo xu hướngtiêu cực, kéo theo nhiều hệ luỵ khác nhau gây thiệt lớn về người và của trong nước ta nóiriêng và trên toàn thế giới nói chung Nhưng song song nó, đây cũng là cơ hội để các côngnghệ không dây, IoT bước vào thời kì bùng nổ vì giảm sự tiếp xúc giữa người với người.Nắm bắt được điều này, nhóm chúngg em đã quyết định lựa chọn đề tài:” THIẾT KẾ ỨNG DỤNG ANDROID VÀ GỬI DỮ LIỆU LÊN DATABASE ỨNG DỤNG TRONG VIỆC GỌI MÓN TRONG NHÀ HÀNG VÀ QUÁN ĂN”

Hưởng ứng theo cái qui định phòng chống dịch bệnh, đặc biệt là qui tắc “5K”,nhóm chúng em đã tiến hành nghiên cứu và xây dựng ra 1 ứng dụng giúp các nhà hàng vàquán ăn có thể sử dụng để nâng cao hiệu quả phòng chống dịch bệnh trong tình hình hiệntại

Trang 7

MỤC LỤC

NHIỆM VỤ ĐỒ ÁN MÔN HỌC i

LỜI CẢM ƠN iv

LỜI NÓI ĐẦU v

MỤC LỤC vi

DANH MỤC HÌNH ẢNH vii

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1

1.1 Đặt vấn đề 1

1.2 Mục tiêu 1

1.3 Nội dung nghiên cứu 1

1.4 Phương pháp nghiên cứu 1

1.5 Bố cục 1

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2

2.1 Ngôn ngữ lập trình Dart và Flutter 2

2.1.1 Sơ lược về ngôn ngữ lập trình Dart 2

2.1.2 Sơ lược về Flutter 2

2.2 Ứng dụng Docker 3

2.3 MySql và PhpMyAdmin 3

2.3.1 MySQL 3

2.3.2 PhpMyAdmin 4

2.3.3 Quá trình phối hợp và hoạt động của MySQL và PhpMyAdmin 4

CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 5

3.1 Phân tích các chứng năng chính của hệ thống 5

3.2 Quy trình thiết kế ứng dụng đặt hàng 5

3.2.1 Thiết kế giao diện ứng dụng 5

3.2.2 Tiến hành lập trình ứng dụng 5

3.3 Tạo và xây dựng cơ sở dữ liệu MySQL 9

3.4 Lập trình Php truy vấn dữ liệu MySQL 12

3.4.1 Kết nối với CSDL MySQL 12

Trang 8

3.4.2 Tạo trang báo cáo chi tiết hóa đơn 13

CHƯƠNG 4: KẾT QUẢ THỰC HIỆN 15

CHƯƠNG 5: KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN 19

5.1 Kết luận 19

5.2 Phương hướng phát triển 19

TÀI LIỆU THAM KHẢO 20

PHỤ LỤC 1 21

Trang 9

DANH MỤC HÌNH ẢNH

Hình 3.2 Mô hình cấu tạo nên một project của Flutter……… 2

Hình 3.2.1 Sử dụng Figma thiết kế giao diện ứng dụng………5

Hình 3.2.2 Minh họa các tạo một text……… 6

Hình 3.2.3 Các sử dụng các Container……… 7

Hình 3.2.4 Cách tạo srolling menu 2 cột……… 8

Hình 3.3.1 Tạo database MySQL………10

Hình 3.3.2 Bảng sản phẩm……… …11

Hình 3.3.3 Tạo liên kết giữa các bảng……….12

Hình 3.4.1 Kết quả bảng báo cáo hóa đơn chi tiết……… 14

Trang 11

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Đặt vấn đề

Trong thời điểm dịch bệnh hiện tại, việc các quán ăn hay nhà hàng đóng cửa làđiều không tránh khỏi vì để tránh lây lan dịch giữa các khách hàng với nhau Từ đò,nhóm chúng em đã suy nghĩ ra phương hướng giải pháp giúp đỡ các nhà hàng, quán

ăn là nâng cao hiệu quả chống dịch

Từ những suy nghĩ trên, đồng thơi với bản thân là sinh viên ngành CNKT Điện

tử-Viễn thông, nhóm chúng em đã quyết định lựa chọn đề:” THIẾT KẾ ỨNG DỤNG ANDROID VÀ GỬI DỮ LIỆU LÊN DATABASE ỨNG DỤNG TRONG VIỆC GỌI MÓN TRONG NHÀ HÀNG VÀ QUÁN ĂN” Với phương hướng đặt

ra là giảm sự tiếp xúc giữa nhân viên phục vụ trong nhà hàng, quán ăn với thực kháchnhiều nhất có thể cũng như tiếp xúc giữa các thực khách với nhau

1.2 Mục tiêu

Xây dựng thành công ứng dụng điện thoại, tạo , quản lý thành công cơ sở dữliệu và kết nối thiết bị và cơ sở dữ liệu

1.3 Nội dung nghiên cứu

Nghiên cứu về ngôn ngữ lập trình Dart, cách thức xây dựng được ứng dụngAndroid Đồng thời có thể bổ sung được kiến thức về lập trình nâng cao khả năngsáng tạo của bản thân

Tạo và quản lý hệ cơ sở dữ liệu

Kết nối thiết bị với cơ sở dữ liệu

1.4 Phương pháp nghiên cứu

Cài đặt và sử dụng Flutter, sử dụng ngôn ngữ lập trình Dart để xây dựng ứngdụng điện thoại

Cài đặt và sử dụng ứng dụng Docker Desktop với mục đích chạy MySQL vàPhpMyAdmin

Sử dụng PhpMyAdmin quản trị hệ cơ sở dữ liệu MySQL: thêm, xóa, cập nhật

dữ liệu và tạo các bảng

Kết nối thiết bị với cơ sở dữ liệu

1.5 Bố cục

Nội dung đề tài gồm 5 chương

- Chương 1: Tổng quan về đề tài

- Chương 2: Cơ sở lý thuyết

- Chương 3: Thiết kế và xây dựng hệ thống

- Chương 4: Kết quả thực hiện

- Chương 5: Kết luận và phương hướng phát triển

Trang 12

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Ngôn ngữ lập trình Dart và Flutter

2.1.1 Sơ lược về ngôn ngữ lập trình Dart

Dart là một ngữ lập trình với mã nguồn mở đa năng và được phát triển bởiGoogle Ngôn ngữ Dart được ứng dụng trong lập trình web, server và diđộng( Android và IOS)

Ngôn ngữ lập trình Dart là ngôn ngữ lập trình hướng đối tượng, hoạt động theolớp (class) và sử dụng cú pháp kiểu C để dịch mã JavaScript

 Ưu điểm khi sử dụng ngôn ngữ lập trình Dart:

- Bộ công cụ đơn giản, dễ sử dụng nhưng mang lại hiệu suất cao

- Hỗ trợ xác định và sửa lỗi bằng type-safe

- Có thể biên dịch thành mã x86 và ARM giúp hoạt động một cách trơn tru trênIOS, Android

2.1.2 Sơ lược về Flutter

Flutter là một SDK (Software Development Kit) hỗ trợ người dùng phát triểnứng dụng dành riêng cho Android và IOS

Flutter còn là một Mobile UI Framework của Google dựa trên ngôn ngữ lậptrình Dart Cho phép người dùng tạo ra các giao diện trông tự nhiên nhưng đạt hiệuquả cao về chất lượng trên Android và IOS

Mô hình cấu tạo nên một project của Flutter:

Hình 3.2 Mô hình cấu tạo nên một project của Flutter

Trang 13

MaterialApp có các thuộc tính của màn hình như title, theme và home , nó lạiđược tạo ra bởi một widget khác, MyHomePage.

MyHomePage được tạo bởi một widget gốc của flutter, Scaffold

Scaffold đóng vai trò như phần nền để bố trí các thành phần cơ bản khác.Scaffold có 2 thuộc tính – body và appBar

Body chứa giao diện chính còn appBar chứa phần đầu (header) của ứng dụng

 Ưu điểm của Flutter:

- Xây dựng và phát triển ứng dụng nhanh

- Giao diện linh hoạt đẹp mắt

Xây dựng môi trường phát triển ứng dụng Php và MySql bằng Docker-compose:

- Bước 1: tạo docker network, điều này giúp các container trong cùng 1 network

có thể giao tiếp với nhau thông qua container name

Docker network này có tên là mysql , tiếp theo ta sẽ đặt 2 container chạymysql và phpmyadmin trong network mysql này

- Bước 2: Khởi tạo Docker container từ Docker Image của MySql

Trước tiên là tạo một thư mục dùng để lưu dữ liệu của Docker container, ví dụ: /home/moe/mysql_data

Sau đó, chạy lệnh:

docker run name learn_mysql network mysql -v/home/moe/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -

d mysql:5.7

- Bước 3: Khởi tạo Docker container từ Docker Image của PhpMyAdmin

Chạy lệnh sau: docker run name myadmin -d network mysql -p 8081:80 -ePMA_HOST=learn_mysql phpmyadmin/phpmyadmin

- Sau khi hoàn thành cả bước trên ta truy cập vào địa chỉ http://localhost:8081/

2.3 MySql và PhpMyAdmin

2.3.1 MySQL

MySQL là hệ quản trị cơ sở dữ liệu (Database management) với mã nguồn mởphổ biến nhất thế giới

Trang 14

Câu lệnh SQL là ngôn ngữ MySQL dùng để trao đổi dữ liệu giữa máy tính vàmáy cài MySQL server Có 4 loại ngôn ngữ: ngôn ngữ định nghĩa dữ liệu, ngôn ngữtruy vấn dữ liệu, ngôn ngữ thao tác dữ liệu và ngôn ngữ điều khiển dữ liệu.

MySQL lưu trữ dữ liệu trong một bảng (table) gồm nhiều hàng (bảng ghi dữliệu) và cột (trường dữ liệu)

MySQL cung cấp các câu lệnh phong phú để kết nối, yêu cầu và truy xuất lấy

dữ liệu phục vụ cho trang web như: chỉnh sửa các hàng trong một mối quan hệ ( chèn,xóa, cập nhật), thêm/xóa/sửa các đối tượng trong cơ sở dữ liệu, điều khiển việc truycập đến cơ sở dữ liệu

2.3.2 PhpMyAdmin

PhpMyAdmin là phần mềm mã nguồn mở được viết bằng ngôn ngữ PHP giúpquản trị cở sở dữ liệu MySQL thông qua giao diện web

Một số tính năng của PhpMyAdmin như:

- Quản lý người dùng (User): thêm, xóa, sửa, cấp quyền

- Quản lý cơ sở dữ liệu: Thêm, xóa, sửa, thêm bảng, thêm hàng…

- Truy vấn MySQL

- Sao lưu và khôi phục

2.3.3 Quá trình phối hợp và hoạt động của MySQL và PhpMyAdmin

Khi Client yêu cầu server cho phép tải một tập tin hay một số dữ liệu lên web, có 4bước diễn ra:

- Bước 1: Server sử dụng PHP để tải tập tin

- Bước 2: PHP truyền tập tin đến MySQL và nhờ MySQL lưu trữ tập tin này

- Bước 3: MySQL chấp nhận yêu cầu của PHP

- Bước 4: PHP phản hồi là MySQL đã chấp nhận yêu cầu, lệnh đã được gửiserver có thể in nội dung tập tin đó

Trang 15

CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG

3.1 Phân tích các chứng năng chính của hệ thống

3.2.1 Thiết kế giao diện ứng dụng

Thiết kế giao diện ứng dụng hay còn được gọi là UI Design là công đoạn thiết

kế giúp người dùng có khả năng trao đổi với thiết bị điện tử thông qua phần mềm, nút

ấn, thanh trượt và còn là công đoạn quyết định màu sắc, hình ảnh của ứng dụng

Ở phần này, nhóm em đã chọn Figma làm công cụ để thiết kế giao diện

Hình 3.2.1 Sử dụng Figma thiết kế giao diện ứng dụng

3.2.2 Tiến hành lập trình ứng dụng

a Trang đầu tiên của ứng dụng

Để cho giao diện phù hợp với mọi kích cỡ màn hình, ta import thêmpackage ‘dart:ui’ và dùng cú pháp

MediaQuery dùng để đọc trực tiếp kích thước màn hình hiện tại, trường hợp trên

đã cho sẵn kích thước là Pixel 3 là 393 x 786 Tiếp theo đó dùng phương pháp thamsuất chia chiều dài cho 786 và chiều rộng cho 393 ta sẽ có được một giao diện

Trang 16

freesize, bằng cách đó khi lập trình các phần cần kích thước, ta chỉ cần nhân kíchthước freesize với kích thước mong muốn ta sẽ có được giao diện phù hợp kích thướcmàn hình hiện tại của thiết bị.

Ví dụ như để tạo được một text như “THE CAKE STORE”

Hình 3.2.2 Minh họa cách tạo một text

Trang 17

Điểm nổi bật của cách thức lập trình này là ta chia màn hình thành các cột vàcác hàng và các phần tử tiếp theo sẽ được phân cách bằng các container với độ height

và witdh xác định

Hình 3.2.3 Cách sử dụng các Container

Ta giả định body là một column (cột) các phần tử trong cột này gồm cáccontainer Ở chỗ được đánh số thứ tự 1 là tạo ra một container rỗng có chiều cao 90nhằm ngăn bỏ 1 khoảng trắng ở trên để chèn Text vào phần tiếp theo phía dưới.Tương tự vậy container số 2 cũng là một container rỗng và container số 3 được làmđầy bằng một bức hình Tiếp tục làm như vậy cho bottom

Để có thể nhấn chuyển sang trang tiếp theo ta phải sử dụng hàmGestureDetector nhằm xử lí tất cả cử chỉ, và trong chương trình này cử chỉ chính làonTap (chạm)

b Trang thứ hai của ứng dụng

Ở trang này, các món ăn sẽ được triển khai bằng một danh sách từ trên xuốngdưới dạng column, row và có thể scroll được, ta dùng SingleChildScrollView Widget.Tiếp theo sẽ là các Padding Widget được giới hạn 8.0 theo mọi hướng, ta dùng phầnnày để bao bọc các phần như hình ảnh món ăn, giá tiền và số lượng

Ta sẽ dùng nhiều câu lệnh column và row lồng vào nhau để đặt các Padding vàonơi mong muốn được minh họa như hình dưới :

Trang 18

Hình 3.2.4 Cách tạo Srolling Menu 2 cộtĐầu tiên ta sẽ mặc toàn màn hình là một cột chính ( nơi được đánh số 1 trênhình), tiếp theo ta sẽ chia cột lớn thành nhiều hàng ( nơi được đánh số 2), từ trênxuống vậy thì số 2 sẽ là hàng đầu tiên Trong hàng đầu tiên này ta sẽ chia làm hai cộtđược đánh số là 3 và 4, mỗi cột đặt một Padding thì sẽ được kết quả như hình Làmtương tự như vậy cho hàng 2,3,4,5… Theo yêu cầu.

Để có thể thêm hình vào các Padding, ta kéo hình ảnh vào thư mục Assets trongthư mục project rồi dùng câu lệnh chèn hình vào nơi mình mong muốn ví dụ: chènmình vào Padding đầu tiên, tên hình là an1.jpg

Trang 19

Tiếp theo là các phím tăng giảm số lượng của sản phẩm ta lại dùngGestureDetector để phát hiện cử chỉ và hành động vẫn là OnTap ( chạm) Sử dụnghàm có sẵn của thư viện đó là hai hàm decreaseFunc và increaseFunc để thực hiện cácyêu cầu.

Giao tiếp với Server: Ở phần này, các món ăn sẽ được xếp vào 1 mảng nhưng

Flutter không hỗ trợ mảng nên ta sắp nó vào 1 list gồm n phần tử tương ứng n món

ăn Ta tạo thêm 1 class đặt tên là Service.dart, địa chỉ host của device( trường hợp này

là AVD) là 10.0.2.2 được nối vào port 8000 của Php Trong class này chuỗi các món

ăn đã order sẽ được mã hóa thành Json nhằm mục đích truyền tải dữ liệu giữ client vàserver Giá trị trả về ( danh sách, số lượng món ăn, kết nối với server thành công haythất bại) sẽ được in ra output nhờ vào câu lệnh print

3.3 Tạo và xây dựng cơ sở dữ liệu MySQL

Trang 20

Đầu tiên ta cần phải truy cập vào http://localhost:8081/ đăng nhập

Hình 3.3.1 Tạo database MySQL

Để quản lí đơn hàng thì ta cần tạo 3 bảng lich_su_giao_dich, san_pham vàhoa_don

a Bảng san_pham

CREATE TABLE san_pham (

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,

tenSanPham VARCHAR (30) NOT NULL ,

giaTien INT UNSIGNED NOT NULL );

Kiểu giá trị NOT NULL dùng để thiết lập để cột không nhận giá trị NULL tức làcột này bắt buộc phải có giá trị

Sau khi đã tạo được bảng, ta tiến hành nhập các món ăn vào bảng

INSERT INTO san_pham (id, tenSanPham, giaTien) VALUES (1,

INSERT INTO san_pham (tenSanPham, giaTien) VALUES ( 'cafe' ,120000);

( 'cacaodaxay' ,120000);

Trang 21

INSERT INTO lich_su_giao_dich (id, id_hoaDon, id_sanPham, soLuong)

VALUES (1, 1 2 9);

Kết quả

Hình 3.3.2 Bảng sản phẩm

b Bảng lich_su_giao_dich

CREATE TABLE lich_su_giao_dich (

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,

id_hoaDon INT UNSIGNED not null ,

id_sanPham INT UNSIGNED not null ,

soLuong INT UNSIGNED Not NULL ,

FOREIGN KEY (id_hoaDon) REFERENCES hoa_don (id),

FOREIGN KEY (id_sanPham) REFERENCES san_pham(id)

);

c Bảng hoa_don

CREATE TABLE hoa_don (

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,

thoiGianGiaoDich DATE

);

Sau khi đã tạo xong ta liên kết 3 bảng lại với nhau bằng cách vào bộ thiết kế,chọn create relationship

Trang 22

Hình 3.3.3 tạo liên kết giữa các bảng

3.4 Lập trình Php truy vấn dữ liệu MySQL

3.4.1 Kết nối với CSDL MySQL

Để có thể nhập xuất dữ liệu vào MySql ta cần phải kết nối với Mysql trước

// check the mysql connection status

$conn = new mysqli ( $host , $user , $pass , $mydatabase );

if ( $conn -> connect_error ) {

die ( "Connection Failed: " $conn -> connect_error );

return ;

}

Khi nãy ta có đề cập đến dữ liệu được mã hóa thành json và khi đến bước này

dữ liệu đấy sẽ được giải mã

$data = json_decode ( file_get_contents ( 'php://input' ), true );

Trang 23

$result = $conn -> query ( $sql );

$id_HoaDon = calNewHoaDonID ();

for ( $x = 0; $x < 9; $x ++) {

if ( $danhsachmonan [ $x ][ "soLuong" ] > 0) {

$soLuong = $danhsachmonan [ $x ][ "soLuong" ];

$id = $danhsachmonan [ $x ][ "id" ];

$sql = "INSERT INTO lich_su_giao_dich (id_hoaDon, id_sanPham, soLuong) VALUES

Danh sách món ăn gồm 9 món được đánh số từ 0 đến 8, khi bất kể món ăn nào

có số lượng > 0 thì các thành phần sẽ cập nhật vào các bảng của Mysql bằng $sql

3.4.2 Tạo trang báo cáo chi tiết hóa đơn

Bằng cách sử dụng vscode và copy file code để chung thư mục với file index, ta

có thể tạo ra thêm một trang mới ở port 8000 bằng cách truy cập vào đường dẫn

http://localhost:8000/doanhthu.php

Ý tưởng: ta sẽ đọc dữ liệu từ bảng hoa_don, san_pham của MySql Ở nhữnghàng có cùng id hóa đơn tức cùng 1 đơn hàng, ta có được id của sản phẩm và giá tiềncủa sản phẩm Tính tổng tiền bằng cách

$tongtien = $tongtien + $tien [ 'giaTien' ] * $row [ 'soLuong' ];

Trong đó

- Giá tiền được query từ bảng sản phẩm

$queryGiaSanPham = "SELECT giaTien FROM san_pham where id = "

$getName = $conn -> query ( $queryTenSanPham );

$name = mysqli_fetch_array ( $getName );

echo " -" $name [ 'tenSanPham' ] " : " $row [ 'soLuong' ] "<br>" ;

Kết quả

Trang 24

Hình 3.4.1 Kết quả bảng báo cáo hóa đơn chi tiết

Trang 25

CHƯƠNG 4: KẾT QUẢ THỰC HIỆN

 Giao diện của ứng dụng:

 Khi đặt đơn hàng đầu tiên, ví dụ chọn 3 bánh chocolate và 5 bánh kẹpnướng nhấn Buy và nhấn OK Data sẽ được mã hóa và gửi lên server và số lượng cácsản phẩm vừa chọn sẽ được trả về 0

Trang 26

 Xem thông tin đơn hàng trên MySQL

Truy cập localhost port 8081 bằng chrome http://localhost:8081/

Điền thông tin đăng nhập :

Máy chủ: db_appBanHang

Tài khoản: root

Mật khẩu: 123

Vào database appMuaHangDB

- Ở bảng hóa đơn ta thấy thông tin số hóa đơn đã được tăng lên 2 (ban đầu

chưa có đơn id thì id =1)

Trang 27

- Ở bảng lịch sử giao dịch ta thấy id 2 và 3 được thêm vào bảng, đó là 2 sản

phẩm vừa được thêm vào, cột id hóa đơn cùng là số 2 chứng tỏ 2 sản phẩmnày là cùng một đơn hàng Id sản phẩm là 1 và 3 ta đối chiếu sang bảng sảnphẩm để biết được đó là sản phẩm gì và số lượng bao nhiêu

- Ở bảng sản phẩm, id 1 và 3 là banhchocolate và banhkepnuong vậy ta đã có

thể thấy được toàn bộ những thông tin của đơn hàng vừa được gửi từ thiết bị

 Báo cáo hóa đơn chi tiết

Truy cập localhost port 8000 với tên file là doanhthu.php

http://localhost:8000/doanhthu.php ta được kết quả như sau

Ngày đăng: 16/09/2022, 09:41

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w