TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA CÔNG NGHỆ THÔNG TIN
-o0o -BÁO CÁO BÀI TẬP LỚN
LẬP TRÌNH THIẾT BỊ DI ĐỘNG
Đề tài: App giao đồ ăn
Giảng viên hướng dẫn: Thầy Lại Mạnh Dũng
Trang 2Hà Nội, Tháng 4 Năm 2024
CHƯƠNG I : TỔNG QUAN VỀ ĐỀ TÀI 1 Mô tả về đề tài
1.1 Tóm tắt đề tài
Đề tài chúng em thực hiện là ứng dụng mua bán thực phẩm trên hệ điều hành Android và sử dụng ngôn ngữ Java dựa trên kiến thức đã được học trên lớp và tham khảo các nguồn kiến thức khác trên Internet.
1.2 Lý do chọn đề tài
Ngày nay việc mua bán trực tuyến trên điện thoại trở nên phổ biến, dựa vào nhu cầu đó chúng em muốn trải nghiệm thiết kế một ứng dụng mua bán trực tuyến là ứng dụng mua bán thực phẩm.
1.3 Mục tiêu của đề tài
Mục tiêu của ứng dụng mua bán thực phẩm này để vừa luyện tập kĩ năng cơ bản cũng như nâng cao trong thiết kế phát triển ứng dụng Android Ứng dụng dùng Android Studio vẽ giao diện và dùng SQLiteOpenHelper làm CSDL.
Trang 31.2 Chi tiết các use-case
2 Cơ sở dữ liệu
3 Giao diện thiết kế
3.1 Giao diện thiết kế phần đăng ký, đăng nhập
Trang 4
3.2 Giao diện thiết kế khi vào bên trong ứng dụng
Trang 5
CHƯƠNG III : GIAO DIỆN VÀ CHỨC NĂNG CỦA HỆ THỐNG
1 Cấu trúc dự án
1.1 Module dự án Android
Bên Android, cấu trúc dự án sẽ chia làm các thành phần là model, repository,
serviceapi, utils, view Mỗi một package sẽ chứa code để làm việc với từng thành phần tương ứng.
Trang 6
Trong package model, là nơi chứa các domain hay các thực thể để cho việc trao
đổi dữ liệu trong suốt cả chương trình Android.
Trong package repository và serviceapi là nơi
thành phần để giao tiếp với bên Spring BackEnd Đây là phần MODEL ở trong kiến trúc MVVM.
Trong package view là nơi để làm việc với các activity và các fragment, đây là nơi
chứa nhiều code và nghiệp vụ nhất khi làm việc với Android, ở trong kiến trúc MVVM đây là phần VIEW và VIEW MODEL Hình sau sẽ giới thiệu đôi chút.
package utils chứa các thành phần static để sử dụng trong suốt quá trình ứng dụng chạy
Trang 71.2.Module dự án Spring (do file quá nhiều nên sẽ show các thư mục project)
Bên phía BackEnd, các module được chia thành các package như bootstrap, configuration, controller, dto, exception, mapper, model, repository, service, util Trong đó các package như controller sẽ là đại diện cho tầng presentation (trình diễn) , những class trong package này sẽ có nhiệm vụ cung cấp các api để client có thể giao tiếp với phía BackEnd, package service và repository đại diện cho tầng business cũng như tầng persistence, đây là nơi chứa những class giải quyết các logic nghiệp vụ và logic để giao tiếp với phía DB, Database em sử dụng là PostgresSql.
package auth chứa các activities và fragments liên quan đến đăng nhập, đăng ký, …
package love chứa các activities và fragments liên quan đến trang loveplaylist, tạo một love playlist, …
package musicplayer chứa các activities và fragments liên quan đến trình phát nhạc, và service để phát nhạc trong khi ứng dụng chạy
Trang 8Package bootstrap có class Bootstrap để khởi chạy các thành phần cần thiết và xử lý các dữ liệu cần thiết khi server khởi chạy, em dùng class này để khởi tạo lời gọi đến Song API rồi sau đó xử lý dữ liệu nhét vào album rồi lưu vào DB, một dạng initialize dữ liệu.
Package dto chứa các class DTO (Data Transfer Object) để trao đổi dữ liệu, exception chứa các lớp xử lý ngoại lệ tự định nghĩa, mapper là nơi chứa các interface để thực hiện cho việc chuyển đổi giữa DTO và Model gốc Em các annotations của MapStruct để trong quá trình package thành jar sẽ tự sinh ra code triển khai các interface này cho việc chuyển đổi.
Cuối cùng là các package còn lại
package configuration có chứa class để cấu hình các Spring Bean cần thiết để sử dụng trong khi code…
package model chứa các logic miền hay domain logic chính của hệ thống backend
package repository, service có tác dụng để trao đổi với phía database, các service sẽ sử dụng thành phần phụ thuộc (DI) từ repository để các logic nghiệp vụ có thể giao tiếp với DB
Trang 9Ngoài ra em còn viết một số unit test và integration test phía backend để kiểm thử xem API hoạt động oke chưa hay kiểm thử xem repository lấy dữ liệu, lưu dữ liệu chuẩn chưa.
Trang 102.2 Giao diện trang Home, Playlist, LovePlaylist, User
Giao diện trang Home
Giao diện trang Playlist (chứa danh sách các bài hát)
Giao diện trang LovePlaylist
Trang 11Giao diện trang User
2.3 Giao diện trang Rank (chưa có ý tưởng triển khai)
2.4 Giao diện trang Album khi người dùng click vào Album ở Home
Trang 122.5 Giao diện trang Playlist khi người dùng click vào một Playlist
2.6 Giao diện thêm mới một bài hát vào Playlist
Trang 132.7 Giao diện trình phát nhạc
3 Chức năng
3.1 Giao diện và chức năng đăng nhập
Giao diện bắt đầu sau intro là giao diện đăng nhập của ứng
3.2 Giao diện và chức năng đăng ký
3.3 Giao diện và chức năng quên mật khẩu
Trang 14
3.4 Giao diện và chức năng trong trang Home
Trang 153.5 Giao diện và chức năng của trang …
3.6 Giao diện và chức năng của trang ….
3.7 Giao diện và chức năng trang danh sách sản phẩm
3.8 Giao diện và chức năng trang người dùng
Trang 163.9 Giao diện và chức năng
Trang 17CHƯƠNG IV: KẾT LUẬN
KẾT LUẬN
BẢNG PHÂN CÔNG CÔNG VIỆC
Trang 18Thao tác trên Intelij IDEA (để chạy backend local)
Trang 19o Sau khi thầy đã cài JDK 17 và tạo database trên PostgresSQL, mở ứng dụng Spring Boot lên bằng Intelij IDEA
file cấu hình cho ứng dụng spring
Đây là cấu hình mặc định cho remote database, chúng ta cần thay đổi để chạy trên local database đã cài từ bước trước.
Trang 20o Sau đó, vào file application.properties cấu hình lại một chút để có thể giao tiếp với database local, mặc định là đang kết nối đến database host trên web Đây là nội dung cần thay thế
o oSau đó chạy ứng dụng lên bằng cách cách nhấn nút hình tam giác trong file SoulMusicBEServiceApplication.java
Trang 21o Vậy là xong phần chạy backend local, em dùng Spring Data JPA nên khi chạy app sẽ tự chạy code sinh ra các bảng và dữ liệu khởi tạo sẽ được khởi tạo từ file Bootstrap.java trong package bootstrap.
Thao tác trên Android (để chạy android)
o Trong package serviceapi, để có thể chạy local cần thay đổi đường dẫn gọi đến API của backend đang chạy local.
o Sau đó chạy ứng dụng Android lên và đăng ký tài khoản và trải nghiệm thôi Lưu ý là phải có kết nối wifi để đăng ký.
Thay đổi từ Constants.FULL sang Constants.EMULATOR_FULL_PATH