Giáo dục cũng được cải thiện đáng kế với việc sử dụng các công nghệ mới như học trực tuyến và các ứng dụng học tập tích hợp trí tuệ nhân tạo.. Việc sử dụng ứng dụng giúp hỗ trợ tìm kiếm
Trang 1Ứng dụng đề xuất món ăn Giảng viên hướng dẫn:
TRƯƠNG HOÀI PHAN - TRẢN DUY THANH
Nhóm: MASTERCHEE
1 Nguyễn Quỳnh Anh K224161805
2 Nguyễn Thị Hương Giang K224161810
Thành phố Hỗ Chi Minh, ngay 19 thang 04 nam 2023
Trang 2
NHAN XÉT CỦA GIẢNG VIÊN
Ký tên
Trang 3LOI CAM ON Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến Ban giám hiệu trường Đại học
Kinh tế - Luật vì đã tạo điều kiện cho chúng em tiếp cận môn “Kỹ thuật lập trình”, cũng như cung cấp cơ sở vật chất với hệ thông thư viện hiện đại, đa dạng các loại sách,
tài liệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin Đặc biệt, chúng em xin gửi
lời cảm ơn sâu sắc nhất đến giáo viên bộ môn - Thầy Trương Hoài Phan cùng thầy Trần Duy Thanh đã giảng dạy tận tình, chỉ tiết để chúng em có đủ kiến thức và vận dụng chúng vào bài tiêu luận này
Trong quá trình hoàn thành đồ án cuối kỳ, thầy Trương Hoài Phan và thầy Trần Duy Thanh đã giúp chúng em có được kiến thức nền tảng về phương pháp làm bài đồ án và định hướng đúng đắn những cách thức tiến hành tạo ra một chương trình đơn giản bằng ngôn ngữ lập trình Python Tuy nhiên, do sự hạn chế về thời gian và kiến thức, cũng như chúng em vẫn còn thiếu kinh nghiệm thực tiễn nên sai sót là điều không thể tránh khỏi Chúng em rất mong sẽ nhận được những ý kiến đóng góp từ quý thầy cô
và các bạn để hoàn thiện bài đồ án nhất có thê
Kính chúc thầy thật nhiều sức khỏe và thành công trên sự nghiệp giảng dạy
Chúng em xin chân thành cảm ơn!
Nhóm sinh viên thực hiện đồ án
Thành phố Hỗ Chí Minh, ngày 19 tháng 4 năm 2023
Trang 4LOI MO DAU
Ngày nay, với những thành tựu to lớn mà con người đạt được trong các lĩnh vực công nghệ, khoa học, và kinh tế cuộc sống của chúng ta đã trở nên tiện lợi và đầy đủ hơn rất nhiều Đặc biệt những năm gần đây, công nghệ thông tin, truyền thông và kỹ thuật số
đã bùng nỗ mạnh mẽ, phát triển một cách nhanh chóng, đưa cuộc sông của con người lên một tầm cao mới Không chỉ giúp cho việc giao tiếp và truy cập thông tin trở nên dễ dàng hơn bao giờ hết, công nghệ cũng đã tác động đến nhiều lĩnh vực khác nhau như y
tẾ, giáo dục, sản xuất và nhiều lĩnh vực khác Các thiết bị y tế được kết nỗi với mạng internet da giúp cho việc chân đoán bệnh và chăm sóc sức khỏe trở nên hiệu quả hơn Giáo dục cũng được cải thiện đáng kế với việc sử dụng các công nghệ mới như học trực tuyến và các ứng dụng học tập tích hợp trí tuệ nhân tạo Trong sản xuất công nghiệp, các dây chuyên tự động hóa đã giúp rút ngắn thời gian và tăng năng suất sản xuất Vì vậy có thê thấy được răng, công nghệ đường như đã trở thành một phần không thể thiếu trong mọi hoạt động xã hội và đời sông của con người
Tuy nhiên, chúng ta cũng cần phải cân nhắc tác động tiêu cực của sự phát triển này đến môi trường và xã hội Có thể nhận thay một thực trạng đáng buồn là khoa học công nghệ càng phát triển thì môi trường sống ngày càng bị tàn phá nghiêm trọng Thiết nghĩ
là chúng ta nên tận dụng công nghệ để tạo ra những phát minh vừa giúp ích cho con người vừa thân thiện và góp phân bảo vệ môi trường
Tại Việt Nam tình trạng lãng phí thực phẩm đã đạt đến mức đáng báo động Nó không chỉ gây ảnh hưởng đến kinh tế, xã hội mà còn gây áp lực nặng nẻ cho môi trường như làm tăng lượng khí thải nhà kính, gây lãng phí tài nguyên đất và nước dùng trong quá trình sản xuất thực phẩm Và có đến gần một nửa lượng thức ăn bị lãng phí là do bị bỏ quên trong tủ lạnh dẫn đến hư hỏng hoặc hết hạn không thể sử dụng được nữa Điều này xảy ra một phần là vì nhiều người có thói quen mua một lượng thực phâm lớn về trữ dần nhưng không ăn kịp Hay như việc chúng ta mua đồ về nấu những món cần nhiêu nguyên liệu và sau đó ta sẽ có rât nhiêu nguyên liệu dở dang trong tủ lạnh còn
Trang 5thừa nhưng lại không biết nâu món gì mà có thể tận dụng hết những nguyên liệu ấy Vì vậy việc có một ứng dụng hỗ trợ đề xuất công thức món ăn dựa trên nguyên liệu sẽ là giải pháp tuyệt vời góp phần giải quyết tinh trạng lãng phí thức ăn đồng thời giúp hạn chế chất thải ảnh hưởng đến môi trường
Trang 6L Térn dur An aa 8
2 LY do Chon Gu a0 eo ố 8
4 Pham vi thyrc Wi@n en 6 4.4 9
5 Phương pháp nghiên cứu thực hiện - eee eeceeseeeeeeeeeceaeeaeeaenaeeaeseeenaeeaees 9
INeu 0n 1 4 10
1.1 Ngôn ngữ lập trình Python - 5 S5 <1 eee eee cece eeeeee tee seenneseeeneeaee 10 1.2 Môi trường lập trình Visual Studio 2Ô22 ác ssnseiseererey 10 IEON bao gi nh 10
J9) liïì()( 0ï) 0i 0n 13
2.1 Tổ chức đữ liệu -¿-+2++c++2tEkkrtEEEELrEE.ELE.Eirierie 13
2.2 XU DY 0 1n 14
2.3 Thiết kế giao diện ¿22-22 2+2 22 E221221121121112112112112211 11.2112 xe 15
3 Sự liên kết của các dữ liệu trong chương trình . ©22©22©2s+2s+zx+zxscse2 17
3.2 T6 chite thur MUC .cecceccccseceesesesecscsesesecsesesesuesesecscsesesusecstsuscacsesesecacstsnsnsatesacees 17
4 Thuật toan churong trim wo ccc cece ceceeseeseeseessesseneescesaeaeeeceeaeeaeeaeenaeeaetaeeneeeaes 18
Trang 7
2.2 Nhược điểm - + St E3 S8 2E955511121111111511111115111111121111111211 111.11 xe 25
2.3 Hướng phát triên 2-2222 +¿+EE+2EE+EE2SEEEEEE2E122127112112112211211211 22c 25
DANH MỤC HÌNH ẢNH
Hình 5: Sơ đồ mỗi quan hệ của chương trình 17 Hình 6: Sơ đồ múi liên kết thư mục trong chương trình 18
Hình 8: Giao diện chọn nguyên liệu nấu ăn 19
DANH MỤC BANG BIEU
Trang 8Trong những năm gần đây, xu hướng tự nấu ăn tai nhà đã trở thành một trào lưu
phô biến trên khắp thế giới Một trong những lý do chính khiến nhiều người
chọn nấu ăn tại nhà là tiết kiệm chỉ phí Vì chúng ta có thể lựa chọn các nguyên
liệu tươi ngon với giá rẻ hơn so với khi đi ăn ngoài và nó còn tốt cho sức khỏe
vì ta sẽ kiểm soát được lượng chất bảo quản và chất béo trong quá trình chế
biến, giúp giảm nguy cơ mắc các bệnh liên quan đến chế độ ăn uống hơn
Tuy nhiên việc tự nâu ăn cũng không hề đơn giản và khiến nhiều người gặp không ít khó khăn Vì nếu bạn không có kinh nghiệm trong việc nấu ăn trước
đó, bạn sẽ không biết cách lựa chọn nguyên liệu và kết hợp chúng với nhau như thế nào Việc loay hoay lựa chọn nguyên liệu và cách nâu sẽ làm mắt nhiều thời
gian của chúng ta hơn so với việc đặt món ăn hoặc mua đỗ ăn sẵn tại cửa hàng
Việc sử dụng ứng dụng giúp hỗ trợ tìm kiếm và đề xuất món dựa trên nguyên liệu sẵn có không chỉ giúp người dùng tiết kiệm thời gian và công sức mà còn tận dụng được các nguyên liệu có sẵn tại nhà tránh tình trạng lãng phí Và ứng dụng cũng rất phù hợp với những người áp dụng chế độ ăn đặc biệt chỉ được tiêu thụ một số loại thực phâm nhất định, ứng dụng sẽ giúp họ tìm ra những công thức mới lạ hơn để thực đơn của họ không bị nhảm chán, đơn điệu Xuất phát từ thực tế và xu hướng hiện tại, nhóm chúng em đã quyết định lựa chon dé tai “Phan mém đề xuất công thức món ăn dựa trên nguyên liệu” với hy vọng răng nó sẽ góp phân giúp công việc quản lý trở nên hiệu quả hơn
Trang 93 Mục đích dự án
Xây dựng một phần mềm điện thoại hỗ trợ tìm kiếm công thức món ăn giúp tận dụng được nguyên liệu dở dang, tránh lãng phí thức ăn và làm cho việc tự vào
bếp nấu ăn trở nên đơn giản, tiết kiệm thời gian hơn
Giúp sinh viên vừa nắm vững được kiến thức môn vừa học, vừa bồi dưỡng cho bản thân thêm kiến thức về xu hướng xã hội thông qua việc chọn đề tài và làm việc nhóm củng nhau
4 Pham vi thực hiện
Dự án được thiết kế dành cho đối tượng sử dùng là những người thường xuyên nấu ăn tại nhà nhưng bị thiếu ý tưởng về công thức món ăn với mục đích hỗ trợ tìm món ăn dựa trên nguyên liệu hiện có, giúp hạn chế việc thức ăn bị lãng phí
5 Phương pháp nghiên cứu thực hiện
Đọc một số tài liệu về phương pháp lập trình Python, trên cơ sở đó tiến hành
phân tích thiết kế hệ thống tìm kiếm thông tin
Tham khảo, quan sát các phần mềm gợi ý công thức nấu ăn trong thực tế
Trang 10B NỘI DUNG
1 Cơ sở lý thuyết
1.1 Ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình bậc cao, hướng đối tượng được phát triển bởi
Guido Van Rossum vào năm 1989 và ra mắt lần đầu vào năm 1991 Python là
ngôn ngữ thường được sử dụng để phát triển trang web và phần mềm, tự động
hóa tác vụ, phân tích dữ liệu và trực quan hóa dữ liệu Một trong những lợi thế
lớn nhất của Python là nó có nhiều lựa chọn thư viện và #amework được sử
dụng cho mọi thứ từ trực quan hóa dữ liệu, học máy, khoa học đữ liệu, xử lý
ngôn ngữ tự nhiên và phân tích dữ liệu phức tạp
1.2 Môi trường lập trình Visual Studio 2022
Visual Studio 2022 là một môi trường phát triên tich hop (IDE) cua Microsoft
Nó được sử dụng để phát triển chương trình máy tinh cho Microsoft Windows, cũng như các trang web, các ứng dụng web và các dịch vụ web Visual Studio
là một công cụ mạnh và hỗ trợ lập trình trên nhiều ngôn ngữ như: C++,
Python, nên được đông đảo lập trình viên trên thế giới sử dụng
1.3 Thư viện trong lập trình
Đề cài đặt thư viện, sử dụng cú pháp “pip install [tên thư viện]” ở trên terminal của máy tính
Đề thuận tiện hơn trong việc tiến hành thực hiện việc tổ chức đữ liệu và viết chương trình, Nhóm chúng em đã tham khảo và sử dụng một số thư viện sau: 1.3.1 Module trong thư viện Flet:
- UserControl
User Control là một lớp (class) được định nghĩa để tạo ra các điều khiển (controls) giao diện người dùng tùy chỉnh như là các nút bam, 6 nhập liệu, 6 chọn màu, ô chọn ngày tháng Nó cho phép người đùng tạo ra các controls dễ dàng bằng cách kế thừa lớp UserControl và cung cấp các phương thức, thuộc
10
Trang 11tính và chức năng tùy chỉnh Việc sử dụng UserControl giúp cho việc thiết kế
giao diện người dùng trong các ứng dụng trở nên dễ dàng hơn và linh hoạt hơn
- Container
Container là một lớp (class) được định nghĩa để tạo ra các đối tượng chứa các User Control Cac Container 1a cdc panel, frame, groupbox hoac cac container tùy chỉnh khác Container cho phép người dùng tô chức các điều khiến trên giao diện người dùng một cách logic hơn, tạo ra các khu vực chức năng riêng biệt, giúp cho việc sử dụng và tương tác với giao điện người dùng trở nên dễ dang hon
- Row
Row là một control bố trí sắp xếp cách hiển thị các phần tử con của nó dưới dạng một hàng ngang Người dùng sử dụng Row để tạo bố cục ngang cho các control trong tng dung cua minh
Trang 12- Text
Text là một control cho phép hiển thị văn bản Người dùng có thể tạo một Text với thuộc tinh value dé chỉ định nội dung văn bản cần hiển thị và phối hợp cùng các thuộc tính khác như size, color, và italic để tùy chỉnh kiểu chữ và màu sắc văn bản
- FontWeight
FontWeight là một thuộc tính của control Text cho phép người dùng điều khiển
độ đậm của kiểu chữ Giá tri cua FontWeight có thể là các giá trị sau: W_ 100, W_200,W_300,W_400,W_ 500, W_ 600, W_ 700, W_ 800, và WB_900
- ElevatedButton
La một loại nút (Button) được điển màu với viền có dạng bóng đô trong thư viện Flet được sử dụng khi nút cần được nổi bật lên giữa phông nền xung quanh Nó có chức năng tương tự như các nút khác cho phép người dùng tương tác với ứng dụng bằng cách nhắn vào nút đề thực hiện một hành động cụ thê
- icons
Là một loại control hiển thị một biểu tượng Người dùng có thê tìm kiếm danh
sách tất cả các icons có săn bằng cách sử dụng Icons browser được viết bang Flet Icon còn có thể được tùy chỉnh về màu sắc và kích thước
-Page
Page trong thư viện Flet Python là một loai container chứa các View controls
Page có nhiều thuộc tính cho phép tùy chỉnh các thuộc tính như màu nền, thanh
cuộn tự động, thanh tiêu đề và nhiều thuộc tính khác
12
Trang 13- AppBar
Là một control trong thư viện Flet cho phép người dùng tạo một thanh ứng dụng ở đầu trang Nó có thê chứa các nút điều hướng, tiêu dé và các hành động Người dùng còn có thể tùy chỉnh AppBar bằng cách sử dụng các thuộc tính như
mau sac, d6 cao va nhiều thuộc tính khác
1.3.2 Thư viện Polars:
Polars là một thư viện xử lý dữ liệu trong Python được viết bằng ngôn ngữ Rust
mới ra mắt gần đây Polars cung cấp các tính năng tương tự như Pandas, bao
gồm: tạo DataFrame, chọn, lọc, sắp xép, nhóm đữ liệu, tính toán số liệu thống
kê và nhiều hơn nữa Polars có thể được sử dụng cho các mục đích như xử lý
dtr ligu, data pipe, API nhanh va rat hiéu qua
Polars sử dụng định dạng cột Apache Arrow làm mô hình bộ nhớ Apache
Arrow là một định dạng dữ liệu cột tiêu chuẩn được sử dụng để lưu trữ và
truyền tải dữ liệu trong hệ sinh thái Big Data Trong thư viện Polars, cột được định dạng theo chuân Arrow va được biêu diễn bởi các đối tuong pl.Series Mỗi
đối tượng pl.Serles trong Polars đại diện cho một cột dữ liệu Các cột này có
thê chứa các giá trị số, chuối, boolean, thời gian, và nhiêu kiêu dữ liệu khác
Ưu điểm của Polars: Định dạng này cho phép Polars tận dụng các tính năng của Apache Arrow như xử lý các tập dữ liệu lớn với hiệu suất cao và cung cấp
nhiều tính năng phân tích dữ liệu mạnh mẽ Ngoài ra, Polars còn được tích hợp một cách liền mạch với các công cụ khác trong hệ sinh thái Apache Arrow
Trang 14Bảng 1: Dữ liệu các công thức nấu ăn (được lưu dưới dạng csv)
No-Bake | ["1 c firmly packed brown | ["In a heavy 2-quart | www.cookbooks.co | ["brown Nut sugar", "1/2 c evaporated | saucepan, mix brown | m/Recipe- sugar", "milk", Cookies milk” | sugar, nuts ] Details.aspx?id=448 | “vanilla ]
1 | Jewell ["L small jar chipped beef, | ["Place chipped beef | www.cookbooks.co | ["beef", Ball'S cut up” | on bottom of .] m/Recipe- “chicken
Chicken Details.aspx?id=699 | breasts”, .]
2 | Creamy ["2 (16 oz.) pkg frozen | ["In a slow cooker, | www.cookbooks.co | ["frozen corn",
ingredients ] Details.aspx?id=105
2.2 Xử lý dữ liệu
Do dữ liệu được thu thập về trên mạng quá lớn (cỡ 2,6 triệu công thức ~
2,5GB) nên dữ liệu đã được lọc xuống thành 100 công thức vì mục đích thử nghiệm
Sau khi dữ liệu đã được nhập vào chương trình thông qua thư viện Polars, dữ liệu sẽ được chia thành nhiều phần khác nhau theo cột đề ứng dụng có thể sử dụng vào nhiều mục đích khác nhau Cột đầu tiên có thể được dùng dé lọc ra những công thức trùng nhau trong quá trình lưu trữ Cột “NER” có thể sử dụng dành cho việc so sánh giữa các nguyên liệu nấu ăn đã được chọn với công thức
đã có sẵn
Ứng dụng có thê lưu lại những công thức mà người dùng đã chọn “Save” ở
trong ứng dụng băng cách xuất ra một file csv Lần sau khi ứng dụng được mở
lai thi sé chay file csv đó dé hiện lên những công thức đã lưu cho người dùng
14