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

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ các dịch vụ liên quan ở trọ (Trang 33)

2.2.1. Thiết kế xử lý

Đề tài sử dụng lược đồ tuần tự (Sequence Diagram) để mô tả phương thức xử lý vấn đề của hệ thống. Sau đây là một số lược đồ tuần tự cho các chức năng của hệ

22 thống.

2.2.1.1. Lược đồ tuần tự thao tác đăng nhập

Nhằm giúp cho việc đăng nhập dễ dàng hơn, ứng dụng hỗ trợ cho người dùng đăng nhập bằng số điện thoại hoặc Facebook.

a. Đăng nhập bằng số điện thoại

Hình 2.8: Lược đồ tuần tự thao tác đăng nhập bằng số điện thoại Mô tả: Người dùng có thể đăng nhập bằng số điện thoại.

- Người dùng nhập số điện thoại để thực hiện login (1). - Số điện thoại được gửi xuống phần xử lý để (2).

- Phần xử lý gửi yêu cầu đăng nhập bằng số điện thoại lên firebase authentication (3).

23 dùng (4).

- Thông tin xác thực sẽ được gửi về lại ứng dụng (5).

- Hiển thị màn hình xác thực để người dùng nhập mã xác thực (6). - Người dùng nhập mã xác thực nhận được từ tin nhắn (7).

- Mã xác thực được gửi xuống tầng xử lý để tiến hành kiểm tra (8). - Tầng xử lý tiến hành kiểm tra mã xác thực (9).

- Hiển thị lỗi xác thực nếu có (10).

- Chuyển tới màn hình nhập thông tin cá nhân nếu người dùng là người dùng mới của ứng dụng (11.1).

- Chuyển tới màn hình chính nếu người dùng đã nhập thông tin cá nhân vào hệ thống (11.2).

24

b. Đăng nhập bằng Facebook.

Hình 2.9: Lược đồ tuần tự thao tác đăng nhập bằng Facebook Mô tả: Cho phép người dùng đăng nhập bằng tài khoản Facebook. - Người dùng chọn đăng nhập bằng Facebook (1).

- Yêu cầu được xử lý xuống phần xử lý (2).

- Phần xử lý gửi yêu cầu đến Facebook login manager để thực hiện đăng nhập bằng tài khoản Facebook (3).

- Facebook login Manager hiển thị giao diện cho phép người dùng đăng nhập bằng Facebook (4).

- Người dùng tiến hành đăng nhập bằng tài khoản Facebook của mình (5). - Facebook login manager trả lại thông tin đăng nhập cho ứng dụng (6).

- Phần xử lý sử dụng thông tin đã nhận để gửi yêu cầu đăng nhập đến Firebase Authentication (7).

25

- Phần xử lý điều hướng đến màn hình nhập thông tin cá nhân nếu người dùng là người dùng mới của ứng dụng (9.1).

- Phần xử lý điều hướng đến màn hình chính nếu người dùng là người dùng cũ của ứng dụng (9.2).

2.2.1.2. Lược đồ tuần tự thao tác tìm trọ

Hình 2.10: Lược đồ tuần tự thao tác tìm trọ Mô tả: Người dùng thực hiện các thao tác cần thiết để tìm trọ. - Hiển thị màn hình tìm trọ cho người dùng (1).

- Người dùng có thể nhập một đoạn văn bản bất kỳ để tìm kiếm (2).

- Người dùng có thể lọc kết quả tìm bằng cách chọn mở bộ lọc (3), sau khi bộ lọc được hiển thị (4), người dùng đặt giá trị cho các bộ lọc (5) để giới hạn kết quả tìm kiếm.

26 hợp.

- Yêu cầu tìm kiếm được truyền từ giao diện xuống thành phần xử lý (7). - Thành phần xử lý tổng hợp, phân tích yêu cầu (8), sau đó gửi yêu cầu lấy dữ

liệu đến tầng dịch vụ (9).

- Dựa trên yêu cầu nhận được, tầng dịch vụ sẽ lấy dữ liệu phù hợp từ Firebase hoặc Algolia (10).

- Kết quả danh sách trọ sẽ được trả về lại cho tầng dịch vụ (11), sau đó chuyển tiếp về cho thành phần xử lý (12).

- Thành phần xử lý xử lý danh sách trọ, lưu danh sách trọ vào bộ nhớ tạm thời của ứng dụng (13).

- Danh sách trọ được đưa về giao diện (14), tầng giao diện sẻ hiển thị lên cho người dùng xem (15).

27

2.2.1.3. Lược đồ tuần tự thao tác tìm kiếm dịch vụ vận chuyển

Hình 2.11: Lược đồ tuần tự thao tác tìm kiếm dịch vụ vận chuyển Mô tả: Cho phép người dùng tìm kiếm dịch vụ vận chuyển.

- Màn hình dịch vụ vận chuyển được hiển thị cho người dùng (1). - Người dùng có thể mở bộ lọc để giới hạn tìm kiếm (2).

- Nếu người dùng nhấn chọn bộ lọc, bộ lọc sẽ được hiển thị (3) và người dùng có thể đặt các giá trị cho bộ lọc (4).

- Người dùng nhấn chọn tìm kiếm (5).

- Yêu cầu tìm kiếm được gửi xuống tầng xử lý (6).

- Tầng xử lý xử lý yêu cầu của người dùng (7) rồi gửi yêu cầu lấy dữ liệu đến tầng dịch vụ (8).

28 sách dịch vụ vận chuyển (10).

- Danh sách dịch vụ vận chuyển được chuyển tiếp về tầng xử lý (11).

- Tầng xử lý xử lý danh sách dịch vụ vận chuyển để lưu vào trong bộ nhớ tạm thời của ứng dụng (12).

- Danh sách dịch vụ vận chuyển thay đổi sẽ thông báo cho tầng giao diện cập nhật nội dung.

- Danh sách dịch vụ vận chuyển được hiển thị lên cho người dùng xem (14).

2.2.1.4. Lược đồ tuần tự thao tác tạo bài đăng tìm người ở ghép

Hình 2.12: Lược đồ tuần tự thao tác tạo bài đăng tìm người ở ghép

Mô tả: Cho phép người dùng tạo mới một bài đăng tìm người ở ghép trên ứng dụng.

29

- Người dùng chọn tạo bài đăng tìm người ở ghép trên màn hình tìm người ở ghép(1).

- Ứng dụng hiển thị màn hình tạo bài đăng tìm người ở ghép (2).

- Người dùng nhập nội dung bài đăng tìm người ở ghép (3). Sau đó, bấm chọn nút tạo để chuyển thông tin bài đăng tìm người ở ghép đến tầng xử lý (4). - Tầng xử lý kiểm tra nội dung bài đăng tìm người ở ghép (5), nếu nội dung đã

phù hợp với yêu cầu của ứng dụng thì gửi yêu cầu tạo đến tầng dịch vụ (6). - Dựa vào yêu cầu của tầng xử lý, tầng dịch vụ thực hiện tạo bài đăng tìm

người ở ghép đến Firestore (7).

- Kết quả tạo bài đăng được trả về tầng dịch vụ (8). Sau đó, tầng dịch vụ chuyển tiếp dữ liệu về tầng xử lý (9).

- Tầng xử lý xử lý kết quả tạo (10), nếu thành công thì lưu bài đăng tìm người ở ghép vào bộ nhớ tạm thời của ứng dụng, còn không thì yêu cầu tầng giao diện hiển thị lỗi.

- Kết quả tạo bài đăng tìm người ở ghép được hiển thị lên giao diện (11) để cho người dùng biết (12).

30

2.2.1.5. Lược đồ tuần tự thao tác tạo bài đăng bán đồ dùng cũ

Hình 2.13: Lược đồ tuần tự thao tác tạo bài đăng bán đồ dùng cũ Mô tả: Cho phép người dùng tạo mới một bài đăng bán đồ dùng cũ trên ứng dụng.

- Người dùng chọn tạo bài đăng trên màn hình đồ dùng cũ (1). - Ứng dụng hiển thị màn hình tạo bài đăng bán đồ dùng cũ (2).

- Người dùng nhập nội dung bài đăng bán đồ dùng cũ (3). Sau đó, bấm chọn nút tạo để chuyển thông tin bài đăng bán đồ dùng cũ đến tầng xử lý (4).

31

đã phù hợp với yêu cầu của ứng dụng thì gửi yêu cầu tạo đến tầng dịch vụ (6).

- Dựa vào yêu cầu của tầng xử lý, tầng dịch vụ thực hiện tạo bài đăng bán đồ dùng cũ đến Firestore (7).

- Kết quả tạo bài đăng được trả về tầng dịch vụ (8). Sau đó, tầng dịch vụ chuyển tiếp dữ liệu về tầng xử lý (9).

- Tầng xử lý xử lý kết quả tạo (10), nếu thành công thì lưu bài đăng bán đồ dùng cũ vào bộ nhớ tạm thời của ứng dụng, còn không thì yêu cầu tầng giao diện hiển thị lỗi.

- Kết quả tạo bài đăng tìm người ở ghép được hiển thị lên giao diện (11) để cho người dùng biết (12).

2.2.1.6. Lược đồ tuần tự thao tác chat

32

Mô tả: Cho phép người dùng chat với một người dùng khác. - Ứng dụng hiển thị màn hình chat (1).

- Người dùng chọn người chat (2).

- Ứng dụng hiển thị màn hình chat chi tiết (3).

- Người dùng nhập tin nhắn cần gửi (4), sau đó nhấn gửi (5). - Nội dung tin nhắn được gửi đến tầng xử lý (6).

- Tầng xử lý yêu cầu gửi tin nhắn đến tầng dịch vụ (7).

- Tin nhắn được lưu vào cơ sở dữ liệu (8), rồi gửi kết quả lưu về lại tầng dịch vụ (9).

- Tầng dịch vụ chuyển tiếp kết quả lưu trữ về tầng xử lý (10).

- Kết quả được tầng xử lý xử lý (11), nếu có lỗi thì thông báo cho người dùng, còn không thì lưu nội dung tin nhắn vào bộ nhớ tạm thời của ứng dụng, rồi yêu cầu cập nhật lại tin nhắn (12).

33

2.2.2. Thiết kế cơ sở dữ liệu 2.2.2.1. Lược đồ cơ sở dữ liệu 2.2.2.1. Lược đồ cơ sở dữ liệu

34

2.2.2.2. Mô tả các bảng dữ liệu

Bảng dữ liệu User: Lưu thông tin về tài khoản người dùng.

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 UserId

UUID Là duy nhất Khóa chính để phân biệt các tài khoản với nhau

2 Name String Tên hiển thị

3 PhoneNumber String Số điện thoại của

người sử dụng

4 Hometown String Quê quán của người

dùng

5 Job Number Nghề nghiệp của người

dùng

6 Gender Number Giới tính của người

dùng

7 Birthday Datetime Ngày sinh của người

dùng

8 Avatar String Hình đại diện của

người dùng

9 Role Number Vai trò của người dùng

Bảng 2.9: Danh sách các thuộc tính bảng User

Bảng dữ liệu Inn: Lưu thông tin phòng trọ

STT Tên thuộc tín Kiểu dữ liệu Ràng buộc Ý nghĩa

35

biệt các phòng trọ với nhau

2 Name String Tên phòng trọ

3 OwnerId UUID Khóa ngoại

Khóa ngoại đến bảng User để xác định ai là chủ trọ

4 Price Number Giá phòng

5 Area Number Diện tích phòng

6 Deposit Number Tiền đặt cọc

7 ElectricPrice Number Tiền điện

8 WaterPrice Number Tiền nước

9 Wifi Boolean Có Wifi hay không

10 Packing Boolean Có chỗ gửi xe hay

không

11 ExactAddress String Địa chỉ chính xác của

phòng trọ

12 FullAddressObjec

t Object

Lưu giữ thông tin quận huyện của nhà trọ

13 PhoneNumber String Số điện thoại chủ trọ

14 AirConditioner Boolean Có điều hòa hay

không

15 Closet Boolean Có tủ áo quần hay

36

16 Tivi Boolean Có tivi hay không

17 WashingMachine Boolean Có máy giặt hay

không

18 MaxRoommate Number Số người ở tối đa

được phép

19 Kitchen Boolean Có nhà bếp hay

không

20 PetsAllow Boolean Cho phép nuôi thú

cưng hay không

21 Refrigerator Boolean Có tử lạnh hay không

22 Bed Boolean Có giường ngủ hay

không

23 Images Array Hình ảnh nhà trọ

24 Notes String Mô tả trọ

25 Attention String Mô tả các chú ý

26 Coordinate Geo Vị trí của trọ trên bản

đồ

27 AvailableStatus Boolean Trạng thái khả dụng của trọ

28 CreatedAt Datetime Ngày tạo

Bảng 2.10: Danh sách các thuộc tính bảng Inn

Bảng dữ liệu Logistic: Lưu thông tin dịch vụ vận chuyển

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

37

biệt các dịch vụ vận chuyển với nhau

2 Name String Tên dịch vụ vận

chuyển

3 Price String Giá dịch vụ vận

chuyển 4 Area Array Danh sách vùng hoạt động của dịch vụ vận chuyển 5 City Number Tỉnh/thành phố nơi dịch vụ vận chuyển hoạt động 6 District Number Quận/Huyện nơi dịch vụ vận chuyển hoạt động

7 ExactAddress String Địa chỉ của dịch vụ

vận chuyển 8 FullAdressObject Object Địa chỉ của dịch vụ vận chuyển dưới dạng Object 9 Image String Hình ảnh dịch vụ vận chuyển

10 OwnerId UUID Khóa ngoại

Khóa ngoại đến bảng User để xác định ai là chủ dịch vụ vận chuyển

38 11 Contact String

Số điện thoại liên hệ với dịch vụ vận chuyển

12 CreatedAt Datetime Ngày tạo dịch vụ vận

chuyển Bảng 2.11: Danh sách các thuộc tính bảng Logistic

Bảng dữ liệu Roommate: Lưu thông tin bài đăng tìm người ở ghép

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính để phân biết các bài đăng tìm người ở ghép với nhau

2 Content String Nội dung bài đăng

3 Age String Độ tuổi tìm kiếm

4 City String Tỉnh/thành phố tìm

kiếm

5 District String Quận/huyện tìm kiếm

6 Gender Number Giới tính cần tìm

7 Job Number Công việc của người

ở chung mong muốn

8 HaveInnContent Boolean

Có thông tin trọ bổ sung hay không. Đối với những người đã thuê phòng và tìm kiếm người ở chung.

39

9 InnAddress String Địa chỉ trọ có sẵn

10 InnArea Number Diện tích phòng có

sẵn

11 InnDeposit Number Tiền đặt cọc

12 InnElectricPrice Number Tiền điện

13 InnWaterPrice Number Tiền nước

14 InnPrice Number Tiền trọ

15 InnName Number Tên trọ

16 InnOwner UUID Khóa ngoại

Khóa ngoại đến bảng User để biết ai là chủ trọ

17 OwnerID UUID Khóa ngoại

Liên kết đến bảng User để biết ai là người đăng

18 IsActive Boolean Trạng thái bài đăng

19 CreatedAt Datetime Ngày đăng

Bảng 2.12: Danh sách các thuộc tính bảng Roommate

Bảng dữ liệu Houseware: Lưu thông tin bài đăng bán đồ dùng cũ

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính để phân biệt các bài đăng bán đồ dùng cũ với nhau

2 Content String Nội dung bài đăng

40

4 District String Quận/huyện bán

5 IsActive Boolean Trạng thái bài đăng

6 CreatedAt Datetime Ngày đăng bài

Bảng 2.13: Danh sách các thuộc tính bảng Houseware

Bảng dữ liệu Message: Lưu thông tin cuộc trò chuyện

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 SendBy UUID Khóa ngoại

Khóa ngoại liên kết đến người dùng là người gửi tin nhắn.

2 ReceivedBy UUID Khóa ngoại

Khóa ngoại liên kết đến người dùng là người nhận tin nhắn

3 Text String Nội dung tin nhắn

4 SendAt Datetime Thời gian gửi

Bảng 2.14: Danh sách các thuộc tính bảng Message

Bảng dữ liệu Item: Lưu thông tin các đồ dùng cũ được bán trong bài đăng bán đồ dùng cũ

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính Khóa chính để phân

biệt các đồ dùng cũ.

2 Description String Mô tả cho đồ dùng cũ

3 Price Number Giá của đồ dùng cũ

4 HousewareId UUID Khóa ngoại Khóa ngoại liên kết đến bảng Houseware

41

để biết đồ dùng này thuộc bài đăng nào Bảng 2.15: Danh sách các thuộc tính bảng Item

Bảng dữ liệu Review: Lưu thông tin các bài đánh giá trọ hoặc dịch vụ vận chuyển.

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính phân biệt giữa các Review khác nhau

2 PostId UUID Khóa ngoại Liên kết tới bài post

3 Text String Nội dung bài review

4 Star Number Số sao được đánh giá

5 SendAt Datetime Cho biết thời gian viết

đánh giá

6 SendBy UUID Khóa ngoại

Liên kết đến bảng User để biết ai là người viết đánh giá

7 Type String Loại bài post

Bảng 2.16: Danh sách các thuộc tính bảng Review

Bảng dữ liệu Comment: Lưu thông tin bình luận cho bài đăng tìm người ở ghép và bài đăng bán đồ cũ.

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính phân biệt giữa các bình luận khác nhau

42

3 Text String Nội dung bình luận

4 SendAt Datetime Cho biết thời gian viết

bình luận

5 SendBy UUID Khóa ngoại

Liên kết đến bảng User để biết ai là người viết bình luận

6 Type String Loại bài post

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ các dịch vụ liên quan ở trọ (Trang 33)

Tải bản đầy đủ (PDF)

(78 trang)