Xuất hiệnlần đầu vào năm 1995, Java đã nhanh chóng trở thành một trong những ngôn ngữ phổ biến nhất trên thế giới nhờ vào những đặc điểm độc đáo của mình.Điều làm nổi bật Java là tính ch
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC ĐẠI NAM
2 1451020210 Nguyễn Văn Thái 11/10/2002 CNTT14-01
3 1451020160 Nguyễn Bảo Nam 22/07/2001 CNTT14-01
Trang 2
Hà Nội, năm 2022
Trang 3BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC ĐẠI NAM
Trang 4
Hà Nội, năm 2022
Trang 5
M Ụ C L Ụ C Chương 1 MỞ ĐẦU 4
1.1 Mục đích 4
1.2 Mục tiêu của dự án 4
Chương 2 CƠ SỞ LÍ THUYẾT 6
2.1 Java 6
2.1.1 Giới thiệu về Java 6
2.1.2 Ưu điểm của Java 7
2.1.3 Nhược điểm của Java 7
2.2 Android Studio 8
2.2.1 Giới thiệu về Android Studio 8
2.2.2 Ưu điểm của Android Studio 9
2.2.3 Nhược điểm của Android Studio 10
2.3 Mô hình 11
2.3.1 Giới thiệu về mô hình MVC 11
2.3.2 Ưu điểm của mô hình MVC 12
2.3.3 Nhược điểm của mô hình MVC 13
2.4 Cơ sở dữ liệu SQLite 13
2.4.1 Giới thiệu SQLite 13
2.4.2 Ưu điểm của SQLite 14
2.4.3 Nhược điểm của SQLite 15
Chương 3 16 PHÂN TÍCH THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 16
Trang 6
3.1.1 Tìm Kiếm Thông Tin: 16
3.1.2 Xem Chi Tiết: 16
3.1.3 Đăng Nhập (Login): 16
3.1.4 Đăng Ký (Register): 16
3.1.5 Thêm vào Danh Sách Yêu Thích: 16
3.1.6 Danh Sách Yêu Thích: 17
3.2 Triển khai Android 17
Chương 4 Tổng kết 22
4.1 Tổng kết thành quả và khó khăn 22
4.2 Hướng phát triển 22
Trang 7LỜI CẢM ƠN
Tôi xin bày tỏ lòng biết ơn sâu sắc đến những người đã giúp đỡ và hỗ trợtôi trong quá trình thực hiện khóa luận này
Tôi muốn gửi lời cảm ơn chân thành Giáo viên hướng dẫn: Trần Đức Minh đã trực tiếp định hướng, chỉ dẫn tôi trong việc nghiên cứu và hoàn thành
Trang 9
Chương 1 MỞ ĐẦU 1.1 Mục đích
Mục đích của đề tài này là kết hợp các kỹ thuật phổ biến trong phát triển ứng dụng di động, bao gồm quản lý người dùng thông qua Firebase, sử dụng API liên quan đến đồ uống cocktail, và lưu trữ thông tin người dùng về đồ uống yêu thích vào cơ sở dữ liệu SQLite Mục tiêu chính là xây dựng một ứng dụng
đồ uống cocktail hoàn chỉnh và thú vị, với khả năng đăng nhập, quản lý thông tin cá nhân và đồ uống yêu thích của người dùng
1.2 Mục tiêu của dự án
Quản lý người dùng thông qua Firebase:
Ứng dụng sẽ tích hợp Firebase Authentication để cung cấp một cổng xácthực an toàn và tiện ích cho người dùng Người dùng sẽ có khả năng đăng nhậpbằng tài khoản Firebase hoặc đăng ký tài khoản mới trực tiếp từ ứng dụng.Thông tin người dùng như tên, email và hình đại diện có thể được quản lý thôngqua Firebase
Quản lý đồ uống yêu thích thông qua SQLite:
Ứng dụng sẽ sử dụng cơ sở dữ liệu SQLite để lưu trữ thông tin về đồ uống
mà người dùng đã chọn hoặc thích Mỗi lượt thích sẽ được lưu trữ dưới dạngmột bản ghi trong cơ sở dữ liệu, bao gồm các chi tiết như ID đồ uống, tên đồuống và thông tin khác liên quan
Sử dụng API Cocktail:
Ứng dụng sẽ kết nối và tương tác với API Cocktail từ ninjas.com/api/cocktail Điều này cho phép ứng dụng lấy thông tin đồ uốngcocktail như hình ảnh, tên và mô tả chi tiết Danh sách đồ uống sẽ được hiển thịmột cách hấp dẫn, và người dùng có thể xem thông tin chi tiết về từng loạicocktail
https://api-Thiết kế giao diện:
Trang 10
Giao diện ứng dụng sẽ được thiết kế với ít nhất 3 trang chức năng chính,chẳng hạn như trang đăng nhập/đăng ký, trang danh sách đồ uống yêu thích vàtrang xem chi tiết đồ uống Sử dụng hình ảnh và biểu tượng sinh động để tạo ratrải nghiệm người dùng thú vị và dễ sử dụng
Tối ưu hóa trải nghiệm người dùng:
Ứng dụng sẽ được tối ưu hóa để đảm bảo hiệu suất tốt và thời gian đápứng nhanh chóng Các tình huống đặc biệt như mất kết nối internet sẽ được xử
lý một cách thông minh để cung cấp trải nghiệm liền mạch cho người dùng
Trang 11
Chương 2 CƠ SỞ LÍ THUYẾT
2.1 Java
2.1.1 Giới thiệu về Java
Java là một ngôn ngữ lập trình phổ biến và mạnh mẽ, được phát triển bởi Sun Microsystems và hiện đang thuộc sở hữu của Oracle Corporation Xuất hiệnlần đầu vào năm 1995, Java đã nhanh chóng trở thành một trong những ngôn ngữ phổ biến nhất trên thế giới nhờ vào những đặc điểm độc đáo của mình.Điều làm nổi bật Java là tính chất đa nền tảng, khi mã nguồn của nó được biên dịch thành bytecode có thể chạy trên bất kỳ máy ảo Java (JVM) nào, giúp ứng dụng có thể chạy trên nhiều hệ điều hành khác nhau mà không cần sửa đổi Java cũng được thiết kế theo hướng đối tượng, hỗ trợ các khái niệm như đóng gói, kế thừa và đa hình, làm cho mã nguồn trở nên dễ bảo trì và tái sử dụng
Sự bảo mật cao cũng là một điểm mạnh của Java, với mô hình an ninh giới hạn quyền truy cập của chương trình và JVM kiểm soát các tài nguyên như
bộ nhớ và file Java cung cấp thư viện chuẩn rộng lớn và API mạnh mẽ, giúp lậptrình viên xây dựng ứng dụng hiệu quả và linh hoạt
Với sự thuận tiện cho phát triển web thông qua các framework như Spring
và Struts, Java tiếp tục là một lựa chọn hàng đầu trong ngành công nghiệp phần mềm Điều này càng được củng cố bởi cộng đồng lập trình viên lớn và tích cực, cung cấp sự hỗ trợ và tài nguyên đa dạng thông qua các diễn đàn và nguồn mở Java không chỉ là một ngôn ngữ lập trình, mà còn là một hệ sinh thái mạnh mẽ đằng sau sự phát triển của nhiều ứng dụng và hệ thống quan trọng trên khắp thế giới
Trang 122.1.2 Ưu điểm của Java
Java đồng nhiên là một trong những ngôn ngữ lập trình được ưa chuộng khôngchỉ vì tính đa nền tảng và hướng đối tượng mà còn vì một loạt các ưu điểm mà
nó mang lại
Một trong những ưu điểm quan trọng của Java là khả năng đa nhiệm và đồng thời, giúp ứng dụng có thể thực hiện nhiều công việc cùng một lúc mà không làm giảm hiệu suất JVM quản lý quy trình và bộ nhớ một cách hiệu quả, giúp người lập trình tập trung vào việc phát triển ứng dụng mà không phải quan tâm đến quản lý nguồn tài nguyên
Tính bảo mật cao cũng là một trong những ưu điểm quan trọng, với mô hình bảo mật cấp độ và cơ chế kiểm soát quyền truy cập, Java ngăn chặn hiệu quả các
lỗ hổng bảo mật phổ biến, giúp bảo vệ ứng dụng khỏi các cuộc tấn công và lợi dụng
Mô hình thu gom rác (garbage collection) là một yếu tố quan trọng giúp giảm bớt gánh nặng của lập trình viên về quản lý bộ nhớ Hệ thống tự động thu gom rác giúp giải phóng bộ nhớ tự động, giảm nguy cơ xuất hiện lỗi bộ nhớ và làm cho quá trình phát triển và bảo trì ứng dụng trở nên dễ dàng hơn
Java còn được biết đến với thư viện chuẩn và API phong phú, giúp lập trình viên tiết kiệm thời gian và công sức khi xây dựng ứng dụng Cộng đồng phát triển lớn và sự hỗ trợ liên tục từ Oracle cũng đóng góp vào việc làm cho Java trởthành một lựa chọn ổn định và đáng tin cậy trong ngành công nghiệp lập trình phần mềm
2.1.3 Nhược điểm của Java
Mặc dù Java có nhiều ưu điểm nổi bật, nhưng cũng không tránh khỏi một số nhược điểm mà cần được xem xét
Trang 13
Một trong những nhược điểm quan trọng của Java là sự chậm chạp trong việc thực hiện một số nhiệm vụ so với một số ngôn ngữ lập trình khác Nguyên nhân chính là do Java sử dụng máy ảo (JVM) để chạy bytecode, điều này có thể tạo ramột lớp trễ và làm giảm hiệu suất ứng dụng, đặc biệt là trong các ứng dụng yêu cầu xử lý số liệu lớn và phức tạp
Một nhược điểm khác là môi trường phát triển chậm và nặng nề Quá trình biên dịch và chạy các ứng dụng Java có thể mất thời gian đáng kể, đặc biệt là khi so sánh với các ngôn ngữ lập trình biên dịch trực tiếp Điều này có thể ảnh hưởng đến trải nghiệm phát triển và kiểm thử ứng dụng
Một nhược điểm khác của Java là sự phụ thuộc mạnh mẽ vào máy ảo Java (JVM) Mặc dù điều này mang lại tính đa nền tảng, nhưng cũng tạo ra một sự phụ thuộc lớn vào JVM, điều này có thể tạo ra khả năng không tương thích giữa các phiên bản JVM khác nhau và giữa các hệ điều hành
Cuối cùng, mặc dù Java có hỗ trợ đa luồng (multithreading), nhưng quản lý luồng trong Java có thể phức tạp và dễ dàng gây ra lỗi nếu không được thực hiệnđúng cách, điều này làm tăng khả năng phức tạp của việc phát triển ứng dụng đanhiệm
Tuy nhiên, mặc dù có nhược điểm, Java vẫn là một trong những ngôn ngữ lập trình phổ biến và mạnh mẽ được sử dụng rộng rãi trong nhiều lĩnh vực phát triểnphần mềm
2.2 Android Studio
2.2.1 Giới thiệu về Android Studio
Android Studio là một môi trường phát triển tích hợp (IDE) chính thứccho việc phát triển ứng dụng di động Android Được phát triển bởi Google,Android Studio cung cấp một loạt các công cụ và tính năng mạnh mẽ giúp lập
Trang 14
Môi trường phát triển này được xây dựng trên nền tảng IntelliJ IDEA vàtích hợp sâu với các công cụ Android SDK (Software Development Kit).Android Studio hỗ trợ nhiều ngôn ngữ lập trình như Java, Kotlin, và C++, manglại sự linh hoạt cho những nhà phát triển muốn lựa chọn ngôn ngữ phù hợp vớinhu cầu cụ thể của họ
Android Studio cung cấp một giao diện người dùng thân thiện và hiệusuất cao, giúp lập trình viên dễ dàng quản lý dự án, thiết kế giao diện ngườidùng thông qua trình biên tập XML, và triển khai ứng dụng trực tiếp lên thiết bị
di động hoặc máy ảo Android
Các tính năng nổi bật của Android Studio bao gồm trình quản lý tàinguyên, kiểm thử tích hợp, hỗ trợ thực hiện kiểm soát phiên bản với Git, và một
bộ công cụ mạnh mẽ để theo dõi hiệu suất ứng dụng Điều này giúp tăng cườngtrải nghiệm phát triển và làm cho quá trình xây dựng ứng dụng Android trở nênhiệu quả và tiện lợi hơn Android Studio là công cụ quan trọng cho cộng đồngphát triển Android và đóng vai trò quan trọng trong việc hỗ trợ sự phát triểnnhanh chóng và đa dạng của ứng dụng di động trên nền tảng Android
2.2.2 Ưu điểm của Android Studio
Android Studio mang đến nhiều ưu điểm quan trọng, làm cho nó trở thànhmột trong những môi trường phát triển ứng dụng di động hàng đầu Dưới đây là một số ưu điểm nổi bật của Android Studio:
Một trong những lợi ích quan trọng của Android Studio là tích hợp sâu với Android SDK, giúp lập trình viên có được quyền truy cập dễ dàng đến tất cả các công cụ và tài nguyên cần thiết để phát triển ứng dụng Android Việc này giúp giảm thiểu sự phụ thuộc vào các công cụ bên ngoài và tạo ra môi trường phát triển ổn định
Android Studio hỗ trợ nhiều ngôn ngữ lập trình, bao gồm Java, Kotlin và C++, cung cấp sự linh hoạt cho lập trình viên trong việc chọn ngôn ngữ phù hợpvới nhu cầu cụ thể của dự án Đặc biệt, việc hỗ trợ Kotlin nâng cao hiệu suất lập
Trang 15
Giao diện người dùng thân thiện của Android Studio làm cho quá trình phát triển trở nên dễ dàng hơn Trình biên tập XML tích hợp giúp lập trình viên thiết kế giao diện người dùng một cách hiệu quả, trong khi các công cụ quản lý tài nguyên giúp quản lý tất cả các loại tài nguyên một cách thuận tiện
Android Studio cung cấp một loạt các tính năng hỗ trợ kiểm thử tích hợp, giúp lập trình viên kiểm thử ứng dụng của mình một cách chặt chẽ và hiệu quả Việc tích hợp sẵn các công cụ kiểm thử giúp nhanh chóng xác định và sửa lỗi, tối ưu hóa hiệu suất và đảm bảo chất lượng của ứng dụng
2.2.3 Nhược điểm của Android Studio
Android Studio, mặc dù là một môi trường phát triển ứng dụng
di động hiệu quả, nhưng cũng không tránh khỏi một số nhược điểm cần được xem xét Đầu tiên, việc tài nguyên hệ thống lớn của Android Studio có thể tạo ra áp lực đáng kể đối với các máy tính có cấu hình thấp, làm giảm hiệu suất và làm chậm quá trình phát triển.
Thời gian khởi động Android Studio cũng là một vấn đề, đặc biệt là khi làm việc với các dự án lớn Quá trình này có thể tăng thời gian chờ đợi của lập trình viên và làm gián đoạn quá trình làm việc Ngoài ra, sự hỗ trợ không đồng đều cho các ngôn ngữ khác nhau, đặc biệt là C++, có thể tạo ra những thách thức và khó khăn trong quá trình phát triển.
Các vấn đề về plugin và quá trình cập nhật cũng là điểm đáng chú ý Việc sử dụng các plugin có thể gây ra sự không ổn định hoặc xung đột trong Android Studio, đặc biệt là khi có sự cập nhật Điều này có thể làm phức tạp quá trình cập nhật và sử dụng các tính năng
mở rộng.
Trang 162.3 Mô hình
2.3.1 Giới thiệu về mô hình MVC
MVC là viết tắt của cụm từ "Model-View-Controller," là một mô hình kiến trúc phần mềm được sử dụng rộng rãi trong lĩnh vực công nghệ phần mềm
Mô hình này được thiết kế để quản lý và xây dựng giao diện người dùng trên cácứng dụng máy tính MVC phân chia ứng dụng thành ba thành phần chính, và mỗi thành phần có vai trò và nhiệm vụ riêng biệt và độc lập với nhau
Trong mô hình MVC, có ba thành phần không thể thiếu:
1 Model: Đây là thành phần chịu trách nhiệm lưu trữ toàn bộ dữ liệu
của ứng dụng và đóng vai trò là giao diện giữa hai thành phần khác là View và Controller Model thường đại diện cho dữ liệu sử dụng bởi ứng dụng, có thể là cơ sở dữ liệu, các file dữ liệu như XML, hoặc thậm chí là các đối tượng đơn giản như biểu tượng hoặc nhân vật trong một trò chơi.
2 View: Đây là thành phần giao diện dành cho người sử dụng, thể hiện thông
Trang 17
như cửa sổ, nút bấm, văn bản, và hiển thị dữ liệu để người dùng có thể nhìn thấy
và tương tác với chúng
3 Controller: Thành phần này có nhiệm vụ xử lý các yêu cầu được người
dùng gửi qua View Controller bao gồm cả Model và View, và nó nhận các dữ liệu đầu vào từ người dùng và thực hiện các cập nhật và xử lý tương ứng Controller là bộ não của ứng dụng, điều hướng và quản lý luồng dữ liệu giữa Model và View
2.3.2 Ưu điểm của mô hình MVC
Mô hình MVC (Model-View-Controller) mang đến nhiều ưu điểm quan trọng trong phát triển ứng dụng Trước hết, mô hình này giúp tiết kiệm băng thông bởi
vì không sử dụng viewstate, từ đó giúp giảm tải cho server và cải thiện tính ổn định của website Khả năng này không chỉ giúp giảm khả năng gặp sự cố kết nốimạng mà còn cải thiện trải nghiệm người dùng
Việc kiểm tra ứng dụng cũng trở nên dễ dàng hơn trong mô hình MVC Nhờ
sự phân chia rõ ràng giữa các thành phần Model, Controller và View, việc kiểm tra lỗi phần mềm trước khi ứng dụng được bàn giao cho người dùng trở nên đơn giản và hiệu quả hơn Điều này giúp đảm bảo rằng ứng dụng làm việc ổn định
và cung cấp chất lượng tốt
Mô hình MVC tách biệt các thành phần trong ứng dụng, bao gồm Model (mô hình dữ liệu), Controller (bộ điều khiển), và View (giao diện) Sự tách biệt này giúp quản lý mã nguồn dễ dàng hơn, làm cho mã trở nên sạch sẽ và dễ đọc Điềunày giúp nhóm phát triển làm việc hiệu quả hơn và dễ dàng theo dõi và duy trì
mã nguồn
Controller, một phần quan trọng của mô hình MVC, được tối ưu hóa cho nhiều nền tảng ngôn ngữ khác nhau, từ đó tạo ra tính linh hoạt cho ứng dụng Nógiúp ứng dụng hoạt động tốt trên nhiều môi trường và thiết bị khác nhau
Trang 18
Duy trì ứng dụng trong mô hình MVC trở nên dễ dàng hơn do sự tách biệt giữa các thành phần Bạn có thể chỉnh sửa hoặc nâng cấp một phần mà không ảnh hưởng đến các phần khác
2.3.3 Nhược điểm của mô hình MVC
Mô hình MVC (Model-View-Controller) là một kiến trúc phát triển phần mềmmạnh mẽ, nhưng cũng đi kèm với một số nhược điểm cần được xem xét Ban đầu, việc hiểu và triển khai mô hình này có thể phức tạp, đặc biệt đối với người mới bắt đầu Sự tách biệt chặt chẽ giữa Model (mô hình), View (giao diện) và Controller (điều khiển) có thể dẫn đến hiệu suất kém trong trường hợp các ứng dụng yêu cầu nhiều tương tác giữa các thành phần này
Một trong những thách thức khác là việc quản lý mã trở nên phức tạp, đặc biệt
là trong các dự án lớn Cấu trúc MVC có thể tạo ra nhiều lớp và tầng lớp mã, làm cho mã trở nên khó quản lý và khó hiểu Thời gian phát triển dự án cũng có thể kéo dài hơn so với các mô hình khác, đặc biệt khi yêu cầu của dự án thay đổithường xuyên
Đối với các dự án nhỏ và đơn giản, triển khai mô hình MVC có thể cảm thấy quá phức tạp và không cần thiết, làm cho mã trở nên quá nặng nề và khó quản
lý Cuối cùng, việc sử dụng mô hình MVC đòi hỏi kiến thức và kỹ năng cao cho phát triển và bảo trì hiệu quả, và có thể không phù hợp cho những dự án với đội ngũ phát triển không có kinh nghiệm trong việc làm việc với kiến trúc này
2.4 Cơ sở dữ liệu SQLite
2.4.1 Giới thiệu SQLite
SQLite là một hệ quản trị cơ sở dữ liệu quan hệ nhỏ gọn và nhút nhát, được tích hợp trực tiếp vào ứng dụng mà không đòi hỏi quá trình cài đặt và quản
lý riêng biệt Được phát triển bởi Dwayne Richard Hipp, SQLite là một công cụ