Đăng ký Đăng nhập

Tài liệu Xây dựng ứng dụng ghi chú công việc

.PDF
40
1
56

Mô tả:

lOMoARcPSD|15978022 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &s TRUYỀN THÔNG VIỆT-HÀN Khoa Khoa Học Máy Tính ĐỒ ÁN CƠ SỞ 3 XÂY DỰNG ỨNG DỤNG GHI CHÚ CÔNG VIỆC Sinh viên thực hiện: LÊ NGUYỄN QUANG VINH Lớp: 20DA Mã sinh viên: 20IT494 Giảng viên hướng dẫn: ThS. Trần Đình Sơn Đà Nẵng, tháng 05 năm 2022 lOMoARcPSD|15978022 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VIỆT-HÀN Khoa Khoa Học Máy Tính ĐỒ ÁN CƠ SỞ 3 XÂY DỰNG ỨNG DỤNG GHI CHÚ CÔNG VIỆC Sinh viên thực hiện: LÊ NGUYỄN QUANG VINH Lớp: 20DA Mã sinh viên: 20IT494 Giảng viên hướng dẫn: ThS. Trần Đình Sơn Đà Nẵng, tháng 05 năm 2022 lOMoARcPSD|15978022 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ……………………………………………… Giảng viên ThS. Trần Đình Sơn lOMoARcPSD|15978022 LỜI CẢM ƠN Lời đầu tiên, em xin gửi lời cảm ơn sâu sắc đến quý thầy cô của Trường Đại học Công nghệ Thông tin và Truyền thông Việt-Hàn nói chung và quý thầy cô của khoa Khoa học máy tính nói riêng đã tận tình truyền đạt kiến thức trong bốn học kì vừa qua. Nhờ sự chỉ dạy nhiệt tình từ quý thầy cô, em đã tích luỹ được vốn kiến thức cần thiết cho các học kì tiếp theo và công việc trong tương lai. Bên cạnh đó, em muốn gửi lời cảm ơn đặc biệt đến thầy – ThS. Trần Đình Sơn. Thầy đã theo sát quá trình làm đồ án của chúng em trong suốt hơn hai tháng. Thầy luôn nhắc nhở về các chi tiết, lỗi sai nhỏ trong phần đề cương chi tiết hay trong sản phẩm đồ án của chúng em trong các buổi gặp mặt hướng dẫn để từ đó chúng em hoàn thiện hơn sản phẩm của mình. Thầy cũng rất nhiệt tình giải đáp những thắc mắc của chúng em khi gặp khó khăn. Em xin chân thành cảm ơn! Sinh viên Lê Nguyễn Quang Vinh lOMoARcPSD|15978022 MỤC LỤC MỞ ĐẦU...........................................................................1 1. Giới thiệu........................................................................1 2. Mục tiêu của đề tài............................................................1 3. Nội dung và kế hoạch thực hiện............................................1 4. Bố cục báo cáo.............................................................2 Chương 1. TỔNG QUAN VỀ CÔNG CỤ, CÔNG NGHỆ XÂY DỰNG ỨNG DỤNG.........................................3 1. Ngôn ngữ lập trình Java.....................................................3 1.1. Giới thiệu...................................................................3 1.2. Đặc điểm của ngôn ngữ lập trình Java.............................3 1.2.1. Tương tự C++, hướng đối tượng hoàn toàn......................3 1.3. Máy ảo Java...............................................................6 1.4. Các phiên bản của Java.................................................7 1.5. Các thành phần của Java SE Platform.............................7 2. XML..............................................................................7 2.1. XML là gì?.................................................................7 2.2. Ưu và nhược điểm của XML..........................................8 2.3. So sánh XML và HTML................................................8 2.4. Cú pháp của XML.......................................................9 3. Phần mềm Android Studio................................................13 3.1. Giới thiệu.................................................................13 3.2. Lịch sử hình thành.....................................................13 4. Room Database...............................................................13 lOMoARcPSD|15978022 4.1. Giới thiệu.................................................................13 4.2. Đặc điểm..................................................................13 4.3. Các thành phần chính trong Room Database...................14 4.4. DAO (Data Access Objects)..........................................14 Chương 2. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG ỨNG DỤNG..........................................................................15 1. Yêu cầu đối với một ứng dụng di động...............................15 1.1. Chức năng..............................................................15 1.2. Thiết kế đơn giản và thẩm mỹ.....................................15 1.3. Giải quyết vấn đề của người dùng................................15 1.4. Tính nhất quán........................................................16 1.5. Trải nghiệm người dùng............................................16 2. Thiết kế ứng dụng.........................................................17 Chương 3. XÂY DỰNG ỨNG DỤNG...........................18 1. Tổng quan về mô hình MVVM.........................................18 1.1. Giới thiệu...............................................................18 1.2. MVVM (Model-View-ViewModel) được hiểu như thế nào.18 2. Layout........................................................................19 2.1. Relative Layout.......................................................19 2.2. Linear Layout.........................................................21 2.2.1. Thuộc tính Gravity....................................................22 2.2.2. Thuộc tính trọng số...................................................22 3. Quá trình thiết kế giao diện.............................................22 3.1. Thiết kế màn hình bắt đầu (Splash Screen)....................22 lOMoARcPSD|15978022 3.2. Thiết kế màn hình chính............................................22 3.3. Thiết kế màn hình tạo ghi chú mới...............................23 3.4. Thiết kế màn hình xoá ghi chú....................................23 3.5. Thiết kế màn hình tìm kiếm ghi chú.............................24 4. Xây dựng chức năng của ứng dụng................................25 4.1. Tạo Model cho ứng dụng...........................................25 4.2. Tạo ViewModel........................................................25 4.3. DAO...................................................................... 25 4.4. Xây dựng cơ sở dữ liệu..............................................26 4.5. Chức năng tạo ghi chú mới.........................................26 4.6. Chức năng sửa ghi chú..............................................27 4.7. Chức năng xoá ghi chú..............................................27 4.8. Chức năng tìm kiếm ghi chú.......................................28 KẾT LUẬN.....................................................................29 1. Kết quả đạt được..........................................................29 1.1. Về mặt lý thuyết:......................................................29 1.2. Về mặt thực tiễn......................................................29 2. Vấn đề còn tồn tại............................................................29 3. Hướng giải quyết.............................................................29 TÀI LIỆU THAM KHẢO..............................................30 lOMoARcPSD|15978022 DANH MỤC CÁC TỪ VIẾT TẮT lOMoARcPSD|15978022 DANH MỤC HÌNH VẼ lOMoARcPSD|15978022 MỞ ĐẦU 1. Giới thiệu Cuộc sống ngày càng hiện đại, các công việc có khối lượng ngày càng lớn, cộng thêm các yếu tố gây nhiễu trong cuộc sống hằng ngày dễ khiến cho chúng ta quên đi các công việc cần làm trong ngày, trong tuần, trong tháng, dẫn đến công việc bị trì trệ, không đạt hiệu quả. Bên cạnh đó, thói quen ghi lại các công việc cần phải làm sẽ giúp ta có thêm động lực để hoàn thành công việc như đúng thời hạn đã đặt ra. Vì vậy, ứng dụng ghi chú công việc của chúng tôi ra đời để giúp các bạn ghi lại những việc cần làm một cách nhanh chóng và hoàn thành công việc hiệu quả hơn. 2. Mục tiêu của đề tài - Mục tiêu của đề tài nhằm tạo ra ứng dụng di động để ghi chú lại các công việc trong ngày, tuần, tháng, giải quyết việc bị quên các công việc cần làm. Bên cạnh đó có thể đưa ứng dụng lên kho ứng dụng Google Play. - Nghiên cứu kiến trúc Android. - Nghiên cứu các thành phần cơ bản trong Android. - Nghiên cứu cách phát triển ứng dụng trên Android. 3. Nội dung và kế hoạch thực hiện Thời gian Công việc Tuần 1 từ Khảo sát nhu cầu người dùng và tìm hiểu các công nghệ 21/3 đến 27/3 liên quan (Room Database, mô hình MVVM, ngôn ngữ Java, thư viện.) Tuần 2, 3, 4 Thiết kế giao diện ứng dụng bằng XML. từ 28/3 đến 17/4 Tuần 5, 6, 7 Xây dựng chức năng ứng dụng bằng Java và chạy thử. từ 18/4 đến 8/5 Tuần 8 từ Tối ưu giao diện và chức năng. 1 lOMoARcPSD|15978022 9/5 đến 15/5 Tuần 9, 10 từ 16/5 đến 31/5 Chuẩn bị bản báo cáo, slide thuyết trình, chuẩn bị bảo vệ đồ án. 4. Bố cục báo cáo Sau phần Mở đầu, báo cáo được trình bày trong ba chương, cụ thể như sau: Chương 1. Tổng quan về các công cụ xây dựng nên ứng dụng. Trong chương này, báo cáo trình bày các khái niệm, đặc điểm, tính năng của các công cụ, công nghệ được sử dụng. Chương 2. Phân tích thiết kế hệ thống ứng dụng. Nội dung chương bao gồm các bước phân tích hệ thống từ nhu cầu của người dùng. Từ đó xây dựng nên giao diện và chức năng phù hợp. Chương 3. Xây dựng ứng dụng. Chương này tiến hành trình bày các bước xây dựng giao diện và chức năng của ứng dụng. Cuối cùng là Kết luận, Tài liệu tham khảo và Phụ lục liên quan đến đề tài. 2 lOMoARcPSD|15978022 Chương 1. TỔNG QUAN VỀ CÔNG CỤ, CÔNG NGHỆ XÂY DỰNG ỨNG DỤNG 1. Ngôn ngữ lập trình Java 1.1. Giới thiệu Java là một trong những ngôn ngữ lập trình hướng đối tượng. Nó được sử dụng trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị di động. Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm 1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia dụng, và có tên là Oak. Java được phát hành năm 1994, đến năm 2010 được Oracle mua lại từ Sun MicroSystem. Java được tạo ra với tiêu chí “Viết (code) một lần, thực thi khắp nơi” (Write Once, Run Anywhere –WORA). Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền tảng đó. 1.2. Đặc điểm của ngôn ngữ lập trình Java 1.2.1. Tương tự C++, hướng đối tượng hoàn toàn Trong quá trình tạo ra một ngôn ngữ mới phục vụ cho mục đích chạy được trên nhiều nền tảng, các kỹ sư của Sun MicroSystem muốn tạo ra một ngôn ngữ dễ học và quen thuộc với đa số người lập trình. Vì vậy họ đã sử dụng lại các cú pháp của C và C++. Tuy nhiên, trong Java thao tác với con trỏ bị lược bỏ nhằm đảo bảo tính an toàn và dễ sử dụng hơn. Các thao tác overload, goto hay các cấu trúc như struct và union cũng được loại bỏ khỏi Java. 1.2.2. Độc lập phần cứng và hệ điều hành 3 lOMoARcPSD|15978022 Một chương trình viết bằng ngôn ngữ Java có thể chạy tốt ở nhiều môi trường khác nhau. Gọi là khả năng “cross-platform”. Khả năng độc lập phần cứng và hệ điều hành được thể hiện ở 2 cấp độ là cấp độ mã nguồn và cấp độ nhị phân. Ở cấp độ mã nguồn: Kiểu dữ liệu trong Java nhất quán cho tất cả các hệ điều hành và phần cứng khác nhau. Java có riêng một bộ thư viện để hỗ trợ vấn đề này. Chương trình viết bằng ngôn ngữ Java có thể biên dịch trên nhiều loại máy khác nhau mà không gặp lỗi. Ở cấp độ nhị phân: Một mã biên dịch có thể chạy trên nhiều nền tảng khác nhau mà không cần dịch lại mã nguồn. Tuy nhiên cần có Java Virtual Machine để thông dịch đoạn mã này. 1.2.3. Ngôn ngữ thông dịch Ngôn ngữ lập trình thường được chia ra làm 2 loại (tùy theo các hiện thực hóa ngôn ngữ đó) là ngôn ngữ thông dịch và ngôn ngữ biên dịch. - Thông dịch (Interpreter): Nó dịch từng lệnh rồi chạy từng lệnh, lần sau muốn chạy lại thì phải dịch lại. - Biên dịch (Compiler): Code sau khi được biên dịch sẽ tạo ra 1 file thường là .exe, và file .exe này có thể đem sử dụng lại không cần biên dịch nữa. Ngôn ngữ lập trình Java thuộc loại ngôn ngữ thông dịch. Chính xác hơn, Java là loại ngôn ngữ vừa biên dịch vừa thông dịch. Cụ thể như sau Khi viết mã, hệ thống tạo ra một tệp .java. Khi biên dịch mã nguồn của chương trình sẽ được biên dịch ra mã byte code. Máy ảo Java (Java Virtual Machine) sẽ thông dịch mã byte code này thành machine code (hay native code) khi nhận được yêu cầu chạy chương trình. 4 lOMoARcPSD|15978022 1.2.4. Cơ chế thu gom rác tự động Khi tạo ra các đối tượng trong Java, JRE sẽ tự động cấp phát không gian bộ nhớ cho các đối tượng ở trên heap. Với ngôn ngữ như C \ C++, bạn sẽ phải yêu cầu hủy vùng nhớ mà bạn đã cấp phát, để tránh việc thất thoát vùng nhớ. Tuy nhiên vì một lý do nào đó, bạn không hủy một vài vùng nhớ, dẫn đến việc thất thoát và làm giảm hiệu năng chương trình. Ngôn ngữ lập trình Java hỗ trợ cho bạn điều đó, nghĩa là bạn không phải tự gọi hủy các vùng nhớ. Bộ thu dọn rác của Java sẽ theo vết các tài nguyên đã được cấp. Khi không có tham chiếu nào đến vùng nhớ, bộ thu dọn rác sẽ tiến hành thu hồi vùng nhớ đã được cấp phát. 1.2.5. Đa luồng Java hỗ trợ lập trình đa tiến trình (multithread) để thực thi các công việc đồng thời. Đồng thời cũng cung cấp giải pháp đồng bộ giữa các tiến trình (giải pháp sử dụng priority…). 1.2.6. Tính an toàn và bảo mật Tính an toàn - Ngôn ngữ lập trình Java yêu cầu chặt chẽ về kiểu dữ liệu. - Dữ liệu phải được khai báo tường minh. - Không sử dụng con trỏ và các phép toán với con trỏ. 5 lOMoARcPSD|15978022 - Java kiểm soát chặt chẽ việc truy nhập đến mảng, chuỗi. Không cho phép sử dụng các kỹ thuật tràn. Do đó các truy nhập sẽ không vượt quá kích thước của mảng hoặc chuỗi. Quá trình cấp phát và giải phóng bộ nhớ được thực hiện tự động. - Cơ chế xử lý lỗi giúp việc xử lý và phục hồi lỗi dễ dàng hơn. Tính bảo mật Java cung cấp một môi trường quản lý chương trình với nhiều mức khác nhau. Mức 1: Chỉ có thể truy xuất dữ liệu cũng như phương phức thông qua giao diện mà lớp cung cấp. Mức 2: Trình biên dịch kiểm soát các đoạn mã sao cho tuân thủ các quy tắc của ngôn ngữ lập trình Java trước khi thông dịch. Mức 3: Trình thông dịch sẽ kiểm tra mã byte code xem các đoạn mã này có đảm bảo được các quy định, quy tắc trước khi thực thi. Mức 4: Java kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống. 1.3. Máy ảo Java Để đảm bảo tính đa nền, Java sử dụng cơ chế Máy ảo của Java. ByteCode là ngôn ngữ máy của Máy ảo Java tương tự như các lệnh nhị phân của các máy tính thực. Một chương trình sau khi được viết bằng ngôn ngữ Java (có phần mở rộng là .java) phải được biên dịch thành tập tin thực thi được trên máy ảo Java (có phần mở rộng là .class). Tập tin thực thi này chứa các chỉ thị dưới dạng mã Bytecode mà máy ảo Java hiểu được phải làm gì. Khi thực hiện một chương trình, máy ảo Java lần lượt thông dịch các chỉ thị dưới dạng Bytecode thành các chỉ thị dạng nhị phân của máy tính thực và thực thi thực sự chúng trên máy tính thực (còn gọi là khả năng khả chuyển). Máy ảo thực tế đó là một chương trình thông dịch. Vì thế các hệ điều hành khác nhau sẽ có các máy ảo khác nhau. Để thực thi một ứng dụng của Java trên một hệ điều hành cụ thể, cần phải cài đặt máy ảo tương ứng cho hệ điều hành đó. 6 lOMoARcPSD|15978022 JVM cung cấp môi trường thực thi cho chương trình Java (còn gọi là khả năng độc lập với nền). Có nhiều JVM cho các nền tảng khác nhau chẳng hạn như: Windows, Liux, và Mac. 1.4. Các phiên bản của Java Java Standard Edition (Java SE) – Là một nền tảng cơ bản cho phép phát triển giao diện điều khiển, các ứng dụng mạng và các ứng dụng dạng Win Form. Java Enterprise Edition (Java EE) – Được xây dựng trên nền tảng Java SE, giúp phát triển các ứng dụng web, các ứng dụng ở cấp doanh nghiệp, … Java Mobile Edition (Java ME) – Là một nền tảng cho phép phát triển các ứng dụng nhúng vào các thiết bị điện tử như mobile… 1.5. Các thành phần của Java SE Platform Gồm 2 thành phần: JRE (Java Runtime Environment): cung cấp JVM (Java Virtual Machine) và thư viện được sử dụng để chạy chương trình Java. JDK (Java Development Kit): được biết đến như bộ cung cụ phát triển Java, bao gồm: trình biên dịch và trình gỡ rối được sử dụng để phát triển các ứng dụng Java. 2. XML 2.1. XML là gì? XML là từ viết tắt của từ Extensible Markup Language là ngôn ngữ đánh dấu mở rộng. XML có chức năng truyền dữ liệu và mô tả nhiều loại dữ liệu khác nhau. Tác dụng chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các nền tảng và các hệ thống được kết nối thông qua mạng Internet. XML dùng để cấu trúc, lưu trữ và trong trao đổi dữ liệu giữa các ứng dụng và lưu trữ dữ liệu. Ví dụ khi ta xây dựng một ứng dụng bằng Php và một ứng dụng bằng Java thì hai ngôn ngữ này không thể hiểu nhau, vì vậy ta sẽ sử dụng XML để trao đổi dữ liệu. 7 lOMoARcPSD|15978022 Chính vì vậy, XML có tác dụng rất lớn trong việc chia sẻ, trao đổi dữ liệu giữa các hệ thống. 2.2. Ưu và nhược điểm của XML 2.2.1. Ưu điểm Ưu điểm lớn nhất của XML là sự độc lập. XML được sử dụng để mô tả dữ liệu dưới dạng text, nên hầu hết các phần mềm hay các chương trình bình thường đều có thể đọc được chúng. XML có thể đọc và phân tích nguồn dữ liệu khá dễ dàng nên nó được sử dụng với mục đích chính là trao đổi dữ liệu giữa các chương trình, các hệ thống khác nhau. XML được sử dụng cho Remote Procedure Calls nhằm phục vụ cho các dịch vụ của website. 2.2.2. Nhược điểm Tỷ lệ sai sót khi sử dụng XML để truyền dữ liệu khoảng từ 5-7%. Con số này tuy không quá cao, nhưng trên thực tế, người ta vẫn cần cân nhắc trước khi sử dụng nó để trao đổi thông tin. 2.3. So sánh XML và HTML XML HTML XML cho phép người dùng tạo biểu Được định nghĩa trước và người dùng tượng đánh dấu riêng để mô tả nội dung, phải tuân thủ tạo một biểu tượng không giới hạn và tự định nghĩa Được thiết kế để chuyển tải và lưu Được thiết kế để hiển thị dữ liệu trữ dữ liệu Tuy nhiên XML không phải là sự thay thế cho HTML. XML thường được sử dụng làm cơ sở cho các định dạng tài liệu khác. Dưới đây là một số định dạng bạn có thể biết: 8 lOMoARcPSD|15978022 - RSS - Microsoft .NET sử dụng XML cho các file cấu hình của nó. - Sitemap 2.4. Cú pháp của XML Sơ đồ sau minh họa qui tắc cú pháp để viết các kiểu đánh dấu và text khác nhau trong một tài liệu XML. 2.4.1. Khai báo XML Tài liệu XML có thể tùy ý có một phần khai báo XML. Nó được viết như sau: Ở đây, version là phiên bản XML và encoding xác định mã hóa ký tự được sử dụng trong tài liệu. 2.4.2. Các qui tắc cú pháp để khai báo XML - Khai báo XML (XML declaration) là phân biệt kiểu chữ và phải bắt đầu với “” ở đây “xml” viết ở dạng chữ thường. - Nếu tài liệu chứa khai báo XML, thì nó phải là lệnh đầu tiên của tài liệu XML. 9 lOMoARcPSD|15978022 - Khai báo XML phải là lệnh đầu tiên của tài liệu XML. - Một HTTP Protocol có thể ghi đè giá trị của encoding mà bạn đặt trong khai báo XML. 2.4.3. Tags và Elements Một XML file được cấu thành bởi một số phần tử XML (Element), còn được gọi là XML-node hoặc XML-tags. Tên các phần tử XML được bao trong các dấu < > như sau: 2.4.4. Qui tắc cú pháp (Syntax Rules) cho các thẻ và phần tử Cú pháp phần tử: Mỗi phần tử XML cần được bao trong hoặc với phần tử bắt đầu hoặc kết thúc như sau: .... Hoặc đơn giản theo cách: Lồng các phần tử: Một phần tử XML có thể chứa nhiều phần tử XML khác như là con của nó, nhưng các phần tử con này phải không đè lên nhau, ví dụ: Một thẻ đóng của một phần tử phải có cùng tên như thẻ mở kết nối với nó. Ví dụ sau minh họa các thẻ lồng nhau sai cú pháp: TopDev Ví dụ sau minh họa các thẻ lồng nhau đúng cú pháp: 10 lOMoARcPSD|15978022 TopDev Phần tử gốc (Root Element): Một tài liệu XML có thể chỉ có một phần tử gốc. Ví dụ sau minh họa một tài liệu XML sai cú pháp, bởi vì cả hai phần tử x và y xuất hiện ở cấp cao nhất mà không phải là một phần tử gốc. ... ... Còn đây là ví dụ về đúng cú pháp: ... ... Phân biệt kiểu chữ: Tên của các phần tử XML là phân biệt kiểu chữ. Nghĩa là tên của thẻ mở và thẻ đóng phải cùng kiểu. Ví dụ, là khác với 2.4.5. Thuộc tính Một thuộc tính xác định thuộc tính cho phần tử, sử dụng một cặp tên/giá trị. Một phần tử XML có thể có một hoặc nhiều thuộc tính. Ví dụ: TopDev Ở đây href là tên thuộc tính và https://topdev.vn/ là giá trị thuộc tính. 2.4.6. Qui tắc cú pháp cho thuộc tính trong XML Tên thuộc tính trong XML là phân biệt kiểu chữ (không giống như HTML). Tức là, HREF và href là hai thuộc tính khác nhau trong XML. 11
- Xem thêm -

Tài liệu liên quan