BÁO CÁO THỰC TẬP TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN ĐỀ TÀI NGHIÊN CỨU LẬP TRÌNH DI ĐỘNG ĐA NỀN TẢNG VÀ XÂY DỰNG ỨNG DỤNG CHO THUÊ PHÒNG TRỌ DỰA TRÊN SỰ KẾT HỢP FLUTTER, GOLANG VÀ GRAP
Mục tiêu nghiên cứu
Mục tiêu của đồ án là tìm ra giải pháp hiệu quả để giải quyết công cho thuê phòng trọ. Các mục tiêu cụ thể của đề tài gồm:
- Tìm ra phương pháp hiệu quả trong việc cho thuê phòng trọ của người cho thuê.
- Tìm ra phương pháp hiệu quả trong việc đi tìm phòng trọ của người đi thuê.
- Tìm ra phương pháp quản lí hiệu quả các hợp đồng cho thuê, hoá đơn chi trả điện, nước, tiền thuê hàng tháng,…
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
- Ứng dụng ngôn ngữ Dart và công nghệ Flutter vào xây dựng ứng dụng di động cho thuê phòng trọ.
- Ứng dụng ngôn ngữ GoLang và công nghệ GraphQL và GRPC vào xây dựng backend cho ứng dụng.
- Ứng dụng công nghệ React JS vào xây dựng website quản lí cho người quản trị.
Phương pháp nghiên cứu
Phương pháp lý thuyết tập trung vào nghiên cứu hệ thống các tài liệu liên quan đến nội dung nghiên cứu, gồm tài liệu về các ngôn ngữ lập trình và các framework Flutter, GoLang và ReactJS; đồng thời xem xét các nhu cầu của người cho thuê và người đi thuê để nắm rõ bối cảnh thị trường Việc tổng hợp, đối chiếu và phân tích các nguồn tin giúp làm rõ các khía cạnh kỹ thuật, ưu nhược điểm của công nghệ và xu hướng phát triển của các framework được đề cập Nghiên cứu cũng phân tích ảnh hưởng của các yếu tố kinh tế và hành vi người dùng lên quyết định cho thuê và thuê, từ đó hình thành nền tảng lý thuyết cho phần phân tích sâu và cho chiến lược nội dung tối ưu SEO Các kết quả từ phương pháp này cung cấp cơ sở cho việc viết bài có cấu trúc rõ ràng, với các từ khóa liên quan như ngôn ngữ lập trình, Flutter, GoLang, ReactJS, cho thuê và thuê.
Phương pháp thực nghiệm được áp dụng để nghiên cứu và xây dựng các phương thức đặt cọc, quy trình thuê phòng, và công cụ tìm phòng trọ, đồng thời tối ưu hóa việc trao đổi thông tin qua lại dưới dạng tin nhắn nhằm quản lý hiệu quả hoạt động cho thuê phòng Bên cạnh đó, chúng tôi phát triển một ứng dụng thuê phòng trọ tích hợp các chức năng đặt phòng, quản lý thông tin thanh toán và hỗ trợ liên lạc giữa người cho thuê và người thuê Cuối cùng, chúng tôi tiến hành đánh giá kết quả dựa trên các tiêu chí về trải nghiệm người dùng, tốc độ xử lý giao dịch, độ tin cậy của hệ thống và hiệu quả tối ưu hóa quy trình đặt cọc, tìm phòng và nhận phòng.
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Ý nghĩa của đề tài
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp của Trịnh Nhật Hạ Vy và Nguyễn Đình Toản tập trung vào ứng dụng công nghệ thông tin trong lĩnh vực bất động sản, cụ thể là ứng dụng cho thuê phòng trọ, nhằm đẩy mạnh việc số hóa và tích hợp CNTT vào cuộc sống người dùng Đề tài hướng tới mọi người, đặc biệt hữu ích cho sinh viên, người lao động xa nhà và người môi giới, với mục tiêu tối ưu hóa quy trình thuê và cho thuê thông qua các giải pháp IT Đóng góp chính của đề tài là đề xuất một phương pháp cho thuê nhanh chóng và rõ ràng cho cả người đi thuê và người cho thuê, gồm đầy đủ các hợp đồng, hoá đơn thanh toán và các trao đổi qua tin nhắn, từ đó nâng cao tính minh bạch, tiện lợi và an toàn trong giao dịch bất động sản cho thuê phòng trọ.
Bố cục của đề tài
Trên cơ sở nội dung nghiên cứu, nhằm đạt mục tiêu đề ra và đảm bảo tính logic cho đồ án, ngoài phần mở đầu và phần kết luận, đồ án được tổ chức thành các chương chính theo trình tự hợp lý: tổng quan tài liệu và cơ sở lý thuyết, phương pháp nghiên cứu, kết quả và phân tích, thảo luận và kết luận, nhằm cung cấp cấu trúc rõ ràng cho người đọc và tối ưu hóa khả năng nhận diện nội dung trên các công cụ tìm kiếm.
Chương 1: Cơ sở lý thuyết trình bày kết quả nghiên cứu về lập trình đa nền tảng và các cơ sở lý thuyết về ngôn ngữ lập trình Dart, GoLang và JavaScript, đồng thời giới thiệu các framework tương ứng Flutter, GraphQL, gRPC và ReactJS được sử dụng để xây dựng đề tài.
Chương 2: Phân tích và thiết kế hệ thống giới thiệu bài toán, đề xuất các mô hình hệ thống và ý tưởng chức năng cho phần mềm; đồng thời trình bày các mô hình thực thể–quan hệ (ER) và sơ đồ phân cấp chức năng như công cụ phân tích–thiết kế Chương cũng phân tích chi tiết các chức năng của người dùng và người quản trị, từ đó làm căn cứ cho thiết kế giao diện người dùng, thiết kế dữ liệu và các chức năng cốt lõi của hệ thống.
Chương 3: Cài đặt chương trình và kết quả Trong chương này, nêu kết quả thực hiện được của đề tài và trình bày cách cài đặt chương trình.
Đóng góp của đồ án
Trong đồ án thực tập tốt nghiệp này, chúng em đã vận dụng linh hoạt những kiến thức đã học trên giảng đường để triển khai đề tài một cách toàn diện và sâu sắc Bên cạnh đó, chúng em đã cùng nhau trao đổi, bàn bạc, đưa ra ý tưởng và đề xuất hướng các tác vụ của người dùng cùng với đơn vị thực tập, nhằm xây dựng một đồ án thực tập tốt nghiệp hoàn chỉnh và một sản phẩm thân thiện với người dùng Những đóng góp chính của đồ án thực tập tốt nghiệp tập trung vào việc áp dụng kiến thức nền tảng, tối ưu hoá trải nghiệm người dùng và tăng cường tính thực tiễn của sản phẩm.
Phân tích rõ ràng vai trò của người sử dụng trong hệ thống.
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Người đi thuê trọ/căn hộ có thể dễ dàng tìm kiếm các tòa nhà hoặc dãy trọ, chọn phòng và đặt cọc phòng mà mình muốn thuê Người dùng có thể thanh toán các hoá đơn điện, nước và chi phí thuê phòng đồng thời quản lý tất cả hoá đơn trên ứng dụng để đảm bảo tính minh bạch và chính xác giữa người thuê và chủ cho thuê Hợp đồng thuê phòng được thể hiện đầy đủ và chi tiết với tất cả thông tin cần thiết, giúp hai bên nắm rõ quyền lợi và nghĩa vụ từ đầu.
- Đối với người cho thuê trọ/căn hộ, họ có thể đăng tải thông tin cần toà nhà/dãy trọ và các phòng trọ/căn hộ gồm các thông tin liên quan, tiện ích và giá đặt cọc, giá thuê Họ cũng là người xác nhận các yêu cầu đặt cọc phòng cho người thuê để tạo hợp đồng cho người thuê Người chủ có thể tạo các hoá đơn điện, nước, chi phí thuê ứng với phòng đó và quản lí việc chi trả hoá đơn trên ứng dụng.
- Đối với người quản lí, họ có thể quản lí toàn bộ các thông tin người dùng, toà nhà, căn hộ, hoá đơn, hợp đồng của hệ thống
Phân tích và thiết kế chức năng thanh toán hoá đơn trực tuyến
Nghiên cứu và triển khai thực nghiệm chức năng thanh toán hoá đơn trực tuyến nhằm đáp ứng được sự nhanh chóng, tiện dụng, tiết kiệm thời gian của người dùng Bên cạnh đó, khi thanh toán trực tuyến, người dùng dễ dàng quản lí, kiểm soát được tài chính, trạng thái hoá đơn của mình Ngoài ra, việc thanh toán trực tuyến làm tăng tính chuyên nghiệp trong kinh doanh cũng như quy trình hoạt động của ứng dụng.
Thiết kế chức năng nhắn tin cá nhân và nhắn tin nhóm cho ứng dụng
Liên lạc giữa người cho thuê và người đi thuê là cần thiết để trao đổi các vấn đề liên quan đến hợp đồng, hoá đơn, điện nước và tình trạng của phòng đang cho thuê Hệ thống nhắn tin cá nhân hoặc nhắn tin nhóm đáp ứng nhu cầu trao đổi một cách thuận tiện và nhanh chóng mà không cần phải dùng thêm ứng dụng khác, giúp hai bên thảo luận điều kiện thuê, xử lý hoá đơn, yêu cầu bảo trì và cập nhật thông tin một cách hiệu quả.
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
CƠ SỞ LÝ THUYẾT
Hệ quản trị cơ sở dữ liệu PostgetQL
Hoàn thành nội Nguyễn Đình Toản dung và viết báo cáo chương 1
Chương 2: Phân tích và thiết kế hệ thống
Phân tích yêu cầu đề tài
Biểu đồ ca sử dụng
2.7 Thiết kế cơ sở dữ liệu
Lập trình giao diện cơ bản ứng dụng
Lập trình giao diện dành cho doanh nghiệp của ứng dụng
Lập trình giao diện dành cho người thuê của ứng dụng
Lập trình trang web cho người quản trị Lập trình giao diện tin nhắn ứng dụng
Lập trình giao diện phương thức thanh toán cho ứng dụng Lập trình API cơ bản
Trịnh Nhật Hạ Vy Nguyễn Đình Toản
Trịnh Nhật Hạ Vy Trịnh Nhật Hạ Vy
Nguyễn Đình Toản Nguyễn Đình Toản
SỰ KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Hoàn thành nội dung và viết báo cáo chương 2.
Hoàn thiện mã nguồn cho tất cả chức năng của ứng dụng và trang web (bao gồm Frontend và
Lập trình API cho doanh nghiệp
Lập trình API cho người thuê
Lập trình API cho người quản trị Lập trình API tin nhắn
Lập trình API phương thức thanh toán Chương 3: Cài đặt chương trình và kết quả
3.1 Cài đặt chương trình Trịnh Nhật Hạ Vy
Nguyễn Đình Toản 3.2 Kết quả chương trình
Chương 4: Kết luận và hướng phát triển
Nguyễn Đình Toản 4.2 Định hướng phát triển
Hoàn thành nội dung và viết báo cáo chương 3.
11/04/2022 – 15/04/2022Hoàn thành chương 4 Hoàn thiện sản phẩm và báo cáo TTTN
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
KẾ HOẠCH THỰC HIỆN ĐỀ TÀI CỦA NHÓM
DANH MỤC HÌNH VẼ v i i LỜI MỞ ĐẦU 2
1 Lí do chọn đề tài 2
3 Đối tượng và phạm vi nghiên cứu 4
6 Bố cục của đề tài 4
7 Đóng góp của đồ án 5
CHƯƠNG I: CƠ SỞ LÝ THUYẾT 7
1.1 Tổng quan về ngôn ngữ Dart 7
2 Lịch sử hình thành ngôn ngữ Dart 7
1.1. 3 Tại sao sử dụng ngôn ngữ Dart 8 1.1. 4 Tính năng của Dart 8
1.2 Tổng quan về framework Flutter 1
01.2.1 Khái niệm của Flutter 1 1.2. 1 Khái niệm của Flutter 1
5 Ưu và nhược điểm của Flutter 1
1.3 Tổng quan về ngôn ngữ Javascript 1
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
4 Ưu điểm và nhược điểm của Javascript 1
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
1.3.5 Sự khác nhau giữa Javascript với các ngôn ngữ lập trình web khác
1.4 Tổng quan về framework ReactJS 2
1.4.3 Ưu và nhược điểm của ReactJS 2
1.4.4 Sự phát triển của ReactJS 2
1.5 Tổng quan về ngôn ngữ Golang 2
1.5.2 Lịch sử hình thành ngôn ngữ Golang 2
1.5.4 Ưu và nhược điểm của Golang 2
1.5.5 Các lĩnh vực ứng dụng Golang 2
1.6.3 Ưu và nhược điểm của gRPC 3
1.7.4 Ưu và nhược điểm GraphQL 3
1.8 Hệ quản trị cơ sở dữ liệu PostgetQL 3
1.8.4 So sánh PostgetSQL và MySQL 3
6 CHƯƠNG II: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 4
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
2.1 Phân tích yêu cầu đề tài 4
2.4 Biểu đồ ca sử dụng 4
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
2.4.1 Biểu đồ ca sử dụng của hệ thống 46
2.4.2 Biểu đồ ca sử dụng quản lí (dành cho người quản trị) 46
2.4.3 Biểu đồ ca sử dụng nhắn tin của hệ thống 47
2.5.1 Biểu đồ hoạt động đăng kí 49
2.5.2 Biểu đồ hoạt động đăng nhập 50
2.5.3 Biểu đồ hoạt động khôi phục mật khẩu 50
2.5.4 Biểu đồ hoạt động tạo toà nhà 51
2.5.5 Biểu đồ hoạt động chỉnh sửa toà nhà 51
2.5.6 Biểu đồ hoạt động xoá toà nhà 51
2.5.7 Biểu đồ hoạt động thêm phòng 52
2.5.8 Biểu đồ hoạt động chỉnh sửa phòng 52
2.5.9 Biểu đồ hoạt động xoá phòng 52
2.5.10 Biểu đồ hoạt động tạo hoá đơn 52
2.5.11 Biểu đồ hoạt động chỉnh sửa hoá đơn 53
2.5.12 Biểu đồ hoạt động xoá hoá đơn 53
2.5.13 Biểu đồ hoạt động đặt cọc 53
2.5.14 Biểu đồ hoạt động xác nhận đặt cọc 54
2.5.15 Biểu đồ hoạt động rút lại tiền đặt cọc 54
2.5.16 Biểu đồ hoạt động thanh toán hoá đơn 55
2.5.17 Biểu đồ hoạt động xác nhận trạng thái hoá đơn 55
2.5.18 Biểu đồ hoạt động tạo cuộc trò chuyện 55
2.5.19 Biểu đồ hoạt động tạo nhóm hội thoại 56
2.5.20 Biểu đồ hoạt động cập nhật cuộc hội thoại nhóm 56
2.5.21 Biểu đồ hoạt động xoá cuộc hội thoại 56
2.5.22 Biểu đồ hoạt động nhắn tin 57
2.5.23 Biểu đồ hoạt động gửi hình ảnh 57
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
2.5.24 Biểu đồ hoạt động xoá tin nhắn 57
2.6.1 Biểu đồ tuần tự đăng kí với email 60
2.6.2 Biểu đồ tuần tự đăng nhập với email 60
2.6.3 Biểu đồ tuần tự tạo toà nhà 61
2.6.4 Biểu đồ tuần tự chỉnh sửa toà nhà 61
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
2.6.5 Biểu đồ tuần tự xoá toà nhà 62
2.6.6 Biểu đồ tuần tự thêm phòng 62
2.6.7 Biểu đồ tuần tự chỉnh sửa phòng 63
2.6.8 Biểu đồ tuần tự xoá phòng 63
2.6.9 Biểu đồ tuần tự đặt phòng 64
2.6.10 Biểu đồ tuần tự tạo hoá đơn 65
2.6.11 Biểu đồ tuần tự chỉnh sửa hoá đơn 66
2.6.12 Biểu đồ tuần tự thanh toán hoá đơn 66
2.7 Thiết kế cơ sở dữ liệu 67
2.7.1 Thiết kế bảng dữ liệu 67
2.7.2 Thiết kế biểu đồ lớp 75
2.7.3 Mô hình cơ sở dữ liệu 76
CHƯƠNG III: CÀI ĐẶT CHƯƠNG TRÌNH VÀ KẾT QUẢ 77
3.1.1 Cài đặt chương trình hệ thống 77
3.1.3 Cài đặt trang web quản lí 77
3.2.2 Giao diện đăng nhập/đăng kí 78
3.2.3 Giao diện tạo tài khoản doanh nghiệp 79
3.2.4 Giao diện tìm kiếm toà nhà 79
3.2.5 Giao diện chi tiết toà nhà 80
3.2.6 Giao diện chi tiết căn hộ 81
3.2.7 Giao diện đặt cọc phòng 81
3.2.8 Giao diện rút lại tiền cọc 82
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
3.2.9 Giao diện hoá đơn của người dùng 83
3.2.10 Giao diện thanh toán hoá đơn 83
3.2.12 Giao diện quản lí toà nhà 85
3.2.13 Giao diện quản lí căn hộ 85
3.2.14 Giao diện thêm toà nhà 86
3.2.15 Giao diện chỉnh sửa toà nhà 86
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Giao diện xoá toà toà nhà
7 Giao diện thêm căn hộ 8
Giao diện chỉnh sửa căn hộ 8 8 3.2.1 9
Giao diện xoá căn hộ 8
Giao diện yêu cầu đặt cọc 9 0 3.2.2
2 Giao diện danh sách hợp đồng và hoá đơn 9
Giao diện tạo hoá đơn 9
Giao diện chỉnh sửa hoá đơn 9 2 3.2.2
5 Giao diện xoá hoá đơn 9
Giao diện xác nhận thanh toán 9 3 3.2.2
7 Giao diện danh sách cuộc trò chuyện 9
Giao diện chi tiết cuộc trò chuyện 9 5 3.2.2 9
Giao diện thông tin cuộc trò chuyện 9 5 3.2.3
0 Giao diện tạo nhóm trò chuyện 9
Giao diện thêm người dùng vào nhóm trò chuyện 9 6 3.2.3
2 Giao diện thông báo của ứng dụng 9
Giao diện cập nhật tài khoản 9 8 3.2.3
5 Giao diện đăng nhập (website quản lí) 9
Giao diện quản lí người dùng (website quản lí) 9 9 3.2.3
7 Giao diện quản lí toà nhà, căn hộ (website quản lí) 1
8 Giao diện quản lí hợp đồng (website quản lí) 1
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 109
2 Hạn chế của đề tài
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Bảng 1: So sánh PostgetSQL và MySQL 36
Bảng 2: Đặc tả hệ thống 44
Bảng 9: Thực thể BUILDING_COMMENT 71
Bảng 12: Thực thể CHAT_ROOM 72
Bảng 13: Thực thể CHAT_MESSAGE 73
Bảng 14: Thực thể CHAT_MEMBER 73
Bảng 15: Thực thể USER_MESSAGE 74
Bảng 16: Thực thể USER_CHAT_ROOM 74
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Hình 1: Tính năng của ngôn ngữ Dart 8
Hình 2: Kiến trúc của Flutter 11
Hình 3: Cách hoạt động của Javascript 18
Hình 4: Thành phần Vitural DOM 22
Hình 5: Mô hình giao tiếp client/server trong RPC 29
Hình 7: Các kí hiệu của biểu đồ ca sử dụng 46
Hình 8: Biểu đồ ca sử dụng của hệ thống 46
Hình 9: Biểu đồ ca sử dụng quản lí (dành cho người quản trị) 47
Hình 10: Biểu đồ ca sử dụng nhắn tin 47
Trong bài viết này, các hình 11–13 nêu bật các ký hiệu trong biểu đồ hoạt động: hình 11 cho ký hiệu các hoạt động trong biểu đồ hoạt động 48; hình 12 cho ký hiệu đồng hoá các hoạt động nhằm thể hiện sự ghép và đồng bộ giữa các bước; và hình 13 cho ký hiệu đồng hoá có điều kiện trong biểu đồ hoạt động 49, cho thấy cách các nhánh điều kiện được xử lý khi các hoạt động được đồng hoá có điều kiện.
Hình 14: Kí hiệu quyết định trong biểu đồ hoạt động 49
Hình 15: Kí hiệu quyết định kết hợp trong biểu đồ hoạt động 49
Hình 16: Biểu đồ hoạt động đăng kí 50
Hình 17: Biểu đồ hoạt động đăng nhập 50
Hình 18: Biểu đồ hoạt động khôi phục mật khẩu 51
Hình 19: Biểu đồ hoạt động tạo toà nhà 51
Hình 20: Biểu đồ hoạt động chỉnh sửa toà nhà 51
Hình 21: Biểu đồ hoạt động xoá toà nhà 52
Hình 22: Biểu đồ hoạt động thêm phòng 52
Hình 23: Biểu đồ hoạt động chỉnh sửa phòng 52
Hình 24: Biểu đồ hoạt động xoá phòng 52
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Hình 25: Biểu đồ hoạt động tạo hoá đơn 53
Hình 26: Biểu đồ hoạt động chỉnh sửa hoá đơn 53
Hình 27: Biểu đồ hoạt động xoá phòng 53
Hình 28: Biểu đồ hoạt động đặt cọc 54
Hình 29: Biểu đồ hoạt động xác nhận đặt cọc 54
Hình 30: Biểu đồ hoạt động rút lại tiền cọc 55
Hình 31: Biểu đồ hoạt động thanh toán hoá đơn 55
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Hình 32: Biểu đồ hoạt động xác nhận trạng thái hoá đơn 55
Hình 33: Biểu đồ hoạt động tạo cuộc trò chuyện 56
Hình 34: Biểu đồ hoạt động tạo nhóm hội thoại 56
Hình 35: Biểu đồ hoạt động cập nhật cuộc hội thoại nhóm 56
Hình 36: Biểu đồ hoạt động xoá cuộc hội thoại 56
Hình 37: Biểu đồ hoạt động nhắn tin 57
Hình 38: Biểu đồ hoạt động gửi hình ảnh 57
Hình 39: Biểu đồ hoạt động xoá tin nhắn 57
Hình 40: Kí hiệu đối tượng trong biểu đồ tuần tự 57
Bài viết giải thích các ký hiệu cơ bản trên biểu đồ tuần tự, từ ký hiệu thời gian hoạt động ở hình 41 đến ký hiệu gửi và trả lời thông điệp ở hình 42–43, tiếp tục với ký hiệu gửi thông điệp ở hình 44 và ký hiệu tạo/huỷ phương thức ở hình 45, sau đó là ký hiệu lặp thông điệp ở hình 46 và lặp thông điệp có điều kiện ở hình 47, cuối cùng là ký hiệu gửi phụ thuộc có điều kiện ở hình 48, nhằm giúp người đọc hiểu rõ luồng tương tác giữa các thành phần hệ thống qua biểu đồ tuần tự và tối ưu hóa thiết kế phần mềm.
Hình 49: Kí hiệu đệ quy trong biểu đồ tuần tự 60
Hình 50: Biểu đồ tuần tự đăng kí với email 60
Hình 51: Biểu đồ tuần tự đăng nhập với email 61
Hình 52: Biểu đồ tuần tự tạo toà nhà 61
Hình 53: Biểu đồ tuần tự chỉnh sửa toà nhà 62
Hình 54: Biểu đồ tuần tự xoá toà nhà 62
Hình 55: Biểu đồ tuần tự thêm phòng 63
Hình 56: Biểu đồ tuần tự chỉnh sửa phòng 63
Hình 57: Biểu đồ tuần tự xoá phòng 64
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Hình 58: Biểu đồ tuần tự đặt phòng 65
Hình 59: Biểu đồ tuần tự tạo hoá đơn 66
Hình 60: Biểu đồ tuần tự chỉnh sửa hoá đơn 66
Hình 61: Biểu đồ tuần tự thanh toán hoá đơn 67
Hình 62: Biểu đồ lớp của hệ thống 76
Hình 63: Sơ đồ quan hệ cơ sở dữ liệu 76
Hình 64: Giao diện khởi động 1 78
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Hình 65: Giao diện khởi động 2 78
Hình 66: Giao diện khởi động 3 78
Hình 67: Màn hình tạo tài khoản 79
Hình 68: Màn hình đăng kí 79
Hình 69: Màn hình đăng nhập 79
Hình 70: Màn hình tạo tài khoản doanh nghiệp 1 79
Hình 71: Màn hình tạo tài khoản doanh nghiệp 2 79
Hình 72: Màn hình tìm kiếm 80
Hình 73: Màn hình tuỳ chỉnh 80
Hình 74: Màn hình xem bản đồ 80
Hình 75: Màn hình chi tiết 80
Hình 76: Màn hình bình luận toà nhà 80
Hình 77: Màn hình bản đồ vị trí của toà nhà 80
Hình 78: Màn hình chi tiết căn hộ 1 81
Hình 79: Màn hình chi tiết căn hộ 2 81
Hình 80: Màn hình chọn phương pháp 82
Hình 81: Màn hình thông báo 82
Hình 82: Màn hình rút lại tiền cọc 82
Hình 83: Màn hình xác nhận rút lại tiền cọc 82
Hình 84: Giao diện danh sách hoá đơn 83
Hình 85: Màn hình chi tiết hoá đơn 83
Hình 86: Màn hình chọn phương thức thanh toán 84
Hình 87: Màn hình xác nhận thanh toán thành công 84
Hình 88: Màn hình chờ xác nhận đã thanh toán 84
Hình 89: Màn hình danh sách hợp đồng 84
Hình 90: Màn hình chi tiết hoá đơn (của người dùng) 84
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Hình 91: Màn hình quản lí toà nhà 85
Hình 92: Màn hình chi tiết toà nhà 85
Hình 93: Màn hình căn hộ 85
Hình 94: Màn hình căn hộ (1) 85
Hình 95: Màn hình căn hộ (2) 85
Hình 96: Màn hình thêm toà nhà (1) 86
Hình 97: Màn hình thêm toà nhà (2) 86
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Hình 98: Màn hình ghim vị trí toà nhà trên bản đồ 86
Hình 99: Màn hình chọn chỉnh sửa 87
Hình 100: Màn hình chỉnh sửa toà nhà (1) 87
Hình 101: Màn hình chỉnh sửa toà nhà (2) 87
Hình 102: Màn hình xoá toà nhà (1) 87
Hình 103: Màn hình xoá toà nhà (2) 87
Hình 104: Màn hình thêm phòng mới (1) 88
Hình 105: Màn hình thêm phòng mới (2) 88
Hình 106: Màn hình chỉnh sửa phòng (1) 89
Hình 107: Màn hình chính sửa phòng (2) 89
Hình 108: Màn hình chỉnh sửa phòng (3) 89
Hình 109: Màn hình xoá phòng (1) 89
Hình 110: Màn hình xoá phòng (2) 89
Hình 111: Màn hình quản lí tài chính 90
Hình 112: Màn hình danh sách các yêu cầu đặt cọc 90
Hình 113: Màn hình danh sách các hợp đồng 91
Hình 114: Màn hình danh sách các hoá đơn 91
Hình 115: Màn hình tạo hoá đơn mới (1) 92
Hình 116: Màn hình tạo hoá đơn (2) 92
Hình 117: Màn hình chi tiết hoá đơn 92
Hình 118: Màn hình chỉnh sửa hoá đơn (1) 92
Hình 119: Màn hình chỉnh sửa hoá đơn (2) 92
Hình 120: Màn hình xoá hoá đơn 93
Hình 121: Màn hình xác nhận xoá hoá đơn 93
Hình 122: Màn hình xác nhận thanh toán 94
Hình 123: Màn hình thanh toán thành công 94
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Hình 124: Màn hình danh sách các cuộc trò chuyện 94
Hình 125: Màn hình cuộc trò chuyện 1-1 95
Hình 126: Màn hình cuộc trò chuyện nhóm 95
Hình 127: Màn hình thông tin người trò chuyện 95
Hình 128: Màn hình thông tin trò chuyện nhóm 95
Hình 129: Màn hình danh bạ người dùng 96
Hình 130: Màn hình tạo nhóm trò chuyện 96
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
Hình 131: Màn hình chi tiết nhóm 97
Hình 132: Màn hình thêm người dùng 97
Hình 133: Màn hình sau khi thêm thành công 97
Hình 134: Màn hình thông báo (1) 97
Hình 135: Màn hình thông báo (2) 97
Hình 136: Màn hình tài khoản người dùng 98
Hình 137: Màn hình chỉnh sửa tài khoản 98
Hình 138: Màn hình chỉnh sửa mật khẩu 98
Hình 139: Trang web đăng nhập dành cho người quản lí 99
Hình 140: Trang web quản lí người dùng 99
Hình 141: Thông tin chi tiết của tài khoản 100
Hình 142: Form thêm mới tài khoản 100
Hình 143: Form chỉnh sửa tài khoản 101
Hình 145: Trang web quản lí toà nhà 102
Hình 146: Chi tiết toà nhà 102
Hình 147: Form thêm mới toà nhà 103
Hình 148: Form chỉnh sửa toà nhà 103
Hình 150: Chi tiết căn hộ 104
Hình 151: Form thêm mới căn hộ 105
Hình 152: Form chỉnh sửa căn hộ 106
Hình 154: Trang web quản lí hợp đồng 107
Hình 155: Chi tiết hợp đồng 107
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Hình 156: Chỉnh sửa hợp đồng 108
Hình 157: Xác nhận kết thúc hợp đồng 108
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
1 Lí do chọn đề tài
Thuê trọ hiện nay là vấn đề được nhiều người quan tâm, đặc biệt là sinh viên và người lao động sống xa gia đình để học tập và làm việc, vì họ tìm kiếm một nơi ở an toàn, sạch sẽ, thoải mái và thuận tiện cho việc đến trường hoặc nơi làm việc Thông thường nhà trọ được xây dựng ở mặt tiền đường để dễ tiếp cận, nhưng với nhu cầu ngày càng đa dạng, nhiều khu trọ cũng mọc ở hẻm, ngõ hoặc ở các vị trí khác nhau, khiến chi phí thuê có sự chênh lệch tùy theo vị trí và tiện ích xung quanh.
Quản lý người thuê trọ dù ở quy mô nhỏ (10–20 phòng) hay lớn (thậm chí hàng trăm phòng) đều đòi hỏi hệ thống quản lý chặt chẽ, vì mỗi căn phòng là một khách hàng và số lượng phòng càng nhiều sẽ càng phát sinh vấn đề Đối tượng khách hàng của loại hình này rất đa dạng, từ sinh viên, người mới đi làm, công nhân cho tới hộ gia đình trẻ và người lao động nhập cư, khiến bài toán quản lý trở nên nan giải với nhiều chủ cho thuê Khi khối lượng công việc tăng lên theo số phòng, áp lực quản lý càng lớn và khó khăn hơn Để giữ chân khách trọ, chủ đầu tư cần có giải pháp xử lý sự cố và đáp ứng mong muốn của người thuê, như sửa chữa hư hỏng, tân trang và nâng cấp khu nhà trọ theo định kỳ, đồng thời quản lý an ninh, nhắc nhở vi phạm, ghi chỉ số điện nước và thu tiền nhà đúng hạn.
Khi đi tìm phòng trọ, đối tượng chủ yếu là sinh viên hoặc người lao động xa nhà do học tập và làm việc, nên việc chọn phòng cần xem xét đầy đủ nhiều yếu tố: chất lượng phòng ở như tường có chắc chắn hay sơn có bong tróc hay đã xuống cấp và chủ nhà có sửa chữa kịp thời khi có vấn đề hay không; an toàn cửa chính và ổ khóa bảo đảm chống trộm; số lượng cửa sổ và hệ thống thông gió; mái che để tránh phòng quá bí và ẩm; tình trạng đường ống nước và vòi nước có rò rỉ, hỏng hay tắc nghẽn; vị trí căn phòng và an ninh khu vực là những yếu tố đáng được quan tâm để có một chỗ ở tốt.
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Trong báo cáo thực tập tốt nghiệp, việc thuê nhà trọ cho sinh viên cần thận trọng khi giao dịch với chủ nhà hoặc người môi giới để tránh bị lừa đảo tiền và thiệt hại về lợi ích do thiếu giấy tờ pháp lý như giấy tờ sở hữu và các minh chứng đủ điều kiện cho thuê Giá thuê phụ thuộc vào quận/huyện và loại căn hộ; khu vực trung tâm hoặc các khu chung cư chất lượng cao thường có mức giá cao hơn, bên cạnh đó các bạn cần dự tính thêm các phí sinh hoạt như điện, nước, wifi, gửi xe Hiện nay, ngoài việc tìm kiếm trực tiếp, sinh viên có thể dùng Google và Facebook để tham gia các hội nhóm cho thuê trọ, nơi cung cấp đầy đủ thông tin về vị trí, tiện ích, giá thuê và hình ảnh thực tế Tuy nhiên các vấn đề liên quan đến chi trả, thương lượng và hợp đồng vẫn không thể trao đổi qua mạng xã hội mà cần một ứng dụng quản lý giao dịch để kết nối và lưu trữ thông tin giữa người cho thuê và người thuê một cách an toàn.
Sự hỗ trợ mạnh mẽ của các ngôn ngữ lập trình và sự xuất hiện của các framework đã thúc đẩy nhóm chọn đề tài “Nghiên cứu lập trình di động đa nền tảng và xây dựng ứng dụng cho thuê phòng trọ dựa trên sự kết hợp” Dự án tập trung vào phát triển ứng dụng di động đa nền tảng nhằm tối ưu hóa trải nghiệm người dùng trên mọi thiết bị, giảm thời gian phát triển và chi phí bảo trì Thông qua các framework hiện đại, nhóm khai thác khả năng tích hợp các chức năng quản lý phòng trọ, tìm kiếm, đặt phòng và thanh toán trực tuyến, đồng thời đảm bảo tính mở rộng và bảo mật cho người dùng và người cho thuê Đây là một giải pháp công nghệ tổng hợp giúp kết nối người thuê và chủ nhà một cách hiệu quả hơn, phù hợp với xu hướng số hóa trong lĩnh vực cho thuê phòng trọ.
Dự án mang tên “Flutter, Golang và GraphQL” được thực hiện để thực tập tốt nghiệp và phù hợp với chương trình đào tạo, đồng thời khai thác công nghệ này nhằm tìm hiểu và đề xuất một giải pháp tối ưu cho công việc cho thuê phòng trọ online Mục tiêu là kết hợp Flutter cho giao diện người dùng thân thiện, Golang cho backend hiệu quả và GraphQL làm API linh hoạt, giúp tối ưu hóa quy trình đăng tin, tìm kiếm, quản lý phòng và thanh toán trực tuyến Thông qua dự án, sinh viên nắm vững cách triển khai hệ thống full-stack từ frontend đến backend, áp dụng các nguyên tắc thiết kế, bảo mật và tối ưu hiệu suất để đáp ứng nhu cầu thực tế của thị trường cho thuê phòng trọ online.
Mục tiêu của đồ án là tìm ra giải pháp hiệu quả để giải quyết công cho thuê phòng trọ. Các mục tiêu cụ thể của đề tài gồm:
- Tìm ra phương pháp hiệu quả trong việc cho thuê phòng trọ của người cho thuê.
- Tìm ra phương pháp hiệu quả trong việc đi tìm phòng trọ của người đi thuê.
- Tìm ra phương pháp quản lí hiệu quả các hợp đồng cho thuê, hoá đơn chi trả điện, nước, tiền thuê hàng tháng,…
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản
- Ứng dụng ngôn ngữ Dart và công nghệ Flutter vào xây dựng ứng dụng di động cho thuê phòng trọ.
- Ứng dụng ngôn ngữ GoLang và công nghệ GraphQL và GRPC vào xây dựng backend cho ứng dụng.
- Ứng dụng công nghệ React JS vào xây dựng website quản lí cho người quản trị.
3 Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu gồm:
- Các chức năng của người cho thuê, người đi thuê.
- Thông tin các tỉnh/thành, quận/huyện, phường/xã.
- Thông tin liên quan đến hợp đồng cho thuê.
- Thông tin liên quan đến hoá đơn thanh toán.
- Cổng thanh toán ví điện tử.
- Các chức năng nhắn tin riêng và nhắn tin nhóm.
Giới hạn phạm vi nghiên cứu trong đề tài gồm:
Chúng tôi tập trung xây dựng hệ thống cho thuê nhà trọ kết nối người cho thuê và người đi thuê một cách dễ dàng và hiệu quả Người cho thuê có thể đăng tải và quản lý thông tin phòng một cách nhanh chóng, trong khi người đi thuê có thể dễ dàng tìm kiếm phòng trọ với mức giá hợp lý và các tiện ích phù hợp Hệ thống cho phép hai bên quản lý hợp đồng, thanh toán và các giao dịch cho thuê một cách tiện lợi, giúp quá trình thuê nhà diễn ra suôn sẻ từ tìm kiếm đến ký kết và thanh toán.
- Đề tài được xây dựng bởi các ngôn ngữ lập trình như: Dart, Javascript, Go, HTML, CSS, với công nghệ Flutter, GoLang, GraphQL, GRPC và ReactJS.
Phương pháp lý thuyết được áp dụng để tổng hợp và phân tích các tài liệu liên quan đến nội dung nghiên cứu, tập trung vào các ngôn ngữ lập trình và các framework phổ biến như Flutter, GoLang và ReactJS Nghiên cứu cũng xem xét nhu cầu của người cho thuê và người đi thuê để làm rõ các yếu tố tác động đến hoạt động cho thuê và sự phát triển ứng dụng trên nền tảng web và di động.
Trong khuôn khổ nghiên cứu, chúng tôi trình bày phương pháp nghiên cứu và phát triển các phương pháp đặt cọc, quy trình thuê và tìm phòng trọ, cùng với cơ chế trao đổi thông tin qua lại dưới dạng tin nhắn để quản lý thuê phòng trọ một cách hiệu quả Nghiên cứu cũng tập trung vào xây dựng và thử nghiệm một ứng dụng cho thuê phòng trọ nhằm tối ưu hóa quy trình từ tìm phòng đến ký hợp đồng và giao tiếp giữa người thuê và chủ nhà Cuối cùng, chúng tôi tiến hành đánh giá kết quả để đo lường hiệu quả của các phương pháp đề xuất và khả năng ứng dụng thực tế của ứng dụng trong việc nâng cao trải nghiệm thuê phòng trọ.
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
KẾT HỢP FLUTTER, GOLANG VÀ GRAPHQL
Đề tài báo cáo thực tập tốt nghiệp của Trịnh Nhật Hạ Vy và Nguyễn Đình Toản tập trung vào ứng dụng công nghệ thông tin trong lĩnh vực bất động sản, cụ thể là ứng dụng cho thuê phòng trọ, nhằm đẩy mạnh việc tích hợp CNTT vào đời sống và hoạt động kinh doanh bất động sản Dự án nhắm tới mọi người dùng, đặc biệt hữu ích cho sinh viên, người lao động xa nhà và người môi giới, giúp kết nối người cho thuê và người đi thuê một cách thuận tiện Đóng góp chính của đề tài là đề xuất phương pháp cho thuê nhanh chóng và minh bạch dành cho người đi thuê và người cho thuê, bao gồm đầy đủ các bản hợp đồng, hoá đơn thanh toán và các cuộc trao đổi qua tin nhắn để tăng tính rõ ràng, lưu trữ và an toàn giao dịch.
6 Bố cục của đề tài
Dựa trên các nội dung nghiên cứu đã trình bày, nhằm đạt mục tiêu đề ra và đảm bảo tính logic cho đồ án, ngoài phần mở đầu và phần kết luận, nội dung được tổ chức thành các chương như sau.
Chương 1 Cơ sở lý thuyết Chương này trình bày kết quả nghiên cứu về lập trình đa nền tảng; trình bày các cơ sở lí thuyết về ngôn ngữ lập trình: Dart, GoLang, Javascript cùng các framework tương ứng Flutter, GraphQL, GRPC, ReactJS được sử dụng trong việc xây dựng đề tài.
Chương 2: Phân tích và thiết kế hệ thống Chương này giới thiệu bài toán và đưa ra các mô hình hệ thống; đề xuất các ý tưởng, chức năng cho phần mềm; trình bày các mô hình thực thể quan hệ, sơ đồ phân cấp chức năng Phân tích chi tiết các chức năng của người sử dụng và người quản lí; thiết kế giao diện người dùng và thiết dữ liệu, chức năng cho hệ thống.
Chương 3: Cài đặt chương trình và kết quả Trong chương này, nêu kết quả thực hiện được của đề tài và trình bày cách cài đặt chương trình.
7 Đóng góp của đồ án