Giới thiệu đề tài
Hàng ngày, do bận rộn, chúng ta thường không quan tâm và để ý đến các thói quen ăn uống, để xem liệu mình ăn uống có khoa học hay chưa, có đủ chất hay không? Và đôi khi, chúng ta cũng lầm tưởng rằng mình đang có một thói quen ăn uống tốt Tuy nhiên, việc tìm hiểu xem trong một ngày, những thứ chúng ta ăn có cung cấp đủ hàm lượng dinh dưỡng cần thiết cho cơ thể không lại là điều mà rất nhiều người chưa để ý tới, hoặc họ chưa biết cách tính toán xem làm thế nào để biết hôm nay mình đã ăn thừa hay thiếu chất? Chính vì vậy, ngày nay, khi cuộc sống ngày càng được cải thiện, vấn đề quản lý dinh dưỡng đã trở thành một nhu cầu thiết yếu đối với con người.
Mục đích đề tài
Ứng dụng tư vấn dinh dưỡng và sức khỏe được xây dựng trên nền tảng Android với mục tiêu hỗ trợ người dùng tìm kiếm thông tin và tư vấn nhanh chóng, chính xác về dinh dưỡng và sức khỏe Ứng dụng này nhằm phục vụ đối tượng có nhu cầu tư vấn về dinh dưỡng và sức khỏe, giúp họ quản lý sức khỏe và dinh dưỡng hiệu quả hơn.
Một trong các mục đích khác là ứng dụng cung cấp hệ thống hỗ trợ riêng cho người tập thể hình trên website online.
Mục tiêu đề tài
Lý thuyết
Nghiên cứu công cụ đồ họa như: photoshop, corel draw
Nghiên cứu lập trình trên hệ điều hành android.
Nghiên cứu ngôn ngữ lập trình java.
Nghiên cứu xây dựng giao diện với xml trong android.
Nghiên cứu hệ quản trị cơ sở dữ liệu MySQL, SQLite Administator
Nghiên cứu html, css, javascript.
Thực tiễn
Mục tiêu của đề tài là xây dựng ứng dụng cung cấp thông tin tư vấn sức khỏe và dinh dưỡng trên các thiết bị di động với kho dữ liệu phong phú được lưu trữ trên server Bên cạnh đó, ứng dụng có cung cấp hệ thống hỗ trợ riêng cho người tập thể hình trên website online.
Xây dựng phần mềm phải đảm bảo được những yêu cầu sau:
Do thời gian thực hiện cũng như năng lực có hạn nên ứng dụng được xây dựng chỉ tập trung vào những phần sau:
Hệ thống được cài đặt trên các thiết bị di động cài đặt hệ điều hành Android
Xây dựng hệ thống kết nối client – server
Hệ thống hỗ trợ tính năng nhiều người truy cập cùng lúc một lúc
Cho phép người dùng tìm kiếm tư vấn về sức khỏe cũng như thành phần dinh dưỡng của các loại thực phẩm hằng ngày
Cho phép tính toán Basal metabolic rate (BRM) hay còn gọi là lượng năng lượng tiêu thụ của người dùng.
Cho phép người dùng truy cập website online hỗ trợ dành cho người tập gym.
Cách thức hoạt động
Để bắt đầu sử dụng, người sử dụng không cần phải sử dụng tài khoản:
Ứng dụng cung cấp các tư vấn sức khỏe đa dạng, người dùng có thể dễ dàng tìm kiếm theo nhu cầu của mình Sau khi chọn loại tư vấn mong muốn, ứng dụng sẽ nhanh chóng hiển thị danh sách các tư vấn cụ thể và chính xác, giúp người dùng tiếp cận thông tin sức khỏe đáng tin cậy một cách tiện lợi.
Khi người dùng muốn tra cứu thành phần dinh dưỡng của các loại thực phẩm, ứng dụng sẽ hiển thị danh sách từng loại thực phẩm kèm theo đó là chi tiết thành phần dinh dưỡng của từng thực phẩm Ứng dụng cũng cho phép người dùng tìm kiếm theo tên thực phẩm.
Người sử dụng có thể tính lượng năng lượng tiêu thụ BRM của mình bằng cách nhập các thông tin: chiều cao, cân nặng, giới tính.
Người dùng có thể dễ dàng truy cập vào các bài hướng dẫn tập gym dành riêng cho từng đối tượng nam hoặc nữ Khi lựa chọn, ứng dụng sẽ hiển thị một trang web trực tuyến cung cấp các bài tập gym cụ thể giúp người dùng đạt được mục tiêu tập luyện của mình.
Các bước nghiên cứu
Nghiên cứu cơ sở lý thuyết của công nghệ đã chọn
Áp dụng lý thuyết vào xây dựng ứng dụng thực tiễn
Kiểm tra, tham khảo các ứng dụng khác để tối ưu hóa ứng dụng
CÔNG NGHỆ SỬ DỤNG 2.1 Hệ điều hành Android
Giới thiệu về nền tảng Android
Hình 2.1: Hệ điều hành Android
Android là hệ điều hành nguồn mở dựa trên nền tảng Linux, được thiết kế cho các thiết bị di động như điện thoại thông minh và máy tính bảng Ban đầu được phát triển bởi Công ty Android, Android sau đó được Google mua lại vào năm 2005.
Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở, một hiệp hội gồm các công ty phần cứng, phần mềm và viễn thông, với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008.
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng ngôn ngữ lập trình Java có sửa đổi.
Vào tháng 10 năm 2012 đã có khoảng 700.000 ứng dụng trên Android.
Số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt.Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, có giá rẻ chạy trên các thiết bị công nghệ cao Kết quả là điện thoại và máy tính bảng Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày
Hình 2.2:Sự tăng trưởng của các nền tảng di động.
* Các thành phần trong ứng dụng Android
Android project là một hệ thống thư mục file chứa toàn bộ source code, tài nguyên… mà mục đích cuối cùng là để đóng gói thành một file apk duy nhất. Trong một thư mục project, có một số thành phần (file, thư mục con) được tạo ra mặc định, còn lại phần lớn sẽ được tạo ra sau nếu cần trong phát triển ứng dụng
Hình 2.3 Các thành phần trong một Android project
Src/: Chứa toàn bộ source code (file java hoặc aidl)
Bin/: Thư mục chứa file Output sau khi build Đây là nơi bạn có thể tìm thấy file apk
Gen/: Chứa file java tạo ra bởi ADT plug-in, như là file R.java hoặc các giao diện tạo ra từ file AIDL.
Res/: Chứa các tài nguyên (resource) cho ứng dụng chẳng hạn như file hình ảnh, file layout, các chuỗi (string)…Dưới đây là các thư mục con của nó.
Anim/: Chứa các file xml dùng cho việc thiết lập các hiệu ứng động(animation).
Color/: Chứa các file xml dùng định nghĩa màu sắc.
Drawable/: Chứa hình ảnh (png, jpeg, gif), file xml định nghĩa cách vẽ các loại hình dạng khác nhau (shape).
Layout/: Chứa file xml dùng để dựng giao diện người dùng.
Menu/: Chứa file xml quy định application menu.
Raw/: Chứa các file media, chẳng hạn như mp3, ogg
Values/: Chứa file xml định nghĩa các giá trị Khác với các resource trong thư mục khác, resource ở thư mục này khi định danh trong lớp R thì sẽ không sử dụng file name để định danh mà sẽ được định danh theo quy định bên trong file xml đó.
Xml/: Dùng chứa các file xml linh tinh khác, chẳng hạn như file xml quy định app widget, search metadata,…
Libs/: Chứa các thư viện riêng.
The AndroidManifest.xml file serves as a configuration hub for various application components, including activities, services, intents, and receivers It orchestrates their interactions within the app and defines how the app communicates with external apps Additionally, the manifest declares the permissions required for the app to access device resources.
Build.properties/: Tùy chỉnh các thiết lập cho hệ thống build, nếu bạn sử dụng Eclipse thì file này không cần thiết.
Build.xml/: Chỉ sử dụng khi dùng dòng lệnh để kiến tạo project.
Default.properties/: File này chứa các thiết lập cho project, chẳng hạn như build target, min SDK version…(tốt hơn hết là không nên chỉnh sửa file này bằng tay)
Ngôn ngữ Java
Java là công nghệ xây dựng các phần mềm ứng dụng có vị trí rất lớn trong những năm cuối thế kỉ 20 đầu thế kỉ 21.Nó được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần.
Ngôn ngữ Java xuất hiện đầu tiên năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsoftsystems Sau này không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó có máy ảo Java với bộ thông dịch có vai trò trung tâm.
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch.Chương trình nguồn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy.
Một chương trình viết bằng ngôn ngữ Java có thể chạy trên các máy tính có hệ điều hành khác nhau (Window, Unix, Linux, …) miễn sao ở đó có cài đặt máy ảo java (Java Virtual Machine)
Hướng đối tượng trong Java tương tự như C++, nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn Tất cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp Hướng đối tượng trong Java không có tính đa kế thừa
(multi inheritance) như trong C++ mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa Vấn đề này sẽ được bàn chi tiết trong phần sau.
2.1.2.4 Đa nhiệm - đa luồng (MultiTasking - Multithreading)
Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình có thể chạy song song cùng một thời điểm và tương tác với nhau.
Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy ảo Java là có thể chạy được trên bất kỳ máy tính dùng hệ điều hành nào có máy ảo Java (Viết một lần, chạy mọi nơi).
2.1.2.6 Hỗ trợ mạnh cho việc phát triển ứng dụng
Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem”, công ty đã phát minh ra ngôn ngữ Java Công nghệ Java cung cấp nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển nhiều loại hình ứng dụng khác nhau Công nghệ Java được chia làm ba bộ phận cụ thể như sau:
J2SE (Java 2 Standard Edition): Gồm các đặc tả, công cụ, API của nhân Java giúp phát triển các ứng dụng trên desktop và định nghĩa các phần thuộc nhân của Java
J2EE (Java 2 Enterprise Edition): Gồm các đặc tả, công cụ, API mở rộng J2SE để phát triển các ứng dụng qui mô xí nghiệp, chủ yếu để chạy trên máy chủ (server) Bộ phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng Java để làm các ứng dụng web
J2ME (Java 2 Micro Edition): Gồm các đặc tả, công cụ, API mở rộng để phát triển các ứng dụng Java chạy trên điện thoại di động, thẻ thông minh, thiết bị điện tử cầm tay, robo và những ứng dụng điện tử khác
Java Development Kit (JDK - Bộ công cụ cho người phát triển ứng dụng bằng ngôn ngữ lập trình Java) là một tập hợp những công cụ phần mềm được phát triển bởi Sun Microsystems dành cho các nhà phát triển phần mềm, dùng để viết những applet Java hay những ứng dụng Java.Bộ công cụ này được phát hành miễn phí, gồm có trình biên dịch, trình thông dịch, trình giúp sửa lỗi (debugger), trình chạy applet và tài liệu nghiên cứu.
Kể từ khi ngôn ngữ Java ra đời, JDK đã trở thành bộ phát triển phần mềm được nhiều người sử dụng nhất Vào ngày 17 tháng 11 năm 2006, Sun Microsystems tuyên bố rằng JDK sẽ được phát hành theo giấy phép GNU General Public License (GPL), theo đó JDK trở thành phần mềm miễn phí Quyết định này được thực hiện vào ngày 8 tháng 5 năm 2007.
Ngôn ngữ XML
XML (Extensible Markup Language) là một ngôn ngữ đánh dấu cho phép người dùng tạo thẻ tùy chỉnh Nó được W3C phát triển để khắc phục hạn chế của HTML, ngôn ngữ cơ bản của trang web Tương tự như HTML, XML cũng dựa trên SGML (Standard Generalized Markup Language) và có nhiều đặc điểm:
Dễ dàng viết được các chương trình xử lý dữ liệu.
Tài liệu XML dễ đọc và có tính hợp lý cao.
XML dễ dàng được sử dụng trên Internet.
XML hỗ trợ nhiều ứng dụng.
Không đặt nặng tính hình thức trong nội dung thẻ.
Các loại văn bản XML:
Văn bản không hợp lệ: không theo nguyên tắc cú pháp được quy định bởi đặc tính kỹ thuật XML
Văn bản hợp lệ: tuân theo nguyên tắc cú pháp XML và quy định trong DTD hoặc lược đồ
Văn bản chuẩn: tuân theo quy tắc cú pháp XML nhưng không có DTD hoặc lược đồ
Một tài liệu XML được chia thành hai phần chính:
Phần khai báo: khai báo cho tài liệu XML.
- Khai báo phiên bản, bảng mã ký tự sử dụng trong tài liệu.
- Định nghĩa kiểu cho tài liệu
Phần thân: chứa nội dung dữ liệu
- Gồm một hay nhiều phần tử,
- Mỗi phần tử được chứa trong một cặp thẻ,
- Phần tử đầu tiên là phần tử gốc (root element).
2.1.4 Các công cụ hỗ trợ lập trình trên nền Android
Các ứng dụng Android và các thành phần cơ bản hầu hết được viết bằng Java Thay vì sử dụng máy ảo Java, Android sử dụng máy ảo riêng Máy ảo của Android được thiết kế và tối ưu cho các hệ thống nhỏ, không tương thích với máy ảo Java của Java ME Những hệ thống nhỏ này có dung lượng RAM nhỏ, CPU chậm và hầu hết không có chỗ để tráo đổi dữ liệu bù đắp cho dung lượng bộ nhớ nhỏ Đây là điểm khác biệt giữa Android với các hệ điều hành cho di động khác như Symbian, iOS của Apple, webOS của Palm. Ngôn ngữ lập trình được sử dụng chính là C, C++ và objective C, trong khi với webOS sử dụng chủ yếu ngôn ngữ web như Javascript hay HTML.
Trình biên dịch byte code là máy ảo Dalvik Thay vì sử dụng dạng byte code thông thường, Dalvik có định dạng riêng để phù hợp với yêu cầu đối với thiết bị cho Android Mã của Android nhỏ hơn so với mã của Java và file dex được tạo ra cũng nhỏ.
Android SDK là bộ công cụ phát triển phần mềm cho phép lập trình viên tạo ra các ứng dụng cho các thiết bị sử dụng nền tảng Android AndroidSDK bao gồm nền tảng Android, các công cụ, chương trình mẫu và các tài liệu hỗ trợ Nó cũng là thành phần bổ sung trong bộ phát triển Java và có thể tích hợp vào Eclipse
Android chứa các gói hỗ trợ các chức năng tính toán cơ bản như quản lí xâu, quản lí vào ra, tính toán từ các gói cơ bản trong Java:
Java.lang – lớp ngôn ngữ cơ bản của java.
Java.io – quản lí vào ra.
Java.net – quản lí kết nối mạng.
Java.text – tiện ích xử lí văn bản.
Java.math – hỗ trợ tính toán.
Java.sercurity – quản lí các thành phần bảo mật.
Java.xml – các lớp về XML.
org.apache – các lớp liên quan HTTP.
Ngoài ra Android có các lớp riêng như:
android.app – truy cập mô hình ứng dụng Android.
android bluetooth – chức năng bluetooth của Android.
android.content - quản lí dữ liệu trong Android.
android.net – chứa các lớp Uri dùng để truy cập dữ liệu.
android.graphics – các thành phần đồ hoạ
android location – các dịch vụ liên quan đến vị trí (GPS)
android.opengl – các lớp OpenGL.
android.view – chứa các thành phần giao diện.
android.webkit – chức năng của trình duy ệt web.
android.widget – các thành phần giao diện khác Ở đây chúng ta xem xét lập trình Android với Eclipse vì Eclipse cung cấp phong phú các thành phần hỗ trợ biên soạn java, môi trường debug,ngoài ra còn có thể quản lí và điều khiển các yếu tố khác của ứng dụngAndroid.
Genymotion là một phần mềm giúp tạo các máy ảo Android trên máy tính để có thể thoải mái cài và sử dụng ứng dụng các từ Google Play.
Người dùng cũng được phép truy cập vào những thành phần hệ thống khác, ví dụ như homescreen, phần cài đặt, thanh thông báo y hệt như trên thiết bị di động và hoàn toàn miễn phí Genymotion thực chất sử dụng VirtualBox để tạo ra các máy ảo, tuy nhiên phần mềm này sẽ giúp người dùng đơn giản được nhiều bước thiết lập.
Tăng tốc độ xử lý đồ họa của OpenGL để có chất lượng xem 3D tốt hơn.
Cài đặt ứng dụng trực tiếp từ Google Play.
Hỗ trợ chế độ xem toàn màn hình, giúp người dùng trải nghiệm các ứng dụng Android một cách mới mẻ.
Khởi động các máy ảo cùng lúc.
Quản lý các cảm biến: o Tình trạng pin o GPS o Máy ảnh
Trực tiếp ra lệnh cho các cảm biến máy ảo từ shell của Genymotion
Tương thích hoàn toàn với ADB Bạn có thể kiểm soát máy ảo từ máy chủ
Tùy chỉnh máy ảo: độ phân giải màn hình, dung lượng bộ nhớ, dung lượng CPU
Tải và thiết lập máy ảo Genymotion phiên bản mới nhất một cách dễ dàng
JSON (JavaScript Object Noattion) là một định dạng hoán vị dữ liệu nhanh Chúng giúp dễ dàng cho chúng ta đọc và viết JSON là một định dạng kiểu text mà hoàn toàn độc lập với các ngôn ngữ hoàn chỉnh, thuộc họ hàng với các ngôn ngữ C, gồm có C, C++, C#, Java, JavaScript, Perl, Python, và nhiều ngôn ngữ khác Những đặc tính đó đã tạo nên JSON một ngôn ngữ hoán vị dữ liệu lý tưởng.
JSON được xây dựng trên 2 cấu trúc:
Mảng kết hợp là một tập hợp các cặp tên-giá trị (name-value) Trong các ngôn ngữ lập trình khác nhau, chúng còn được gọi là đối tượng, bản ghi, cấu trúc, từ điển, bảng băm, danh sách được đánh khóa hoặc mảng liên hợp.
Là một tập hợp các giá trị đã được sắp xếp Trong hầu hết các ngôn ngữ, this được nhận thấy như là một mảng, véc tơ, tập hợp hay là một dãy sequence. Đây là một cấu trúc dữ liệu phổ dụng Hầu như tất cả các ngôn ngữ lập trình hiện đại đều hổ trợ chúng trong một hình thức nào đó Chúng tạo nên ý nghĩa của một định dạng hoán vị dữ liệu với các ngôn ngữ lập trình cũng đã được cơ sở hoá trên cấu trúc này.
- Một đối tượng là mộttập hợp của các cặp tên và giá trị Một đối tượng bắt đầu bởi dấu ngoặc đơn trái “{“ và kết thúc với dấu ngoặc đơn phải “}”. Từng tên được theo sao bởi dấu 2 chấm “:” và các cặp tên/giá trị được tách ra bởi dấu phẩy “,”.
Hình 2.5: Một đối tượng của JSON
- Một mảng là 1 tập hợp các giá trị đã được sắp xếp Một mảng bắt đầu bởi dấu mở ngoặc vuông “[“ và kết thúc với dấu ngoặc vuông phải “]” Các giá trị được cách nhau bởi dấu phẩy “,”.
Hình2.6: Một mảng của JSON
- Một giá trị có thể là 1 chuỗi string trong những trích dẫn kép hay là 1 số, hay true hay false hay null, hay là một đối tượng hay là một mảng. Những cấu trúc này có thể đã được lồng vào nhau.
Hình 2.7: Một giá trị của JSON
- Một chuỗi string là 1 tập hợp của zero hay ngay cả mẫu tự Unicode,được bao bọc trong các dấu trích dẫn kép ("), dùng để thoát ra dấu chéo ngược 1 ký tự đã được hiển thị như là 1 chuỗi ký tự đơn độc 1 chuỗi string rất giống như là chuỗi string C hay là Java.
Hình 2.8: Một chuối của JSON
MYSQL
Hình 2.9: LAMP (Linux – Apache -MySQL – PHP)
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành, cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet.MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OSX, Unix, FreeBSD, NetBSD, Novell NetWare, SGIIrix, Solaris, SunOS,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,
Một số đặc điểm của MySQL
MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server của Microsoft).
MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu.
MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến CSDL.
Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập và mật khẩu của tài khỏan có quyền sử dụng CSDL đó Nếu không,chúng ta sẽ không làm được gì cả, giống như quyền chứng thực người dùng trong SQL Server vậy.
Giao thức HTTP
HTTP (Hypertext Transfer Protocol) is a set of rules for transferring files, such as text, images, sound, video, and other multimedia files, over the World Wide Web (WWW) It is an application protocol that runs on top of the Transmission Control Protocol/Internet Protocol (TCP/IP) suite, which are the fundamental protocols for the Internet.
PHP
PHP (Hypertext Preprocessor) là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh, chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
PHP được phát triển từ một sản phẩm có tên là PHP/FI PHP/FI do Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của ông trên mạng Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home Page Tools'.Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và giúp cho người sử dụng phát triển các ứng dụng web đơn giản.Rasmus đã quyết định công bố mã nguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn.
PHP/FI (viết tắt của "Personal Home Page/Forms Interpreter") là tiền thân của PHP với các tính năng cơ bản PHP/FI hỗ trợ các biến kiểu Perl, tự động xử lý các biến biểu mẫu và cú pháp tương tự PHP hiện đại.
HTML nhúng Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều, đơn giản và có phần thiếu nhất quán.
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền đã được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng Internet Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một thời gian khá dài chỉ được công bố dưới dạng các bản beta Nhưng không lâu sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0, PHP 4.0, PHP 5.0 …
Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực hiện các câu truy vấn Ngoài ra, trong PHP 5.1, các nhà phát triểnPHP tiếp tục có những cải tiến trong nhân Zend Engine 2, nâng cấp mô đunPCRE lên bản PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP,streams và SPL.
Adobe Photoshop
Adobe Photoshop (PS) là một phần mềm chỉnh sửa đồ họa được phát triển và phát hành bởi hãng Adobe Systems ra đời vào năm 1988 trên hệ máy Macintosh.Photoshop được đánh giá là phần mềm dẫn đầu thị trường về chỉnh sửa ảnh và được coi là chuẩn cho các ngành liên quan tới chỉnh sửa ảnh.Từ phiên bản Photoshop 7.0 ra đời năm 2002, Photoshop đã làm lên một cuộc cách mạng về ảnh bitmap.Phiên bản mới nhất hiện nay là Adobe Photoshop CS6.
Ngoài khả năng chính là chỉnh sửa ảnh cho các ấn phẩm, Photoshop còn được sử dụng trong các hoạt động như thiết kế trang web, vẽ các loại tranh (matte painting và nhiều thể loại khác), vẽ texture cho các chương trình 3D gần như là mọi hoạt động liên quan đến ảnh.
Adobe Photoshop có khả năng tương thích với hầu hết các chương trình đồ họa khác của Adobe như Adobe Illustrator, Adob Premiere , After AfterEffects và Adobe Encore.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG31 3.1 Biểu đồ Usecase
Biểu đồ trình tự
Biểu đồ trình tự mô tả Usecase tư vấn sức khỏe
Hình 3.2 Biểu đồ trình tự mô tả use case Tư vấn sức khỏe
Biểu đồ trình tự mô tả Usecase Tra cứu dinh dưỡng thực phẩm
Hình 3.3 Biểu đồ trình tự mô tả Usecase Tra cứu dinh dưỡng thực phẩm
Biểu đồ trình tự mô tả Usecase Hướng dẫn Gym
Hình 3.4 Biểu đồ trình tự mô tả Usecase Hướng dẫn Gym
Biểu đồ trình tự mô tả Usecase Quản lí Calo
Hình 3.5 Biểu đồ trình tự mô tả Usecase Quản lí Calo
Biểu đồ lớp
Tên lớp Hàm Mô tả
MainActivity OnCreate() Phương thức khởi tạo
SlideMenuActivity OnCreate() Phương thức khởi tạo
JSONAsyncTask onPreExecute() Hiển thị màn hình chờ doinBackground() Load dữ liệu từ server onPostExecute Hàm điều kiện
TuVanActivity OnCreate() Phương thức khởi tạo
OnCreate() Phương thức khởi tạo
NoiDungTuVanActivity OnCreate() Phương thức khởi tạo
TraCuuActivity OnCreate() Phương thức khởi tạo
DSThucPhamActivity OnCreate() Phương thức khởi tạo
ThanhPhanDDActivity OnCreate() Phương thức khởi tạo
TuVanActivity OnCreate() Phương thức khởi tạo
OnCreate() Phương thức khởi tạo
NoiDungTuVanActivity OnCreate() Phương thức khởi tạo
Bảng 3.6 Bảng mô tả các lớp
Thiết kế một số module chính của hệ thống
3.4.1 Module tìm kiếm theo tên thực phẩm
Module được xây dựng với mục đích cho phép người dùng kiếm thông tin thực phâm theo tên thực phẩm
- Dữ liệu vào : Tên thực phẩm
- Dữ liệu đầu ra: Hiển thị thành phần dinh dưỡng của thực phẩm
- Sơ đồ khối như hình :
Hình 3.7 Sơ đồ khối module tìm kiếm thông tin thực phẩm theo tên thực phẩm
3.4.2 Module thống kê thành phần dinh dưỡng
- Mục đích của module này nhằm thống kê các thực phẩm theo thành phần dinh dưỡng, chẳng hạn như: chất đạm, chất béo , đường,…
- Dữ liệu đầu vào: thành phần dinh dưỡng cần thống kê và cấp độ cần thống kê
- Dữ liệu đầu ra: Hiển thị danh sách thực phẩm theo thành phần dinh dưỡng
- Sơ đồ khối như hình:
Hình 3.8 Sơ đồ khối module thống kê thành phần dinh dưỡng
3.4.3 Module tính lượng calo cần hấp thụ
- Mục đích của module: Module được xây dựng với mục đích tính tổng lượng calo hấp thụ trong ngày
- Dữ liệu đầu vào: Cân nặng và trạng trái hoạt động do người dùng nhập vào
- Xử lí dữ liệu vào:
Basal metabolic rate (BRM): Tỷ lệ trao đổi chất cơ bản (là lượng năng lượng tiêu thụ tối thiểu để duy trì sự sống Nó bao gồm các năng lượng bỏ ra để duy trì các hoạt động sống của cơ thể như: Hoạt động não bộ, tuần hoàn, hô hấp, sinh nhiệt, )
Nam: [ (13.397 x Trọng lượng kg) + (4.799 x Chiều cao cm) - (5.677 x Tuổi năm) + 88.362 ]
Nữ : [ (9.247 x Trọng lượng kg) + (3.098 x Chiều cao cm) - (4.330 x Tuổi năm) + 447.593 ]
Từ kết quả lượng calo tiêu thụ trong 1 ngày ở trạng thái nghỉ ngơi, ta cần tính toán thêm để biết lượng calo tiêu thụ phù hợp với cường độ vận động của mỗi người:
Lượng calo cần thiết để duy trì cân nặng của bạn:
• Nhóm 1 Ít hoặc không vận động: BRM x 1.2
• Nhóm 2 Vận động nhẹ: 1-3 lần/1 tuần: BRM x 1.375
• Nhóm 3 Vận động vừa phải: 3-5 lần/ 1 tuần: BRM x 1.55
• Nhóm 4 Vận động nhiều: 6-7 lần/1 tuần: BRM x 1.725
• Nhóm 5 Vận động nặng: Trên 7 lần 1 tuần: BRM x 1.9
- Dữ liệu đầu ra: Tổng lượng calo cần hấp thụ trong ngày.
Hình 3.9 Sơ đồ khối module tính lượng calo cần hấp thụ
Biểu đồ hoạt động
3.5.1 Hiển thị danh sách tư vấn
Khi người dùng chọn chức năng tư vấn sức khỏe, quá trình hiển thị thông tin sẽ diễn ra:
Hiển thị danh sách tư vấn
Bảng 3.7 Biểu đồ hiển thị danh sách tư vấn sức khỏe
Thông báo kiểm tra lại kết nối
Bắt đầu Kiểm tra kết nối
Danh mục các loại tư vấn sức khỏe
Hiển thị các mục tư vấn
Khi người dùng chọn chức năng tra cứu dinh dưỡng, quá trình hiển thị thông tin sẽ diễn ra:
Hiển thị danh sách tư vấn
Bảng 3.8 Biểu đồ hiển thị tra cứu dinh dưỡng
Thông báo kiểm tra lại kết nối
Bắt đầu Kiểm tra kết nối
Hiển thị các mục tư vấn
Hiển thị danh sách tư vấn
Bảng 3.9 Biểu đồ hiển thị tính BMI, BRM
3.5.4 Hiển thị hướng dẫn Gym
Hiển thị danh sách tư vấn
Bảng 3.10 Biểu đồ hiển thị hướng dẫn Gym
Thông báo kiểm tra lại kết nối
Bắt đầu Kiểm tra kết nối
Hiển thị danh mục hướng dẫn Gym
Mô hình kết nối Android với PHP và MySQL
Để ứng dụng Android thực hiện các hoạt động cơ bản (Create, Read, Update, Delete) thì sẽ cần gọi một Script PHP để thực hiện.Đầu tiên ứng dụng Android sẽ gọi một Script PHP để thực hiện một hoạt động dữ liệu Các script PHP sau đó kết nối với cơ sở dữ liệu MySQL để thực hiện các hoạt động.
Vì vậy, các luồng dữ liệu sẽ từ ứng dụng Android đến script PHP và cuối cùng được lưu trữ trong cơ sở dữ liệu MySQL.
Hình 3.10: Mô hình kết nối Android với PHP và MYSQL
Sử dụng mySQL để quản lí dữ liệu trên server
Hình 3.11 Kết nối MySQL với Server
Các bảng trong cơ sở dữ liệu
Tên cột Dữ liệu Diễn giải
_mathucpham INTEGER Khóa chính mã thực phẩm tenthucpham TEXT Tên thực phẩm calo INTEGER Lượng calo protein Float Lượng đạm duong Float Lượng đường xo Float Lượng chất xơ
_maloaithucpham INTEGER Khóa ngoại mã loại thực phẩm
Bảng 3.11 Thông tin bảng thực phẩm
Bảng danh mục thực phẩm
Bảng 3.12 Thông tin bảng danh mục thực phẩm
Tên cột Dữ liệu Diễn giải
_maloaithucpham INTEGER Khóa chính mã danh mục thực phẩm tenloaithucpham TEXT Tên danh mục
Bảng danh mục tư vấn
Bảng 3.13 Thông tin bảng danh mục tư vấn
Bảng 3.14 Thông tin bảng tư vấn
Bảng danh mục hướng dẫn Gym
Tên cột Dữ liệu Diễn giải
_maloaituvan INTEGER Khóa chính mã danh mục tư vấn tenloaituvan TEXT Tên danh mục
Tên cột Dữ liệu Diễn giải
_matuvan INTEGER Khóa chính mã tư vấn tentuvan TEXT Tên tư vấn noidung TEXT Nội dung tư vấn
_maloaituvan INTEGER Khóa ngoại mã loại tư vấn
Tên cột Dữ liệu Diễn giải
_maloaihuongdan INTEGER Khóa chính mã danh mục hướng dẫn Gym tenloaihuongdan TEXT Tên danh mục
Bảng 3.15 Thông tin bảng danh mục hướng dẫn Gym
Bảng 3.16 Thông tin bảng hướng dẫn Gym
Bảng 3.17 Thông tin bảng ảnh thực phẩm
Tên cột Dữ liệu Diễn giải
_matuvan INTEGER Khóa chính mã tư vấn tenhuongdanGym TEXT Tên bài tập hướng dẫn gym noidung TEXT Nội dung
_maloaihuongdanGym INTEGER Khóa ngoại mã loại hướng dẫn Gym
Tên cột Dữ liệu Diễn giải
_maanh INTEGER Khóa chính mã ảnh
Link_anh TEXT Đường dẫn lưu trữ ảnh thực phẩm
_mathucpham INTEGER Khóa ngoại mã thực phẩm
HƯỚNG DẪN SỬ DỤNG ỨNG DỤNG 4.1 Giao diện chính
Tư vấn sức khỏe
Hình 4.2 Giao diện chức năng Tư vấn sức khỏe
Mô tả Tư vấn sức khỏe
Tên sự kiện Mô tả
Form load Màn hình hiển thị danh mục loại tư vấn,
Màn hình hiển thi danh sách tư vấn
Màn hình hiển thị nội dung tư vấn
[Loại tư vấn] Click Chuyển sang màn hình danh sách tư vấn
Tải về danh sách tư vấn
Chuyển sang màn hình nội dung tư vấn
Hiển thị nội dung tư vấn vừa được tải về ở sự kiện [Danh mục tư vấn]Click
Bảng 4.1 Mô tả chức năng “tư vấn sức khỏe”
Tra cứu dinh dưỡng
Hình 4.3 Giao diện chức năng Tra cứu dinh dưỡng
Mô tả Tra cứu dinh dưỡng
Tên sự kiện Mô tả
Form load Màn hình danh mục loại thực phẩm
Màn hình danh sách thực phẩm
Màn hình hiển thị thành phần dinh dưỡng thực phẩm.
Chuyển sang màn hình danh sách thực phẩm
Tải về danh sách thực phẩm
[Thực phẩm] Click Chuyển sang màn hình chi tiết thành phần dinh dưỡng
Hiển thị dữ liệu được tải về ở sự kiện [Loại thực phẩm]Click
Tìm kiếm Hiển thị bàn phím cho nhập từ khóa
Hiện thị kết quả thực phẩm cần tìm kiếm lên màn hình danh sách thực phẩm
Bảng 4.2 Mô tả chức năng “tra cứu dinh dưỡng”
Quản lí Calo
Hình 4.4 Giao diện chức năng Quản lí Calo
Mô tả Quản lí Calo
Tên sự kiện Mô tả
Form load Màn hình hiển thị tính BMI
Màn hình tính BRM [Tab BMI]Click Màn hình hiển thị tính BMI
Nhập cân nặng Hiển thị bàn phím cho nhập cân nặng Nhập chiều cao Hiển thị bàn phím cho nhập chiều cao [Tính]Click Hiển thị kết quả BMI
[Tab BRM]Click Màn hình hiển thị tính BRM
Chọn giới tính Chọn giới tính
Nhập trọng lượng Hiển thị bàn phím cho nhập trọng lượng Nhập chiều cao Hiển thị bàn phím cho nhập chiều cao Nhập tuổi Hiển thị bàn phím cho nhập tuổi
Chọn hoạt động Chọn hoạt động
[Tính]Click Hiển thị kết quả BRM
Bảng 4.3 Mô tả chức năng “quản lí calo”