Chính vì nguyên nhân trên, tôi muốn xây dựng một ứng dụng ghi chú côngviệc có thể giúp người dùng ghi chú lại những công việc cần làm trong một thờigian nhất định và đưa ra thông báo khi
Trang 1ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Trang 2Đà nẵng, tháng 07 năm 2020
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 3
ỨNG DỤNG GHI CHÚ CÔNG VIỆC
Trang 3
Đà Nẵng, tháng 07 năm 2020
MỞ ĐẦU
Trong cuộc sống hiện đại ngày nay, mỗi người chúng ta đều cuốn theovòng xoáy công việc, ai cũng có cho mình một công việc riêng Mà công việcthì quá nhiều khiến chúng ta hạn chế khả năng ghi nhớ, điều này làm chúng tathường xuyên bị lỡ những công việc nhỏ mà chúng ta ít để tâm đến, tuy nhiênđôi khi những công việc nhỏ đó nếu chúng ta bỏ lỡ có thể tại nên thiệt hạinhất định không chỉ trên phương diện kinh tế mà còn có thể là tình cảm Vìvậy việc đưa ra một ứng dụng ghi chú công việc là điều tất yếu
Trang 4LỜI CẢM ƠN
Trong thời gian làm đồ án 3, em đã nhân được nhiều sự giúp đỡ, đóng góp, ý kiến
và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè
Em xin chân thành cảm ơn thầy Lê Văn Minh, giảng viên bộ môn Cơ sở dữ liệu đãgiúp đỡ em, chỉ bảo tận tình trong suốt quá trình làm đồ án
Em cũng xin chân thành cảm ơn các thầy cô giáo trong Khoa công nghệ thông tin
và truyền thông – Đại học Đà Nẵng nói chung và các thầy cô trong bôn môn lậptrình nói riêng đã giúp em có được các kiến thức về các môn đại cương cũng nhưcác môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạo điềukiện giúp đỡ em trong suốt quá trình học tập
Cuối cùng em xin cảm ơn gia đình, bàn bè, đã luôn tạo điều kiện, quan tâm, giúp
dỡ, động viện em trong suốt quá trình hoàn thành đồ án cơ sở 3
Trang 5NHẬN XÉT (Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6
M C L C ỤC LỤC ỤC LỤC
DANH MỤC CÁC BẢNG 7
DANH MỤC HÌNH 8
DANH MỤC CỤM TỪ VIẾT TẮT 9
Chương 1 Giới thiệu 10
1.1 Tổng quan 10
1.2 Phương pháp 10
1.3 Cấu trúc đồ án 10
1.3.1 Nghiên cứu tổng quan 10
1.3.2 Cơ sở lý thuyết 10
1.3.3 Thực hiện 10
1.3.4 Kết quả và phương hướng phát triển 10
Chương 2 Nghiên cứu tổng quan 11
2.1 Các phương pháp và ưu nhược điểm của nó 11
2.1.1 Dùng ngôn ngữ Java 11
2.1.2 Dùng ngôn ngữ kotlin 11
2.1.3 Dùng ngôn ngữ C++ 11
2.1.4 Dùng ngôn ngữ C# 11
2.1.5 Dùng ngôn ngữ Python 12
2.1.6 Sử dụng framework React Native 12
2.2 Cơ sở lý thuyết 13
2.2.1 Framework React native 13
2.2.2 Google Firebase 14
2.2.3 Visual studio code 16
2.3 Kết luận 17
Chương 3 Phân tích thiết kế hệ thống 18
3.1 Các chức năng của ứng dụng 18
3.2 Sơ đồ use-case 18
3.3 Sơ đồ triển khai 18
Chương 4 Triển khai xây dựng 19
4.1 Cơ sở dữ liệu 19
4.2 Giao diện 19
Chương 5 Kết luận và Hướng phát triển 21
5.1 Kết luận 21
5.2 Hướng phát triển 21
Trang 7DANH MỤC CÁC BẢNG
Bảng 3:1 Bảng mô tả cơ sở dữ liệu 19
Trang 8DANH MỤC HÌNH
Trang
Hình 2:1 React native framework 13
Hình 2:2 Google Firebase 14
Hình 2:3 Visual Studio Code 16
Hình 3:1 Sơ đồ use-case 18
Hình 3:2 Sơ đồ triển khai 18
Hình 4:1 Màn hình chờ 19
Hình 4:2 Màn hình home 19
Hình 4:3 Màn hình chi tiết ghi chú 19
Hình 4:4 Màn hình danh sách các ghi chú đã lưu 20
Trang 10Chương 1 Giới thiệu
1.1 Tổng quan
Hiện nay công việc ngày càng nhiều khiến con người ta ngày càng bạn bịu
và từ đo có chúng ta có thể bỏ lỡ những chuyện ta tưởng chừng nhu nhỏ nhặtnhưng lại vô cùng quan trọng
Chính vì nguyên nhân trên, tôi muốn xây dựng một ứng dụng ghi chú côngviệc có thể giúp người dùng ghi chú lại những công việc cần làm trong một thờigian nhất định và đưa ra thông báo khi đến lúc cần thực hiện công việc đó
Từ đây, ứng dụng ghi chú công việc MEMO đã ra đời
1.2 Phương pháp
Sử dụng ngôn ngữ Javascript, dựa trên nền tảng framework React Native đểxây dựng ứng dụng android, sử dung Google Firebase để làm cở sở dữ liệu lưutrữ dữ liệu liên quan đến ứng dụng
1.3 Cấu trúc đồ án
1.3.1 Nghiên cứu tổng quan
Giới thiệu các phương pháp thực hiện, nêu ra ưu nhược điểm của từngphương pháp
1.3.2 Cơ sở lý thuyết
Giới thiệu các công cụ thực hiện đồ án
1.3.3 Thực hiện
Trình bày các bước thực hiện
1.3.4 Kết quả và phương hướng phát triển
Trình bày kết quả của dự án, những điểm chưa hoàn thiện và phươnghướng thực hiện cũng như phát triển trong tương lai
Trang 11Chương 2 Nghiên cứu tổng quan
2.1 Các phương pháp và ưu nhược điểm của nó
2.1.1 Dùng ngôn ngữ Java
Java là ngôn ngữ chính thức để phát triển ứng dụng Android và do đó, đâycũng là ngôn ngữ được sử dụng nhiều nhất Nhiều ứng dụng trong Cửa hàng Playđược xây dựng bằng Java và đây cũng là ngôn ngữ được Google hỗ trợ nhiềunhất Ngoài tất cả những điều này, Java còn có một cộng đồng trực tuyến tuyệtvời để hỗ trợ trong trường hợp có bất kỳ vấn đề
Tuy nhiên, Java là ngôn ngữ phức tạp cho người mới bắt đầu sử dụng vì
nó chứa các chủ đề phức tạp như hàm tạo, ngoại lệ con trỏ null, đồng thời, ngoại
lệ được kiểm tra, v.v Ngoài ra, Bộ công cụ phát triển phần mềm Android (SDK)tăng độ phức tạp lên một cấp độ mới!
Nói chung, Java là một ngôn ngữ tuyệt vời để trải nghiệm niềm vui trọn vẹncủa Phát triển ứng dụng Android Tuy nhiên, nó có thể hơi phức tạp với nhữngngười mới bắt đầu muốn bắt đầu với một cái gì đó dễ dàng hơn và sau đó quay lạivới nó
2.1.2 Dùng ngôn ngữ kotlin
Kotlin là ngôn ngữ lập trình đa nền tảng có thể được sử dụng thay thế choJava để phát triển ứng dụng Android Nó cũng đã được giới thiệu là ngôn ngữJava Java chính thức thứ cấp vào năm 2017 Kotlin có thể tương tác với Java và
nó chạy trên Máy ảo Java
Sự khác biệt khá lớn duy nhất là Kotlin loại bỏ các tính năng thừa của Javanhư ngoại lệ con trỏ null Nó cũng loại bỏ sự cần thiết phải kết thúc mọi dòngbằng dấu chấm phẩy Nói tóm lại, Kotlin đơn giản hơn nhiều đối với những ngườimới bắt đầu thử so với Java và nó cũng có thể được sử dụng như một điểm nhậpcảnh của Cameron cho Phát triển ứng dụng Android
2.1.3 Dùng ngôn ngữ C++
C ++ có thể được sử dụng để phát triển ứng dụng Android bằng cách sửdụng Bộ công cụ phát triển bản địa Android (NDK) Tuy nhiên, một ứng dụngkhông thể được tạo hoàn toàn bằng C ++ và NDK được sử dụng để triển khai cácphần của ứng dụng trong mã gốc C ++ Điều này giúp sử dụng các thư viện mã C++ cho ứng dụng theo yêu cầu
Mặc dù C ++ hữu ích cho phát triển ứng dụng Android trong một số trườnghợp, nhưng việc thiết lập khó khăn hơn nhiều và kém linh hoạt hơn nhiều Nócũng có thể dẫn đến nhiều lỗi hơn vì sự phức tạp gia tăng
Trang 12Trước đó, nhược điểm lớn nhất của C # là nó chỉ có thể chạy trên các hệthống Windows khi sử dụng NET Framework Tuy nhiên, vấn đề này đã được xử
lý bởi Xamarin.Android (trước đây là Mono cho Android), đây là một triển khai
đa nền tảng của Cơ sở hạ tầng ngôn ngữ chung Giờ đây, các công cụXamarin.Android có thể được sử dụng để viết các ứng dụng Android gốc và chia
sẻ mã trên nhiều nền tảng
2.1.5 Dùng ngôn ngữ Python
Python có thể được sử dụng để phát triển ứng dụng Android mặc dùAndroid không hỗ trợ phát triển Python gốc Điều này có thể được thực hiện bằngnhiều công cụ khác nhau để chuyển đổi các ứng dụng Python thành Gói Android
có thể chạy trên thiết bị Android
Một ví dụ về điều này là Kivy là một thư viện Python nguồn mở được sửdụng để phát triển các ứng dụng di động Nó hỗ trợ Android và cũng khuyếnkhích phát triển ứng dụng nhanh chóng (đó là một tình huống đôi bên cùng cólợi!) Tuy nhiên, một nhược điểm của điều này là sẽ không có lợi ích riêng choKivy vì nó không được hỗ trợ
2.1.6 Sử dụng framework React Native
React Native là một framework mã nguồn mở được sáng tạo bởi Facebook
Nó được sử dụng để phát triển ứng dụng di động Android, iOS, Web và UWPbằng các cho phép các nhà phát triển sử dụng React cùng với môi trường ứngdụng gốc
Ưu điểm:
Tối ưu thời gian
Hiệu năng ổn định
Tiết kiệm chi phí
Đội ngũ phát triển ứng dụng không quá lớn
Ứng dụng tin cậy, ổn định
Xây dựng ứng dụng ít native code nhất cho nhiều hệ điều hành khác nhau
Trải nghiệm người dùng tốt hơn khi so sánh với ứng dụng Hybrid
Nhược điểm:
Yêu cầu Native code
Hiệu năng kém hơn so với Native App
Bảo mật chưa thật sự tốt do dùng JS
Quản lý bộ nhớ
Tùy biến chưa thật sự tốt ở một số module
Trang 132.2 Cơ sở lý thuyết
2.2.1 Framework React native
Hình 2:1 React native framework
React native giúp cho lập trình viên web có thể viết ứng dụng native đểkhắc phục các điểm yếu của ứng dụng web và hybrid Chỉ với một lập trình viênthành thạo javascript, bạn có thể chiến dấu trên mọi mặt trận web, desktop, server
và bây giờ là mobile Điều này không những có lợi cho lập trình viên web mà nógiúp cho các doanh nghiệp phát triển sản phẩm ở đầu cuối với ít nhân lực hơn
Khi xây dựng React native, điều tuyệt vời là đã được tích hợp tính năngLive Reload – tượng tự tính năng hot Replacement Module trong Webpack Tínhnăng Live Reload khác tính năng Reload, trong khi Live Reload chỏ tải lại chứcnăng tập tin nào thay đổi, thì Reload sẽ tải lại toàn bộ mã nguồn Ngoài ra, bạncũng có thể dễ dàng debug javascript trong Chrome và Safari Đối với những lỗithuộc Native thì phải cần đến Xcode hoặc Android Studio cho Android
Cách hoạt động cảu React native
Ứng dụng viết bằng React native được chia làm 2 phần: phần view vàphần xử lý
Phần view hay phần hiển thị được biên dịch từ javascript sẽ ánh xạ vớinhững component của hệ thống, ví dụ: điều hướng, tab, touch, v.v Phần viewnày được lấy cảm hứng từ Virtual DOM của React JS, mọi xử lý view được thưchiện trên một cây DOM ảo, sau đó được React Native render lại bằng native view
Trang 14Phần xử lý vẫn được thực hiện trực tiếp bằng ngôn ngữ javascript: viduj
“1+1=2”, biệu thức này được xử lý dưới bộ core thực thi javascript, không phảithông dich qua java hay Swift/Objective-C rồi mới làm phép tính
Nhược điểm cảu React native
React native là một giải pháp tuyệt vời cho phát triển ứng dụng trên điệnthoại di động, tuy nhiên đến thời điểm hiện tại vẫn còn một số khuyết điểm:
- Vẫn còn thiếu các component view cho Adnroid: Map, Modal, Slider,Spinner hoặc các module như Camera Roll, Media, PushNotificationIOS
- Không hỗ trợ Window phone: đây sẽ là điểm trừ lớn nếu so sánh với cácứng dụng hybrid
- Không build được ứng dụng iOS trên Window và Linux
- Không thể build được ứng dụng quá phức tạp
- Không nên dùng để viết game có tính đồ họa và cách chơi phức tạp
- Dùng ES2015/ES6 nên khó khăn trong việc tiếp cận
2.2.2 Google Firebase
Hình 2:2 Google Firebase
Google Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trênnền tảng đám mây được cung cấp bởi Google nhằm giúp các lập trình phát triểnnhanh các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu
C
ác chức năng chính của Google Firebase
Với Google Firebase, bạn có thể tạo ra các ứng dụng chatnhư Yahoo Message của ngày xưa hoặc như Facebook Messagercủa ngày nay trong thời gian cực ngắn như khoảng một ngàythậm chí là vài giờ bởi đơn giản là bạn chỉ cần lo phần client cònphần server và database đã có firebase lo Firebase là sự kết hợpgiữa nền tảng cloud với hệ thống máy chủ cực kì mạnh mẽ tới từGoogle, để cung cấp cho chúng ta những API đơn giản, mạnh mẽ
và đa nền tảng trong việc quản lý, sử dụng database Cụ thể hơnGoogle Firebase cung cấp tới chúng ta những chức năng chínhsau:
- Realtime Database – Cơ sở dữ liệu thời gian thực Firebaselưu trữ dữ liệu database dưới dạng JSON và thực hiện đồng bộdatabase tới tất cả các client theo thời gian thực Cụ thể hơn
Trang 15là bạn có thể xây dựng được client đa nền tảng (cross-platformclient) và tất cả các client này sẽ cùng sử dụng chung 1 databaseđến từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trongdatabase được thêm mới hoặc sửa đổi Ngoài ra Firebase còn chophép bạn phân quyền một các đơn giản bằng cú pháp tương tựnhư javascript
- Firebase Authentication – Hệ thống xác thực của FirebaseVới Firebase bạn có thể dễ dàng tích hợp các công nghệ xác thựccủa Google, Facebook, Twitter, … hoặc một hệ thống xác thực
mà bạn tự mình tạo ra vào trong ứng dụng của bạn ở bất kì nềntảng nào như Android, iOS hoặc Web
- Firebase Hosting Các bạn có thể triển khai một ứng dụngnền web nhanh chóng với hệ thống Firebase, và các dữ liệu sẽđược lưu trữ đám mây đồng thời được bảo mật thông qua giaothức truy cập SSL Các ứng dụng sẽ được cấp 1 tên miền dạng
*.firebaseapp.com hoặc bạn có thể trả tiền để sử dụng tên miềncủa riêng mình
Những lợi ích từ việc sử dụng Google Firebase
- Triển khai ứng dụng nhanh Với Firebase bạn có thể giảmbớt rất nhiều thời gian cho việc viết các dòng code để quản lý vàđồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động vớicác API của Firebase Không chỉ có vậy Firebase còn hỗ trợ đãnền tảng nên bạn sẽ càng đỡ mất thời gian rất nhiều khi ứngdụng bạn muốn xây dựng là ứng dụng đa nền tảng Không chỉnhanh chóng trong việc xây dựng database, Google Firebase còngiúp ta đơn giản hóa quá trình đăng kí và đăng nhập vào ứngdụng bằng các sử dụng hệ thống xác thực do chính Firebasecung cấp
- Bảo mật Firebase hoạt động dựa trên nền tảng cloud vàthực hiện kết nối thông qua giao thức bảo mật SSL, chính vì vậybạn sẽ bớt lo lắng rất nhiều về việc bảo mật của dữ liệu cũng nhưđường truyền giữa client và server Không chỉ có vậy, việc chophép phân quyền người dùng database bằng cú pháp javasciptcũng nâng cao hơn nhiều độ bảo mật cho ứng dụng của bạn, bởichỉ những user mà bạn cho phép mới có thể có quyền chỉnh sửa
cơ sở dữ liệu
- Tính linh hoạt và khả năng mở rộng Sử dụng Firebase sẽgiúp bạn dễ dàng hơn rất nhiều mỗi khi cần nâng cấp hay mởrộng dịch vụ Ngoài ra firebase còn cho phép bạn tự xây dựngserver của riêng mình để bạn có thể thuận tiện hơn trong quátrình quản lý Việc Firebase sử dụng NoSQL, giúp cho databasecủa bạn sẽ không bị bó buộc trong các bảng và các trường màbạn có thể tùy ý xây dựng database theo cấu trúc của riêng bạn
- Sự ổn định Firebase hoạt động dựa trên nền tảng cloudđến từ Google vì vậy hầu như bạn không bao giờ phải lo lắng vềviệc sập server, tấn công mạng như DDOS, tốc độ kết nối lúcnhanh lúc chậm, … nữa, bởi đơn giản là Firebase hoạt động trên
Trang 16hệ thống server của Google Hơn nữa nhờ hoạt động trên nềntảng Cloud nên việc nâng cấp, bảo trì server cũng diễn ra rất đơngiản mà không cần phải dừng server để nâng cấp như truyềnthống
- Giá thành Google Firebase có rất nhiều gói dịch vụ với cácmức dung lượng lưu trữ cũng như băng thông khác nhau với mứcgiá dao động từ Free đến $1500 đủ để đáp ứng được nhu cầu củatất cả các đối tượng Chính vì vậy bạn có thể lựa chọn gói dịch vụphù hợp nhất với nhu cầu của mình Điều này giúp bạn tới ưu hóađược vốn đầu tư và vận hành của mình tùy theo số lượng người
sử dụng Ngoài ra bạn còn không mất chi phí để bảo trì, nângcấp, khắc phục các sự cố bởi vì những điều này đã có Firebase lo
2.2.3 Visual studio code
Hình 2:3 Visual Studio Code Giới thiệu
Là một trình biên tập lập trình code miễn phí dành cho Windows, Linux
và macOS, Visual Studio Code được phát triển bởi Microsoft Nó được xem làmột sự kết hợp hoàn hảo giữa IDE và Code Editor
Visual Studio Code hỗ trợ chức năng debug, đi kèm với Git, có syntaxhighlighting, tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn Nhờtính năng tùy chỉnh, Visual Studio Code cũng cho phép người dùng thay đổitheme, phím tắt, và các tùy chọn khác
Một số tính năng
Hỗ trợ nhiều ngôn ngữ lập trình
Visual Studio Code hỗ trợ nhiều ngôn ngữ lập trình như C/C++, C#, F#,Visual Basic, HTML, CSS, JavaScript, … Vì vậy, nó dễ dàng phát hiện và đưa rathông báo nếu chương chương trình có lỗi
Hỗ trợ đa nền tảng