(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý đồ án tốt nghiệp tại khoa Cơ khí máy Trường Đại học Sư phạm Kỹ thuật TP.HCM
Trang 1z
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
SVTH : NGUYỄN THIÊN QUỐC MSSV : 16110191
Khoá : K16 Ngành : CÔNG NGHỆ THÔNG TIN GVHD
Trang 2i
LỜI CẢM ƠN
Trước hết, chúng em xin chân thành cảm ơn thầy Nguyễn Đăng Quang đã tận
tình giúp đỡ Nhờ có sự hướng dẫn của thầy, chúng em mới có thể hoàn thành đồ án
theo cách hợp lệ nhất Đặc biệt, chúng em xin tỏ lòng biết ơn sâu sắc đến thầy Nguyễn
Minh Đạo, đã tận tình chỉ dẫn để chúng em có thể thực hiện và hoàn thành đồ án tốt
nghiệp này Với những kiến thức, nhận xét của thầy không những giúp chúng em có
thể chỉnh sửa những thiếu sót mà còn giúp hoàn thiện kĩ năng cần có của một lập trình
viên để hoàn thiện đồ án này
Chúng em cũng không quên gửi lời cảm ơn đến quý giảng viên trong hội đồng
đánh giá nói riêng, và ban Khoa, Ngành nói chung Nhờ những đánh giá khách quan
của quý thầy cô đã giúp chúng em hiểu thêm các khía cạnh khác nhau trong đồ án
này, từ đó hoàn thiện báo cáo tốt nghiệp tốt hơn
Ngoài ra, chúng em xin cảm ơn các bạn cùng khoá, các anh chị khoá trên, các
bạn thuộc Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh đã không ngần
ngại giúp đỡ, chia sẻ kiến thức trong suốt thời gian qua
Do vốn kiến thức còn ít ỏi cũng như quỹ thời gian có giới hạn, nên việc sai sót
trong quá trình thực hiện là điều không thể tránh khỏi, rất mong được nhận thêm
nhiều ý kiến đóng góp hữu ích hơn từ quý thầy cô và các bạn để giúp chúng em hoàn
thiện bản thân cũng như trong những dự án sắp tới
Một lần nữa, chúng em xin chân thành cảm ơn!
Tp Hồ Chí Minh, ngày 20 tháng 07 năm 2021
Trang 3đồ án tốt nghiệp tại khoa cơ khí máy
- Tìm hiểu về nghiệp vụ quản lý đồ án tốt nghiệp
- Không hiểu rõ mong muốn khách hàng nên phải thay đổi một số nghiệp vụ trong quá trình xây dựng website
- Bất đồng bộ giữa Back-end và Front-end
- Sửa chữa và thêm một số chức năng để phù hợp với sự thay đổi về nghiệp vụ
- Tiến hành nhiều cuộc thảo luận để giải quyết vần đề được đưa ra
- Website quản lý đề tài tốt nghiệp
- Xây dựng hệ thống dễ dàng bảo trì và phát triển
Trang 4- Learn about the graduation thesis management profession
- Not understanding what the customer wants, so we must change some operations during the construction of the website
- Misunderstanding between front-end and back-end
- Fix and add some functionality to accommodate changing business
- Conduct a lot of discussions to solve the problem raised
- Management website for graduation thesis
- Building a system that’s easy to maintain and develop
Trang 5iv
MỤC LỤC
LỜI CẢM ƠN i
LỜI MỞ ĐẦU ii
PREFACE iii
MỤC LỤC iv
DANH MỤC CÁC TỪ VIẾT TẮT vii
DANH MỤC CÁC BẢNG BIỂU viii
DANH MỤC CÁC HÌNH ẢNH, BIỂU ĐỒ xi
TÀI LIỆU THAM KHẢO xii
CHƯƠNG 1 GIỚI THIỆU 1
1.1 Tính cấp thiết của đề tài 1
1.2 Mục đích của đề tài 1
1.3 Đối tượng và phạm vi nghiên cứu 1
1.4 Kết quả dự kiến đạt được 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1 Giới thiệu về Java 3
2.1.1 Java là gì? Hoàn cảnh ra đời của Java 3
2.1.2 Đặc điểm của Java 4
2.2 Spring Framework 6
2.2.1 Tổng quan về Spring 6
2.2.2 Các module và kiến trúc của Spring Framework 6
2.3 Spring Boot 8
2.3.1 Spring Boot là gì? Tác dụng của Spring Boot 8
2.3.2 Các yêu cầu về hệ thống của Spring Boot 8
2.4 Tìm hiểu về RESTful API 9
2.4.1 RESTful API là gì? 9
2.4.2 Cách thức hoạt động của RESTful 10
2.4.3 Các ràng buộc trong REST 11
2.5 Angular (web framework) 11
2.5.1 Khái niệm Angular Phân biệt giữa Angular và AngularJS 11
2.5.2 Cách thức hoạt động 12
2.6 Cơ sở dữ liệu MongoDB 13
CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 16 3.1 Khảo sát hiện trạng 16
3.2 Xác định yêu cầu 17
Trang 6v
3.2.1 Yêu cầu chức năng 17
3.2.2 Yêu cầu phi chức năng 18
CHƯƠNG 4 ĐẶC TẢ CHỨC NĂNG 20
4.1 Định nghĩa Use Case 20
4.1.1 Mô tả Actor 20
4.1.2 Mô tả Usecase 20
4.2 Use Case Diagram 21
4.3 Đặc tả Use Case 21
4.3.1 Quản lý bài viết 24
4.3.2 Quản lý biểu điểm hội đồng 27
4.3.3 Quản lý biểu điểm nhận xét – GVHD 31
4.3.4 Giảng viên đề xuất đề tài 35
4.3.5 Giảng viên đăng ký hướng dẫn đề tài 36
CHƯƠNG 5 THIẾT KẾ ỨNG DỤNG 38
5.1 Thiết kế cơ sở dữ liệu 38
5.1.1 Lược đồ cơ sở dữ liệu 38
5.1.2 Chi tiết các collection 39
5.2 Thiết kế xử lý 56
5.2.1 Lược đồ lớp 56
5.2.2 Chức năng quản lý bài viết 61
5.2.3 Chức năng quản lý biểu điểm hội đồng 63
5.2.4 Chức năng giảng viên đăng ký hướng dẫn đề tài 65
5.2.5 Chức năng giảng viên đề xuất đề tài 66
5.3 Thiết kế giao diện 67
5.3.1 Phía admin/thư ký khoa 67
5.3.2 Phía giảng viên 76
CHƯƠNG 6 CÀI ĐẶT VÀ KIỂM THỬ ỨNG DỤNG 82
6.1 Cài đặt ứng dụng 82
6.1.1 Thư viện và môi trường phát triển 82
6.1.2 Lệnh cài đặt và chạy website Front-end 82
6.1.3 Lệnh cài đặt và chạy API web serivce Back-end (tuỳ chọn) 82
6.2 Kiểm thử phần mềm 83
6.2.1 Chức năng quản lý bài viết 83
6.2.2 Chức năng quản lý biểu điểm hội đồng 84
6.2.3 Chức năng giảng viên nhận xét đề tài hướng dẫn 84
CHƯƠNG 7 KẾT LUẬN 85
Trang 7vi
7.1 Kết quả đạt được 85
7.2 Ưu điểm và nhược điểm 85
7.2.1 Ưu điểm 85
7.2.2 Nhược điểm 85
7.2.3 Khó khăn 85
7.3 Kinh nghiệm đạt được 86
7.4 Hướng phát triển trong tương lai 86
Trang 8vii
DANH MỤC CÁC TỪ VIẾT TẮT
JWT: Json Web Token
OOP: Object Oriented Programming
LTS: Long Term Support
IoC: Inversion of Control
DI: Dependency Injection
IDE: Integrated Development Environment
Trang 9viii
DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1: Danh sách phiên bản Java đã phát hành 4
Bảng 2.2: Build Tool được hỗ trợ bởi Spring Boot 9
Bảng 2.3: Servlet Containers được Spring Boot hỗ trợ 9
Bảng 4.1: Mô tả Actor 20
Bảng 4.2: Mô tả Use Case 20
Bảng 4.3: Đặc tả Use Case 21
Bảng 4.4: Chi tiết use case "xem danh sách bài viết" 24
Bảng 4.5: Chi tiết use case "cập nhật bài viết" 25
Bảng 4.6: Chi tiết use case "thay đổi trạng thái bài viết" 25
Bảng 4.7: Chi tiết use case "tìm kiếm bài viết" 26
Bảng 4.8: Chi tiết use case "thêm bài viết mới" 26
Bảng 4.9: Chi tiết use case "xem danh sách biểu điểm hội đồng" 28
Bảng 4.10: Chi tiết use case "cập nhật biểu điểm hội đồng" 28
Bảng 4.11: Chi tiết use case "thay đổi trạng thái biểu điểm hội đồng" 29
Bảng 4.12: Chi tiết use case "tìm kiếm biểu điểm hội đồng" 29
Bảng 4.13: Chi tiết use case "thêm biểu điểm hội đồng mới" 30
Bảng 4.14: Chi tiết use case "xem danh sách biểu điểm nhận xét hướng dẫn " 31
Bảng 4.15: Chi tiết use case "cập nhật biểu điểm nhận xét hướng dẫn" 32
Bảng 4.16: Chi tiết use case "thay đổi trạng thái biểu điểm nhận xét hướng dẫn " 33
Bảng 4.17: Chi tiết use case "tìm kiếm biểu điểm nhận xét hướng dẫn" 33
Bảng 4.18: Chi tiết use case "thêm biểu điểm nhận xét hướng dẫn mới" 34
Bảng 4.19: Chi tiết use case "giảng viên đề xuất đề tài" 35
Bảng 4.20: Chi tiết use case "giảng viên đăng ký hướng dẫn đề tài" 36
Bảng 5.1: Collection "bai-viet" 39
Bảng 5.2: Collection "side-banner" 40
Bảng 5.3: Collection "banner" 40
Bảng 5.4: Collection "my-file" 40
Bảng 5.5: Colleciton "cau-hinh-he-thong" 41
Bảng 5.6: Colleciton "dia-diem" 41
Bảng 5.7: Colleciton "tai-khoan" 41
Bảng 5.8: Colleciton "thoi-gian-bao-ve" 42
Bảng 5.9: Colleciton "hoc-ham" 42
Bảng 5.10: Colleciton "hoc-vi" 42
Bảng 5.11: Colleciton "khoa" 42
Bảng 5.12: Colleciton "nganh" 43
Trang 10ix
Bảng 5.13: Colleciton "bo-mon" 43
Bảng 5.14: Colleciton "mon-hoc" 43
Bảng 5.15: Colleciton "chuc-vu" 44
Bảng 5.16: Colleciton "sinh-vien" 44
Bảng 5.17: Colleciton "giang-vien" 45
Bảng 5.18: Colleciton "hoi-dong" 46
Bảng 5.19: Colleciton "dot-dang-ky" 46
Bảng 5.20: Colleciton "de-tai" 47
Bảng 5.21: Colleciton "de-tai-de-xuat" 49
Bảng 5.22: Colleciton "bieu-diem-hoi-dong" 49
Bảng 5.23: Colleciton "bieu-diem-nhan-xet-huong-dan" 50
Bảng 5.24: Colleciton "bieu-diem-nhan-xet-phan-bien" 50
Bảng 5.25: Colleciton "linh-vuc" 51
Bảng 5.26: Colleciton "ca-nhan" 51
Bảng 5.27: Document "muc-do-hoan-thanh" 51
Bảng 5.28: Document "tieu-chi-danh-gia" 52
Bảng 5.29: Document "diem-hoi-dong" 52
Bảng 5.30: Document "diem-huong-dan" 52
Bảng 5.31: Document "diem-phan-bien" 52
Bảng 5.32: Document "diem-do-an-embedded" 53
Bảng 5.33: Document "de-tai-embedded" 53
Bảng 5.34: Document "giang-vien-embedded" 53
Bảng 5.35: Document "nhan-xet-huong-dan" 54
Bảng 5.36: Document "nhan-xet-phan-bien" 54
Bảng 5.37: Document "thoi-gian" 55
Bảng 5.38: Document "thu-tu-bao-ve" 55
Bảng 5.39: Document "uy-vien-hoi-dong" 55
Bảng 5.40: Danh sách màn hình phía "admin/thư ký khoa" 67
Bảng 5.41: Mô tả “màn hình biểu điểm GVHD" 67
Bảng 5.42: Mô tả "màn hình thêm mới biểu điểm" 68
Bảng 5.43: Mô tả "màn hình chỉnh sửa biểu điểm" 70
Bảng 5.44: Mô tả "màn hình quản lý sinh viên" 72
Bảng 5.45: Mô tả "màn hình thêm mới sinh viên" 73
Bảng 5.46: Mô tả "màn hình duyệt thông tin sinh viên" 74
Bảng 5.47: Mô tả "màn hình chỉnh sửa thông tin sinh viên" 76
Bảng 5.48: Danh sách màn hình phía "giảng viên" 76
Trang 11x
Bảng 5.49: Mô tả "màn hình xem danh sách hội đồng" 77
Bảng 5.50: Mô tả "màn hình hội đồng đánh giá đề tài" 78
Bảng 5.51: Mô tả "màn hình hội đồng đánh giá đề tài" 79
Bảng 6.1 Danh sách thư viện và môi trường phát triển cần thiết trong sản phẩm 82
Bảng 6.2 Danh sách các lệnh cài đặt và chạy chương trình 82
Bảng 6.3 Kiểm thử chức năng quản lý bài viết 83
Bảng 6.4: Kiểm thử chức năng quản lý biểu điểm hội đồng 84
Bảng 6.5: Kiểm thử chức năng giảng viên nhận xét đề tài hướng dẫn 84
Bảng 7.1 Các khó khăn về công nghệ 85
Bảng 7.2 Các khó khăn về quy trình thực hiện 86
Trang 12xi
DANH MỤC CÁC HÌNH ẢNH, BIỂU ĐỒ
Hình 2.1: Lập trình hướng đối tượng trên Java 5
Hình 2.2: Kiến trúc của Spring Framework 7
Hình 2.3: REST API Design 9
Hình 2.4: Angular Application Diagram 12
Hình 2.5: Mô hình Mongoose 15
Hình 4.1: Use Case Diagram 21
Hình 4.2: Use case quản lý bài viết 24
Hình 4.3: Use case quản lý biểu điểm hội đồng 27
Hình 4.4: Use case quản lý biểu điểm nhận xét hướng dẫn 31
Hình 4.5: Use case giảng viên đề xuất đề tài 35
Hình 4.6: Use case giảng viên đăng ký hướng dẫn đề tài 36
Hình 5.1: Lược đồ cơ sở dữ liệu (1) 38
Hình 5.2: Lược đồ cơ sở dữ liệu (2) 39
Hình 5.3: Class Diagram (1) 56
Hình 5.4: Class Diagram (2) 57
Hình 5.5: Class Diagram (3) 58
Hình 5.7: Class Diagram (5) 60
Hình 5.8: Class Diagram (6) 60
Hình 5.9: Sequence diagram chức năng "cập nhật bài viết" 61
Hình 5.10: Sequence diagram chức năng "thêm bài viết mới" 62
Hình 5.11: Sequence diagram chức năng "thay đổi trạng thái biểu điểm hội đồng" 63 Hình 5.12: Sequence diagram chức năng "thêm biểu điểm hội đồng mới" 64
Hình 5.13: Sequence diagram chức năng "giảng viên đăng ký hướng dẫn đề tài" 65
Hình 5.14: Sequence diagram chức năng "giảng viên đề xuất đề tài" 66
Hình 5.15: Màn hình biểu điểm GVHD 67
Hình 5.16: Màn hình thêm mới biểu điểm 68
Hình 5.17: Màn hình chỉnh sửa biểu điểm 70
Hình 5.18: Màn hình quản lý sinh viên 72
Hình 5.19: Màn hình thêm mới sinh viên 73
Hình 5.20: Màn hình duyệt thông tin sinh viên 74
Hình 5.21: Màn hình chỉnh sửa thông tin sinh viên 75
Hình 5.22: Màn hình xem danh sách hội đồng 77
Hình 5.23: Màn hình hội đồng đánh giá đề tài 78
Hình 5.24: Màn hình hội đồng đánh giá đề tài 79
Trang 141
CHƯƠNG 1 GIỚI THIỆU
1.1 Tính cấp thiết của đề tài
Trong những ngày tháng năm cuối đại học, đa số sinh viên thường ra ngoài đi làm dẫn đến khó có thể sắp xếp, cập nhật thông tin, thời gian về việc đăng ký đồ án tốt nghiệp Trong khi đó giảng viên bận rộn với các công việc giảng dạy, ít nắm bắt được số lượng, tình hình sinh viên đăng ký Với những lý do trên, nhóm quyết định chọn đề tài xây dựng website quản lý đồ án tốt nghiệp nhằm giảm bớt gánh nặng cho giảng viên cũng như sinh viên trong việc quản lý đồ án của mình, phần nào giảm bớt khó khăn trong việc lưu trữ đồ án tốt nghiệp
1.2 Mục đích của đề tài
Đề tài “XÂY DỰNG WEBSITE QUẢN LÝ ĐỒ ÁN TỐT NGHIỆP TẠI
KHOA CƠ KHÍ MÁY TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM ”
đặt ra các vấn đề trọng tâm về mục tiêu mà sinh viên nghiên cứu cần thực hiện được bao gồm:
- Sử dụng công nghệ, kỹ thuật, thư viện ứng dụng và quá trình phát triển phần mềm, mang lại giá trị nhanh nhất cho khách hàng, bao gồm: các công nghệ giúp phát triển ứng dụng web đa nền tảng, các công nghệ ứng dụng giúp phát triển dự án nhanh nhất, độc lập nhất và dễ dàng triển khai cho các môi trường khác nhau
- Xây dựng website quản lý đồ án tốt nghiệp giúp các thầy cô dễ dàng quản lý thông tin về đồ án mà sinh viên đã thực hiện cho trường Từ đó, sản phẩm được xem xét và đánh giá một cách phù hợp
- Sản phẩm là một trang web nên yêu cầu giao diện thân thiện với người dùng, phù hợp với khách hàng mong muốn Sản phẩm cũng yêu cầu phải sử dụng được trên nhiều trình duyệt khác nhau cũng như nhiều loại thiết bị
1.3 Đối tượng và phạm vi nghiên cứu
Đồ án được thực hiện xoay quanh hai đối tượng trọng tâm, bao gồm: công nghệ
và kiến thức thực tế về việc quản lý, xử lý các nghiệp vụ mà khách hàng yêu cầu Trong đó, đối tượng công nghệ bao gồm các đối tượng nghiên cứu bắt buộc: Java Spring Boot, Angular Framework, cơ sở dữ liệu NoSQL MongoDB Ngoài việc kết hợp các đối tượng nghiên cứu công nghệ, một số thư viện hữu ích như JWT (Json Web Token), Ant Design (ng-zorro) cũng được nghiên cứu để xây dựng giao diện website được tốt hơn
Trang 152 Đối tượng khách hàng hướng đến là nhóm đối tượng có nhu cầu tổ chức, quản
lý các đồ án tốt nghiệp, bao gồm các quy trình đăng ký từ giảng viên, xem xét các thông tin rồi xét duyệt thông tin, quản lý người dùng, quản lý các danh mục
Phạm vi thực hiện được đặt ở mức độ tổng quát, nắm được kiến thức chung cho nội dung thực hiện và vận dụng từng nội dung kiến thức vào sản phẩm thực tế, không đặt nặng lý thuyết Tham khảo ý kiến của giảng viên hướng dẫn, khách hàng, bạn bè xung quanh, những người có kinh nghiệm liên quan đến các vấn đề đang gặp phải để tạo ra độ chính xác của sản phẩm
1.4 Kết quả dự kiến đạt được
- Hiểu được các kiến thức về chức năng, cách thức hoạt động của Java Spring Boot và Angular trong việc xây dựng website
- Xây dựng hoàn thành một website quản lý đồ án tốt nghiệp với những kiến thức
đã tìm hiểu
Trang 163
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu về Java
2.1.1 Java là gì? Hoàn cảnh ra đời của Java
[9][2]Java là một ngôn ngữ lập trình hướng đối tượng (OOP), có mục đích chung cho phép các nhà phát triển ứng dụng “Write once, run anywhere”[12] (viết một lần, chạy ở mọi nơi), nghĩa là mã Java đã biên dịch có thể chạy trên tất cả các nền tảng hỗ trợ Java mà không cần biên dịch lại Cú pháp của Java tương tự C/C++ nhưng có ít
cơ sở cấp thấp hơn các ngôn ngữ trên, do đó ngôn ngữ này trở nên phổ biến, đỡ tốn công sửa lỗi hơn Tính đến năm 2021, Java nằm trong top 3 ngôn ngữ lập trình phổ biến nhất được sử dụng theo GitHub[7]
Được phát triển bởi Sun Microsystem (sau đó đã được Oracle mua lại), do James Gosling khởi xướng vào năm 1991 và phát hành vào năm 1995 như một thành phần cốt lõi của nền tảng Java của Sun Microsystem (Java 1.0 [J2SE]) Ban đầu ngôn ngữ
này được gọi là Oak theo tên một cây sồi bên ngoài văn phòng của Gosling Sau đó,
dự án có tên là Green và cuối cùng được đổi tên thành Java, từ cà phê Java, loại cà
phê đến từ Indonesia
Với sự ra đời của Java 2 (ban đầu được phát hành với tên gọi J2SE 1.2 vào tháng
12 năm 1998 – 1999), các phiên bản mới có nhiều cấu hình được xây dựng cho các loại nền tảng khác nhau J2EE bao gồm các công nghệ và API cho các ứng dụng doanh nghiệp thường chạy trong môi trường máy chủ, trong khi các API đặc trưng của J2ME được tối ưu hóa cho các ứng dụng di động Phiên bản dành cho máy tính
để bàn được đổi tên thành J2SE Năm 2006, vì mục đích tiếp thị, Sun đã đổi tên các phiên bản J2 mới lần lượt là Java EE, Java ME và Java SE:
- Nền tảng Java, phiên bản Micro (Java ME) – nhắm mục tiêu môi trường với tài nguyên hạn chế
- Nền tảng Java, phiên bản tiêu chuẩn (Java SE) – nhắm mục tiêu môi trường máy trạm
- Nền tảng Java, phiên bản Doanh nghiệp (Java EE) – nhắm mục tiêu các môi trường doanh nghiệp hoặc Internet phân tán lớn
Java có thể bắt gặp ở nhiều nơi, từ những trang web thương mại điện tử, đến
ứng dụng Android, hoặc thậm chí trên ứng dụng khoa học, ứng dụng tài chính như hệ thống giao dịch điện tử, trò chơi Minecraft, công cụ phần mềm như Eclipse, Netbeans, IntelliJ,… Java có thể chạy trên nhiều nền tảng hệ điều hành khác nhau như Windows,
Mac và các phiên bản khác nhau của UNIX Oracle (và những công ty khác) khuyên người dùng nên gỡ cài đặt các phiên bản Java đã lỗi thời vì những rủi ro nghiêm trọng
Trang 174
do các vấn đề bảo mật chưa được giải quyết Vì Java 9, 10, 12, 13 và 14 không còn được hỗ trợ, Oracle khuyên người dùng nên chuyển ngay sang phiên bản mới nhất hoặc bản phát hành được hỗ trợ lâu dài Hiện tại, phiên bản mới nhất của Java Standard Edition (SE) là Java SE16, cùng với các phiên bản được hỗ trợ lâu dài (LTS)
là Java SE 8 và Java SE 11
Các phiên bản Java đã phát hành:
Bảng 2.1: Danh sách phiên bản Java đã phát hành
Phiên bản Ngày phát hành JDK Beta 1995
JDK 1.0 23/01/1996 JDK 1.1 19/02/1997 J2SE 1.2 08/12/1998 J2SE 1.3 08/05/2000 J2SE 1.4 06/02/2002 J2SE 5.0 30/09/2004 Java SE 6 11/12/2006 Java SE 7 28/07/2011 Java SE 8 18/03/2014 Java SE 9 21/09/2017 Java SE 10 20/03/2018 Java SE 11 25/09/2019 Java SE 12 19/03/2019 Java SE 13 17/09/2019 Java SE 14 17/03/2020 Java SE 15 15/09/2020 Java SE 16 16/03/2021 Java SE 17 Dự kiến vào tháng 8/2021
2.1.2 Đặc điểm của Java
- Hướng đối tượng: Trong Java, mọi thứ đều là Object (vật thể) Java có thể
mở rộng vì nó dựa trên mô hình Object
Trang 185
Hình 2.1: Lập trình hướng đối tượng trên Java [10]
- Nền tảng độc lập: Không giống như nhiều ngôn ngữ lập trình khác (C, C++),
khi Java được biên dịch, nó không biên dịch sang một máy tính cụ thể trên nền tảng
nào, thay vào đó là những byte code độc lập với nền tảng Byte code này được phân phối trên web và được thông dịch bằng Virtual Machine (JVM) trên bất cứ nền tảng
nào mà nó đang chạy
- Đơn giản: Java được thiết kế để dễ học Chỉ cần hiểu cơ bản về khái niệm lập
trình hướng đối tượng, thì có thể nắm bắt ngôn ngữ này rất nhanh
thống không có virus, giả mạo Các kỹ thuật xác thực dựa trên mã hóa công khai
- Kiến trúc trung lập: Trình biên dịch của Java tạo ra một định dạng file object
có kiến trúc trung lập, làm cho code sau khi biên dịch có thể chạy trên nhiều bộ vi xử
lý, với sự hiện diện của Java runtime system
- Portable: Là kiến trúc trung lập và không phụ thuộc vào việc thực hiện là
những đặc điểm chính nhất khi nói về khía cạnh Portable của Java Trình biên dịch trong Java được viết bằng ANSI C với một ranh giới portable gọn gàng, đó là một subset POSIX (giao diện hệ điều hành linh động) Điều này cho phép nhà phát triển
có thể mang byte code của Java lên bất cứ nền tảng nào
mạnh chủ yếu là kiểm tra lỗi thời gian biên dịch và kiểm tra runtime
- Đa luồng: Với tính năng đa luồng của Java, nhà phát triển có thể viết các
chương trình có thể thực hiện nhiều tác vụ đồng thời Tính năng này cho phép xây
dựng các ứng dụng tương tác có thể chạy trơn tru
Trang 196
- Thông dịch: Byte code của Java được dịch trực tiếp tới các nền tảng gốc và
nó không được lưu trữ ở bất cứ đâu
- Hiệu suất cao: Với việc sử dụng trình biên dịch Just-In-Time, Java cho phép
thực thi với hiệu suất cao, nhanh chóng phát hiện, gỡ lỗi
- Phân tán: Java được thiết kế cho môi trường phân tán của Internet
- Linh động: Java được coi là năng động hơn C hay C++ vì nó được thiết kế để
thích nghi với môi trường đang phát triển Các chương trình Java có thể mang theo một lượng lớn thông tin run-time, được sử dụng để xác minh và giải quyết các truy
cập đến đối tượng trong thời gian chạy
2.2 Spring Framework
2.2.1 Tổng quan về Spring
[6]Spring Framework (hay Spring) là một cấu trúc mã nguồn mở có thể được sử
dụng để phát triển các ứng dụng dành cho ngôn ngữ lập trình Java một cách dễ dàng
và với tốc độ nhanh chóng Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử,
sử dụng lại code,… Do Spring là một mã nguồn mở, nên có cộng đồng người dùng rất lớn, luôn được phát triển, chia sẻ
Spring nhẹ (kích thước nhỏ, version cơ bản chỉ khoảng 2MB) và trong suốt (hoạt động một cách trong suốt với lập trình viên) Nói cách khác, Spring giúp xử lý cơ sở
hạ tầng trong khi chúng ta chỉ cần tập trung vào việc phát triển ứng dụng của mình
Có lẽ Spring Framework nổi tiếng nhất với sự cung cấp một cách hiệu quả các tính năng cần thiết để tạo ra các ứng dụng thương mại phức tạp, vượt lên khỏi các mô hình lập trình từng chiếm vị trí ưu thế trong lịch sử ngành công nghiệp phần mềm Tiếp theo, nó cũng được ghi nhận về việc đưa các chức năng vốn ít được quen biết vào thực tế, có khi còn vượt cả ra bên ngoài nền tảng Java nữa
Thành quả của việc này là nó đã tạo nên một framework, cung cấp một mô hình nhất quán và làm cho nó có thể áp dụng vào hầu hết các loại ứng dụng được tạo trên nền tảng Java ngày nay Spring được coi như thực thi một cách làm việc dựa trên những thói quen thực hành tốt nhất và những tiêu chuẩn công nghiệp, và đồng thời tạo cơ hội cho những lĩnh vực trong Java sử dụng nó
2.2.2 Các module và kiến trúc của Spring Framework
Để tiện cho các mục đích phát triển ứng dụng mà Spring đã được phân chia thành nhiều dạng module khác nhau:
Trang 207
Hình 2.2: Kiến trúc của Spring Framework
Test: Tầng này cung cấp cho người dùng khả năng hỗ trợ kiểm thử với JUnit
và TestNG
Spring Core Container: Bao gồm các module khác như:
- Spring Core, Beans cung cấp tính năng Inversion of Control (IoC) và Dependency Injection (DI)
- Spring Context hỗ trợ đa ngôn ngữ (internationalization), các tính năng Java EE cho người dùng như: EJB, JMX
- Expression Language được mở rộng từ Expresion Language trong JSP Từ đó, cung cấp các hỗ trợ cho quá trình setting hoặc getting các giá trị Hầu hết các method đều sẽ thực hiện cải tiến cho phép truy cập collections, index, các toán
tử logic…
Trang 218
AOP, Aspects và Instrumentation: Các module này sẽ giữ nhiệm vụ hỗ trợ
cho các cài đặt lập trình thiên hướng khía cạnh và khả năng hỗ trợ tích hợp với AspectJ
Data Access / Integration: Đây là nhóm bao gồm JDBC, ORM, OXM, JMS
và module Transaction Chúng có khả năng cung cấp giao tiếp cùng với database
Web: Nó hay còn gọi là Spring MVC, đây là một trong những nhóm bao gồm:
Web, Web-Servlet… Nó sẽ hỗ trợ cho việc tạo ra các ứng dụng web
2.3 Spring Boot
2.3.1 Spring Boot là gì? Tác dụng của Spring Boot
[3]Một điểm hạn chế khi người mới bắt đầu với Spring là các bước cấu hình rất phức tạp, người phát triển có thể mất hàng tá thời gian để ứng dụng có thể chạy được Với những hạn chế của Spring, Spring Boot ra đời
Spring Boot là một module trong hệ sinh thái Spring Framework hiện đang được
nhiều lập trình viên lựa chọn vì nó giúp cho các lập trình viên chúng ta đơn giản hóa quá trình lập trình một ứng dụng với Spring, chỉ tập trung vào việc phát triển business cho ứng dụng Spring Boot được coi như là điểm khởi đầu để xây dựng tất cả các ứng dụng dựa trên nền tảng Spring Khi sử dụng Spring Boot, rất nhiều thứ được cải tiến
hỗ trợ người phát triển như:
- Auto Config: tự động cấu hình ứng dụng, người phát triển chỉ cần viết code và tiến hành chạy hệ thống là được
- Dựa trên các Annotation để tạo lập các bean thay vì XML
- Server Tomcat được nhúng ngay trong file JAR build ra và có thể chạy ở bất kỳ đâu mà Java chạy được
Khi sử dụng Spring Boot, người phát triển chỉ cần thao tác các bước đơn giản:
- Sử dụng Spring Initializr: nhập các thông tin của dự án, chọn thư viện cần thiết
và tải code về máy
- Mở mã nguồn và bắt đầu viết code cho ứng dụng
- Có thể chạy ngay trong IDE, hoặc build thành file JAR mà không cần cấu hình config cho server
2.3.2 Các yêu cầu về hệ thống của Spring Boot
[7]Spring Boot phiên bản 2.5.2 yêu cầu phiên bản Java 8 trở lên và đã hỗ trợ tới Java 16 Spring Framework Spring Framework 5.3.8 hoặc cao hơn cũng được yêu cầu
Các công cụ hỗ trợ build mà Spring Boot có thể làm việc được:
Trang 229
Bảng 2.2: Build Tool được hỗ trợ bởi Spring Boot
Các Servlet Containers mà Spring Boot hỗ trợ:
Bảng 2.3: Servlet Containers được Spring Boot hỗ trợ
[4]RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng
web (thiết kế Web Services) để tiện cho việc quản lý các resource Nó chú trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP
REST bao gồm 3 bộ phận cơ bản như: bộ máy chủ ngoài chứa dữ liệu (external server), máy chủ API và máy chủ khách (client) Trong đó, máy khách có thể là bất
cứ thứ gì, ứng dụng trên nền web, thư viện hoặc thậm chí là các phần mềm khác nhau của một phần mềm máy tính
Hình 2.3: REST API Design
Trang 2310 API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu
dữ liệu phổ biến như JSON hay XML
REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST sử dụng các HTTP method (như GET, POST, PUT, DELETE…) để gửi request đến một URL để xử lý dữ liệu RESTful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể sử dụng để thiết kế một RESTful API
2.4.2 Cách thức hoạt động của RESTful
Khi làm việc với server sẽ gồm 4 hoạt động thiết yếu là:
- Lấy dữ liệu ở một định dạng nào đó (JSON,…)
- Tạo mới dữ liệu
- Cập nhật dữ liệu
- Xoá dữ liệu
REST hoạt động chủ yếu dựa vào giao thức HTTP Mỗi trong các hoạt động cơ bản trên sẽ sử dụng những HTTP method riêng Có tất cả 9 loại method, phổ biến nhất là GET, POST, PUT và DELETE:
- GET: được sử dụng để lấy thông tin từ server theo URI đã cung cấp
- HEAD: giống với GET nhưng response trả về không có body, chỉ có header
- POST: gửi thông tin tới sever thông qua các biểu mẫu http
- PUT: ghi đè tất cả thông tin của đối tượng với những gì được gửi lên
- PATCH: ghi đè các thông tin được thay đổi của đối tượng
- DELETE: xóa tài nguyên trên server
- CONNECT: thiết lập một kết nối tới server theo URI
- OPTIONS: mô tả các tùy chọn giao tiếp cho resource
- TRACE: thực hiện một bài test loop – back theo đường dẫn đến resource REST là một kiến trúc thống nhất giúp thiết kế các website để có thể dễ dàng quản lý các tài nguyên Nó không phải là một quy luật buộc bạn phải tuân theo mà đơn giản là một kiến trúc được đề xuất ra và kiến trúc này hiện đang được sử dụng rất phổ biến vì tính đơn giản, dễ hiểu và rất ưu việt của nó Với các ứng dụng web được thiết kế sử dụng RESTful, ban có thể dễ dàng biết được URL và HTTP method
để quản lý một resource
Trang 2411
2.4.3 Các ràng buộc trong REST
1 Kiến trúc client-server: Server sẽ là tập hợp các services nhỏ xử lý các request
từ client, việc tách biệt giúp tăng tính linh hoạt của client cũng như khả năng mở rộng của server mà vẫn đảm bảo được giao tiếp
2 Stateless (phi trạng thái): Server và client sẽ không lưu trạng thái của nhau, mỗi request và response sẽ chứa đầy đủ thông tin, tách biệt với nhau, điều này giúp
hệ thống dễ phát triển và mở rộng
3 Cacheability (có khả năng cache): Các response có thể được lấy ra từ cache của server giúp giảm thiểu thời gian xử lý, các request phải đảm bảo tính duy nhất để response không bị nhầm lẫn với các request khác
4 Layered system (phân lớp hệ thống): Hệ thống được chia làm nhiều lớp, việc giao tiếp của 1 lớp chỉ được tiến hành với lớp ở trên và lớp ở dưới của nó, khả năng cân bằng tải (load balancing) và cache dữ liệu trong hệ thống cũng sẽ được cải thiện
5 Uniform interface (chuẩn hoá các interface): Đây là ràng buộc quan trọng nhất của hệ thống REST Để đảm bảo ràng buộc này, hệ thống tập trung vào việc xử lý các tài nguyên (resource) Mỗi một resource sẽ được xác định (định danh) bằng một URI (Uniform Resource Identifier) riêng biệt
2.5 Angular (web framework)
2.5.1 Khái niệm Angular Phân biệt giữa Angular và AngularJS
cho công việc thiết kế web Angular được phát triển từ những năm 2009 và được duy trì bởi Google Framework này được xem là framework front-end mạnh mẽ nhất chuyên dụng bởi các lập trình viên cắt HTML cao cấp
Angular được ứng dụng rộng rãi với mục đích xây dựng project Single Page
Application (SPA) Hiện tại, Version stable của Angular là Angular v12.1.1 Trên
thực tế, Angular sở hữu hai phiên bản hoàn toàn khác nhau như sau:
- Phiên bản 1: Phiên bản này có tên chính thức là AngularJS đến hiện nay nó
vẫn đang được phát triển hoàn thiện bởi các chuyên gia Vào năm 2018, thì phiên bản 1.7.3 đã được nhà sản xuất phát hành Đây là phiên bản được hoàn thành thực sự dựa trên Javascript bởi những lập trình viên viết mã theo ngôn ngữ Javascript thì nó thường dễ làm và dễ tìm kiếm Tuy nhiên, hiệu năng khi so sánh với phiên bản ReactJS thì vẫn còn nhiều công ty xây dựng phải cân nhắc sử dụng Angular với phiên bản khác 1
- Phiên bản 2: Phiên bản này được gọi với cái tên chính thức là Angular Nó sở
hữu tư duy thay đổi hoàn toàn với phiên bản thứ 1 và mang lại tham vọng giúp cho Angular có thể đánh bại ReactJS Angular được xem là một trong những framework
Trang 2512
sở hữu cấu trúc ứng dụng dạng động và cho phép bạn có thể sử dụng HTML như là ngôn ngữ mẫu cũng như mở việc mở rộng cú pháp của HTML Nhờ vậy, việc diễn đạt các thành phần ứng dụng của người lập trình sẽ trở nên súc tích và rõ ràng hơn rất nhiều
2.5.2 Cách thức hoạt động
[11]Các khối xây dựng chính cấu thành nên Angular là: Module, Component, Template, Metadata, Data binding, Service, Directive, Dependency Injection
Hình 2.4: Angular Application Diagram
Modules: Trong Angular một module là nhóm các khối như components,
services, templates, directive, pipes được đóng gói lại để xây dựng các functional unit Một ví dụ về module là httpclient module của Angular, giúp chúng ta thiết lập các giao tiếp trên network Nhiều modules kết hợp với nhau để xây dựng một ứng dụng Angular
Components: là những khối xây dựng UI – chúng thường được tái sử dụng
xuyên suốt module và ứng dụng Một component trong Angular bao gồm class file, file template (HTML template) và file css/scss
Services: là các singleton object classes trong ứng dụng Angular Nhúng
services trong components là một common pattern để chia sẻ dữ liệu qua các components
Trang 2613
Templates: Là kết hợp giữa HTML view với component class file, template tạo
ra các khối xây dựng của view người dùng
Metadata: được dùng để decorate class và giúp thiết lập cơ bản như:
@Component, @pipe
Data binding: Angular hỗ trợ binding như property, event và attribute từ
component typescript tới template view, với directive ngModel còn cung cấp binding
2 chiều (two-way data binding)
Directives: dùng để hướng dẫn DOM (document object model) Directives đính
kèm các hành vi cụ thể vào DOM và giúp chúng ta biến đổi UI theo business logic hoặc user interactions Bao gồm: Component Directives, Structural Directives, Attribute Directives
Dependency Injection: là cách class trong Angular nhận các dependencies mà
nó cần sử dụng Dependency Injection giúp các dependencies từ class này nhúng sang class khác để sử dụng Dependency Injection được thực hiện thông qua injecting service class vào component hoặc module class
Như diagram trên mô tả hoạt động và thành phần cơ bản của Angular Application Angular component là các khối UI và các component này được đính kèm với template thông qua property và event binding, Directive có thể điều khiển các viewas với mỗi user interaction hoặc data model và logic, *ngIf, *ngFor là các ví
dụ cho directive cung cấp bởi Angular, chúng ta cũng có thể xây dựng directives của riêng mình Directives có thể hoặc không có template hoặc view Depencendy Injection còn là một trong những core feature của Angular framework
2.6 Cơ sở dữ liệu MongoDB
[1]MongoDB là một cơ sở dữ liệu có dạng NoSQL Thuật ngữ NoSQL được giới
thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho các lightweight open source relational database (cơ sở dữ liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng SQL cho truy vấn Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán
Sở dĩ người ta phát triển NoSQL xuất phát từ yêu cầu cần những database có khả năng lưu trữ dữ liệu với số lượng cực lớn, truy vấn dữ liệu với tốc độ cao mà không đòi hỏi quá nhiều về năng lực phần cứng cũng như tài nguyên hệ thống và tăng khả năng chịu lỗi
Một số đặc trưng của NoSQL:
- High Scalability: Gần như không có một giới hạn cho dữ liệu và người dùng
trên hệ thống
Trang 2714
- High Availability: Do chấp nhận sự trùng lặp trong lưu trữ nên nếu một node
(commodity machine) nào đó bị chết cũng không ảnh hưởng tới toàn bộ hệ thống
- Atomicity: Độc lập data state trong các operation
- Consistency: chấp nhận tính nhất quán yếu, có thể không thấy ngay được sự
thay đổi mặc dù đã cập nhật dữ liệu
- Durability: dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng thời cũng
được lưu trữ lại đĩa cứng
MongoDB lưu trữ dữ liệu theo hướng tài liệu (document), các dữ liệu được lưu trữ kiểu JSON nên truy vấn sẽ rất nhanh
Ưu điểm của MongoDB:
- Số lượng Schema ít: Schema được sinh ra là để nhóm các đối tượng vào 1 cụm, dễ quản lý
- Cấu trúc của một đối tượng rõ ràng
- Các Join khá đơn giản: Điều này cũng góp phần tạo nên tốc độ truy vấn cực nhanh trên mongoDB
- Khả năng mở rộng cực lớn: việc mở rộng dữ liệu mà không phải lo đến các vấn đề như khóa ngoại, khóa chính, kiểm tra ràng buộc, nên việc mở rộng cũng thuận lợi hơn
Mongoose là một Object Data Modeling (ODM) hay còn gọi là một “mô hình
dữ liệu hướng đối tượng” dành cho hệ quản trị cơ sở dữ liệu MongoDB và được viết
bằng NodeJS Công việc của nó là tạo ra mối quan hệ giữa data (dữ liệu) và schema data (mô hình đối tượng của dữ liệu trên code), từ đó nó sẽ biểu diễn đối tượng trong MongoDB bằng đối tượng trên code và ngược lại
Trang 2815
Hình 2.5: Mô hình Mongoose
Điểm mạnh của việc sử dụng Mongoose là lập trình viên có thể giữ tư duy như với đối tượng của JavaScript thay vì phải ngôn ngữ thuần tuý viết riêng cho cơ sở dữ liệu điều này càng đúng khi phải làm việc với nhiều loại cơ sở dữ liệu (trên cùng hoặc khác trang web)
Trang 29Với công nghệ 4.0 đang ngày càng phát triển mạnh mẽ như ngày nay, việc sử dụng hệ thống website để lưu trữ, thao tác,… đã giúp một phần không nhỏ cho người quản lý cũng như những người sử dụng đến nó Phương pháp làm việc trực tuyến đang là xu hướng hiện tại và bối cảnh dịch COVID đang gây cản trở cho việc tương tác giữa nhà trường và sinh viên, sự ra đời của website Quản Lý nhằm giúp cho nhà trường cũng như sinh viên có thể dễ dàng quản lý, thông báo, mang lại sự thuận tiện cho mọi người
Dưới đây là công việc của website quản lý đồ án tốt nghiệp cần cung cấp cho khoa Cơ Khí Máy:
- Khách: xem các bài viết, thông báo được đăng trên trang chủ
- Admin, Thư Ký Khoa: quản lí chi tiết các danh mục, đợt đăng ký, đề tài, tài khoản người dùng,…
- Giảng viên: Đăng ký hướng dẫn đề tài, đề xuất đề tài, nhận xét đề tài hướng dẫn/phản biện trong thời gian cho phép đợt đăng ký, xem đề tài đã đăng ký, xem hội đồng đã được phân công
- Cá nhân ngoài trường: Xem hội đồng đã được phân công
- Sinh viên: cập nhật thông tin cá nhân, đăng ký đề tài, đề xuất đề tài, xem đề tài đã đăng ký, upload báo cáo
Trang 3017
3.2 Xác định yêu cầu
3.2.1 Yêu cầu chức năng
3.2.1.1 Yêu cầu chức năng người dùng
a Admin/Thư Ký Khoa
- Quản lý bài viết:
o Xem danh sách bài viết
o Thêm, cập nhật, thay đổi trạng thái bài viết
- Quản lý banner:
o Xem danh sách banner
o Thêm, cập nhật, thay đổi trạng thái, xoá hoàn toàn banner
- Quản lý side-banner:
o Xem danh sách side-banner
o Thêm, cập nhật, thay đổi trạng thái, xoá hoàn toàn side-banner
- Quản lý địa điểm:
o Xem danh sách địa điểm
o Thêm, cập nhật, thay đổi trạng thái địa điểm
- Quản lý thời gian bảo vệ:
o Xem danh sách thời gian bảo vệ
o Thêm, cập nhật, thay đổi trạng thái thời gian bảo vệ
- Quản lý cấu hình hệ thống:
o Xem cấu hình hệ thống
o Thêm, cập nhật, thay đổi trạng thái cấu hình hệ thống
- Quản lý đợt đăng ký:
o Xem danh sách đợt đăng ký
o Thêm, cập nhật, thay đổi trạng thái đợt đăng ký
- Quản lý biểu điểm hội đồng:
o Xem danh sách biểu điểm hội đồng
o Thêm, cập nhật, thay đổi trạng thái biểu điểm hội đồng
- Quản lý biểu điểm nhận xét - GVHD:
o Xem danh sách biểu điểm nhận xét - GVHD
o Thêm, cập nhật, thay đổi trạng thái biểu điểm nhận xét - GVHD
- Quản lý biểu điểm nhận xét - GVPB:
o Xem danh sách biểu điểm nhận xét - GVPB
o Thêm, cập nhật, thay đổi trạng thái biểu điểm nhận xét - GVPB
- Quản lý giảng viên:
o Xem danh sách giảng viên
Trang 3118
o Thêm, cập nhật, thay đổi trạng thái giảng viên
- Quản lý sinh viên:
o Xem danh sách sinh viên theo tình trạng
o Thêm, cập nhật sinh viên
o Duyệt/Không duyệt thông tin sinh viên
o Admin/Thư Ký Khoa: toàn quyền trên hệ thống
o Giảng viên: đề xuất, đăng ký, nhận xét đề tài trong thời gian cho phép Xem hội đồng đã được phân công Nhận xét hội đồng được phân công
o Cá nhân ngoài trường: Xem hội đồng đã được phân công
o Sinh viên: Cập nhật thông tin cá nhân Đề xuất, đăng ký đề tài sau khi
đã được duyệt thông tin và trong thời gian cho phép Xem đề tài đã đăng ký, upload, chỉnh sửa báo cáo trong thời gian cho phép
- Thông báo hệ thống: hiển thị thông báo khi thực hiện hành động trên hệ thống (thành công/thất bại)
- Bảo mật: kiểm tra quyền người dùng, chỉ cho phép người dùng thực hiện chức năng nhất định Lưu thông tin người thực hiện chức năng (thêm/cập nhật,…)
- Lưu trữ:
o Các danh mục
o Đề tài/đề tài đề xuất
o File hình ảnh (banner/side-banner)
o File báo cáo (document/excel/pdf/…)
o Tài khoản người dùng
3.2.2 Yêu cầu phi chức năng
- UX/UI: bố trí giao diện thân thiện, dễ thao tác
Trang 3219
- Khả năng xử lý: tốc độ thực hiện chức năng nhanh, hiệu quả Đáp ứng được lượng lớn người dùng truy cập trong cùng một thời điểm
- Khả năng tương thích: đáp ứng được trên nhiều nền tảng, nhiều thiết bị
- Khả năng bảo trì, nâng cấp: thiết kế phù hợp cho việc sửa lỗi, nâng cấp hệ thống
Trang 331 Admin Người quản trị viên quản lý toàn bộ hệ thống
2 Thư Ký Khoa Người quản trị viên quản lý toàn bộ hệ thống
3 Giảng Viên Người dùng được cấp quyền, thực hiện các chức năng
thuộc giảng viên
8 Quản lý biểu điểm hội đồng x x
9 Quản lý biểu điểm nhận xét - GVHD x x
10 Quản lý biểu điểm nhận xét - GVPB x x
Trang 3421
4.2 Use Case Diagram
Hình 4.1: Use Case Diagram
4.3 Đặc tả Use Case
Bảng 4.3: Đặc tả Use Case
Trang 3522
3.1.3 Xoá hoàn toàn side-banner UC_3.1.3
5.1.1 Cập nhật thời gian bảo vệ UC_5.1.1
8.1.1 Cập nhật biểu điểm hội đồng UC_8.1.1
9.1 Xem danh sách biểu điểm nhận xét - GVHD UC_9.1
9.1.1 Cập nhật biểu điểm nhận xét - GVHD UC_9.1.1
9.2 Thêm biểu điểm nhận xét - GVHD mới UC_9.2
Trang 3623
10.1 Xem danh sách biểu điểm nhận xét - GVPB UC_10.1
10.1.1 Cập nhật biểu điểm nhận xét - GVPB UC_10.1.1
10.2 Thêm biểu điểm nhận xét - GVPB mới UC_10.2
12.1 Xem danh sách sinh viên theo tình trạng UC_12.1
12.1.2 Duyệt/Không duyệt thông tin sinh viên UC_12.1.2
Trang 3724
4.3.1 Quản lý bài viết
Hình 4.2: Use case quản lý bài viết
4.3.3.1 Xem danh sách bài viết
Bảng 4.4: Chi tiết use case "xem danh sách bài viết"
Tên use case Xem danh sách bài viết
Mô tả Xem danh sách các bài viết có trong hệ thống
Điều kiện tiên quyết Cần có kết nối Internet
Cần đăng nhập vào hệ thống với quyền admin, thư ký khoa
Hậu điều kiện
1 Từ hệ thống quản trị, chọn cài đặt trang chủ ->
chuyên mục bài viết
viết Ngoại lệ
Trang 3825 4.3.3.2 Cập nhật bài viết
Bảng 4.5: Chi tiết use case "cập nhật bài viết"
Tên use case Cập nhật bài viết
Mô tả Cập thông tin bài viết
Điều kiện tiên quyết Cần có kết nối Internet
Cần đăng nhập vào hệ thống với quyền admin, thư ký khoa
Hậu điều kiện Success: Thông báo thành công
Fail: Thông báo lỗi và mời nhập lại
1 Chọn chỉnh sửa bài viết tương ứng
trường hợp và cho nhập lại (nhập thiếu trường/không đúng định dạng)
4.3.3.3 Thay đổi trạng thái bài viết
Bảng 4.6: Chi tiết use case "thay đổi trạng thái bài viết"
Tên use case Thay đổi trạng thái bài viết
Mô tả Thay đổi trạng thái của bài viết
Điều kiện tiên quyết Cần có kết nối Internet
Cần đăng nhập vào hệ thống với quyền admin, thư ký khoa
Hậu điều kiện
Trang 394.3.3.4 Tìm kiếm bài viết
Bảng 4.7: Chi tiết use case "tìm kiếm bài viết"
Tên use case Tìm kiếm bài viết
Mô tả Tìm kiếm bài viết theo từ khoá
Điều kiện tiên quyết Cần có kết nối Internet
Cần đăng nhập vào hệ thống với quyền admin, thư ký khoa
Hậu điều kiện
1 Từ hệ thống quản trị, chọn quản lý bài viết
viết
3 Nhập thông tin tìm kiếm
theo thông tin tìm kiếm Ngoại lệ
4.3.3.5 Thêm bài viết mới
Bảng 4.8: Chi tiết use case "thêm bài viết mới"
Tên use case Thêm bài viết mới
Mô tả Thêm bài viết mới vào hệ thống
Trang 4027
Điều kiện tiên quyết Cần có kết nối Internet
Cần đăng nhập vào hệ thống với quyền admin, thư ký khoa
Hậu điều kiện Success: Thông báo thành công
Fail: Thông báo lỗi và mời nhập lại
thông báo và trở về danh sách
Ngoại lệ 4: Khi không thành công sẽ có thông báo lỗi tùy vào
trường hợp và cho nhập lại (nhập thiếu trường/không đúng định dạng)
4.3.2 Quản lý biểu điểm hội đồng
Hình 4.3: Use case quản lý biểu điểm hội đồng