Tải bản đầy đủ (.pdf) (26 trang)

báo cáo thực hành lập trình trực quan đề tài phần mềm đề xuất món ăn cho thực đơn mỗi ngày

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.76 MB, 26 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b><small>ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN</small></b>

<b><small>KHOA CƠNG NGHỆ PHẦN MỀM</small></b>

<b>BÁO CÁO THỰC HÀNHMơn: Lập trình trực quan</b>

<b> Đề tài: Phần mềm đề xuất món ăn cho thực đơnmỗi ngày</b>

<small> </small>

GVHD: Nguyễn Tấn Toàn

Nhóm:

Vũ Đức Trường - 21520507Lê Ngọc Hưng - 21520889Huỳnh Đăng Quang - 21521336Lê Khai Trí - 21521565

TP.HCM, ngày 14 tháng 01 năm 2023

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>LỜI MỞ ĐẦU</b>

Lời đầu tiên, chúng em xin chân thành gửi lời cảm ơn đến thầy Nguyễn Tấn Tồn, người đã nhiệt tình giúp đỡ, hướng dẫn và định hướng cho nhóm chúng em trong suốt quá trình thực hiện đồ án này.

Trong xã hội ngày nay, các ứng dụng tin học đang ngày càng phát triển và được ứng dụng trong rất nhiều lĩnh vực từ kinh tế đến khoa học xã hội...và đời sống hằng ngày cũng không là ngoại lệ, việc sử dụng các ứng dụng Công nghệ Thông tin là rất hợp lý và cần thiết, nhằm nâng cao chất lượng cuộc sống của mỗi cá nhân. Trên cơ sở đó, nhóm em tạo ra phần mềm này với hi vọng nó có thể mangđến sự thuận tiện hơn trong cuộc sống cho người dùng, đồng thời chúng em cũng có cơ hội ứng dụng các kiến thức học được ở mơn Lập trình trực quan.

Cuối cùng, vì cịn hạn chế về năng lực và kinh nghiệm làm phần mềm, sản phẩm của chúng em khó có thể tránh khỏi những thiếu sót. Kính mong nhận được những góp ý của thầy.

Mục lục

<small>2</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

2.2.4. Trang Đốt cháy calo...17

2.2.5. Trang Tài khoản...20

3.4. Sử dụng các Class trong Model1...25

3.5. Sử dụng Frame để chuyển trang...25

3.6. Sử dụng tham số truyền vào để tương tác với các đối tượng khác nhau....25

Chương 4...27

CÁC HÀM CÀI ĐẶT VÀ...27

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

5.4. Bảng phân công công việc...45

TÀI LIỆU THAM KHẢO...47

1. Dữ liệu của Database:...47

2. Thiết kế giao diện:...48

3. Xử lí số liệu:...49

<small>4</small>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Chương 1 TỔNG QUAN

1.1. Hiện trạng và u cầu thực tế

Hơm nay ăn gì? Một câu hỏi khơng khó, nhưng ít nhiều vẫn khiến chúng ta suy nghĩ. Để bữa ăn tiếp theo không gây nhàm chán, nhưng vẫn cung cấp đủ các thành phần dinh dưỡng đã trở thành bài toán lâu đời cho người nội trợ trong gia đình nói chung cũng như sinh viên đang sống tự lập nói riêng. Giải quyết bài toán này đã trở thành nhu cầu cấp thiết khi con người đang tiếp xúc với tập các món ăn ngày càng đa dạng bới khả năng dễ dàng tiếp cận với nguồn nguyên liệu phong phú cũng như vô vàn các công thức chế biến được hướng dẫn trên không gian mạng.

Nắm bắt được vấn đề nan giải trên, nhóm chúng em đã cho ra đời ứng dụngđề xuất món ăn này, với mục tiêu đưa ra những gợi ý phù hợp nhất, đáp ứng nhu cầu thực đơn hằng ngày cho người sử dụng mà không cần quá nhiều thời gian, công sức cho việc suy nghĩ, lựa chọn.

1.2. Giới thiệu ứng dụng

<b>Hôm nay ăn gì? là phần mềm gợi ý cho người dùng những món ăn phù </b>

hợp nhất dựa trên nhiều cách đề xuất khác nhau cho các bữa sáng, trưa, tối, và đi kèm là công thức chế biến cho các món ăn đó. Đồng thời, ứng dụng sẽ tính tốn lượng calo đã nạp vào dựa trên thực đơn đã chọn, giúp người dùng dễ dàng kiểm soát lượng thức ăn tiêu thụ cho phù hợp với chế độ ăn của mình trong ngày. Cùng với đó, một danh sách các món đã ăn trong 7 ngày trước sẽ được lưu lại nhằm phục vụ mục đích quản lý cho người sử dụng. Bên cạnh đó, có một tính năng nhỏ kèm theo giúp tính tốn thời gian tập luyện để đốt cháy một lượng calo được nhập theo yêu cầu.

1.3. Quy trình thực hiện dự án

- Xác định các tính năng, thơng tin đầu vào, đầu ra của mỗi tính năng- Thiết kế giao diện phần mềm.

- Viết mã và phát triển phần mềm- Bảo trì, nâng cấp, sửa chữa.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Chương 2

THIẾT KẾ GIAO DIỆN VÀ CÁCCHỨC NĂNG

2.1. Các màn hình quản lý tài khoản

Chương 2 1.2

2.1.1. Màn hình đăng nhập

o Giao diện chức năng:

<small>6</small>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

o Mô tả: người dùng đăng nhập bằng số điện thoại và mật khẩu đã được đăng kí. Nếu quên mật khẩu đã được đăng kí, bấm nút “Quên mật khẩu” để chuyển đến màn hình Qn mật khẩu. Nếu chưa có tài khoản, bấm nút “Đăng kí” để đăng kí tài khoản mới.

2.1.2. Màn hình đăng ký

o Giao diện chức năng:

<small>8</small>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

o Mô tả: Người dùng nhập số điện thoại, mật khẩu, email, tên, họ và chọn giới tính. Sau đó bấm đăng kí để đăng kí tài khoản mới. Sau khi bấm đăng kí, người dùng sẽ được chuyển đến màn hình xác thực OTP bằng số điện thoại.

2.1.3. Màn hình xác thực OTP

o Giao diện chức năng:

<small>10</small>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

o Mô tả: Ứng dụng sẽ gửi một mã OTP đến số điện thoại được đăng kí, người dùng nhập mã OTP gồm 6 số vào ô trống và bấm “Xác thực”. Nếu không nhận được mã OTP, người dùng đợi 60 giây và bấm “Gửi lại”. Sau khi bấm “Xác thực”, nếu đăng kí thành cơng, người dùng sẽ được chuyển đến màn hình thơng báo đăng kí thành cơng.

2.1.4. Màn hình thơng báo đăng kí thành công

o Giao diện chức năng: o Mô tả:

2.2. Cửa sổ màn hình chính

- Chức năng cơ bản: chuyển đổi giữa các trang.

<small>12</small>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Tiếp theo, ta đề xuất các món phụ. Đầu tiên là thức uống cho ba bữa ăn. Các món phụ chỉ được đề xuất và thêm vào danh sách đề xuất nếu tổng lượng kcal của ngày đó cộng với kcal món được đề xuất chưa vượt tổng kcal khuyến nghị của một ngày.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Tiếp theo, ta đề xuất món ăn vặt cho hai bữa trưa và tối. Cũng giống như đề xuất thức uống, các món ăn vặt chỉ được đề xuất nếu phù hợp với tổng kcal một ngày.

4.2.2. History Page

Khai thác dữ liệu từ SQL

Đầu tiên để thuận tiện cho việc khai thác dữ liệu ta tạo một property tên UserHistory để lưu tồn bộ những dịng dữ liệu có mã UserId của người dùng hiện tại

<small>44</small>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Trong hàm get của UserHistory có sử dụng 2 hàm là refresh_History() và refresh_UserHistory().

Hàm refresh_History() sẽ đảm nhiệm việc kiểm tra xem dữ liệu trên SQL có thay đổi hay khơng. Nếu có thì sẽ cập nhật lại dữ liệu trên app.

Hàm refresh_UserHistory() sẽ cập nhật lại dữ liệu của UserHistory. Nó đượcgọi sau khi hàm refresh_History() trả về giá trị true (tức là SQL có sự thay đổi). Đồng thời dữ liệu cũng sẽ được sắp xếp theo ngày ăn.

Như vậy 2 hàm trên giúp tránh được việc phải tải lại dữ liệu khi SQL không có cập nhật mới.

Xây dựng cấu trúc dữ liệu đặc thù.

Chức năng History liệt kê thông tin lịch sử ăn trong 7 ngày gần nhất. Vì vậy,tạo một cấu trúc lưu toàn bộ dữ liệu trong một ngày là điều cần thiết. Struct HistoryInDay sẽ lưu tồn bộ thơng tin các món ăn trong một ngày, ngày ăn, và hỗ trợ ln hàm tính Kcal trong buổi ăn.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Sắp xếp và lưu dữ liệu

Hàm GetHistory() return một mảng HistoryInDay tương ứng với lịch sử ăn 7ngày gần nhất. Hàm sẽ duyệt qua toàn bộ dữ liệu trong UserHistory theo thứ tự từcuối đến đầu (Vì dữ liệu đã được sắp xếp tăng dần theo ngày ăn) để đảm bảo có thểlấy dữ liệu 7 ngày ăn mới nhất. Sau đó sắp xếp các món đã ăn vào biếnHistoryInDay của ngày đó dựa theo thuộc tính meal (3 là sáng, 4 là trưa, 5 là tối).

Như vậy ta đã có tồn bộ dữ liệu cần thiết cho phần GUI sử dụng để hiển thị racho người dùng.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Ngoài ra hàm CompareDate() sẽ giúp so sánh 2 ngày. Nếu hàm trả về -1 thì tức là ngày a trước ngày b, trả về 0 ứng với ngày a trùng với ngày b, và trả về 1 ứng với ngày a nằm sau ngày b.

4.2.3. Giải thuật tính thời gian cho từng bài tập

Sau khi nhấn “Tính”, lượng kcal trong textbox được lưu vào biến _totalCalo,kết hợp với trường Kph (lượng kcal tiêu hao trong mỗi giờ) trong đối tượng exercise được chọn, ta dễ dàng tính được khoảng thời gian cần thiết để tiêu thụ lượng kcal được nhập với bài tập này.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Chương 5 TỔNG KẾT

+ Cung cấp cho người dùng một công cụ để thành lập, chỉnh sửa một bữa ăn cho bản thân, tập các bài thể dục một cách trực quan, khoa học.

+ Đề xuất món ăn hợp lí trong một ngày.+ Ghi lại nhật ký, số liệu thống kê của các bữa ăn.

- Học được cách thức, quá trình thực hiện một dự án phần mềm.

- Hiểu và ứng dụng cách sử dụng các cơng nghệ, thư viện mới giúp ích cho việc lập trình ứng dụng.

- Tích góp được nhiều kinh nghiệm trong việc giải quyết các vấn đề liên quan trong quá trình thực hiện một dự án.

5.2. Hạn chế.

- Chỉ có thể sử dụng dữ liệu khi máy người dùng có phần mềm SQL Server.- Lượng kcal, các thơng số dinh dưỡng của các món ăn chỉ là trung bình,

mang tính chất tham khảo.

- Chưa thể cập nhật phần mềm trực tiếp thông qua mạng.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

- Nâng cấp phần mềm để người dùng có thể cập nhật trực tiếp trên ứng dụng mà không cần phải tải lại phần mềm.

5.4. Bảng phân công công việc

STT Người thực hiện Cơng việc Mức độ hồn thành1 Vũ Đức Trường - Làm phần

MainWndow , FoodPage và các thành phần trong SubFoodPage , hỗ trợ làm

RecommendPage , quên mật khẩu- Tạo Model liên kết

database- Phân chia cơng

việc cho nhóm - Tạo database- Làm readme.md

2 Lê Khai Trí - Làm phần LoginWindow , CalorieBurnPage , giao diện của HistoryPage và cácthành phần trong SubCalorieBurn- Viết báo cáo đồ án

file word- Thêm dữ liệu phần

Exercise trong SQL - Thêm hình ảnh

phần Exercies- Tạo database

<small>52</small>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

3 Lê Ngọc Hưng - Làm phần LoginWindow , RecommendPage - Thêm dữ liệu phần

Food vào SQL- Thêm hình ảnh vào

Folder Food- Viết báo cáo đồ án

file word- Tạo database

4 Huỳnh Đăng Quang - Làm phần RegisterPage , AccountPage , Logic phần HistoryPage- Thêm dữ liệu phần

Food vào SQL- Thêm hình ảnh vào

folder Food- Làm powerpoint

báo cáo đồ án- Tạo database

100%

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

TÀI LIỆU THAM KHẢO

1. Dữ liệu của Database:

a) Thức ăn:

class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

App EasyMenu Balanced Meal Plannerb) Thể dục:

2. Thiết kế giao diện:

- App Infinity Health IOS : class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

3. Xử lí số liệu:

a) Lượng kcal một ngày: cap-bao-nhieu-calo-moi-tot-cho-co-the-s195-n25299#:~:text=%2D%20L%C6%B0%E1%BB%A3ng%20calo%20cho%20n%E1%BB%AF%20gi%E1%BB%9Bi,tu%E1%BB%95i%20b%E1%BA%B1ng%20n%C4%83m)%20%2B%205.

Thành phần dinh dưỡng: tieng-viet/dieu-duong/nhu-cau-ve-dinh-duong-khau-phan-an-dieu-duong-cac-roi-loan-ve-chuc-nang-tieu-hoa

<small>

×