- Phạm vi nghiên cứu Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ
PHƯƠNG PHÁP THỰC HIỆN
1 Chương 1: Khảo sát hiện trạng và xác định yêu cầu
1.2 Khảo sát một số phần mềm
1.3 Phân tích yêu cầu của dự án
1.4 Yêu cầu chức năng nghiệp vụ
1.5 Danh sách yêu cầu chức năng nghiệp vụ
1.6 Danh sách yêu cầu chức năng hệ thống
1.7 Danh sách yêu cầu phi chức năng
2 Chương 2: Mô hình hoá yêu cầu
3 Chương 3: Thiết kế phần mềm
4 Chương 4: Kiến trúc hệ thống
4.2 Các công nghệ được sử dụng
5 Chương 5: Thiết kế giao diện và xử lý
5.1 Sinh viên và người dùng khách
6 Chương 6: Cài đặt và kiểm thử
STT Thời gian Công việc Ghi chú
1 28/2/2024-6/3/2024 Tham khảo, xác định đề tài
2 6/3/2024-13/4/2024 Khảo sát, phân tích và xác định các yêu cầu của đề tài
3 13/3/2024-20/3/2024 Xây dựng lược đồ chức năng, đặc tả chức năng
4 20/3/2024- 27/3/2024 Xây dựng lược đồ tuần tự
5 27/3/2024- 3/4/2024 Thiết kế giao diện phần sinh viên và người dùng khách
6 3/4/2024 – 10/4/2024 Thiết kế và xây dựng cơ sở dữ liệu
8 17/4/2024-24/4/2024 Kết nối giao diện và back-end cho sinh viên và người dùng khách
9 24/4/2024-1/5/2024 Thiết kế giao diện phần quản lý và admin
10 1/5/2024 – 8/5/2024 Kết nối giao diện và back-end cho quản lý và admin
11 8/5/2024 -15/5/2024 Hoàn thiện các chức năng và bổ sung các chức năng bị thiếu
12 15/5/2024 – 22/5/2024 Kiểm thử lại trang web, sửa chữa lỗi
15 5/6/2024 – 28/6/2024 Chỉnh sửa báo cáo và làm
Vu Hoang Anh Ý kiến của giáo viên hướng dẫn
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2 MỤC ĐÍCH CỦA ĐỀ TÀI 1
CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 3
1.2 Khảo sát một số phần mềm 3
1.3 Phân tích yêu cầu của dự án 8
1.4 Yêu cầu chức năng nghiệp vụ 10
1.5 Danh sách yêu cầu chức năng nghiệp vụ 11
1.6 Danh sách yêu cầu chức năng hệ thống 14
1.7 Danh sách yêu cầu phi chức năng 15
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU 17
2.1.1 Lược đồ chức năng tổng quan 17
2.2.6 Xem thông tin cá nhân 26
2.2.7 Cập nhật thông tin cá nhân 27
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 59
3.1.6 Xem thông tin cá nhân 63
3.1.7 Cập nhật thông tin cá nhân 64
CHƯƠNG 4: KIẾN TRÚC HỆ THỐNG 90
4.1.2 Tương tác và giao tiếp giữa các thành phần 91
4.2 Các công nghệ và thư viện được sử dụng 91
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 117
5.1 Sinh viên và người dùng khách 117
5.1.9 Danh sách tài liệu chính 126
5.1.10 Danh sách tài liệu đã thích 128
5.1.11 Danh sách tài liệu đã lưu 129
5.1.12 Danh sách tài liệu đã tải lên đã được duyệt 130
5.1.13 Danh sách tài liệu đã tải lên đang đợi duyệt 131
5.1.14 Danh sách tài liệu đã tải lên bị từ chối 131
5.1.17 Danh sách tài liệu của một người 135
5.2.27 Danh sách tài liệu đang chờ 175
CHƯƠNG 6 CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ 180
6.1.2 Cài đặt với docker compose 180
DANH MỤC TÀI LIỆU THAM KHẢO 188
Hình 1.1: Trang chủ Studocu 4
Hình 1.2: Danh sách tài liệu theo trường học 4
Hình 1.3: Xem chi tiết tài liệu 5
Hình 1.4: Tải tài liệu lên 5
Hình 1.5: Trang chủ thư viện số HCMUTE 6
Hình 1.6: Chi tiết tài liệu 7
Hình 1.7: Tải tài liệu 7
Hình 2.1: Lược đồ chức năng 17
Hình 2.2: Chức năng quản lý thông tin cá nhân 17
Hình 2.3: Chức năng quản lý tài liệu 18
Hình 2.4: Chức năng quản lý người dùng 18
Hình 2.5: Chức năng quản lý danh mục 19
Hình 2.6: Chức năng quản lý lĩnh vực 19
Hình 2.7: Chức năng quản lý trường 20
Hình 3.1: Lược đồ tuần tự chức năng đăng ký 59
Hình 3.2: Lược đồ tuần tự chức năng đăng nhập 60
Hình 3.3: Lược đồ tuần tự chức năng đăng xuất 60
Hình 3.4: Lược đồ tuần tự chức năng lấy lại mật khẩu 61
Hình 3.5: Lược đồ tuần tự chức năng đổi mật khẩu 62
Hình 3.6: Lược đồ tuần tự chức năng xem thông tin cá nhân 63
Hình 3.7: Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 64
Hình 3.8: Lược đồ tuần tự chức năng đổi ảnh đại diện 65
Hình 3.9: Lược đồ tuần tự chức năng đọc tài liệu 65
Hình 3.10: Lược đồ tuần tự chức năng tìm kiếm tài liệu 66
Hình 3.11: Lược đồ tuần tự chức năng lọc tài liệu 66
Hình 3.12: Lược đồ tuần tự chức năng thích tài liệu 67
Hình 3.13: Lược đồ tuần tự chức năng lưu tài liệu 67
Hình 3.14: Lược đồ tuần tự chức năng đánh giá tài liệu 68
Hình 3.15: Lược đồ tuần tự chức năng đăng tài liệu 69
Hình 3.16: Lược đồ tuần tự chức năng chỉnh sửa tài liệu 70
Hình 3.17: Lược đồ tuần tự chức năng xoá tài liệu 71
Hình 3.18: Lược đồ tuần tự chức năng thêm người dùng 72
Hình 3.19: Lược đồ tuần tự chức năng chỉnh sửa người dùng 73
Hình 3.20: Lược đồ tuần tự chức năng xoá người dùng 74
Hình 3.21: Lược đồ tuần tự chức năng xoá đánh giá 75
Hình 3.22: Lược đồ tuần tự chức năng phê duyệt tài liệu 76
Hình 3.23: Lược đồ tuần tự chức năng thêm trường 77
Hình 3.24: Lược đồ tuần tự chức năng chỉnh sửa trường 78
Hình 3.25: Lược đồ tuần tự chức năng xoá trường 79
Hình 3.26: Lược đồ tuần tự chức năng kích hoạt trường 80
Hình 3.27: Lược đồ tuần tự chức năng thêm danh mục 81
Hình 3.28: Lược đồ tuần tự chức năng chỉnh sửa danh mục 82
Hình 3.29: Lược đồ tuần tự chức năng xoá danh mục 83
Hình 3.30: Lược đồ tuần tự chức năng kích hoạt danh mục 84
Hình 3.31: Lược đồ tuần tự chức năng thêm lĩnh vực 85
Hình 3.32: Lược đồ tuần tự chức năng chỉnh sửa lĩnh vực 86
Hình 3.33: Lược đồ tuần tự chức năng xoá lĩnh vực 87
Hình 3.34: Lược đồ tuần tự chức năng kích hoạt lĩnh vực 88
Hình 3.35: Lược đồ tuần tự chức năng thống kê 88
Hình 3.36: Lược đồ lớp của hệ thống 89
Hình 4.1: Kiến trúc tổng quan của hệ thống 90
Hình 4.2: Cấu trúc dự án Spring Boot đơn giản 92
Hình 4.3: Tạo dự án Spring Boot với Maven 93
Hình 4.4: Khai báo dependency trong pom.xml 94
Hình 4.5: Controller trong Spring Boot 94
Hình 4.6: Spring Boot và Tomcat 95
Hình 4.7: Thêm dependency Spring Security vào dự án 96
Hình 4.8: Cấu hình Filter Chain 97
Hình 4.9: Cấu hình xác thực 97
Hình 4.10: Thêm JWT Filter vào SecurityFilterChain 98
Hình 4.12: Tạo và trả JWT khi login 99
Hình 4.13: Repository interface trong Spring Data JPA 100
Hình 4.14: Truy vấn query tuỳ chỉnh 100
Hình 4.15: Thêm dependency của Spring Data JPA 101
Hình 4.16: Cấu hình kết nối MySQL trong application.yml 101
Hình 4.17: Tạo các entity classes 102
Hình 4.18: Kiến trúc ReactJS 103
Hình 4.19: Cấu trúc thư mục ReactJS 103
Hình 4.22: Minh hoạ tệp JSX 106
Hình 4.23: Ví dụ về useState 106
Hình 4.24: Ví dụ về useEffect 107
Hình 4.25: Chuyển hướng với useNavigate 107
Hình 4.26: Lấy đường dẫn hiện tại bằng useLocation 108
Hình 4.27: Truy xuất tham số từ URL với useParams 108
Hình 4.28: Minh hoạ props 108
Hình 4.29: Axios trong package.json 109
Hình 4.30: Sử dụng axios để gửi yêu cầu GET lấy tất cả danh mục 109
Hình 4.31: Tạo dự án Google Cloud 110
Hình 4.32: Giao diện APIs & Services 111
Hình 4.33: Kích hoạt Google Drive API 111
Hình 4.34: Giao diện Credentials để tạo service account 112
Hình 4.35: Tạo service account 112
Hình 4.37: Google Drive API dependency 113
Hình 4.38: Cấu hình Bean cho Google Drive API 114
Hình 4.39: Xoá tệp bằng Google Drive API 114
Hình 4.40: Tải lên tệp bằng Google Drive API 114
Hình 4.41: Kiến trúc của MySQL 115
Hình 4.42: Sử dụng MySQL thiết kế cơ sở dữ liệu 116
Hình 5.1: Giao diện trang chủ 117
Hình 5.2: Giao diện đăng nhập 118
Hình 5.3: Giao diện đăng ký 119
Hình 5.4: Giao diện quên mật khẩu 120
Hình 5.5: Giao diện thanh trên 121
Hình 5.6: Giao diện thanh bên 122
Hình 5.7: Giao diện thông tin cá nhân 123
Hình 5.8: Giao diện chi tiết tài liệu 125
Hình 5.9: Giao diện danh sách tài liệu chính 127
Hình 5.10: Giao diện danh sách tài liệu đã thích 128
Hình 5.11: Giao diện danh sách tài liệu đã lưu 129
Hình 5.12: Giao diện danh sách tài liệu tải lên đã được duyệt 130
Hình 5.13: Giao diện danh sách tài liệu tải lên đang đợi duyệt 131
Hình 5.14: Giao diện danh sách tài liệu tải lên bị từ chối 132
Hình 5.15: Giao diện đăng tài liệu 133
Hình 5.16: Giao diện chỉnh sửa tài liệu 134
Hình 5.17: Giao diện danh sách tài liệu của một người 136
Hình 5.18: Giao diện đăng nhập 137
Hình 5.19: Giao diện quên mật khẩu 138
Hình 5.20: Giao diện thông tin cá nhân 140
Hình 5.21: Giao diện trang chủ quản trị 143
Hình 5.22: Giao diện danh sách tài liệu 144
Hình 5.23: Giao diện chi tiết tài liệu 146
Hình 5.24: Giao diện thêm tài liệu 147
Hình 5.25: Giao diện chỉnh sửa tài liệu 149
Hình 5.26: Giao diện xoá tài liệu 150
Hình 5.27: Giao diện danh sách danh mục 151
Hình 5.28: Giao diện thêm danh mục 153
Hình 5.29: Giao diện chỉnh sửa danh mục 154
Hình 5.30: Giao diện xoá danh mục 155
Hình 5.31: Giao diện danh sách lĩnh vực 156
Hình 5.32: Giao diện thêm lĩnh vực 158
Hình 5.33: Giao diện chỉnh sửa lĩnh vực 159
Hình 5.34: Giao diện xoá lĩnh vực 160
Hình 5.35: Giao diện danh sách trường 161
Hình 5.36: Giao diện thêm trường 163
Hình 5.37: Giao diện chỉnh sửa trường 164
Hình 5.38: Giao diện chỉnh sửa trường 165
Hình 5.39: Giao diện danh sách người dùng 166
Hình 5.40: Giao diện chi tiết người dùng 168
Hình 5.41: Giao diện thêm người dùng 170
Hình 5.42: Giao diện chỉnh sửa người dùng 172
Hình 5.43: Giao diện xoá người dùng 174
Hình 5.44: Giao diện danh sách tài liệu đang chờ 175
Hình 5.45: Giao diện phê duyệt tài liệu 176
Hình 5.46: Giao diện từ chối tài liệu 177
Hình 5.47: Giao diện danh sách đánh giá 178
Hình 5.48: Giao diện xoá đánh giá 179
Bảng 1.1: Nhận xét trang web Studocu 5
Bảng 1.2: Nhận xét thư viện số HCMUTE 7
Bảng 1.3: Danh sách chức năng chính 8
Bảng 1.4: Yêu cầu chức năng quản lý thông tin cá nhân 11
Bảng 1.5: Yêu cầu chức năng quản lý người dùng 12
Bảng 1.6: Yêu cầu chức năng quản lý tài liệu 12
Bảng 1.7: Yêu cầu chức năng quản lý danh mục 13
Bảng 1.8: Yêu cầu chức năng quản lý lĩnh vực 13
Bảng 1.9: Yêu cầu chức năng quản lý trường 14
Bảng 1.10: Yêu cầu chức năng quản lý đánh giá 14
Bảng 1.11: Danh sách yêu cầu chức năng hệ thống 14
Bảng 1.12: Danh sách yêu cầu phi chức năng 15
Bảng 2.1: Đặc tả chức năng đăng ký 20
Bảng 2.2: Đặc tả chức năng đăng nhập 21
Bảng 2.3: Đặc tả chức năng đăng xuất 22
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu 23
Bảng 2.5: Đặc tả chức năng đổi mật khẩu 25
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân 26
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân 27
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện 28
Bảng 2.9: Đặc tả chức năng đọc tài liệu 29
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu 30
Bảng 2.11: Đặc tả chức năng lọc tài liệu 31
Bảng 2.12: Đặc tả chức năng thích tài liệu 32
Bảng 2.13: Đặc tả chức năng lưu tài liệu 33
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu 34
Bảng 2.15: Đặc tả chức năng đăng tài liệu 35
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu 36
Bảng 2.17: Đặc tả chức năng xoá tài liệu 37
Bảng 2.18: Đặc tả chức năng thêm người dùng 38
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng 40Bảng 2.20: Đặc tả chức năng xoá người dùng 41Bảng 2.21: Đặc tả chức năng xoá đánh giá 43Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu 44Bảng 2.23: Đặc tả chức năng thêm trường 45Bảng 2.24: Đặc tả chức năng chỉnh sửa trường 46Bảng 2.25: Đặc tả chức năng xoá trường 47Bảng 2.26: Đặc tả chức năng kích hoạt trường 48Bảng 2.27: Đặc tả chức năng thêm danh mục 49Bảng 2.28: Đặc tả chức năng chỉnh sửa danh mục 50Bảng 2.29: Đặc tả chức năng xoá danh mục 51Bảng 2.30: Đặc tả chức năng kích hoạt lĩnh vực 53Bảng 2.31: Đặc tả chức năng thêm lĩnh vực 54Bảng 2.32: Đặc tả chức năng chỉnh sửa lĩnh vực 55Bảng 2.33: Đặc tả chức năng xoá lĩnh vực 56Bảng 2.34: Đặc tả chức năng kích hoạt lĩnh vực 57Bảng 2.35: Đặc tả chức năng thống kê 58Bảng 5.1: Bảng mô tả giao diện trang chủ 117Bảng 5.2: Bảng mô tả giao diện đăng nhập 118Bảng 5.3: Bảng mô tả giao diện đăng ký 119Bảng 5.4: Bảng mô tả giao diện quên mật khẩu 120Bảng 5.5: Bảng mô tả giao diện thanh trên 121Bảng 5.6: Bảng mô tả giao diện thanh bên 122Bảng 5.7: Bảng mô tả giao diện thông tin cá nhân 123Bảng 5.8: Bảng mô tả giao diện chi tiết tài liệu 125Bảng 5.9: Bảng mô tả giao diện danh sách tài liệu chính 127Bảng 5.10: Bảng mô tả giao diện danh sách tài liệu đã thích 128Bảng 5.11: Bảng mô tả giao diện danh sách tài liệu đã lưu 129Bảng 5.12: Bảng mô tả giao diện danh sách tài liệu tải lên đã được duyệt 130Bảng 5.13: Bảng mô tả giao diện danh sách tài liệu tải lên đang đợi duyệt 131Bảng 5.14: Bảng mô tả giao diện danh sách tài liệu tải lên bị từ chối 132Bảng 5.15: Bảng mô tả giao diện đăng tài liệu 133
Bảng 5.16: Bảng mô tả giao diện chỉnh sửa tài liệu 135Bảng 5.17: Bảng mô tả giao diện danh sách tài liệu của một người 136Bảng 5.18: Bảng mô tả giao diện đăng nhập 137Bảng 5.19: Bảng mô tả giao diện quên mật khẩu 138Bảng 5.20: Bảng mô tả giao diện thông tin cá nhân 141Bảng 5.21: Bảng mô tả giao diện trang chủ quản trị 143Bảng 5.22: Bảng mô tả giao diện danh sách tài liệu 145Bảng 5.23: Bảng mô tả giao diện chi tiết tài liệu 146Bảng 5.24: Bảng mô tả giao diện thêm tài liệu 148Bảng 5.25: Bảng mô tả giao diện chỉnh sửa tài liệu 149Bảng 5.26: Bảng mô tả giao diện xoá tài liệu 150Bảng 5.27: Bảng mô tả giao diện danh sách danh mục 151Bảng 5.28: Bảng mô tả giao diện thêm danh mục 153Bảng 5.29: Bảng mô tả giao diện chỉnh sửa danh mục 154Bảng 5.30: Bảng mô tả giao diện xoá danh mục 155Bảng 5.31: Bảng mô tả giao diện danh sách lĩnh vực 156Bảng 5.32: Bảng mô tả giao diện thêm lĩnh vực 158Bảng 5.33: Bảng mô tả giao diện chỉnh sửa lĩnh vực 159Bảng 5.34: Bảng mô tả giao diện xoá lĩnh vực 160Bảng 5.35: Bảng mô tả giao diện danh sách trường 161Bảng 5.36: Bảng mô tả giao diện thêm trường 163Bảng 5.37: Bảng mô tả giao diện chỉnh sửa trường 164Bảng 5.38: Bảng mô tả giao diện xoá trường 165Bảng 5.39: Bảng mô tả giao diện danh sách người dùng 166Bảng 5.40: Bảng mô tả giao diện chi tiết người dùng 168Bảng 5.41: Bảng mô tả giao diện thêm người dùng 171Bảng 5.42: Bảng mô tả giao diện chỉnh sửa người dùng 173Bảng 5.43: Bảng mô tả giao diện xoá người dùng 174Bảng 5.44: Bảng mô tả giao diện danh sách tài liệu đang chờ 175Bảng 5.45: Bảng mô tả giao diện phê duyệt tài liệu 176Bảng 5.46: Bảng mô tả giao diện từ chối tài liệu 177Bảng 5.47: Bảng mô tả giao diện danh sách đánh giá 178
Bảng 5.48: Bảng mô tả giao diện xoá đánh giá 179Bảng 6.1: Sản phẩm deploy 180Bảng 6.2: Lịch trình công việc 181Bảng 6.3: Chiến lược kiểm thử 182Bảng 6.4: Kết quả kiểm thử 183
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại ngày nay, công nghệ thông tin đã và đang phát triển nhanh chóng, mạnh mẽ trong tất cả các lĩnh vực đời sống Từ những bước tiến vượt bậc trong lĩnh vực máy tính, mạng lưới, đến sự bùng nổ của Internet và sự xuất hiện của trí tuệ nhân tạo, công nghệ thông tin dần chuyển đổi cách con người sống, làm việc và tương tác với nhau Đặc biệt, nó đã mở ra nhiều cơ hội mới trong việc chia sẻ và truy cập thông tin Giờ đây, con người có thể tiếp cận và sử dụng nguồn tài nguyên trên mạng từ xa, không giới hạn thời gian và địa điểm Điều này cũng mở ra tương lai cho các dịch vụ lưu trữ và cung cấp tài nguyên đến cho người dùng trực tuyến
Lĩnh vực giáo dục cũng chứng kiến sự thay đổi mạnh mẽ dưới tác động của công nghệ Các mô hình giảng dạy và học tập truyền thống dần dần chuyển đổi sang môi trường máy tính và trực tuyến Kèm theo đó là nhu cầu cho việc sử dụng các nguồn tài nguyên học tập tăng lên một cách mạnh mẽ Nếu như trước kia, khi muốn tìm hiểu và học tập về một nội dung, lĩnh vực nào đó, sinh viên sẽ cần phải có một bản tài liệu hoặc một cuốn sách bằng giấy Tuy nhiên, ngày nay, sinh viên hầu như có thể truy cập mạng Internet để tìm và sử dụng các tài liệu đó Điều này vừa tạo sự tiện lợi cho người học cũng như cung cấp khả năng tiếp cận kho tài liệu phong phú Tuy nhiên, việc học tập là không giới hạn ở chỉ mỗi một trường đại học Mỗi trường đại học sẽ có một nguồn tài liệu bổ ích và quý giá khác nhau Do đó, em nghĩ đến ý tưởng tạo một trang web tổng hợp và phân loại tài liệu theo các trường đại học, cao đẳng nhằm cung cấp một nguồn tài nguyên phong phú và bổ ích đến các sinh viên
Xuất phát từ ý tưởng đó, em xin thực hiện đề tài Xây dựng diễn đàn chia sẻ tài liệu cho sinh viên
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Mục đích của đề tài này là tạo nên một trang web diễn đàn cung cấp một kho tài liệu bổ ích và phong phú đến cho sinh viên, giúp cho sinh viên tiếp cận tài liệu học tập một cách tiện lợi và hiệu quả
- Đối tượng nghiên cứu Đề tài tập trung nghiên cứu những vấn đề sau:
Các kỹ thuật phân tích thiết kế hệ thống
Tìm hiểu về Spring Boot trên nền tảng Java để xây dựng API cho hệ thống
Tìm hiểu về React để xây dựng giao diện người dùng
Tìm hiểu về Google Drive API để lưu trữ tài liệu
Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ, phân loại
KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU
Danh sách yêu cầu phi chức năng
2 Chương 2: Mô hình hoá yêu cầu
3 Chương 3: Thiết kế phần mềm
4 Chương 4: Kiến trúc hệ thống
4.2 Các công nghệ được sử dụng
5 Chương 5: Thiết kế giao diện và xử lý
5.1 Sinh viên và người dùng khách
6 Chương 6: Cài đặt và kiểm thử
STT Thời gian Công việc Ghi chú
1 28/2/2024-6/3/2024 Tham khảo, xác định đề tài
2 6/3/2024-13/4/2024 Khảo sát, phân tích và xác định các yêu cầu của đề tài
3 13/3/2024-20/3/2024 Xây dựng lược đồ chức năng, đặc tả chức năng
4 20/3/2024- 27/3/2024 Xây dựng lược đồ tuần tự
5 27/3/2024- 3/4/2024 Thiết kế giao diện phần sinh viên và người dùng khách
6 3/4/2024 – 10/4/2024 Thiết kế và xây dựng cơ sở dữ liệu
8 17/4/2024-24/4/2024 Kết nối giao diện và back-end cho sinh viên và người dùng khách
9 24/4/2024-1/5/2024 Thiết kế giao diện phần quản lý và admin
10 1/5/2024 – 8/5/2024 Kết nối giao diện và back-end cho quản lý và admin
11 8/5/2024 -15/5/2024 Hoàn thiện các chức năng và bổ sung các chức năng bị thiếu
12 15/5/2024 – 22/5/2024 Kiểm thử lại trang web, sửa chữa lỗi
15 5/6/2024 – 28/6/2024 Chỉnh sửa báo cáo và làm
Vu Hoang Anh Ý kiến của giáo viên hướng dẫn
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2 MỤC ĐÍCH CỦA ĐỀ TÀI 1
CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 3
1.2 Khảo sát một số phần mềm 3
1.3 Phân tích yêu cầu của dự án 8
1.4 Yêu cầu chức năng nghiệp vụ 10
1.5 Danh sách yêu cầu chức năng nghiệp vụ 11
1.6 Danh sách yêu cầu chức năng hệ thống 14
1.7 Danh sách yêu cầu phi chức năng 15
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU 17
2.1.1 Lược đồ chức năng tổng quan 17
2.2.6 Xem thông tin cá nhân 26
2.2.7 Cập nhật thông tin cá nhân 27
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 59
3.1.6 Xem thông tin cá nhân 63
3.1.7 Cập nhật thông tin cá nhân 64
CHƯƠNG 4: KIẾN TRÚC HỆ THỐNG 90
4.1.2 Tương tác và giao tiếp giữa các thành phần 91
4.2 Các công nghệ và thư viện được sử dụng 91
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 117
5.1 Sinh viên và người dùng khách 117
5.1.9 Danh sách tài liệu chính 126
5.1.10 Danh sách tài liệu đã thích 128
5.1.11 Danh sách tài liệu đã lưu 129
5.1.12 Danh sách tài liệu đã tải lên đã được duyệt 130
5.1.13 Danh sách tài liệu đã tải lên đang đợi duyệt 131
5.1.14 Danh sách tài liệu đã tải lên bị từ chối 131
5.1.17 Danh sách tài liệu của một người 135
5.2.27 Danh sách tài liệu đang chờ 175
CHƯƠNG 6 CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ 180
6.1.2 Cài đặt với docker compose 180
DANH MỤC TÀI LIỆU THAM KHẢO 188
Hình 1.1: Trang chủ Studocu 4
Hình 1.2: Danh sách tài liệu theo trường học 4
Hình 1.3: Xem chi tiết tài liệu 5
Hình 1.4: Tải tài liệu lên 5
Hình 1.5: Trang chủ thư viện số HCMUTE 6
Hình 1.6: Chi tiết tài liệu 7
Hình 1.7: Tải tài liệu 7
Hình 2.1: Lược đồ chức năng 17
Hình 2.2: Chức năng quản lý thông tin cá nhân 17
Hình 2.3: Chức năng quản lý tài liệu 18
Hình 2.4: Chức năng quản lý người dùng 18
Hình 2.5: Chức năng quản lý danh mục 19
Hình 2.6: Chức năng quản lý lĩnh vực 19
Hình 2.7: Chức năng quản lý trường 20
Hình 3.1: Lược đồ tuần tự chức năng đăng ký 59
Hình 3.2: Lược đồ tuần tự chức năng đăng nhập 60
Hình 3.3: Lược đồ tuần tự chức năng đăng xuất 60
Hình 3.4: Lược đồ tuần tự chức năng lấy lại mật khẩu 61
Hình 3.5: Lược đồ tuần tự chức năng đổi mật khẩu 62
Hình 3.6: Lược đồ tuần tự chức năng xem thông tin cá nhân 63
Hình 3.7: Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 64
Hình 3.8: Lược đồ tuần tự chức năng đổi ảnh đại diện 65
Hình 3.9: Lược đồ tuần tự chức năng đọc tài liệu 65
Hình 3.10: Lược đồ tuần tự chức năng tìm kiếm tài liệu 66
Hình 3.11: Lược đồ tuần tự chức năng lọc tài liệu 66
Hình 3.12: Lược đồ tuần tự chức năng thích tài liệu 67
Hình 3.13: Lược đồ tuần tự chức năng lưu tài liệu 67
Hình 3.14: Lược đồ tuần tự chức năng đánh giá tài liệu 68
Hình 3.15: Lược đồ tuần tự chức năng đăng tài liệu 69
Hình 3.16: Lược đồ tuần tự chức năng chỉnh sửa tài liệu 70
Hình 3.17: Lược đồ tuần tự chức năng xoá tài liệu 71
Hình 3.18: Lược đồ tuần tự chức năng thêm người dùng 72
Hình 3.19: Lược đồ tuần tự chức năng chỉnh sửa người dùng 73
Hình 3.20: Lược đồ tuần tự chức năng xoá người dùng 74
Hình 3.21: Lược đồ tuần tự chức năng xoá đánh giá 75
Hình 3.22: Lược đồ tuần tự chức năng phê duyệt tài liệu 76
Hình 3.23: Lược đồ tuần tự chức năng thêm trường 77
Hình 3.24: Lược đồ tuần tự chức năng chỉnh sửa trường 78
Hình 3.25: Lược đồ tuần tự chức năng xoá trường 79
Hình 3.26: Lược đồ tuần tự chức năng kích hoạt trường 80
Hình 3.27: Lược đồ tuần tự chức năng thêm danh mục 81
Hình 3.28: Lược đồ tuần tự chức năng chỉnh sửa danh mục 82
Hình 3.29: Lược đồ tuần tự chức năng xoá danh mục 83
Hình 3.30: Lược đồ tuần tự chức năng kích hoạt danh mục 84
Hình 3.31: Lược đồ tuần tự chức năng thêm lĩnh vực 85
Hình 3.32: Lược đồ tuần tự chức năng chỉnh sửa lĩnh vực 86
Hình 3.33: Lược đồ tuần tự chức năng xoá lĩnh vực 87
Hình 3.34: Lược đồ tuần tự chức năng kích hoạt lĩnh vực 88
Hình 3.35: Lược đồ tuần tự chức năng thống kê 88
Hình 3.36: Lược đồ lớp của hệ thống 89
Hình 4.1: Kiến trúc tổng quan của hệ thống 90
Hình 4.2: Cấu trúc dự án Spring Boot đơn giản 92
Hình 4.3: Tạo dự án Spring Boot với Maven 93
Hình 4.4: Khai báo dependency trong pom.xml 94
Hình 4.5: Controller trong Spring Boot 94
Hình 4.6: Spring Boot và Tomcat 95
Hình 4.7: Thêm dependency Spring Security vào dự án 96
Hình 4.8: Cấu hình Filter Chain 97
Hình 4.9: Cấu hình xác thực 97
Hình 4.10: Thêm JWT Filter vào SecurityFilterChain 98
Hình 4.12: Tạo và trả JWT khi login 99
Hình 4.13: Repository interface trong Spring Data JPA 100
Hình 4.14: Truy vấn query tuỳ chỉnh 100
Hình 4.15: Thêm dependency của Spring Data JPA 101
Hình 4.16: Cấu hình kết nối MySQL trong application.yml 101
Hình 4.17: Tạo các entity classes 102
Hình 4.18: Kiến trúc ReactJS 103
Hình 4.19: Cấu trúc thư mục ReactJS 103
Hình 4.22: Minh hoạ tệp JSX 106
Hình 4.23: Ví dụ về useState 106
Hình 4.24: Ví dụ về useEffect 107
Hình 4.25: Chuyển hướng với useNavigate 107
Hình 4.26: Lấy đường dẫn hiện tại bằng useLocation 108
Hình 4.27: Truy xuất tham số từ URL với useParams 108
Hình 4.28: Minh hoạ props 108
Hình 4.29: Axios trong package.json 109
Hình 4.30: Sử dụng axios để gửi yêu cầu GET lấy tất cả danh mục 109
Hình 4.31: Tạo dự án Google Cloud 110
Hình 4.32: Giao diện APIs & Services 111
Hình 4.33: Kích hoạt Google Drive API 111
Hình 4.34: Giao diện Credentials để tạo service account 112
Hình 4.35: Tạo service account 112
Hình 4.37: Google Drive API dependency 113
Hình 4.38: Cấu hình Bean cho Google Drive API 114
Hình 4.39: Xoá tệp bằng Google Drive API 114
Hình 4.40: Tải lên tệp bằng Google Drive API 114
Hình 4.41: Kiến trúc của MySQL 115
Hình 4.42: Sử dụng MySQL thiết kế cơ sở dữ liệu 116
Hình 5.1: Giao diện trang chủ 117
Hình 5.2: Giao diện đăng nhập 118
Hình 5.3: Giao diện đăng ký 119
Hình 5.4: Giao diện quên mật khẩu 120
Hình 5.5: Giao diện thanh trên 121
Hình 5.6: Giao diện thanh bên 122
Hình 5.7: Giao diện thông tin cá nhân 123
Hình 5.8: Giao diện chi tiết tài liệu 125
Hình 5.9: Giao diện danh sách tài liệu chính 127
Hình 5.10: Giao diện danh sách tài liệu đã thích 128
Hình 5.11: Giao diện danh sách tài liệu đã lưu 129
Hình 5.12: Giao diện danh sách tài liệu tải lên đã được duyệt 130
Hình 5.13: Giao diện danh sách tài liệu tải lên đang đợi duyệt 131
Hình 5.14: Giao diện danh sách tài liệu tải lên bị từ chối 132
Hình 5.15: Giao diện đăng tài liệu 133
Hình 5.16: Giao diện chỉnh sửa tài liệu 134
Hình 5.17: Giao diện danh sách tài liệu của một người 136
Hình 5.18: Giao diện đăng nhập 137
Hình 5.19: Giao diện quên mật khẩu 138
Hình 5.20: Giao diện thông tin cá nhân 140
Hình 5.21: Giao diện trang chủ quản trị 143
Hình 5.22: Giao diện danh sách tài liệu 144
Hình 5.23: Giao diện chi tiết tài liệu 146
Hình 5.24: Giao diện thêm tài liệu 147
Hình 5.25: Giao diện chỉnh sửa tài liệu 149
Hình 5.26: Giao diện xoá tài liệu 150
Hình 5.27: Giao diện danh sách danh mục 151
Hình 5.28: Giao diện thêm danh mục 153
Hình 5.29: Giao diện chỉnh sửa danh mục 154
Hình 5.30: Giao diện xoá danh mục 155
Hình 5.31: Giao diện danh sách lĩnh vực 156
Hình 5.32: Giao diện thêm lĩnh vực 158
Hình 5.33: Giao diện chỉnh sửa lĩnh vực 159
Hình 5.34: Giao diện xoá lĩnh vực 160
Hình 5.35: Giao diện danh sách trường 161
Hình 5.36: Giao diện thêm trường 163
Hình 5.37: Giao diện chỉnh sửa trường 164
Hình 5.38: Giao diện chỉnh sửa trường 165
Hình 5.39: Giao diện danh sách người dùng 166
Hình 5.40: Giao diện chi tiết người dùng 168
Hình 5.41: Giao diện thêm người dùng 170
Hình 5.42: Giao diện chỉnh sửa người dùng 172
Hình 5.43: Giao diện xoá người dùng 174
Hình 5.44: Giao diện danh sách tài liệu đang chờ 175
Hình 5.45: Giao diện phê duyệt tài liệu 176
Hình 5.46: Giao diện từ chối tài liệu 177
Hình 5.47: Giao diện danh sách đánh giá 178
Hình 5.48: Giao diện xoá đánh giá 179
Bảng 1.1: Nhận xét trang web Studocu 5
Bảng 1.2: Nhận xét thư viện số HCMUTE 7
Bảng 1.3: Danh sách chức năng chính 8
Bảng 1.4: Yêu cầu chức năng quản lý thông tin cá nhân 11
Bảng 1.5: Yêu cầu chức năng quản lý người dùng 12
Bảng 1.6: Yêu cầu chức năng quản lý tài liệu 12
Bảng 1.7: Yêu cầu chức năng quản lý danh mục 13
Bảng 1.8: Yêu cầu chức năng quản lý lĩnh vực 13
Bảng 1.9: Yêu cầu chức năng quản lý trường 14
Bảng 1.10: Yêu cầu chức năng quản lý đánh giá 14
Bảng 1.11: Danh sách yêu cầu chức năng hệ thống 14
Bảng 1.12: Danh sách yêu cầu phi chức năng 15
Bảng 2.1: Đặc tả chức năng đăng ký 20
Bảng 2.2: Đặc tả chức năng đăng nhập 21
Bảng 2.3: Đặc tả chức năng đăng xuất 22
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu 23
Bảng 2.5: Đặc tả chức năng đổi mật khẩu 25
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân 26
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân 27
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện 28
Bảng 2.9: Đặc tả chức năng đọc tài liệu 29
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu 30
Bảng 2.11: Đặc tả chức năng lọc tài liệu 31
Bảng 2.12: Đặc tả chức năng thích tài liệu 32
Bảng 2.13: Đặc tả chức năng lưu tài liệu 33
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu 34
Bảng 2.15: Đặc tả chức năng đăng tài liệu 35
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu 36
Bảng 2.17: Đặc tả chức năng xoá tài liệu 37
Bảng 2.18: Đặc tả chức năng thêm người dùng 38
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng 40Bảng 2.20: Đặc tả chức năng xoá người dùng 41Bảng 2.21: Đặc tả chức năng xoá đánh giá 43Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu 44Bảng 2.23: Đặc tả chức năng thêm trường 45Bảng 2.24: Đặc tả chức năng chỉnh sửa trường 46Bảng 2.25: Đặc tả chức năng xoá trường 47Bảng 2.26: Đặc tả chức năng kích hoạt trường 48Bảng 2.27: Đặc tả chức năng thêm danh mục 49Bảng 2.28: Đặc tả chức năng chỉnh sửa danh mục 50Bảng 2.29: Đặc tả chức năng xoá danh mục 51Bảng 2.30: Đặc tả chức năng kích hoạt lĩnh vực 53Bảng 2.31: Đặc tả chức năng thêm lĩnh vực 54Bảng 2.32: Đặc tả chức năng chỉnh sửa lĩnh vực 55Bảng 2.33: Đặc tả chức năng xoá lĩnh vực 56Bảng 2.34: Đặc tả chức năng kích hoạt lĩnh vực 57Bảng 2.35: Đặc tả chức năng thống kê 58Bảng 5.1: Bảng mô tả giao diện trang chủ 117Bảng 5.2: Bảng mô tả giao diện đăng nhập 118Bảng 5.3: Bảng mô tả giao diện đăng ký 119Bảng 5.4: Bảng mô tả giao diện quên mật khẩu 120Bảng 5.5: Bảng mô tả giao diện thanh trên 121Bảng 5.6: Bảng mô tả giao diện thanh bên 122Bảng 5.7: Bảng mô tả giao diện thông tin cá nhân 123Bảng 5.8: Bảng mô tả giao diện chi tiết tài liệu 125Bảng 5.9: Bảng mô tả giao diện danh sách tài liệu chính 127Bảng 5.10: Bảng mô tả giao diện danh sách tài liệu đã thích 128Bảng 5.11: Bảng mô tả giao diện danh sách tài liệu đã lưu 129Bảng 5.12: Bảng mô tả giao diện danh sách tài liệu tải lên đã được duyệt 130Bảng 5.13: Bảng mô tả giao diện danh sách tài liệu tải lên đang đợi duyệt 131Bảng 5.14: Bảng mô tả giao diện danh sách tài liệu tải lên bị từ chối 132Bảng 5.15: Bảng mô tả giao diện đăng tài liệu 133
Bảng 5.16: Bảng mô tả giao diện chỉnh sửa tài liệu 135Bảng 5.17: Bảng mô tả giao diện danh sách tài liệu của một người 136Bảng 5.18: Bảng mô tả giao diện đăng nhập 137Bảng 5.19: Bảng mô tả giao diện quên mật khẩu 138Bảng 5.20: Bảng mô tả giao diện thông tin cá nhân 141Bảng 5.21: Bảng mô tả giao diện trang chủ quản trị 143Bảng 5.22: Bảng mô tả giao diện danh sách tài liệu 145Bảng 5.23: Bảng mô tả giao diện chi tiết tài liệu 146Bảng 5.24: Bảng mô tả giao diện thêm tài liệu 148Bảng 5.25: Bảng mô tả giao diện chỉnh sửa tài liệu 149Bảng 5.26: Bảng mô tả giao diện xoá tài liệu 150Bảng 5.27: Bảng mô tả giao diện danh sách danh mục 151Bảng 5.28: Bảng mô tả giao diện thêm danh mục 153Bảng 5.29: Bảng mô tả giao diện chỉnh sửa danh mục 154Bảng 5.30: Bảng mô tả giao diện xoá danh mục 155Bảng 5.31: Bảng mô tả giao diện danh sách lĩnh vực 156Bảng 5.32: Bảng mô tả giao diện thêm lĩnh vực 158Bảng 5.33: Bảng mô tả giao diện chỉnh sửa lĩnh vực 159Bảng 5.34: Bảng mô tả giao diện xoá lĩnh vực 160Bảng 5.35: Bảng mô tả giao diện danh sách trường 161Bảng 5.36: Bảng mô tả giao diện thêm trường 163Bảng 5.37: Bảng mô tả giao diện chỉnh sửa trường 164Bảng 5.38: Bảng mô tả giao diện xoá trường 165Bảng 5.39: Bảng mô tả giao diện danh sách người dùng 166Bảng 5.40: Bảng mô tả giao diện chi tiết người dùng 168Bảng 5.41: Bảng mô tả giao diện thêm người dùng 171Bảng 5.42: Bảng mô tả giao diện chỉnh sửa người dùng 173Bảng 5.43: Bảng mô tả giao diện xoá người dùng 174Bảng 5.44: Bảng mô tả giao diện danh sách tài liệu đang chờ 175Bảng 5.45: Bảng mô tả giao diện phê duyệt tài liệu 176Bảng 5.46: Bảng mô tả giao diện từ chối tài liệu 177Bảng 5.47: Bảng mô tả giao diện danh sách đánh giá 178
Bảng 5.48: Bảng mô tả giao diện xoá đánh giá 179Bảng 6.1: Sản phẩm deploy 180Bảng 6.2: Lịch trình công việc 181Bảng 6.3: Chiến lược kiểm thử 182Bảng 6.4: Kết quả kiểm thử 183
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại ngày nay, công nghệ thông tin đã và đang phát triển nhanh chóng, mạnh mẽ trong tất cả các lĩnh vực đời sống Từ những bước tiến vượt bậc trong lĩnh vực máy tính, mạng lưới, đến sự bùng nổ của Internet và sự xuất hiện của trí tuệ nhân tạo, công nghệ thông tin dần chuyển đổi cách con người sống, làm việc và tương tác với nhau Đặc biệt, nó đã mở ra nhiều cơ hội mới trong việc chia sẻ và truy cập thông tin Giờ đây, con người có thể tiếp cận và sử dụng nguồn tài nguyên trên mạng từ xa, không giới hạn thời gian và địa điểm Điều này cũng mở ra tương lai cho các dịch vụ lưu trữ và cung cấp tài nguyên đến cho người dùng trực tuyến
Lĩnh vực giáo dục cũng chứng kiến sự thay đổi mạnh mẽ dưới tác động của công nghệ Các mô hình giảng dạy và học tập truyền thống dần dần chuyển đổi sang môi trường máy tính và trực tuyến Kèm theo đó là nhu cầu cho việc sử dụng các nguồn tài nguyên học tập tăng lên một cách mạnh mẽ Nếu như trước kia, khi muốn tìm hiểu và học tập về một nội dung, lĩnh vực nào đó, sinh viên sẽ cần phải có một bản tài liệu hoặc một cuốn sách bằng giấy Tuy nhiên, ngày nay, sinh viên hầu như có thể truy cập mạng Internet để tìm và sử dụng các tài liệu đó Điều này vừa tạo sự tiện lợi cho người học cũng như cung cấp khả năng tiếp cận kho tài liệu phong phú Tuy nhiên, việc học tập là không giới hạn ở chỉ mỗi một trường đại học Mỗi trường đại học sẽ có một nguồn tài liệu bổ ích và quý giá khác nhau Do đó, em nghĩ đến ý tưởng tạo một trang web tổng hợp và phân loại tài liệu theo các trường đại học, cao đẳng nhằm cung cấp một nguồn tài nguyên phong phú và bổ ích đến các sinh viên
Xuất phát từ ý tưởng đó, em xin thực hiện đề tài Xây dựng diễn đàn chia sẻ tài liệu cho sinh viên
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Mục đích của đề tài này là tạo nên một trang web diễn đàn cung cấp một kho tài liệu bổ ích và phong phú đến cho sinh viên, giúp cho sinh viên tiếp cận tài liệu học tập một cách tiện lợi và hiệu quả
- Đối tượng nghiên cứu Đề tài tập trung nghiên cứu những vấn đề sau:
Các kỹ thuật phân tích thiết kế hệ thống
Tìm hiểu về Spring Boot trên nền tảng Java để xây dựng API cho hệ thống
Tìm hiểu về React để xây dựng giao diện người dùng
Tìm hiểu về Google Drive API để lưu trữ tài liệu
Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ, phân loại
PHẦN NỘI DUNG CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 1.1 Phân tích hiện trạng
Ngày nay, Internet đã và đang phát triển một cách chóng mặt và trở nên rất phổ biến Sự tiện lợi mà Internet mang lại trong các lĩnh vực đời sống và xã hội là điều không thể phủ nhận Trong đó, nhu cầu sử dụng và truy cập nguồn tài liệu học tập trên Internet là rất là lớn Internet cung cấp một lượng tài liệu khổng lồ và cực kỳ đa dạng cho học sinh, sinh viên sử dụng Trong số đó, có hàng nghìn, hàng chục nghìn trang web chuyên về cung cấp tài liệu đến cho người học
Nhìn chung, các trang web cung cấp lượng tài liệu đa dạng ở nhiều lĩnh vực và thể loại khác nhau Tuy nhiên, điều này cũng đặt ra một số thách thức và vấn đề:
- Không phải tất cả các nguồn tài liệu trên Internet đều đảm bảo về chất lượng và tính tin cậy Có rất nhiều tài liệu không chính xác hoặc không được kiểm chứng một cách đầy đủ
- Một số trang web yêu cầu người sử dụng trả phí để có quyền truy cập đầy đủ nội dung
- Một số trang web chứa quảng cáo gây làm phiền và ảnh hưởng đến trải nghiệm người dùng
- Người học cần phải có kỹ năng tìm kiếm trên Internet để có thể tận dụng tối đa nguồn tài liệu
1.2 Khảo sát một số phần mềm
Đường dẫn trang web: https://www.studocu.com/
Hình 0.1: Trang chủ Studocu
Hình 0.1.: Danh sách tài liệu theo trường học
Hình 0.3: Xem chi tiết tài liệu
Hình 0.4: Tải tài liệu lên
Bảng 0.1: Nhận xét trang web Studocu
- Tìm kiếm khoá học, sách, tài liệu
- Nguồn tài liệu chưa được kiểm soát chặt chẽ
- Tải lên và chia sẻ tài liệu
- Thích, bỏ thích, bình luận, lưu, chia sẻ lên mạng xã hội
- Đăng ký Premium để truy cập các tính năng như tài liệu nâng cao, tải, in tài liệu
Đường dẫn trang web: https://thuvienso.hcmute.edu.vn/
Hình 0.5: Trang chủ thư viện số HCMUTE
Hình 0.7: Chi tiết tài liệu
Hình 0.8: Tải tài liệu
Bảng 0.1: Nhận xét thư viện số HCMUTE
- Tìm kiếm sách, tài liệu
- Chủ yếu là tài liệu liên quan đến Trường Đại học Sư phạm Kỹ thuật
- Tải lên và chia sẻ tài liệu
- Thích, bình chọn, bình luận, chia sẻ lên mạng xã hội
1.3 Phân tích yêu cầu của dự án
Xây dựng một trang web để chia sẻ tài liệu học tập cho sinh viên giữa các trường đại học, cao đẳng Người dùng có thể tìm đọc và chia sẻ tài liệu của mình với những người khác Ngoài ra, hệ thống còn được quản lý bởi admin và người quản lý nhằm kiểm soát nguồn tài liệu được chia sẻ Các chức năng chính của chương trình bao gồm:
Bảng 0.2.3.: Danh sách chức năng chính Đối tượng sử dụng Các chức năng thực hiện
Sinh viên Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đọc tài liệu
Tìm kiếm tài liệu Thích tài liệu Lưu tài liệu Đánh giá tài liệu
9 Đăng tài liệu Cập nhật tài liệu Xoá tài liệu
Quản lý Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu cho trường Cập nhật tài liệu của trường Xoá tài liệu của trường Thêm người dùng cho trường Cập nhật người dùng của trường Xoá người dùng của trường Xoá đánh giá của trường Phê duyệt tài liệu của trường
Admin Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu
Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu
Cập nhật tài liệu Xoá tài liệu Thêm người dùng Cập nhật người dùng Xoá người dùng Thêm trường Cập nhật trường Xoá trường Kích hoạt trường Thêm danh mục Cập nhật danh mục Xoá danh mục Kích hoạt danh mục Thêm lĩnh vực Cập nhật lĩnh vực Xoá lĩnh vực Kích hoạt lĩnh vực Phê duyệt tài liệu Thống kê
1.4 Yêu cầu chức năng nghiệp vụ
1.5 Danh sách yêu cầu chức năng nghiệp vụ
Quản lý thông tin cá nhân
Bảng 0.2: Yêu cầu chức năng quản lý thông tin cá nhân
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin cá nhân Tra cứu
2 Cập nhật thông tin cá nhân Lưu trữ
Bảng 0.3: Yêu cầu chức năng quản lý người dùng
Bảng 0.4: Yêu cầu chức năng quản lý tài liệu
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin người dùng Tra cứu
2 Cập nhật thông tin người dùng Lưu trữ
3 Xoá người dùng Lưu trữ
4 Số lượng người dùng Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem tài liệu Tra cứu
2 Tìm kiếm tài liệu Tra cứu
3 Đăng tài liệu Lưu trữ
4 Cập nhật tài liệu Lưu trữ
5 Xoá tài liệu Lưu trữ
6 Thích tài liệu Lưu trữ
Bảng 0.5: Yêu cầu chức năng quản lý danh mục
Bảng 0.6: Yêu cầu chức năng quản lý lĩnh vực
7 Lưu tài liệu Lưu trữ
8 Đánh giá tài liệu Lưu trữ
9 Phê duyệt tài liệu Lưu trữ
10 Số lượng tài liệu Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem danh mục Tra cứu
2 Cập nhật danh mục Lưu trữ
3 Xoá danh mục Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem lĩnh vực Tra cứu
2 Cập nhật lĩnh vực Lưu trữ
3 Xoá lĩnh vực Lưu trữ
Bảng 0.7: Yêu cầu chức năng quản lý trường
Bảng 0.8: Yêu cầu chức năng quản lý đánh giá
1.6 Danh sách yêu cầu chức năng hệ thống
Bảng 0.9: Danh sách yêu cầu chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
2 Cập nhật trường Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem đánh giá Tra cứu
2 Xoá đánh giá Lưu trữ
3 Đánh giá trung bình Tính toán
- Sinh viên: tìm kiếm, đọc tài liệu; thích, lưu, đánh giá tài liệu; đăng, cập nhật, xoá tài liệu
- Quản lý: đăng, cập nhật, xoá tài liệu của trường; thêm, cập nhật, xoá người dùng của trường; phê duyệt tài liệu của trường; xoá đánh giá của tài liệu thuộc trường
- Admin: đăng, cập nhật, xoá tài liệu; thêm, cập nhật, xoá người dùng; thêm, cập nhật, xoá, kích hoạt danh mục; thêm, cập nhật, xoá, kích hoạt lĩnh vực; thêm, cập nhật, xoá, kích hoạt trường; phê duyệt tài liệu; thống kê
Hệ thống đảm bảo tài nguyên và dịch vụ chỉ được truy cập được bởi những tác nhân và người dùng nhất định
Cơ sở dữ liệu được sao lưu định kỳ, mã nguồn có khả năng khôi phục sao lưu nhanh
4 Thông báo Thông báo cho người dùng khi cần thiết: hoạt động thành công, thất bại,…
1.7 Danh sách yêu cầu phi chức năng
Bảng 0.10: Danh sách yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết
1 Tốc độ xử lý quá trình tương tác của người dùng Hiệu quả Có thể truy cập trực tuyến nhiều người cùng một lúc
2 Tốc độ tìm kiếm nhanh và chính xác Hiệu quả Tối đa 5s có kết quả tìm kiếm
Tiết kiệm thời gian, tối ưu được cơ sở dữ liệu, thu hẹp không gian, tránh mất dữ liệu
Tiết kiệm thời gian so với quản lý thủ công Dữ liệu được sao lưu trên máy, có thể phục hồi
4 Dễ dàng bảo trì, nâng cấp và phát triển Cải tiến
Có khả năng mở rộng và thêm các tính năng mới dễ dàng mà không làm phá vỡ cấu trúc hệ thống
5 Giao diện thân thiện, màu sắc đa dạng và rõ nét Tiện dụng
Giao diện dễ dàng cho người dùng sử dụng và tạo cảm giác hiện đại
6 Thao tác dễ dùng Tiện dụng Các thao tác đơn giản, gần gũi với người dùng
MÔ HÌNH HOÁ YÊU CẦU
Đặc tả chức năng
3 Chương 3: Thiết kế phần mềm
4 Chương 4: Kiến trúc hệ thống
4.2 Các công nghệ được sử dụng
5 Chương 5: Thiết kế giao diện và xử lý
5.1 Sinh viên và người dùng khách
6 Chương 6: Cài đặt và kiểm thử
STT Thời gian Công việc Ghi chú
1 28/2/2024-6/3/2024 Tham khảo, xác định đề tài
2 6/3/2024-13/4/2024 Khảo sát, phân tích và xác định các yêu cầu của đề tài
3 13/3/2024-20/3/2024 Xây dựng lược đồ chức năng, đặc tả chức năng
4 20/3/2024- 27/3/2024 Xây dựng lược đồ tuần tự
5 27/3/2024- 3/4/2024 Thiết kế giao diện phần sinh viên và người dùng khách
6 3/4/2024 – 10/4/2024 Thiết kế và xây dựng cơ sở dữ liệu
8 17/4/2024-24/4/2024 Kết nối giao diện và back-end cho sinh viên và người dùng khách
9 24/4/2024-1/5/2024 Thiết kế giao diện phần quản lý và admin
10 1/5/2024 – 8/5/2024 Kết nối giao diện và back-end cho quản lý và admin
11 8/5/2024 -15/5/2024 Hoàn thiện các chức năng và bổ sung các chức năng bị thiếu
12 15/5/2024 – 22/5/2024 Kiểm thử lại trang web, sửa chữa lỗi
15 5/6/2024 – 28/6/2024 Chỉnh sửa báo cáo và làm
Vu Hoang Anh Ý kiến của giáo viên hướng dẫn
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2 MỤC ĐÍCH CỦA ĐỀ TÀI 1
CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 3
1.2 Khảo sát một số phần mềm 3
1.3 Phân tích yêu cầu của dự án 8
1.4 Yêu cầu chức năng nghiệp vụ 10
1.5 Danh sách yêu cầu chức năng nghiệp vụ 11
1.6 Danh sách yêu cầu chức năng hệ thống 14
1.7 Danh sách yêu cầu phi chức năng 15
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU 17
2.1.1 Lược đồ chức năng tổng quan 17
2.2.6 Xem thông tin cá nhân 26
2.2.7 Cập nhật thông tin cá nhân 27
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 59
3.1.6 Xem thông tin cá nhân 63
3.1.7 Cập nhật thông tin cá nhân 64
CHƯƠNG 4: KIẾN TRÚC HỆ THỐNG 90
4.1.2 Tương tác và giao tiếp giữa các thành phần 91
4.2 Các công nghệ và thư viện được sử dụng 91
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 117
5.1 Sinh viên và người dùng khách 117
5.1.9 Danh sách tài liệu chính 126
5.1.10 Danh sách tài liệu đã thích 128
5.1.11 Danh sách tài liệu đã lưu 129
5.1.12 Danh sách tài liệu đã tải lên đã được duyệt 130
5.1.13 Danh sách tài liệu đã tải lên đang đợi duyệt 131
5.1.14 Danh sách tài liệu đã tải lên bị từ chối 131
5.1.17 Danh sách tài liệu của một người 135
5.2.27 Danh sách tài liệu đang chờ 175
CHƯƠNG 6 CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ 180
6.1.2 Cài đặt với docker compose 180
DANH MỤC TÀI LIỆU THAM KHẢO 188
Hình 1.1: Trang chủ Studocu 4
Hình 1.2: Danh sách tài liệu theo trường học 4
Hình 1.3: Xem chi tiết tài liệu 5
Hình 1.4: Tải tài liệu lên 5
Hình 1.5: Trang chủ thư viện số HCMUTE 6
Hình 1.6: Chi tiết tài liệu 7
Hình 1.7: Tải tài liệu 7
Hình 2.1: Lược đồ chức năng 17
Hình 2.2: Chức năng quản lý thông tin cá nhân 17
Hình 2.3: Chức năng quản lý tài liệu 18
Hình 2.4: Chức năng quản lý người dùng 18
Hình 2.5: Chức năng quản lý danh mục 19
Hình 2.6: Chức năng quản lý lĩnh vực 19
Hình 2.7: Chức năng quản lý trường 20
Hình 3.1: Lược đồ tuần tự chức năng đăng ký 59
Hình 3.2: Lược đồ tuần tự chức năng đăng nhập 60
Hình 3.3: Lược đồ tuần tự chức năng đăng xuất 60
Hình 3.4: Lược đồ tuần tự chức năng lấy lại mật khẩu 61
Hình 3.5: Lược đồ tuần tự chức năng đổi mật khẩu 62
Hình 3.6: Lược đồ tuần tự chức năng xem thông tin cá nhân 63
Hình 3.7: Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 64
Hình 3.8: Lược đồ tuần tự chức năng đổi ảnh đại diện 65
Hình 3.9: Lược đồ tuần tự chức năng đọc tài liệu 65
Hình 3.10: Lược đồ tuần tự chức năng tìm kiếm tài liệu 66
Hình 3.11: Lược đồ tuần tự chức năng lọc tài liệu 66
Hình 3.12: Lược đồ tuần tự chức năng thích tài liệu 67
Hình 3.13: Lược đồ tuần tự chức năng lưu tài liệu 67
Hình 3.14: Lược đồ tuần tự chức năng đánh giá tài liệu 68
Hình 3.15: Lược đồ tuần tự chức năng đăng tài liệu 69
Hình 3.16: Lược đồ tuần tự chức năng chỉnh sửa tài liệu 70
Hình 3.17: Lược đồ tuần tự chức năng xoá tài liệu 71
Hình 3.18: Lược đồ tuần tự chức năng thêm người dùng 72
Hình 3.19: Lược đồ tuần tự chức năng chỉnh sửa người dùng 73
Hình 3.20: Lược đồ tuần tự chức năng xoá người dùng 74
Hình 3.21: Lược đồ tuần tự chức năng xoá đánh giá 75
Hình 3.22: Lược đồ tuần tự chức năng phê duyệt tài liệu 76
Hình 3.23: Lược đồ tuần tự chức năng thêm trường 77
Hình 3.24: Lược đồ tuần tự chức năng chỉnh sửa trường 78
Hình 3.25: Lược đồ tuần tự chức năng xoá trường 79
Hình 3.26: Lược đồ tuần tự chức năng kích hoạt trường 80
Hình 3.27: Lược đồ tuần tự chức năng thêm danh mục 81
Hình 3.28: Lược đồ tuần tự chức năng chỉnh sửa danh mục 82
Hình 3.29: Lược đồ tuần tự chức năng xoá danh mục 83
Hình 3.30: Lược đồ tuần tự chức năng kích hoạt danh mục 84
Hình 3.31: Lược đồ tuần tự chức năng thêm lĩnh vực 85
Hình 3.32: Lược đồ tuần tự chức năng chỉnh sửa lĩnh vực 86
Hình 3.33: Lược đồ tuần tự chức năng xoá lĩnh vực 87
Hình 3.34: Lược đồ tuần tự chức năng kích hoạt lĩnh vực 88
Hình 3.35: Lược đồ tuần tự chức năng thống kê 88
Hình 3.36: Lược đồ lớp của hệ thống 89
Hình 4.1: Kiến trúc tổng quan của hệ thống 90
Hình 4.2: Cấu trúc dự án Spring Boot đơn giản 92
Hình 4.3: Tạo dự án Spring Boot với Maven 93
Hình 4.4: Khai báo dependency trong pom.xml 94
Hình 4.5: Controller trong Spring Boot 94
Hình 4.6: Spring Boot và Tomcat 95
Hình 4.7: Thêm dependency Spring Security vào dự án 96
Hình 4.8: Cấu hình Filter Chain 97
Hình 4.9: Cấu hình xác thực 97
Hình 4.10: Thêm JWT Filter vào SecurityFilterChain 98
Hình 4.12: Tạo và trả JWT khi login 99
Hình 4.13: Repository interface trong Spring Data JPA 100
Hình 4.14: Truy vấn query tuỳ chỉnh 100
Hình 4.15: Thêm dependency của Spring Data JPA 101
Hình 4.16: Cấu hình kết nối MySQL trong application.yml 101
Hình 4.17: Tạo các entity classes 102
Hình 4.18: Kiến trúc ReactJS 103
Hình 4.19: Cấu trúc thư mục ReactJS 103
Hình 4.22: Minh hoạ tệp JSX 106
Hình 4.23: Ví dụ về useState 106
Hình 4.24: Ví dụ về useEffect 107
Hình 4.25: Chuyển hướng với useNavigate 107
Hình 4.26: Lấy đường dẫn hiện tại bằng useLocation 108
Hình 4.27: Truy xuất tham số từ URL với useParams 108
Hình 4.28: Minh hoạ props 108
Hình 4.29: Axios trong package.json 109
Hình 4.30: Sử dụng axios để gửi yêu cầu GET lấy tất cả danh mục 109
Hình 4.31: Tạo dự án Google Cloud 110
Hình 4.32: Giao diện APIs & Services 111
Hình 4.33: Kích hoạt Google Drive API 111
Hình 4.34: Giao diện Credentials để tạo service account 112
Hình 4.35: Tạo service account 112
Hình 4.37: Google Drive API dependency 113
Hình 4.38: Cấu hình Bean cho Google Drive API 114
Hình 4.39: Xoá tệp bằng Google Drive API 114
Hình 4.40: Tải lên tệp bằng Google Drive API 114
Hình 4.41: Kiến trúc của MySQL 115
Hình 4.42: Sử dụng MySQL thiết kế cơ sở dữ liệu 116
Hình 5.1: Giao diện trang chủ 117
Hình 5.2: Giao diện đăng nhập 118
Hình 5.3: Giao diện đăng ký 119
Hình 5.4: Giao diện quên mật khẩu 120
Hình 5.5: Giao diện thanh trên 121
Hình 5.6: Giao diện thanh bên 122
Hình 5.7: Giao diện thông tin cá nhân 123
Hình 5.8: Giao diện chi tiết tài liệu 125
Hình 5.9: Giao diện danh sách tài liệu chính 127
Hình 5.10: Giao diện danh sách tài liệu đã thích 128
Hình 5.11: Giao diện danh sách tài liệu đã lưu 129
Hình 5.12: Giao diện danh sách tài liệu tải lên đã được duyệt 130
Hình 5.13: Giao diện danh sách tài liệu tải lên đang đợi duyệt 131
Hình 5.14: Giao diện danh sách tài liệu tải lên bị từ chối 132
Hình 5.15: Giao diện đăng tài liệu 133
Hình 5.16: Giao diện chỉnh sửa tài liệu 134
Hình 5.17: Giao diện danh sách tài liệu của một người 136
Hình 5.18: Giao diện đăng nhập 137
Hình 5.19: Giao diện quên mật khẩu 138
Hình 5.20: Giao diện thông tin cá nhân 140
Hình 5.21: Giao diện trang chủ quản trị 143
Hình 5.22: Giao diện danh sách tài liệu 144
Hình 5.23: Giao diện chi tiết tài liệu 146
Hình 5.24: Giao diện thêm tài liệu 147
Hình 5.25: Giao diện chỉnh sửa tài liệu 149
Hình 5.26: Giao diện xoá tài liệu 150
Hình 5.27: Giao diện danh sách danh mục 151
Hình 5.28: Giao diện thêm danh mục 153
Hình 5.29: Giao diện chỉnh sửa danh mục 154
Hình 5.30: Giao diện xoá danh mục 155
Hình 5.31: Giao diện danh sách lĩnh vực 156
Hình 5.32: Giao diện thêm lĩnh vực 158
Hình 5.33: Giao diện chỉnh sửa lĩnh vực 159
Hình 5.34: Giao diện xoá lĩnh vực 160
Hình 5.35: Giao diện danh sách trường 161
Hình 5.36: Giao diện thêm trường 163
Hình 5.37: Giao diện chỉnh sửa trường 164
Hình 5.38: Giao diện chỉnh sửa trường 165
Hình 5.39: Giao diện danh sách người dùng 166
Hình 5.40: Giao diện chi tiết người dùng 168
Hình 5.41: Giao diện thêm người dùng 170
Hình 5.42: Giao diện chỉnh sửa người dùng 172
Hình 5.43: Giao diện xoá người dùng 174
Hình 5.44: Giao diện danh sách tài liệu đang chờ 175
Hình 5.45: Giao diện phê duyệt tài liệu 176
Hình 5.46: Giao diện từ chối tài liệu 177
Hình 5.47: Giao diện danh sách đánh giá 178
Hình 5.48: Giao diện xoá đánh giá 179
Bảng 1.1: Nhận xét trang web Studocu 5
Bảng 1.2: Nhận xét thư viện số HCMUTE 7
Bảng 1.3: Danh sách chức năng chính 8
Bảng 1.4: Yêu cầu chức năng quản lý thông tin cá nhân 11
Bảng 1.5: Yêu cầu chức năng quản lý người dùng 12
Bảng 1.6: Yêu cầu chức năng quản lý tài liệu 12
Bảng 1.7: Yêu cầu chức năng quản lý danh mục 13
Bảng 1.8: Yêu cầu chức năng quản lý lĩnh vực 13
Bảng 1.9: Yêu cầu chức năng quản lý trường 14
Bảng 1.10: Yêu cầu chức năng quản lý đánh giá 14
Bảng 1.11: Danh sách yêu cầu chức năng hệ thống 14
Bảng 1.12: Danh sách yêu cầu phi chức năng 15
Bảng 2.1: Đặc tả chức năng đăng ký 20
Bảng 2.2: Đặc tả chức năng đăng nhập 21
Bảng 2.3: Đặc tả chức năng đăng xuất 22
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu 23
Bảng 2.5: Đặc tả chức năng đổi mật khẩu 25
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân 26
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân 27
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện 28
Bảng 2.9: Đặc tả chức năng đọc tài liệu 29
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu 30
Bảng 2.11: Đặc tả chức năng lọc tài liệu 31
Bảng 2.12: Đặc tả chức năng thích tài liệu 32
Bảng 2.13: Đặc tả chức năng lưu tài liệu 33
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu 34
Bảng 2.15: Đặc tả chức năng đăng tài liệu 35
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu 36
Bảng 2.17: Đặc tả chức năng xoá tài liệu 37
Bảng 2.18: Đặc tả chức năng thêm người dùng 38
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng 40Bảng 2.20: Đặc tả chức năng xoá người dùng 41Bảng 2.21: Đặc tả chức năng xoá đánh giá 43Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu 44Bảng 2.23: Đặc tả chức năng thêm trường 45Bảng 2.24: Đặc tả chức năng chỉnh sửa trường 46Bảng 2.25: Đặc tả chức năng xoá trường 47Bảng 2.26: Đặc tả chức năng kích hoạt trường 48Bảng 2.27: Đặc tả chức năng thêm danh mục 49Bảng 2.28: Đặc tả chức năng chỉnh sửa danh mục 50Bảng 2.29: Đặc tả chức năng xoá danh mục 51Bảng 2.30: Đặc tả chức năng kích hoạt lĩnh vực 53Bảng 2.31: Đặc tả chức năng thêm lĩnh vực 54Bảng 2.32: Đặc tả chức năng chỉnh sửa lĩnh vực 55Bảng 2.33: Đặc tả chức năng xoá lĩnh vực 56Bảng 2.34: Đặc tả chức năng kích hoạt lĩnh vực 57Bảng 2.35: Đặc tả chức năng thống kê 58Bảng 5.1: Bảng mô tả giao diện trang chủ 117Bảng 5.2: Bảng mô tả giao diện đăng nhập 118Bảng 5.3: Bảng mô tả giao diện đăng ký 119Bảng 5.4: Bảng mô tả giao diện quên mật khẩu 120Bảng 5.5: Bảng mô tả giao diện thanh trên 121Bảng 5.6: Bảng mô tả giao diện thanh bên 122Bảng 5.7: Bảng mô tả giao diện thông tin cá nhân 123Bảng 5.8: Bảng mô tả giao diện chi tiết tài liệu 125Bảng 5.9: Bảng mô tả giao diện danh sách tài liệu chính 127Bảng 5.10: Bảng mô tả giao diện danh sách tài liệu đã thích 128Bảng 5.11: Bảng mô tả giao diện danh sách tài liệu đã lưu 129Bảng 5.12: Bảng mô tả giao diện danh sách tài liệu tải lên đã được duyệt 130Bảng 5.13: Bảng mô tả giao diện danh sách tài liệu tải lên đang đợi duyệt 131Bảng 5.14: Bảng mô tả giao diện danh sách tài liệu tải lên bị từ chối 132Bảng 5.15: Bảng mô tả giao diện đăng tài liệu 133
Bảng 5.16: Bảng mô tả giao diện chỉnh sửa tài liệu 135Bảng 5.17: Bảng mô tả giao diện danh sách tài liệu của một người 136Bảng 5.18: Bảng mô tả giao diện đăng nhập 137Bảng 5.19: Bảng mô tả giao diện quên mật khẩu 138Bảng 5.20: Bảng mô tả giao diện thông tin cá nhân 141Bảng 5.21: Bảng mô tả giao diện trang chủ quản trị 143Bảng 5.22: Bảng mô tả giao diện danh sách tài liệu 145Bảng 5.23: Bảng mô tả giao diện chi tiết tài liệu 146Bảng 5.24: Bảng mô tả giao diện thêm tài liệu 148Bảng 5.25: Bảng mô tả giao diện chỉnh sửa tài liệu 149Bảng 5.26: Bảng mô tả giao diện xoá tài liệu 150Bảng 5.27: Bảng mô tả giao diện danh sách danh mục 151Bảng 5.28: Bảng mô tả giao diện thêm danh mục 153Bảng 5.29: Bảng mô tả giao diện chỉnh sửa danh mục 154Bảng 5.30: Bảng mô tả giao diện xoá danh mục 155Bảng 5.31: Bảng mô tả giao diện danh sách lĩnh vực 156Bảng 5.32: Bảng mô tả giao diện thêm lĩnh vực 158Bảng 5.33: Bảng mô tả giao diện chỉnh sửa lĩnh vực 159Bảng 5.34: Bảng mô tả giao diện xoá lĩnh vực 160Bảng 5.35: Bảng mô tả giao diện danh sách trường 161Bảng 5.36: Bảng mô tả giao diện thêm trường 163Bảng 5.37: Bảng mô tả giao diện chỉnh sửa trường 164Bảng 5.38: Bảng mô tả giao diện xoá trường 165Bảng 5.39: Bảng mô tả giao diện danh sách người dùng 166Bảng 5.40: Bảng mô tả giao diện chi tiết người dùng 168Bảng 5.41: Bảng mô tả giao diện thêm người dùng 171Bảng 5.42: Bảng mô tả giao diện chỉnh sửa người dùng 173Bảng 5.43: Bảng mô tả giao diện xoá người dùng 174Bảng 5.44: Bảng mô tả giao diện danh sách tài liệu đang chờ 175Bảng 5.45: Bảng mô tả giao diện phê duyệt tài liệu 176Bảng 5.46: Bảng mô tả giao diện từ chối tài liệu 177Bảng 5.47: Bảng mô tả giao diện danh sách đánh giá 178
Bảng 5.48: Bảng mô tả giao diện xoá đánh giá 179Bảng 6.1: Sản phẩm deploy 180Bảng 6.2: Lịch trình công việc 181Bảng 6.3: Chiến lược kiểm thử 182Bảng 6.4: Kết quả kiểm thử 183
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại ngày nay, công nghệ thông tin đã và đang phát triển nhanh chóng, mạnh mẽ trong tất cả các lĩnh vực đời sống Từ những bước tiến vượt bậc trong lĩnh vực máy tính, mạng lưới, đến sự bùng nổ của Internet và sự xuất hiện của trí tuệ nhân tạo, công nghệ thông tin dần chuyển đổi cách con người sống, làm việc và tương tác với nhau Đặc biệt, nó đã mở ra nhiều cơ hội mới trong việc chia sẻ và truy cập thông tin Giờ đây, con người có thể tiếp cận và sử dụng nguồn tài nguyên trên mạng từ xa, không giới hạn thời gian và địa điểm Điều này cũng mở ra tương lai cho các dịch vụ lưu trữ và cung cấp tài nguyên đến cho người dùng trực tuyến
Lĩnh vực giáo dục cũng chứng kiến sự thay đổi mạnh mẽ dưới tác động của công nghệ Các mô hình giảng dạy và học tập truyền thống dần dần chuyển đổi sang môi trường máy tính và trực tuyến Kèm theo đó là nhu cầu cho việc sử dụng các nguồn tài nguyên học tập tăng lên một cách mạnh mẽ Nếu như trước kia, khi muốn tìm hiểu và học tập về một nội dung, lĩnh vực nào đó, sinh viên sẽ cần phải có một bản tài liệu hoặc một cuốn sách bằng giấy Tuy nhiên, ngày nay, sinh viên hầu như có thể truy cập mạng Internet để tìm và sử dụng các tài liệu đó Điều này vừa tạo sự tiện lợi cho người học cũng như cung cấp khả năng tiếp cận kho tài liệu phong phú Tuy nhiên, việc học tập là không giới hạn ở chỉ mỗi một trường đại học Mỗi trường đại học sẽ có một nguồn tài liệu bổ ích và quý giá khác nhau Do đó, em nghĩ đến ý tưởng tạo một trang web tổng hợp và phân loại tài liệu theo các trường đại học, cao đẳng nhằm cung cấp một nguồn tài nguyên phong phú và bổ ích đến các sinh viên
Xuất phát từ ý tưởng đó, em xin thực hiện đề tài Xây dựng diễn đàn chia sẻ tài liệu cho sinh viên
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Mục đích của đề tài này là tạo nên một trang web diễn đàn cung cấp một kho tài liệu bổ ích và phong phú đến cho sinh viên, giúp cho sinh viên tiếp cận tài liệu học tập một cách tiện lợi và hiệu quả
- Đối tượng nghiên cứu Đề tài tập trung nghiên cứu những vấn đề sau:
Các kỹ thuật phân tích thiết kế hệ thống
Tìm hiểu về Spring Boot trên nền tảng Java để xây dựng API cho hệ thống
Tìm hiểu về React để xây dựng giao diện người dùng
Tìm hiểu về Google Drive API để lưu trữ tài liệu
Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ, phân loại
PHẦN NỘI DUNG CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 1.1 Phân tích hiện trạng
Ngày nay, Internet đã và đang phát triển một cách chóng mặt và trở nên rất phổ biến Sự tiện lợi mà Internet mang lại trong các lĩnh vực đời sống và xã hội là điều không thể phủ nhận Trong đó, nhu cầu sử dụng và truy cập nguồn tài liệu học tập trên Internet là rất là lớn Internet cung cấp một lượng tài liệu khổng lồ và cực kỳ đa dạng cho học sinh, sinh viên sử dụng Trong số đó, có hàng nghìn, hàng chục nghìn trang web chuyên về cung cấp tài liệu đến cho người học
Nhìn chung, các trang web cung cấp lượng tài liệu đa dạng ở nhiều lĩnh vực và thể loại khác nhau Tuy nhiên, điều này cũng đặt ra một số thách thức và vấn đề:
- Không phải tất cả các nguồn tài liệu trên Internet đều đảm bảo về chất lượng và tính tin cậy Có rất nhiều tài liệu không chính xác hoặc không được kiểm chứng một cách đầy đủ
- Một số trang web yêu cầu người sử dụng trả phí để có quyền truy cập đầy đủ nội dung
- Một số trang web chứa quảng cáo gây làm phiền và ảnh hưởng đến trải nghiệm người dùng
- Người học cần phải có kỹ năng tìm kiếm trên Internet để có thể tận dụng tối đa nguồn tài liệu
1.2 Khảo sát một số phần mềm
Đường dẫn trang web: https://www.studocu.com/
Hình 0.1: Trang chủ Studocu
Hình 0.1.: Danh sách tài liệu theo trường học
Hình 0.3: Xem chi tiết tài liệu
Hình 0.4: Tải tài liệu lên
Bảng 0.1: Nhận xét trang web Studocu
- Tìm kiếm khoá học, sách, tài liệu
- Nguồn tài liệu chưa được kiểm soát chặt chẽ
- Tải lên và chia sẻ tài liệu
- Thích, bỏ thích, bình luận, lưu, chia sẻ lên mạng xã hội
- Đăng ký Premium để truy cập các tính năng như tài liệu nâng cao, tải, in tài liệu
Đường dẫn trang web: https://thuvienso.hcmute.edu.vn/
Hình 0.5: Trang chủ thư viện số HCMUTE
Hình 0.7: Chi tiết tài liệu
Hình 0.8: Tải tài liệu
Bảng 0.1: Nhận xét thư viện số HCMUTE
- Tìm kiếm sách, tài liệu
- Chủ yếu là tài liệu liên quan đến Trường Đại học Sư phạm Kỹ thuật
- Tải lên và chia sẻ tài liệu
- Thích, bình chọn, bình luận, chia sẻ lên mạng xã hội
1.3 Phân tích yêu cầu của dự án
Xây dựng một trang web để chia sẻ tài liệu học tập cho sinh viên giữa các trường đại học, cao đẳng Người dùng có thể tìm đọc và chia sẻ tài liệu của mình với những người khác Ngoài ra, hệ thống còn được quản lý bởi admin và người quản lý nhằm kiểm soát nguồn tài liệu được chia sẻ Các chức năng chính của chương trình bao gồm:
Bảng 0.2.3.: Danh sách chức năng chính Đối tượng sử dụng Các chức năng thực hiện
Sinh viên Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đọc tài liệu
Tìm kiếm tài liệu Thích tài liệu Lưu tài liệu Đánh giá tài liệu
9 Đăng tài liệu Cập nhật tài liệu Xoá tài liệu
Quản lý Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu cho trường Cập nhật tài liệu của trường Xoá tài liệu của trường Thêm người dùng cho trường Cập nhật người dùng của trường Xoá người dùng của trường Xoá đánh giá của trường Phê duyệt tài liệu của trường
Admin Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu
Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu
Cập nhật tài liệu Xoá tài liệu Thêm người dùng Cập nhật người dùng Xoá người dùng Thêm trường Cập nhật trường Xoá trường Kích hoạt trường Thêm danh mục Cập nhật danh mục Xoá danh mục Kích hoạt danh mục Thêm lĩnh vực Cập nhật lĩnh vực Xoá lĩnh vực Kích hoạt lĩnh vực Phê duyệt tài liệu Thống kê
1.4 Yêu cầu chức năng nghiệp vụ
1.5 Danh sách yêu cầu chức năng nghiệp vụ
Quản lý thông tin cá nhân
Bảng 0.2: Yêu cầu chức năng quản lý thông tin cá nhân
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin cá nhân Tra cứu
2 Cập nhật thông tin cá nhân Lưu trữ
Bảng 0.3: Yêu cầu chức năng quản lý người dùng
Bảng 0.4: Yêu cầu chức năng quản lý tài liệu
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin người dùng Tra cứu
2 Cập nhật thông tin người dùng Lưu trữ
3 Xoá người dùng Lưu trữ
4 Số lượng người dùng Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem tài liệu Tra cứu
2 Tìm kiếm tài liệu Tra cứu
3 Đăng tài liệu Lưu trữ
4 Cập nhật tài liệu Lưu trữ
5 Xoá tài liệu Lưu trữ
6 Thích tài liệu Lưu trữ
Bảng 0.5: Yêu cầu chức năng quản lý danh mục
Bảng 0.6: Yêu cầu chức năng quản lý lĩnh vực
7 Lưu tài liệu Lưu trữ
8 Đánh giá tài liệu Lưu trữ
9 Phê duyệt tài liệu Lưu trữ
10 Số lượng tài liệu Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem danh mục Tra cứu
2 Cập nhật danh mục Lưu trữ
3 Xoá danh mục Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem lĩnh vực Tra cứu
2 Cập nhật lĩnh vực Lưu trữ
3 Xoá lĩnh vực Lưu trữ
Bảng 0.7: Yêu cầu chức năng quản lý trường
Bảng 0.8: Yêu cầu chức năng quản lý đánh giá
1.6 Danh sách yêu cầu chức năng hệ thống
Bảng 0.9: Danh sách yêu cầu chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
2 Cập nhật trường Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem đánh giá Tra cứu
2 Xoá đánh giá Lưu trữ
3 Đánh giá trung bình Tính toán
- Sinh viên: tìm kiếm, đọc tài liệu; thích, lưu, đánh giá tài liệu; đăng, cập nhật, xoá tài liệu
- Quản lý: đăng, cập nhật, xoá tài liệu của trường; thêm, cập nhật, xoá người dùng của trường; phê duyệt tài liệu của trường; xoá đánh giá của tài liệu thuộc trường
- Admin: đăng, cập nhật, xoá tài liệu; thêm, cập nhật, xoá người dùng; thêm, cập nhật, xoá, kích hoạt danh mục; thêm, cập nhật, xoá, kích hoạt lĩnh vực; thêm, cập nhật, xoá, kích hoạt trường; phê duyệt tài liệu; thống kê
Hệ thống đảm bảo tài nguyên và dịch vụ chỉ được truy cập được bởi những tác nhân và người dùng nhất định
Cơ sở dữ liệu được sao lưu định kỳ, mã nguồn có khả năng khôi phục sao lưu nhanh
4 Thông báo Thông báo cho người dùng khi cần thiết: hoạt động thành công, thất bại,…
1.7 Danh sách yêu cầu phi chức năng
Bảng 0.10: Danh sách yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết
1 Tốc độ xử lý quá trình tương tác của người dùng Hiệu quả Có thể truy cập trực tuyến nhiều người cùng một lúc
2 Tốc độ tìm kiếm nhanh và chính xác Hiệu quả Tối đa 5s có kết quả tìm kiếm
Tiết kiệm thời gian, tối ưu được cơ sở dữ liệu, thu hẹp không gian, tránh mất dữ liệu
Tiết kiệm thời gian so với quản lý thủ công Dữ liệu được sao lưu trên máy, có thể phục hồi
4 Dễ dàng bảo trì, nâng cấp và phát triển Cải tiến
Có khả năng mở rộng và thêm các tính năng mới dễ dàng mà không làm phá vỡ cấu trúc hệ thống
5 Giao diện thân thiện, màu sắc đa dạng và rõ nét Tiện dụng
Giao diện dễ dàng cho người dùng sử dụng và tạo cảm giác hiện đại
6 Thao tác dễ dùng Tiện dụng Các thao tác đơn giản, gần gũi với người dùng
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU
2.1.1 Lược đồ chức năng tổng quan
Hình 2.1: Lược đồ chức năng
2.1.2.1 Chức năng quản lý thông tin cá nhân
Hình 2.2: Chức năng quản lý thông tin cá nhân
2.1.2.2 Chức năng quản lý tài liệu
Hình 2.3: Chức năng quản lý tài liệu
2.1.2.3 Chức năng quản lý người dùng
Hình 2.4: Chức năng quản lý người dùng
2.1.2.4 Chức năng quản lý danh mục
Hình 2.5: Chức năng quản lý danh mục
2.1.2.5 Chức năng quản lý lĩnh vực
Hình 2.6: Chức năng quản lý lĩnh vực
2.1.2.6 Chức năng quản lý trường
Hình 2.7: Chức năng quản lý trường
Bảng 2.1: Đặc tả chức năng đăng ký
Brief description Người dùng khách thực hiện đăng ký tài khoản mới
Pre-conditions Người dùng khách chưa có tài khoản và muốn tạo tài khoản mới
Post-conditions Người dùng khách tạo thành công tài khoản mới
1 Người dùng truy cập vào trang đăng ký
2 Người dùng nhập các thông tin yêu cầu
3 Người dùng nhấn nút Đăng ký
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống tạo tài khoản người dùng và thông báo đăng ký tài khoản thành công
4a Hệ thống phát hiện email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Mật khẩu có độ dài tối thiểu là 8 ký tự
Tài khoản email đăng ký là tài khoản Gmail
Người dùng chỉ được đăng ký với vai trò sinh viên và giảng viên
Bảng 2.2: Đặc tả chức năng đăng nhập
Brief description Người dùng thực hiện đăng nhập vào hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ
Post-conditions Người dùng đăng nhập vào hệ thống thành công và thực hiện được
22 các chức năng theo phân quyền
1 Người dùng truy cập vào trang đăng nhập
2 Người dùng nhập email và mật khẩu
3 Người dùng nhấn Đăng nhập
4 Hệ thống xác thực thông tin đăng nhập
5 Người dùng đăng nhập thành công vào hệ thống
4a Hệ thống không thể xác thực thông tin đăng nhập
4a1 Hệ thống hiển thị thông báo lỗi thông tin đăng nhập chưa chính xác
4a2 Use case quay lại bước 2 của Basic flows
1 Người dùng nhấn Đăng ký
2 Người dùng nhấn Quên mật khẩu
Bảng 2.3: Đặc tả chức năng đăng xuất
Brief description Người dùng thực hiện đăng xuất ra khỏi hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng xuất thành công khỏi hệ thống
1 Người dùng nhấn nút Đăng xuất
2 Hệ thống hiển thị thông báo xác nhận việc đăng xuất của người dùng
4 Hệ thống kết thúc phiên người dùng và đưa người dùng quay lại trang đăng nhập
3a Người dùng huỷ bỏ đăng xuất
3a1 Người dùng chọn huỷ bỏ
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu
Name Lấy lại mật khẩu
Brief description Người dùng muốn lấy lại mật khẩu đã quên
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ trên hệ thống
Post-conditions Người dùng đổi được mật khẩu thành công
1 Người dùng nhấn Quên mật khẩu
2 Người dùng nhập email của tài khoản muốn lấy lại mật khẩu
3 Người dùng nhấn Lấy mã
4 Hệ thống kiểm tra email và tài khoản trong cơ sở dữ liệu
5 Hệ thống gửi mã xác nhận qua email
6 Người dùng nhập mã xác nhận
7 Người dùng nhấn Xác nhận
8 Hệ thống kiểm tra mã xác nhận
9 Hệ thống hiển thị ô nhập mật khẩu mới và mật khẩu xác nhận
10 Người dùng nhập mật khẩu mới và mật khẩu xác nhận
11 Người dùng nhấn Đổi mật khẩu
12.Hệ thống kiểm tra mật khẩu mới và mật khẩu xác nhận nhận được
13 Hệ thống thông báo đổi mật khẩu thành công
4a Hệ thống phát hiện email nhận được chưa được đăng ký 4a1 Hệ thống thông báo email chưa được đăng ký
4a2 Use case quay lại bước 2 của Basic flows 8a Hệ thống kiểm tra thấy mã xác nhận người dùng nhập vào không đúng
8a1 Hệ thống thông báo sai mã xác nhận
8a2 Use case quay lại bước 6 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Bảng 2.5: Đặc tả chức năng đổi mật khẩu
Brief description Người dùng muốn đổi mật khẩu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi mật khẩu thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhập mật khẩu hiện tại, mật khẩu mới, mật khẩu xác nhận
3 Người dùng nhấn Đổi mật khẩu
4 Hệ thống kiểm tra mật khẩu người dùng nhập vào
5 Hệ thống lưu mật khẩu mới và thông báo cập nhật mật khẩu thành công
4a Hệ thống kiểm tra thấy mật khẩu hiện tại không đúng 4a1 Hệ thống thông báo mật khẩu hiện tại không đúng 4a2 Use case quay lại bước 1 của Basic flows
2.2.6 Xem thông tin cá nhân
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân
Name Xem thông tin cá nhân
Brief description Người dùng xem thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xem được thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Hệ thống hiển thị thông tin cá nhân của người dùng Alternative flows
2.2.7 Cập nhật thông tin cá nhân
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân
Name Cập nhật thông tin cá nhân
Brief description Người dùng cập nhật thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng cập nhật thành công thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Người dùng thay đổi các thông tin cần thiết
4 Hệ thống kiểm tra thông tin nhập vào
5 Hệ thống lưu thay đổi, thông báo cập nhật thông tin cá nhân thành công và hiển thị trang cá nhân mới
4a Hệ thống kiểm tra thấy email người dùng vừa chỉnh sửa đã được đăng ký
4a1 Hệ thống thông báo email đã được đăng ký trước đó
4a2 Use case quay lại bước 2 của Basic flows
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện
Name Đổi ảnh đại diện
Brief description Người dùng đổi ảnh đại diện cho tài khoản của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi ảnh đại diện thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhấn Chọn ảnh
3 Người dùng chọn ảnh từ thiết bị
5 Hệ thống tải và lưu ảnh đại diện, thông báo cập nhật thành công và hiển thị ảnh đại diện mới mới
Bảng 2.9: Đặc tả chức năng đọc tài liệu
Brief description Người dùng đọc tài liệu
Actor Người dùng khách, sinh viên
Post- conditions Người dùng đọc được tài liệu mà mình muốn
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấp vào một tài liệu mà mình muốn đọc
3 Hệ thống hiển thị chi tiết tài liệu, trong đó nội dung tài liệu được hiển thị bằng trình xem PDF
Business rules Sinh viên chỉ đọc được những tài liệu công khai và tài liệu nội bộ của trường
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu
Name Tìm kiếm tài liệu
Brief description Người dùng tìm kiếm tài liệu
Actor Sinh viên, quản lý, admin
Post-conditions Người dùng tìm được các tài liệu mong muốn
1 Người dùng nhập từ khoá vào ô tìm kiếm trên trang web
2 Người dùng nhấn phím Enter hoặc biểu tượng tìm kiếm
3 Hệ thống tìm kiếm và hiển thị các tài liệu liên quan đến từ khoá nhận được
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.11: Đặc tả chức năng lọc tài liệu
Brief description Người dùng lọc tài liệu theo tiêu chí
Actor Người dùng khách, sinh viên
Post-conditions Người dùng thực hiện thao tác lọc để tìm ra các tài liệu thoả tiêu chí
1 Người dùng truy cập danh sách tài liệu
2 Người dùng chọn các tiêu chí lọc
3 Hệ thống tìm kiếm và hiển thị các tài liệu phù hợp với các tiêu chí lọc
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.12: Đặc tả chức năng thích tài liệu
Brief description Người dùng thêm tài liệu vào danh sách yêu thích
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa thích tài liệu dự định sẽ thích
Post-conditions Người dùng thêm tài liệu vào danh sách yêu thích thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng thích
3 Hệ thống thông báo đã thích tài liệu và tăng lượt thích lên
2a Người dùng muốn bỏ thích tài liệu
2a1 Người dùng nhấn vào biểu tượng thích
2a2 Hệ thống thông báo đã bỏ thích tài liệu và giảm lượt thích xuống
Bảng 2.13: Đặc tả chức năng lưu tài liệu
Brief description Người dùng thêm tài liệu vào danh sách đã lưu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa lưu tài liệu dự định sẽ lưu
Post- conditions Người dùng thêm tài liệu vào danh sách đã lưu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng lưu
3 Hệ thống thông báo đã lưu tài liệu
2a Người dùng muốn bỏ lưu tài liệu
2a1 Người dùng nhấn vào biểu tượng lưu
2a2 Hệ thống thông báo đã bỏ lưu tài liệu
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu
Name Đánh giá tài liệu
Brief description Người dùng đánh giá tài liệu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa đánh giá tài liệu dự định sẽ đánh giá
Post-conditions Người dùng đánh giá tài liệu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng chọn số sao và nhập lời đánh giá
4 Hệ thống kiểm tra thông tin nhận được
5 Hệ thống lưu lại đánh giá, cập nhật danh sách đánh giá và hiển thị thông báo đánh giá thành công
Bảng 2.15: Đặc tả chức năng đăng tài liệu
Brief description Người dùng đăng tải một tài liệu mới lên hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng tải thành công tài liệu lên hệ thống
1 Người dùng nhấn Tải lên/Thêm tài liệu
2 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
3 Người dùng nhấn Tải lên
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã thêm tài liệu thành công
2a Người dùng có vai trò là admin
2a1 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
2a2 Use case tiếp tục ở bước 3 của Basic flows
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu tài liệu, thông báo đã thêm tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin 5a2 Use case kết thúc
1 Sinh viên, quản lý sẽ tải tài liệu lên trường của mình
2 Quản lý và admin phê duyệt tài liệu do sinh viên tải lên
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu
Name Chỉnh sửa tài liệu
Brief description Người dùng chỉnh sửa tài liệu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng chỉnh sửa tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu
2 Người dùng nhấn Chỉnh sửa bên cạnh tài liệu
3 Người dùng chỉnh sửa các thông tin cần thiết cũng như tệp tài liệu
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã chỉnh sửa tài liệu thành công
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu lại tài liệu, thông báo đã chỉnh sửa tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin
1 Sinh viên chỉnh sửa tài liệu thì tài liệu sẽ đưa về trạng thái chờ duyệt
2 Quản lý thực hiện chỉnh sửa các tài liệu thuộc trường mà mình quản lý
Bảng 2.17: Đặc tả chức năng xoá tài liệu
Brief description Người dùng muốn xoá một tài liệu
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá tài liệu thành công
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấn Xoá bên cạnh tài liệu
3 Hệ thống hiển thị xác nhận xoá tài liệu
5 Hệ thống xoá tài liệu, hiển thị thông báo xoá thành công và cập nhật lại danh sách tài liệu
4a Người dùng huỷ bỏ xoá tài liệu
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.18: Đặc tả chức năng thêm người dùng
Brief description Người dùng thêm người dùng mới trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng thêm người dùng mới thành công
1 Người dùng nhấn Thêm người dùng
2 Người dùng nhập các thông tin được yêu cầu cho người dùng mới
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống lưu người dùng mới, sau đó hiển thị thông báo thêm người dùng thành công
2a Người dùng có vai trò admin
2a1 Người dùng nhập các thông tin được yêu cầu và chọn trường cho người dùng mới
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện thêm người dùng thuộc trường của mình
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng
Use case Chỉnh sửa người dùng
Brief description Người dùng chỉnh sửa thông tin của người dùng khác trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người chỉnh sửa thành công thông tin thông tin của người dùng khác
1 Người dùng truy cập vào danh sách người dùng do mình quản lý
2 Người dùng nhấn Chỉnh sửa bên cạnh tài khoản của người dùng muốn chỉnh sửa
3 Người dùng chỉnh sửa các thông tin cần thiết của người dùng
5 Hệ thống lưu lại thay đổi và hiển thị thông báo chỉnh sửa người dùng thành công
Alternative flows 2a Người dùng có vai trò admin
2a1 Người dùng chỉnh sửa các thông tin của người dùng và chọn trường cho người dùng (nếu muốn)
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện chỉnh sửa người dùng thuộc trường của mình
Bảng 2.20: Đặc tả chức năng xoá người dùng
Người dùng xoá một người dùng khác
Pre-conditions Người đã đăng nhập thành công vào hệ thống
Người dùng xoá thành công một người dùng khác
1 Người dùng truy cập vào danh sách người dùng mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh tài khoản của người dùng muốn xoá
3 Hệ thống hiển thị cảnh báo xác nhận xoá người dùng
5 Hệ thống xoá người dùng, hiển thị thông báo xoá người dùng thành công và cập nhật lại danh sách người dùng
4a Người dùng huỷ bỏ việc xoá người dùng khác
4a1 Người dùng chọn Huỷ bỏ
4a2 Use case kết thúc 5a: Hệ thống kiểm tra thấy người dùng đã đăng tải tài liệu lên
5a1 Hệ thống vô hiệu hoá tài khoản người dùng, hiển thị thông báo vô hiệu hoá tài khoản người dùng và cập nhật lại danh sách người dùng
Business rules Quản lý thực hiện xoá người dùng thuộc trường mà mình quản lý
Bảng 2.21: Đặc tả chức năng xoá đánh giá
Brief description Người dùng xoá đánh giá vi phạm của tài liệu
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá đánh giá thành công
1 Người dùng truy cập vào danh sách đánh giá của các tài liệu thuộc trường mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh đánh giá
3 Hệ thống hiển thị cảnh báo xác nhận xoá đánh giá
5 Hệ thống xoá đánh giá, hiển thị thông báo xoá đánh giá thành công và cập nhật lại danh sách đánh giá
4a Người dùng huỷ bỏ việc xoá đánh giá
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu
Name Phê duyệt tài liệu
Brief description Người dùng phê duyệt tài liệu do sinh viên tải lên
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng phê duyệt tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu đang chờ phê duyệt do mình quản lý
2 Người dùng nhấn Phê duyệt
3 Hệ thống hiển thị thông báo yêu cầu chọn hành động
4 Người dùng chọn Chấp nhận
THIẾT KẾ PHẦN MỀM
Lược đồ lớp
4 Chương 4: Kiến trúc hệ thống
4.2 Các công nghệ được sử dụng
5 Chương 5: Thiết kế giao diện và xử lý
5.1 Sinh viên và người dùng khách
6 Chương 6: Cài đặt và kiểm thử
STT Thời gian Công việc Ghi chú
1 28/2/2024-6/3/2024 Tham khảo, xác định đề tài
2 6/3/2024-13/4/2024 Khảo sát, phân tích và xác định các yêu cầu của đề tài
3 13/3/2024-20/3/2024 Xây dựng lược đồ chức năng, đặc tả chức năng
4 20/3/2024- 27/3/2024 Xây dựng lược đồ tuần tự
5 27/3/2024- 3/4/2024 Thiết kế giao diện phần sinh viên và người dùng khách
6 3/4/2024 – 10/4/2024 Thiết kế và xây dựng cơ sở dữ liệu
8 17/4/2024-24/4/2024 Kết nối giao diện và back-end cho sinh viên và người dùng khách
9 24/4/2024-1/5/2024 Thiết kế giao diện phần quản lý và admin
10 1/5/2024 – 8/5/2024 Kết nối giao diện và back-end cho quản lý và admin
11 8/5/2024 -15/5/2024 Hoàn thiện các chức năng và bổ sung các chức năng bị thiếu
12 15/5/2024 – 22/5/2024 Kiểm thử lại trang web, sửa chữa lỗi
15 5/6/2024 – 28/6/2024 Chỉnh sửa báo cáo và làm
Vu Hoang Anh Ý kiến của giáo viên hướng dẫn
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2 MỤC ĐÍCH CỦA ĐỀ TÀI 1
CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 3
1.2 Khảo sát một số phần mềm 3
1.3 Phân tích yêu cầu của dự án 8
1.4 Yêu cầu chức năng nghiệp vụ 10
1.5 Danh sách yêu cầu chức năng nghiệp vụ 11
1.6 Danh sách yêu cầu chức năng hệ thống 14
1.7 Danh sách yêu cầu phi chức năng 15
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU 17
2.1.1 Lược đồ chức năng tổng quan 17
2.2.6 Xem thông tin cá nhân 26
2.2.7 Cập nhật thông tin cá nhân 27
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 59
3.1.6 Xem thông tin cá nhân 63
3.1.7 Cập nhật thông tin cá nhân 64
CHƯƠNG 4: KIẾN TRÚC HỆ THỐNG 90
4.1.2 Tương tác và giao tiếp giữa các thành phần 91
4.2 Các công nghệ và thư viện được sử dụng 91
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 117
5.1 Sinh viên và người dùng khách 117
5.1.9 Danh sách tài liệu chính 126
5.1.10 Danh sách tài liệu đã thích 128
5.1.11 Danh sách tài liệu đã lưu 129
5.1.12 Danh sách tài liệu đã tải lên đã được duyệt 130
5.1.13 Danh sách tài liệu đã tải lên đang đợi duyệt 131
5.1.14 Danh sách tài liệu đã tải lên bị từ chối 131
5.1.17 Danh sách tài liệu của một người 135
5.2.27 Danh sách tài liệu đang chờ 175
CHƯƠNG 6 CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ 180
6.1.2 Cài đặt với docker compose 180
DANH MỤC TÀI LIỆU THAM KHẢO 188
Hình 1.1: Trang chủ Studocu 4
Hình 1.2: Danh sách tài liệu theo trường học 4
Hình 1.3: Xem chi tiết tài liệu 5
Hình 1.4: Tải tài liệu lên 5
Hình 1.5: Trang chủ thư viện số HCMUTE 6
Hình 1.6: Chi tiết tài liệu 7
Hình 1.7: Tải tài liệu 7
Hình 2.1: Lược đồ chức năng 17
Hình 2.2: Chức năng quản lý thông tin cá nhân 17
Hình 2.3: Chức năng quản lý tài liệu 18
Hình 2.4: Chức năng quản lý người dùng 18
Hình 2.5: Chức năng quản lý danh mục 19
Hình 2.6: Chức năng quản lý lĩnh vực 19
Hình 2.7: Chức năng quản lý trường 20
Hình 3.1: Lược đồ tuần tự chức năng đăng ký 59
Hình 3.2: Lược đồ tuần tự chức năng đăng nhập 60
Hình 3.3: Lược đồ tuần tự chức năng đăng xuất 60
Hình 3.4: Lược đồ tuần tự chức năng lấy lại mật khẩu 61
Hình 3.5: Lược đồ tuần tự chức năng đổi mật khẩu 62
Hình 3.6: Lược đồ tuần tự chức năng xem thông tin cá nhân 63
Hình 3.7: Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 64
Hình 3.8: Lược đồ tuần tự chức năng đổi ảnh đại diện 65
Hình 3.9: Lược đồ tuần tự chức năng đọc tài liệu 65
Hình 3.10: Lược đồ tuần tự chức năng tìm kiếm tài liệu 66
Hình 3.11: Lược đồ tuần tự chức năng lọc tài liệu 66
Hình 3.12: Lược đồ tuần tự chức năng thích tài liệu 67
Hình 3.13: Lược đồ tuần tự chức năng lưu tài liệu 67
Hình 3.14: Lược đồ tuần tự chức năng đánh giá tài liệu 68
Hình 3.15: Lược đồ tuần tự chức năng đăng tài liệu 69
Hình 3.16: Lược đồ tuần tự chức năng chỉnh sửa tài liệu 70
Hình 3.17: Lược đồ tuần tự chức năng xoá tài liệu 71
Hình 3.18: Lược đồ tuần tự chức năng thêm người dùng 72
Hình 3.19: Lược đồ tuần tự chức năng chỉnh sửa người dùng 73
Hình 3.20: Lược đồ tuần tự chức năng xoá người dùng 74
Hình 3.21: Lược đồ tuần tự chức năng xoá đánh giá 75
Hình 3.22: Lược đồ tuần tự chức năng phê duyệt tài liệu 76
Hình 3.23: Lược đồ tuần tự chức năng thêm trường 77
Hình 3.24: Lược đồ tuần tự chức năng chỉnh sửa trường 78
Hình 3.25: Lược đồ tuần tự chức năng xoá trường 79
Hình 3.26: Lược đồ tuần tự chức năng kích hoạt trường 80
Hình 3.27: Lược đồ tuần tự chức năng thêm danh mục 81
Hình 3.28: Lược đồ tuần tự chức năng chỉnh sửa danh mục 82
Hình 3.29: Lược đồ tuần tự chức năng xoá danh mục 83
Hình 3.30: Lược đồ tuần tự chức năng kích hoạt danh mục 84
Hình 3.31: Lược đồ tuần tự chức năng thêm lĩnh vực 85
Hình 3.32: Lược đồ tuần tự chức năng chỉnh sửa lĩnh vực 86
Hình 3.33: Lược đồ tuần tự chức năng xoá lĩnh vực 87
Hình 3.34: Lược đồ tuần tự chức năng kích hoạt lĩnh vực 88
Hình 3.35: Lược đồ tuần tự chức năng thống kê 88
Hình 3.36: Lược đồ lớp của hệ thống 89
Hình 4.1: Kiến trúc tổng quan của hệ thống 90
Hình 4.2: Cấu trúc dự án Spring Boot đơn giản 92
Hình 4.3: Tạo dự án Spring Boot với Maven 93
Hình 4.4: Khai báo dependency trong pom.xml 94
Hình 4.5: Controller trong Spring Boot 94
Hình 4.6: Spring Boot và Tomcat 95
Hình 4.7: Thêm dependency Spring Security vào dự án 96
Hình 4.8: Cấu hình Filter Chain 97
Hình 4.9: Cấu hình xác thực 97
Hình 4.10: Thêm JWT Filter vào SecurityFilterChain 98
Hình 4.12: Tạo và trả JWT khi login 99
Hình 4.13: Repository interface trong Spring Data JPA 100
Hình 4.14: Truy vấn query tuỳ chỉnh 100
Hình 4.15: Thêm dependency của Spring Data JPA 101
Hình 4.16: Cấu hình kết nối MySQL trong application.yml 101
Hình 4.17: Tạo các entity classes 102
Hình 4.18: Kiến trúc ReactJS 103
Hình 4.19: Cấu trúc thư mục ReactJS 103
Hình 4.22: Minh hoạ tệp JSX 106
Hình 4.23: Ví dụ về useState 106
Hình 4.24: Ví dụ về useEffect 107
Hình 4.25: Chuyển hướng với useNavigate 107
Hình 4.26: Lấy đường dẫn hiện tại bằng useLocation 108
Hình 4.27: Truy xuất tham số từ URL với useParams 108
Hình 4.28: Minh hoạ props 108
Hình 4.29: Axios trong package.json 109
Hình 4.30: Sử dụng axios để gửi yêu cầu GET lấy tất cả danh mục 109
Hình 4.31: Tạo dự án Google Cloud 110
Hình 4.32: Giao diện APIs & Services 111
Hình 4.33: Kích hoạt Google Drive API 111
Hình 4.34: Giao diện Credentials để tạo service account 112
Hình 4.35: Tạo service account 112
Hình 4.37: Google Drive API dependency 113
Hình 4.38: Cấu hình Bean cho Google Drive API 114
Hình 4.39: Xoá tệp bằng Google Drive API 114
Hình 4.40: Tải lên tệp bằng Google Drive API 114
Hình 4.41: Kiến trúc của MySQL 115
Hình 4.42: Sử dụng MySQL thiết kế cơ sở dữ liệu 116
Hình 5.1: Giao diện trang chủ 117
Hình 5.2: Giao diện đăng nhập 118
Hình 5.3: Giao diện đăng ký 119
Hình 5.4: Giao diện quên mật khẩu 120
Hình 5.5: Giao diện thanh trên 121
Hình 5.6: Giao diện thanh bên 122
Hình 5.7: Giao diện thông tin cá nhân 123
Hình 5.8: Giao diện chi tiết tài liệu 125
Hình 5.9: Giao diện danh sách tài liệu chính 127
Hình 5.10: Giao diện danh sách tài liệu đã thích 128
Hình 5.11: Giao diện danh sách tài liệu đã lưu 129
Hình 5.12: Giao diện danh sách tài liệu tải lên đã được duyệt 130
Hình 5.13: Giao diện danh sách tài liệu tải lên đang đợi duyệt 131
Hình 5.14: Giao diện danh sách tài liệu tải lên bị từ chối 132
Hình 5.15: Giao diện đăng tài liệu 133
Hình 5.16: Giao diện chỉnh sửa tài liệu 134
Hình 5.17: Giao diện danh sách tài liệu của một người 136
Hình 5.18: Giao diện đăng nhập 137
Hình 5.19: Giao diện quên mật khẩu 138
Hình 5.20: Giao diện thông tin cá nhân 140
Hình 5.21: Giao diện trang chủ quản trị 143
Hình 5.22: Giao diện danh sách tài liệu 144
Hình 5.23: Giao diện chi tiết tài liệu 146
Hình 5.24: Giao diện thêm tài liệu 147
Hình 5.25: Giao diện chỉnh sửa tài liệu 149
Hình 5.26: Giao diện xoá tài liệu 150
Hình 5.27: Giao diện danh sách danh mục 151
Hình 5.28: Giao diện thêm danh mục 153
Hình 5.29: Giao diện chỉnh sửa danh mục 154
Hình 5.30: Giao diện xoá danh mục 155
Hình 5.31: Giao diện danh sách lĩnh vực 156
Hình 5.32: Giao diện thêm lĩnh vực 158
Hình 5.33: Giao diện chỉnh sửa lĩnh vực 159
Hình 5.34: Giao diện xoá lĩnh vực 160
Hình 5.35: Giao diện danh sách trường 161
Hình 5.36: Giao diện thêm trường 163
Hình 5.37: Giao diện chỉnh sửa trường 164
Hình 5.38: Giao diện chỉnh sửa trường 165
Hình 5.39: Giao diện danh sách người dùng 166
Hình 5.40: Giao diện chi tiết người dùng 168
Hình 5.41: Giao diện thêm người dùng 170
Hình 5.42: Giao diện chỉnh sửa người dùng 172
Hình 5.43: Giao diện xoá người dùng 174
Hình 5.44: Giao diện danh sách tài liệu đang chờ 175
Hình 5.45: Giao diện phê duyệt tài liệu 176
Hình 5.46: Giao diện từ chối tài liệu 177
Hình 5.47: Giao diện danh sách đánh giá 178
Hình 5.48: Giao diện xoá đánh giá 179
Bảng 1.1: Nhận xét trang web Studocu 5
Bảng 1.2: Nhận xét thư viện số HCMUTE 7
Bảng 1.3: Danh sách chức năng chính 8
Bảng 1.4: Yêu cầu chức năng quản lý thông tin cá nhân 11
Bảng 1.5: Yêu cầu chức năng quản lý người dùng 12
Bảng 1.6: Yêu cầu chức năng quản lý tài liệu 12
Bảng 1.7: Yêu cầu chức năng quản lý danh mục 13
Bảng 1.8: Yêu cầu chức năng quản lý lĩnh vực 13
Bảng 1.9: Yêu cầu chức năng quản lý trường 14
Bảng 1.10: Yêu cầu chức năng quản lý đánh giá 14
Bảng 1.11: Danh sách yêu cầu chức năng hệ thống 14
Bảng 1.12: Danh sách yêu cầu phi chức năng 15
Bảng 2.1: Đặc tả chức năng đăng ký 20
Bảng 2.2: Đặc tả chức năng đăng nhập 21
Bảng 2.3: Đặc tả chức năng đăng xuất 22
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu 23
Bảng 2.5: Đặc tả chức năng đổi mật khẩu 25
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân 26
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân 27
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện 28
Bảng 2.9: Đặc tả chức năng đọc tài liệu 29
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu 30
Bảng 2.11: Đặc tả chức năng lọc tài liệu 31
Bảng 2.12: Đặc tả chức năng thích tài liệu 32
Bảng 2.13: Đặc tả chức năng lưu tài liệu 33
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu 34
Bảng 2.15: Đặc tả chức năng đăng tài liệu 35
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu 36
Bảng 2.17: Đặc tả chức năng xoá tài liệu 37
Bảng 2.18: Đặc tả chức năng thêm người dùng 38
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng 40Bảng 2.20: Đặc tả chức năng xoá người dùng 41Bảng 2.21: Đặc tả chức năng xoá đánh giá 43Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu 44Bảng 2.23: Đặc tả chức năng thêm trường 45Bảng 2.24: Đặc tả chức năng chỉnh sửa trường 46Bảng 2.25: Đặc tả chức năng xoá trường 47Bảng 2.26: Đặc tả chức năng kích hoạt trường 48Bảng 2.27: Đặc tả chức năng thêm danh mục 49Bảng 2.28: Đặc tả chức năng chỉnh sửa danh mục 50Bảng 2.29: Đặc tả chức năng xoá danh mục 51Bảng 2.30: Đặc tả chức năng kích hoạt lĩnh vực 53Bảng 2.31: Đặc tả chức năng thêm lĩnh vực 54Bảng 2.32: Đặc tả chức năng chỉnh sửa lĩnh vực 55Bảng 2.33: Đặc tả chức năng xoá lĩnh vực 56Bảng 2.34: Đặc tả chức năng kích hoạt lĩnh vực 57Bảng 2.35: Đặc tả chức năng thống kê 58Bảng 5.1: Bảng mô tả giao diện trang chủ 117Bảng 5.2: Bảng mô tả giao diện đăng nhập 118Bảng 5.3: Bảng mô tả giao diện đăng ký 119Bảng 5.4: Bảng mô tả giao diện quên mật khẩu 120Bảng 5.5: Bảng mô tả giao diện thanh trên 121Bảng 5.6: Bảng mô tả giao diện thanh bên 122Bảng 5.7: Bảng mô tả giao diện thông tin cá nhân 123Bảng 5.8: Bảng mô tả giao diện chi tiết tài liệu 125Bảng 5.9: Bảng mô tả giao diện danh sách tài liệu chính 127Bảng 5.10: Bảng mô tả giao diện danh sách tài liệu đã thích 128Bảng 5.11: Bảng mô tả giao diện danh sách tài liệu đã lưu 129Bảng 5.12: Bảng mô tả giao diện danh sách tài liệu tải lên đã được duyệt 130Bảng 5.13: Bảng mô tả giao diện danh sách tài liệu tải lên đang đợi duyệt 131Bảng 5.14: Bảng mô tả giao diện danh sách tài liệu tải lên bị từ chối 132Bảng 5.15: Bảng mô tả giao diện đăng tài liệu 133
Bảng 5.16: Bảng mô tả giao diện chỉnh sửa tài liệu 135Bảng 5.17: Bảng mô tả giao diện danh sách tài liệu của một người 136Bảng 5.18: Bảng mô tả giao diện đăng nhập 137Bảng 5.19: Bảng mô tả giao diện quên mật khẩu 138Bảng 5.20: Bảng mô tả giao diện thông tin cá nhân 141Bảng 5.21: Bảng mô tả giao diện trang chủ quản trị 143Bảng 5.22: Bảng mô tả giao diện danh sách tài liệu 145Bảng 5.23: Bảng mô tả giao diện chi tiết tài liệu 146Bảng 5.24: Bảng mô tả giao diện thêm tài liệu 148Bảng 5.25: Bảng mô tả giao diện chỉnh sửa tài liệu 149Bảng 5.26: Bảng mô tả giao diện xoá tài liệu 150Bảng 5.27: Bảng mô tả giao diện danh sách danh mục 151Bảng 5.28: Bảng mô tả giao diện thêm danh mục 153Bảng 5.29: Bảng mô tả giao diện chỉnh sửa danh mục 154Bảng 5.30: Bảng mô tả giao diện xoá danh mục 155Bảng 5.31: Bảng mô tả giao diện danh sách lĩnh vực 156Bảng 5.32: Bảng mô tả giao diện thêm lĩnh vực 158Bảng 5.33: Bảng mô tả giao diện chỉnh sửa lĩnh vực 159Bảng 5.34: Bảng mô tả giao diện xoá lĩnh vực 160Bảng 5.35: Bảng mô tả giao diện danh sách trường 161Bảng 5.36: Bảng mô tả giao diện thêm trường 163Bảng 5.37: Bảng mô tả giao diện chỉnh sửa trường 164Bảng 5.38: Bảng mô tả giao diện xoá trường 165Bảng 5.39: Bảng mô tả giao diện danh sách người dùng 166Bảng 5.40: Bảng mô tả giao diện chi tiết người dùng 168Bảng 5.41: Bảng mô tả giao diện thêm người dùng 171Bảng 5.42: Bảng mô tả giao diện chỉnh sửa người dùng 173Bảng 5.43: Bảng mô tả giao diện xoá người dùng 174Bảng 5.44: Bảng mô tả giao diện danh sách tài liệu đang chờ 175Bảng 5.45: Bảng mô tả giao diện phê duyệt tài liệu 176Bảng 5.46: Bảng mô tả giao diện từ chối tài liệu 177Bảng 5.47: Bảng mô tả giao diện danh sách đánh giá 178
Bảng 5.48: Bảng mô tả giao diện xoá đánh giá 179Bảng 6.1: Sản phẩm deploy 180Bảng 6.2: Lịch trình công việc 181Bảng 6.3: Chiến lược kiểm thử 182Bảng 6.4: Kết quả kiểm thử 183
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại ngày nay, công nghệ thông tin đã và đang phát triển nhanh chóng, mạnh mẽ trong tất cả các lĩnh vực đời sống Từ những bước tiến vượt bậc trong lĩnh vực máy tính, mạng lưới, đến sự bùng nổ của Internet và sự xuất hiện của trí tuệ nhân tạo, công nghệ thông tin dần chuyển đổi cách con người sống, làm việc và tương tác với nhau Đặc biệt, nó đã mở ra nhiều cơ hội mới trong việc chia sẻ và truy cập thông tin Giờ đây, con người có thể tiếp cận và sử dụng nguồn tài nguyên trên mạng từ xa, không giới hạn thời gian và địa điểm Điều này cũng mở ra tương lai cho các dịch vụ lưu trữ và cung cấp tài nguyên đến cho người dùng trực tuyến
Lĩnh vực giáo dục cũng chứng kiến sự thay đổi mạnh mẽ dưới tác động của công nghệ Các mô hình giảng dạy và học tập truyền thống dần dần chuyển đổi sang môi trường máy tính và trực tuyến Kèm theo đó là nhu cầu cho việc sử dụng các nguồn tài nguyên học tập tăng lên một cách mạnh mẽ Nếu như trước kia, khi muốn tìm hiểu và học tập về một nội dung, lĩnh vực nào đó, sinh viên sẽ cần phải có một bản tài liệu hoặc một cuốn sách bằng giấy Tuy nhiên, ngày nay, sinh viên hầu như có thể truy cập mạng Internet để tìm và sử dụng các tài liệu đó Điều này vừa tạo sự tiện lợi cho người học cũng như cung cấp khả năng tiếp cận kho tài liệu phong phú Tuy nhiên, việc học tập là không giới hạn ở chỉ mỗi một trường đại học Mỗi trường đại học sẽ có một nguồn tài liệu bổ ích và quý giá khác nhau Do đó, em nghĩ đến ý tưởng tạo một trang web tổng hợp và phân loại tài liệu theo các trường đại học, cao đẳng nhằm cung cấp một nguồn tài nguyên phong phú và bổ ích đến các sinh viên
Xuất phát từ ý tưởng đó, em xin thực hiện đề tài Xây dựng diễn đàn chia sẻ tài liệu cho sinh viên
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Mục đích của đề tài này là tạo nên một trang web diễn đàn cung cấp một kho tài liệu bổ ích và phong phú đến cho sinh viên, giúp cho sinh viên tiếp cận tài liệu học tập một cách tiện lợi và hiệu quả
- Đối tượng nghiên cứu Đề tài tập trung nghiên cứu những vấn đề sau:
Các kỹ thuật phân tích thiết kế hệ thống
Tìm hiểu về Spring Boot trên nền tảng Java để xây dựng API cho hệ thống
Tìm hiểu về React để xây dựng giao diện người dùng
Tìm hiểu về Google Drive API để lưu trữ tài liệu
Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ, phân loại
PHẦN NỘI DUNG CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 1.1 Phân tích hiện trạng
Ngày nay, Internet đã và đang phát triển một cách chóng mặt và trở nên rất phổ biến Sự tiện lợi mà Internet mang lại trong các lĩnh vực đời sống và xã hội là điều không thể phủ nhận Trong đó, nhu cầu sử dụng và truy cập nguồn tài liệu học tập trên Internet là rất là lớn Internet cung cấp một lượng tài liệu khổng lồ và cực kỳ đa dạng cho học sinh, sinh viên sử dụng Trong số đó, có hàng nghìn, hàng chục nghìn trang web chuyên về cung cấp tài liệu đến cho người học
Nhìn chung, các trang web cung cấp lượng tài liệu đa dạng ở nhiều lĩnh vực và thể loại khác nhau Tuy nhiên, điều này cũng đặt ra một số thách thức và vấn đề:
- Không phải tất cả các nguồn tài liệu trên Internet đều đảm bảo về chất lượng và tính tin cậy Có rất nhiều tài liệu không chính xác hoặc không được kiểm chứng một cách đầy đủ
- Một số trang web yêu cầu người sử dụng trả phí để có quyền truy cập đầy đủ nội dung
- Một số trang web chứa quảng cáo gây làm phiền và ảnh hưởng đến trải nghiệm người dùng
- Người học cần phải có kỹ năng tìm kiếm trên Internet để có thể tận dụng tối đa nguồn tài liệu
1.2 Khảo sát một số phần mềm
Đường dẫn trang web: https://www.studocu.com/
Hình 0.1: Trang chủ Studocu
Hình 0.1.: Danh sách tài liệu theo trường học
Hình 0.3: Xem chi tiết tài liệu
Hình 0.4: Tải tài liệu lên
Bảng 0.1: Nhận xét trang web Studocu
- Tìm kiếm khoá học, sách, tài liệu
- Nguồn tài liệu chưa được kiểm soát chặt chẽ
- Tải lên và chia sẻ tài liệu
- Thích, bỏ thích, bình luận, lưu, chia sẻ lên mạng xã hội
- Đăng ký Premium để truy cập các tính năng như tài liệu nâng cao, tải, in tài liệu
Đường dẫn trang web: https://thuvienso.hcmute.edu.vn/
Hình 0.5: Trang chủ thư viện số HCMUTE
Hình 0.7: Chi tiết tài liệu
Hình 0.8: Tải tài liệu
Bảng 0.1: Nhận xét thư viện số HCMUTE
- Tìm kiếm sách, tài liệu
- Chủ yếu là tài liệu liên quan đến Trường Đại học Sư phạm Kỹ thuật
- Tải lên và chia sẻ tài liệu
- Thích, bình chọn, bình luận, chia sẻ lên mạng xã hội
1.3 Phân tích yêu cầu của dự án
Xây dựng một trang web để chia sẻ tài liệu học tập cho sinh viên giữa các trường đại học, cao đẳng Người dùng có thể tìm đọc và chia sẻ tài liệu của mình với những người khác Ngoài ra, hệ thống còn được quản lý bởi admin và người quản lý nhằm kiểm soát nguồn tài liệu được chia sẻ Các chức năng chính của chương trình bao gồm:
Bảng 0.2.3.: Danh sách chức năng chính Đối tượng sử dụng Các chức năng thực hiện
Sinh viên Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đọc tài liệu
Tìm kiếm tài liệu Thích tài liệu Lưu tài liệu Đánh giá tài liệu
9 Đăng tài liệu Cập nhật tài liệu Xoá tài liệu
Quản lý Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu cho trường Cập nhật tài liệu của trường Xoá tài liệu của trường Thêm người dùng cho trường Cập nhật người dùng của trường Xoá người dùng của trường Xoá đánh giá của trường Phê duyệt tài liệu của trường
Admin Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu
Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu
Cập nhật tài liệu Xoá tài liệu Thêm người dùng Cập nhật người dùng Xoá người dùng Thêm trường Cập nhật trường Xoá trường Kích hoạt trường Thêm danh mục Cập nhật danh mục Xoá danh mục Kích hoạt danh mục Thêm lĩnh vực Cập nhật lĩnh vực Xoá lĩnh vực Kích hoạt lĩnh vực Phê duyệt tài liệu Thống kê
1.4 Yêu cầu chức năng nghiệp vụ
1.5 Danh sách yêu cầu chức năng nghiệp vụ
Quản lý thông tin cá nhân
Bảng 0.2: Yêu cầu chức năng quản lý thông tin cá nhân
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin cá nhân Tra cứu
2 Cập nhật thông tin cá nhân Lưu trữ
Bảng 0.3: Yêu cầu chức năng quản lý người dùng
Bảng 0.4: Yêu cầu chức năng quản lý tài liệu
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin người dùng Tra cứu
2 Cập nhật thông tin người dùng Lưu trữ
3 Xoá người dùng Lưu trữ
4 Số lượng người dùng Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem tài liệu Tra cứu
2 Tìm kiếm tài liệu Tra cứu
3 Đăng tài liệu Lưu trữ
4 Cập nhật tài liệu Lưu trữ
5 Xoá tài liệu Lưu trữ
6 Thích tài liệu Lưu trữ
Bảng 0.5: Yêu cầu chức năng quản lý danh mục
Bảng 0.6: Yêu cầu chức năng quản lý lĩnh vực
7 Lưu tài liệu Lưu trữ
8 Đánh giá tài liệu Lưu trữ
9 Phê duyệt tài liệu Lưu trữ
10 Số lượng tài liệu Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem danh mục Tra cứu
2 Cập nhật danh mục Lưu trữ
3 Xoá danh mục Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem lĩnh vực Tra cứu
2 Cập nhật lĩnh vực Lưu trữ
3 Xoá lĩnh vực Lưu trữ
Bảng 0.7: Yêu cầu chức năng quản lý trường
Bảng 0.8: Yêu cầu chức năng quản lý đánh giá
1.6 Danh sách yêu cầu chức năng hệ thống
Bảng 0.9: Danh sách yêu cầu chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
2 Cập nhật trường Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem đánh giá Tra cứu
2 Xoá đánh giá Lưu trữ
3 Đánh giá trung bình Tính toán
- Sinh viên: tìm kiếm, đọc tài liệu; thích, lưu, đánh giá tài liệu; đăng, cập nhật, xoá tài liệu
- Quản lý: đăng, cập nhật, xoá tài liệu của trường; thêm, cập nhật, xoá người dùng của trường; phê duyệt tài liệu của trường; xoá đánh giá của tài liệu thuộc trường
- Admin: đăng, cập nhật, xoá tài liệu; thêm, cập nhật, xoá người dùng; thêm, cập nhật, xoá, kích hoạt danh mục; thêm, cập nhật, xoá, kích hoạt lĩnh vực; thêm, cập nhật, xoá, kích hoạt trường; phê duyệt tài liệu; thống kê
Hệ thống đảm bảo tài nguyên và dịch vụ chỉ được truy cập được bởi những tác nhân và người dùng nhất định
Cơ sở dữ liệu được sao lưu định kỳ, mã nguồn có khả năng khôi phục sao lưu nhanh
4 Thông báo Thông báo cho người dùng khi cần thiết: hoạt động thành công, thất bại,…
1.7 Danh sách yêu cầu phi chức năng
Bảng 0.10: Danh sách yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết
1 Tốc độ xử lý quá trình tương tác của người dùng Hiệu quả Có thể truy cập trực tuyến nhiều người cùng một lúc
2 Tốc độ tìm kiếm nhanh và chính xác Hiệu quả Tối đa 5s có kết quả tìm kiếm
Tiết kiệm thời gian, tối ưu được cơ sở dữ liệu, thu hẹp không gian, tránh mất dữ liệu
Tiết kiệm thời gian so với quản lý thủ công Dữ liệu được sao lưu trên máy, có thể phục hồi
4 Dễ dàng bảo trì, nâng cấp và phát triển Cải tiến
Có khả năng mở rộng và thêm các tính năng mới dễ dàng mà không làm phá vỡ cấu trúc hệ thống
5 Giao diện thân thiện, màu sắc đa dạng và rõ nét Tiện dụng
Giao diện dễ dàng cho người dùng sử dụng và tạo cảm giác hiện đại
6 Thao tác dễ dùng Tiện dụng Các thao tác đơn giản, gần gũi với người dùng
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU
2.1.1 Lược đồ chức năng tổng quan
Hình 2.1: Lược đồ chức năng
2.1.2.1 Chức năng quản lý thông tin cá nhân
Hình 2.2: Chức năng quản lý thông tin cá nhân
2.1.2.2 Chức năng quản lý tài liệu
Hình 2.3: Chức năng quản lý tài liệu
2.1.2.3 Chức năng quản lý người dùng
Hình 2.4: Chức năng quản lý người dùng
2.1.2.4 Chức năng quản lý danh mục
Hình 2.5: Chức năng quản lý danh mục
2.1.2.5 Chức năng quản lý lĩnh vực
Hình 2.6: Chức năng quản lý lĩnh vực
2.1.2.6 Chức năng quản lý trường
Hình 2.7: Chức năng quản lý trường
Bảng 2.1: Đặc tả chức năng đăng ký
Brief description Người dùng khách thực hiện đăng ký tài khoản mới
Pre-conditions Người dùng khách chưa có tài khoản và muốn tạo tài khoản mới
Post-conditions Người dùng khách tạo thành công tài khoản mới
1 Người dùng truy cập vào trang đăng ký
2 Người dùng nhập các thông tin yêu cầu
3 Người dùng nhấn nút Đăng ký
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống tạo tài khoản người dùng và thông báo đăng ký tài khoản thành công
4a Hệ thống phát hiện email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Mật khẩu có độ dài tối thiểu là 8 ký tự
Tài khoản email đăng ký là tài khoản Gmail
Người dùng chỉ được đăng ký với vai trò sinh viên và giảng viên
Bảng 2.2: Đặc tả chức năng đăng nhập
Brief description Người dùng thực hiện đăng nhập vào hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ
Post-conditions Người dùng đăng nhập vào hệ thống thành công và thực hiện được
22 các chức năng theo phân quyền
1 Người dùng truy cập vào trang đăng nhập
2 Người dùng nhập email và mật khẩu
3 Người dùng nhấn Đăng nhập
4 Hệ thống xác thực thông tin đăng nhập
5 Người dùng đăng nhập thành công vào hệ thống
4a Hệ thống không thể xác thực thông tin đăng nhập
4a1 Hệ thống hiển thị thông báo lỗi thông tin đăng nhập chưa chính xác
4a2 Use case quay lại bước 2 của Basic flows
1 Người dùng nhấn Đăng ký
2 Người dùng nhấn Quên mật khẩu
Bảng 2.3: Đặc tả chức năng đăng xuất
Brief description Người dùng thực hiện đăng xuất ra khỏi hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng xuất thành công khỏi hệ thống
1 Người dùng nhấn nút Đăng xuất
2 Hệ thống hiển thị thông báo xác nhận việc đăng xuất của người dùng
4 Hệ thống kết thúc phiên người dùng và đưa người dùng quay lại trang đăng nhập
3a Người dùng huỷ bỏ đăng xuất
3a1 Người dùng chọn huỷ bỏ
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu
Name Lấy lại mật khẩu
Brief description Người dùng muốn lấy lại mật khẩu đã quên
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ trên hệ thống
Post-conditions Người dùng đổi được mật khẩu thành công
1 Người dùng nhấn Quên mật khẩu
2 Người dùng nhập email của tài khoản muốn lấy lại mật khẩu
3 Người dùng nhấn Lấy mã
4 Hệ thống kiểm tra email và tài khoản trong cơ sở dữ liệu
5 Hệ thống gửi mã xác nhận qua email
6 Người dùng nhập mã xác nhận
7 Người dùng nhấn Xác nhận
8 Hệ thống kiểm tra mã xác nhận
9 Hệ thống hiển thị ô nhập mật khẩu mới và mật khẩu xác nhận
10 Người dùng nhập mật khẩu mới và mật khẩu xác nhận
11 Người dùng nhấn Đổi mật khẩu
12.Hệ thống kiểm tra mật khẩu mới và mật khẩu xác nhận nhận được
13 Hệ thống thông báo đổi mật khẩu thành công
4a Hệ thống phát hiện email nhận được chưa được đăng ký 4a1 Hệ thống thông báo email chưa được đăng ký
4a2 Use case quay lại bước 2 của Basic flows 8a Hệ thống kiểm tra thấy mã xác nhận người dùng nhập vào không đúng
8a1 Hệ thống thông báo sai mã xác nhận
8a2 Use case quay lại bước 6 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Bảng 2.5: Đặc tả chức năng đổi mật khẩu
Brief description Người dùng muốn đổi mật khẩu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi mật khẩu thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhập mật khẩu hiện tại, mật khẩu mới, mật khẩu xác nhận
3 Người dùng nhấn Đổi mật khẩu
4 Hệ thống kiểm tra mật khẩu người dùng nhập vào
5 Hệ thống lưu mật khẩu mới và thông báo cập nhật mật khẩu thành công
4a Hệ thống kiểm tra thấy mật khẩu hiện tại không đúng 4a1 Hệ thống thông báo mật khẩu hiện tại không đúng 4a2 Use case quay lại bước 1 của Basic flows
2.2.6 Xem thông tin cá nhân
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân
Name Xem thông tin cá nhân
Brief description Người dùng xem thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xem được thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Hệ thống hiển thị thông tin cá nhân của người dùng Alternative flows
2.2.7 Cập nhật thông tin cá nhân
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân
Name Cập nhật thông tin cá nhân
Brief description Người dùng cập nhật thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng cập nhật thành công thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Người dùng thay đổi các thông tin cần thiết
4 Hệ thống kiểm tra thông tin nhập vào
5 Hệ thống lưu thay đổi, thông báo cập nhật thông tin cá nhân thành công và hiển thị trang cá nhân mới
4a Hệ thống kiểm tra thấy email người dùng vừa chỉnh sửa đã được đăng ký
4a1 Hệ thống thông báo email đã được đăng ký trước đó
4a2 Use case quay lại bước 2 của Basic flows
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện
Name Đổi ảnh đại diện
Brief description Người dùng đổi ảnh đại diện cho tài khoản của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi ảnh đại diện thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhấn Chọn ảnh
3 Người dùng chọn ảnh từ thiết bị
5 Hệ thống tải và lưu ảnh đại diện, thông báo cập nhật thành công và hiển thị ảnh đại diện mới mới
Bảng 2.9: Đặc tả chức năng đọc tài liệu
Brief description Người dùng đọc tài liệu
Actor Người dùng khách, sinh viên
Post- conditions Người dùng đọc được tài liệu mà mình muốn
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấp vào một tài liệu mà mình muốn đọc
3 Hệ thống hiển thị chi tiết tài liệu, trong đó nội dung tài liệu được hiển thị bằng trình xem PDF
Business rules Sinh viên chỉ đọc được những tài liệu công khai và tài liệu nội bộ của trường
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu
Name Tìm kiếm tài liệu
Brief description Người dùng tìm kiếm tài liệu
Actor Sinh viên, quản lý, admin
Post-conditions Người dùng tìm được các tài liệu mong muốn
1 Người dùng nhập từ khoá vào ô tìm kiếm trên trang web
2 Người dùng nhấn phím Enter hoặc biểu tượng tìm kiếm
3 Hệ thống tìm kiếm và hiển thị các tài liệu liên quan đến từ khoá nhận được
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.11: Đặc tả chức năng lọc tài liệu
Brief description Người dùng lọc tài liệu theo tiêu chí
Actor Người dùng khách, sinh viên
Post-conditions Người dùng thực hiện thao tác lọc để tìm ra các tài liệu thoả tiêu chí
1 Người dùng truy cập danh sách tài liệu
2 Người dùng chọn các tiêu chí lọc
3 Hệ thống tìm kiếm và hiển thị các tài liệu phù hợp với các tiêu chí lọc
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.12: Đặc tả chức năng thích tài liệu
Brief description Người dùng thêm tài liệu vào danh sách yêu thích
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa thích tài liệu dự định sẽ thích
Post-conditions Người dùng thêm tài liệu vào danh sách yêu thích thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng thích
3 Hệ thống thông báo đã thích tài liệu và tăng lượt thích lên
2a Người dùng muốn bỏ thích tài liệu
2a1 Người dùng nhấn vào biểu tượng thích
2a2 Hệ thống thông báo đã bỏ thích tài liệu và giảm lượt thích xuống
Bảng 2.13: Đặc tả chức năng lưu tài liệu
Brief description Người dùng thêm tài liệu vào danh sách đã lưu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa lưu tài liệu dự định sẽ lưu
Post- conditions Người dùng thêm tài liệu vào danh sách đã lưu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng lưu
3 Hệ thống thông báo đã lưu tài liệu
2a Người dùng muốn bỏ lưu tài liệu
2a1 Người dùng nhấn vào biểu tượng lưu
2a2 Hệ thống thông báo đã bỏ lưu tài liệu
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu
Name Đánh giá tài liệu
Brief description Người dùng đánh giá tài liệu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa đánh giá tài liệu dự định sẽ đánh giá
Post-conditions Người dùng đánh giá tài liệu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng chọn số sao và nhập lời đánh giá
4 Hệ thống kiểm tra thông tin nhận được
5 Hệ thống lưu lại đánh giá, cập nhật danh sách đánh giá và hiển thị thông báo đánh giá thành công
Bảng 2.15: Đặc tả chức năng đăng tài liệu
Brief description Người dùng đăng tải một tài liệu mới lên hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng tải thành công tài liệu lên hệ thống
1 Người dùng nhấn Tải lên/Thêm tài liệu
2 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
3 Người dùng nhấn Tải lên
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã thêm tài liệu thành công
2a Người dùng có vai trò là admin
2a1 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
2a2 Use case tiếp tục ở bước 3 của Basic flows
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu tài liệu, thông báo đã thêm tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin 5a2 Use case kết thúc
1 Sinh viên, quản lý sẽ tải tài liệu lên trường của mình
2 Quản lý và admin phê duyệt tài liệu do sinh viên tải lên
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu
Name Chỉnh sửa tài liệu
Brief description Người dùng chỉnh sửa tài liệu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng chỉnh sửa tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu
2 Người dùng nhấn Chỉnh sửa bên cạnh tài liệu
3 Người dùng chỉnh sửa các thông tin cần thiết cũng như tệp tài liệu
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã chỉnh sửa tài liệu thành công
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu lại tài liệu, thông báo đã chỉnh sửa tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin
1 Sinh viên chỉnh sửa tài liệu thì tài liệu sẽ đưa về trạng thái chờ duyệt
2 Quản lý thực hiện chỉnh sửa các tài liệu thuộc trường mà mình quản lý
Bảng 2.17: Đặc tả chức năng xoá tài liệu
Brief description Người dùng muốn xoá một tài liệu
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá tài liệu thành công
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấn Xoá bên cạnh tài liệu
3 Hệ thống hiển thị xác nhận xoá tài liệu
5 Hệ thống xoá tài liệu, hiển thị thông báo xoá thành công và cập nhật lại danh sách tài liệu
4a Người dùng huỷ bỏ xoá tài liệu
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.18: Đặc tả chức năng thêm người dùng
Brief description Người dùng thêm người dùng mới trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng thêm người dùng mới thành công
1 Người dùng nhấn Thêm người dùng
2 Người dùng nhập các thông tin được yêu cầu cho người dùng mới
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống lưu người dùng mới, sau đó hiển thị thông báo thêm người dùng thành công
2a Người dùng có vai trò admin
2a1 Người dùng nhập các thông tin được yêu cầu và chọn trường cho người dùng mới
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện thêm người dùng thuộc trường của mình
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng
Use case Chỉnh sửa người dùng
Brief description Người dùng chỉnh sửa thông tin của người dùng khác trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người chỉnh sửa thành công thông tin thông tin của người dùng khác
1 Người dùng truy cập vào danh sách người dùng do mình quản lý
2 Người dùng nhấn Chỉnh sửa bên cạnh tài khoản của người dùng muốn chỉnh sửa
3 Người dùng chỉnh sửa các thông tin cần thiết của người dùng
5 Hệ thống lưu lại thay đổi và hiển thị thông báo chỉnh sửa người dùng thành công
Alternative flows 2a Người dùng có vai trò admin
2a1 Người dùng chỉnh sửa các thông tin của người dùng và chọn trường cho người dùng (nếu muốn)
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện chỉnh sửa người dùng thuộc trường của mình
Bảng 2.20: Đặc tả chức năng xoá người dùng
Người dùng xoá một người dùng khác
Pre-conditions Người đã đăng nhập thành công vào hệ thống
Người dùng xoá thành công một người dùng khác
1 Người dùng truy cập vào danh sách người dùng mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh tài khoản của người dùng muốn xoá
3 Hệ thống hiển thị cảnh báo xác nhận xoá người dùng
5 Hệ thống xoá người dùng, hiển thị thông báo xoá người dùng thành công và cập nhật lại danh sách người dùng
4a Người dùng huỷ bỏ việc xoá người dùng khác
4a1 Người dùng chọn Huỷ bỏ
4a2 Use case kết thúc 5a: Hệ thống kiểm tra thấy người dùng đã đăng tải tài liệu lên
5a1 Hệ thống vô hiệu hoá tài khoản người dùng, hiển thị thông báo vô hiệu hoá tài khoản người dùng và cập nhật lại danh sách người dùng
Business rules Quản lý thực hiện xoá người dùng thuộc trường mà mình quản lý
Bảng 2.21: Đặc tả chức năng xoá đánh giá
Brief description Người dùng xoá đánh giá vi phạm của tài liệu
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá đánh giá thành công
1 Người dùng truy cập vào danh sách đánh giá của các tài liệu thuộc trường mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh đánh giá
3 Hệ thống hiển thị cảnh báo xác nhận xoá đánh giá
5 Hệ thống xoá đánh giá, hiển thị thông báo xoá đánh giá thành công và cập nhật lại danh sách đánh giá
4a Người dùng huỷ bỏ việc xoá đánh giá
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu
Name Phê duyệt tài liệu
Brief description Người dùng phê duyệt tài liệu do sinh viên tải lên
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng phê duyệt tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu đang chờ phê duyệt do mình quản lý
2 Người dùng nhấn Phê duyệt
3 Hệ thống hiển thị thông báo yêu cầu chọn hành động
4 Người dùng chọn Chấp nhận
KIẾN TRÚC HỆ THỐNG
Kiến trúc tổng quan
4.2 Các công nghệ được sử dụng
5 Chương 5: Thiết kế giao diện và xử lý
5.1 Sinh viên và người dùng khách
6 Chương 6: Cài đặt và kiểm thử
STT Thời gian Công việc Ghi chú
1 28/2/2024-6/3/2024 Tham khảo, xác định đề tài
2 6/3/2024-13/4/2024 Khảo sát, phân tích và xác định các yêu cầu của đề tài
3 13/3/2024-20/3/2024 Xây dựng lược đồ chức năng, đặc tả chức năng
4 20/3/2024- 27/3/2024 Xây dựng lược đồ tuần tự
5 27/3/2024- 3/4/2024 Thiết kế giao diện phần sinh viên và người dùng khách
6 3/4/2024 – 10/4/2024 Thiết kế và xây dựng cơ sở dữ liệu
8 17/4/2024-24/4/2024 Kết nối giao diện và back-end cho sinh viên và người dùng khách
9 24/4/2024-1/5/2024 Thiết kế giao diện phần quản lý và admin
10 1/5/2024 – 8/5/2024 Kết nối giao diện và back-end cho quản lý và admin
11 8/5/2024 -15/5/2024 Hoàn thiện các chức năng và bổ sung các chức năng bị thiếu
12 15/5/2024 – 22/5/2024 Kiểm thử lại trang web, sửa chữa lỗi
15 5/6/2024 – 28/6/2024 Chỉnh sửa báo cáo và làm
Vu Hoang Anh Ý kiến của giáo viên hướng dẫn
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2 MỤC ĐÍCH CỦA ĐỀ TÀI 1
CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 3
1.2 Khảo sát một số phần mềm 3
1.3 Phân tích yêu cầu của dự án 8
1.4 Yêu cầu chức năng nghiệp vụ 10
1.5 Danh sách yêu cầu chức năng nghiệp vụ 11
1.6 Danh sách yêu cầu chức năng hệ thống 14
1.7 Danh sách yêu cầu phi chức năng 15
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU 17
2.1.1 Lược đồ chức năng tổng quan 17
2.2.6 Xem thông tin cá nhân 26
2.2.7 Cập nhật thông tin cá nhân 27
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 59
3.1.6 Xem thông tin cá nhân 63
3.1.7 Cập nhật thông tin cá nhân 64
CHƯƠNG 4: KIẾN TRÚC HỆ THỐNG 90
4.1.2 Tương tác và giao tiếp giữa các thành phần 91
4.2 Các công nghệ và thư viện được sử dụng 91
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 117
5.1 Sinh viên và người dùng khách 117
5.1.9 Danh sách tài liệu chính 126
5.1.10 Danh sách tài liệu đã thích 128
5.1.11 Danh sách tài liệu đã lưu 129
5.1.12 Danh sách tài liệu đã tải lên đã được duyệt 130
5.1.13 Danh sách tài liệu đã tải lên đang đợi duyệt 131
5.1.14 Danh sách tài liệu đã tải lên bị từ chối 131
5.1.17 Danh sách tài liệu của một người 135
5.2.27 Danh sách tài liệu đang chờ 175
CHƯƠNG 6 CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ 180
6.1.2 Cài đặt với docker compose 180
DANH MỤC TÀI LIỆU THAM KHẢO 188
Hình 1.1: Trang chủ Studocu 4
Hình 1.2: Danh sách tài liệu theo trường học 4
Hình 1.3: Xem chi tiết tài liệu 5
Hình 1.4: Tải tài liệu lên 5
Hình 1.5: Trang chủ thư viện số HCMUTE 6
Hình 1.6: Chi tiết tài liệu 7
Hình 1.7: Tải tài liệu 7
Hình 2.1: Lược đồ chức năng 17
Hình 2.2: Chức năng quản lý thông tin cá nhân 17
Hình 2.3: Chức năng quản lý tài liệu 18
Hình 2.4: Chức năng quản lý người dùng 18
Hình 2.5: Chức năng quản lý danh mục 19
Hình 2.6: Chức năng quản lý lĩnh vực 19
Hình 2.7: Chức năng quản lý trường 20
Hình 3.1: Lược đồ tuần tự chức năng đăng ký 59
Hình 3.2: Lược đồ tuần tự chức năng đăng nhập 60
Hình 3.3: Lược đồ tuần tự chức năng đăng xuất 60
Hình 3.4: Lược đồ tuần tự chức năng lấy lại mật khẩu 61
Hình 3.5: Lược đồ tuần tự chức năng đổi mật khẩu 62
Hình 3.6: Lược đồ tuần tự chức năng xem thông tin cá nhân 63
Hình 3.7: Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 64
Hình 3.8: Lược đồ tuần tự chức năng đổi ảnh đại diện 65
Hình 3.9: Lược đồ tuần tự chức năng đọc tài liệu 65
Hình 3.10: Lược đồ tuần tự chức năng tìm kiếm tài liệu 66
Hình 3.11: Lược đồ tuần tự chức năng lọc tài liệu 66
Hình 3.12: Lược đồ tuần tự chức năng thích tài liệu 67
Hình 3.13: Lược đồ tuần tự chức năng lưu tài liệu 67
Hình 3.14: Lược đồ tuần tự chức năng đánh giá tài liệu 68
Hình 3.15: Lược đồ tuần tự chức năng đăng tài liệu 69
Hình 3.16: Lược đồ tuần tự chức năng chỉnh sửa tài liệu 70
Hình 3.17: Lược đồ tuần tự chức năng xoá tài liệu 71
Hình 3.18: Lược đồ tuần tự chức năng thêm người dùng 72
Hình 3.19: Lược đồ tuần tự chức năng chỉnh sửa người dùng 73
Hình 3.20: Lược đồ tuần tự chức năng xoá người dùng 74
Hình 3.21: Lược đồ tuần tự chức năng xoá đánh giá 75
Hình 3.22: Lược đồ tuần tự chức năng phê duyệt tài liệu 76
Hình 3.23: Lược đồ tuần tự chức năng thêm trường 77
Hình 3.24: Lược đồ tuần tự chức năng chỉnh sửa trường 78
Hình 3.25: Lược đồ tuần tự chức năng xoá trường 79
Hình 3.26: Lược đồ tuần tự chức năng kích hoạt trường 80
Hình 3.27: Lược đồ tuần tự chức năng thêm danh mục 81
Hình 3.28: Lược đồ tuần tự chức năng chỉnh sửa danh mục 82
Hình 3.29: Lược đồ tuần tự chức năng xoá danh mục 83
Hình 3.30: Lược đồ tuần tự chức năng kích hoạt danh mục 84
Hình 3.31: Lược đồ tuần tự chức năng thêm lĩnh vực 85
Hình 3.32: Lược đồ tuần tự chức năng chỉnh sửa lĩnh vực 86
Hình 3.33: Lược đồ tuần tự chức năng xoá lĩnh vực 87
Hình 3.34: Lược đồ tuần tự chức năng kích hoạt lĩnh vực 88
Hình 3.35: Lược đồ tuần tự chức năng thống kê 88
Hình 3.36: Lược đồ lớp của hệ thống 89
Hình 4.1: Kiến trúc tổng quan của hệ thống 90
Hình 4.2: Cấu trúc dự án Spring Boot đơn giản 92
Hình 4.3: Tạo dự án Spring Boot với Maven 93
Hình 4.4: Khai báo dependency trong pom.xml 94
Hình 4.5: Controller trong Spring Boot 94
Hình 4.6: Spring Boot và Tomcat 95
Hình 4.7: Thêm dependency Spring Security vào dự án 96
Hình 4.8: Cấu hình Filter Chain 97
Hình 4.9: Cấu hình xác thực 97
Hình 4.10: Thêm JWT Filter vào SecurityFilterChain 98
Hình 4.12: Tạo và trả JWT khi login 99
Hình 4.13: Repository interface trong Spring Data JPA 100
Hình 4.14: Truy vấn query tuỳ chỉnh 100
Hình 4.15: Thêm dependency của Spring Data JPA 101
Hình 4.16: Cấu hình kết nối MySQL trong application.yml 101
Hình 4.17: Tạo các entity classes 102
Hình 4.18: Kiến trúc ReactJS 103
Hình 4.19: Cấu trúc thư mục ReactJS 103
Hình 4.22: Minh hoạ tệp JSX 106
Hình 4.23: Ví dụ về useState 106
Hình 4.24: Ví dụ về useEffect 107
Hình 4.25: Chuyển hướng với useNavigate 107
Hình 4.26: Lấy đường dẫn hiện tại bằng useLocation 108
Hình 4.27: Truy xuất tham số từ URL với useParams 108
Hình 4.28: Minh hoạ props 108
Hình 4.29: Axios trong package.json 109
Hình 4.30: Sử dụng axios để gửi yêu cầu GET lấy tất cả danh mục 109
Hình 4.31: Tạo dự án Google Cloud 110
Hình 4.32: Giao diện APIs & Services 111
Hình 4.33: Kích hoạt Google Drive API 111
Hình 4.34: Giao diện Credentials để tạo service account 112
Hình 4.35: Tạo service account 112
Hình 4.37: Google Drive API dependency 113
Hình 4.38: Cấu hình Bean cho Google Drive API 114
Hình 4.39: Xoá tệp bằng Google Drive API 114
Hình 4.40: Tải lên tệp bằng Google Drive API 114
Hình 4.41: Kiến trúc của MySQL 115
Hình 4.42: Sử dụng MySQL thiết kế cơ sở dữ liệu 116
Hình 5.1: Giao diện trang chủ 117
Hình 5.2: Giao diện đăng nhập 118
Hình 5.3: Giao diện đăng ký 119
Hình 5.4: Giao diện quên mật khẩu 120
Hình 5.5: Giao diện thanh trên 121
Hình 5.6: Giao diện thanh bên 122
Hình 5.7: Giao diện thông tin cá nhân 123
Hình 5.8: Giao diện chi tiết tài liệu 125
Hình 5.9: Giao diện danh sách tài liệu chính 127
Hình 5.10: Giao diện danh sách tài liệu đã thích 128
Hình 5.11: Giao diện danh sách tài liệu đã lưu 129
Hình 5.12: Giao diện danh sách tài liệu tải lên đã được duyệt 130
Hình 5.13: Giao diện danh sách tài liệu tải lên đang đợi duyệt 131
Hình 5.14: Giao diện danh sách tài liệu tải lên bị từ chối 132
Hình 5.15: Giao diện đăng tài liệu 133
Hình 5.16: Giao diện chỉnh sửa tài liệu 134
Hình 5.17: Giao diện danh sách tài liệu của một người 136
Hình 5.18: Giao diện đăng nhập 137
Hình 5.19: Giao diện quên mật khẩu 138
Hình 5.20: Giao diện thông tin cá nhân 140
Hình 5.21: Giao diện trang chủ quản trị 143
Hình 5.22: Giao diện danh sách tài liệu 144
Hình 5.23: Giao diện chi tiết tài liệu 146
Hình 5.24: Giao diện thêm tài liệu 147
Hình 5.25: Giao diện chỉnh sửa tài liệu 149
Hình 5.26: Giao diện xoá tài liệu 150
Hình 5.27: Giao diện danh sách danh mục 151
Hình 5.28: Giao diện thêm danh mục 153
Hình 5.29: Giao diện chỉnh sửa danh mục 154
Hình 5.30: Giao diện xoá danh mục 155
Hình 5.31: Giao diện danh sách lĩnh vực 156
Hình 5.32: Giao diện thêm lĩnh vực 158
Hình 5.33: Giao diện chỉnh sửa lĩnh vực 159
Hình 5.34: Giao diện xoá lĩnh vực 160
Hình 5.35: Giao diện danh sách trường 161
Hình 5.36: Giao diện thêm trường 163
Hình 5.37: Giao diện chỉnh sửa trường 164
Hình 5.38: Giao diện chỉnh sửa trường 165
Hình 5.39: Giao diện danh sách người dùng 166
Hình 5.40: Giao diện chi tiết người dùng 168
Hình 5.41: Giao diện thêm người dùng 170
Hình 5.42: Giao diện chỉnh sửa người dùng 172
Hình 5.43: Giao diện xoá người dùng 174
Hình 5.44: Giao diện danh sách tài liệu đang chờ 175
Hình 5.45: Giao diện phê duyệt tài liệu 176
Hình 5.46: Giao diện từ chối tài liệu 177
Hình 5.47: Giao diện danh sách đánh giá 178
Hình 5.48: Giao diện xoá đánh giá 179
Bảng 1.1: Nhận xét trang web Studocu 5
Bảng 1.2: Nhận xét thư viện số HCMUTE 7
Bảng 1.3: Danh sách chức năng chính 8
Bảng 1.4: Yêu cầu chức năng quản lý thông tin cá nhân 11
Bảng 1.5: Yêu cầu chức năng quản lý người dùng 12
Bảng 1.6: Yêu cầu chức năng quản lý tài liệu 12
Bảng 1.7: Yêu cầu chức năng quản lý danh mục 13
Bảng 1.8: Yêu cầu chức năng quản lý lĩnh vực 13
Bảng 1.9: Yêu cầu chức năng quản lý trường 14
Bảng 1.10: Yêu cầu chức năng quản lý đánh giá 14
Bảng 1.11: Danh sách yêu cầu chức năng hệ thống 14
Bảng 1.12: Danh sách yêu cầu phi chức năng 15
Bảng 2.1: Đặc tả chức năng đăng ký 20
Bảng 2.2: Đặc tả chức năng đăng nhập 21
Bảng 2.3: Đặc tả chức năng đăng xuất 22
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu 23
Bảng 2.5: Đặc tả chức năng đổi mật khẩu 25
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân 26
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân 27
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện 28
Bảng 2.9: Đặc tả chức năng đọc tài liệu 29
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu 30
Bảng 2.11: Đặc tả chức năng lọc tài liệu 31
Bảng 2.12: Đặc tả chức năng thích tài liệu 32
Bảng 2.13: Đặc tả chức năng lưu tài liệu 33
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu 34
Bảng 2.15: Đặc tả chức năng đăng tài liệu 35
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu 36
Bảng 2.17: Đặc tả chức năng xoá tài liệu 37
Bảng 2.18: Đặc tả chức năng thêm người dùng 38
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng 40Bảng 2.20: Đặc tả chức năng xoá người dùng 41Bảng 2.21: Đặc tả chức năng xoá đánh giá 43Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu 44Bảng 2.23: Đặc tả chức năng thêm trường 45Bảng 2.24: Đặc tả chức năng chỉnh sửa trường 46Bảng 2.25: Đặc tả chức năng xoá trường 47Bảng 2.26: Đặc tả chức năng kích hoạt trường 48Bảng 2.27: Đặc tả chức năng thêm danh mục 49Bảng 2.28: Đặc tả chức năng chỉnh sửa danh mục 50Bảng 2.29: Đặc tả chức năng xoá danh mục 51Bảng 2.30: Đặc tả chức năng kích hoạt lĩnh vực 53Bảng 2.31: Đặc tả chức năng thêm lĩnh vực 54Bảng 2.32: Đặc tả chức năng chỉnh sửa lĩnh vực 55Bảng 2.33: Đặc tả chức năng xoá lĩnh vực 56Bảng 2.34: Đặc tả chức năng kích hoạt lĩnh vực 57Bảng 2.35: Đặc tả chức năng thống kê 58Bảng 5.1: Bảng mô tả giao diện trang chủ 117Bảng 5.2: Bảng mô tả giao diện đăng nhập 118Bảng 5.3: Bảng mô tả giao diện đăng ký 119Bảng 5.4: Bảng mô tả giao diện quên mật khẩu 120Bảng 5.5: Bảng mô tả giao diện thanh trên 121Bảng 5.6: Bảng mô tả giao diện thanh bên 122Bảng 5.7: Bảng mô tả giao diện thông tin cá nhân 123Bảng 5.8: Bảng mô tả giao diện chi tiết tài liệu 125Bảng 5.9: Bảng mô tả giao diện danh sách tài liệu chính 127Bảng 5.10: Bảng mô tả giao diện danh sách tài liệu đã thích 128Bảng 5.11: Bảng mô tả giao diện danh sách tài liệu đã lưu 129Bảng 5.12: Bảng mô tả giao diện danh sách tài liệu tải lên đã được duyệt 130Bảng 5.13: Bảng mô tả giao diện danh sách tài liệu tải lên đang đợi duyệt 131Bảng 5.14: Bảng mô tả giao diện danh sách tài liệu tải lên bị từ chối 132Bảng 5.15: Bảng mô tả giao diện đăng tài liệu 133
Bảng 5.16: Bảng mô tả giao diện chỉnh sửa tài liệu 135Bảng 5.17: Bảng mô tả giao diện danh sách tài liệu của một người 136Bảng 5.18: Bảng mô tả giao diện đăng nhập 137Bảng 5.19: Bảng mô tả giao diện quên mật khẩu 138Bảng 5.20: Bảng mô tả giao diện thông tin cá nhân 141Bảng 5.21: Bảng mô tả giao diện trang chủ quản trị 143Bảng 5.22: Bảng mô tả giao diện danh sách tài liệu 145Bảng 5.23: Bảng mô tả giao diện chi tiết tài liệu 146Bảng 5.24: Bảng mô tả giao diện thêm tài liệu 148Bảng 5.25: Bảng mô tả giao diện chỉnh sửa tài liệu 149Bảng 5.26: Bảng mô tả giao diện xoá tài liệu 150Bảng 5.27: Bảng mô tả giao diện danh sách danh mục 151Bảng 5.28: Bảng mô tả giao diện thêm danh mục 153Bảng 5.29: Bảng mô tả giao diện chỉnh sửa danh mục 154Bảng 5.30: Bảng mô tả giao diện xoá danh mục 155Bảng 5.31: Bảng mô tả giao diện danh sách lĩnh vực 156Bảng 5.32: Bảng mô tả giao diện thêm lĩnh vực 158Bảng 5.33: Bảng mô tả giao diện chỉnh sửa lĩnh vực 159Bảng 5.34: Bảng mô tả giao diện xoá lĩnh vực 160Bảng 5.35: Bảng mô tả giao diện danh sách trường 161Bảng 5.36: Bảng mô tả giao diện thêm trường 163Bảng 5.37: Bảng mô tả giao diện chỉnh sửa trường 164Bảng 5.38: Bảng mô tả giao diện xoá trường 165Bảng 5.39: Bảng mô tả giao diện danh sách người dùng 166Bảng 5.40: Bảng mô tả giao diện chi tiết người dùng 168Bảng 5.41: Bảng mô tả giao diện thêm người dùng 171Bảng 5.42: Bảng mô tả giao diện chỉnh sửa người dùng 173Bảng 5.43: Bảng mô tả giao diện xoá người dùng 174Bảng 5.44: Bảng mô tả giao diện danh sách tài liệu đang chờ 175Bảng 5.45: Bảng mô tả giao diện phê duyệt tài liệu 176Bảng 5.46: Bảng mô tả giao diện từ chối tài liệu 177Bảng 5.47: Bảng mô tả giao diện danh sách đánh giá 178
Bảng 5.48: Bảng mô tả giao diện xoá đánh giá 179Bảng 6.1: Sản phẩm deploy 180Bảng 6.2: Lịch trình công việc 181Bảng 6.3: Chiến lược kiểm thử 182Bảng 6.4: Kết quả kiểm thử 183
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại ngày nay, công nghệ thông tin đã và đang phát triển nhanh chóng, mạnh mẽ trong tất cả các lĩnh vực đời sống Từ những bước tiến vượt bậc trong lĩnh vực máy tính, mạng lưới, đến sự bùng nổ của Internet và sự xuất hiện của trí tuệ nhân tạo, công nghệ thông tin dần chuyển đổi cách con người sống, làm việc và tương tác với nhau Đặc biệt, nó đã mở ra nhiều cơ hội mới trong việc chia sẻ và truy cập thông tin Giờ đây, con người có thể tiếp cận và sử dụng nguồn tài nguyên trên mạng từ xa, không giới hạn thời gian và địa điểm Điều này cũng mở ra tương lai cho các dịch vụ lưu trữ và cung cấp tài nguyên đến cho người dùng trực tuyến
Lĩnh vực giáo dục cũng chứng kiến sự thay đổi mạnh mẽ dưới tác động của công nghệ Các mô hình giảng dạy và học tập truyền thống dần dần chuyển đổi sang môi trường máy tính và trực tuyến Kèm theo đó là nhu cầu cho việc sử dụng các nguồn tài nguyên học tập tăng lên một cách mạnh mẽ Nếu như trước kia, khi muốn tìm hiểu và học tập về một nội dung, lĩnh vực nào đó, sinh viên sẽ cần phải có một bản tài liệu hoặc một cuốn sách bằng giấy Tuy nhiên, ngày nay, sinh viên hầu như có thể truy cập mạng Internet để tìm và sử dụng các tài liệu đó Điều này vừa tạo sự tiện lợi cho người học cũng như cung cấp khả năng tiếp cận kho tài liệu phong phú Tuy nhiên, việc học tập là không giới hạn ở chỉ mỗi một trường đại học Mỗi trường đại học sẽ có một nguồn tài liệu bổ ích và quý giá khác nhau Do đó, em nghĩ đến ý tưởng tạo một trang web tổng hợp và phân loại tài liệu theo các trường đại học, cao đẳng nhằm cung cấp một nguồn tài nguyên phong phú và bổ ích đến các sinh viên
Xuất phát từ ý tưởng đó, em xin thực hiện đề tài Xây dựng diễn đàn chia sẻ tài liệu cho sinh viên
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Mục đích của đề tài này là tạo nên một trang web diễn đàn cung cấp một kho tài liệu bổ ích và phong phú đến cho sinh viên, giúp cho sinh viên tiếp cận tài liệu học tập một cách tiện lợi và hiệu quả
- Đối tượng nghiên cứu Đề tài tập trung nghiên cứu những vấn đề sau:
Các kỹ thuật phân tích thiết kế hệ thống
Tìm hiểu về Spring Boot trên nền tảng Java để xây dựng API cho hệ thống
Tìm hiểu về React để xây dựng giao diện người dùng
Tìm hiểu về Google Drive API để lưu trữ tài liệu
Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ, phân loại
PHẦN NỘI DUNG CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 1.1 Phân tích hiện trạng
Ngày nay, Internet đã và đang phát triển một cách chóng mặt và trở nên rất phổ biến Sự tiện lợi mà Internet mang lại trong các lĩnh vực đời sống và xã hội là điều không thể phủ nhận Trong đó, nhu cầu sử dụng và truy cập nguồn tài liệu học tập trên Internet là rất là lớn Internet cung cấp một lượng tài liệu khổng lồ và cực kỳ đa dạng cho học sinh, sinh viên sử dụng Trong số đó, có hàng nghìn, hàng chục nghìn trang web chuyên về cung cấp tài liệu đến cho người học
Nhìn chung, các trang web cung cấp lượng tài liệu đa dạng ở nhiều lĩnh vực và thể loại khác nhau Tuy nhiên, điều này cũng đặt ra một số thách thức và vấn đề:
- Không phải tất cả các nguồn tài liệu trên Internet đều đảm bảo về chất lượng và tính tin cậy Có rất nhiều tài liệu không chính xác hoặc không được kiểm chứng một cách đầy đủ
- Một số trang web yêu cầu người sử dụng trả phí để có quyền truy cập đầy đủ nội dung
- Một số trang web chứa quảng cáo gây làm phiền và ảnh hưởng đến trải nghiệm người dùng
- Người học cần phải có kỹ năng tìm kiếm trên Internet để có thể tận dụng tối đa nguồn tài liệu
1.2 Khảo sát một số phần mềm
Đường dẫn trang web: https://www.studocu.com/
Hình 0.1: Trang chủ Studocu
Hình 0.1.: Danh sách tài liệu theo trường học
Hình 0.3: Xem chi tiết tài liệu
Hình 0.4: Tải tài liệu lên
Bảng 0.1: Nhận xét trang web Studocu
- Tìm kiếm khoá học, sách, tài liệu
- Nguồn tài liệu chưa được kiểm soát chặt chẽ
- Tải lên và chia sẻ tài liệu
- Thích, bỏ thích, bình luận, lưu, chia sẻ lên mạng xã hội
- Đăng ký Premium để truy cập các tính năng như tài liệu nâng cao, tải, in tài liệu
Đường dẫn trang web: https://thuvienso.hcmute.edu.vn/
Hình 0.5: Trang chủ thư viện số HCMUTE
Hình 0.7: Chi tiết tài liệu
Hình 0.8: Tải tài liệu
Bảng 0.1: Nhận xét thư viện số HCMUTE
- Tìm kiếm sách, tài liệu
- Chủ yếu là tài liệu liên quan đến Trường Đại học Sư phạm Kỹ thuật
- Tải lên và chia sẻ tài liệu
- Thích, bình chọn, bình luận, chia sẻ lên mạng xã hội
1.3 Phân tích yêu cầu của dự án
Xây dựng một trang web để chia sẻ tài liệu học tập cho sinh viên giữa các trường đại học, cao đẳng Người dùng có thể tìm đọc và chia sẻ tài liệu của mình với những người khác Ngoài ra, hệ thống còn được quản lý bởi admin và người quản lý nhằm kiểm soát nguồn tài liệu được chia sẻ Các chức năng chính của chương trình bao gồm:
Bảng 0.2.3.: Danh sách chức năng chính Đối tượng sử dụng Các chức năng thực hiện
Sinh viên Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đọc tài liệu
Tìm kiếm tài liệu Thích tài liệu Lưu tài liệu Đánh giá tài liệu
9 Đăng tài liệu Cập nhật tài liệu Xoá tài liệu
Quản lý Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu cho trường Cập nhật tài liệu của trường Xoá tài liệu của trường Thêm người dùng cho trường Cập nhật người dùng của trường Xoá người dùng của trường Xoá đánh giá của trường Phê duyệt tài liệu của trường
Admin Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu
Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu
Cập nhật tài liệu Xoá tài liệu Thêm người dùng Cập nhật người dùng Xoá người dùng Thêm trường Cập nhật trường Xoá trường Kích hoạt trường Thêm danh mục Cập nhật danh mục Xoá danh mục Kích hoạt danh mục Thêm lĩnh vực Cập nhật lĩnh vực Xoá lĩnh vực Kích hoạt lĩnh vực Phê duyệt tài liệu Thống kê
1.4 Yêu cầu chức năng nghiệp vụ
1.5 Danh sách yêu cầu chức năng nghiệp vụ
Quản lý thông tin cá nhân
Bảng 0.2: Yêu cầu chức năng quản lý thông tin cá nhân
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin cá nhân Tra cứu
2 Cập nhật thông tin cá nhân Lưu trữ
Bảng 0.3: Yêu cầu chức năng quản lý người dùng
Bảng 0.4: Yêu cầu chức năng quản lý tài liệu
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin người dùng Tra cứu
2 Cập nhật thông tin người dùng Lưu trữ
3 Xoá người dùng Lưu trữ
4 Số lượng người dùng Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem tài liệu Tra cứu
2 Tìm kiếm tài liệu Tra cứu
3 Đăng tài liệu Lưu trữ
4 Cập nhật tài liệu Lưu trữ
5 Xoá tài liệu Lưu trữ
6 Thích tài liệu Lưu trữ
Bảng 0.5: Yêu cầu chức năng quản lý danh mục
Bảng 0.6: Yêu cầu chức năng quản lý lĩnh vực
7 Lưu tài liệu Lưu trữ
8 Đánh giá tài liệu Lưu trữ
9 Phê duyệt tài liệu Lưu trữ
10 Số lượng tài liệu Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem danh mục Tra cứu
2 Cập nhật danh mục Lưu trữ
3 Xoá danh mục Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem lĩnh vực Tra cứu
2 Cập nhật lĩnh vực Lưu trữ
3 Xoá lĩnh vực Lưu trữ
Bảng 0.7: Yêu cầu chức năng quản lý trường
Bảng 0.8: Yêu cầu chức năng quản lý đánh giá
1.6 Danh sách yêu cầu chức năng hệ thống
Bảng 0.9: Danh sách yêu cầu chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
2 Cập nhật trường Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem đánh giá Tra cứu
2 Xoá đánh giá Lưu trữ
3 Đánh giá trung bình Tính toán
- Sinh viên: tìm kiếm, đọc tài liệu; thích, lưu, đánh giá tài liệu; đăng, cập nhật, xoá tài liệu
- Quản lý: đăng, cập nhật, xoá tài liệu của trường; thêm, cập nhật, xoá người dùng của trường; phê duyệt tài liệu của trường; xoá đánh giá của tài liệu thuộc trường
- Admin: đăng, cập nhật, xoá tài liệu; thêm, cập nhật, xoá người dùng; thêm, cập nhật, xoá, kích hoạt danh mục; thêm, cập nhật, xoá, kích hoạt lĩnh vực; thêm, cập nhật, xoá, kích hoạt trường; phê duyệt tài liệu; thống kê
Hệ thống đảm bảo tài nguyên và dịch vụ chỉ được truy cập được bởi những tác nhân và người dùng nhất định
Cơ sở dữ liệu được sao lưu định kỳ, mã nguồn có khả năng khôi phục sao lưu nhanh
4 Thông báo Thông báo cho người dùng khi cần thiết: hoạt động thành công, thất bại,…
1.7 Danh sách yêu cầu phi chức năng
Bảng 0.10: Danh sách yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết
1 Tốc độ xử lý quá trình tương tác của người dùng Hiệu quả Có thể truy cập trực tuyến nhiều người cùng một lúc
2 Tốc độ tìm kiếm nhanh và chính xác Hiệu quả Tối đa 5s có kết quả tìm kiếm
Tiết kiệm thời gian, tối ưu được cơ sở dữ liệu, thu hẹp không gian, tránh mất dữ liệu
Tiết kiệm thời gian so với quản lý thủ công Dữ liệu được sao lưu trên máy, có thể phục hồi
4 Dễ dàng bảo trì, nâng cấp và phát triển Cải tiến
Có khả năng mở rộng và thêm các tính năng mới dễ dàng mà không làm phá vỡ cấu trúc hệ thống
5 Giao diện thân thiện, màu sắc đa dạng và rõ nét Tiện dụng
Giao diện dễ dàng cho người dùng sử dụng và tạo cảm giác hiện đại
6 Thao tác dễ dùng Tiện dụng Các thao tác đơn giản, gần gũi với người dùng
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU
2.1.1 Lược đồ chức năng tổng quan
Hình 2.1: Lược đồ chức năng
2.1.2.1 Chức năng quản lý thông tin cá nhân
Hình 2.2: Chức năng quản lý thông tin cá nhân
2.1.2.2 Chức năng quản lý tài liệu
Hình 2.3: Chức năng quản lý tài liệu
2.1.2.3 Chức năng quản lý người dùng
Hình 2.4: Chức năng quản lý người dùng
2.1.2.4 Chức năng quản lý danh mục
Hình 2.5: Chức năng quản lý danh mục
2.1.2.5 Chức năng quản lý lĩnh vực
Hình 2.6: Chức năng quản lý lĩnh vực
2.1.2.6 Chức năng quản lý trường
Hình 2.7: Chức năng quản lý trường
Bảng 2.1: Đặc tả chức năng đăng ký
Brief description Người dùng khách thực hiện đăng ký tài khoản mới
Pre-conditions Người dùng khách chưa có tài khoản và muốn tạo tài khoản mới
Post-conditions Người dùng khách tạo thành công tài khoản mới
1 Người dùng truy cập vào trang đăng ký
2 Người dùng nhập các thông tin yêu cầu
3 Người dùng nhấn nút Đăng ký
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống tạo tài khoản người dùng và thông báo đăng ký tài khoản thành công
4a Hệ thống phát hiện email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Mật khẩu có độ dài tối thiểu là 8 ký tự
Tài khoản email đăng ký là tài khoản Gmail
Người dùng chỉ được đăng ký với vai trò sinh viên và giảng viên
Bảng 2.2: Đặc tả chức năng đăng nhập
Brief description Người dùng thực hiện đăng nhập vào hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ
Post-conditions Người dùng đăng nhập vào hệ thống thành công và thực hiện được
22 các chức năng theo phân quyền
1 Người dùng truy cập vào trang đăng nhập
2 Người dùng nhập email và mật khẩu
3 Người dùng nhấn Đăng nhập
4 Hệ thống xác thực thông tin đăng nhập
5 Người dùng đăng nhập thành công vào hệ thống
4a Hệ thống không thể xác thực thông tin đăng nhập
4a1 Hệ thống hiển thị thông báo lỗi thông tin đăng nhập chưa chính xác
4a2 Use case quay lại bước 2 của Basic flows
1 Người dùng nhấn Đăng ký
2 Người dùng nhấn Quên mật khẩu
Bảng 2.3: Đặc tả chức năng đăng xuất
Brief description Người dùng thực hiện đăng xuất ra khỏi hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng xuất thành công khỏi hệ thống
1 Người dùng nhấn nút Đăng xuất
2 Hệ thống hiển thị thông báo xác nhận việc đăng xuất của người dùng
4 Hệ thống kết thúc phiên người dùng và đưa người dùng quay lại trang đăng nhập
3a Người dùng huỷ bỏ đăng xuất
3a1 Người dùng chọn huỷ bỏ
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu
Name Lấy lại mật khẩu
Brief description Người dùng muốn lấy lại mật khẩu đã quên
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ trên hệ thống
Post-conditions Người dùng đổi được mật khẩu thành công
1 Người dùng nhấn Quên mật khẩu
2 Người dùng nhập email của tài khoản muốn lấy lại mật khẩu
3 Người dùng nhấn Lấy mã
4 Hệ thống kiểm tra email và tài khoản trong cơ sở dữ liệu
5 Hệ thống gửi mã xác nhận qua email
6 Người dùng nhập mã xác nhận
7 Người dùng nhấn Xác nhận
8 Hệ thống kiểm tra mã xác nhận
9 Hệ thống hiển thị ô nhập mật khẩu mới và mật khẩu xác nhận
10 Người dùng nhập mật khẩu mới và mật khẩu xác nhận
11 Người dùng nhấn Đổi mật khẩu
12.Hệ thống kiểm tra mật khẩu mới và mật khẩu xác nhận nhận được
13 Hệ thống thông báo đổi mật khẩu thành công
4a Hệ thống phát hiện email nhận được chưa được đăng ký 4a1 Hệ thống thông báo email chưa được đăng ký
4a2 Use case quay lại bước 2 của Basic flows 8a Hệ thống kiểm tra thấy mã xác nhận người dùng nhập vào không đúng
8a1 Hệ thống thông báo sai mã xác nhận
8a2 Use case quay lại bước 6 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Bảng 2.5: Đặc tả chức năng đổi mật khẩu
Brief description Người dùng muốn đổi mật khẩu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi mật khẩu thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhập mật khẩu hiện tại, mật khẩu mới, mật khẩu xác nhận
3 Người dùng nhấn Đổi mật khẩu
4 Hệ thống kiểm tra mật khẩu người dùng nhập vào
5 Hệ thống lưu mật khẩu mới và thông báo cập nhật mật khẩu thành công
4a Hệ thống kiểm tra thấy mật khẩu hiện tại không đúng 4a1 Hệ thống thông báo mật khẩu hiện tại không đúng 4a2 Use case quay lại bước 1 của Basic flows
2.2.6 Xem thông tin cá nhân
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân
Name Xem thông tin cá nhân
Brief description Người dùng xem thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xem được thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Hệ thống hiển thị thông tin cá nhân của người dùng Alternative flows
2.2.7 Cập nhật thông tin cá nhân
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân
Name Cập nhật thông tin cá nhân
Brief description Người dùng cập nhật thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng cập nhật thành công thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Người dùng thay đổi các thông tin cần thiết
4 Hệ thống kiểm tra thông tin nhập vào
5 Hệ thống lưu thay đổi, thông báo cập nhật thông tin cá nhân thành công và hiển thị trang cá nhân mới
4a Hệ thống kiểm tra thấy email người dùng vừa chỉnh sửa đã được đăng ký
4a1 Hệ thống thông báo email đã được đăng ký trước đó
4a2 Use case quay lại bước 2 của Basic flows
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện
Name Đổi ảnh đại diện
Brief description Người dùng đổi ảnh đại diện cho tài khoản của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi ảnh đại diện thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhấn Chọn ảnh
3 Người dùng chọn ảnh từ thiết bị
5 Hệ thống tải và lưu ảnh đại diện, thông báo cập nhật thành công và hiển thị ảnh đại diện mới mới
Bảng 2.9: Đặc tả chức năng đọc tài liệu
Brief description Người dùng đọc tài liệu
Actor Người dùng khách, sinh viên
Post- conditions Người dùng đọc được tài liệu mà mình muốn
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấp vào một tài liệu mà mình muốn đọc
3 Hệ thống hiển thị chi tiết tài liệu, trong đó nội dung tài liệu được hiển thị bằng trình xem PDF
Business rules Sinh viên chỉ đọc được những tài liệu công khai và tài liệu nội bộ của trường
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu
Name Tìm kiếm tài liệu
Brief description Người dùng tìm kiếm tài liệu
Actor Sinh viên, quản lý, admin
Post-conditions Người dùng tìm được các tài liệu mong muốn
1 Người dùng nhập từ khoá vào ô tìm kiếm trên trang web
2 Người dùng nhấn phím Enter hoặc biểu tượng tìm kiếm
3 Hệ thống tìm kiếm và hiển thị các tài liệu liên quan đến từ khoá nhận được
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.11: Đặc tả chức năng lọc tài liệu
Brief description Người dùng lọc tài liệu theo tiêu chí
Actor Người dùng khách, sinh viên
Post-conditions Người dùng thực hiện thao tác lọc để tìm ra các tài liệu thoả tiêu chí
1 Người dùng truy cập danh sách tài liệu
2 Người dùng chọn các tiêu chí lọc
3 Hệ thống tìm kiếm và hiển thị các tài liệu phù hợp với các tiêu chí lọc
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.12: Đặc tả chức năng thích tài liệu
Brief description Người dùng thêm tài liệu vào danh sách yêu thích
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa thích tài liệu dự định sẽ thích
Post-conditions Người dùng thêm tài liệu vào danh sách yêu thích thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng thích
3 Hệ thống thông báo đã thích tài liệu và tăng lượt thích lên
2a Người dùng muốn bỏ thích tài liệu
2a1 Người dùng nhấn vào biểu tượng thích
2a2 Hệ thống thông báo đã bỏ thích tài liệu và giảm lượt thích xuống
Bảng 2.13: Đặc tả chức năng lưu tài liệu
Brief description Người dùng thêm tài liệu vào danh sách đã lưu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa lưu tài liệu dự định sẽ lưu
Post- conditions Người dùng thêm tài liệu vào danh sách đã lưu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng lưu
3 Hệ thống thông báo đã lưu tài liệu
2a Người dùng muốn bỏ lưu tài liệu
2a1 Người dùng nhấn vào biểu tượng lưu
2a2 Hệ thống thông báo đã bỏ lưu tài liệu
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu
Name Đánh giá tài liệu
Brief description Người dùng đánh giá tài liệu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa đánh giá tài liệu dự định sẽ đánh giá
Post-conditions Người dùng đánh giá tài liệu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng chọn số sao và nhập lời đánh giá
4 Hệ thống kiểm tra thông tin nhận được
5 Hệ thống lưu lại đánh giá, cập nhật danh sách đánh giá và hiển thị thông báo đánh giá thành công
Bảng 2.15: Đặc tả chức năng đăng tài liệu
Brief description Người dùng đăng tải một tài liệu mới lên hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng tải thành công tài liệu lên hệ thống
1 Người dùng nhấn Tải lên/Thêm tài liệu
2 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
3 Người dùng nhấn Tải lên
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã thêm tài liệu thành công
2a Người dùng có vai trò là admin
2a1 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
2a2 Use case tiếp tục ở bước 3 của Basic flows
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu tài liệu, thông báo đã thêm tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin 5a2 Use case kết thúc
1 Sinh viên, quản lý sẽ tải tài liệu lên trường của mình
2 Quản lý và admin phê duyệt tài liệu do sinh viên tải lên
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu
Name Chỉnh sửa tài liệu
Brief description Người dùng chỉnh sửa tài liệu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng chỉnh sửa tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu
2 Người dùng nhấn Chỉnh sửa bên cạnh tài liệu
3 Người dùng chỉnh sửa các thông tin cần thiết cũng như tệp tài liệu
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã chỉnh sửa tài liệu thành công
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu lại tài liệu, thông báo đã chỉnh sửa tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin
1 Sinh viên chỉnh sửa tài liệu thì tài liệu sẽ đưa về trạng thái chờ duyệt
2 Quản lý thực hiện chỉnh sửa các tài liệu thuộc trường mà mình quản lý
Bảng 2.17: Đặc tả chức năng xoá tài liệu
Brief description Người dùng muốn xoá một tài liệu
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá tài liệu thành công
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấn Xoá bên cạnh tài liệu
3 Hệ thống hiển thị xác nhận xoá tài liệu
5 Hệ thống xoá tài liệu, hiển thị thông báo xoá thành công và cập nhật lại danh sách tài liệu
4a Người dùng huỷ bỏ xoá tài liệu
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.18: Đặc tả chức năng thêm người dùng
Brief description Người dùng thêm người dùng mới trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng thêm người dùng mới thành công
1 Người dùng nhấn Thêm người dùng
2 Người dùng nhập các thông tin được yêu cầu cho người dùng mới
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống lưu người dùng mới, sau đó hiển thị thông báo thêm người dùng thành công
2a Người dùng có vai trò admin
2a1 Người dùng nhập các thông tin được yêu cầu và chọn trường cho người dùng mới
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện thêm người dùng thuộc trường của mình
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng
Use case Chỉnh sửa người dùng
Brief description Người dùng chỉnh sửa thông tin của người dùng khác trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người chỉnh sửa thành công thông tin thông tin của người dùng khác
1 Người dùng truy cập vào danh sách người dùng do mình quản lý
2 Người dùng nhấn Chỉnh sửa bên cạnh tài khoản của người dùng muốn chỉnh sửa
3 Người dùng chỉnh sửa các thông tin cần thiết của người dùng
5 Hệ thống lưu lại thay đổi và hiển thị thông báo chỉnh sửa người dùng thành công
Alternative flows 2a Người dùng có vai trò admin
2a1 Người dùng chỉnh sửa các thông tin của người dùng và chọn trường cho người dùng (nếu muốn)
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện chỉnh sửa người dùng thuộc trường của mình
Bảng 2.20: Đặc tả chức năng xoá người dùng
Người dùng xoá một người dùng khác
Pre-conditions Người đã đăng nhập thành công vào hệ thống
Người dùng xoá thành công một người dùng khác
1 Người dùng truy cập vào danh sách người dùng mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh tài khoản của người dùng muốn xoá
3 Hệ thống hiển thị cảnh báo xác nhận xoá người dùng
5 Hệ thống xoá người dùng, hiển thị thông báo xoá người dùng thành công và cập nhật lại danh sách người dùng
4a Người dùng huỷ bỏ việc xoá người dùng khác
4a1 Người dùng chọn Huỷ bỏ
4a2 Use case kết thúc 5a: Hệ thống kiểm tra thấy người dùng đã đăng tải tài liệu lên
5a1 Hệ thống vô hiệu hoá tài khoản người dùng, hiển thị thông báo vô hiệu hoá tài khoản người dùng và cập nhật lại danh sách người dùng
Business rules Quản lý thực hiện xoá người dùng thuộc trường mà mình quản lý
Bảng 2.21: Đặc tả chức năng xoá đánh giá
Brief description Người dùng xoá đánh giá vi phạm của tài liệu
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá đánh giá thành công
1 Người dùng truy cập vào danh sách đánh giá của các tài liệu thuộc trường mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh đánh giá
3 Hệ thống hiển thị cảnh báo xác nhận xoá đánh giá
5 Hệ thống xoá đánh giá, hiển thị thông báo xoá đánh giá thành công và cập nhật lại danh sách đánh giá
4a Người dùng huỷ bỏ việc xoá đánh giá
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu
Name Phê duyệt tài liệu
Brief description Người dùng phê duyệt tài liệu do sinh viên tải lên
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng phê duyệt tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu đang chờ phê duyệt do mình quản lý
2 Người dùng nhấn Phê duyệt
3 Hệ thống hiển thị thông báo yêu cầu chọn hành động
4 Người dùng chọn Chấp nhận
Các công nghệ và thư viện được sử dụng
4.1.2 Tương tác và giao tiếp giữa các thành phần
Giao tiếp giữa client và server được thực hiện thông qua RESTful API
Client (ReactJS) sử dụng Axios – một thư viện HTTP của NodeJS để gửi các yêu cầu HTTP đến server Server (Spring Boot) định nghĩa và cung cấp các API endpoints để xử lý các yêu cầu nhận được từ phía client Nó sẽ bắt các yêu cầu, thực hiện xử lý cũng như trả về dữ liệu dưới dạng JSON
Server có tầng Controller chịu trách nhiệm điều khiển luồng xử lý của ứng dụng khi nhận được yêu cầu HTTP từ ReactJS cũng như là trả về các phản hồi HTTP Nó gọi các phương thức trong tầng Service để xử lý các logic nghiệp vụ cho hệ thống Tầng Service lại gọi các phương thức trong lớp Repository để tương tác với dữ liệu Repository sẽ giao tiếp với MySQL thông qua Spring Data JPA và nó cung cấp các phương thức để thao tác trên dữ liệu Kết quả sau khi thao tác sẽ được trả ngược lại theo luồng vừa rồi đến client
4.2 Các công nghệ và thư viện được sử dụng
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 đơ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 nghiệp vụ cho ứng dụng
Tính năng của Spring Boot:
- Tự động cấu hình: Spring Boot tự động cấu hình ứng dụng dựa trên thư viện có sẵn trong classpath, giảm bớt nhu cầu phải chỉ định các bean trong tệp cấu hình một cách thủ công
- Tính độc lập: các ứng dụng Spring Boot có tính tự đóng gói, cho phép chúng chạy độc lập mà không cần máy chủ bên ngoài Điều này giúp giảm xung đột và tăng tính di động của ứng dụng
- Hỗ trợ sẵn sàng triển khai cho môi trường sản xuất: Spring Boot cung cấp các công cụ tích hợp để kiểm tra sức khỏe và hiệu suất của ứng dụng, làm cho quá trình giám sát và quản lý trở nên hiệu quả trong môi trường sản xuất
- Cấu hình mặc định: Spring Boot cung cấp cấu hình POM (Project Object Model) mặc định thông qua một tệp pom.xml Nó cung cấp các thiết lập sẵn sàng để sử dụng ngay và cho phép thêm thủ công các thành phần phụ thuộc mong muốn
- Hỗ trợ Microservices: Spring Boot là công cụ hàng đầu để xây dựng các microservices, tích hợp mượt mà với các framework mạnh mẽ của Spring Cloud và hỗ trợ nhúng máy chủ bên ngoài trực tiếp vào ứng dụng, cho phép mỗi microservice chạy độc lập
- Máy chủ nhúng: Spring Boot hỗ trợ các máy chủ web phổ biến như Tomcat, Jetty và Undertow được nhúng trực tiếp vào ứng dụng, giúp ứng dụng chạy trực tiếp như các ứng dụng Java độc lập
Hình 0.2: Cấu trúc dự án Spring Boot đơn giản
4.2.1.2 Cách cấu hình và sử dụng Spring Boot
- Tạo một project sử dụng Maven với các dependency cần thiết của Spring MVC và Servlet API
Hình 0.3: Tạo dự án Spring Boot với Maven
- Một tập tin pom.xml để khai báo các dependency
Hình 0.4: Khai báo dependency trong pom.xml
- Tạo controller để xử lý yêu cầu HTTP
Hình 0.5: Controller trong Spring Boot
- Cuối cùng là phải có một web server dùng để triển khai ứng dụng lên chạy Spring Boot hỗ trợ web server nhúng trực tiếp nên không cần cấu hình từ bên ngoài Có nhiều web server để chạy ứng dụng trên web server như Tomcat, Jetty, Undertow, Wildfly (JBoss), và nhiều lựa chọn khác tùy thuộc vào yêu cầu cụ thể của dự án
Hình 0.6: Spring Boot và Tomcat
Spring Security là một module mạnh mẽ của dự án Spring, được sử dụng để quản lý bảo mật trong ứng dụng Java Nó cung cấp các tính năng mạnh mẽ để xác thực người dùng, kiểm soát quyền truy cập và quản lý bảo mật trong các ứng dụng web và dịch vụ
Các chức năng chính của Spring Security:
Spring Security hỗ trợ nhiều phương thức xác thực như xác thực bằng form login, xác thực bằng mã thông báo (token), xác thực LDAP, và nhiều phương thức khác
Cung cấp tích hợp với Spring Framework và nhiều cơ sở dữ liệu người dùng khác nhau
- Quản lý quyền truy cập (Authorization):
Spring Security cho phép đặt quyền truy cập (roles) cho các tài nguyên và phương thức trong ứng dụng
Hỗ trợ cả phương thức đơn giản như hasRole đến phương thức phức tạp hơn như @PreAuthorize trong Spring Expression Language (SpEL)
- Bảo vệ chống CSRF (Cross-Site Request Forgery):
Spring Security cung cấp bảo vệ chống CSRF mặc định bằng cách sử dụng token
Ngăn chặn các cuộc tấn công gửi yêu cầu từ một trang web khác mà người dùng đã đăng nhập
- Xử lý phiên (Session Management):
Hỗ trợ quản lý phiên người dùng, có thể cấu hình để sử dụng phiên thông thường hoặc phiên dựa trên token (stateless)
Ngăn chặn tấn công hiệu quả như session fixation
Sử dụng các filter để kiểm soát luồng xử lý request/response của ứng dụng
Cho phép tùy chỉnh và mở rộng các filter để thực hiện các nhiệm vụ bảo mật tùy chỉnh
4.2.2.2 Sử dụng Spring Security trong Spring Boot
Trong file pom.xml, thêm dependency cho Spring Security
Hình 0.7: Thêm dependency Spring Security vào dự án
Tùy chỉnh cấu hình Spring Security trong ứng dụng, có thể sử dụng các cấu hình Java hoặc XML
Hình 0.8: Cấu hình Filter Chain
Hình 0.9: Cấu hình xác thực
JSON Web Token (JWT) là một tiêu chuẩn mở được thiết kế để truyền thông tin một cách an toàn giữa các bên trong một chuỗi JSON Trong Spring Boot, JWT thường được sử dụng để xác thực và ủy quyền người dùng
Trong Spring Boot, có nhiều thư viện hỗ trợ việc xử lý JWT Một số thư viện phổ biến là Spring Security và jjwt (Java JWT)
- Tạo JWT (JWT Signing): Server sẽ tạo một JWT khi người dùng đăng nhập hoặc yêu cầu một token JWT sẽ bao gồm thông tin về người dùng và một chữ ký được tạo từ thông tin này
- Gửi JWT đến client: JWT được gửi về client, nơi nó có thể được lưu trữ (thường là trong cookies hoặc localStorage) để được sử dụng trong các yêu cầu tiếp theo
THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ
Quản lý và admin
6 Chương 6: Cài đặt và kiểm thử
STT Thời gian Công việc Ghi chú
1 28/2/2024-6/3/2024 Tham khảo, xác định đề tài
2 6/3/2024-13/4/2024 Khảo sát, phân tích và xác định các yêu cầu của đề tài
3 13/3/2024-20/3/2024 Xây dựng lược đồ chức năng, đặc tả chức năng
4 20/3/2024- 27/3/2024 Xây dựng lược đồ tuần tự
5 27/3/2024- 3/4/2024 Thiết kế giao diện phần sinh viên và người dùng khách
6 3/4/2024 – 10/4/2024 Thiết kế và xây dựng cơ sở dữ liệu
8 17/4/2024-24/4/2024 Kết nối giao diện và back-end cho sinh viên và người dùng khách
9 24/4/2024-1/5/2024 Thiết kế giao diện phần quản lý và admin
10 1/5/2024 – 8/5/2024 Kết nối giao diện và back-end cho quản lý và admin
11 8/5/2024 -15/5/2024 Hoàn thiện các chức năng và bổ sung các chức năng bị thiếu
12 15/5/2024 – 22/5/2024 Kiểm thử lại trang web, sửa chữa lỗi
15 5/6/2024 – 28/6/2024 Chỉnh sửa báo cáo và làm
Vu Hoang Anh Ý kiến của giáo viên hướng dẫn
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2 MỤC ĐÍCH CỦA ĐỀ TÀI 1
CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 3
1.2 Khảo sát một số phần mềm 3
1.3 Phân tích yêu cầu của dự án 8
1.4 Yêu cầu chức năng nghiệp vụ 10
1.5 Danh sách yêu cầu chức năng nghiệp vụ 11
1.6 Danh sách yêu cầu chức năng hệ thống 14
1.7 Danh sách yêu cầu phi chức năng 15
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU 17
2.1.1 Lược đồ chức năng tổng quan 17
2.2.6 Xem thông tin cá nhân 26
2.2.7 Cập nhật thông tin cá nhân 27
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 59
3.1.6 Xem thông tin cá nhân 63
3.1.7 Cập nhật thông tin cá nhân 64
CHƯƠNG 4: KIẾN TRÚC HỆ THỐNG 90
4.1.2 Tương tác và giao tiếp giữa các thành phần 91
4.2 Các công nghệ và thư viện được sử dụng 91
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 117
5.1 Sinh viên và người dùng khách 117
5.1.9 Danh sách tài liệu chính 126
5.1.10 Danh sách tài liệu đã thích 128
5.1.11 Danh sách tài liệu đã lưu 129
5.1.12 Danh sách tài liệu đã tải lên đã được duyệt 130
5.1.13 Danh sách tài liệu đã tải lên đang đợi duyệt 131
5.1.14 Danh sách tài liệu đã tải lên bị từ chối 131
5.1.17 Danh sách tài liệu của một người 135
5.2.27 Danh sách tài liệu đang chờ 175
CHƯƠNG 6 CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ 180
6.1.2 Cài đặt với docker compose 180
DANH MỤC TÀI LIỆU THAM KHẢO 188
Hình 1.1: Trang chủ Studocu 4
Hình 1.2: Danh sách tài liệu theo trường học 4
Hình 1.3: Xem chi tiết tài liệu 5
Hình 1.4: Tải tài liệu lên 5
Hình 1.5: Trang chủ thư viện số HCMUTE 6
Hình 1.6: Chi tiết tài liệu 7
Hình 1.7: Tải tài liệu 7
Hình 2.1: Lược đồ chức năng 17
Hình 2.2: Chức năng quản lý thông tin cá nhân 17
Hình 2.3: Chức năng quản lý tài liệu 18
Hình 2.4: Chức năng quản lý người dùng 18
Hình 2.5: Chức năng quản lý danh mục 19
Hình 2.6: Chức năng quản lý lĩnh vực 19
Hình 2.7: Chức năng quản lý trường 20
Hình 3.1: Lược đồ tuần tự chức năng đăng ký 59
Hình 3.2: Lược đồ tuần tự chức năng đăng nhập 60
Hình 3.3: Lược đồ tuần tự chức năng đăng xuất 60
Hình 3.4: Lược đồ tuần tự chức năng lấy lại mật khẩu 61
Hình 3.5: Lược đồ tuần tự chức năng đổi mật khẩu 62
Hình 3.6: Lược đồ tuần tự chức năng xem thông tin cá nhân 63
Hình 3.7: Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 64
Hình 3.8: Lược đồ tuần tự chức năng đổi ảnh đại diện 65
Hình 3.9: Lược đồ tuần tự chức năng đọc tài liệu 65
Hình 3.10: Lược đồ tuần tự chức năng tìm kiếm tài liệu 66
Hình 3.11: Lược đồ tuần tự chức năng lọc tài liệu 66
Hình 3.12: Lược đồ tuần tự chức năng thích tài liệu 67
Hình 3.13: Lược đồ tuần tự chức năng lưu tài liệu 67
Hình 3.14: Lược đồ tuần tự chức năng đánh giá tài liệu 68
Hình 3.15: Lược đồ tuần tự chức năng đăng tài liệu 69
Hình 3.16: Lược đồ tuần tự chức năng chỉnh sửa tài liệu 70
Hình 3.17: Lược đồ tuần tự chức năng xoá tài liệu 71
Hình 3.18: Lược đồ tuần tự chức năng thêm người dùng 72
Hình 3.19: Lược đồ tuần tự chức năng chỉnh sửa người dùng 73
Hình 3.20: Lược đồ tuần tự chức năng xoá người dùng 74
Hình 3.21: Lược đồ tuần tự chức năng xoá đánh giá 75
Hình 3.22: Lược đồ tuần tự chức năng phê duyệt tài liệu 76
Hình 3.23: Lược đồ tuần tự chức năng thêm trường 77
Hình 3.24: Lược đồ tuần tự chức năng chỉnh sửa trường 78
Hình 3.25: Lược đồ tuần tự chức năng xoá trường 79
Hình 3.26: Lược đồ tuần tự chức năng kích hoạt trường 80
Hình 3.27: Lược đồ tuần tự chức năng thêm danh mục 81
Hình 3.28: Lược đồ tuần tự chức năng chỉnh sửa danh mục 82
Hình 3.29: Lược đồ tuần tự chức năng xoá danh mục 83
Hình 3.30: Lược đồ tuần tự chức năng kích hoạt danh mục 84
Hình 3.31: Lược đồ tuần tự chức năng thêm lĩnh vực 85
Hình 3.32: Lược đồ tuần tự chức năng chỉnh sửa lĩnh vực 86
Hình 3.33: Lược đồ tuần tự chức năng xoá lĩnh vực 87
Hình 3.34: Lược đồ tuần tự chức năng kích hoạt lĩnh vực 88
Hình 3.35: Lược đồ tuần tự chức năng thống kê 88
Hình 3.36: Lược đồ lớp của hệ thống 89
Hình 4.1: Kiến trúc tổng quan của hệ thống 90
Hình 4.2: Cấu trúc dự án Spring Boot đơn giản 92
Hình 4.3: Tạo dự án Spring Boot với Maven 93
Hình 4.4: Khai báo dependency trong pom.xml 94
Hình 4.5: Controller trong Spring Boot 94
Hình 4.6: Spring Boot và Tomcat 95
Hình 4.7: Thêm dependency Spring Security vào dự án 96
Hình 4.8: Cấu hình Filter Chain 97
Hình 4.9: Cấu hình xác thực 97
Hình 4.10: Thêm JWT Filter vào SecurityFilterChain 98
Hình 4.12: Tạo và trả JWT khi login 99
Hình 4.13: Repository interface trong Spring Data JPA 100
Hình 4.14: Truy vấn query tuỳ chỉnh 100
Hình 4.15: Thêm dependency của Spring Data JPA 101
Hình 4.16: Cấu hình kết nối MySQL trong application.yml 101
Hình 4.17: Tạo các entity classes 102
Hình 4.18: Kiến trúc ReactJS 103
Hình 4.19: Cấu trúc thư mục ReactJS 103
Hình 4.22: Minh hoạ tệp JSX 106
Hình 4.23: Ví dụ về useState 106
Hình 4.24: Ví dụ về useEffect 107
Hình 4.25: Chuyển hướng với useNavigate 107
Hình 4.26: Lấy đường dẫn hiện tại bằng useLocation 108
Hình 4.27: Truy xuất tham số từ URL với useParams 108
Hình 4.28: Minh hoạ props 108
Hình 4.29: Axios trong package.json 109
Hình 4.30: Sử dụng axios để gửi yêu cầu GET lấy tất cả danh mục 109
Hình 4.31: Tạo dự án Google Cloud 110
Hình 4.32: Giao diện APIs & Services 111
Hình 4.33: Kích hoạt Google Drive API 111
Hình 4.34: Giao diện Credentials để tạo service account 112
Hình 4.35: Tạo service account 112
Hình 4.37: Google Drive API dependency 113
Hình 4.38: Cấu hình Bean cho Google Drive API 114
Hình 4.39: Xoá tệp bằng Google Drive API 114
Hình 4.40: Tải lên tệp bằng Google Drive API 114
Hình 4.41: Kiến trúc của MySQL 115
Hình 4.42: Sử dụng MySQL thiết kế cơ sở dữ liệu 116
Hình 5.1: Giao diện trang chủ 117
Hình 5.2: Giao diện đăng nhập 118
Hình 5.3: Giao diện đăng ký 119
Hình 5.4: Giao diện quên mật khẩu 120
Hình 5.5: Giao diện thanh trên 121
Hình 5.6: Giao diện thanh bên 122
Hình 5.7: Giao diện thông tin cá nhân 123
Hình 5.8: Giao diện chi tiết tài liệu 125
Hình 5.9: Giao diện danh sách tài liệu chính 127
Hình 5.10: Giao diện danh sách tài liệu đã thích 128
Hình 5.11: Giao diện danh sách tài liệu đã lưu 129
Hình 5.12: Giao diện danh sách tài liệu tải lên đã được duyệt 130
Hình 5.13: Giao diện danh sách tài liệu tải lên đang đợi duyệt 131
Hình 5.14: Giao diện danh sách tài liệu tải lên bị từ chối 132
Hình 5.15: Giao diện đăng tài liệu 133
Hình 5.16: Giao diện chỉnh sửa tài liệu 134
Hình 5.17: Giao diện danh sách tài liệu của một người 136
Hình 5.18: Giao diện đăng nhập 137
Hình 5.19: Giao diện quên mật khẩu 138
Hình 5.20: Giao diện thông tin cá nhân 140
Hình 5.21: Giao diện trang chủ quản trị 143
Hình 5.22: Giao diện danh sách tài liệu 144
Hình 5.23: Giao diện chi tiết tài liệu 146
Hình 5.24: Giao diện thêm tài liệu 147
Hình 5.25: Giao diện chỉnh sửa tài liệu 149
Hình 5.26: Giao diện xoá tài liệu 150
Hình 5.27: Giao diện danh sách danh mục 151
Hình 5.28: Giao diện thêm danh mục 153
Hình 5.29: Giao diện chỉnh sửa danh mục 154
Hình 5.30: Giao diện xoá danh mục 155
Hình 5.31: Giao diện danh sách lĩnh vực 156
Hình 5.32: Giao diện thêm lĩnh vực 158
Hình 5.33: Giao diện chỉnh sửa lĩnh vực 159
Hình 5.34: Giao diện xoá lĩnh vực 160
Hình 5.35: Giao diện danh sách trường 161
Hình 5.36: Giao diện thêm trường 163
Hình 5.37: Giao diện chỉnh sửa trường 164
Hình 5.38: Giao diện chỉnh sửa trường 165
Hình 5.39: Giao diện danh sách người dùng 166
Hình 5.40: Giao diện chi tiết người dùng 168
Hình 5.41: Giao diện thêm người dùng 170
Hình 5.42: Giao diện chỉnh sửa người dùng 172
Hình 5.43: Giao diện xoá người dùng 174
Hình 5.44: Giao diện danh sách tài liệu đang chờ 175
Hình 5.45: Giao diện phê duyệt tài liệu 176
Hình 5.46: Giao diện từ chối tài liệu 177
Hình 5.47: Giao diện danh sách đánh giá 178
Hình 5.48: Giao diện xoá đánh giá 179
Bảng 1.1: Nhận xét trang web Studocu 5
Bảng 1.2: Nhận xét thư viện số HCMUTE 7
Bảng 1.3: Danh sách chức năng chính 8
Bảng 1.4: Yêu cầu chức năng quản lý thông tin cá nhân 11
Bảng 1.5: Yêu cầu chức năng quản lý người dùng 12
Bảng 1.6: Yêu cầu chức năng quản lý tài liệu 12
Bảng 1.7: Yêu cầu chức năng quản lý danh mục 13
Bảng 1.8: Yêu cầu chức năng quản lý lĩnh vực 13
Bảng 1.9: Yêu cầu chức năng quản lý trường 14
Bảng 1.10: Yêu cầu chức năng quản lý đánh giá 14
Bảng 1.11: Danh sách yêu cầu chức năng hệ thống 14
Bảng 1.12: Danh sách yêu cầu phi chức năng 15
Bảng 2.1: Đặc tả chức năng đăng ký 20
Bảng 2.2: Đặc tả chức năng đăng nhập 21
Bảng 2.3: Đặc tả chức năng đăng xuất 22
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu 23
Bảng 2.5: Đặc tả chức năng đổi mật khẩu 25
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân 26
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân 27
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện 28
Bảng 2.9: Đặc tả chức năng đọc tài liệu 29
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu 30
Bảng 2.11: Đặc tả chức năng lọc tài liệu 31
Bảng 2.12: Đặc tả chức năng thích tài liệu 32
Bảng 2.13: Đặc tả chức năng lưu tài liệu 33
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu 34
Bảng 2.15: Đặc tả chức năng đăng tài liệu 35
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu 36
Bảng 2.17: Đặc tả chức năng xoá tài liệu 37
Bảng 2.18: Đặc tả chức năng thêm người dùng 38
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng 40Bảng 2.20: Đặc tả chức năng xoá người dùng 41Bảng 2.21: Đặc tả chức năng xoá đánh giá 43Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu 44Bảng 2.23: Đặc tả chức năng thêm trường 45Bảng 2.24: Đặc tả chức năng chỉnh sửa trường 46Bảng 2.25: Đặc tả chức năng xoá trường 47Bảng 2.26: Đặc tả chức năng kích hoạt trường 48Bảng 2.27: Đặc tả chức năng thêm danh mục 49Bảng 2.28: Đặc tả chức năng chỉnh sửa danh mục 50Bảng 2.29: Đặc tả chức năng xoá danh mục 51Bảng 2.30: Đặc tả chức năng kích hoạt lĩnh vực 53Bảng 2.31: Đặc tả chức năng thêm lĩnh vực 54Bảng 2.32: Đặc tả chức năng chỉnh sửa lĩnh vực 55Bảng 2.33: Đặc tả chức năng xoá lĩnh vực 56Bảng 2.34: Đặc tả chức năng kích hoạt lĩnh vực 57Bảng 2.35: Đặc tả chức năng thống kê 58Bảng 5.1: Bảng mô tả giao diện trang chủ 117Bảng 5.2: Bảng mô tả giao diện đăng nhập 118Bảng 5.3: Bảng mô tả giao diện đăng ký 119Bảng 5.4: Bảng mô tả giao diện quên mật khẩu 120Bảng 5.5: Bảng mô tả giao diện thanh trên 121Bảng 5.6: Bảng mô tả giao diện thanh bên 122Bảng 5.7: Bảng mô tả giao diện thông tin cá nhân 123Bảng 5.8: Bảng mô tả giao diện chi tiết tài liệu 125Bảng 5.9: Bảng mô tả giao diện danh sách tài liệu chính 127Bảng 5.10: Bảng mô tả giao diện danh sách tài liệu đã thích 128Bảng 5.11: Bảng mô tả giao diện danh sách tài liệu đã lưu 129Bảng 5.12: Bảng mô tả giao diện danh sách tài liệu tải lên đã được duyệt 130Bảng 5.13: Bảng mô tả giao diện danh sách tài liệu tải lên đang đợi duyệt 131Bảng 5.14: Bảng mô tả giao diện danh sách tài liệu tải lên bị từ chối 132Bảng 5.15: Bảng mô tả giao diện đăng tài liệu 133
Bảng 5.16: Bảng mô tả giao diện chỉnh sửa tài liệu 135Bảng 5.17: Bảng mô tả giao diện danh sách tài liệu của một người 136Bảng 5.18: Bảng mô tả giao diện đăng nhập 137Bảng 5.19: Bảng mô tả giao diện quên mật khẩu 138Bảng 5.20: Bảng mô tả giao diện thông tin cá nhân 141Bảng 5.21: Bảng mô tả giao diện trang chủ quản trị 143Bảng 5.22: Bảng mô tả giao diện danh sách tài liệu 145Bảng 5.23: Bảng mô tả giao diện chi tiết tài liệu 146Bảng 5.24: Bảng mô tả giao diện thêm tài liệu 148Bảng 5.25: Bảng mô tả giao diện chỉnh sửa tài liệu 149Bảng 5.26: Bảng mô tả giao diện xoá tài liệu 150Bảng 5.27: Bảng mô tả giao diện danh sách danh mục 151Bảng 5.28: Bảng mô tả giao diện thêm danh mục 153Bảng 5.29: Bảng mô tả giao diện chỉnh sửa danh mục 154Bảng 5.30: Bảng mô tả giao diện xoá danh mục 155Bảng 5.31: Bảng mô tả giao diện danh sách lĩnh vực 156Bảng 5.32: Bảng mô tả giao diện thêm lĩnh vực 158Bảng 5.33: Bảng mô tả giao diện chỉnh sửa lĩnh vực 159Bảng 5.34: Bảng mô tả giao diện xoá lĩnh vực 160Bảng 5.35: Bảng mô tả giao diện danh sách trường 161Bảng 5.36: Bảng mô tả giao diện thêm trường 163Bảng 5.37: Bảng mô tả giao diện chỉnh sửa trường 164Bảng 5.38: Bảng mô tả giao diện xoá trường 165Bảng 5.39: Bảng mô tả giao diện danh sách người dùng 166Bảng 5.40: Bảng mô tả giao diện chi tiết người dùng 168Bảng 5.41: Bảng mô tả giao diện thêm người dùng 171Bảng 5.42: Bảng mô tả giao diện chỉnh sửa người dùng 173Bảng 5.43: Bảng mô tả giao diện xoá người dùng 174Bảng 5.44: Bảng mô tả giao diện danh sách tài liệu đang chờ 175Bảng 5.45: Bảng mô tả giao diện phê duyệt tài liệu 176Bảng 5.46: Bảng mô tả giao diện từ chối tài liệu 177Bảng 5.47: Bảng mô tả giao diện danh sách đánh giá 178
Bảng 5.48: Bảng mô tả giao diện xoá đánh giá 179Bảng 6.1: Sản phẩm deploy 180Bảng 6.2: Lịch trình công việc 181Bảng 6.3: Chiến lược kiểm thử 182Bảng 6.4: Kết quả kiểm thử 183
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại ngày nay, công nghệ thông tin đã và đang phát triển nhanh chóng, mạnh mẽ trong tất cả các lĩnh vực đời sống Từ những bước tiến vượt bậc trong lĩnh vực máy tính, mạng lưới, đến sự bùng nổ của Internet và sự xuất hiện của trí tuệ nhân tạo, công nghệ thông tin dần chuyển đổi cách con người sống, làm việc và tương tác với nhau Đặc biệt, nó đã mở ra nhiều cơ hội mới trong việc chia sẻ và truy cập thông tin Giờ đây, con người có thể tiếp cận và sử dụng nguồn tài nguyên trên mạng từ xa, không giới hạn thời gian và địa điểm Điều này cũng mở ra tương lai cho các dịch vụ lưu trữ và cung cấp tài nguyên đến cho người dùng trực tuyến
Lĩnh vực giáo dục cũng chứng kiến sự thay đổi mạnh mẽ dưới tác động của công nghệ Các mô hình giảng dạy và học tập truyền thống dần dần chuyển đổi sang môi trường máy tính và trực tuyến Kèm theo đó là nhu cầu cho việc sử dụng các nguồn tài nguyên học tập tăng lên một cách mạnh mẽ Nếu như trước kia, khi muốn tìm hiểu và học tập về một nội dung, lĩnh vực nào đó, sinh viên sẽ cần phải có một bản tài liệu hoặc một cuốn sách bằng giấy Tuy nhiên, ngày nay, sinh viên hầu như có thể truy cập mạng Internet để tìm và sử dụng các tài liệu đó Điều này vừa tạo sự tiện lợi cho người học cũng như cung cấp khả năng tiếp cận kho tài liệu phong phú Tuy nhiên, việc học tập là không giới hạn ở chỉ mỗi một trường đại học Mỗi trường đại học sẽ có một nguồn tài liệu bổ ích và quý giá khác nhau Do đó, em nghĩ đến ý tưởng tạo một trang web tổng hợp và phân loại tài liệu theo các trường đại học, cao đẳng nhằm cung cấp một nguồn tài nguyên phong phú và bổ ích đến các sinh viên
Xuất phát từ ý tưởng đó, em xin thực hiện đề tài Xây dựng diễn đàn chia sẻ tài liệu cho sinh viên
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Mục đích của đề tài này là tạo nên một trang web diễn đàn cung cấp một kho tài liệu bổ ích và phong phú đến cho sinh viên, giúp cho sinh viên tiếp cận tài liệu học tập một cách tiện lợi và hiệu quả
- Đối tượng nghiên cứu Đề tài tập trung nghiên cứu những vấn đề sau:
Các kỹ thuật phân tích thiết kế hệ thống
Tìm hiểu về Spring Boot trên nền tảng Java để xây dựng API cho hệ thống
Tìm hiểu về React để xây dựng giao diện người dùng
Tìm hiểu về Google Drive API để lưu trữ tài liệu
Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ, phân loại
PHẦN NỘI DUNG CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 1.1 Phân tích hiện trạng
Ngày nay, Internet đã và đang phát triển một cách chóng mặt và trở nên rất phổ biến Sự tiện lợi mà Internet mang lại trong các lĩnh vực đời sống và xã hội là điều không thể phủ nhận Trong đó, nhu cầu sử dụng và truy cập nguồn tài liệu học tập trên Internet là rất là lớn Internet cung cấp một lượng tài liệu khổng lồ và cực kỳ đa dạng cho học sinh, sinh viên sử dụng Trong số đó, có hàng nghìn, hàng chục nghìn trang web chuyên về cung cấp tài liệu đến cho người học
Nhìn chung, các trang web cung cấp lượng tài liệu đa dạng ở nhiều lĩnh vực và thể loại khác nhau Tuy nhiên, điều này cũng đặt ra một số thách thức và vấn đề:
- Không phải tất cả các nguồn tài liệu trên Internet đều đảm bảo về chất lượng và tính tin cậy Có rất nhiều tài liệu không chính xác hoặc không được kiểm chứng một cách đầy đủ
- Một số trang web yêu cầu người sử dụng trả phí để có quyền truy cập đầy đủ nội dung
- Một số trang web chứa quảng cáo gây làm phiền và ảnh hưởng đến trải nghiệm người dùng
- Người học cần phải có kỹ năng tìm kiếm trên Internet để có thể tận dụng tối đa nguồn tài liệu
1.2 Khảo sát một số phần mềm
Đường dẫn trang web: https://www.studocu.com/
Hình 0.1: Trang chủ Studocu
Hình 0.1.: Danh sách tài liệu theo trường học
Hình 0.3: Xem chi tiết tài liệu
Hình 0.4: Tải tài liệu lên
Bảng 0.1: Nhận xét trang web Studocu
- Tìm kiếm khoá học, sách, tài liệu
- Nguồn tài liệu chưa được kiểm soát chặt chẽ
- Tải lên và chia sẻ tài liệu
- Thích, bỏ thích, bình luận, lưu, chia sẻ lên mạng xã hội
- Đăng ký Premium để truy cập các tính năng như tài liệu nâng cao, tải, in tài liệu
Đường dẫn trang web: https://thuvienso.hcmute.edu.vn/
Hình 0.5: Trang chủ thư viện số HCMUTE
Hình 0.7: Chi tiết tài liệu
Hình 0.8: Tải tài liệu
Bảng 0.1: Nhận xét thư viện số HCMUTE
- Tìm kiếm sách, tài liệu
- Chủ yếu là tài liệu liên quan đến Trường Đại học Sư phạm Kỹ thuật
- Tải lên và chia sẻ tài liệu
- Thích, bình chọn, bình luận, chia sẻ lên mạng xã hội
1.3 Phân tích yêu cầu của dự án
Xây dựng một trang web để chia sẻ tài liệu học tập cho sinh viên giữa các trường đại học, cao đẳng Người dùng có thể tìm đọc và chia sẻ tài liệu của mình với những người khác Ngoài ra, hệ thống còn được quản lý bởi admin và người quản lý nhằm kiểm soát nguồn tài liệu được chia sẻ Các chức năng chính của chương trình bao gồm:
Bảng 0.2.3.: Danh sách chức năng chính Đối tượng sử dụng Các chức năng thực hiện
Sinh viên Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đọc tài liệu
Tìm kiếm tài liệu Thích tài liệu Lưu tài liệu Đánh giá tài liệu
9 Đăng tài liệu Cập nhật tài liệu Xoá tài liệu
Quản lý Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu cho trường Cập nhật tài liệu của trường Xoá tài liệu của trường Thêm người dùng cho trường Cập nhật người dùng của trường Xoá người dùng của trường Xoá đánh giá của trường Phê duyệt tài liệu của trường
Admin Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu
Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu
Cập nhật tài liệu Xoá tài liệu Thêm người dùng Cập nhật người dùng Xoá người dùng Thêm trường Cập nhật trường Xoá trường Kích hoạt trường Thêm danh mục Cập nhật danh mục Xoá danh mục Kích hoạt danh mục Thêm lĩnh vực Cập nhật lĩnh vực Xoá lĩnh vực Kích hoạt lĩnh vực Phê duyệt tài liệu Thống kê
1.4 Yêu cầu chức năng nghiệp vụ
1.5 Danh sách yêu cầu chức năng nghiệp vụ
Quản lý thông tin cá nhân
Bảng 0.2: Yêu cầu chức năng quản lý thông tin cá nhân
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin cá nhân Tra cứu
2 Cập nhật thông tin cá nhân Lưu trữ
Bảng 0.3: Yêu cầu chức năng quản lý người dùng
Bảng 0.4: Yêu cầu chức năng quản lý tài liệu
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin người dùng Tra cứu
2 Cập nhật thông tin người dùng Lưu trữ
3 Xoá người dùng Lưu trữ
4 Số lượng người dùng Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem tài liệu Tra cứu
2 Tìm kiếm tài liệu Tra cứu
3 Đăng tài liệu Lưu trữ
4 Cập nhật tài liệu Lưu trữ
5 Xoá tài liệu Lưu trữ
6 Thích tài liệu Lưu trữ
Bảng 0.5: Yêu cầu chức năng quản lý danh mục
Bảng 0.6: Yêu cầu chức năng quản lý lĩnh vực
7 Lưu tài liệu Lưu trữ
8 Đánh giá tài liệu Lưu trữ
9 Phê duyệt tài liệu Lưu trữ
10 Số lượng tài liệu Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem danh mục Tra cứu
2 Cập nhật danh mục Lưu trữ
3 Xoá danh mục Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem lĩnh vực Tra cứu
2 Cập nhật lĩnh vực Lưu trữ
3 Xoá lĩnh vực Lưu trữ
Bảng 0.7: Yêu cầu chức năng quản lý trường
Bảng 0.8: Yêu cầu chức năng quản lý đánh giá
1.6 Danh sách yêu cầu chức năng hệ thống
Bảng 0.9: Danh sách yêu cầu chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
2 Cập nhật trường Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem đánh giá Tra cứu
2 Xoá đánh giá Lưu trữ
3 Đánh giá trung bình Tính toán
- Sinh viên: tìm kiếm, đọc tài liệu; thích, lưu, đánh giá tài liệu; đăng, cập nhật, xoá tài liệu
- Quản lý: đăng, cập nhật, xoá tài liệu của trường; thêm, cập nhật, xoá người dùng của trường; phê duyệt tài liệu của trường; xoá đánh giá của tài liệu thuộc trường
- Admin: đăng, cập nhật, xoá tài liệu; thêm, cập nhật, xoá người dùng; thêm, cập nhật, xoá, kích hoạt danh mục; thêm, cập nhật, xoá, kích hoạt lĩnh vực; thêm, cập nhật, xoá, kích hoạt trường; phê duyệt tài liệu; thống kê
Hệ thống đảm bảo tài nguyên và dịch vụ chỉ được truy cập được bởi những tác nhân và người dùng nhất định
Cơ sở dữ liệu được sao lưu định kỳ, mã nguồn có khả năng khôi phục sao lưu nhanh
4 Thông báo Thông báo cho người dùng khi cần thiết: hoạt động thành công, thất bại,…
1.7 Danh sách yêu cầu phi chức năng
Bảng 0.10: Danh sách yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết
1 Tốc độ xử lý quá trình tương tác của người dùng Hiệu quả Có thể truy cập trực tuyến nhiều người cùng một lúc
2 Tốc độ tìm kiếm nhanh và chính xác Hiệu quả Tối đa 5s có kết quả tìm kiếm
Tiết kiệm thời gian, tối ưu được cơ sở dữ liệu, thu hẹp không gian, tránh mất dữ liệu
Tiết kiệm thời gian so với quản lý thủ công Dữ liệu được sao lưu trên máy, có thể phục hồi
4 Dễ dàng bảo trì, nâng cấp và phát triển Cải tiến
Có khả năng mở rộng và thêm các tính năng mới dễ dàng mà không làm phá vỡ cấu trúc hệ thống
5 Giao diện thân thiện, màu sắc đa dạng và rõ nét Tiện dụng
Giao diện dễ dàng cho người dùng sử dụng và tạo cảm giác hiện đại
6 Thao tác dễ dùng Tiện dụng Các thao tác đơn giản, gần gũi với người dùng
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU
2.1.1 Lược đồ chức năng tổng quan
Hình 2.1: Lược đồ chức năng
2.1.2.1 Chức năng quản lý thông tin cá nhân
Hình 2.2: Chức năng quản lý thông tin cá nhân
2.1.2.2 Chức năng quản lý tài liệu
Hình 2.3: Chức năng quản lý tài liệu
2.1.2.3 Chức năng quản lý người dùng
Hình 2.4: Chức năng quản lý người dùng
2.1.2.4 Chức năng quản lý danh mục
Hình 2.5: Chức năng quản lý danh mục
2.1.2.5 Chức năng quản lý lĩnh vực
Hình 2.6: Chức năng quản lý lĩnh vực
2.1.2.6 Chức năng quản lý trường
Hình 2.7: Chức năng quản lý trường
Bảng 2.1: Đặc tả chức năng đăng ký
Brief description Người dùng khách thực hiện đăng ký tài khoản mới
Pre-conditions Người dùng khách chưa có tài khoản và muốn tạo tài khoản mới
Post-conditions Người dùng khách tạo thành công tài khoản mới
1 Người dùng truy cập vào trang đăng ký
2 Người dùng nhập các thông tin yêu cầu
3 Người dùng nhấn nút Đăng ký
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống tạo tài khoản người dùng và thông báo đăng ký tài khoản thành công
4a Hệ thống phát hiện email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Mật khẩu có độ dài tối thiểu là 8 ký tự
Tài khoản email đăng ký là tài khoản Gmail
Người dùng chỉ được đăng ký với vai trò sinh viên và giảng viên
Bảng 2.2: Đặc tả chức năng đăng nhập
Brief description Người dùng thực hiện đăng nhập vào hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ
Post-conditions Người dùng đăng nhập vào hệ thống thành công và thực hiện được
22 các chức năng theo phân quyền
1 Người dùng truy cập vào trang đăng nhập
2 Người dùng nhập email và mật khẩu
3 Người dùng nhấn Đăng nhập
4 Hệ thống xác thực thông tin đăng nhập
5 Người dùng đăng nhập thành công vào hệ thống
4a Hệ thống không thể xác thực thông tin đăng nhập
4a1 Hệ thống hiển thị thông báo lỗi thông tin đăng nhập chưa chính xác
4a2 Use case quay lại bước 2 của Basic flows
1 Người dùng nhấn Đăng ký
2 Người dùng nhấn Quên mật khẩu
Bảng 2.3: Đặc tả chức năng đăng xuất
Brief description Người dùng thực hiện đăng xuất ra khỏi hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng xuất thành công khỏi hệ thống
1 Người dùng nhấn nút Đăng xuất
2 Hệ thống hiển thị thông báo xác nhận việc đăng xuất của người dùng
4 Hệ thống kết thúc phiên người dùng và đưa người dùng quay lại trang đăng nhập
3a Người dùng huỷ bỏ đăng xuất
3a1 Người dùng chọn huỷ bỏ
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu
Name Lấy lại mật khẩu
Brief description Người dùng muốn lấy lại mật khẩu đã quên
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ trên hệ thống
Post-conditions Người dùng đổi được mật khẩu thành công
1 Người dùng nhấn Quên mật khẩu
2 Người dùng nhập email của tài khoản muốn lấy lại mật khẩu
3 Người dùng nhấn Lấy mã
4 Hệ thống kiểm tra email và tài khoản trong cơ sở dữ liệu
5 Hệ thống gửi mã xác nhận qua email
6 Người dùng nhập mã xác nhận
7 Người dùng nhấn Xác nhận
8 Hệ thống kiểm tra mã xác nhận
9 Hệ thống hiển thị ô nhập mật khẩu mới và mật khẩu xác nhận
10 Người dùng nhập mật khẩu mới và mật khẩu xác nhận
11 Người dùng nhấn Đổi mật khẩu
12.Hệ thống kiểm tra mật khẩu mới và mật khẩu xác nhận nhận được
13 Hệ thống thông báo đổi mật khẩu thành công
4a Hệ thống phát hiện email nhận được chưa được đăng ký 4a1 Hệ thống thông báo email chưa được đăng ký
4a2 Use case quay lại bước 2 của Basic flows 8a Hệ thống kiểm tra thấy mã xác nhận người dùng nhập vào không đúng
8a1 Hệ thống thông báo sai mã xác nhận
8a2 Use case quay lại bước 6 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Bảng 2.5: Đặc tả chức năng đổi mật khẩu
Brief description Người dùng muốn đổi mật khẩu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi mật khẩu thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhập mật khẩu hiện tại, mật khẩu mới, mật khẩu xác nhận
3 Người dùng nhấn Đổi mật khẩu
4 Hệ thống kiểm tra mật khẩu người dùng nhập vào
5 Hệ thống lưu mật khẩu mới và thông báo cập nhật mật khẩu thành công
4a Hệ thống kiểm tra thấy mật khẩu hiện tại không đúng 4a1 Hệ thống thông báo mật khẩu hiện tại không đúng 4a2 Use case quay lại bước 1 của Basic flows
2.2.6 Xem thông tin cá nhân
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân
Name Xem thông tin cá nhân
Brief description Người dùng xem thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xem được thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Hệ thống hiển thị thông tin cá nhân của người dùng Alternative flows
2.2.7 Cập nhật thông tin cá nhân
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân
Name Cập nhật thông tin cá nhân
Brief description Người dùng cập nhật thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng cập nhật thành công thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Người dùng thay đổi các thông tin cần thiết
4 Hệ thống kiểm tra thông tin nhập vào
5 Hệ thống lưu thay đổi, thông báo cập nhật thông tin cá nhân thành công và hiển thị trang cá nhân mới
4a Hệ thống kiểm tra thấy email người dùng vừa chỉnh sửa đã được đăng ký
4a1 Hệ thống thông báo email đã được đăng ký trước đó
4a2 Use case quay lại bước 2 của Basic flows
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện
Name Đổi ảnh đại diện
Brief description Người dùng đổi ảnh đại diện cho tài khoản của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi ảnh đại diện thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhấn Chọn ảnh
3 Người dùng chọn ảnh từ thiết bị
5 Hệ thống tải và lưu ảnh đại diện, thông báo cập nhật thành công và hiển thị ảnh đại diện mới mới
Bảng 2.9: Đặc tả chức năng đọc tài liệu
Brief description Người dùng đọc tài liệu
Actor Người dùng khách, sinh viên
Post- conditions Người dùng đọc được tài liệu mà mình muốn
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấp vào một tài liệu mà mình muốn đọc
3 Hệ thống hiển thị chi tiết tài liệu, trong đó nội dung tài liệu được hiển thị bằng trình xem PDF
Business rules Sinh viên chỉ đọc được những tài liệu công khai và tài liệu nội bộ của trường
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu
Name Tìm kiếm tài liệu
Brief description Người dùng tìm kiếm tài liệu
Actor Sinh viên, quản lý, admin
Post-conditions Người dùng tìm được các tài liệu mong muốn
1 Người dùng nhập từ khoá vào ô tìm kiếm trên trang web
2 Người dùng nhấn phím Enter hoặc biểu tượng tìm kiếm
3 Hệ thống tìm kiếm và hiển thị các tài liệu liên quan đến từ khoá nhận được
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.11: Đặc tả chức năng lọc tài liệu
Brief description Người dùng lọc tài liệu theo tiêu chí
Actor Người dùng khách, sinh viên
Post-conditions Người dùng thực hiện thao tác lọc để tìm ra các tài liệu thoả tiêu chí
1 Người dùng truy cập danh sách tài liệu
2 Người dùng chọn các tiêu chí lọc
3 Hệ thống tìm kiếm và hiển thị các tài liệu phù hợp với các tiêu chí lọc
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.12: Đặc tả chức năng thích tài liệu
Brief description Người dùng thêm tài liệu vào danh sách yêu thích
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa thích tài liệu dự định sẽ thích
Post-conditions Người dùng thêm tài liệu vào danh sách yêu thích thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng thích
3 Hệ thống thông báo đã thích tài liệu và tăng lượt thích lên
2a Người dùng muốn bỏ thích tài liệu
2a1 Người dùng nhấn vào biểu tượng thích
2a2 Hệ thống thông báo đã bỏ thích tài liệu và giảm lượt thích xuống
Bảng 2.13: Đặc tả chức năng lưu tài liệu
Brief description Người dùng thêm tài liệu vào danh sách đã lưu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa lưu tài liệu dự định sẽ lưu
Post- conditions Người dùng thêm tài liệu vào danh sách đã lưu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng lưu
3 Hệ thống thông báo đã lưu tài liệu
2a Người dùng muốn bỏ lưu tài liệu
2a1 Người dùng nhấn vào biểu tượng lưu
2a2 Hệ thống thông báo đã bỏ lưu tài liệu
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu
Name Đánh giá tài liệu
Brief description Người dùng đánh giá tài liệu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa đánh giá tài liệu dự định sẽ đánh giá
Post-conditions Người dùng đánh giá tài liệu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng chọn số sao và nhập lời đánh giá
4 Hệ thống kiểm tra thông tin nhận được
5 Hệ thống lưu lại đánh giá, cập nhật danh sách đánh giá và hiển thị thông báo đánh giá thành công
Bảng 2.15: Đặc tả chức năng đăng tài liệu
Brief description Người dùng đăng tải một tài liệu mới lên hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng tải thành công tài liệu lên hệ thống
1 Người dùng nhấn Tải lên/Thêm tài liệu
2 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
3 Người dùng nhấn Tải lên
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã thêm tài liệu thành công
2a Người dùng có vai trò là admin
2a1 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
2a2 Use case tiếp tục ở bước 3 của Basic flows
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu tài liệu, thông báo đã thêm tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin 5a2 Use case kết thúc
1 Sinh viên, quản lý sẽ tải tài liệu lên trường của mình
2 Quản lý và admin phê duyệt tài liệu do sinh viên tải lên
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu
Name Chỉnh sửa tài liệu
Brief description Người dùng chỉnh sửa tài liệu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng chỉnh sửa tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu
2 Người dùng nhấn Chỉnh sửa bên cạnh tài liệu
3 Người dùng chỉnh sửa các thông tin cần thiết cũng như tệp tài liệu
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã chỉnh sửa tài liệu thành công
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu lại tài liệu, thông báo đã chỉnh sửa tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin
1 Sinh viên chỉnh sửa tài liệu thì tài liệu sẽ đưa về trạng thái chờ duyệt
2 Quản lý thực hiện chỉnh sửa các tài liệu thuộc trường mà mình quản lý
Bảng 2.17: Đặc tả chức năng xoá tài liệu
Brief description Người dùng muốn xoá một tài liệu
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá tài liệu thành công
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấn Xoá bên cạnh tài liệu
3 Hệ thống hiển thị xác nhận xoá tài liệu
5 Hệ thống xoá tài liệu, hiển thị thông báo xoá thành công và cập nhật lại danh sách tài liệu
4a Người dùng huỷ bỏ xoá tài liệu
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.18: Đặc tả chức năng thêm người dùng
Brief description Người dùng thêm người dùng mới trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng thêm người dùng mới thành công
1 Người dùng nhấn Thêm người dùng
2 Người dùng nhập các thông tin được yêu cầu cho người dùng mới
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống lưu người dùng mới, sau đó hiển thị thông báo thêm người dùng thành công
2a Người dùng có vai trò admin
2a1 Người dùng nhập các thông tin được yêu cầu và chọn trường cho người dùng mới
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện thêm người dùng thuộc trường của mình
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng
Use case Chỉnh sửa người dùng
Brief description Người dùng chỉnh sửa thông tin của người dùng khác trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người chỉnh sửa thành công thông tin thông tin của người dùng khác
1 Người dùng truy cập vào danh sách người dùng do mình quản lý
2 Người dùng nhấn Chỉnh sửa bên cạnh tài khoản của người dùng muốn chỉnh sửa
3 Người dùng chỉnh sửa các thông tin cần thiết của người dùng
5 Hệ thống lưu lại thay đổi và hiển thị thông báo chỉnh sửa người dùng thành công
Alternative flows 2a Người dùng có vai trò admin
2a1 Người dùng chỉnh sửa các thông tin của người dùng và chọn trường cho người dùng (nếu muốn)
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện chỉnh sửa người dùng thuộc trường của mình
Bảng 2.20: Đặc tả chức năng xoá người dùng
Người dùng xoá một người dùng khác
Pre-conditions Người đã đăng nhập thành công vào hệ thống
Người dùng xoá thành công một người dùng khác
1 Người dùng truy cập vào danh sách người dùng mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh tài khoản của người dùng muốn xoá
3 Hệ thống hiển thị cảnh báo xác nhận xoá người dùng
5 Hệ thống xoá người dùng, hiển thị thông báo xoá người dùng thành công và cập nhật lại danh sách người dùng
4a Người dùng huỷ bỏ việc xoá người dùng khác
4a1 Người dùng chọn Huỷ bỏ
4a2 Use case kết thúc 5a: Hệ thống kiểm tra thấy người dùng đã đăng tải tài liệu lên
5a1 Hệ thống vô hiệu hoá tài khoản người dùng, hiển thị thông báo vô hiệu hoá tài khoản người dùng và cập nhật lại danh sách người dùng
Business rules Quản lý thực hiện xoá người dùng thuộc trường mà mình quản lý
Bảng 2.21: Đặc tả chức năng xoá đánh giá
Brief description Người dùng xoá đánh giá vi phạm của tài liệu
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá đánh giá thành công
1 Người dùng truy cập vào danh sách đánh giá của các tài liệu thuộc trường mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh đánh giá
3 Hệ thống hiển thị cảnh báo xác nhận xoá đánh giá
5 Hệ thống xoá đánh giá, hiển thị thông báo xoá đánh giá thành công và cập nhật lại danh sách đánh giá
4a Người dùng huỷ bỏ việc xoá đánh giá
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu
Name Phê duyệt tài liệu
Brief description Người dùng phê duyệt tài liệu do sinh viên tải lên
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng phê duyệt tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu đang chờ phê duyệt do mình quản lý
2 Người dùng nhấn Phê duyệt
3 Hệ thống hiển thị thông báo yêu cầu chọn hành động
4 Người dùng chọn Chấp nhận
CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ
Cài đặt
STT Thời gian Công việc Ghi chú
1 28/2/2024-6/3/2024 Tham khảo, xác định đề tài
2 6/3/2024-13/4/2024 Khảo sát, phân tích và xác định các yêu cầu của đề tài
3 13/3/2024-20/3/2024 Xây dựng lược đồ chức năng, đặc tả chức năng
4 20/3/2024- 27/3/2024 Xây dựng lược đồ tuần tự
5 27/3/2024- 3/4/2024 Thiết kế giao diện phần sinh viên và người dùng khách
6 3/4/2024 – 10/4/2024 Thiết kế và xây dựng cơ sở dữ liệu
8 17/4/2024-24/4/2024 Kết nối giao diện và back-end cho sinh viên và người dùng khách
9 24/4/2024-1/5/2024 Thiết kế giao diện phần quản lý và admin
10 1/5/2024 – 8/5/2024 Kết nối giao diện và back-end cho quản lý và admin
11 8/5/2024 -15/5/2024 Hoàn thiện các chức năng và bổ sung các chức năng bị thiếu
12 15/5/2024 – 22/5/2024 Kiểm thử lại trang web, sửa chữa lỗi
15 5/6/2024 – 28/6/2024 Chỉnh sửa báo cáo và làm
Vu Hoang Anh Ý kiến của giáo viên hướng dẫn
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2 MỤC ĐÍCH CỦA ĐỀ TÀI 1
CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 3
1.2 Khảo sát một số phần mềm 3
1.3 Phân tích yêu cầu của dự án 8
1.4 Yêu cầu chức năng nghiệp vụ 10
1.5 Danh sách yêu cầu chức năng nghiệp vụ 11
1.6 Danh sách yêu cầu chức năng hệ thống 14
1.7 Danh sách yêu cầu phi chức năng 15
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU 17
2.1.1 Lược đồ chức năng tổng quan 17
2.2.6 Xem thông tin cá nhân 26
2.2.7 Cập nhật thông tin cá nhân 27
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 59
3.1.6 Xem thông tin cá nhân 63
3.1.7 Cập nhật thông tin cá nhân 64
CHƯƠNG 4: KIẾN TRÚC HỆ THỐNG 90
4.1.2 Tương tác và giao tiếp giữa các thành phần 91
4.2 Các công nghệ và thư viện được sử dụng 91
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 117
5.1 Sinh viên và người dùng khách 117
5.1.9 Danh sách tài liệu chính 126
5.1.10 Danh sách tài liệu đã thích 128
5.1.11 Danh sách tài liệu đã lưu 129
5.1.12 Danh sách tài liệu đã tải lên đã được duyệt 130
5.1.13 Danh sách tài liệu đã tải lên đang đợi duyệt 131
5.1.14 Danh sách tài liệu đã tải lên bị từ chối 131
5.1.17 Danh sách tài liệu của một người 135
5.2.27 Danh sách tài liệu đang chờ 175
CHƯƠNG 6 CÀI ĐẶT, DEPLOY VÀ KIỂM THỬ 180
6.1.2 Cài đặt với docker compose 180
DANH MỤC TÀI LIỆU THAM KHẢO 188
Hình 1.1: Trang chủ Studocu 4
Hình 1.2: Danh sách tài liệu theo trường học 4
Hình 1.3: Xem chi tiết tài liệu 5
Hình 1.4: Tải tài liệu lên 5
Hình 1.5: Trang chủ thư viện số HCMUTE 6
Hình 1.6: Chi tiết tài liệu 7
Hình 1.7: Tải tài liệu 7
Hình 2.1: Lược đồ chức năng 17
Hình 2.2: Chức năng quản lý thông tin cá nhân 17
Hình 2.3: Chức năng quản lý tài liệu 18
Hình 2.4: Chức năng quản lý người dùng 18
Hình 2.5: Chức năng quản lý danh mục 19
Hình 2.6: Chức năng quản lý lĩnh vực 19
Hình 2.7: Chức năng quản lý trường 20
Hình 3.1: Lược đồ tuần tự chức năng đăng ký 59
Hình 3.2: Lược đồ tuần tự chức năng đăng nhập 60
Hình 3.3: Lược đồ tuần tự chức năng đăng xuất 60
Hình 3.4: Lược đồ tuần tự chức năng lấy lại mật khẩu 61
Hình 3.5: Lược đồ tuần tự chức năng đổi mật khẩu 62
Hình 3.6: Lược đồ tuần tự chức năng xem thông tin cá nhân 63
Hình 3.7: Lược đồ tuần tự chức năng cập nhật thông tin cá nhân 64
Hình 3.8: Lược đồ tuần tự chức năng đổi ảnh đại diện 65
Hình 3.9: Lược đồ tuần tự chức năng đọc tài liệu 65
Hình 3.10: Lược đồ tuần tự chức năng tìm kiếm tài liệu 66
Hình 3.11: Lược đồ tuần tự chức năng lọc tài liệu 66
Hình 3.12: Lược đồ tuần tự chức năng thích tài liệu 67
Hình 3.13: Lược đồ tuần tự chức năng lưu tài liệu 67
Hình 3.14: Lược đồ tuần tự chức năng đánh giá tài liệu 68
Hình 3.15: Lược đồ tuần tự chức năng đăng tài liệu 69
Hình 3.16: Lược đồ tuần tự chức năng chỉnh sửa tài liệu 70
Hình 3.17: Lược đồ tuần tự chức năng xoá tài liệu 71
Hình 3.18: Lược đồ tuần tự chức năng thêm người dùng 72
Hình 3.19: Lược đồ tuần tự chức năng chỉnh sửa người dùng 73
Hình 3.20: Lược đồ tuần tự chức năng xoá người dùng 74
Hình 3.21: Lược đồ tuần tự chức năng xoá đánh giá 75
Hình 3.22: Lược đồ tuần tự chức năng phê duyệt tài liệu 76
Hình 3.23: Lược đồ tuần tự chức năng thêm trường 77
Hình 3.24: Lược đồ tuần tự chức năng chỉnh sửa trường 78
Hình 3.25: Lược đồ tuần tự chức năng xoá trường 79
Hình 3.26: Lược đồ tuần tự chức năng kích hoạt trường 80
Hình 3.27: Lược đồ tuần tự chức năng thêm danh mục 81
Hình 3.28: Lược đồ tuần tự chức năng chỉnh sửa danh mục 82
Hình 3.29: Lược đồ tuần tự chức năng xoá danh mục 83
Hình 3.30: Lược đồ tuần tự chức năng kích hoạt danh mục 84
Hình 3.31: Lược đồ tuần tự chức năng thêm lĩnh vực 85
Hình 3.32: Lược đồ tuần tự chức năng chỉnh sửa lĩnh vực 86
Hình 3.33: Lược đồ tuần tự chức năng xoá lĩnh vực 87
Hình 3.34: Lược đồ tuần tự chức năng kích hoạt lĩnh vực 88
Hình 3.35: Lược đồ tuần tự chức năng thống kê 88
Hình 3.36: Lược đồ lớp của hệ thống 89
Hình 4.1: Kiến trúc tổng quan của hệ thống 90
Hình 4.2: Cấu trúc dự án Spring Boot đơn giản 92
Hình 4.3: Tạo dự án Spring Boot với Maven 93
Hình 4.4: Khai báo dependency trong pom.xml 94
Hình 4.5: Controller trong Spring Boot 94
Hình 4.6: Spring Boot và Tomcat 95
Hình 4.7: Thêm dependency Spring Security vào dự án 96
Hình 4.8: Cấu hình Filter Chain 97
Hình 4.9: Cấu hình xác thực 97
Hình 4.10: Thêm JWT Filter vào SecurityFilterChain 98
Hình 4.12: Tạo và trả JWT khi login 99
Hình 4.13: Repository interface trong Spring Data JPA 100
Hình 4.14: Truy vấn query tuỳ chỉnh 100
Hình 4.15: Thêm dependency của Spring Data JPA 101
Hình 4.16: Cấu hình kết nối MySQL trong application.yml 101
Hình 4.17: Tạo các entity classes 102
Hình 4.18: Kiến trúc ReactJS 103
Hình 4.19: Cấu trúc thư mục ReactJS 103
Hình 4.22: Minh hoạ tệp JSX 106
Hình 4.23: Ví dụ về useState 106
Hình 4.24: Ví dụ về useEffect 107
Hình 4.25: Chuyển hướng với useNavigate 107
Hình 4.26: Lấy đường dẫn hiện tại bằng useLocation 108
Hình 4.27: Truy xuất tham số từ URL với useParams 108
Hình 4.28: Minh hoạ props 108
Hình 4.29: Axios trong package.json 109
Hình 4.30: Sử dụng axios để gửi yêu cầu GET lấy tất cả danh mục 109
Hình 4.31: Tạo dự án Google Cloud 110
Hình 4.32: Giao diện APIs & Services 111
Hình 4.33: Kích hoạt Google Drive API 111
Hình 4.34: Giao diện Credentials để tạo service account 112
Hình 4.35: Tạo service account 112
Hình 4.37: Google Drive API dependency 113
Hình 4.38: Cấu hình Bean cho Google Drive API 114
Hình 4.39: Xoá tệp bằng Google Drive API 114
Hình 4.40: Tải lên tệp bằng Google Drive API 114
Hình 4.41: Kiến trúc của MySQL 115
Hình 4.42: Sử dụng MySQL thiết kế cơ sở dữ liệu 116
Hình 5.1: Giao diện trang chủ 117
Hình 5.2: Giao diện đăng nhập 118
Hình 5.3: Giao diện đăng ký 119
Hình 5.4: Giao diện quên mật khẩu 120
Hình 5.5: Giao diện thanh trên 121
Hình 5.6: Giao diện thanh bên 122
Hình 5.7: Giao diện thông tin cá nhân 123
Hình 5.8: Giao diện chi tiết tài liệu 125
Hình 5.9: Giao diện danh sách tài liệu chính 127
Hình 5.10: Giao diện danh sách tài liệu đã thích 128
Hình 5.11: Giao diện danh sách tài liệu đã lưu 129
Hình 5.12: Giao diện danh sách tài liệu tải lên đã được duyệt 130
Hình 5.13: Giao diện danh sách tài liệu tải lên đang đợi duyệt 131
Hình 5.14: Giao diện danh sách tài liệu tải lên bị từ chối 132
Hình 5.15: Giao diện đăng tài liệu 133
Hình 5.16: Giao diện chỉnh sửa tài liệu 134
Hình 5.17: Giao diện danh sách tài liệu của một người 136
Hình 5.18: Giao diện đăng nhập 137
Hình 5.19: Giao diện quên mật khẩu 138
Hình 5.20: Giao diện thông tin cá nhân 140
Hình 5.21: Giao diện trang chủ quản trị 143
Hình 5.22: Giao diện danh sách tài liệu 144
Hình 5.23: Giao diện chi tiết tài liệu 146
Hình 5.24: Giao diện thêm tài liệu 147
Hình 5.25: Giao diện chỉnh sửa tài liệu 149
Hình 5.26: Giao diện xoá tài liệu 150
Hình 5.27: Giao diện danh sách danh mục 151
Hình 5.28: Giao diện thêm danh mục 153
Hình 5.29: Giao diện chỉnh sửa danh mục 154
Hình 5.30: Giao diện xoá danh mục 155
Hình 5.31: Giao diện danh sách lĩnh vực 156
Hình 5.32: Giao diện thêm lĩnh vực 158
Hình 5.33: Giao diện chỉnh sửa lĩnh vực 159
Hình 5.34: Giao diện xoá lĩnh vực 160
Hình 5.35: Giao diện danh sách trường 161
Hình 5.36: Giao diện thêm trường 163
Hình 5.37: Giao diện chỉnh sửa trường 164
Hình 5.38: Giao diện chỉnh sửa trường 165
Hình 5.39: Giao diện danh sách người dùng 166
Hình 5.40: Giao diện chi tiết người dùng 168
Hình 5.41: Giao diện thêm người dùng 170
Hình 5.42: Giao diện chỉnh sửa người dùng 172
Hình 5.43: Giao diện xoá người dùng 174
Hình 5.44: Giao diện danh sách tài liệu đang chờ 175
Hình 5.45: Giao diện phê duyệt tài liệu 176
Hình 5.46: Giao diện từ chối tài liệu 177
Hình 5.47: Giao diện danh sách đánh giá 178
Hình 5.48: Giao diện xoá đánh giá 179
Bảng 1.1: Nhận xét trang web Studocu 5
Bảng 1.2: Nhận xét thư viện số HCMUTE 7
Bảng 1.3: Danh sách chức năng chính 8
Bảng 1.4: Yêu cầu chức năng quản lý thông tin cá nhân 11
Bảng 1.5: Yêu cầu chức năng quản lý người dùng 12
Bảng 1.6: Yêu cầu chức năng quản lý tài liệu 12
Bảng 1.7: Yêu cầu chức năng quản lý danh mục 13
Bảng 1.8: Yêu cầu chức năng quản lý lĩnh vực 13
Bảng 1.9: Yêu cầu chức năng quản lý trường 14
Bảng 1.10: Yêu cầu chức năng quản lý đánh giá 14
Bảng 1.11: Danh sách yêu cầu chức năng hệ thống 14
Bảng 1.12: Danh sách yêu cầu phi chức năng 15
Bảng 2.1: Đặc tả chức năng đăng ký 20
Bảng 2.2: Đặc tả chức năng đăng nhập 21
Bảng 2.3: Đặc tả chức năng đăng xuất 22
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu 23
Bảng 2.5: Đặc tả chức năng đổi mật khẩu 25
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân 26
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân 27
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện 28
Bảng 2.9: Đặc tả chức năng đọc tài liệu 29
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu 30
Bảng 2.11: Đặc tả chức năng lọc tài liệu 31
Bảng 2.12: Đặc tả chức năng thích tài liệu 32
Bảng 2.13: Đặc tả chức năng lưu tài liệu 33
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu 34
Bảng 2.15: Đặc tả chức năng đăng tài liệu 35
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu 36
Bảng 2.17: Đặc tả chức năng xoá tài liệu 37
Bảng 2.18: Đặc tả chức năng thêm người dùng 38
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng 40Bảng 2.20: Đặc tả chức năng xoá người dùng 41Bảng 2.21: Đặc tả chức năng xoá đánh giá 43Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu 44Bảng 2.23: Đặc tả chức năng thêm trường 45Bảng 2.24: Đặc tả chức năng chỉnh sửa trường 46Bảng 2.25: Đặc tả chức năng xoá trường 47Bảng 2.26: Đặc tả chức năng kích hoạt trường 48Bảng 2.27: Đặc tả chức năng thêm danh mục 49Bảng 2.28: Đặc tả chức năng chỉnh sửa danh mục 50Bảng 2.29: Đặc tả chức năng xoá danh mục 51Bảng 2.30: Đặc tả chức năng kích hoạt lĩnh vực 53Bảng 2.31: Đặc tả chức năng thêm lĩnh vực 54Bảng 2.32: Đặc tả chức năng chỉnh sửa lĩnh vực 55Bảng 2.33: Đặc tả chức năng xoá lĩnh vực 56Bảng 2.34: Đặc tả chức năng kích hoạt lĩnh vực 57Bảng 2.35: Đặc tả chức năng thống kê 58Bảng 5.1: Bảng mô tả giao diện trang chủ 117Bảng 5.2: Bảng mô tả giao diện đăng nhập 118Bảng 5.3: Bảng mô tả giao diện đăng ký 119Bảng 5.4: Bảng mô tả giao diện quên mật khẩu 120Bảng 5.5: Bảng mô tả giao diện thanh trên 121Bảng 5.6: Bảng mô tả giao diện thanh bên 122Bảng 5.7: Bảng mô tả giao diện thông tin cá nhân 123Bảng 5.8: Bảng mô tả giao diện chi tiết tài liệu 125Bảng 5.9: Bảng mô tả giao diện danh sách tài liệu chính 127Bảng 5.10: Bảng mô tả giao diện danh sách tài liệu đã thích 128Bảng 5.11: Bảng mô tả giao diện danh sách tài liệu đã lưu 129Bảng 5.12: Bảng mô tả giao diện danh sách tài liệu tải lên đã được duyệt 130Bảng 5.13: Bảng mô tả giao diện danh sách tài liệu tải lên đang đợi duyệt 131Bảng 5.14: Bảng mô tả giao diện danh sách tài liệu tải lên bị từ chối 132Bảng 5.15: Bảng mô tả giao diện đăng tài liệu 133
Bảng 5.16: Bảng mô tả giao diện chỉnh sửa tài liệu 135Bảng 5.17: Bảng mô tả giao diện danh sách tài liệu của một người 136Bảng 5.18: Bảng mô tả giao diện đăng nhập 137Bảng 5.19: Bảng mô tả giao diện quên mật khẩu 138Bảng 5.20: Bảng mô tả giao diện thông tin cá nhân 141Bảng 5.21: Bảng mô tả giao diện trang chủ quản trị 143Bảng 5.22: Bảng mô tả giao diện danh sách tài liệu 145Bảng 5.23: Bảng mô tả giao diện chi tiết tài liệu 146Bảng 5.24: Bảng mô tả giao diện thêm tài liệu 148Bảng 5.25: Bảng mô tả giao diện chỉnh sửa tài liệu 149Bảng 5.26: Bảng mô tả giao diện xoá tài liệu 150Bảng 5.27: Bảng mô tả giao diện danh sách danh mục 151Bảng 5.28: Bảng mô tả giao diện thêm danh mục 153Bảng 5.29: Bảng mô tả giao diện chỉnh sửa danh mục 154Bảng 5.30: Bảng mô tả giao diện xoá danh mục 155Bảng 5.31: Bảng mô tả giao diện danh sách lĩnh vực 156Bảng 5.32: Bảng mô tả giao diện thêm lĩnh vực 158Bảng 5.33: Bảng mô tả giao diện chỉnh sửa lĩnh vực 159Bảng 5.34: Bảng mô tả giao diện xoá lĩnh vực 160Bảng 5.35: Bảng mô tả giao diện danh sách trường 161Bảng 5.36: Bảng mô tả giao diện thêm trường 163Bảng 5.37: Bảng mô tả giao diện chỉnh sửa trường 164Bảng 5.38: Bảng mô tả giao diện xoá trường 165Bảng 5.39: Bảng mô tả giao diện danh sách người dùng 166Bảng 5.40: Bảng mô tả giao diện chi tiết người dùng 168Bảng 5.41: Bảng mô tả giao diện thêm người dùng 171Bảng 5.42: Bảng mô tả giao diện chỉnh sửa người dùng 173Bảng 5.43: Bảng mô tả giao diện xoá người dùng 174Bảng 5.44: Bảng mô tả giao diện danh sách tài liệu đang chờ 175Bảng 5.45: Bảng mô tả giao diện phê duyệt tài liệu 176Bảng 5.46: Bảng mô tả giao diện từ chối tài liệu 177Bảng 5.47: Bảng mô tả giao diện danh sách đánh giá 178
Bảng 5.48: Bảng mô tả giao diện xoá đánh giá 179Bảng 6.1: Sản phẩm deploy 180Bảng 6.2: Lịch trình công việc 181Bảng 6.3: Chiến lược kiểm thử 182Bảng 6.4: Kết quả kiểm thử 183
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trong thời đại ngày nay, công nghệ thông tin đã và đang phát triển nhanh chóng, mạnh mẽ trong tất cả các lĩnh vực đời sống Từ những bước tiến vượt bậc trong lĩnh vực máy tính, mạng lưới, đến sự bùng nổ của Internet và sự xuất hiện của trí tuệ nhân tạo, công nghệ thông tin dần chuyển đổi cách con người sống, làm việc và tương tác với nhau Đặc biệt, nó đã mở ra nhiều cơ hội mới trong việc chia sẻ và truy cập thông tin Giờ đây, con người có thể tiếp cận và sử dụng nguồn tài nguyên trên mạng từ xa, không giới hạn thời gian và địa điểm Điều này cũng mở ra tương lai cho các dịch vụ lưu trữ và cung cấp tài nguyên đến cho người dùng trực tuyến
Lĩnh vực giáo dục cũng chứng kiến sự thay đổi mạnh mẽ dưới tác động của công nghệ Các mô hình giảng dạy và học tập truyền thống dần dần chuyển đổi sang môi trường máy tính và trực tuyến Kèm theo đó là nhu cầu cho việc sử dụng các nguồn tài nguyên học tập tăng lên một cách mạnh mẽ Nếu như trước kia, khi muốn tìm hiểu và học tập về một nội dung, lĩnh vực nào đó, sinh viên sẽ cần phải có một bản tài liệu hoặc một cuốn sách bằng giấy Tuy nhiên, ngày nay, sinh viên hầu như có thể truy cập mạng Internet để tìm và sử dụng các tài liệu đó Điều này vừa tạo sự tiện lợi cho người học cũng như cung cấp khả năng tiếp cận kho tài liệu phong phú Tuy nhiên, việc học tập là không giới hạn ở chỉ mỗi một trường đại học Mỗi trường đại học sẽ có một nguồn tài liệu bổ ích và quý giá khác nhau Do đó, em nghĩ đến ý tưởng tạo một trang web tổng hợp và phân loại tài liệu theo các trường đại học, cao đẳng nhằm cung cấp một nguồn tài nguyên phong phú và bổ ích đến các sinh viên
Xuất phát từ ý tưởng đó, em xin thực hiện đề tài Xây dựng diễn đàn chia sẻ tài liệu cho sinh viên
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Mục đích của đề tài này là tạo nên một trang web diễn đàn cung cấp một kho tài liệu bổ ích và phong phú đến cho sinh viên, giúp cho sinh viên tiếp cận tài liệu học tập một cách tiện lợi và hiệu quả
- Đối tượng nghiên cứu Đề tài tập trung nghiên cứu những vấn đề sau:
Các kỹ thuật phân tích thiết kế hệ thống
Tìm hiểu về Spring Boot trên nền tảng Java để xây dựng API cho hệ thống
Tìm hiểu về React để xây dựng giao diện người dùng
Tìm hiểu về Google Drive API để lưu trữ tài liệu
Trong phạm vi của đề tài, nhóm chúng em tập trung nghiên cứu các chức năng cơ bản của một hệ thống quản lý tài liệu như truy cập tài liệu, tải lên, chỉnh sửa, xoá bỏ, phân loại
PHẦN NỘI DUNG CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 1.1 Phân tích hiện trạng
Ngày nay, Internet đã và đang phát triển một cách chóng mặt và trở nên rất phổ biến Sự tiện lợi mà Internet mang lại trong các lĩnh vực đời sống và xã hội là điều không thể phủ nhận Trong đó, nhu cầu sử dụng và truy cập nguồn tài liệu học tập trên Internet là rất là lớn Internet cung cấp một lượng tài liệu khổng lồ và cực kỳ đa dạng cho học sinh, sinh viên sử dụng Trong số đó, có hàng nghìn, hàng chục nghìn trang web chuyên về cung cấp tài liệu đến cho người học
Nhìn chung, các trang web cung cấp lượng tài liệu đa dạng ở nhiều lĩnh vực và thể loại khác nhau Tuy nhiên, điều này cũng đặt ra một số thách thức và vấn đề:
- Không phải tất cả các nguồn tài liệu trên Internet đều đảm bảo về chất lượng và tính tin cậy Có rất nhiều tài liệu không chính xác hoặc không được kiểm chứng một cách đầy đủ
- Một số trang web yêu cầu người sử dụng trả phí để có quyền truy cập đầy đủ nội dung
- Một số trang web chứa quảng cáo gây làm phiền và ảnh hưởng đến trải nghiệm người dùng
- Người học cần phải có kỹ năng tìm kiếm trên Internet để có thể tận dụng tối đa nguồn tài liệu
1.2 Khảo sát một số phần mềm
Đường dẫn trang web: https://www.studocu.com/
Hình 0.1: Trang chủ Studocu
Hình 0.1.: Danh sách tài liệu theo trường học
Hình 0.3: Xem chi tiết tài liệu
Hình 0.4: Tải tài liệu lên
Bảng 0.1: Nhận xét trang web Studocu
- Tìm kiếm khoá học, sách, tài liệu
- Nguồn tài liệu chưa được kiểm soát chặt chẽ
- Tải lên và chia sẻ tài liệu
- Thích, bỏ thích, bình luận, lưu, chia sẻ lên mạng xã hội
- Đăng ký Premium để truy cập các tính năng như tài liệu nâng cao, tải, in tài liệu
Đường dẫn trang web: https://thuvienso.hcmute.edu.vn/
Hình 0.5: Trang chủ thư viện số HCMUTE
Hình 0.7: Chi tiết tài liệu
Hình 0.8: Tải tài liệu
Bảng 0.1: Nhận xét thư viện số HCMUTE
- Tìm kiếm sách, tài liệu
- Chủ yếu là tài liệu liên quan đến Trường Đại học Sư phạm Kỹ thuật
- Tải lên và chia sẻ tài liệu
- Thích, bình chọn, bình luận, chia sẻ lên mạng xã hội
1.3 Phân tích yêu cầu của dự án
Xây dựng một trang web để chia sẻ tài liệu học tập cho sinh viên giữa các trường đại học, cao đẳng Người dùng có thể tìm đọc và chia sẻ tài liệu của mình với những người khác Ngoài ra, hệ thống còn được quản lý bởi admin và người quản lý nhằm kiểm soát nguồn tài liệu được chia sẻ Các chức năng chính của chương trình bao gồm:
Bảng 0.2.3.: Danh sách chức năng chính Đối tượng sử dụng Các chức năng thực hiện
Sinh viên Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đọc tài liệu
Tìm kiếm tài liệu Thích tài liệu Lưu tài liệu Đánh giá tài liệu
9 Đăng tài liệu Cập nhật tài liệu Xoá tài liệu
Quản lý Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu cho trường Cập nhật tài liệu của trường Xoá tài liệu của trường Thêm người dùng cho trường Cập nhật người dùng của trường Xoá người dùng của trường Xoá đánh giá của trường Phê duyệt tài liệu của trường
Admin Đăng ký Đăng nhập Đăng xuất Lấy lại mật khẩu Đổi mật khẩu
Xem thông tin cá nhân Cập nhật thông tin cá nhân Đăng tài liệu
Cập nhật tài liệu Xoá tài liệu Thêm người dùng Cập nhật người dùng Xoá người dùng Thêm trường Cập nhật trường Xoá trường Kích hoạt trường Thêm danh mục Cập nhật danh mục Xoá danh mục Kích hoạt danh mục Thêm lĩnh vực Cập nhật lĩnh vực Xoá lĩnh vực Kích hoạt lĩnh vực Phê duyệt tài liệu Thống kê
1.4 Yêu cầu chức năng nghiệp vụ
1.5 Danh sách yêu cầu chức năng nghiệp vụ
Quản lý thông tin cá nhân
Bảng 0.2: Yêu cầu chức năng quản lý thông tin cá nhân
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin cá nhân Tra cứu
2 Cập nhật thông tin cá nhân Lưu trữ
Bảng 0.3: Yêu cầu chức năng quản lý người dùng
Bảng 0.4: Yêu cầu chức năng quản lý tài liệu
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem thông tin người dùng Tra cứu
2 Cập nhật thông tin người dùng Lưu trữ
3 Xoá người dùng Lưu trữ
4 Số lượng người dùng Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem tài liệu Tra cứu
2 Tìm kiếm tài liệu Tra cứu
3 Đăng tài liệu Lưu trữ
4 Cập nhật tài liệu Lưu trữ
5 Xoá tài liệu Lưu trữ
6 Thích tài liệu Lưu trữ
Bảng 0.5: Yêu cầu chức năng quản lý danh mục
Bảng 0.6: Yêu cầu chức năng quản lý lĩnh vực
7 Lưu tài liệu Lưu trữ
8 Đánh giá tài liệu Lưu trữ
9 Phê duyệt tài liệu Lưu trữ
10 Số lượng tài liệu Tính toán
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem danh mục Tra cứu
2 Cập nhật danh mục Lưu trữ
3 Xoá danh mục Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem lĩnh vực Tra cứu
2 Cập nhật lĩnh vực Lưu trữ
3 Xoá lĩnh vực Lưu trữ
Bảng 0.7: Yêu cầu chức năng quản lý trường
Bảng 0.8: Yêu cầu chức năng quản lý đánh giá
1.6 Danh sách yêu cầu chức năng hệ thống
Bảng 0.9: Danh sách yêu cầu chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
2 Cập nhật trường Lưu trữ
STT Công việc Loại công việc
Quy định/ công thức liên quan
Biểu mẫu liên quan Ghi chú
1 Xem đánh giá Tra cứu
2 Xoá đánh giá Lưu trữ
3 Đánh giá trung bình Tính toán
- Sinh viên: tìm kiếm, đọc tài liệu; thích, lưu, đánh giá tài liệu; đăng, cập nhật, xoá tài liệu
- Quản lý: đăng, cập nhật, xoá tài liệu của trường; thêm, cập nhật, xoá người dùng của trường; phê duyệt tài liệu của trường; xoá đánh giá của tài liệu thuộc trường
- Admin: đăng, cập nhật, xoá tài liệu; thêm, cập nhật, xoá người dùng; thêm, cập nhật, xoá, kích hoạt danh mục; thêm, cập nhật, xoá, kích hoạt lĩnh vực; thêm, cập nhật, xoá, kích hoạt trường; phê duyệt tài liệu; thống kê
Hệ thống đảm bảo tài nguyên và dịch vụ chỉ được truy cập được bởi những tác nhân và người dùng nhất định
Cơ sở dữ liệu được sao lưu định kỳ, mã nguồn có khả năng khôi phục sao lưu nhanh
4 Thông báo Thông báo cho người dùng khi cần thiết: hoạt động thành công, thất bại,…
1.7 Danh sách yêu cầu phi chức năng
Bảng 0.10: Danh sách yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết
1 Tốc độ xử lý quá trình tương tác của người dùng Hiệu quả Có thể truy cập trực tuyến nhiều người cùng một lúc
2 Tốc độ tìm kiếm nhanh và chính xác Hiệu quả Tối đa 5s có kết quả tìm kiếm
Tiết kiệm thời gian, tối ưu được cơ sở dữ liệu, thu hẹp không gian, tránh mất dữ liệu
Tiết kiệm thời gian so với quản lý thủ công Dữ liệu được sao lưu trên máy, có thể phục hồi
4 Dễ dàng bảo trì, nâng cấp và phát triển Cải tiến
Có khả năng mở rộng và thêm các tính năng mới dễ dàng mà không làm phá vỡ cấu trúc hệ thống
5 Giao diện thân thiện, màu sắc đa dạng và rõ nét Tiện dụng
Giao diện dễ dàng cho người dùng sử dụng và tạo cảm giác hiện đại
6 Thao tác dễ dùng Tiện dụng Các thao tác đơn giản, gần gũi với người dùng
CHƯƠNG 2: MÔ HÌNH HOÁ YÊU CẦU
2.1.1 Lược đồ chức năng tổng quan
Hình 2.1: Lược đồ chức năng
2.1.2.1 Chức năng quản lý thông tin cá nhân
Hình 2.2: Chức năng quản lý thông tin cá nhân
2.1.2.2 Chức năng quản lý tài liệu
Hình 2.3: Chức năng quản lý tài liệu
2.1.2.3 Chức năng quản lý người dùng
Hình 2.4: Chức năng quản lý người dùng
2.1.2.4 Chức năng quản lý danh mục
Hình 2.5: Chức năng quản lý danh mục
2.1.2.5 Chức năng quản lý lĩnh vực
Hình 2.6: Chức năng quản lý lĩnh vực
2.1.2.6 Chức năng quản lý trường
Hình 2.7: Chức năng quản lý trường
Bảng 2.1: Đặc tả chức năng đăng ký
Brief description Người dùng khách thực hiện đăng ký tài khoản mới
Pre-conditions Người dùng khách chưa có tài khoản và muốn tạo tài khoản mới
Post-conditions Người dùng khách tạo thành công tài khoản mới
1 Người dùng truy cập vào trang đăng ký
2 Người dùng nhập các thông tin yêu cầu
3 Người dùng nhấn nút Đăng ký
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống tạo tài khoản người dùng và thông báo đăng ký tài khoản thành công
4a Hệ thống phát hiện email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Mật khẩu có độ dài tối thiểu là 8 ký tự
Tài khoản email đăng ký là tài khoản Gmail
Người dùng chỉ được đăng ký với vai trò sinh viên và giảng viên
Bảng 2.2: Đặc tả chức năng đăng nhập
Brief description Người dùng thực hiện đăng nhập vào hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ
Post-conditions Người dùng đăng nhập vào hệ thống thành công và thực hiện được
22 các chức năng theo phân quyền
1 Người dùng truy cập vào trang đăng nhập
2 Người dùng nhập email và mật khẩu
3 Người dùng nhấn Đăng nhập
4 Hệ thống xác thực thông tin đăng nhập
5 Người dùng đăng nhập thành công vào hệ thống
4a Hệ thống không thể xác thực thông tin đăng nhập
4a1 Hệ thống hiển thị thông báo lỗi thông tin đăng nhập chưa chính xác
4a2 Use case quay lại bước 2 của Basic flows
1 Người dùng nhấn Đăng ký
2 Người dùng nhấn Quên mật khẩu
Bảng 2.3: Đặc tả chức năng đăng xuất
Brief description Người dùng thực hiện đăng xuất ra khỏi hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng xuất thành công khỏi hệ thống
1 Người dùng nhấn nút Đăng xuất
2 Hệ thống hiển thị thông báo xác nhận việc đăng xuất của người dùng
4 Hệ thống kết thúc phiên người dùng và đưa người dùng quay lại trang đăng nhập
3a Người dùng huỷ bỏ đăng xuất
3a1 Người dùng chọn huỷ bỏ
Bảng 2.4: Đặc tả chức năng lấy lại mật khẩu
Name Lấy lại mật khẩu
Brief description Người dùng muốn lấy lại mật khẩu đã quên
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã có tài khoản hợp lệ trên hệ thống
Post-conditions Người dùng đổi được mật khẩu thành công
1 Người dùng nhấn Quên mật khẩu
2 Người dùng nhập email của tài khoản muốn lấy lại mật khẩu
3 Người dùng nhấn Lấy mã
4 Hệ thống kiểm tra email và tài khoản trong cơ sở dữ liệu
5 Hệ thống gửi mã xác nhận qua email
6 Người dùng nhập mã xác nhận
7 Người dùng nhấn Xác nhận
8 Hệ thống kiểm tra mã xác nhận
9 Hệ thống hiển thị ô nhập mật khẩu mới và mật khẩu xác nhận
10 Người dùng nhập mật khẩu mới và mật khẩu xác nhận
11 Người dùng nhấn Đổi mật khẩu
12.Hệ thống kiểm tra mật khẩu mới và mật khẩu xác nhận nhận được
13 Hệ thống thông báo đổi mật khẩu thành công
4a Hệ thống phát hiện email nhận được chưa được đăng ký 4a1 Hệ thống thông báo email chưa được đăng ký
4a2 Use case quay lại bước 2 của Basic flows 8a Hệ thống kiểm tra thấy mã xác nhận người dùng nhập vào không đúng
8a1 Hệ thống thông báo sai mã xác nhận
8a2 Use case quay lại bước 6 của Basic flows
Extension point Người dùng nhấn Đăng nhập
Bảng 2.5: Đặc tả chức năng đổi mật khẩu
Brief description Người dùng muốn đổi mật khẩu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi mật khẩu thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhập mật khẩu hiện tại, mật khẩu mới, mật khẩu xác nhận
3 Người dùng nhấn Đổi mật khẩu
4 Hệ thống kiểm tra mật khẩu người dùng nhập vào
5 Hệ thống lưu mật khẩu mới và thông báo cập nhật mật khẩu thành công
4a Hệ thống kiểm tra thấy mật khẩu hiện tại không đúng 4a1 Hệ thống thông báo mật khẩu hiện tại không đúng 4a2 Use case quay lại bước 1 của Basic flows
2.2.6 Xem thông tin cá nhân
Bảng 2.6: Đặc tả chức năng xem thông tin cá nhân
Name Xem thông tin cá nhân
Brief description Người dùng xem thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xem được thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Hệ thống hiển thị thông tin cá nhân của người dùng Alternative flows
2.2.7 Cập nhật thông tin cá nhân
Bảng 2.7: Đặc tả chức năng cập nhật thông tin cá nhân
Name Cập nhật thông tin cá nhân
Brief description Người dùng cập nhật thông tin cá nhân của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng cập nhật thành công thông tin cá nhân
1 Người dùng nhấn Trang cá nhân
2 Người dùng thay đổi các thông tin cần thiết
4 Hệ thống kiểm tra thông tin nhập vào
5 Hệ thống lưu thay đổi, thông báo cập nhật thông tin cá nhân thành công và hiển thị trang cá nhân mới
4a Hệ thống kiểm tra thấy email người dùng vừa chỉnh sửa đã được đăng ký
4a1 Hệ thống thông báo email đã được đăng ký trước đó
4a2 Use case quay lại bước 2 của Basic flows
Bảng 2.8: Đặc tả chức năng đổi ảnh đại diện
Name Đổi ảnh đại diện
Brief description Người dùng đổi ảnh đại diện cho tài khoản của mình
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đổi ảnh đại diện thành công
1 Người dùng nhấn Trang cá nhân
2 Người dùng nhấn Chọn ảnh
3 Người dùng chọn ảnh từ thiết bị
5 Hệ thống tải và lưu ảnh đại diện, thông báo cập nhật thành công và hiển thị ảnh đại diện mới mới
Bảng 2.9: Đặc tả chức năng đọc tài liệu
Brief description Người dùng đọc tài liệu
Actor Người dùng khách, sinh viên
Post- conditions Người dùng đọc được tài liệu mà mình muốn
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấp vào một tài liệu mà mình muốn đọc
3 Hệ thống hiển thị chi tiết tài liệu, trong đó nội dung tài liệu được hiển thị bằng trình xem PDF
Business rules Sinh viên chỉ đọc được những tài liệu công khai và tài liệu nội bộ của trường
Bảng 2.10: Đặc tả chức năng tìm kiếm tài liệu
Name Tìm kiếm tài liệu
Brief description Người dùng tìm kiếm tài liệu
Actor Sinh viên, quản lý, admin
Post-conditions Người dùng tìm được các tài liệu mong muốn
1 Người dùng nhập từ khoá vào ô tìm kiếm trên trang web
2 Người dùng nhấn phím Enter hoặc biểu tượng tìm kiếm
3 Hệ thống tìm kiếm và hiển thị các tài liệu liên quan đến từ khoá nhận được
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.11: Đặc tả chức năng lọc tài liệu
Brief description Người dùng lọc tài liệu theo tiêu chí
Actor Người dùng khách, sinh viên
Post-conditions Người dùng thực hiện thao tác lọc để tìm ra các tài liệu thoả tiêu chí
1 Người dùng truy cập danh sách tài liệu
2 Người dùng chọn các tiêu chí lọc
3 Hệ thống tìm kiếm và hiển thị các tài liệu phù hợp với các tiêu chí lọc
3a Hệ thống không thể tìm thấy được tài liệu nào phù hợp
3a1 Hệ thống hiển thị thông báo không tìm thấy tài liệu phù hợp 3a2 Use case kết thúc
Bảng 2.12: Đặc tả chức năng thích tài liệu
Brief description Người dùng thêm tài liệu vào danh sách yêu thích
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa thích tài liệu dự định sẽ thích
Post-conditions Người dùng thêm tài liệu vào danh sách yêu thích thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng thích
3 Hệ thống thông báo đã thích tài liệu và tăng lượt thích lên
2a Người dùng muốn bỏ thích tài liệu
2a1 Người dùng nhấn vào biểu tượng thích
2a2 Hệ thống thông báo đã bỏ thích tài liệu và giảm lượt thích xuống
Bảng 2.13: Đặc tả chức năng lưu tài liệu
Brief description Người dùng thêm tài liệu vào danh sách đã lưu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa lưu tài liệu dự định sẽ lưu
Post- conditions Người dùng thêm tài liệu vào danh sách đã lưu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng nhấn vào biểu tượng lưu
3 Hệ thống thông báo đã lưu tài liệu
2a Người dùng muốn bỏ lưu tài liệu
2a1 Người dùng nhấn vào biểu tượng lưu
2a2 Hệ thống thông báo đã bỏ lưu tài liệu
Bảng 2.14: Đặc tả chức năng đánh giá tài liệu
Name Đánh giá tài liệu
Brief description Người dùng đánh giá tài liệu
Người dùng đăng nhập thành công vào hệ thống Người dùng chưa đánh giá tài liệu dự định sẽ đánh giá
Post-conditions Người dùng đánh giá tài liệu thành công
1 Người dùng nhấn vào xem một tài liệu
2 Người dùng chọn số sao và nhập lời đánh giá
4 Hệ thống kiểm tra thông tin nhận được
5 Hệ thống lưu lại đánh giá, cập nhật danh sách đánh giá và hiển thị thông báo đánh giá thành công
Bảng 2.15: Đặc tả chức năng đăng tài liệu
Brief description Người dùng đăng tải một tài liệu mới lên hệ thống
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng đăng tải thành công tài liệu lên hệ thống
1 Người dùng nhấn Tải lên/Thêm tài liệu
2 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
3 Người dùng nhấn Tải lên
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã thêm tài liệu thành công
2a Người dùng có vai trò là admin
2a1 Người dùng nhập các thông tin được yêu cầu, chọn danh mục, lĩnh vực, chọn tệp tài liệu
2a2 Use case tiếp tục ở bước 3 của Basic flows
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu tài liệu, thông báo đã thêm tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin 5a2 Use case kết thúc
1 Sinh viên, quản lý sẽ tải tài liệu lên trường của mình
2 Quản lý và admin phê duyệt tài liệu do sinh viên tải lên
Bảng 2.16: Đặc tả chức năng chỉnh sửa tài liệu
Name Chỉnh sửa tài liệu
Brief description Người dùng chỉnh sửa tài liệu
Actor Sinh viên, quản lý, admin
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng chỉnh sửa tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu
2 Người dùng nhấn Chỉnh sửa bên cạnh tài liệu
3 Người dùng chỉnh sửa các thông tin cần thiết cũng như tệp tài liệu
4 Hệ thống kiểm tra thông tin về tài liệu
5 Hệ thống lưu tài liệu và thông báo đã chỉnh sửa tài liệu thành công
5a Người dùng có vai trò sinh viên
5a1 Hệ thống lưu lại tài liệu, thông báo đã chỉnh sửa tài liệu thành công và đang đợi duyệt, chuyển tài liệu đang đợi đến quản lý và admin
1 Sinh viên chỉnh sửa tài liệu thì tài liệu sẽ đưa về trạng thái chờ duyệt
2 Quản lý thực hiện chỉnh sửa các tài liệu thuộc trường mà mình quản lý
Bảng 2.17: Đặc tả chức năng xoá tài liệu
Brief description Người dùng muốn xoá một tài liệu
Pre-conditions Người dùng đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá tài liệu thành công
1 Người dùng truy cập danh sách tài liệu
2 Người dùng nhấn Xoá bên cạnh tài liệu
3 Hệ thống hiển thị xác nhận xoá tài liệu
5 Hệ thống xoá tài liệu, hiển thị thông báo xoá thành công và cập nhật lại danh sách tài liệu
4a Người dùng huỷ bỏ xoá tài liệu
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.18: Đặc tả chức năng thêm người dùng
Brief description Người dùng thêm người dùng mới trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng thêm người dùng mới thành công
1 Người dùng nhấn Thêm người dùng
2 Người dùng nhập các thông tin được yêu cầu cho người dùng mới
4 Hệ thống kiểm tra thông tin nhận vào
5 Hệ thống lưu người dùng mới, sau đó hiển thị thông báo thêm người dùng thành công
2a Người dùng có vai trò admin
2a1 Người dùng nhập các thông tin được yêu cầu và chọn trường cho người dùng mới
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện thêm người dùng thuộc trường của mình
Bảng 2.19: Đặc tả chức năng chỉnh sửa người dùng
Use case Chỉnh sửa người dùng
Brief description Người dùng chỉnh sửa thông tin của người dùng khác trên hệ thống
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người chỉnh sửa thành công thông tin thông tin của người dùng khác
1 Người dùng truy cập vào danh sách người dùng do mình quản lý
2 Người dùng nhấn Chỉnh sửa bên cạnh tài khoản của người dùng muốn chỉnh sửa
3 Người dùng chỉnh sửa các thông tin cần thiết của người dùng
5 Hệ thống lưu lại thay đổi và hiển thị thông báo chỉnh sửa người dùng thành công
Alternative flows 2a Người dùng có vai trò admin
2a1 Người dùng chỉnh sửa các thông tin của người dùng và chọn trường cho người dùng (nếu muốn)
2a2 Use case tiếp tục ở bước 3 của Basic flows
4a Hệ thống kiểm tra thấy email đã được đăng ký trước đó
4a1 Hệ thống thông báo email đã được đăng ký
4a2 Use case quay lại bước 2 của Basic flows
Mật khẩu có độ dài tối thiểu là 8 ký tự
Quản lý thực hiện chỉnh sửa người dùng thuộc trường của mình
Bảng 2.20: Đặc tả chức năng xoá người dùng
Người dùng xoá một người dùng khác
Pre-conditions Người đã đăng nhập thành công vào hệ thống
Người dùng xoá thành công một người dùng khác
1 Người dùng truy cập vào danh sách người dùng mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh tài khoản của người dùng muốn xoá
3 Hệ thống hiển thị cảnh báo xác nhận xoá người dùng
5 Hệ thống xoá người dùng, hiển thị thông báo xoá người dùng thành công và cập nhật lại danh sách người dùng
4a Người dùng huỷ bỏ việc xoá người dùng khác
4a1 Người dùng chọn Huỷ bỏ
4a2 Use case kết thúc 5a: Hệ thống kiểm tra thấy người dùng đã đăng tải tài liệu lên
5a1 Hệ thống vô hiệu hoá tài khoản người dùng, hiển thị thông báo vô hiệu hoá tài khoản người dùng và cập nhật lại danh sách người dùng
Business rules Quản lý thực hiện xoá người dùng thuộc trường mà mình quản lý
Bảng 2.21: Đặc tả chức năng xoá đánh giá
Brief description Người dùng xoá đánh giá vi phạm của tài liệu
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng xoá đánh giá thành công
1 Người dùng truy cập vào danh sách đánh giá của các tài liệu thuộc trường mà mình quản lý
2 Người dùng nhấn Xoá bên cạnh đánh giá
3 Hệ thống hiển thị cảnh báo xác nhận xoá đánh giá
5 Hệ thống xoá đánh giá, hiển thị thông báo xoá đánh giá thành công và cập nhật lại danh sách đánh giá
4a Người dùng huỷ bỏ việc xoá đánh giá
4a1 Người dùng chọn Huỷ bỏ
Bảng 2.22: Đặc tả chức năng phê duyệt tài liệu
Name Phê duyệt tài liệu
Brief description Người dùng phê duyệt tài liệu do sinh viên tải lên
Pre-conditions Người dùng đã đăng nhập thành công vào hệ thống
Post-conditions Người dùng phê duyệt tài liệu thành công
1 Người dùng truy cập vào danh sách tài liệu đang chờ phê duyệt do mình quản lý
2 Người dùng nhấn Phê duyệt
3 Hệ thống hiển thị thông báo yêu cầu chọn hành động
4 Người dùng chọn Chấp nhận
KẾT QUẢ ĐẠT ĐƯỢC
- Hiểu biết và học hỏi thêm nhiều về Spring Boot, ReactJS và các công nghệ liên quan được sử dụng trong dự án
- Nâng cao kiến thức về cách thiết kế RESTful API, cách thiết kế giao diện
- Hiểu biết về cách tích hợp hai hệ thống back-end và front-end lại với nhau
- Nắm rõ được quy trình phát triển phần mềm
- Kỹ năng thiết kế, xây dựng và phát triển phần mềm
- Kỹ năng quản lý tiến độ dự án phần mềm
- Kỹ năng gỡ lỗi và giải quyết lỗi hiệu quả
- Kỹ năng làm việc nhóm và cộng tác
- Kỹ năng quản lý thời gian
- Kỹ năng tự tìm hiểu, nghiên cứu và học hỏi
- Kỹ năng tư duy logic
- Cẩn thận, chỉn chu trong thực hiện công việc
- Thái độ cầu tiến, học hỏi công nghệ mới trong xây website
- Tinh thần làm việc nhóm hiệu quả, sẵn sàng học hỏi, chia sẻ kiến thức lẫn nhau
- Xây dựng thành công website thư viện số dành cho sinh viên
- Xây dựng thành công website quản lý thư viện số dành cho quản lý và admin
- Hoàn thành tài liệu phân tích, thiết kế hệ thống thư viện số.
ƯU NHƯỢC ĐIỂM
- Hoàn thành đầy đủ chức năng theo thiết kế
- Các chức năng tương đối đầy đủ cho người dùng cơ bản
- Giao diện trang web thân thiện, trực quan và dễ dàng sử dụng
- Hệ thống hoạt động ổn định
- Hệ thống có khả năng mở rộng và nâng cấp dễ dàng
- Chưa xem xét đến tối ưu hiệu năng và bảo mật
- Một số chức năng hiện thực chưa được tốt do hạn chế về kỹ năng lẫn kiến thức
- Chưa xem xét đến những tính năng nâng cao khác để tăng trải nghiệm người dùng.
HƯỚNG PHÁT TRIỂN
- Khắc phục những nhược điểm ở trên
- Xây dựng một trang diễn đàn chia sẻ tài liệu và tương tác trực tiếp cho sinh viên
- Phát triển tính năng tạo danh sách tài liệu để lưu và chia sẻ cho người dùng khác
- Phát triển bộ lọc tìm kiếm tài liệu hiệu quả hơn và gợi ý tài liệu liên quan
DANH MỤC TÀI LIỆU THAM KHẢO
[1] baeldung (2023, September 17) Dockerizing a Spring Boot Application Retrieved
December 25, 2023, from Baeldung website: https://www.baeldung.com/dockerizing-spring-boot-application
[2] DinhTrieu (2019, November 23) Thao thác với Google drive API Retrieved December 25, 2023, from viblo.asia website: https://viblo.asia/p/thao-thac-voi- google-drive-api-gGJ59O4xZX2
[3] Google (2023, December 25) Tổng quan về API Google Drive Retrieved December 25, 2023, from Google for Developers website: https://developers.google.com/drive/api/guides/about- sdk?hl=vi#:~:text=The%20Google%20Drive%20API%20lets
[4] haphuong (2022, November 13) Spring Boot và những điều cần biết Retrieved December 25, 2023, from Cao Đẳng FPT Polytechnic xét tuyển website: https://caodang.fpt.edu.vn/tin-tuc-poly/blog/spring-boot-va-nhung-dieu-can- biet.html#:~:text=Spring%20Boot%20l%C3%A0%20g%C3%AC%3F
[5] ITNavi (2021, October 10) Use Case là gì? Quy trình vẽ sơ đồ Use Case hoàn chỉnh
- ITNavi Retrieved December 25, 2023, from itnavi.com.vn website: https://itnavi.com.vn/blog/use-case-la-gi
[6] Oracle (2021) What is MySQL? Retrieved December 25, 2023, from Oracle.com website: https://www.oracle.com/mysql/what-is-mysql
[7] React (2023) React – A JavaScript library for building user interfaces Retrieved December 25, 2023, from reactjs.org website: https://legacy.reactjs.org/
[8] Software Engineer Training (2021, June 25) ReactJS là gì? Những điều có thể bạn chưa biết về ReactJS Retrieved December 25, 2023, from viblo.asia website: https://viblo.asia/p/reactjs-la-gi-nhung-dieu-co-the-ban-chua-biet-ve-reactjs- eW65G4RRKDO
[9] Spring (2023) Spring Boot Retrieved December 25, 2023, from spring.io website: https://spring.io/projects/spring-boot/