Nguyễn Hoài Phong - 18521238 Nội dung đề tài: • Mục tiêu: - Xây dựng hệ thống bao gồm những chức năng cơ bản của một trang thông tin bất động sản: xem tin bất động sản, tìm kiếm thông
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
NGUYỄN VŨ KHÁNH – 18520903 NGUYỄN HOÀI PHONG – 18521238
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
NGUYỄN VŨ KHÁNH – 18520903 NGUYỄN HOÀI PHONG – 18521238
Trang 3ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
ĐỀ CƯƠNG CHI TIẾT
Cán bộ hướng dẫn: ThS Trần Anh Dũng
Thời gian thực hiện: Từ ngày 21/03/2021 đến ngày 01/07/2021
Sinh viên thực hiện:
1 Nguyễn Vũ Khánh - 18520903
2 Nguyễn Hoài Phong - 18521238
Nội dung đề tài:
• Mục tiêu:
- Xây dựng hệ thống bao gồm những chức năng cơ bản của một trang thông tin bất động sản: xem tin bất động sản, tìm kiếm thông tin như: thông tin để liên lạc người bán, giá
cả, địa chỉ, thể hiện chi tiết thông tin bất động sản
- Xây dựng hệ thống cho phép người dùng đăng tin chia sẻ bất động sản
- Xây dựng trang web thông tin bất động sản như một trang kinh doanh bất động sản và
có các tin tức về thị trường bất động sản
Trang 4- Xây dựng hệ thống với các công nghệ mới như JavaSpring Boot, Reactjs, Postgresql Nhóm em chọn những công nghệ này vì chúng có tính bao quát rộng hơn, JavaSpring Boot Có ít cấu hình, có khả năng tự động cấu hình lại Spring khi cần, từ đó giúp các thành viên có thể tiết kiệm thời gian viết code và tăng thêm năng suất, còn Reactjs là một frontend mới nổi do facebook tạo ra, hỗ trợ rất nhiều thư viện, giúp dễ dàng trong việc xây dựng ứng dụng.Postgresql hỗ trợ các đối tượng địa lý để có thể sử dụng cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý
• Đối tượng: Những người có nhu cầu tìm kiếm và chia sẻ thông tin bất động sản
• Tính mới/ khác biệt về chức năng:
- Thêm ý tưởng:
Các trang bất động sản hiện nay đa số đều có phương thức hoạt động tương đồng ở các hình thức chia sẻ thông tin bất động sản, thông tin được cung cấp tràn lan, một chiều, không có tính xác thực, không có nhận xét từ người dùng
Vì thế nhóm em quyết định xây dựng trang web thông tin bất động sản như một trang kinh doanh và có cả thông tin về thị trường bất động sản, có các chức năng cơ lưu thông tin bất động sản và nhắn tin để tăng tính tương tác giữa người dùng, tăng tính xác thực cho thông tin bất động sản
Chúng em sẽ thêm chức năng recommend các thông tin bất động sản dựa trên lượt tìm kiếm của người dùng hoặc có thể dựa trên thông tin, địa chỉ người dùng để có các thông tin bất động sản cần thiết cho người dùng
Trang 5dụng của nhóm có thêm phần danh sách ưa thích, khi người dùng thấy thích nơi nào có thể chọn lưu vào danh sách để xem lại sau
Các trang bất động sản đều trình bày theo hình thức đơn giản, khiến người dùng dễ dàng sử dụng khi lần đầu vào trang web Cũng vì thế mà nhóm cũng
đã thiết kế giao diện gọn gàng không rối mắc
Nhóm em sẽ thu thập tất cả các thông tin thật và chính chủ để hạn chế các thông tin rác và không chính xác khiến người tim kiếm sai sự thật
Ngoài ra còn các chức năng cơ bản của các trang bất động sản như tìm kiếm, đăng tin, sửa tin, xem thông tin chi tiết
• Phạm vi:
- Phạm vi địa lý: Ứng dụng sử dụng tại Việt Nam
- Phạm vi chức năng:
Quản lý người sử dụng
Quản lý bài viết
Quản lý thông tin bất động sản
Quản lý tìm kiếm thông tin (recommend bài viết)
• Phương pháp thực hiện:
- Làm việc cá nhân, sử dụng request để lấy thông tin công ty từ một trang web cụ thể, lưu xuống database và xuất lên cho người dùng thấy
- Xậy dựng database với Postgresql
- Xây dựng hệ thống Restful API với javaSpring Boot
• Công nghệ sử dụng:
- ReacJs
Trang 6- Cơ sở dữ liệu PostgreSQL là một hệ thống quản lý dữ liệu nguồn mở cấp doanh nghiệp
Nó hỗ trợ cả SQL cho quan hệ và JSON cho các truy vấn không liên quan Nó được hỗ trợ bởi một cộng đồng các nhà phát triển có kinh nghiệm, những người đã đóng góp to lớn để làm cho nó trở thành hệ thống DBMS có độ tin cậy cao
- Reactjs là một frontend được nhiều phần mềm sử dụng vì tính phong phú và đa dạng, được nhiều thư việc hỗ trợ, nên có thể tuỳ biến phần frontend trở nên đẹp hơn mà
không thô cứng
• Kết quả mong đợi:
- Hoàn thiện ứng dụng web thu thập và chia sẻ thông tin bất động sản, đáp ứng đủ các nhu cầu cơ bản
- Tạo ra hệ thống cho người dùng có thể đăng thông tin rao bán trên website
• Định hướng phát triển: Mở rộng thêm các trang web khác, thêm các tính năng mới tiện lợi cho người dùng
Trang 7Kế hoạch thực hiện: (thời gian thực hiện trong 17 tuần)
Phase 1: Tìm hiểu và xây dựng ứng dụng web có
backend và frontend
4 tuần
JavaSpring Boot+ Reactjs + Postgresql
Sprint 2: Xây dựng ứng dụng cơ bản kết
hợp JavaSpring Boot+ Reactjs +
Postgresql
2.1
- Xây dựng ứng dụng cơ bản để hiểu về luồng
chạy của các ngôn ngữ, kết hợp 2 sever spring
boot và reactjs thành 1
Tuần 3 – 4 (11/4/2021 –
thông tin của các công ty
13 tuần
database postgresql
3.1
- Tạo database và kết nối postgresql
- Tạo API để lấy thông tin từ một đường link
cụ thể, xuất ra thông tin và trả về cho người
dùng
- Tạo API thêm, sửa, xoá các lĩnh vực
Tuần 5 – 8 (2/5/2021 –
Trang 84 Sprint 4: Xây dựng Frontend với Reactjs
4.1
- Tạo trang web với Reactjs
- Gọi các API từ Backend lên Frontend để sử
dụng
- Thiết kế và chỉnh sửa UI/UX
Tuần 5 – 10 (02/05/2021 – 13/06/2021) Phong
Trang 9MỤC LỤC
TÓM TẮT ĐỒ ÁN 1
Chương 1 TỔNG QUAN 2
1.1 Đặt vấn đề 2
1.2 Phát biểu bài toán 2
1.2.1 Giới thiệu hệ thống website “Tìm kiếm và chia sẻ thông tin bất động sản” 2 1.2.2 Khảo sát hệ thống liên quan 3
1.3 Mục tiêu và phạm vi đề tài 4
1.3.1 Mục tiêu 4
1.3.2 Phạm vi 4
1.3.3 Đối tượng sử dụng 5
1.3.4 Kết quả dự kiến 5
Chương 2 CƠ SỞ LÝ THUYẾT 6
2.1 JavaSpring Boot 6
2.1.1 Khái niệm 6
2.1.2 Tại sao nên sử dụng JavaSpring Boot 6
2.1.3 Áp dụng Java vào đề tài 6
2.2 Postgresql 6
2.2.1 Giới thiệu về Postgesql 6
2.2.2 Tại sao nên sử dụng hệ quản trị cơ sở dữ liệu Postgresql 7
Trang 102.2.3 Áp dụng PostgreSQL vào đề tài 8
2.3 Reactjs 8
2.3.1 Giới thiệu về Reactjs 8
2.3.2 Tại sao nên sử dụng Reactjs 9
Chương 3 PHÁT BIỂU BÀI TOÁN 12
3.1 Giới thiệu hệ thống website “Tìm kiếm và chia sẻ thông tin bất động sản” 12 3.2 Khảo sát các hệ thống liên quan 13
3.2.1 Website batdongsan.com.vn 13
3.2.2 Website mogi.vn 15
3.2.3 So sánh hệ thống với các website 16
3.3 Yêu cầu hệ thống 18
3.3.1 Yêu cầu chức năng 18
3.3.2 Yêu cầu phi chức năng 19
Chương 4 ĐẶC TẢ CÁC CHỨC NĂNG 21
4.1 Chức năng đăng bài viết 21
4.2 Chức năng tìm kiếm bài viết 21
4.3 Chức năng yêu thích, lưu lại thông tin bài viết quan tâm 21
4.4 Chức năng recommend bài viết 22
4.5 Chức năng quản lý người dùng 22
4.6 Chức năng quản lý bài viết 22
4.7 Chức năng quản lý các báo cáo 22
Chương 5 THIẾT KẾ DỮ LIỆU 23
5.1 Sơ đồ cơ sở dữ liệu 23
Trang 115.2 Mô tả chi tiết các bảng 23
5.2.1 Bảng “user” – Tài Khoản người Dùng 23
5.2.2 Bảng “role” – Vai trò của người dùng 25
5.2.3 Bảng “privilege” – Quyền hạn có trong hệ thống 25
5.2.4 Bảng “role_privilege” – Quyền hạn của vai trò 26
5.2.5 Bảng “user_address” – Địa chỉ của người dùng 27
5.2.6 Bảng “country” – Quốc gia 28
5.2.7 Bảng “province” – Tỉnh, Thành Phố 28
5.2.8 Bảng “district” – Xã, Huyện 29
5.2.9 Bảng “apartment” – Thông tin bất động sản 29
5.2.10 Bảng “apartment_detail” – Thông tin chi tiết bất động sản 31
5.2.11 Bảng “apartment_address” – Địa chỉ bất động sản 32
5.2.12 Bảng “category” – Thể loại bất động sản 33
5.2.13 Bảng “favourite” – Danh sách bất động sản yêu thích của người dùng 34 5.2.14 Bảng “tracking_category” – Danh sách thông tin tracking của người dùng đối với thể loại 35
5.2.15 Bảng “tracking_district” – Danh sách thông tin tracking của người dùng đối với huyện/xã 36
5.2.16 Bảng “tracking_province” – Danh sách thông tin tracking của người dùng đối với quận/thành phố 37
Chương 6 HIỆN THỰC HỆ THỐNG – SƠ ĐỒ USECASE 38
6.1 Danh sách actor 38
6.2 Sơ đồ usecase tổng quát 39
6.3 Đặc tả một số use-case chính 42
Trang 126.3.1 Đặc tả use-case “Đăng Ký" 42
6.3.2 Đặc tả use-case “Đăng Nhập" 43
6.3.3 Đặc tả use-case “Đổi mật khẩu " 44
6.3.4 Đặc tả use-case “Đăng xuất " 45
6.3.5 Đặc tả use-case “Lọc/Tìm kiếm bất động sản" 45
6.3.6 Đặc tả use-case “Trang cá nhân" 46
6.3.7 Đặc tả use-case “Quản lý bất động sản cá nhân" 47
6.3.8 Đặc tả use-case “Quản lý yêu thích, lưu lại thông tin bài viết" 48
6.3.9 Đặc tả use-case “Chỉnh sửa thông tin" 49
6.3.10 Đặc tả use-case “Tạo bất động sản" 50
6.3.11 Đặc tả use-case “Gợi ý bất động sản liên quan" 51
6.3.12 Đặc tả use-case “Quản lý thể loại" 52
6.3.13 Đặc tả use-case “Quản lý bất động sản" 53
6.3.14 Đặc tả use-case “Làm nổi bật bất động sản" 54
6.3.15 Đặc tả use-case “Quản lý người dùng khách hàng" 55
Chương 7 THIẾT KẾ GIAO DIỆN 56
7.1 Danh sách các màn hình 56
7.2 Hình ảnh một số màn hình chính 58
7.2.1 Màn hình “Đăng ký” 58
7.2.2 Màn hình “Đăng nhập” 59
7.2.3 Màn hình “Đổi mật khẩu” 60
7.2.4 Màn hình “Trang chủ” 60
7.2.5 Màn hình “Tạo bất động sản” 62
7.2.6 Màn hình “Cập nhập bất động sản” 64
Trang 137.2.7 Màn hình “Cập nhập thông tin cá nhân” 66
7.2.8 Màn hình “Danh sách nhà đất bán” 66
7.2.9 Màn hình “Danh sách nhà đất cho thuê” 68
7.2.10 Màn hình “Danh sách bất động sản phù hợp” 70
7.2.11 Màn hình “Chi tiết bất động sản” 72
7.2.12 Màn hình “Quản lý bất động sản” 74
7.2.13 Màn hình “Quản lý người dùng” 74
7.2.14 Màn hình “Quản lý thể loại” 75
Chương 8 HƯỚNG PHÁT TRIỂN 76
8.1 Hướng phát triển 76
TÀI LIỆU THAM KHẢO 77
Trang 14DANH MỤC HÌNH
Hình 2 1: Lý do vì sao nên sử dụng Reactjs 11
Hình 3.1 Trang chủ của batdongsan.com.vn 14
Hình 3.2 Trang chủ của mogi.vn 15
Hình 5.1: Sơ đồ cơ sở dữ liệu tổng quát 23
Hình 6.1: Sơ đồ Usecase tổng quát của hệ thống 40
Hình 7.1: Màn hình "Đăng ký" 59
Hình 7.2: Màn hình "Đăng nhập" 60
Hình 7.3: Màn hình "Đổi mật khẩu" 60
Hình 7.4: Màn hình "Trang chủ" 62
Hình 7.5: Màn hình "Tạo bất động sản" 64
Hình 7.6: Màn hình "Cập nhật bất động sản" 66
Hình 7.7: Màn hình "Cập nhật thông tin cá nhân" 66
Hình 7.8: Màn hình "Danh sách nhà đất bán" 68
Hình 7.9: Màn hình "Danh sách nhà đất cho thuê" 70
Hình 7.10: Màn hình "Danh sách bất động sản phù hợp" 72
Hình 7.11: Màn hình "Chi tiết bất động sản" 74
Hình 7.12: Màn hình "Quản lý bất động sản" 74
Hình 7.13: Màn hình "Quản lý người dùng" 75
Hình 7.14: Màn hình "Quản lý thể loại" 75
DANH MỤC BẢNG Bảng 3.1 Bảng so sánh giữa các hệ thống 18
Bảng 4.1: Đặc tả chức năng bài viết 21
Bảng 4.2: Đặc tả chức năng tìm kiếm bài viết 21
Bảng 4.3: Đặc tả chức năng yêu thích lưu lại thông tin bài viết 21
Bảng 4.4: Đặc tả chức năng recommend bài viết 22
Bảng 4.5: Đặc tả chức năng quản lý người dùng 22
Trang 15Bảng 4.6: Đặc tả chức năng quản lý bài viết 22
Bảng 4.7: Đặc tả chức năng quản lý báo cáo 23
Bảng 5.1: Mô tả bảng “user” – Thông tin người dùng 25
Bảng 5.2: Mô tả bảng “role” – Vai trò của người dùng 25
Bảng 5.3: Mô tả bảng “privilege” – Quyền hạn có trong hệ thống 26
Bảng 5.4: Mô tả bảng “role_privilege” – Quyền hạn của vai trò 27
Bảng 5.5: Mô tả bảng “user_address” – Địa chỉ của người dùng 28
Bảng 5.6: Mô tả bảng “country” – Quốc gia 28
Bảng 5.7: Mô tả bảng “province” – Tỉnh, Thành Phố 29
Bảng 5.8: Mô tả bảng “district” – Xã, Huyện 29
Bảng 5.9: Mô tả bảng “apartment” – Thông tin bất động sản 31
Bảng 5.10: Mô tả bảng “apartment_detail” – Thông tin chi tiết bất động sản 32
Bảng 5.11: Mô tả bảng “apartment_address” – Địa chỉ của bất động sản 33
Bảng 5.12: Mô tả bảng “category” – Thể loại bất động sản 34
Bảng 5.13: Mô tả bảng “favourite” – Người dùng yêu thích bất động sản 35
Bảng 5.14: Mô tả bảng “tracking_category” – Thông tin tracking của người dùng đối với category 36
Bảng 5.15: Mô tả bảng “tracking_ district” – Thông tin tracking của người dùng đối với xã, huyện 37
Bảng 5.16: Mô tả bảng “tracking_ province” – Thông tin tracking của người dùng đối với tỉnh, thành phố 38
Bảng 6.1: Danh sách các actor của hệ thống 39
Bảng 6.2: Bảng danh sách các usecase của hệ thống 42
Bảng 6.3: Đặc tả usecase “Đăng Ký” 43
Bảng 6.4: Đặc tả usecase “Đăng Nhập” 44
Bảng 6.5: Đặc tả usecase “Đổi mật khẩu” 45
Bảng 6.6: Đặc tả usecase “Đăng xuất” 45
Bảng 6.7: Đặc tả usecase “Lọc/Tìm kiếm bất động sản” 46
Bảng 6.8: Đặc tả usecase “Trang cá nhân” 47
Trang 16Bảng 6.9: Đặc tả usecae “Quản lý bất động sản cá nhân” 48
Bảng 6.10: Đặc tả usecase “Quản lý yêu thích, lưu lại thông tin bài viết” 49
Bảng 6.11: Đặc tả usecase “Chỉnh sửa thông tin” 50
Bảng 6.12: Đặc tả usecase “Tạo bất động sản” 51
Bảng 6.13: Đặc tả usecase “Gợi ý bất động sản liên quan” 52
Bảng 6.14: Đặc tả usecase “Quản lý thể loại” 53
Bảng 6.15: Đặc tả usecase “Quản lý bất động sản” 54
Bảng 6.16: Đặc tả usecase “Làm nổi bật bất động sản” 55
Bảng 6.17: Đặc tả usecase “Quản lý người dùng khách hàng” 56
Bảng 7.1: Bảng danh sách các màn hình 58
Trang 17TÓM TẮT ĐỒ ÁN
- Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài, phát biểu bài toán, mục tiêu và phạm
vi tiếp cận đề tài
- Tìm hiểu thực trạng, thị trường, khả năng phát triển
- Phân tích các dịch vụ hệ thống website thông tin bất động sản trên thị trường
- Tìm hiểu và áp dụng các công nghệ, cấu trúc mới để xây dựng hệ thống chia sẻ thông tin bất động sản
- Phát triển hệ thống với các tính năng cơ bản dựa trên các hệ thống liên quan, thêm những tính năng nâng cao để tăng tính tiện lợi cho người dùng và tạo sự khác biệt
- Giải quyết bài toán về độ tin cậy của thông tin bất động sản được chia sẻ, tăng tính tương tác cho người dùng với hệ thống
- Trình bày kết luận và hướng phát triển đồ án
Trang 18Chương 1 TỔNG QUAN
1.1 Đặt vấn đề
- Thị trường bất động sản là một trong những thị trường có vị trí và vai trò quan trọng đối với nền kinh tế quốc dân, có quan hệ trực tiếp với các thị trường tài chính tiền tệ, thị trường xây dựng, thị trường vật liệu xây dựng, thị trường lao động Phát triển và quản lý có hiệu quả thị trường này sẽ góp phần quan trọng vào quá trình thúc đẩy phát triển kinh tế - xã hội, tạo khả năng thu hút các nguồn vốn đầu tư cho phát triển, đóng góp thiết thực vào quá trình phát triển đô thị và nông thôn bền vững theo hướng công nghiệp hoá, hiện đại hóa đất nước
- Với các kiến thức về công nghệ thông tin, ta có thể phát triển được 1 phần mềm hỗ trợ các chức năng cung cấp các thông tin thật và giúp người buôn bán và người mua
có thể trao đổi thuận tiện hơn Ngoài ra cũng giúp người mua có thể tìm kiếm các thông tin phù hợp với nhu cầu của bản thân và tin tưởng vào các thông tin đăng trên website thay vì thông qua các cò đất không uy tin trên thị trường lúc bấy giờ
1.2 Phát biểu bài toán
1.2.1 Giới thiệu hệ thống website “Tìm kiếm và chia sẻ thông tin bất
động sản”
- Hệ thống sẽ thu thập, rút trích có chọn lọc thông tin bất động sản một cách hiệu quả bao gồm: nội dung, giá cả, địa chỉ, thông tin chi tiết, hình ảnh của bất động sản, của trang bất động sản nổi tiếng hiện nay đó là: batdongsan.com.vn Sau đó sắp xếp
và lưu trữ thông tin một cách có hệ thống để dễ dàng sử dụng và chia sẻ thông tin tới khách hàng một cách hợp lý (rõ ràng, dễ nhìn, dễ đọc) và có lợi ích đối với khách hàng
- Hệ thống giúp khách hàng không phải đi đến từng trang web nêu trên để tìm kiếm thông tin khi cần thiết mà chỉ cần truy cập vào trang web là đủ
Trang 19- Website có công cụ sắp xếp một cách hiệu quả giúp người dùng cần tìm một số thông tin một cách nhanh nhất có thể, ví dụ tìm theo: lượt thích nhiều nhất, lượt bình luận nhiều nhất, mới nhất
- Website có công cụ tìm kiếm một cách hiệu quả giúp người dùng cần tìm một số thông tin một cách nhanh nhất có thể, ví dụ tìm theo: loại nhà đất, địa chỉ bất động sản, giá cả bất động sản,
- Hệ thống còn cho phép người dùng đăng thông tin bất động sản của mình lên để chia sẻ rộng rãi tới những người dùng khác và những khách hàng tìm năng
- Trên mỗi tin tức được chia sẻ, hệ thống cho phép người dùng vào bày tỏ trạng thái như Thích, Bình luận lên bài viết giúp bài viết có tính tin cậy hơn, không còn là thông tin từ một chiều Ngoài ra còn có 2 icon thêm vào danh sách ưa thích hoặc bỏ khỏi danh sách ưa thích Tính năng này giúp người dùng khi thấy những thông tin nhà đất
mà có hứng thú sẽ lưu lại để tiện theo dõi
- Ngoài ra, trên mỗi tin tức được chính người dùng chia sẻ trên hệ thống, người dùng
sẽ có quyền sửa hoặc xoá tin tức đó nếu thấy nội dung cung cấp bị sai lệch, và người quản trị là người có quyền sửa hoặc xoá toàn bộ tin tức, để khi có ai đó báo cáo sai lệch về tin tức nào, người quản trị sẽ trực tiếp sửa hoặc gỡ bỏ
1.2.2 Khảo sát hệ thống liên quan
- Nhóm đã tham khảo nhiều hệ thống website bất động sản như batdongsan.com.vn
- Hầu hết các website đề chia sẻ thông tin bất động sản, cho phép tìm kiếm loại hình bất động sản mà người dùng quan tâm, cho phép đăng bài rao bán về bất động sản của người dùng nhưng những thông tin website cung cấp đều mang tính một chiều, người dùng không có khả năng xác thực tính an toàn hay đúng đắn của thông tin, khiến cho việc tìm kiếm trở nên mơ hồ Chính vì lẽ đó hệ thống sẽ đưa chức năng cải thiện những vấn đề trên và đặc biệt hơn nữa là thiết kế một website mang tính đột phá như một trang tin tức
về bất động sản cho phép người dùng có thể vừa tìm hiểu thị trường và có cả các thông
Trang 20- Xây dựng chức năng thêm vào danh sách ưu thích để tiện cho người dùng
- Xây dựng server theo thời gian thực, cập nhật các thông tin bài viết người dùng đăng hoặc chia sẻ
- Xây dựng chức năng đăng thông tin bất động sản
- Xây dựng chức năng cập nhật và xoá thông tin bất động sản
- Xây dựng chức năng đăng nhập và hệ thống người dùng để tăng tính bảo mật
- Xây dựng chức năng tìm kiếm thông tin bất động sản cơ bản và nâng cao
- Xây dựng chức năng sắp xếp với các yêu cầu cơ bản để giúp người dùng tiện trong lúc tìm kiếm thông tin
• Quản lý thông tin người dùng
• Quản lí thông tin bất động sản
Trang 21• Quản lí bài viết của người dùng
• Tìm kiếm thông tin loại hình bất động sản
- Hoàn thành website cung cấp thông tin bất động sản
- Hoàn thành chức năng cho phép người dùng lưu vào danh sách ưa thích
- Hoàn thành chức năng tìm kiếm và sắp xếp tin tức
- Hoàn thành chi tiết về 1 thông tin bất động sản
Trang 22Chương 2 CƠ SỞ LÝ THUYẾT
2.1 JavaSpring Boot
2.1.1 Khái niệm
- Spring Boot là một dự án phát triển bởi JAV (ngôn ngữ java) trong hệ sinh thái
Spring framework Nó giúp cho các lập trình viên chúng ta đơn giản hóa quá trình lập trình một ứng dụng với Spring, chỉ tập trung vào việc phát triển business cho ứng dụng
2.1.2 Tại sao nên sử dụng JavaSpring Boot
- Khi sử dụng Java chúng ta không mất qua nhiều công đoạn và thời gian để tạo một web project đẻ chạy Mọi thứ đã được Java tự động làm hết như sử dụng các framework PHP như Symfony, Laravel,… cái mà chúng ta quan tâm chỉ là develop Controller Một quan điểm khác của mình là thấy Java web sau khi build chạy rất
nhanh hơn tốc độ PHP sau khi dùng APC Cache
2.1.3 Áp dụng Java vào đề tài
- Nhóm chúng em sử dụng Java để làm Backend dễ dàng hơn và có nhiều chức năng phát triển hơn
2.2 Postgresql
2.2.1 Giới thiệu về Postgesql
- PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng relational database management system) có mục đích chung, hệ thống cơ sở dữ liệu
(object-mã nguồn mở tiên tiến nhất hiện nay
- PostgreSQL được phát triển dựa trên POSTGRES 4.2 tại phòng khoa học máy tính Berkeley, Đại học California
Trang 23- PostgreSQL được thiết kế để chạy trên các nền tảng tương tự UNIX Tuy nhiên, PostgreSQL sau đó cũng được điều chỉnh linh động để có thể chạy được trên nhiều nền tảng khác nhau như Mac OS X, Solaris và Windows
- PostgreSQL là một phần mềm mã nguồn mở miễn phí Mã nguồn của phần mềm khả dụng theo license của PostgreSQL, một license nguồn mở tự do Theo đó, bạn sẽ được tự do sử dụng, sửa đổi và phân phối PostgreSQL dưới mọi hình thức
- PostgreSQL không yêu cầu quá nhiều công tác bảo trì bởi có tính ổn định cao Do
đó, nếu bạn phát triển các ứng dụng dựa trên PostgreSQL, chi phí sở hữu sẽ thấp hơn
so với các hệ thống quản trị dữ liệu khác
2.2.2 Tại sao nên sử dụng hệ quản trị cơ sở dữ liệu Postgresql
Ưu điểm:
- PostgreSQL có thể chạy các trang web và ứng dụng web động với LAMP
- Ghi nhật ký viết trước của PostgreSQL làm cho nó trở thành một cơ sở dữ liệu có khả năng chịu lỗi cao
- Mã nguồn PostgreSQL có sẵn miễn phí theo giấy phép nguồn mở Điều này cho phép bạn tự do sử dụng, sửa đổi và triển khai nó theo nhu cầu kinh doanh của bạn
- PostgreSQL hỗ trợ các đối tượng địa lý để bạn có thể sử dụng nó cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý
- PostgreSQL hỗ trợ các đối tượng địa lý để nó có thể được sử dụng làm kho lưu trữ
dữ liệu không gian địa lý cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý
- Dễ sử dụng
- Hạn chế việc bảo trì hệ thống
Nhược điểm:
Trang 24- Postgres không thuộc sở hữu của một tổ chức Vì vậy, nó đã gặp khó khăn khi đưa tên của mình ra khỏi đó mặc dù có đầy đủ tính năng và có thể so sánh với các hệ thống DBMS khác
- Những thay đổi được thực hiện để cải thiện tốc độ đòi hỏi nhiều công việc hơn MySQL vì PostgreSQL tập trung vào khả năng tương thích
- Nhiều ứng dụng nguồn mở hỗ trợ MySQL, nhưng có thể không hỗ trợ PostgreSQL
- Về số liệu hiệu suất, nó chậm hơn MySQL
Tại sao nên sử dụng PostgreSQL:
- PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xây dựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi trường chịu lỗi fault-tolerant giúp bạn quản lý dữ liệu bất kể tập dữ liệu lớn hay nhỏ Bên cạnh hệ thống nguồn mở và miễn phí, PostgreSQL cũng có khả năng mở rộng tuyệt vời Ví
dụ, bạn có thể định nghĩa các kiểu dữ liệu riêng của bạn, xây dựng các hàm tùy chỉnh, hay viết mã từ các ngôn ngữ lập trình khác nhau mà không cần biên dịch lại cơ sở dữ liệu!
- PostgreSQL tuân theo tiêu chuẩn SQL nhưng không mâu thuẫn với các tính năng truyền thống hay có thể dẫn đến các quyết định kiến trúc gây hại Nhiều tính năng theo tiêu chuẩn SQL được hỗ trợ, tuy nhiên đôi khi có thể có cú pháp hoặc hàm hơi khác một chút
2.2.3 Áp dụng PostgreSQL vào đề tài
Nhờ những tính năng nổi trội của PostgreSQL, nhóm đã sử dụng PostgreSQL dùng làm hệ quản trị cơ sở dữ liệu chính Server sử dụng PostgreSQL để lưu trữ toàn bộ
dữ liệu, dữ liệu này sẽ được server sử dụng REST API để gọi lên
2.3 Reactjs
2.3.1 Giới thiệu về Reactjs
Trang 25React.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu hướng Single Page Application Trong khi những framework khác cố gắng hướng đến một mô hình MVC hoàn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những thư viện Javascript khác Nếu như AngularJS là một Framework cho phép nhúng code javasscript trong code html thông qua các attribute như ng-model, ng-repeat thì với react là một library cho phép nhúng code html trong code javascript nhờ vào JSX, có thể dễ dàng lồng các đoạn HTML vào trong JS.Tích hợp giữa javascript và HTML vào trong JSX làm cho các component dễ hiểu hơn
React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại được React được sử dụng tại Facebook trong production, và Instagram được viết hoàn toàn trên React
Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau React so sánh
sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM
2.3.2 Tại sao nên sử dụng Reactjs
Dễ sử dụng:
- React là một thư viện GUI nguồn mở JavaScript tập trung vào một điều cụ thể; hoàn thành nhiệm vụ UI hiệu quả Nó được phân loại thành kiểu “V” trong mô hình MVC (Model-View-Controller)
- Là lập trình viên JavaScript, bạn sẽ dễ dàng hiểu được những điều cơ bản về React Bạn thậm chí có thể bắt đầu phát triển các ứng dụng dựa trên web bằng cách
sử dụng react chỉ trong vài ngày
- Để củng cố hiểu biết của mình, bạn hãy thử khám phá thêm nhiều hướng dẫn về React Chúng mang đến nhiều thông tin về cách sử dụng công cụ: videos, hướng dẫn và dữ liệu làm phong phú góc nhìn của bạn
Trang 26Hỗ trợ Reusable Component trong Java:
- React cho phép bạn sử dụng lại components đã được phát triển thành các ứng dụng khác có cùng chức năng Tính năng tái sử dụng component là một lợi thế khác biệt cho các lập trình viên
Viết component dễ dàng hơn:
- React component dễ viết hơn vì nó sử dụng JSX, mở rộng cú pháp tùy chọn cho JavaScript cho phép kết hợp HTML với JavaScript
- JSX là một sự pha trộn tuyệt vời của JavaScript và HTML Nó làm rõ toàn
bộ quá trình viết cấu trúc trang web Ngoài ra, phần mở rộng cũng giúp render nhiều lựa chọn dễ dàng hơn
- JSX có thể không là phần mở rộng cú pháp phổ biến nhất, nhưng nó được chứng minh là hiệu quả trong việc phát triển components đặc biệt hoặc các ứng dụng
có khối lượng lớn
Hiệu suất tốt hơn với Virtual DOM:
- React sẽ cập nhật hiệu quả quá trình DOM (Document Object Model – Mô hình đối tượng tài liệu) Như đã biết, quá trình này có thể gây ra nhiều thất vọng trong các dự án ứng dụng dựa trên web May mắn là React sử dụng virtual DOMs, vì vậy
có thể tránh được vấn đề này
- Công cụ cho phép xây dựng các virtual DOMs và host chúng trong bộ nhớ Nhờ vậy, mỗi khi có sự thay đổi trong DOM thực tế, thì virtual sẽ thay đổi ngay lập tức
- Hệ thống này sẽ ngăn DOM thực tế để buộc các bản cập nhật được liên tục
Do đó, tốc độ của ứng dụng sẽ không bị gián đoạn
Thân thiện với SEO:
Trang 27- React cho phép tạo giao diện người dùng có thể được truy cập trên các công
cụ tìm kiếm khác nhau Tính năng này là một lợi thế rất lớn vì không phải tất cả các khung JavaScript đều thân thiện với SEO
- Ngoài ra, vì React có thể tăng tốc quá trình của ứng dụng nên có thể cải thiện kết quả SEO Cuối cùng tốc độ web đóng một vai trò quan trọng trong tối ưu hóa SEO
Hình 2 1: Lý do vì sao nên sử dụng Reactjs
Trang 28Chương 3 PHÁT BIỂU BÀI TOÁN
3.1 Giới thiệu hệ thống website “Tìm kiếm và chia sẻ thông tin bất động sản”
- Hệ thống sẽ thu thập, rút trích có chọn lọc thông tin bất động sản một cách hiệu quả bao gồm: nội dung, giá cả, địa chỉ, người liên lạc, thông tin dự án (nếu có), hình ảnh của bất động sản, của các trang bất động sản nổi tiếng hiện nay đó là: batdongsan.com.vn Sau đó sắp xếp và lưu trữ thông tin một cách có hệ thống để dễ dàng sử dụng và chia sẽ thông tin tới khách hàng một cách hợp lý (rõ ràng, dễ nhìn,
dễ đọc) và có lợi ích đối với khách hàng
- Hệ thống giúp khách hàng không phải đi đến từng trang web nêu trên để tìm kiếm thông tin khi cần thiết mà chỉ cần trang web của nhóm là đủ để nắm bắt tin tức và các thông tin cần thiết
- Trang web có công cụ tìm kiếm một cách hiệu quả giúp người dùng cần tìm một số thông tin một cách nhanh nhất có thể, ví dụ tìm theo: địa chỉ bất động sản, giá cả bất động sản, loại hình bất động sản,
- Trang web có công cụ sắp xếp một cách hiệu quả giúp người dùng cần tìm một số thông tin một cách nhanh nhất có thể, ví dụ tìm theo: lượt thích nhiều nhất, bài đăng mới nhất, lượt bình luận nhiều nhất,
- Ngoài ra, hệ thống còn cho phép người dùng đăng thông tin bất động sản của mình lên để chia sẽ rộng rãi tới những người dùng khác và những khách hàng tìm năng Trên mỗi tin tức được chia sẽ hệ thống cho phép người dùng vào bày tỏ trạng thái như Thích, Bình luận lên bài viết giúp bài viết có tính tin cậy hơn và chia sẽ bài viết
để các bạn bè khác có thể thấy được
Trang 293.2 Khảo sát các hệ thống liên quan
- Nhóm đã tham khảo nhiều hệ thống website bất động sản như:batdongsan.com.vn Hầu hết website đều chia sẻ thông tin bất động sản, cho phép tìm kiếm loại hình bất động sản mà người dùng quan tâm, cho phép đăng bài rao bán về bất động sản của người dùng nhưng cách bố trí thông tin về các tin tức bất động sản cũng như nguồn thông tin một chiều, không có kiểm chứng từ người dùng khác khiến người dùng cảm thấy phức tạp khi truy cập tìm kiếm thông tin Chính vì lẽ đó hệ thống sẽ đưa chức năng cải thiện những vấn đề trên và đặc biệt hơn nữa là thiết kế một website mang tính đột phá như một trang vnexpress về bất động sản cho phép người dùng có thể nắm tin tức bất động sản và các dịch vụ bất động sản khác
3.2.1 Website batdongsan.com.vn
Mô tả chung:
Website giúp mọi người tìm kiếm, xem tin tức, đăng bài chia sẽ thông tin bất động sản … ở Việt Nam Đến thời điểm hiện tại, batdongsan.com.vn là một trong những website hàng đầu với lượng tin tức về bất động sản được tìm kiếm nhiều, là một trang web giúp người dùng tìm kiếm tất cả thông tin ở Việt Nam và lượng thông tin được cập nhật liên tục cũng như với đội ngũ thông tin về nhân viên tư vấn bất động sản để
hỗ trợ người dùng cũng như cung cấp thông tin cần thiết về loại hình bất động sản mà người dùng cần
Trang 30Hình 3.1 Trang chủ của batdongsan.com.vn
Các chức năng nổi bật của batdongsan.com.vn:
- Tìm kiếm chi tiết các loại hình thông tin bất động sản như: giá cả, vị trí, tên loại hình cũng như hướng…
- Cho phép người dùng đăng kí tài khoản đăng bài rao bán loại hình bất động sản của mình
- Thể hiện rõ thông tin chi tiết về một loại hình bất động sản cố định: tên loại hình, giá cả, địa chỉ, giá bán, hình ảnh chi tiết, hướng, thông tin thêm và nội thất…
- Có đội ngũ nhân viên tư vấn thông tin bất động sản hỗ trợ cần thiết chi tiết cho người dùng quan tâm qua đó cũng như thủ tục pháp lí
Nhận xét:
Ưu điểm:
- Tìm kiếm thông tin loại hình bất động sản dễ dàng thông minh bằng cách gõ: tên loại hình bất động sản, hoặc địa chỉ, diện tích hay mức giá Hệ thống tìm kiếm và xem nhanh thông tin, giúp tìm thông tin một cách nhanh nhất
- Website batdongsan.com.vn thể hiện chi tiết cụ thể một loại hình thông tin bất động sản: tên loại hình bất động sản, giá cả, địa chỉ, giá cả, hình ảnh, phong thủy nội thất…
Trang 31- Hệ thống đăng bài rao tin chi tiết cụ thể và nhanh chóng
có lẽ là đối thủ tương lai của các website bất động sản hàng đầu Việt Nam
Hình 3.2 Trang chủ của mogi.vn
Các chức năng nổi bật của mogi.vn:
Trang 32- Tìm kiếm chi tiết các loại hình thông tin bất động sản như: giá cả, vị trí, tên loại hình bất động sản, địa điểm …
- Cho phép người dùng đăng kí tài khoản đăng bài rao bán loại hình bất động sản của mình
- Thể hiện rõ thông tin chi tiết về một loại hình bất động sản cố định: tên loại hình, giá cả, địa chỉ, giá bán, hình ảnh chi tiết, hướng, thông tin thêm và nội thất…
- Có đội ngũ nhân viên tư vấn thông tin bất động sản hỗ trợ cần thiết chi tiết cho người dùng quan tâm qua đó cũng như thủ tục pháp lí
Nhận xét:
Ưu điểm:
- Tìm kiếm thông tin loại hình bất động sản dễ dàng thông minh bằng cách gõ: tên loại hình bất động sản, hoặc địa chỉ, diện tích hay mức giá Hệ thống tìm kiếm và xem nhanh thông tin, giúp tìm thông tin một cách nhanh nhất
- Website mogi.vn thể hiện chi tiết cụ thể một loại hình thông tin bất động sản: tên loại hình bất động sản, giá cả, địa chỉ, giá cả, hình ảnh, phong thủy nội thất…
- Hệ thống giao diện bắt mắt, gọn gang giúp người dùng dễ tìm kiếm thông tin Khuyết điểm:
- Cổng liên hệ chưa tốt, chưa có trò chuyện trực tiếp
- Chưa có chức năng thích và bình luận bài viết cụ thể như một bài viết trên trang mạng xã hội
- Thông tin một chiều, không có tính tương tác của người dùng để biết sản phẩm ra sao
3.2.3 So sánh hệ thống với các website
Trang 33Ưu điểm Khuyết điểm Website
batdongsan.com.vn
- Tìm kiếm thông tin loại hình bất động sản dễ dàng thông minh bằng cách gõ: tên loại hình bất động sản, hoặc địa chỉ, diện tích hay mức giá
Hệ thống tìm kiếm và xem nhanh thông tin, giúp tìm thông tin một cách nhanh nhất
- Website batdongsan.com.vn thể hiện chi tiết cụ thể một loại hình thông tin bất động sản: tên loại hình bất động sản, giá cả, địa chỉ, giá cả, hình ảnh, phong thủy nội thất…
- Hệ thống đăng bài rao tin chi tiết cụ thể và nhanh chóng
- Hệ thống thông tin hiển thị của trang web rất rối mắt vì các hình ảnh cứ lặp
đi lặp lại nhiều
- Thông tin một chiều, có
1 vài tin không rõ thông tin người bán
Website mogi.vn - Tìm kiếm thông tin loại hình bất
động sản dễ dàng thông minh bằng cách gõ: tên loại
hình bất động sản, hoặc địa chỉ, diện tích hay mức giá Hệ thống tìm kiếm
và xem nhanh thông tin, giúp tìm thông tin một cách nhanh nhất
- Website mogi.vn thể hiện chi tiết cụ thể một loại hình thông tin bất động sản: tên loại hình bất động sản, giá cả, địa chỉ, giá cả, hình ảnh, phong thủy nội thất…
- Cổng liên hệ chưa tốt, chưa có trò chuyện trực tiếp
- Chưa có chức năng thích
và bình luận bài viết cụ thể như một bài viết trên trang mạng xã hội
- Thông tin một chiều, không có tính tương tác của người dùng để biết sản phẩm ra sao
Trang 34- Hệ thống giao diện bắt mắt, gọn gang giúp người dùng dễ tìm kiếm thông tin
Hệ thống website
của nhóm
- Hệ thống thông tin hiển thị của trang web đơn giản, cung cấp đầy đủ chi tiết của một tin bất động sản
- Có các bài viết có tin tức về sàn bất động sản
- Thông tin được đánh giá bởi những người dùng khác, an toàn và công khai
- Có tính năng trò chuyện với bot để giải đáp những thắc mắc của hệ thống
- Hệ thống chưa có nhiều người dùng, còn hạn chế
về lượt tương tác
- Hạn chế về lượng thông tin bất động sản
- Hạn chế về tính năng hỗ trợ cho người dùng
- Hạn chế về các nhân viên
hỗ trợ kỹ thuật
Bảng 3.1 Bảng so sánh giữa các hệ thống
3.3 Yêu cầu hệ thống
3.3.1 Yêu cầu chức năng
- Yêu cầu lưu trữ: Hệ thống đáp ứng yêu cầu lưu trữ các thông tin như:
• Thông tin bất động sản: địa điểm, loại hình bất động sản, diện tích, kích thước, giá bán, hướng nhà, người đăng tin
• Thông tin người dùng: họ tên
• Thông tin về hình ảnh: hình ảnh chân thật, rõ ràng
• Thông tin loại hình bất động sản
- Yêu cầu tìm kiếm:
• Tìm kiếm loại hình bất động sản ví dụ như: bán, thuê, nhà riêng, biệt thự, đất nền dự án
Trang 35• Tìm kiếm thông tin cụ thể của tin tức bất động sản như: địa điểm, khu vực, mức giá, diện tích
- Yêu cầu sắp xếp:
• Sắp xếp tin tức bất động sản ví dụ như: theo lượt thích, lượt bình luận, bài đăng mới nhất
3.3.2 Yêu cầu phi chức năng
- Yêu cầu về giao diện:
Giao diện hệ thống gần gũi Đơn dạng với đại đa số người dùng, mang lại cảm giác thân thiện không rối mắt, hướng người dùng, tính tương tác cao
- Yêu cầu chất lượng:
▪ Hệ thống có tính responsive cho các dòng điện thoại và máy tính bảng
▪ Các nút ấn và dòng chữ hiển thị trực quan nội dung muốn truyền đạt
• Tính hiệu quả:
▪ Hệ thống thể hiện trực quan và chi tiết thông tin về loại hình bất động sản
Trang 36▪ Qua việc tìm kiếm thông tin loại hình bất động sản, hệ thống hiển thị đầy đủ các thông tin của tin tức bất động sản như tiêu đề của bài viết, nội dung bài viết và các hình ảnh về bất động sản mà người dùng đăng lên
▪ Qua việc có thể đăng tin, xoá tin, sửa tin, thích, bình luận như trang mạng xã hội hiện nay
▪ Sắp xếp tin tức
• Tính tương thích:
▪ Hoạt động tốt trên nhiều trình duyệt web khác nhau
▪ Hoạt động tốt trên nhiều điện thoại thông minh
Trang 37Chương 4 ĐẶC TẢ CÁC CHỨC NĂNG
4.1 Chức năng đăng bài viết
bao gồm thông tin, hình ảnh, giá cả, …
dàng đưa thông tin sản phẩm lan rộng
- Yêu cầu người dung xác thực thông tin tài khoản (KYC), sau
đó mới được phép đăng tải bài viết, chịu trách nhiệm bồi thường nếu thông tin không chính xác
- Giới hạn lượt đăng bài của mỗi tài khoản
Bảng 4.1: Đặc tả chức năng bài viết
4.2 Chức năng tìm kiếm bài viết
Tích hợp các filter lọc thông tin
Khó khăn gặp
phải
- Lọc thông tin không theo ý muốn của người dùng
- Xử lí lọc thông tin chậm
- Tối ưu thuật toán giúp lọc thông tin nhanh hơn
Bảng 4.2: Đặc tả chức năng tìm kiếm bài viết
4.3 Chức năng yêu thích, lưu lại thông tin bài viết quan tâm
Khó khăn gặp
phải
- Người dung lưu nhiều thông tin dẫn đến bị nhầm lẫn giữa các bài viết
Bảng 4.3: Đặc tả chức năng yêu thích lưu lại thông tin bài viết
Trang 384.4 Chức năng recommend bài viết
tâm trước đó
Khó khăn gặp
phải
- Xử lí thông tin không chính xác
- Cần phải thông qua dữ liệu của người dùng sau một thời gian
sử dụng
Bảng 4.4: Đặc tả chức năng recommend bài viết
4.5 Chức năng quản lý người dùng
thống
Khó khăn gặp
phải
- Phân loại người dùng
Bảng 4.5: Đặc tả chức năng quản lý người dùng
4.6 Chức năng quản lý bài viết
bài viết không đạt yêu cầu
Khó khăn gặp
phải
- Phân loại không chính xác bài viết
quản trị viên xem xét
Bảng 4.6: Đặc tả chức năng quản lý bài viết
4.7 Chức năng quản lý các báo cáo
Trang 39viết,…
Khó khăn gặp
phải
- Thống kê cần phải chi tiết và chính xác
Bảng 4.7: Đặc tả chức năng quản lý báo cáo
Chương 5 THIẾT KẾ DỮ LIỆU
5.1 Sơ đồ cơ sở dữ liệu
5.2 Mô tả chi tiết các bảng
5.2.1 Bảng “user” – Tài Khoản người Dùng
Hình 5.1: Sơ đồ cơ sở dữ liệu tổng quát
Trang 401 id int Khóa chính ID định danh của
người dùng
dùng
người dùng
xóa hay chưa
13 created_by int Khóa ngoại Khóa ngoại thể hiện
người khởi tạo đối tượng
14 updated_by int Khóa Ngoại Khóa ngoại thể hiện
người cập nhật đối tượng