TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
PRP – PHÁT TRIỂN HỆ THỐNG CUNG CẤP DỊCH VỤ XÂY DỰNG TRANG ĐĂNG TIN MUA BÁN BẤT ĐỘNG SẢN
Trang 2KHOA:KH & KT Máy tính NHIỆM VỤ LUẬN ÁN TỐT NGHIỆPBỘ MÔN:KHMTChú ý: Sinh viên phải dán tờ này vào trang nhất của bản thuyết trình
NGÀNH: LỚP:1 Đầu đề luận án:
Phát triển hệ thống cung cấp dịch vụ xây dựng trang đăng tin mua bán bất động sản2 Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu):
Đề tài cho phép người dùng cuối là các cá nhân hay doanh nghiệp triển khai một hệ thống đăngtin bất động sản khả cấu hình để thể hiện thương hiệu riêng của doanh nghiệp hay cá nhân đó.Ngoài các chức năng đăng tin cơ bản, đề tài cho phép kết nối trao đổi thông tin giữa người muavà người bán.
-Sinh viên tìm hiểu các nghiệp vụ, phân tích và thiết kế hệ thống
-Sinh viên cần am hiểu các kỹ năng lập trình frontend website/mobile app, backend-Sinh viên cần tìm hiểu các tính hợp API với các bên thứ 3 để xây dựng các tiện ích cho
người dung như thanh toán, email, notification
-Sinh viên cần tìm hiểu cách triển khai hệ thống trên nền tảng cloud như AWS
-Sinh viên có thể tìm hiểu thêm công nghệ thực tế ảo tăng cường để đem lại trải nghiệmmới cho người dùng quan sát bất động sản
ThS Trần Thị Quế NguyệtPHẦN DÀNH CHO KHOA, BỘ MÔN:
Người duyệt (chấm sơ bộ):Đơn vị:
Trang 3PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người hướng dẫn/phản biện)
1 Họ và tên SV: Võ Quốc Bảo - Nguyễn Long Kim MSSV: 1811553 - 1812742
6 Những ưu điểm chính của LVTN:
Sinh viên đã hiện thực trang web đăng tin bất động sản cho một tổ chức bất động sản với các tính năng thiết yếu và giao diện dễ nhìn như quản lý bài đăng với các tiện ích bất động sản có thể tuỳ chỉnh động, quản lý người dùng và cho phép kết nối người tìm kiếm bất động sản với chủ sở hữu hoặc nhân viên môi giới bất động sản
Sinh viên cũng đã tiến hành kết nổi công thanh toán momo để người dùng thanh toán mua dịch vụ đăng tin và gia hạn tin đăng
Sinh viên cũng đã tiến hành triển khai trên nền tảng AWS, kiểm thử bằng công cụ Katalon và đánh giá bằng Google Page Speed
7 Những thiếu sót chính của LVTN: - Chưa khả đáp ứng trên thiết bị di động
- Cần bổ sung các tiện ích cho người đăng tin như lịch hẹn, ghi chú người liên hệ, v.v - Tính năng gói dịch vụ đăng tin còn đơn giản
- Chưa cho phép khả cầu hình giao diện tuỳ theo tổ chức bất động sản cần triển khai hệ thống - Các tiện ích khác như hiển thị trên bản đồ, tìm kiếm còn đơn giản
8 Đề nghị: Được bảo vệ Bổ sung thêm để bảo vệ Không được bảo vệ 9 3 câu hỏi SV phải trả lời trước Hội đồng:
a b c
10 Đánh giá chung (bằng chữ: giỏi, khá, TB): Khá giỏi Điểm : 8 /10 Ký tên (ghi rõ họ tên)
Trang 4PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người phản biện)
1 Họ và tên SV: Võ Quốc Bảo
MSSV: 1811553 Ngành (chuyên ngành): Khoa học Máy tính Họ và tên SV: Nguyễn Long Kim
MSSV: 1812742 Ngành (chuyên ngành): Khoa học Máy tính 2 Đề tài: Phát triển hệ thống cung cấp dịch vụ xây dựng trang đăng tin mua bán bất động sản
3 Họ tên người phản biện: Trương Quỳnh Chi 4 Tổng quát về bản thuyết minh:
8 Đề nghị: Được bảo vệ Bổ sung thêm để bảo vệ Không được bảo vệ
9 3 câu hỏi SV phải trả lời trước Hội đồng: không
10 Đánh giá chung (bằng chữ: giỏi, khá, TB): KHÁ Điểm : 7,8 /10 Ký tên (ghi rõ họ tên)
Trương Quỳnh Chi
Trang 5Nhóm xin cam đoan đây là hệ thống riêng của nhóm và được sự hướng dẫn Ths Trần Thị Quế Nguyệt Các nội dung đang tìm hiểu, thiết kế đề tài này là trung thực, hoàn toàn không sao chép hoặc sử dụng các kết quả từ các đề tài tương tự
Nếu bị phát hiện bất kỳ sự gian lận nào trong đề tài thì nhóm xin chịu hoàn toàn trách nhiệm về nội dung và sẽ chịu mọi hình phạt từ phía Ban chủ nhiệm Khoa và Ban giám hiệu Nhà Trường
Trang 6Lời đầu tiên, nhóm xin gửi lời cảm ơn chân thành nhất đến cô Trần Thị Quế Nguyệt đã nhiệt tình hướng dẫn nhóm trong suốt giai đoạn thực hiện đề tài Luận Văn tốt nghiệp Nhờ những buổi gặp mặt và sự chỉ dẫn hướng phát triển đề tài của cô mà nhóm đã giải đáp những thắc mắc để nhóm có thể làm việc hiệu quả hơn và xử lý những trường hợp khó hiểu đối với nhóm
Tiếp theo, nhóm xin gửi lời cảm ơn đến quý thầy cô trong trường Đại học Bách Khoa đã và đang giảng dạy, truyền đạt tận tình những kiến thức nền tảng, hữu ích cho việc hoàn thành bản báo cáo này, những kiến thức này sẽ còn đi tiếp với các thành viên của nhóm trong cả quá trình làm việc và cuộc sống sau này
Cuối cùng, do những thiếu sót và hạn chế về kiến thức, về thời gian và kinh nghiệm hoàn thiện dự án nên sẽ không thể tránh khỏi những sai sót trong quá trình hiện thực đề tài, chúng em rất mong nhận được sự đóng góp từ thầy cô để hoàn thiện kỹ năng cho bản thân hơn nữa
Một lần nữa xin gửi lời cảm ơn chân thành đến thầy cô đã dành thời gian để theo dõi bản báo cáo này
Trang 7"Nền tảng hệ thống đăng tin bất động sản" - PRP là website hỗ trợ cho các công ty, cá nhân môi giới bất động sản đăng bài với mục đích giúp khách hàng quan tâm bất động sản có thể tiếp cận nhanh chóng và thuận tiện
Nhóm sẽ cung cấp một website đăng tin và một website quản lý giúp công ty có thể quản lý hệ thống đăng tin Hệ thống cho phép người môi giới, chủ sở hữu bất động sản đăng ký thành viên và đăng bài miễn phí hoặc trả phí
Để thực hiện được hệ thống này, nhóm sẽ phải thực hiện được những công việc sau:
Khảo sát các hệ thống liên quan
Tìm hiểu về quá trình quản lý, đăng tin bất động sản Lên danh sách và đặc tả các chức năng của hệ thống
Thiết kế hệ thống, thiết kế giao diện bằng Figma và thiết kế lược đồ cơ sở dữ liệu
Tìm hiểu về các công nghệ sẽ được sử dụng, các API hay các dịch vụ điện toán đám mây
Hiện thực hệ thống
Kiểm thử, triển khai và đánh giá hệ thống Viết báo cáo
Trang 8Chương 1: Giới thiệu đề tài
Giới thiệu tổng quan, những nội dung thực hiện, nêu ý nghĩa thực tiễn và học thuật khi làm đề tài
Chương 2: Kiến thức nền tảng
Giới thiệu về kiến thức nền tảng, các công nghệ sẽ được dùng để hiện thực, triển khai hệ thống như các framework, các thư viện sẽ được sử dụng, các dịch vụ bên thứ ba
Chương 3: Phân tích hệ thống
Trình bày những thông tin về các hệ thống tương đồng và đặc tả về hệ thống PRP
sắp được hiện thực Phân tích cụ thể các nghiệp vụ sẽ được tích hợp trong hệ thống
Chương 6: Kiểm thử, triển khai, và đánh giá hệ thống
Triển khai hệ thống lên cloud, cung cấp domain, và tiến hành đánh giá hệ thống thông qua kiểm thử Qua đó xác định hiệu suất hệ thống đạt được, và cách thức nâng cao hiệu suất
Chương 7: Tổng kết, đánh giá, và hướng phát triển đề tài
Tổng kết lại những kết quả đã đạt được trong đề tài, đánh giá ưu nhược điểm của hệ thống Đưa ra hướng phát triển cho đề tài trong tương lai
Trang 9LỜI CAM ĐOAN i
3.3.1 Trang dành cho người dùng 11
3.3.2 Trang dành cho quản trị viên 22
3.3.3 Các yêu cầu phi chức năng của hệ thống 33
Trang 105.2 Tích hợp phương thức thanh toán MoMo 50
5.3 Giao diện của hệ thống 52
5.3.1 Giao diện trang dành cho người dùng 52
5.3.2 Giao diện trang quản trị 69
CHƯƠNG 6 KIỂM THỬ, TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG 76
6.1 Kiểm thử hệ thống 76
6.2 Triển khai hệ thống 87
6.2.1 Triển khai hệ thống trên nền tảng Cloud 87
6.2.2 Các bước triển khai 88
6.3 Đánh giá hệ thống 92
6.3.1 Đánh giá hiệu suất hệ thống bằng Google PageSpeed Insights 92
6.3.2 Cải thiện hiệu suất hệ thống 93
CHƯƠNG 7 TỔNG KẾT, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 97
7.1 Tổng kết kết quả đạt được 97
7.1.1 Đối với nhiệm vụ đề tài 97
7.1.2 Đối với lợi ích kinh tế 97
7.1.3 Đối với cơ sở lý thuyết và công nghệ 97
7.1.4 Đối với quy trình phát triển phần mềm 98
7.2 Đánh giá kết quả đạt được 98
7.2.1 Ưu điểm 98
7.2.2 Nhược điểm 98
7.3 Hướng phát triển đề tài 99
TÀI LIỆU THAM KHẢO 100
Trang 11Hình 2.1 Mô hình MVC 3
Hình 3.1 Usecase của trang dành cho người dùng 11
Hình 3.2 Usecase của trang quản trị 22
Hình 4.1 Kiến trúc tổng thể của hệ thống 34
Hình 4.2 Lược đồ ERD 35
Hình 5.1 Cấu trúc source code cms 48
Hình 5.2 Cấu trúc source code client 49
Hình 5.3 Cấu trúc source code backend 50
Hình 5.4 Thông tin để gọi MoMo API 51
Hình 5.5 Quá trình thực hiện thanh toán trên website 51
Hình 5.6 Một phần giao diện trang chủ website 52
Hình 5.7 Một phần giao diện trang chủ website 52
Hình 5.8 Một phần giao diện trang chủ website 53
Hình 5.9 Giao diện đăng nhập trên website 53
Hình 5.10 Một phần giao diện đăng kí trên website 54
Hình 5.11 Một phần giao diện đăng kí trên website 54
Hình 5.12 Một phần giao diện danh sách bất động sản trên website 55
Hình 5.13 Một phần giao diện danh sách bất động sản trên website 55
Hình 5.14 Một phần giao diện chi tiết bất động sản trên website 56
Hình 5.15 Một phần giao diện chi tiết bất động sản trên website 56
Hình 5.16 Một phần giao diện chi tiết bất động sản trên website 57
Hình 5.17 Giao diện danh sách tin đã lưu trên website 57
Hình 5.18 Giao diện danh sách tin tức trên website 58
Hình 5.19 Một phần giao diện chi tiết tin tức trên website 58
Hình 5.20 Một phần giao diện chi tiết tin tức trên website 59
Hình 5.21 Một phần giao diện chi tiết tin tức trên website 59
Hình 5.22 Một phần giao diện tạo bài đăng trên website 60
Hình 5.23 Một phần giao diện tạo bài đăng trên website 60
Hình 5.24 Một phần giao diện tạo bài đăng trên website 61
Hình 5.25 Một phần giao diện tạo bài đăng trên website 62
Hình 5.26 Một phần giao diện tạo bài đăng trên website 63
Hình 5.27 Một phần giao diện tạo bài đăng trên website 63
Hình 5.28 Một phần giao diện tạo bài đăng trên website 64
Hình 5.29 Một phần giao diện tạo bài đăng trên website 64
Trang 12Hình 5.35 Giao diện email thông báo yêu cầu liên hệ lại 67
Hình 5.36 Giao diện gia hạn bài đăng trên website 68
Hình 5.37 Giao diện lịch sử thanh toán trên website 68
Hình 5.38 Giao diện thông tin cá nhân trên website 69
Hình 5.39 Giao diện đăng nhập trên trang quản trị 69
Hình 5.40 Một phần giao diện dashboard trên trang quản trị 70
Hình 5.41 Một phần giao diện dashboard trên trang quản trị 70
Hình 5.42 Giao diện quản lí danh mục bất động sản trên trang quản trị 71
Hình 5.43 Giao diện danh sách bài đăng trên trang quản trị 71
Hình 5.44 Giao diện quản lí danh mục tin tức trên trang quản trị 72
Hình 5.45 Giao diện danh sách tin tức trên trang quản trị 72
Hình 5.46 Một phần giao diện chi tiết tin tức trên trang quản trị 73
Hình 5.47 Một phần giao diện chi tiết tin tức trên trang quản trị 73
Hình 5.48 Giao diện tạo tin tức trên trang quản trị 74
Hình 5.49 Giao diện lịch sử giao dịch trên trang quản trị 74
Hình 5.50 Giao diện quản lí thông tin cá nhân trên trang quản trị 75
Hình 6.1 Cấu trúc các thành phần cơ bản của Katalon 77
Hình 6.2 Kết quả kiểm thử đăng nhập (client) 80
Hình 6.3 Kết quả kiểm thử đăng kí (client) 81
Hình 6.4 Kết quả kiểm thử thanh toán 81
Hình 6.5 Kết quả kiểm thử xem lịch sử thanh toán 82
Hình 6.6 Kết quả kiểm thử xem, thay đổi thông tin cá nhân 83
Hình 6.7 Kết quả kiểm thử tạo, sửa, xóa, xem bài đăng 84
Hình 6.8 Kết quả kiểm thử xem tin tức 84
Hình 6.9 Kết quả kiểm thử tạo yêu cầu liên hệ lại 85
Hình 6.10 Kết quả kiểm thử lưu tin đăng, xem tin đăng đã lưu 85
Hình 6.11 Kết quả kiểm thử xem thống kê 86
Hình 6.12 Kiến trúc triển khai của hệ thống 87
Hình 6.13 Bucket prp-admin 88
Hình 6.14 Bucket prp-client 88
Hình 6 15 Một phần cấu hình CloudFront distribution của bucket prp-client 89
Hình 6.16 Một phần cấu hình CloudFront distribution của bucket prp-client 89
Hình 6.17 Một phần cấu hình CloudFront distribution của bucket prp-admin 89
Hình 6.18 Một phần cấu hình CloudFront distribution của bucket prp-admin 90
Hình 6.19 Cấu hình Route 53 record cho website 90
Hình 6.20 Cấu hình Route 53 record cho trang quản trị 90
Hình 6.21 Cấu hình AWS RDS cho hệ thống 91
Hình 6.22 Cấu hình backend trên AWS Elastic Beanstalk 91
Hình 6.23 Cấu hình backend trên AWS EC2 91
Trang 13Hình 6.28 Điểm Google PageSpeed sau cải thiện của giao diện Tìm kiếm bất động sản 95 Hình 6.29 Điểm Google PageSpeed sau cải thiện của giao diện Thông tin cá nhân 95 Hình 6.30 Điểm Google PageSpeed sau cải thiện của giao diện Quản lí tin đăng 95 Hình 6.31 Điểm Google PageSpeed sau cải thiện của giao diện Dashboard 96
Trang 14Bảng 3.1 Usecase đăng kí trên website 12
Bảng 3.2 Usecase đăng nhập trên website 12
Bảng 3.3 Usecase đăng xuất trên website 13
Bảng 3.4 Usecase xem thông tin cá nhân trên website 13
Bảng 3.5 Usecase chỉnh sửa thông tin cá nhân trên website 14
Bảng 3.6 Usecase tìm kiếm danh sách bài đăng bất động sản trên website 14
Bảng 3.7 Usecase tìm kiếm danh sách tin tức trên website 15
Bảng 3.8 Usecase xem chi tiết bất động sản trên website 15
Bảng 3.9 Usecase yêu cầu liên hệ lại trên website 16
Bảng 3.10 Usecase xem chi tiết tin tức trên website 16
Bảng 3.11 Usecase lưu bài đăng trên website 17
Bảng 3.12 Usecase xem danh sách bài đăng đã lưu trên website 17
Bảng 3.13 Usecase tạo bài đăng trên website 18
Bảng 3.14 Usecase xem danh sách bài đăng đã tạo trên website 18
Bảng 3.15 Usecase xem chi tiết bài đăng đã tạo trên website 19
Bảng 3.16 Usecase chỉnh sửa bài đăng trên website 19
Bảng 3.17 Usecase gia hạn bài đăng trên website 20
Bảng 3.18 Usecase xóa bài đăng trên website 20
Bảng 3.19 Usecase cập nhật trạng thái bài đăng trên website 21
Bảng 3.20 Usecase xem lịch sử thanh toán trên website 21
Bảng 3.21 Usecase đăng nhập trên trang quản trị 23
Bảng 3.22 Usecase đăng xuất trên trang quản trị 23
Bảng 3.23 Usecase xem thông tin cá nhân trên trang quản trị 24
Bảng 3.24 Usecase chỉnh sửa thông tin cá nhân trên trang quản trị 24
Bảng 3.25 Usecase xem thống kế website trên trang quản trị 25
Bảng 3 26 Usecase xem danh mục bất động sản trên trang quản trị 25
Bảng 3 27 Usecase thêm danh mục bất động sản trên trang quản trị 26
Bảng 3.28 Usecase chỉnh sửa danh mục bất động sản trên trang quản trị 26
Bảng 3.29 Usecase xóa danh mục bất động sản trên trang quản trị 27
Bảng 3.30 Usecase tìm kiếm danh sách bài đăng bất động sản trên trang quản trị 27
Bảng 3.31 Usecase cập nhập trạng thái bài đăng trên trang quản trị 28
Bảng 3.32 Usecase xóa bài đăng trên trang quản trị 28
Bảng 3.33 Usecase xem danh mục tin tức trên trang quản trị 29
Bảng 3.34 Usecase thêm danh mục tin tức trên trang quản trị 29
Bảng 3.35 Usecase chỉnh sửa danh mục tin tức trên trang quản trị 30
Bảng 3.36 Usecase xóa danh mục tin tức trên trang quản trị 30
Bảng 3.37 Usecase tìm kiếm danh sách tin tức trên trang quản trị 31
Bảng 3.38 Usecase cập nhật trạng thái tin tức trên trang quản trị 31
Bảng 3.39 Usecase xóa tin tức trên trang quản trị 32
Bảng 3.40 Usecase chỉnh sửa tin tức trên trang quản trị 32
Trang 15Bảng 4.3 Bảng dữ liệu Real Estate Categories 38
Bảng 4.4 Bảng dữ liệu Transaction Types 39
Bảng 4.12 Bảng dữ liệu Guest Favorites 43
Bảng 4.13 Bảng dữ liệu Account Favorites 44
Bảng 4.14 Bảng dữ liệu Cron Job Events 44
Bảng 4.15 Bảng dữ liệu Cron Job Types 44
Bảng 4.16 Bảng dữ liệu Page Accesses 45
Bảng 4.17 Bảng dữ liệu Payment History 46
Bảng 6.1 Thông tin môi trường kiểm thử trên Katalon 78
Bảng 6.2 Nhân sự kiểm thử hệ thống 79
Bảng 6.3 Test suite Đăng nhập (client) 79
Bảng 6.4 Test suite đăng ký (client) 81
Bảng 6.5 Test suite thanh toán 81
Bảng 6.6 Test Suite Lịch sử thanh toán 82
Bảng 6.7 Test Suite Thông tin cá nhân 82
Bảng 6.8 Test Suite Tin đăng 83
Bảng 6.9 Test Suite: Tin tức 84
Bảng 6.10 Test Suite Liên hệ lại 84
Bảng 6.11 Test Suite Tin yêu thích 85
Bảng 6.12 Test Suite: Thống kê (Admin) 86
Trang 16CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1 Tổng quan
Hiện nay, với sự phát triển của công nghệ, thương mại điện tử đang ngày càng trở nên phổ biến Không chỉ có mua bán các sản phẩm tiêu dùng bình thường mà hiện nay nhu cầu mua bán, giao dịch bất động sản cũng trở nên rất sôi nổi trên mạng Internet Chính vì thế mà ngày càng có nhiều người môi giới hoặc ngay cả chủ sở hữu cũng đang tìm cách rao bán bất động sản thông qua các trang mạng
PRP được phát triển với mong muốn là tạo ra một môi trường mở, mà người
dùng (môi giới, chủ sở hữu) có thể rao bán, quảng cáo bất động sản của mình đến những
người quan tâm Hệ thống PRP vừa cung cấp các dịch vụ đăng tin, theo dõi bài đăng
bất động sản, vừa có dịch vụ quản lý, kiểm soát dữ liệu từ khách hàng Đối với người môi giới, sở hữu bất động sản:
Đăng ký đăng tin
Quản lý bài đăng của mình Thanh toán khi đăng ký đăng tin Gia hạn bài đăng
Nhận email thông báo về yêu cầu liên hệ, nhắc gia hạn tin Đối với người tìm kiếm bất động sản:
Quản trị nội dung của hệ thống như tin tức, bất động sản, bài đăng Xem thống kê của hệ thống, xem lịch sử thanh toán trên hệ thống
1.2 Nội dung thực hiện
Một số nội dung đã thực hiện trong quá trình hoàn thành hệ thống: Nghiên cứu các hệ thống về đăng tin bất động sản
Nghiên cứu công nghệ và các nền tảng cần có để hiện thực hệ thống Xây dựng giao diện trang đăng tin và trang quản trị
Hiện thực và kiểm thử hệ thống
Trang 171.3 Ý nghĩa đề tài 1.3.1 Ý nghĩa thực tiễn
PRP được ra đời nhằm mục đích hướng sự tiện lợi cho các nhà môi giới và người
1.3.2 Ý nghĩa khoa học, kỹ thuật
Xây dựng hệ thống PRP cũng là cơ hội để nhóm có thể tìm hiểu những vấn đề
liên quan đến bất động sản Để xây dựng hệ thống, nhóm đã tổng hợp, áp dụng các kiến thức đã học về cơ sở dữ liệu, kiến trúc hệ thống, các kỹ thuật thiết kế phân tích hệ thống, các kỹ thuật lập trình ứng dụng web, tìm hiểu và làm việc với các công nghệ phổ biến
được sử dụng hiện nay như framework Backend Django, thư viện Front-end ReactJS, dịch vụ AWS, Đây cũng dịp để các thành viên của nhóm nâng cao khả năng tự học, tự
tìm hiểu, nghiên cứu, kỹ năng làm việc nhóm và giải quyết các vấn đề phát sinh trong quá trình tìm hiểu, hiện thực, đánh giá hệ thống
Trang 18CHƯƠNG 2 KIẾN THỨC NỀN TẢNG
2.1 Cơ sở lý thuyết
2.1.1 Mô hình Model – View – Controller (MVC)
Mô hình Model - View - Controller hay còn được gọi là mô hình MVC là mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính MVC chia thành ba bộ phận chính được kết nối với nhau Đó là Model(dữ liệu), View(Giao diện) và
Controller(Bộ điều khiển) [1]
Model (M) là thành phần có chức năng lưu trữ dữ liệu được sử dụng bởi chương trình Đây là nơi chứa các nghiệp vụ tương tác với dữ liệu hay cơ sở
dữ liệu; nó bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối
database, truy vấn, xử lý dữ liệu
View(V) là thành phần giao diện dành cho người dùng, nơi chứa những giao diện như nút bấm, khung nhập, menu, hình ảnh, Nó đảm nhận nhiệm vụ hiển thị thông tin, dữ liệu cho người dùng tương tác với hệ thống
Controller(C) là thành phần chịu trách nhiệm xử lý các yêu cầu của người
dùng nhận từ lớp View(V) Nó sẽ gồm những class/function để xử lý nhiều nghiệp vụ logic, giúp lấy đúng dữ liệu nhờ những nghiệp vụ lớp Model(M) cung cấp và hiển thị thông tin đó ra cho người dùng thông qua View(V)
Trang 19dữ liệu từ Model hay không Nếu có, nó sẽ điều hướng đến các thao tác xử lý tại Model, sau đó nhận lại dữ liệu từ Model trả về
Khi đã nắm được dữ liệu trả về từ Model thì Controller sẽ xử lý tập dữ liệu đó và trả ra View để hiển thị
Khi nhận được dữ liệu trả ra từ Controller, View sẽ xây dựng lại các thành
phần hiển thị và trả về nội dung giao diện Controller sẽ đưa kết quả này lên
trình duyệt web của người dùng
Trình duyệt web nhận giá trị trả về và hiển thị lên cho người dùng Đây cũng
là bước kết thúc cho luồng xử lý trong mô hình MVC
Ưu nhược điểm của MVC
Ưu điểm
Tiết kiệm băng thông vì không sử dụng kỹ thuật ViewState
Giúp phát triển ứng dụng nhanh hơn, có bố cục rõ ràng và riêng biệt cũng giúp cho việc kiểm tra lỗi phần mềm đơn giản
Phiên bản mới nhất của MVC hỗ trợ responsive website mặc định và các
mẫu cho mobile Chúng ta có thể tạo công cụ View của riêng mình một
cách đơn giản và nhanh chóng hơn Nhược điểm
Không phù hợp cho các dự án nhỏ
2.1.2 Restful API
REST (Representational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu,
một kiến trúc để viết API và sử dụng phương thức HTTP đơn giản để tạo ra giao tiếp giữa các thiết bị Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, PUT đến một URL để
xử lý dữ liệu
API (Application Programming Interface) là một tập các quy tắc và cơ chế mà
theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành
phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML
RESTful API là một tiêu chuẩn dùng cho việc thiết kế API cho các ứng dụng Web
để quản lý các nguồn tài nguyên trên server RESTful là một trong những kiểu thiết kế
API được sử dụng phổ biến ngày nay để giao tiếp giữa ứng dụng trên các các nền tảng(web, mobile, ) [2]
REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên
sẽ sử dụng những phương thức HTTP riêng Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc,
Trang 20 PUT: Cập nhật thông tin cho resource DELETE: Xóa một resource
RESTful API không sử dụng session và cookie, nó sử dụng một access_token với
mỗi request Dữ liệu trả về thường có cấu trúc như sau:
200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH
405 Method Not Allowed – Phương thức không cho phép
410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ 415 Unsupported Media Type – Không hỗ trợ kiểu resource này
422 Unprocessable Entity – Dữ liệu không được xác thực 429 Too Many Requests – Request bị từ chối do bị giới hạn
Việc sử dụng RESTful API cần có một tài liệu ghi lại cấu trúc API Mỗi một API
cần được miêu tả đầy đủ về biến được gửi, kiểu dữ liệu, bắt buộc gửi giá trị nào đó hay không, đưa ra một cấu trúc dữ liệu ban đầu Luôn sử dụng version để khi bạn cần nâng
cấp API mà vẫn hỗ trợ các API cũ
2.2 Công nghệ nền tảng 2.2.1 Front-end
ReactJS
ReactJS là một thư viện JavaScript mã nguồn mở được phát triển bởi Facebook
và cộng đồng những nhà lập trình nhằm hướng đến xây dựng giao diện người dùng một cách thuận tiện [3]
ReactJS đang nổi lên trong những năm gần đây theo xu hướng Single Page Application ReactJS hỗ trợ xây dựng những thành phần giao diện (components) có tính
tương tác và tái sử dụng cao Chính vì vậy mà những website khi sử dụng ReactJS chạy mượt, nhanh, có khả năng mở rộng cao và cũng không quá khó để hiện thực React cho phép nhúng code HTML, CSS trong code JavaScript nhờ vào JSX, giúp cho lập trình viên có thể dễ dàng lồng ghép HTML, CSS vào trong JavaScript một cách tự nhiên hơn Ngoài ra, còn thể sử dụng React để render dữ liệu từ người dùng Sở dĩ React nổi lên
gần đây bởi vì một số ưu điểm của nó như:
Trang 21component này, giúp việc rút gọn thời gian lập trình và dễ dàng quản lý các
component hơn
Hiệu suất tốt hơn với Virtual DOM React cho phép xây dựng các Virtual DOM,
khi có sự thay đổi trong DOM thực tế thì Virtual DOM sẽ thay đổi ngay lập tức
2.2.2 Back-end Django
Django là một web framework bậc cao khá nổi tiếng được viết bằng ngôn ngữ
bậc cao Python Nó là một framework có đầy đủ các module, thư viện phục vụ cho phát
triển web, nên bạn chỉ cần tập trung vào việc viết ứng dụng mà không cần phải tốn công tạo ra cái mới Nó là miễn phí và mã nguồn mở, có một cộng đồng phát triển lớn và bộ tài liệu đầy đủ và chi tiết từ những nhà phát triển có kinh nghiệm [4]
Đặc biệt, Django cũng là framework sử dụng mô hình MVC và đây cũng một trong những lý do nhóm chọn Django để phát triển cho đề tài Tuy nhiên, Mô hình MVC trong Django được phát triển thành mô hình MVT và trông như sau:
Model(M): Chính là Model trong MVC, chính là nơi thiết kế nên những table
cho database, từ đó Django ORM đã cung cấp những phương thức xử lý,
nghiệp vụ lên database
Template(T): Chính là View trong MVC, nơi chứa những template mà ta thiết kế cho màn hình ứng dụng
View(V): Chính là Controller trong MVC, chứa các class/function để xử lý
các request từ người dùng Nhận yêu cầu HTTP và trả về HTTP phản hồi
mỗi trang web thì lập trình viên sẽ chọn framework phù hợp
Nó có thể hoạt động cùng với các framework bên ngoài và cũng có thể
cung cấp nội dung trên hầu hết mọi định dạng (JSON, HTML, XML, )
Bảo mật
Django giúp cho lập trình viên tránh nhiều lỗi bảo mật cơ bản bằng việc
cung cấp một framework có thể bảo vệ trang tự động Ví dụ các lỗi dễ
Trang 22hash
Django còn bảo vệ website khỏi những lỗ hổng, những loại tấn công mạng
như: tấn công SQL injection, Cross-site Scripting, cross-site request
forgery và clickjacking
Khả năng mở rộng
Django sử dụng kiến trúc thành phần riêng (mỗi phần của kiến trúc độc lập với nhau nên có thể thay thế hay thay đổi nếu cần mà không sợ ảnh hưởng)
Nhờ sự tách biệt giữa các thành phần nên có thể mở rộng quy mô thêm phần cứng vào các cấp độ ( máy chủ bộ nhớ đệm, máy chủ cơ sở dữ liệu, ) Khả năng bảo trì
Code trên Django được xây dựng trên các nguyên tắc và mẫu thiết kế, nó khuyến khích cho việc viết code sao cho thuận tiện bảo trì và tái sử dụng Nhóm các hàm liên quan để dễ dàng cho việc tái sử dụng, giúp cho website
có khả năng duy trì cao hơn Thuận tiện
Django được xây dựng bằng Python nên dễ dàng chạy trên nhiều platform khác nhau
Ưu nhược điểm của Django
Ưu điểm
Django đơn giản và phát triển nhanh chóng Hệ thống bảo mật tốt
Phù hợp với mọi loại dự án website
Đã xuất hiện khá lâu nên có cộng đồng người dùng lớn mạnh, dễ dàng cho việc debug hay sử dụng lại các tool mà người khác đã xây dựng trước Các tài liệu thực sự nhiều và chi tiết
Nhược điểm
Chỉ định URL bằng quy tắc khiến người mới khó nắm bắt và nếu trong dự án nhỏ thì sẽ khá cồng kềnh
Hiệu năng một vài tác vụ sẽ không tốt bằng các framework khác
2.2.3 Hệ quản trị cơ sở dữ liệu và PostgreSQL
Một hệ quản trị cơ sở dữ liệu quan hệ tổ chức lưu trữ dữ liệu theo mô hình dữ liệu quan hệ Một số đặc điểm của hệ quản trị cơ sở dữ liệu bao gồm:
Dữ liệu được tổ chức chặt chẽ dưới dạng bảng, mà mối quan hệ được thể hiện qua các khóa
Các thuộc tính được thể hiện bằng các cột, mỗi cột đều được đặt tên và được định nghĩa những ràng buộc về dữ liệu
Trang 23dữ liệu SQL cho phép chúng ta xây dựng những câu truy vấn có phức tạp cao bằng hàm, stored procedure
Ngoài ra tính nhất quán về mặt dữ liệu cũng được đảm bảo cao hơn trong hệ cơ sở dữ liệu quan hệ
Hỗ trợ transaction với tính chất ACID (Atomic, Consistency, Isolation, Durability) [5]
Hiện nay các hệ cơ sở dữ liệu quan hệ đang được sử dụng rộng rãi với các ứng dụng khác nhau, mặc dù sự phát triển nhanh chóng của NoSQL nhưng hầu hết các hệ thống lớn nhỏ đều có thành phần sử dụng hệ cơ sở dữ liệu quan hệ Một số hệ cơ sở dữ
liệu quan hệ phổ biến bao gồm: MySQL, Oracle, SQL Server, PostgreSQL, Nhóm quyết định sẽ chọn PostgreSQL, vì sự quen thuộc và tính ứng dụng cao của nó
PostgreSQL đang là hệ cơ sở dữ liệu mã nguồn mở được sử dụng rộng rãi nhất PostgreSQL cho hiệu năng tốt và tính ổn định đã được chứng minh trong một thời gian
dài qua nhiều hệ thống thực tế Cộng đồng sử dụng lớn sẽ giúp cho quá trình xây dựng
và sửa lỗi diễn ra nhanh chóng và hiệu quả Đó là những lý do PostgreSQL được nhóm
chọn làm hệ cơ sở dữ liệu cho đề tài
2.2.4 Cloud và các dịch vụ tích hợp AWS - Amazon Web Services
AWS - Amazon Web Services là một nền tảng điện toán đám mây phát triển toàn
diện được cung cấp bởi Amazon Các dịch vụ AWS đầu tiên được cung cấp năm 2006
cho các trang web sử dụng các dịch vụ trực tuyến Các dịch vụ điện toán đám mây cung cấp nhiều loại cơ sở hạ tầng kỹ thuật trừu tượng và các công cụ điện toán phân tán
Những dịch vụ chính của AWS cung cấp như: lưu trữ, tính toán, phân phối mạng và nội
dung,công cụ phân tích, quản lý
AWS hoạt động dựa trên điện toán đám mây, vậy điện toán đám mây là gì? Điện
toán đám mây là việc phân phối các tài nguyên máy tính theo yêu cầu - tất cả mọi thứ từ các ứng dụng đến các trung tâm dữ liệu thông qua Internet trên cơ sở trả phí cho quá
trình sử dụng Đặc trưng mà AWS thể hiện:
Tài nguyên đàn hồi - Quy mô mở rộng hay thu hẹp nhanh chóng và dễ dàng để đáp ứng các nhu cầu
Dịch vụ đo đếm - Chúng ta sẽ chỉ cần trả phí cho những gì chúng ta sử dụng Không yêu cầu ký hợp đồng dài hạn hay phí trả trước
Tự phục vụ - Tất cả tài nguyên CNTT bạn cần có quyền truy cập tự phục vụ Đầy đủ các tính năng kiểm soát và quản lý định danh
Đầy đủ - Nền tảng AWS ngày nay cung cấp hầu hết mọi nhu cầu sử dụng của
cá nhân hay của các doanh nghiệp trên toàn thế giới
Bảo mật - Tính bảo mật của nền tảng đám mây được chứng minh tốt hơn
Trang 24sẵn sàng cho quá trình chăm sóc và cung cấp dịch vụ tốt hơn
Sendgrid
Sendgrid là một nhà cung cấp dịch về gửi, nhận mail Các nhà phát triển ứng
dụng có thể đăng kí dịch vụ của Sendgrid và gọi các API của nó để thực hiện các thao
tác gửi, nhận mail Sendgrid cũng cung cấp nhiều chức năng khác cho phép nhà phát triển thiết kế mẫu email của mình, quản lí IP và người dùng [6],…
Phương thức thanh toán MoMo
Để thuận tiện cho việc thanh toán, gia hạn cho các tin đăng trong hệ thống nhằm
nâng cao quy mô sử dụng của người dùng, hệ thống PRP còn được tích hợp cổng thanh
toán trực tuyến bằng ví điện tử MoMo Một số ưu điểm của MoMo:
Là một cổng thanh toán đang dần phổ biến và được rất nhiều người dùng ở thị trường Việt Nam
Quá trình thanh toán dễ dàng, dễ tích hợp Nó còn được cung cấp từ đa dạng nguồn tiền như ngân hàng nội địa, Visa, Mastercard
MoMo còn hỗ trợ thanh toán trên nhiều nền tảng khác nhau nên dễ dàng cho việc mở rộng sau này nếu cần thiết
Trang 25CHƯƠNG 3 PHÂN TÍCH HỆ THỐNG
3.1 Khảo sát các hệ thống liên quan
Để hiểu rõ hơn mục đích tại sao cần xây dựng hệ thống PRP, nhóm đã tiến hành
khảo sát một số hệ thống chuyên cung cấp các dịch vụ đăng tin bất động sản Nhóm đã khảo sát 2 hệ thống sau: https://batdongsan.com.vn và https://rever.vn
Không cho đăng tin miễn phí
3.1.2 Hệ thống rever.vn
Hệ thống rever.vn là một website đăng tin bất động sản lớn, với nhiều dự án khủng, còn cung cấp nhiều dịch vụ khác hỗ trợ cho việc môi giới bất động sản tốt hơn
Ưu điểm:
Có nhiều thông tin dự án lớn
Giao diện được thiết kế có tính responsive cao, hiển thị tốt trên nhiều loại màn hình – Hỗ trợ SEO tốt
Giao diện và tính năng dễ hiểu, dễ dùng Tích hợp tính năng chia sẻ qua mạng xã hội Nhược điểm:
Trang 26người dùng, tin đăng của hệ thống PRP
3.3 Phân tích nghiệp vụ
3.3.1 Trang dành cho người dùng
Các tính năng chính của trang dành cho người dùng được trình bày ở Hình 3.1
Trang 27Tên usecase Đăng kí
Mô tả Người dùng muốn đăng kí để sử dụng các dịch vụ dành cho người có tài khoản
Tiền điều kiện Người dùng đang ở trang đăng kí Điều kiện thực hiện
thành công Hiển thị thông báo đăng kí thành công Luồng thực thi chính
1 Nhập thông tin cho các trường được yêu cầu
Bảng 3.1 Usecase đăng kí trên website
Mô tả Người dùng muốn đăng nhập vào hệ thống trên website để sử dụng các chức năng của hệ thống
Tiền điều kiện Người dùng đang ở trang đăng nhập Điều kiện thực hiện
Luồng ngoại lệ 3b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.2 Usecase đăng nhập trên website
Trang 28Tên usecase Đăng xuất
Điều kiện thực hiện thành công Đăng xuất thành công và trở về trang chủ Luồng thực thi chính 1 Người dùng nhấn “Đăng xuất”
2a Đăng xuất thành công Luồng thay thế
Luồng ngoại lệ 2b Hiển thị lỗi nếu có
Bảng 3.3 Usecase đăng xuất trên website
mình
Điều kiện thực hiện thành công
Hiển thị thông tin cá nhân của người dùng Luồng thực thi chính 1 Người dùng chọn “Quản lí thông tin cá nhân”
2a Hiển thị thông tin cá nhân của tài khoản đã đăng nhập
Luồng thay thế
Luồng ngoại lệ 2b Hiển thị lỗi nếu có
Bảng 3.4 Usecase xem thông tin cá nhân trên website
Trang 29Tên usecase Chỉnh sửa thông tin cá nhân
Tiền điều kiện Người dùng đã đăng nhập và ở trang thông tin cá nhân Điều kiện thực hiện thành
công
Thông báo cập nhật thành công
Luồng thực thi chính 1 Chỉnh sửa những trường cần cập nhật
2 Nhấn “Lưu”
3a Cập nhật thành công Luồng thay thế
Luồng ngoại lệ 3b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.5 Usecase chỉnh sửa thông tin cá nhân trên website
Mô tả Người dùng muốn xem danh sách các bài đăng về bất động sản trên website
Tiền điều kiện Người dùng đang ở trang chủ hoặc những trang có thể thấy được navbar
Điều kiện thực hiện thành công
5a Hiển thị danh sách các bất động sản phù hợp với bộ lọc Luồng thay thế 1b Người dùng nhấn “Tìm kiếm” ở ô tìm kiếm nhanh của
Trang 30Tên usecase Tìm kiếm danh sách tin tức
Mô tả Người dùng muốn xem danh sách các tin tức trên website
Tiền điều kiện Người dùng đang ở những trang có thể thấy được navbar Điều kiện thực hiện
thành công
Hiển thị danh sách tin tức
Luồng thực thi chính 1 Người dùng chọn một trong các danh mục tin tức trên thanh navbar
2a Hiển thị danh sách tin tức và các danh mục tin tức ở
đầu trang
3 Chọn danh mục tin tức ở đầu trang
4a Hiển thị danh sách tin tức phù hợp với danh mục tin tức đã chọn ở bước 3
Luồng thay thế
Luồng ngoại lệ 2b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi 4b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.7 Usecase tìm kiếm danh sách tin tức trên website
Tiền điều kiện Người dùng đang ở trang danh sách bất động sản Điều kiện thực hiện thành
công
Hiển thị chi tiết về bất động sản
Luồng thực thi chính 1 Người dùng click vào một bất động sản trong danh sách
2a Hiển thị chi tiết bất động sản được chọn
Trang 31Tên usecase Yêu cầu liên hệ lại
Mô tả Người dùng muốn gửi yêu cầu liên hệ lại trên một bài đăng bất động sản cho người đăng
Thông báo gửi yêu cầu thành công
Luồng thực thi chính 1 Người dùng click vào “Yêu cầu liên hệ lại”
2 Người dùng nhập các thông tin cần thiết
3 Nhấp “Gửi yêu cầu”
4a Gửi yêu cầu thành công Luồng thay thế
Luồng ngoại lệ 4b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.9 Usecase yêu cầu liên hệ lại trên website
Tiền điều kiện Người dùng đang ở trang danh sách tin tức Điều kiện thực hiện thành
công
Hiển thị chi tiết về tin tức
Luồng thực thi chính 1 Người dùng click vào một tin tức trong danh sách
2a Hiển thị chi tiết tin tức được chọn
Trang 32Tên usecase Lưu bài đăng
Mô tả Người dùng muốn lưu lại một bài đăng bất động sản để xem sau
Trigger Người dùng muốn lưu bài đăng bất động sản
Tiền điều kiện Người dùng đang ở trang danh sách bất động sản hoặc trang chi tiết bất động sản
Điều kiện thực hiện thành công
Thông báo lưu bài đăng thành công
Luồng thực thi chính 1 Người dùng click vào button “Yêu thích” của một bất động sản
2a Lưu bài đăng thành công
Luồng thay thế
Luồng ngoại lệ 2b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.11 Usecase lưu bài đăng trên website
Tiền điều kiện Người dùng đang ở trang có thể thấy được navbar Điều kiện thực hiện thành
công
Hiển thị danh sách bài đăng đã lưu
Luồng thực thi chính 1 Người dùng click vào button “Yêu thích” trên thanh navbar
2a Hiển thị danh sách tin đã lưu
Trang 33Tên usecase Tạo bài đăng
Mô tả Người dùng muốn tạo bài đăng bất động sản
Trigger Người dùng muốn tạo bài đăng Tiền điều kiện Người dùng đã đăng nhập Điều kiện thực hiện
3a Tạo tin với loại tin miễn phí
4a Thông báo tạo tin thành công Luồng thay thế 3b Tạo tin với loại tin có phí
3b.1 Chuyển đến trang thanh toán 3b.2 Thanh toán
3b.3 Thông báo tạo tin thành công nếu thanh toán thành công hoặc tạo tin không thành công nếu thanh toán thất bại
Luồng ngoại lệ 4b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.13 Usecase tạo bài đăng trên website
Mô tả Người dùng muốn xem lại danh sách bài đăng của mình
Trigger Người dùng muốn xem lại danh sách bài đăng của mình
Điều kiện thực hiện thành công
Hiển thị danh sách bài đăng đã tạo
Luồng thực thi chính 1 Người dùng đến trang danh sách bài đăng của tôi 2a Hiển thị danh sách bài đăng người dùng đã tạo Luồng thay thế
Luồng ngoại lệ 2b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.14 Usecase xem danh sách bài đăng đã tạo trên website
Trang 34Tên usecase Xem chi tiết bài đăng đã tạo
Trigger Người dùng muốn xem chi tiết một bài đăng của mình Tiền điều kiện Người dùng đã đăng nhập và đang ở trang danh sách bài
đăng của tôi Điều kiện thực hiện thành
công
Hiển thị chi tiết bài đăng của người dùng
Luồng thực thi chính 1 Người dùng chọn một bài đăng trong danh sách 2a Hiển thị chi tiết bài đăng
Luồng thay thế
Luồng ngoại lệ 2b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.15 Usecase xem chi tiết bài đăng đã tạo trên website
Tiền điều kiện Người dùng đã đăng nhập và đang ở trang chi tiết bài đăng
Điều kiện thực hiện thành công
Thông báo chỉnh sửa thành công
Luồng thực thi chính 1 Người dùng thay đổi những thông tin cần cập nhật
Trang 35Tên usecase Gia hạn bài đăng
Mô tả Người dùng muốn gia hạn thời gian xuất hiện trên website của một bài đăng
Tiền điều kiện Người dùng đã đăng nhập và đang ở trang chi tiết bài đăng của tôi
Điều kiện thực hiện thành công
Thông báo gia hạn thành công
Luồng thực thi chính 1 Người dùng chọn số ngày muốn gia hạn thêm
Bảng 3.17 Usecase gia hạn bài đăng trên website
Tiền điều kiện Người dùng đã đăng nhập và đang ở trang danh sách bài đăng của tôi
Điều kiện thực hiện thành công
Thông báo xóa bài đăng thành công
Luồng thực thi chính 1 Người dùng click button “Xóa” trên một bài đăng trong
danh sách bài đăng
2 Hiển thị popup xem xác nhận xóa
3a Chọn “Xác nhận”
4a Xóa bài đăng thành công Luồng thay thế 3b Chọn “Hủy”
3b.1 Tắt popup và không xóa bài đăng
Luồng ngoại lệ 4b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.18 Usecase xóa bài đăng trên website
Trang 36Tên usecase Cập nhật trạng thái bài đăng
Mô tả Người dùng muốn cập nhật trạng thái của một bài đăng
Trigger Người dùng muốn cập nhật trạng thái của một bài đăng Tiền điều kiện Người dùng đã đăng nhập
Người dùng đang ở trang danh sách bài đăng của tôi
Bài đăng muốn cập nhật trạng thái đang có trạng thái là
“Đang hiển thị” hoặc “Đang ẩn”
Điều kiện thực hiện thành công
Thông báo cập nhật trạng thái bài đăng thành công
Luồng thực thi chính 1 Người dùng chọn menu mở rộng của bài đăng trên danh sách bài đăng
2 Người dùng chọn “Hiện bài đăng” hoặc “Ẩn bài đăng”
3a Cập nhật trạng thái bài đăng thành công Luồng thay thế
Luồng ngoại lệ 3b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.19 Usecase cập nhật trạng thái bài đăng trên website
Điều kiện thực hiện thành công
Hiển thị lịch sử thanh toán
Luồng thực thi chính 1 Người dùng chuyển đến trang lịch sử thanh toán
2a Hiển thị lịch sử thanh toán của người dùng
Trang 373.3.2 Trang dành cho quản trị viên
Các tính năng chính của quản trị được trình bày ở Hình 3.2
Trang 38Tên usecase Đăng nhập
Tiền điều kiện Quản trị viên đang ở trang đăng nhập Điều kiện thực hiện thành
Bảng 3.21 Usecase đăng nhập trên trang quản trị
Tiền điều kiện Quản trị viên đã đăng nhập hệ thống
Điều kiện thực hiện thành công Đăng xuất thành công và trở về trang đăng nhập Luồng thực thi chính 1 Quản trị viên nhấn “Đăng xuất”
2 Đăng xuất thành công Luồng thay thế
Luồng ngoại lệ
Bảng 3.22 Usecase đăng xuất trên trang quản trị
Trang 39Tên usecase Xem thông tin cá nhân
tài khoản của mình
Điều kiện thực hiện thành công Hiển thị thông tin cá nhân của quản trị viên
Luồng thực thi chính 1 Quản trị chọn “Quản lí thông tin cá nhân”
2a Hiển thị thông tin cá nhân của tài khoản đã đăng nhập
Luồng thay thế
Bảng 3.23 Usecase xem thông tin cá nhân trên trang quản trị
Trigger Quản trị viên muốn chỉnh sửa thông tin cá nhân Tiền điều kiện Quản trị viên đã đăng nhập và ở trang thông tin cá nhân Điều kiện thực hiện thành
công
Thông báo cập nhật thành công
Luồng thực thi chính 1 Chỉnh sửa những trường cần cập nhật
2 Nhấn “Lưu”
3a Cập nhật thành công Luồng thay thế
Luồng ngoại lệ 3b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.24 Usecase chỉnh sửa thông tin cá nhân trên trang quản trị
Trang 40Tên usecase Xem thống kê website
Tiền điều kiện Quản trị viên đã đăng nhập Điều kiện thực hiện thành
công
Hiển thị thông tin thống kê
Luồng thực thi chính 1 Quản trị viên chuyển đến trang dashboard 2a Hiển thị thống kê của hệ thống
Luồng thay thế
Luồng ngoại lệ 2b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3.25 Usecase xem thống kế website trên trang quản trị
Mô tả Quản trị viên muốn xem những danh mục bất động sản đang có trên website của mình
Trigger Quản trị viên muốn xem danh mục bất động sản Tiền điều kiện Quản trị viên đã đăng nhập
Điều kiện thực hiện thành công
Hiển thị danh sách các danh mục bất động sản
Luồng thực thi chính 1 Quản trị viên chuyển đến trang danh mục bất động sản 2a Hiển thị danh sách các danh mục bất động sản của hệ thống
Luồng thay thế
Luồng ngoại lệ 2b Hiển thị thông báo khi có lỗi và nguyên nhân gây ra lỗi
Bảng 3 26 Usecase xem danh mục bất động sản trên trang quản trị