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ữ
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KINH TẾ - LUẬT
BÁO CÁO ĐỒ ÁN CUỐI KHÓA
Học kỳ 2: 2022 - 2023
KỸ THUẬT LẬP TRÌNH
PHẦN MỀM
Ứ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 -
2 Nguyễn Thị Hương Giang K224161810
Thành phố Hồ Chí Minh, ngày 19 tháng 04 năm 2023
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Điểm …… Ký tên
Trang 33
LỜI CẢM ƠN
Đầ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, chi 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 4LỜI MỞ ĐẦU
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 đã 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ệ dườ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 thấy 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 55
thừ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 tình 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 6MỤC LỤC
L ỜI CẢM ƠN ……… ……3
L ỜI MỞ ĐẦU ……… …4
MỤC LỤC……… 6
DANH MỤC HÌNH ẢNH ……… 7
DANH M C BỤ ẢNG BIỂ ……….7 U A GIỚI THI U 8Ệ 1 Tên dự án 8
2 Lý do ch n d ọ ự án 8
3 Mục đích dự án 9
4 Ph m vi thạ ực hiện 9
5 Phương pháp nghiên cứu thực hiện 9
B NỘI DUNG 10
1 Cơ sở lý thuyết 10
1.1 Ngôn ng l p trình Python 10ữ ậ 1.2 Môi trường lập trình Visual Studio 2022 10
1.3 Thư viện trong lập trình 10
2 Quy trình thực hiện 13
2.1 Tổ chức dữ liệu 13
2.2 X ử lý dữ liệu 14
2.3 Thi t k giao di n 15ế ế ệ 3 S ự liên k t cế ủa các dữ liệu trong chương trình 17
3.1 Mô hình quan h 17ệ 3.2 Tổ chức thư mục 17
4 Thuật toán chương trình 18
Trang 7100% (3)
87
Business Model Canvas
Trang 8C KẾT QU - Ả ĐÁNH GIÁ 19
1 Kết quả 19
1.1 Th nghi m 19ử ệ 1.2 Kết quả đạt được 25
2 Đánh giá 25
2.1 Ưu điểm 25
2.2 Nhược điểm 25
2.3 Hướng phát triển 25
D KẾT LU N 27Ậ DANH MỤC HÌNH ẢNH Hình 1: Giao diện chọn nguyên liệu nấu ăn 15
Hình 2: Giao diện danh sách các công thức nấu ăn 16
Hình 3: Giao diện trang công thức nấu ăn 16
Hình 4: Giao diện những công thức đã được lưu 17
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 7: Thuật toán của toàn bộ chương trình 18
Hình 8: Giao diện chọn nguyên liệu nấu ăn 19
Hình 9: Giao diện danh sách các công thức nấu ăn 20
Hình 10: Trang công thức nấu ăn 21
Hình 11: Nhiều trang công thức khác nhau 22
Hình 12: Lưu công thức 23
Hình 13: Giao diện những công thức đã được lưu 24
DANH MỤC BẢNG BIỂU Bảng 1: Dữ liệu các công thức nấu ăn 14
Key 10-11glish grade 9
Giao dịch thương… 100% (2)
22
Trang 9vì ta s kiẽ ểm soát đượ lược 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 tủ a hơn so với việc đặt món ăn hoặc mua đồ ăn sẵ ại cửa hàng.n t 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ự ế và xu hước t ng hi n tệ ại, nhóm chúng em đã quyết định lựa chọn đề tài “Phần 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 103 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 Ph m 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 111.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 tích h p (IDE) c a Microsoft ể ợ ủ
Nó được sử dụng để phát triển chương trình máy tính 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 lp 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 dữ liệu và viết chương trình, hóm chúng em đã tham khảo và sử dụng một số thư viện sau:N
1.3.1 Module trong thư viện Flet:
User Control là m t lộ ớp (class) được định nghĩa để ạo ra các điề t u khiển (controls) giao diện người dùng tùy chỉnh như là các nút bấm, ô nhập liệu, ô chọn màu, ô chọn ngày tháng… Nó cho phép người dù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
Trang 12tí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 để ạo ra các đối tượ t ng ch a các ứUser Control Các Container là các panel, frame, groupbox ho c các container ặtùy ch nh khác Container cỉ ho 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 diện người dùng trở nên d ễdàng hơn
- 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 ứng dụng của mình
- Image
Image là một control hi n thể ị đồ h a hình nh ọ ả Người dùng có th s ể ửdụng Image để ể hi n th hình nh trong ng d ng c a mình ị ả ứ ụ ủ đồng th i s dờ ử ụng các thuộc tính khác như width, height, và fit để điều khiển kích thước và cách hiển thị của hình ảnh
- Imagefit
ImageFit là m t thu c tính cộ ộ ủa control Image cho phép người dùng điều khiển cách hình ảnh được hi n th và b c c c a nó trong không gian Giá tr cể ị ố ụ ủ ị ủa ImageFit có th là: ể NONE (mặc định), CONTAIN, COVER, FILL, FIT_HEIGHT, FIT_WIDTH, SCALE_DOWN
- Column
Trong thư viện Flet cho Python, Column là một control b trí s p x p ố ắ ế cách hiển thị các ph n t con c a nó theo m t c t dầ ử ủ ộ ộ ọc Người dùng có th s d ng ể ử ụColumn để ạ t o b c c dố ụ ọc cho các control trong ng d ng c a mình ứ ụ ủ
Trang 1312
- 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 tính value để 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á tr của FontWeight có th là các giá tr sau: W_100, ị ể ịW_200, W_300, W_400, W_500 W_60, 0, W_700, W_800, và W_900
- ElevatedButton
Là 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 b ng ế ằ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 loại 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
Trang 14- 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 đề 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ư ỉmàu sắc, độ cao và 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 dắ ế ữ 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ý
dữ liệu, data pipe, API nhanh và r t hi u qu ấ ệ ả
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ả ữ ệu trong hệ sinh thái Big Data Trong thư việli n Polars, cột được
định dạng theo chuẩn Arrow và được biểu diễn bởi các đối tư ng pl.Series M i ợ ỗđối tượng pl.Series 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 ỗ ờ ề ể ữ ệu khác li
Ư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 1514
Bảng 1: Dữ liệu các công th ức nấu ăn (được lưu dưới dạ ng csv)
["In a heavy 2-quart saucepan, mix brown sugar, nuts… ]
www.cookbooks.co m/Recipe- Details.aspx?id=448
["brown sugar", "milk",
["beef",
"chicken breasts", …]
2 Creamy
Corn
["2 (16 oz.) pkg frozen corn", …]
["In a slow cooker, combine all ingredients…]
www.cookbooks.co m/Recipe- Details.aspx?id=105
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 để ọc ra lnhữ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 ởlại thì sẽ chạy file csv đó để hiện lên những công thức đã lưu cho người dùng