Tải bản đầy đủ (.docx) (40 trang)

ĐỒ án xây dựng ứng dụng quản lý chi tiêu cho phòng trọ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (839.46 KB, 40 trang )

ĐẠI HỌC QUỐC GIA THÀNH
MINH

PHỐ HỒ CHÍ

TRƯỜNG ĐẠI HỌC CƠNG
TIN

NGHỆ THÔNG

KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 2

ĐỀ TÀI: “XÂY DỰNG ỨNG DỤNG QUẢN LÝ CHI TIÊU CHO
PHÒNG TRỌ”
Giảng viên hướng dẫn: ThS. Trần Anh Dũng

Sinh viên thực hiện:
1. Hoàng Minh Hồng 17520526
2. Trương Nguyễn Tuấn Nam
17520785
Tp. Hồ Chí Minh, ngày 11 tháng 01 năm 2021

LỜI CẢM ƠN
Trong quá trình học tập, nghiên cứu và phát triền đề tài “Xây dựng ứng dụng quản lý


chi tiêu cho phòng trọ” chúng em đã nhận được sự giúp đỡ, chỉ bảo nhiệt tình của thầy để
hồn thành đồ án này.
Chúng em xin bày tỏ sự biết ơn đặc biệt đến Thầy Trần Anh Dũng người đã trực tiếp


hướng dẫn, giúp đỡ về kiến thức, tài liệu và phương pháp để chúng em hoàn thành đề tài
này.
Chúng em xin chân thành cảm ơn vì những thời gian quý báu thầy đã dành ra để
kiểm tra, đưa ra các ý kiến nhận xét và đóng góp rất nhiều vào những tính năng, hướng
phát triển mới hơn cho đề tài.
Hi vọng với sự chỉ báo và góp ý từ thầy, nhóm đề tài có thể tiếp túc phát triển để ứng
dụng ngày càng được mở rộng và phục vụ được tốt hơn cho người dùng.
Mặc dù đã có nhiều cố gắng trong suốt quá trình thực hiện đề tài, song có thể cịn có
những mặt hạn chế, thiếu sót. Chúng em rất mong nhận được ý kiến đóng góp và sự chỉ
dẫn của thầy và các bạn để đề tài của chúng em được hoàn thiện hơn.
Chúng em xin trân trọng cảm ơn!
Thành phố Hồ Chí Minh, 11 tháng 01 năm 2021

MỤC LỤC
Nô i dung
Chương 1. GIỚI THIỆU CHUNG 1 1.1. Lý do chọn đề tài 1 1.2. Mục đích của đề tài 2
1.3. Chức năng dự kiến 3 1.4. Đối tượng nghiên cứu 3
Chương 2. KIẾN THỨC NỀN TẢNG 4 2.1. Tổng quan về mơ hình 3 lớp 4 2.1.1. Khái
niệm 4 2.1.2. Cấu trúc mơ hình 3 lớp 5 2.1.2.1. Tầng trình diễn – Presentation Layer (GUI)
5 2.1.2.2. Tầng logic dữ liệu – Business Logic Layer (BLL) 5 2.1.2.3. Tầng truy cập dữ
liệu – Data Access Layer (DAL) 5 2.1.3. Ưu điểm của mơ hình 3 lớp 6 2.1.4. So sánh
MVC và 3-tiers Model 7 2.2. Tổng quan về công nghệ Flutter 8 2.2.1. Khái niệm 8 2.2.2.
Lịch sử phát triển 8 2.2.3. Ưu điểm của Flutter 8 2.3. Ngôn ngữ Dart 10 2.3.1. Giới thiệu
ngôn ngữ Dart 10
2.3.2. Ưu điểm của Dart 10 2.4. Google Firebase Cloud 12 2.4.1. Khái niệm Firebase 12
2.4.2. Chức năng chính của Google Firebase 13 2.4.2.1. Realtime Database – Cơ sở dữ
liệu thời gian thực 13 2.4.2.2. Firebase Authentication – Hệ thống xác thực của Firebase


13 2.4.2.3. Firebase storage 13 2.4.2.4. Firebase Cloud Messaging 13 2.4.3. Lợi ích của

Google Firebase 13 2.5. Tổng quan về Android 14 2.5.1. Giới thiệu nền tảng Android 14
2.5.2. Cấu trúc của hệ điều hành Android 15 2.5.3. Giới thiệu hệ điều hành mở Android 16
Chương 3. XÂY DỰNG HỆ THỐNG 16 3.1. Xây dựng kiến trúc hệ thống 16 3.1.1. Xác
định yêu cầu hệ thống 16 3.1.1.1. Mô tả chức năng 17 3.1.2. Phân tích thiết kế hệ thống.
19 3.1.2.1. Sơ đồ use case 19 3.1.2.2. Danh sách các actors 22 3.1.2.3. Danh sách các use
cases 22 3.1.3. Sơ đồ lớp 23 3.1.4. Phân tích và thiết kế CSDL 24
3.1.4.1. Bảng Thơng tin nhóm 24 3.1.4.2. Bảng Khoản chi nhóm 25 3.1.4.3. Bảng
Chi tiết khoản chi 25 3.1.4.4. Bảng Người dùng 26
3.2. Thiết kế giao diện 27 3.2.1. Giao diện ứng dụng 27 3.2.1.1. Giao diện Đăng ký 27
3.2.1.2. Xác minh số điện thoại 28 3.2.1.3. Giao diện Đăng nhập 29 3.2.1.4. Giao diện
Quản lý khoản chi 30 3.2.1.5. Giao diện Danh sách nhóm 31 3.2.1.6. Giao diện Tổng quan
32 3.2.1.7. Giao diện Quản lý tài khoản 33 3.2.1.8. Giao diện Thống kê 34 3.2.1.9. Giao
diện Thông tin chi tiết khoản chi 35 Chương 4. KẾ HOẠCH THỰC HIỆN 36 4.1. Q
trình thực hiện 36 4.2. Bảng phân cơng công việc 37 Chương 5. KẾT LUẬN, HƯỚNG
PHÁT TRIỂN 38 5.1. Ưu điểm 38 5.2. Nhược điểm 38 5.3. Hướng phát triển 38 Chương
6. TÀI LIỆU THAM KHẢO 39
DANH MỤC HÌNH VẼ
Hình 2-1: Mơ hình 3 lớp 4 Hình 2-2: So sánh Mơ hình 3 lớp và MVC 6 Hình 23:Google Firebase Cloud 10 Hình 2-4: Cấu trúc hệ điều hành Android 13 Hình 3-1:
Biểu đồ use case mức tổng quát 16 Hình 3-2: Biểu đồ use case Đăng nhập 17 Hình 3-3:
Biểu đồ use case Quản lý khoản chi nhóm 18 Hình 3-4: Biểu đồ use case Tổng quan
nhóm 18 Hình 3-5: Biểu đồ lớp 21 Hình 3-6: Giao diện đăng ký 25 Hình 3-7: Giao diện
xác minh số điện thoại 26 Hình 3-8: Giao diện đăng nhập 27 Hình 3-9: Giao diện Quản
lý khoản chi 28 Hình 3-10: Giao diện Danh sách nhóm 29 Hình 3-11: Giao diện Tổng
quan 30 Hình 3-12: Giao diện Quản lý tài khoản 32 Hình 3-13: Giao diện Thống kê 33
Hình 3-14: Giao diện Thông tin chi tiết 34

DANH MỤC BẢNG


Bảng 3-1: Danh sách actors 19 Bảng 3-2: Danh sách use cases 20 Bảng 3-3: Các lớp

của sơ đổ lớp 21 Bảng 3-4: Các đối tượng và thuộc tính của đối tượng 22 Bảng 3-5:
Bảng Khoản chi 22 Bảng 3-6: Bảng Chi tiết khoản chi 22 Bảng 3-7: Bảng Khoản thu
23 Bảng 3-8: Bảng Chi tiết khoản thu 23 Bảng 3-9: Bảng Người dùng 24

DANH MỤC TỪ VIẾT TẮT
Từ viết tắt

Từ đầy đủ

Giải thích

QLTC

Quản lý tài chính

Hình thức quản lý tiền bạc

CSDL

Cơ sở dữ liệu

Cơ sở dữ liệu cho ứng dụng

RFM

RoomFinancialManagement

Tên của ứng dụng

Chương 1. GIỚI THIỆU CHUNG

1.1. Lý do chọn đề tài
Dựa trên nhu cầu các bạn ở trọ thường nộp ra một tiền quỹ rồi từ đó sử dụng dần,
hay việc nợ tiền giữa người này và người khác, các món hàng được mua bởi người này sử
dụng bởi người kia.v.v. Việc quản lý thủ công trở nên khó khăn, thì phần mềm sẽ giúp bạn
quản lý một cách đơn giản và gọn nhẹ. Kết quả trả ra là dư nợ của mỗi người và số tiền
còn dư hay thiếu của quỹ chung.
Đối với những người tiêu dùng thông minh, chuyện quản lý chi tiêu rất dễ dàng.
Nhưng đối với những sinh viên cịn đi học thì rất ít ai có thể tự quản lý được túi tiền của
mình thế nên nhiều ứng dụng đã được làm ra để giải quyết vấn đề đó.
Xây dựng ứng dụng tài chính là một đề tài khơng mới nhưng ln mang tính ứng
dụng và nhu cầu cao từ các lập trình viên. Với sự phát triển mạnh mẽ của cuộc cách mạng
cơng nghệ 4.0, thì sự phát triển của internet là điều dễ dự đốn, khi mà mọi người đều có
cho riêng mình các thiết bị di động ln kết nối với internet cùng với sự ra đời của rất
nhiều ứng dụng quản lý cùng chức năng cũng như tính năng riêng.
Phục vụ tốt hơn nhu của người dùng và người quản lý chi tiêu trong hoạt động
thường ngày.
Người dùng chỉ cần các thao tác đơn giản trên điện thoại di động là có thể sử
dụng được ngay.


1
1.2. Mục đích của đề tài
- Với bước khởi đầu là mơn Đồ án 1, nhóm thực hiện đề tài mong muốn sẽ nghiên
cứu tìm ra các tính năng ưu việt hơn để áp dụng thêm vào đề tài này.
- Từ các cơng nghệ đã tìm hiểu, nhóm sẽ chọn ra các cơng nghệ phù hợp, có thể mở
rộng và nâng cấp thêm để ứng dụng sẽ hoàn thiện theo hướng mong muốn của
nhóm.
- Trong phạm vi mơn học, nhóm đặt ra các chức năng phải thực hiện gồm: ●
Xây dựng chức năng đăng nhập, đăng ký, xác thực tài khoản
● Xây dụng chức năng quản lý thông tin người dùng

● Xây dựng chức năng quản lý các khoản chi nhóm
● Xây dựng chức năng tạo nhóm chi tiêu
● Xây dựng chức năng quản lý và thống kê

2
1.3. Chức năng dự kiến

- Tạo nhóm chi tiêu và thêm người dùng khác vào nhóm


- Tạo khoản chi và chia tiền cho những người tham gia khoản chi này Thống kê chi tiêu của nhóm theo tuần/tháng

- Tìm kiếm thơng tin có sử dụng bộ lọc
1.4. Đối tượng nghiên cứu
- Các công nghệ:

● Android Studio
● Firebase
● Flutter
- Giao diện: Quy tắc thiết kế F-layout, quy tắc phối màu mono
- Đối tượng trong phạm vi đề tài hướng đến: Sinh viên đang ở trọ hoặc ở ký túc
xá theo nhóm từ 3 người trở lên.

3

Chương 2. KIẾN THỨC NỀN TẢNG
2.1. Tổng quan về mơ hình 3 lớp
2.1.1. Khái niệm
Mơ hình 3 lớp (3-tiers) là một kiến trúc kiểu client/server mà trong đó giao diện
người dùng (UI-user interface), các quy tắc xử lý (BR-business rule hay BL-business



logic), và việc lưu trữ dữ liệu được phát triển như những module độc lập, và hầu hết là
được duy trì trên các nền tảng độc lập, và mơ hình 3 tầng (3-tiers) được coi là một kiến
trúc phần mềm và là một mẫu thiết kế.

Hình 2-1: Mơ hình 3 lớp

4
2.1.2. Cấu trúc mơ hình 3 lớp
2.1.2.1. Tầng trình diễn – Presentation Layer (GUI)
Tầng này có nhiệm vụ chính là giao tiếp với người dùng. Nó gồm các thành
phần giao diện (winform, webform, …) và thực hiện các công việc như nhập liệu,
hiển thị dữ liệu, kiểm tra tính đúng đắn dữ liệu trước khi gọi lớp Business Logic
Layer (BLL).
2.1.2.2. Tầng logic dữ liệu – Business Logic Layer (BLL)


Đây là nơi đáp ứng các yêu cầu thao tác dữ liệu của GUI layer, xử lý chính
nguồn dữ liệu từ Presentation Layer trước khi truyền xuống Data Access


Layer và lưu xuống hệ quản trị CSDL.
● Đây

còn là nơi kiểm tra các ràng buộc, tính tồn vẹn và hợp lệ dữ liệu, thực hiện

tính tốn và xử lý các yêu cầu nghiệp vụ, trước khi trả kết quả về Presentation
Layer.
2.1.2.3. Tầng truy cập dữ liệu – Data Access Layer (DAL)

Tầng này có chức năng giao tiếp với hệ quản trị CSDL như thực hiện các công
việc liên quan đến lưu trữ và truy vấn dữ liệu (tìm kiếm, thêm, xóa, sửa, …).

5
2.1.3. Ưu điểm của mơ hình 3 lớp
Việc phân chia thành từng lớp giúp cho code được tường minh hơn. Nhờ vào việc
chia ra từng lớp đảm nhận các chức năng khác nhau và riêng biệt như giao diện, xử lý, truy
vấn thay vì để tất cả lại một chỗ. Nhằm giảm sự kết dính.
Dễ bảo trì khi được phân chia, thì một thành phần của hệ thống sẽ dễ thay đổi. Việc
thay đổi này có thể được cô lập trong 1 lớp, hoặc ảnh hưởng đến lớp gần nhất mà khơng
ảnh hưởng đến cả chương trình.
Dễ phát triển, tái sử dụng: khi chúng ta muốn thêm một chức năng nào đó thì việc
lập trình theo một mơ hình sẽ dễ dàng hơn vì chúng ta đã có chuẩn để tuân theo. Và việc
sử dụng lại khi có sự thay đổi giữa hai mơi trường (Winform sang Webform) thì chỉ việc
thay đổi lại lớp GUI.
Dễ bàn giao. Nếu mọi người đều theo một quy chuẩn đã được định sẵn, thì cơng việc
bàn giao, tương tác với nhau sẽ dễ dàng hơn và tiết kiệm được nhiều thời gian.
Dễ phân phối khối lượng cơng việc. Mỗi một nhóm, một bộ phận sẽ nhận một nhiệm


vụ trong mơ hình 3 lớp. Việc phân chia rõ ràng như thế sẽ giúp các lập trình viên kiểm sốt
được khối lượng cơng việc của mình.

6
2.1.4. So sánh MVC và 3-tiers Model
Điểm khác biệt cơ bản của 2 mô hình MVC và Mơ hình 3 lớp là sự khác nhau của
cách xử lý u cầu của 2 mơ hình. Trong MVC, thành phần model giữ chức năng của cả
tầng Business và Data Access trong mơ hình 3 lớp.
3 Layer thường được sử dụng trong lập trình ứng dụng, trong khi đó MVC được ưu
chuộng nhiều trong lập trình website vì tính linh hoạt và khơng bắt buộc các DTO như 3Layer.



Hình 2-2: So sánh Mơ hình 3 lớp và MVC

7
2.2. Tổng quan về công nghệ Flutter
Trong đề tài này, appservice sẽ được viết bằng Flutter. Vì vậy sinh viên thực hiện đề
tài cần tìm hiểu về ngơn ngữ này.
2.2.1. Khái niệm
Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do Google
phát triển. Flutter sử dụng ngôn ngữ DART cũng do Google phát triển và flutter cũng đã
được sử dụng để tạo ra các ứng dụng native cho Google.
Flutter hỗ trợ rất nhiều cơ sở dữ liệu như: MySQL, Informix, Oracle, Sybase, Solid,
PostgreSQL, Generic ODBC…
2.2.2. Lịch sử phát triển
Phiên bản đầu tiên của Flutter được gọi là "Sky" và chạy trên hệ điều hành Android.
Nó được công bố tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thể kết
xuất ổn định ở mức 120 khung hình trên giây. Trong bài phát biểu chính ở hội nghị Google


Developer Days tại Thượng Hải, Google công bố phiên bản Flutter Release Preview 2, đây
là phiên bản lớn cuối cùng trước Flutter 1.0. Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã
được phát hành tại sự kiện Flutter Live, là phiên bản "ổn định" đầu tiên của khung ứng
dụng này.
2.2.3. Ưu điểm của Flutter
❖ Native đúng nghĩa
Bộ engine để render UI hồn tồn thuộc Flutter, vì vậy bạn có thể tạo ra bất kỳ hiệu
ứng và đồ hoạ nào cho cả 2 nền tảng iOS và Android. Bạn có thể tưởng tượng Flutter như
1 engine game, có thể điều chỉnh đến từng pixel và phủ trên đó là hệ thống Widget đa
dạng, phong phú.


8
❖ Hot Reload
Khi làm việc với những thứ liên quan đến UI thì Hot Reload thật khiến cho lập
trình viên dễ chịu, càng tuyệt hơn khi Flutter cung cấp khả năng ghi nhớ state của ứng
dụng. Hot Reload cung cấp cho bạn trải nghiệm tuyệt vời khi lập trình Flutter, so với React
Native thì điểm này Flutter hơn.
❖ Dart DevTools
DevTools tuy mới ở giai đoạn beta nhưng độ hoàn thiện cũng rất cao, so với
DevTools của React/React Native thì DevTools của Flutter tốt hơn.
❖ Nâng cấp dễ dàng
Mặc dù cách cài đặt ban đầu của Flutter là tải về tập tin nén, nhưng khi cập nhật lên
phiên bản mới thì chỉ cần dịng lệnh là đủ, và khá dễ dàng. Ứng dụng sau khi nâng cấp
phiên bản Flutter chạy khơng gặp trở ngại gì cả. Đây là một điểm cộng khá lớn khi xét về
độ trưởng thành. Khi sử dụng React Native, các phiên bản từ 0.25, 0.48 có những thay đổi
phải sửa bằng tay mới chạy, rất khó chịu.
Kết luận: Với những tính năng ưu việt của mình, Flutter vẫn, sẽ và đang là một trong
những ngơn ngữ lập trình phổ biến nhất ngày nay và trong tương lai, được các lập trình
viên rất ưa chuộng, và sử dụng rộng rãi trên toàn thế giới.


9
2.3. Ngôn ngữ Dart
2.3.1. Giới thiệu ngôn ngữ Dart
Ngôn ngữ DART là ngôn ngữ thuần hướng đối tượng được Google giới thiệu từ năm
2011, với mục đích cung cấp sự lựa chọn hiện đại hơn nhưng không thay thế Javascript.
Tối ưu cho client, nhất là ứng dụng đa nền tảng.
Từng giữ vị trí Top 1 cho bình chọn ngơn ngữ khơng nên học năm 2018 theo
Codementor:
/>Đưa ra ví dụ để có thể nói mọi thứ đều có thể trở thành hiện tượng “vật đổi sao dời”, từ

một ngôn ngữ không nên học vào 2018 có thể trở thành ngơn ngữ được sử dụng nhiều
trong năm 2019 này, và nhờ Flutter mà có khả năng tiếp tục phát triển vào 2020.
Ngơn ngữ DART được hỗ trợ khá tốt ở Visual Studio Code, và trong Android Studio.
2.3.2. Ưu điểm của Dart
❖ Năng suất
Cú pháp Dart rõ ràng và súc tích, cơng cụ của nó đơn giản nhưng mạnh mẽ. Typesafe giúp bạn xác định sớm các lỗi tinh tế. Dart có các thư viện cốt lõi và một hệ sinh thái
gồm hàng ngàn package.
❖ Nhanh
Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự đốn hiệu
suất cao và khởi động nhanh trên các thiết bị di động và web.

10
❖ Di động
Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart có thể


chạy tự nhiên trên iOS, Android và hơn thế nữa. Đối với các ứng dụng web, chuyển mã từ
Dart sang JavaScript.
❖ Dễ gần
Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú pháp và định hướng
đối tượng khơng gây ngạc nhiên của nó. Nếu bạn đã biết C ++, C # hoặc Java, bạn có
thể làm việc hiệu quả với Dart chỉ sau vài ngày.
❖ Reactive
Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản lý các đối tượng tồn tại
trong thời gian ngắn, chẳng hạn như các widget UI, thông qua phân bổ đối tượng nhanh
và GC. Dart hỗ trợ lập trình khơng đồng bộ thơng qua các tính năng ngơn ngữ và API sử
dụng các đối tượng Future và Stream.

11
2.4. Google Firebase Cloud



Hình 2-3: Google Firebase Cloud
2.4.1. Khái niệm Firebase
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nề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ển nhanh 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.
Ra mắt muộn hơn các công nghệ khác, Firebase được ra đời vào năm 2014 và được
google mua lại vào năm 2016. Từ đó Firebase đã tăng từ 110.000 lên 470.000 nhà phát
triển và vẫn đang nắm giữ tốc độ tăng trưởng đáng kể. Firebase được tin dùng và phổ biến
bởi vì nó giúp nhà phát triển có thể xây dựng hệ thống Client – Server mà công sức cũng
như chi phí bỏ ra cho phía Server giảm đi đáng kể.

12
2.4.2. Chức năng chính của Google Firebase
2.4.2.1. Realtime Database – Cơ sở dữ liệu thời gian thực
Dữ liệu được firebase lưu trữ có dạng JSON và được đồng bộ cơ sỡ dữ liệu đến tất cả
user theo thời gian thực. Điều này sẽ giúp xây dựng hệ thống đa nền tảng và tất cả user
cùng dùng chung một database được cung cấp với firebase, điều tuyệt vời hơn là firebase
tự động cập nhật mỗi khi có sự thay đổi dữ liệu.
2.4.2.2. Firebase Authentication – Hệ thống xác thực của Firebase


Firebase dễ dàng tích hợp các cơng nghệ xác thực của các ông lớn trên internet như
Google, Facebook, …hoặc một hệ thống xác thực tự xây dựng trong ứng dụng ở bất kỳ
nền tảng nào như Android, iOS.
2.4.2.3. Firebase storage
Firebase storage lưu trữ được nhiều dạng dữ liệu như tập tin, hình ảnh, video một
cách dễ dàng. Ngồi ra nó cịn tích hợp Google security giúp tải lên và tải về các ứng dụng
firebase một cách tiện lợi.

2.4.2.4. Firebase Cloud Messaging
Bên cạnh các tính năng trên, Firebase cịn cung cấp dịch vụ Cloud Messaging, một
giải pháp đa nền tảng, cho phép mọi người gửi thơng điệp miễn phí dưới dạng tin nhắn
theo thời gian thực.
2.4.3. Lợi ích của Google Firebase
❖ Triển khai ứng dụng cực nhanh
Với firebase, lập trình viên sẽ giảm được nhiều thời gian cho việc xây dựng và phát
triển và đồng bộ cơ sở dữ liệu, nó diễn ra nhanh chóng và tự động qua các API mà
Firebase cung cấp. Ngồi ra, nếu lập trình viên muốn xây dựng ứng dụng đa nền tảng, điều
này hoàn toàn dễ dàng vì Firebase cũng hỗ trợ đa nền tảng.

13
Khơng chỉ có vậy, q trình đăng ký và đăng nhập vào ứng dụng sẽ tiện lợi và dễ
dàng hơn bằng các hệ thống xác thực mà Firebase đã cung cấp.
❖ Bảo mật
Firebase hoạt động dựa vào nền tảng đám mây và thực hiện kết nối bằng giao thức
bảo mật SSL, vì thế bảo mật dữ liệu cũng như đường truyền giữa client và server sẽ được
đảm bảo nghiêm ngặt. Ngoài ra, việc phân quyền cho người dùng chỉ đơn giản với cú pháp
javascript cũng được nâng cao hơn, bởi chỉ người nào được cấp phép mới có thể chỉnh sửa
dữ liệu.
❖ Tính linh hoạt và khả năng mở rộng
Firebase cho phép nhà phát triển xây dựng server của riêng mình để thuận tiện trong quá
trình quản lý. Firebase sử dụng hệ quản trị cơ sở dữ liệu là NoSQL, giúp database dễ
dàng mở rộng các bảng, các trường tùy theo ý thích của mỗi lập trình viên.


2.5. Tổng quan về Android
2.5.1. Giới thiệu nền tảng Android
Android là một nền tảng phổ biến hiện nay, khi mà nó có mặt trên nhiều loại thiết bị
như điện thoại smartphone, máy tính bảng. Hiện nay, với sự tiện lợi và dễ dàng sử dụng

của nó, Android đã được tích hợp trên các thiết bị khác như ti vi, đồng hồ, xe hơi, …
Các ứng dụng Android chủ yếu viết bằng ngôn ngữ Java, đồng thời cũng hỗ trợ ngôn
ngữ C++ và mới mẽ hơn, ngôn ngữ Kotlin cũng được hỗ trợ với biệt danh là Swift của
Android.

14
2.5.2. Cấu trúc của hệ điều hành Android

Hình 2-4: Cấu trúc hệ điều hành Android
Hệ điều hành Android bao gồm các thành phần sau:
− Linux kernel: là cốt lõi của Android, đa phần là những driver để tích hợp vào phần
cứng và phần mềm
− Android runtime: là trình biên dịch code Android từ dạng tiền biên dịch sang


bytecode để có thể chạy được trên bất kỳ thiết bị Android nào.
− Library: phần này gồm các thư viện dựa trên Java. Nó bao gồm các Framework
Library giúp xây dựng, vẽ đồ họa và truy cập cơ sở dữ liệu trở nên dễ dàng hơn −
Application Framework: cung cấp nhiều dịch vụ cấp cao hơn cho các ứng dụng
Android.
− Application: Là tầng trên cùng của nền tảng Android, những ứng
dụng mà lập trình viên sẽ lập trình nằm ở này.

15
2.5.3. Giới thiệu hệ điều hành mở Android
− Mã nguồn Android được cung cấp miễn phí cho các nhà sản xuất và họ có thể thoải
mái sử dụng mà khơng cần xinh phép Google.
− Cho pháp các nhà phát triển tự do xây dựng ứng dụng và có thể tận dụng tối đa khả
năng của phần mềm, phần cứng và cả điều hành.
− Các ứng dụng do các nhà phát triển xây dựng hồn tồn có thể thay thế gần như toàn

bộ ứng dụng cốt lõi như: gọi điện, cài đặt, tin nhắn, camera, … − Ngoài ra, Google
cũng cung cấp Android Studio, một IDE tiện loại để phát triển ứng dụng Android.

Chương 3. XÂY DỰNG HỆ THỐNG
3.1. Xây dựng kiến trúc hệ thống
3.1.1. Xác định yêu cầu hệ thống
Từ dữ liệu thu thập được trong quá trình khảo sát, có thể xác định được, ứng dụng sẽ
được chia thành những chức năng chính sau đây:
+ Đăng ký và Đăng nhập
+ Tạo nhóm
+ Quản lý thơng tin khoản chi nhóm
+ Tạo khoản chi nhóm
+ Quản lý thơng tin tổng quan của nhóm
+ Thống kê khoản chi của nhóm
+ Chỉnh sửa thơng tin nhóm


16
3.1.1.1. Mô tả chức năng
− Đăng ký:
Ứng dụng RFM là ứng dụng quản lý chi tiêu theo nhóm người, ngồi quản lý được
chi tiêu của nhóm, người dùng có thể sử dụng các tiện ích khác của ứng dụng, vì vậy ứng
dụng yêu cầu người dùng phải xác thực thông tin thơng qua hình thức đăng nhập tài khoản.
Người dùng cần đăng ký tài khoản trên ứng dụng, bao gồm: Tên hiển thị, số điện thoại (có
định dạng là 1 chuỗi số), và mật khẩu (yêu cầu có từ 6 ký tự trở lên). Người dùng bắt buộc
phải đăng nhập để xem được các thông tin của ứng dụng.
− Đăng nhập:
Người dùng sử dụng tài khoản đã đăng ký để đăng nhập vào ứng dụng. Khi đăng
nhập vào ứng dụng, người dùng có thể sử dụng tất cả tiện ích của ứng dụng.
− Quản lý chi tiêu theo ngày:

Ứng dụng sẽ trình bày tổng quát các khoản chi tiêu theo từng ngày, những khoản chi
được lập trong cùng một ngày sẽ được hiển thị trong cùng một ô. Mỗi ô sẽ có chức năng
“xem chi tiết” để xem thơng tin chi tiết của các khoản chi trong ngày đó.
− Tạo khoản chi:
Người dùng có thể tạo khoản chi tiêu bằng cách nhấn vào button “+” để tạo khoản
chi. Một khoản chi bao gồm: Loại khoản chi(chọn 1 trong những loại khoản chi có sẵn của
ứng dụng), Nội dung, Giá tiền, Ngày mua(chọn ngày mua hàng từ lịch của ứng dụng), Hóa
đơn(nếu có, định dạng là 1 ảnh), Người mua, Người tham gia(chọn người trong nhóm
cùng tham gia vào khoản chi) và Ghi chú. Sau khi tạo khoản chi xong người dùng có thể
xem lại khoản chi vừa tạo ở trang quản lý khoản chi.

17
− Quản lý thông tin tổng quan của nhóm:
Các thơng tin tổng quan của nhóm được hiển thị bao gồm: Ảnh đại diện, Tên nhóm,
Tiền quỹ hiện tại của nhóm, Tiền quỹ hiện tại của các thành viên trong nhóm.


Nếu người dùng là trưởng nhóm, người dùng có thể thay đổi các thông tin được hiển
thị trên trang quản lý bao gồm Ảnh đại diện, Tên nhóm, Tiền quỹ hiện tại của các thành
viên trong nhóm.
− Thống kê chi tiêu của nhóm:
Thống kê tổng số tiền chi của từng thành viên trong nhóm của tháng hiện tại và
tháng trước đó.
− Tạo nhóm
Người dùng có thể tạo nhóm của mình theo các thơng tin: Tên nhóm, Ảnh đại diện,
Quỹ nhóm, Thành viên tham gia vào nhóm (sử dụng id được ứng dụng cung cấp cho từng
tài khoản). Nhóm sau khi được tạo sẽ được hiển thị trong danh sách nhóm của tài khoản.

18
3.1.2. Phân tích thiết kế hệ thống.

3.1.2.1. Sơ đồ use case
- Use case mức tổng quát:


Hình 3-1: Biểu đồ use case mức tổng quát

19
− Use case Đăng nhập
+ Mục đích: Đảm bảo xác thực thơng tin người dùng và an toàn bảo mật hệ
thống.
+ Tác nhân: User.
+ Mô tả: User đăng nhập để thực hiện những chức năng như Quản lý chi tiêu
nhóm, chỉnh sửa thông tin cá nhân, ...


Hình 3-2: Biểu đồ use case Đăng nhập

20
− Use case Quản lý chi tiêu nhóm
+ Mục đích: quản lý chi tiêu cho nhóm.
+ Tác nhân: User.
+ Mơ tả: sau khi đăng nhập vào ứng dụng, User tiến hành thêm mới chi tiêu.

Hình 3-3: Biểu đồ use case Quản lý chi tiêu nhóm
− Use case Quản lý nhóm
+ Mục đích: Quản lý nhóm.
+ Tác nhân: User.
+ Mơ tả: sau khi đăng nhập vào ứng dụng, User tiến hành thêm, xóa thành



viên, ngồi ra cịn có thể thay đổi thơng tin hiển thị của nhóm như sửa
tên hiển thị nhóm, sửa ảnh đại diện nhóm.

Hình 3-4: Biểu đồ use case Quản lý nhóm

21
3.1.2.2. Danh sách các actors
STT

Tên actor

Ý nghĩa

1

Người dùng

- User có một tài khoản riêng để đăng nhập vào
ứng dụng.
- User là một thành viên trong một phịng trọ,
có quyền quản lý thành viên, quản lý chi tiêu
của phòng, thống kê, …

(User)

Bảng 3-1: Danh sách actors

3.1.2.3. Danh sách các use cases
STT


Tên use case

Ý nghĩa

1

Use case Mức
tổng quát

Đưa ra các actor có trong hệ thống quản lý, và
chức năng chính của mỗi actor.

2

Use case Đăng nhập

Yêu cầu đăng nhập để xác thực trong ứng dụng

3

Use case Quản lý
nhóm

- Quản lý các thành viên trong phịng
(thêm, xóa thành viên)
- Thay đổi thơng tin hiển thị của nhóm
(sửa ảnh đại diện, thay đổi tên hiển thị
của nhóm))



4

Use case Quản lý
chi tiêu nhóm

Quản lý các khoản chi tiêu của nhóm (thêm chi
tiêu)

5

Use case Chỉnh
sửa thơng tin cá
nhân

Thay đổi thông tin hiển thị cá nhân (thay đổi
ảnh đại diện, thay đổi tên hiển thị)

6

Use case Xem
thống kê

Xem lại thống kê chi tiêu của phòng

Bảng 3-2: Danh sách use cases

22
3.1.3. Sơ đồ lớp

Hình 3-5: Biểu đồ lớp

− Mơ tả sơ đồ lớp
STT

Tên lớp

Mơ tả

1

Groups

Lớp thơng tin nhóm

2

KhoanChiNhom

Lớp thơng tin khoản chi nhóm

3

ChiTietKhoanChi

Lớp chi tiết khoản chi nhóm

4

Users

Lớp thơng tin người dùng



Bảng 3-3: Các lớp của sơ đổ lớp

23
3.1.4. Phân tích và thiết kế CSDL
Dựa trên việc xác định yêu cầu và phân tích yêu cầu, ứng dụng RFM bao gồm các
đối tượng sau đây:
STT

Tên đối tượng

Thuộc tính

1

Groups

id, idCreator, name, avatar, detail_money,
group_funds, member

2

KhoanChiNhom

id, ngayMua, idItem

3

ChiTietKhoanChi


idItem, iconLoai, tenLoai, noiDung,
giaTien, nguoiMua, nguoiThamGia,
hoaDon, ghiChu

4

Users

uid, phoneNumber, displayName, avatar,
cover, idGroup, password

Bảng 3-4: Các đối tượng và thuộc tính của đối tượng

3.1.4.1. Bảng Thơng tin nhóm
Bảng Thơng tin nhóm lưu trữ thơng tin tổng quan của nhóm.
Group
Tên trường

Kiểu dữ liệu

Ràng buộc

Mô tả


idGroup

String


Primary key

Mã nhóm

idCreator

String

Not null

Mã người tạo nhóm

avatar

String

Not null

Ảnh đại diện của nhóm

member

List<String>

Not null

Danh sách thành viên
nhóm

detail_money


Listg, String>>

Not null

Danh sách tiền quỹ
của thành viên

group_funds

String

Not null

Tổng quỹ của nhóm

name

String

Not null

Tên nhóm

Bảng 3-5: Bảng thơng tin nhóm

24
3.1.4.2. Bảng Khoản chi nhóm
Bảng khoản chi nhóm lưu các thơng tin cơ bản của các khoản chi.

KhoanChiNhom
Tên trường

Kiểu dữ liệu

Ràng buộc

Mô tả

id

String

Primary key

Mã khoản chi

ngayMua

String

Not null

Ngày tạo
khoản chi

idItem

List<String>


Not null

Danh sách mã
các khoản chi

Bảng 3-6: Bảng Khoản chi nhóm
3.1.4.3. Bảng Chi tiết khoản chi
Bảng chi tiết khoản chi lưu các thông tin chi tiết của khoản chi mà người dùng tạo
ChiTietKhoanChi
Tên trường

Kiểu dữ liệu

Ràng buộc

Mô tả


×