Chương 1. Lý do chọn đề tài Với nhiều hoạt động xảy ra thường xuyên mỗi phút, mỗi giờ hằng ngày. Khi chúng ta làm bất cứ một việc nào đó, ta thường làm theo bản năng và không có một kế hoạch nào nhất định. Và chúng ta hoàn toàn có thể quên béng đi chỉ ngay trong chớp mắt.
Chính việc này dẫn đến tình trạng bị trì trệ, không mang đến kết quả tốt. Những điều đó khả năng là bạn không biết quản lý thời gian và lên kế hoạch cho cuộc sống. Ngoài thói quen sắp xếp lối sống sinh hoạt, sắp xếp các vật dụng trong nhà, thì bạn cũng cần phải có sự sắp xếp để quản lý thời gian của bản thân. Có một cuốn sổ tay để ghi vào đó những lịch hẹn hay deadline cho công việc trong tuần kế tiếp, lướt qua nó trước khi bắt đầu một ngày mới, chắc chắn bạn sẽ có được kế hoạch tốt hơn cho bản thân.
Bộ nhớ của con người là vô hạn, nhưng nếu không thường xuyên được gợi nhớ thì các thông tin lưu trữ cũng có thể bị mất đi. Một cuốn sổ tay sẽ là trợ lý tuyệt vời giúp bạn ghi nhớ mọi vấn đề trong cuộc sống. Địa chỉ của khách hàng, số điện thoại của người bạn mới quen, liệt kê các hạng mục cần mua sắm, nhật ký chi tiêu hàng ngày… Biết được tầm quan trọng, chúng em quyết định xây dựng ứng dụng sổ tay cá nhân. Với mong muốn giúp người dùng quản lý được thời gian, kế hoạch cho riêng mình.
Giúp quản lý chi tiêu cá nhân để bạn biết sử dụng đồng tiền một cách hợp lý, hiệu quả hơn. Giúp ghi chú lại những thứ quan trọng, đặc biệt lưu trữ thông tin trình trạng sức khoẻ và hệ thống chatbot hỗ trợ trả lời các câu hỏi về sức khoẻ, bệnh lý và các triệu chứng thông thường mà mỗi cá nhân chúng ta gặp phải. Mục tiêu Xây dựng ứng dụng hỗ trợ về các vấn đề cá nhân - Hỗ trợ việc lên kế hoạch và nhắc việc. 9 - Hỗ trợ việc ghi chú thông tin, lưu trữ tài sản cá nhân (hình ảnh, video, tài khoản,…) - Hỗ trợ giúp cải thiện sức khỏe: lưu trữ thông tin sức khoẻ, chatbot hỗ trợ sức khoẻ (FAQ các vấn đề cơ bản về sức khỏe, cung cấp các bài viết của các chuyên gia về các bệnh lý, triệu chứng thông thường, Hỏi đáp về các khoảng thời gian ngủ nghỉ hợp lý,.
Phạm vi Phạm vi môi trường: Ứng dụng di động. Phạm vi chức năng: Đối với ứng dụng: - Cung cấp chức năng xem thông tin, đăng nhập, đăng ký, đăng xuất. - Cung cấp chức năng để người dùng lên kế hoạch và nhắc việc - Cung cấp chức năng để lưu ghi chú và xem các tư liệu, các thông tin đã lưu. - Cung cấp chức năng quản lý thông tin sức khoẻ Đối với chatbot - Có khả năng trả lời các câu hỏi về các bệnh lý thường gặp một cách hiệu quả.
- Hiểu và gửi các tài liệu hợp lý cho người dùng. Đối tượng sử dụng Tất cả người dùng có lối sống sinh hoạt bận rộn, hay quên, không làm chủ được thời gian trong công việc hằng ngày muốn đề ra kế hoạch rõ ràng cho bản thân bao gồm theo dõi, đánh giá, điều chỉnh thời gian, tình trạng tài chính cá nhân,. Phương pháp thực hiện Phương pháp làm việc: 10 - Làm việc nhóm 2 thành viên thông qua cả 2 phương thức online và offline dưới sự hướng dẫn của giảng viên. Phương pháp nghiên cứu: - Phân tích nhu cầu sử dụng của đối tượng người dùng.
- Nghiên cứu tài liệu các công nghệ liên quan. Phương pháp công nghệ: - Xây dựng giao diện mobile app để tương tác với người dùng - Quản lý source code thông qua Github 11 Chương 2. KIẾN THỨC VÀ CÔNG NGHỆ NỀN TẢNG 2. Kiến thức nền tảng Để thiết kế và hoàn thiện sản phẩm đúng với yêu cầu người dùng, chúng em đã vận dụng các kiến thức có liên quan, cụ thể: Frontend: Ngôn ngữ Dart với mobile UI framework Flutter và công cụ lập trình Visual Studio Code: Kiến thức lập trình hướng đối tượng, chức năng cơ bản của các Widget, thiết kế giao diện, xử lí sự kiện … Backend: Nodejs với Javascript và thư viện hỗ trợ tạo API Express: tạo API, tương tác database,… Cơ sở dữ liệu: thiết kế CSDL phù hợp với mô hình ứng dụng, ràng buộc dữ liệu, truy vấn dữ liệu… 2.
Công nghệ sử dụng 2. Ngôn ngữ lập trình Dart Hình 2.1: Ngôn ngữ lập trình Dart Giới thiệu: Dart là ngôn ngữ lập trình được phát triển bởi Google, hiện đã được chấp thuận bởi tổ chức Ecma. Dart được sử dụng để xây dựng các loại ứng dụng: web, server, di động (IOS và Android với công cụ Flutter). Dart là ngôn ngữ hỗ trợ lập trình hướng đối tượng, cú pháp kiểu C, mã code Dart có thể biên dịch thành JavaScript để chạy trên trình duyệt.
Nó hỗ trợ những khái niệm lập trình hiện đại như giao diện lớp, lớp trừu tượng. 12 Từ ngôn ngữ lập trình Dart, Google giới thiệu SDK Futter để sử dụng ngôn ngữ Dart phát triển ứng dụng di động chạy đa nền tảng (Một lần viết code build ra ứng dụng cho IOS và Android). Lý do sử dụng: Vì Dart là một ngôn ngữ phổ biến hiện nay trong việc phát triển ứng dụng di động, nó giúp tạo ra ứng dụng một cách nhanh chóng và đẹp mắt hơn. Vì đây là ứng dụng hướng đến mọi người dùng nên việc dùng Dart sẽ giúp phát triển ứng dụng đa nền tảng cho cả người dùng IOS và Android.2: Flutter SDK Giới thiệu: Đây là một UI Framework mã nguồn mở miễn phí được phát triển bởi Google và phát hành vào tháng 5/2017.
Flutter cho phép người dùng tạo ra native app (ứng dụng di động gốc) với một codebase có giao diện chất lượng cao trên iOS và Android trong thời gian ngắn nhất. Flutter hoạt động trên code có sẵn và được rất nhiều lập trình viên và các tổ chức sử dụng. Sự phát triển của Flutter đã giải quyết được bài toán thường gặp trong di động là native PerFormance và Fast Development. Nếu như Code Native thuần chỉ đảm bảo được Native PerFormance và React Native chỉ giải quyết được Fast Development thì Flutter sẽ giải quyết được cả hai vấn đề trên.
Flutter gồm có 2 thành phần quan trọng là: 13 - Một SDK (Software Development Kit): Tổng hợp các công cụ giúp người dùng phát triển ứng dụng. Nó bao gồm cả những công cụ biên dịch mã thành các mã máy gốc dùng cho iOS và Android. - Một Framework (UI Library based on widgets): Là tập hợp gồm nhiều thành phần giao diện người dùng có thể tái sử dụng như slider, button,… giúp người dùng có thể cá nhân hóa theo nhu cầu cá nhân. Lý do sử dụng Có thể sử dụng Flutter để tạo ra các ứng dụng di động vô cùng đơn giản mà không cần phải code nhiều.
Với Flutter, Có thể tạo ra các hiệu ứng và đồ hoạ bất kỳ trên cả hai nền tảng là Android và IOS. Khi làm việc liên quan đến giao diện người dùng UI, Flutter giúp tạo ra sự thuận tiện cho bạn cũng như thay đổi code và xem kết quả trong thời gian thực bởi nó sở hữu Hot Reload.3: Javascript runtime Nodejs Giới thiệu: NodeJS là mã nguồn mở chạy trên môi trường V8 JavaScript runtime (một trình thông dịch Javascript chạy cực nhanh trên trình duyệt Chrome). NodeJS giúp các nhà phát triển xây dựng các ứng dụng web một cách đơn giản và dễ dàng mở rộng. 14 NodeJS có thể được dùng để xây dựng các loại ứng dụng khác nhau như các ứng dụng dòng lệnh, ứng dụng web, ứng dụng trò chuyện theo thời gian thực, máy chủ Rest API … Tuy nhiên, NodeJS thường được dùng chủ yếu để xây dựng các chương trình mạng như máy chủ web, tương tự như PHP, Java hoặc ASP.
Vì đây là mã nguồn mở nên cho phép bạn sử dụng miễn phí và đồng thời được liên tục được chỉnh sửa, cải tiến bởi cộng đồng các nhà phát triển toàn cầu. Lý do sử dụng: Nodejs chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện Event- driven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả. Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux, hơn nữa cộng đồng Nodejs rất lớn và hoàn toàn miễn phí. Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết bị.4: Expressjs framework Giới thiệu: Express là một framework nhỏ và tiện ích để xây dựng các ứng dụng web, cung cấp một lượng lớn của tính năng mạnh mẽ để phát triển các ứng dụng web và mobile.
Nó rất dễ dàng để phát triển các ứng dụng nhanh dựa trên Nodejs cho các ứng dụng Web. Các tính năng cơ bản của Express framework: - Cho phép thiết lập các lớp trung gian để trả về các HTTP request. 15 - Định nghĩ bảng routing có thể được sử dụng với các hành động khác nhau dựa trên phương thức HTTP và URL. - Cho phép trả về các trang HTML dựa vào các tham số truyền vào đến template.
Lý do sử dụng: Express hướng tới sự linh động, chỉ những gì bạn cần thì bạn mới phải thêm vào, không giống như những đối thủ như là Rails hay Django, hướng tới một cách cứng nhắc để xây dựng ứng dụng. Bằng cách mở rộng các đặc tính của NodeJs, ExpressJs cung cấp các tính năng như middlewares (hàm xử xý trung gian), đơn giản hóa khả năng điều hướng của ứng dụng, kèm theo tích hợp hỗ trợ rất nhiều template engine, giúp bạn tương tác dễ dàng hơn với HTML.5: Cơ sở dữ liệu MongoDB Giới thiệu: MongoDB là một mã nguồn mở và là một tập tài liệu dùng cơ chế NoSQL để truy vấn, nó được viết bởi ngôn ngữ C++. Chính vì được viết bởi C++ nên nó có khả năng tính toán với tốc độ cao chứ không giống như các hệ quản trị CSDL hiện nay. Mỗi một table (bảng dữ liệu) trong SQL sử dụng thì trong MongoDB gọi là collection (tập hợp) Mỗi một record (bản ghi) trong MongoDB được gọi là document (tài liệu).
Một bản ghi của MongoDB được lưu trữ dưới dạng document (tài liệu), nó được ghi xuống với cấu trúc field (trường) và value (giá trị). 16 Các Collection trong MongoDB có cấu trúc cực kỳ linh hoạt. Điều này cho phép dữ liệu không cần thiết phải tuân theo bất kỳ một dạng cấu trúc nào. Vì thế, MongoDB có thể lưu trữ những dữ liệu có cấu trúc đa dạng và phức tạp.
Dữ liệu trong MongoDB được lưu bằng định dạng kiểu JSON. Lý do sử dụng: Lưu lượng dữ liệu lớn và phi cấu trúc, không cần quan tâm đến khái niệm JOIN.