Trong bối cảnh này, niên luận này sẽ tậptrung vào việc xây dựng một hệ thống quản lý đăng tin tuyển dụng để giải quyết cácthách thức trên, cho phép người tuyển dụng dễ dàng đăng tin và q
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI:
SỬ DỤNG NODEJS VÀ REACTJS ĐỂ THIẾT KẾ
WEBSITE TÌM KIẾM VIỆC LÀM IT
Sinh viên thực hiện : Nguyễn Minh Danh
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC NGÀNH: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI:
SỬ DỤNG NODEJS VÀ REACTJS ĐỂ THIẾT KẾ
WEBSITE TÌM KIẾM VIỆC LÀM IT
Giảng viên hướng dẫn duyệt
ThS.Nguyễn Văn Phát
Đà Nẵng, 12/2024
Trang 3NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN
Trang 4
Trang 5
lý quá trình phỏng vấn, và duyệt hồ sơ đơn xin việc Tính khả thi của việc quản lý thôngtin: Cùng với lượng thông tin ngày càng tăng về việc làm và người tìm việc, cần có một
hệ thống quản lý thông tin mạnh mẽ để giúp người tuyển dụng duyệt hồ sơ và quản lý các
vị trí tuyển dụng một cách hiệu quả Cần thiết tạo ra môi trường tốt cho giao dịch: Đểthúc đẩy quá trình tuyển dụng, cần có một môi trường trực tuyến an toàn và đáng tin cậycho cả người tìm việc và người tuyển dụng Trong bối cảnh này, niên luận này sẽ tậptrung vào việc xây dựng một hệ thống quản lý đăng tin tuyển dụng để giải quyết cácthách thức trên, cho phép người tuyển dụng dễ dàng đăng tin và quản lý thông tin tuyểndụng, và đồng thời cho phép người tìm việc tìm kiếm và ứng tuyển vào các vị trí côngviệc một cách hiệu quả hơn
Hệ thống sẽ cung cấp giao diện dễ sử dụng cho người tuyển dụng và người tìm việc.Người tuyển dụng có thể đăng tin, quản lý danh sách việc làm, và tương tác với hồ sơngười tìm việc Người tìm việc có thể tìm kiếm việc làm, tạo hồ sơ cá nhân, và ứng tuyểnvào các vị trí việc làm Hệ thống cũng cần đảm bảo tính bảo mật thông tin cá nhân củangười dùng
Trang 6KHOA CÔNG NGHỆ SỐ Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Giảng viên hướng dẫn : ThS Nguyễn Văn Phát
Sinh viên thực hiện: Nguyễn Minh Danh Mã SV: 2050531200115
1 Tên đề tài:
Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
2 Các số liệu, tài liệu ban đầu:
- Tài liệu phân tích thiết kế hệ thống
- Tài liệu về cơ sở dữ liệu và ngôn ngữ lập trình web
3 Nội dung chính của đồ án:
Nội dung chính của đề tài gồm:
Mở đầu
1 Mục tiêu đề tài;
2 Đối tượng nghiên cứu và phạm vi nghiên cứu;
3 Phương pháp nghiên cứu;
4 Giải pháp công nghệ;
5 Cấu trúc của đồ án tốt nghiệp
Chương 1: Cơ sở lý thuyết
Trang 71 Sơ đồ Use case
7 Thiết kế cơ sở dữ liệu
Chương 3: Xây dựng chương trình
1 Công cụ xây dựng chương trình;
2 Giao diện chương trình;
Kết luận và hướng phát triển
1 Kết luận;
2 Hướng phát triển
4 Các sản phẩm dự kiến:
- Cơ sở dữ liệu trong hệ quản trị MySQL ;
- Website tìm kiếm việc làm IT;
- Báo cáo đề tài tốt nghiệp
Trang 8Ngày nay, công nghệ thông tin đã có những bước phát triển mạnh mẽ theo cả chiều rộng và sâu Máy tính điện tử không còn là một thứ phương tiện quý hiếm mà đang ngày càng trở thành một công cụ làm việc và giải trí thông dụng của con người, không chỉ ở công sở mà còn ngay cả trong gia đình.
Đứng trước vai trò của thông tin hoạt động cạnh tranh gay gắt, các tổ chức và các doanh nghiệp đều tìm mọi biện pháp để xây dựng hoàn thiện hệ thống thông tin của mình nhằm tin học hóa các hoạt động tác nghiệp của đơn vị.
Hiện nay các công ty tin học hàng đầu thế giới không ngừng đầu tư và cải thiện các giải pháp cũng như các sản phẩm nhằm cho phép tiến hành tự động hóa trên Internet Thông qua các sản phẩm và công nghệ này, chúng ta dễ dàng nhận ra tầm quan trọng và tính tất yếu của website Với những thao tác đơn giản trên máy có nối mạng Internet bạn
sẽ có tận tay những gì mình cần mà không phải mất nhiều thời gian Bạn chỉ cần vào các trang web làm theo hướng dẫn và click vào những gì bạn cần Các hoạt động sẽ thực hiện ngay trên hệ thống đó
Ở Việt Nam cũng có rất nhiều trường đại học tự động hóa các quy trình trên hệ thống website nhưng do những khó khăn về cơ sở hạ tầng như viễn thông chưa phát triển mạnh nên các quy trình vẫn còn rất nhiều sổ sách, giấy tờ thủ công dẫn đến thiếu hiệu quả, mất khá nhiều thời gian
Để tiếp cận và góp phần đẩy mạnh sự phổ biến và tiện ích của website, em/ đã tìm hiểu và cài đặt “Hệ thống website tìm kiếm việc làm IT”.
Với sự hướng dẫn tận tình của thầy ThS.Nguyễn Văn Phát em đã hoàn thành đồ án tốt nghiệp này Tuy đã cố gắng hết sức tìm hiểu, phân tích thiết kế và cài đặt hệ thống nhưng chắc rằng không tránh khỏi những thiếu sót Chúng em rất mong nhận được sự thông cảm và góp ý của quí Thầy cô
Chúng em xin chân thành cảm ơn!
Trang 9CAM ĐOAN
Em xin cam đoan :
1 Những nội dung trong luận văn này do chúng em thực hiện dưới sự hướng dẫncủa thầy ThS Nguyễn Văn Phát
2 Mọi tham khảo trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên côngtrình ,thời gian, địa điểm công bố
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, chúng em xinchịu hoàn toàn trách nhiệm
Sinh viên thực hiện
Nguyễn Minh Danh
ii
Trang 10NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN i
NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN ii
TÓM TẮT iii
LỜI NÓI ĐẦU i
CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC BẢNG BIỂU viii
DANH MỤC HÌNH VẼ ix
DANH MỤC CHỮ VIẾT TẮT TIẾNG VIỆT xi
DANH MỤC CHỮ VIẾT TẮT TIẾNG ANH xii
MỞ ĐẦU 1
1. Mục tiêu đề tài 1
2. Đối tượng nghiên cứu và phạm vi nghiên cứu 1
a Đối tượng nghiên cứu 1
b.Phạm vi nghiên cứu 1
3. Phương pháp nghiên cứu 1
4. Cấu trúc của đồ án tốt nghiệp 2
Chương 1 CƠ SỞ LÝ THUYẾT 1
1.1 Lập trình website 1
1.1.1 Trang Web 1
1.1.2 Ứng dụng Web 1
1.2 Hệ quản trị cơ sở dữ liệu MySQL 1
1.3 HTML,CSS 2
1.3.1 HTML 2
1.3.2 CSS 2
1.4 JavaScript 3
Trang 111.4.1 Khái niệm 3
1.4.2 Đặc điểm 3
1.5 ReacJS 4
1.6 NodeJS 5
1.7 ExpressJS 5
1.8 API 6
Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 7
2.1 Liệt kê Actor và Usecase 7
2.1.1 Các Actor 7
2.1.2 Usecase 7
2.1.2.1 Khách vãng lai 7
2.1.2.2 Người tìm việc 7
2.1.2.3 Nhà Tuyển Dụng 7
2.1.2.4 Quản trị viên 8
2.2 Sơ đồ usecase 8
2.2.1 Sơ đồ tổng quát 8
2.2.2 Đặc tả usecase 9
2.2.2.1 Use case Đăng nhập 9
2.2.2.2 Use case Đăng ký 9
2.2.2.3 Use Case Đăng tin tuyển dụng 10
2.2.2.4 Use case Sửa tin tuyển dụng 10
2.2.2.5 Use case Xóa tin tuyển dụng 11
2.2.2.6 Use case Duyệt tin tuyển dụng 11
2.2.2.7 Use case Xem thông tin tuyển dụng 12
2.2.2.8 Use case Tạo hồ sơ 12
2.2.2.9 Use Case Nộp hồ sơ ứng tuyển 13
2.2.2.10 Use Case Xem công việc đã ứng tuyển 13
2.2.2.11 Use Case Xem hồ sơ ứng viên 14
iv
Trang 122.3 Thiết kế ERD 15
2.4 Sơ đồ hoạt động 16
2.4.1 Đăng tin tuyển dụng 16
2.4.2 Duyệt tin tuyển dụng 17
2.4.3 Tạo hồ sơ 18
2.4.4 Xem thông tin tuyển dụng 19
2.4.5 Nộp hồ sơ ứng tuyển 20
2.5 Sơ đồ tuần tự 21
2.5.1 Đăng tin tuyển dụng 21
2.5.2 Duyệt bài đăng 22
2.5.3 Xem thông tin tuyển dụng 23
2.5.4 Nộp hồ sơ ứng tuyển 24
2.5.5 Thanh toán 25
2.6 Sơ đồ trạng thái 26
2.6.1 Đăng tin tuyển dụng 26
2.6.2 Duyệt bài đăng tuyển dụng 27
2.6.3 Xem thông tin tuyển dụng 27
2.6.4 Nộp hồ sơ ứng tuyển 28
2.6.5 Xem hồ sơ ứng viên 28
2.6.6 Thanh toán 29
2.7 Thiết kế cơ sở dữ liệu 30
2.7.1 Bảng Quyền 30
2.7.2 Bảng người dùng 30
2.7.3 Bảng Tin Tuyển Dụng 30
2.7.4 Bảng Nhà tuyển dụng 31
2.7.5 Bảng Người Tìm Việc 31
2.7.6 Bảng Hồ sơ 32
Trang 132.7.7 Bảng Kỹ Năng 32
2.7.8 Bảng Ứng tuyển 33
2.7.9 Bảng Cấp bậc 33
2.7.10 Bảng Phản hồi 33
2.7.11 Bảng Lưu công việc 33
2.7.12 Bảng Vị trí tuyển dụng 34
2.7.13 Bảng Kỹ năng tuyển dụng 34
2.7.14 Bảng Lịch sử thanh toán 34
Chương 3 XÂY DỰNG CHƯƠNG TRÌNH 35
3.1 Công cụ xây dựng chương trình 35
3.1.1 Visual Studio Code 35
3.1.2 MySQL Workbech 35
3.1.3 Postman 36
3.1.4 Github 37
3.2 Giao diện chương trình 38
3.2.1 Giao diện trang chủ 38
3.2.2 Giao diện chi tiết tin tuyển dụng 39
3.2.3 Giao diên trang công ty 40
3.2.4 Giao diện đăng nhập 41
3.2.5 Giao diện đăng ký người tìm việc 41
3.2.6 Giao diện đăng ký nhà tuyển dụng 42
3.2.7 Giao diện thông tin cá nhân người tìm việc 42
3.2.8 Giao diện quản lý hồ sơ 43
3.2.9 Giao diện tạo hồ sơ 44
3.2.10 Giao diện xem hồ sơ 45
3.2.11 Giao diện xem công việc đã ứng tuyển 46
3.2.12 Giao diện công việc đã lưu 46
3.2.13 Giao diện thông tin nhà tuyển dụng 47
vi
Trang 143.2.15 Giao diện quản lý tin tuyển dụng của nhà tuyển dụng 48
3.2.16 Giao diện xem các hồ sơ đã nộp 48
3.2.17 Giao diện mua số lượt đăng tin 49
3.2.18 Giao diện thanh toán 49
3.2.19 Giao diện thanh toán thành công 50
3.2.20 Giao diện lịch sử thanh toán của nhà tuyển dụng 50
3.2.21 Giao diện admin thống kê 51
3.2.22 Giao diện admin quản lý người dùng 52
3.2.23 Giao diện quản lý tin tuyển dụng 52
3.2.24 Giao diện quản lý nhà tuyển dụng 53
3.2.25 Giao diện duyệt thông tin nhà tuyển dụng 53
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 54
1 Kết luận 54
2 Hướng phát triển 54
TÀI LIỆU THAM KHẢO 55
Trang 15DANH MỤC BẢNG BIỂU
Bảng 2.1: Bảng quyền 30
Bảng 2.2: Bảng người dùng 30
Bảng 2.3: Bảng Tin tuyển dụng 30
Bảng 2.4: Bảng nhà tuyển dụng 31
Bảng 2.5: Bảng người tìm việc 31
Bảng 2.6: Bảng hồ sơ 32
Bảng 2.7: Bảng kỹ năng 32
Bảng 2.8: Bảng Ứng tuyển 33
Bảng 2.9: Bảng Cấp bậc 33
Bảng 2.10: Bảng phản hồi 33
Bảng 2.11: Bảng lưu công việc 33
Bảng 2.12: Bảng vị trí tuyển dụng 34
Bảng 2.13: Bảng Kỹ năng tuyển dụng 34
Bảng 2.14: Bảng lịch sử thanh toán 34
viii
Trang 16Hình 1.1: Lo go MySQL 2
Hình 1.2: Logo HTML 2
Hình 1.3: Logo CSS 3
Hình 1.4: Logo JavaScript 4
Hình 1.5: Logo ReactJS 5
Hình 1.6: Logo NodeJS 5
Hình 1.7: Logo ExpressJS 6
Hình 2.1: Sơ đồ Use Case 9
Hình 2.2: Sơ đồ ERD 15
Hình 2.3: Sơ đồ hoạt động Đăng tuyển dụng 16
Hình 2.4: Sơ đồ hoạt động Duyệt tin tuyển dụng 17
Hình 2.5: Sơ đồ hoạt động Tạo hồ sơ 18
Hình 2.6: Sơ đồ hoạt động chức năng xem thông tin tuyển dụng 19
Hình 2.7: Sơ đồ hoạt động Nộp hồ sơ ứng tuyển 20
Hình 2.8: Sơ đồ tuần tự Đăng tuyển dụng 21
Hình 2.9: Sơ đồ tuần tự Duyệt bài đăng 22
Hình 2.10: Sơ đồ tuần tự Xem thông tin tuyển dụng 23
Hình 2.11: Sơ đồ tuần tự nộp hồ sơ ứng tuyển 24
Hình 2.12: Sơ đồ tuần tự Thanh toán 25
Hình 2.13: Sơ đồ trạng thái đăng tuyển dụng 26
Hình 2.14: Sơ đồ trạng thái duyệt bài đăng 27
Hình 2.15: Sơ đồ trạng thái Xem thông tin tuyển dụng 27
Hình 2.16: Sơ đồ trạng thái Nộp hồ sơ ứng tuyển 28
Hình 2.17: Sơ đồ trạng thái Xem hồ sơ ứng viên 28
Hình 2.18: Sơ đồ trạng thái thanh toán 29
Hình 3.1: Giao diện trang chủ 38
Hình 3.2: Giao diện chi tiết tin tuyển dụng 39
Hình 3.3: Giao diện trang công ty 40
Trang 17Hình 3.4: Giao diện đăng nhập 41
Hình 3.5: Giao diện đăng ký người tìm việc 41
Hình 3.6: Giao diện đăng ký nhà tuyển dụng 42
Hình 3.7: Giao diện thông tin cá nhân người tìm việc 42
Hình 3.8: Giao diện quản lý hồ sơ 43
Hình 3.9: Giao diện tạo hồ sơ 44
Hình 3.10: Giao diện xem hồ sơ 45
Hình 3.11: Giao diện công việc đã ứng tuyển 46
Hình 3.12: Giao diện công việc đã lưu 46
Hình 3.13: Giao diện thông tin nhà tuyển dụng 47
Hình 3.14: Giao diện Đăng tuyển dụng 47
Hình 3.15: Giao diện quản lý tin tuyển dụng của nhà tuyển dụng 48
Hình 3.16: Giao diện xem các hồ sơ đã nộp 48
Hình 3.17: Giao diện mua số lượt đăng tin 49
Hình 3.18: Giao diện thanh toán 49
Hình 3.19: Giao diện thanh toán thành công 50
Hình 3.20: Giao diện lịch sử thanh toán nhà tuyển dụng 50
Hình 3.21: Giao diện Admin thống kê 51
Hình 3.22: Giao diện admin quản lý người dùng 52
Hình 3.23: Giao diện quản lý tin tuyển dụng 52
Hình 3.24: Giao diện quản lý nhà tuyển dụng 53
Hình 3.25: Giao diện duyệt thông tin nhà tuyển dụng 53
DANH MỤC CHỮ VIẾT TẮT TIẾNG VIỆT
1. CNTT Công nghệ thông tin
x
Trang 183.
Trang 19DANH MỤC CHỮ VIẾT TẮT TIẾNG ANHStt Chữ viết tắt Giải nghĩa Nghĩa tiếng Việt
1. HTML Hyper Text Markup
Language Ngôn ngữ đánh dấu siêu văn bản
Sheets Đính dạng miểu tả cách trình bày
3. ERD Entity Relationship
Diagram Sơ đồ thực thể quan hệ
Language Ngôn ngữ truy vấn có cấu trúc
xii
Trang 20MỞ ĐẦU
1 Mục tiêu đề tài
Kết nối nhà tuyển dụng với người tìm việc phù hợp: Tạo một Website hiệu quả
để kết nối các nhà tuyển dụng IT với những người tìm việc tiềm năng
Tối ưu hóa quá trình tuyển dụng : Giúp các doanh nghiệp nhanh chóng tìmkiếm và tuyển dụng được nhân tài IT phù hợp
Hỗ trợ người tìm việc: Cung cấp cho người tìm việc một Website hữu ích để tìmkiếm các cơ hội việc làm phù hợp với kỹ năng và kinh nghiệm của mình
2 Đối tượng nghiên cứu và phạm vi nghiên cứu
a Đối tượng nghiên cứu
Website tìm kiếm việc làm IT
b Phạm vi nghiên cứu
Xây dụng Website tìm kiếm việc làm IT
3 Phương pháp nghiên cứu
Phân tích yêu cầu kỹ thuật:
- Phân tích các yêu cầu kỹ thuật cụ thể cho mã nguồn website dựa trên các tínhnăng cần phát triển, như quản lý tài khoản người dùng, đăng tin tuyển dụng, tìmkiếm công việc, quản lý hồ sơ người tìm việc
- Xác định kiến trúc phần mềm phù hợp (ví dụ: MVC – Model-View-Controllerhoặc kiến trúc RESTful) để tổ chức mã nguồn một cách logic, dễ quản lý và mởrộng
Thiết kế cấu trúc mã nguồn:
- Thiết kế các lớp và module của hệ thống Ví dụ, chia mã nguồn thành các lớp xử
lý logic (backend), hiển thị giao diện (frontend) và cơ sở dữ liệu (database)
- Sử dụng UML Class Diagrams để mô tả mối quan hệ giữa các thành phần
Chọn ngôn ngữ lập trình và framework:
- Frontend: HTML, CSS, JavaScript kết hợp với framework React.js
- Backend: Node.js
- Database: MySQL
Trang 21Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
4 Cấu trúc của đồ án tốt nghiệp
Mở đầu
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích thiết kế hệ thống
Chương 3: Xây dựng chương trình
Kết luận và hướng phát triển
SVTH:Nguyễn Minh Danh 2
Trang 22Chương 1
CƠ SỞ LÝ THUYẾT1.1 Lập trình website
Lập trình trang web, còn được gọi là phát triển web hoặc lập trình web, đề cập đếnquá trình tạo và duy trì trang web Nó liên quan đến việc sử dụng các ngôn ngữ lập trình,khung và công cụ để xây dựng cấu trúc, chức năng và giao diện của các trang web có thểtruy cập và tương tác trên internet Lập trình trang web bao gồm cả khía cạnh phía máychủ và phía máy khách của quá trình phát triển web
1.1.2 Ứng dụng Web
- Ứng dụng web là một chương trình phần mềm hoặc ứng dụng chạy trên trìnhduyệt web Nó được thiết kế để thực hiện các chức năng hoặc nhiệm vụ cụ thể vàthường liên quan đến sự tương tác của người dùng
- Các ứng dụng web rất năng động và có thể thay đổi nội dung cũng như phản hồithông tin đầu vào của người dùng trong thời gian thực Họ thường yêu cầu mộtmáy chủ phụ trợ để xử lý và lưu trữ dữ liệu
- Các ứng dụng web sử dụng kết hợp các công nghệ mặt trước (HTML, CSS,JavaScript) cho giao diện người dùng và các công nghệ mặt sau (ngôn ngữ kịchbản phía máy chủ, cơ sở dữ liệu) để xử lý dữ liệu
1.2 Hệ quản trị cơ sở dữ liệu MySQL
- MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và
được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng VìMySQL là hệ quản trị cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khảchuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm
Trang 23Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
tiện ích rất mạnh Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho cácứng dụng có truy cập CSDL trên internet Người dùng có thể tải về MySQLmiễn phí từ trang chủ MySQL có nhiều phiên bản cho các hệ điều hành khácnhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,
Hình 1.1: Lo go MySQL
- MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan
hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
- MySQL được sử dụng cho việc bổ trợ Node.js, PHP, Perl, và nhiều ngôn ngữ
khác, là nơi lưu trữ những thông tin trên các trang web viết bằng NodeJs, PHPhay Perl,
1.3 HTML,CSS
1.3.1 HTML
Đây là một ngôn ngữ đánh dấu được sử dụng để xây dựng và cấu trúc nội dung củacác trang web HTML định rõ các phần tử và cấu trúc của một trang web, giúp trìnhduyệt web hiểu cách hiển thị thông tin cho người dùng
Hình 1.1: Logo HTML
SVTH:Nguyễn Minh Danh 2
Trang 241.4.2 Đặc điểm
- Ngôn ngữ đa nhiệm (Multi-paradigm):
- JavaScript là một ngôn ngữ đa mô hình, hỗ trợ cả lập trình hàm (functionalprogramming) và lập trình hướng đối tượng (object-oriented programming).Điều này giúp nó thích ứng được với nhiều phong cách lập trình
- Client-Side Scripting:
- Chủ yếu được sử dụng trên trình duyệt web để thực thi mã nguồn JavaScript trựctiếp trên máy khách (client-side), giúp tạo ra trang web động và tương tác
- Kiểu Dữ Liệu Động (Dynamic Typing):
- JavaScript là một ngôn ngữ có kiểu dữ liệu động, nghĩa là kiểu của biến có thểthay đổi trong quá trình thực thi
- Event-Driven Programming(lập trình hướng sự kiện):
Trang 25Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
- JavaScript thường được sử dụng để xử lý sự kiện từ người dùng (như clickchuột, nhấn phím), với khả năng thực hiện các hành động phản ứng khi có sựkiện xảy ra
- DOM Manipulation (Tương Tác với DOM):
- JavaScript có khả năng tương tác với DOM, cho phép thay đổi nội dung và cấutrúc của trang web Điều này làm cho nó có thể thực hiện các thay đổi động màkhông cần tải lại toàn bộ trang
- Asynchronous Programming(lập trình bất đồng bộ):
- Hỗ trợ cơ chế bất đồng bộ thông qua callback, promises, và async/await Điềunày cho phép thực hiện các tác vụ như gửi yêu cầu HTTP và xử lý dữ liệu màkhông làm đơ giao diện người dùng
- Cộng Đồng Phong Phú và Ecosystem Lớn:
- JavaScript có một cộng đồng phát triển lớn và sôi động, với nhiều framework vàthư viện như React, Angular, Vue.js, Node.js, giúp tạo ra nhiều công cụ và tàinguyên phong phú cho các nhà phát triển
- Cross-platform Compatibility(khả năng đa nền tảng):
- JavaScript có khả năng chạy trên nhiều nền tảng khác nhau, không chỉ trong môitrường trình duyệt web mà còn trên máy chủ thông qua
Hình 1.1: Logo JavaScript
1.5 ReacJS
ReactJS là một thư viện JavaScript mã nguồn mở dùng để xây dựng các thành phầngiao diện người dùng có thể tái sử dụng Nó chỉ chịu trách nhiệm về lớp hiển thị hoặcgiao diện người dùng của ứng dụng Một ứng dụng ReactJS được tạo thành từ nhiều
SVTH:Nguyễn Minh Danh 4
Trang 26thành phần, mỗi thành phần chịu trách nhiệm xuất một đoạn mã HTML nhỏ, có thể tái sửdụng Các thành phần này có thể lồng vào nhau để cho phép xây dựng các ứng dụng phứctạp từ các khối xây dựng đơn giản (Training, 2021)
Hình 1.1: Logo ReactJS
1.6 NodeJS
NodeJS là một môi trường runtime chạy JavaScript đa nền tảng và có mã nguồn mở,được sử dụng để chạy các ứng dụng web bên ngoài trình duyệt của client Nền tảng nàyđược phát triển bởi Ryan Dahl vào năm 2009, được xem là một giải pháp hoàn hảo chocác ứng dụng sử dụng nhiều dữ liệu nhờ vào mô hình hướng sự kiện (event-driven)không đồng bộ
Ưu điểm của NodeJS:
- IO hướng sự kiện không đồng bộ, cho phép xử lý nhiều yêu cầu đồng thời
- Sử dụng JavaScript – một ngôn ngữ lập trình dễ học
- Chia sẻ cùng code ở cả phía client và server
- NPM (Node Package Manager) và module Node đang ngày càng phát triểnmạnh mẽ
- Cộng đồng hỗ trợ tích cực •
- Cho phép stream các file có kích thước lớn
Hình 1.1: Logo NodeJS
Trang 27Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
1.7 ExpressJS
Expressjs là một framework được xây dựng trên nền tảng của Nodejs Nó cung cấpcác tính năng mạnh mẽ để phát triển web hoặc mobile Expressjs hỗ trợ các methodHTTP và middleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng
Hình 1.1: Logo ExpressJS
1.8 API
API là viết tắt của "Application Programming Interface" (Giao diện Lập trình Ứngdụng) Nó là một tập hợp các quy tắc và công cụ cho phép các phần mềm khác nhau giaotiếp và tương tác với nhau API là một cách để các ứng dụng và dịch vụ khác nhau chia sẻ
dữ liệu và chức năng mà không cần biết chi tiết cài đặt nội bộ của nhau
RESTful API là một dạng của Web API, sử dụng giao thức HTTP để thực hiện cácthao tác CRUD (Create, Read, Update, Delete) Các tài nguyên được định danh bằng cácURI (Uniform Resource Identifiers), và truy cập thông qua các phương thức HTTP nhưGET, POST, PUT, DELETE
- Authentication: Xác minh danh tính của người gửi yêu cầu
- Authorization: Quyết định xem người gửi yêu cầu có quyền truy cập hay không
SVTH:Nguyễn Minh Danh 6
Trang 28Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG2.1 Liệt kê Actor và Usecase
- Tìm kiếm công việc
- Xem thông tin tuyển dụng
- Lưu công việc yêu thích
- Xem công việc đã ứng tuyển
Trang 29Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
- Đăng tin tuyển dụng
- Cập nhật thông tin công ty
- Báo cáo thống kê
- Duyệt tin tuyển dụng
- Duyệt thông tin nhà tuyển dụng
- Cập nhật tin tuyển dụng
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát 8
Trang 302.2 Sơ đồ usecase
2.2.1 Sơ đồ tổng quát
Hình 2.1: Sơ đồ Use Case
2.2.2 Đặc tả usecase
2.2.2.1 Use case Đăng nhập
Mô tả Người dùng đăng nhập vào hệ thống
Đầu ra Đăng nhập thành công vào hệ thống
Luồng sự kiện chính 1.Người dùng truy cập vào trang chủ
2.Người truy cập chọn Đăng nhập3.Hệ thống hiển thị giao diện đăng nhập4.Người dùng nhập email và mật khẩu5.Người dùng nhấn Đăng nhập
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát
Trang 31Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
2.2.2.2 Use case Đăng ký
Mô tả Người dùng đăng tin tuyển dụng lên hệ thống
Đầu ra Nhà tuyển dụng sẽ nhận được thông báo rằng tin
tuyển dụng đang trong trạng thái "chờ duyệt"
Luồng sự kiện chính 1.Người dùng truy cập vào trang chủ
2.Người chọn Đăng nhập/Đăng ký3.Người dùng chọn Đăng ký3.Hệ thống hiển thị giao diện đăng ký4.Người dùng nhập email,username,mật khẩu5.Người dùng nhấn Đăng ký
2.2.2.3 Use Case Đăng tin tuyển dụng
Mô tả Người dùng đăng tin tuyển dụng lên hệ thống
Đầu ra Nhà tuyển dụng sẽ nhận được thông báo rằng tin
tuyển dụng đang trong trạng thái "chờ duyệt"
Luồng sự kiện chính 1.Người dùng đăng nhập
2.Người truy cập vào Quản lý tin tuyển dụng3.Người dùng nhấn vào Tạo tin tuyển dụng4.Hệ thống hiển thị giao diện đăng tuyển dụng5.Người dùng nhập các thông tin cần thiết6.Người dùng nhấn Đăng tin
7.Hệ thống thông báo đang chờ duyệt
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát 10
Trang 322.2.2.4 Use case Sửa tin tuyển dụng
Mô tả Người dùng sửa bài đăng tin tuyển dụng trên hệ
thống
Đầu vào Tin tuyển dụng cần sửa
Luồng sự kiện chính 1.Người dùng đăng nhập
2.Người truy cập vào Quản lý tin tuyển dụng3.Người dùng chọn Các tin
4.Người dùng chọn Chỉnh sửa ở dòng khóa học cầnsửa
5.Hệ thống hiển thị biểu mẫu thông tin cần sửa6.Nguời dùng sửa thông tin cần sửa
5.Người dùng chọn Sửa
2.2.2.5 Use case Xóa tin tuyển dụng
Mô tả Người dùng xóa tin tuyển dụng trên hệ thống
Đầu ra Xóa tin tuyển dụng thành công
Luồng sự kiện chính 1.Người dùng đăng nhập
2.Người truy cập vào Quản lý tin tuyển dụng3.Người dùng chọn Các tin tuyển dụng4.Người dùng chọn Xóa ở dòng tin tuyển dụng cầnxóa
5.Hệ thống thông báo xóa thành công
2.2.2.6 Use case Duyệt tin tuyển dụng
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát
Trang 33Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
Mô tả Người dùng đã đăng nhập và muốn duyệt tin tuyển
dụng
Luồng sự kiện chính 1.Người dùng truy cập trang admin
2.Người dùng chọn Quản lý tin tuyển dụng3.Chọn trạng thái chờ duyệt
4.Chọn duyệt cho tin cần duyệt
5 Hệ thông thông báo duyệt thành công
2.2.2.7 Use case Xem thông tin tuyển dụng
Mô tả Người dùng muốn xem thông tin tuyển dụng
Đầu vào Yêu cầu xem thông tin tuyển dụng
Luồng sự kiện 1.Người dùng truy cập trang chủ
2.Người dùng nhấn vào tin tuyển dụng cần xem3.Hệ thống sẽ hiện thông tin
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát 12
Trang 342.2.2.8 Use case Tạo hồ sơ
Luồng sự kiện chính 1.Người dùng đăng nhập
2.Người nhấn vào tên người dùng3.Người dùng chọn Hồ sơ
4.Người dùng nhấn Tạo hồ sơ5.Hệ thống hiển thị giao diện tạo hồ sơ6.Người dùng nhập thông tin cần thiết7.Người dùng chọn Lưu
2.2.2.9 Use Case Nộp hồ sơ ứng tuyển
Mô tả Người dùng đã đăng nhập và muốn nộp đơn ứng
tuyển vào một công việc
Đầu vào Thông tin tài khoản ứng viên, thông tin công việc,
hồ sơ ứng viênĐầu ra Đơn ứng tuyển, thông báo cho nhà tuyển dụng, và
cập nhật trạng thái ứng tuyển của ứng viên
Luồng sự kiện 1.Người dùng đăng nhập
2.Người dùng nhấn vào công việc để xem thông tintuyển dụng
3.Hệ thống hiển thị giao diện thông tin tuyển dụng4.Người dùng chọn Nộp hồ sơ
5.Hệ thống gửi thông tin đến nhà tuyển dụng vàthông báo ứng tuyển thành công
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát
Trang 35Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
2.2.2.10 Use Case Xem công việc đã ứng tuyển
Mô tả Người dùng đã đăng nhập và muốn xem các công
việc đã ứng tuyển
Đầu vào Yêu cầu xem công việc đã ứng tuyển
Đầu ra Danh sách các công việc đã ứng tuyển với Trạng
thái hiện tại của từng đơn ứng tuyển
Luồng sự kiện chính 1.Người dùng đăng nhập
2.Người dùng nhấn vào tên người dùng3.Người dùng nhấn vào công việc đã ứng tuyển đểxem
4.Hệ thống hiển thị giao diện danh sách công việc
đã ứng tuyển
2.2.2.11 Use Case Xem hồ sơ ứng viên
Mô tả Người dùng đã đăng nhập và muốn xem hồ sơ người
tìm việc đã ứng tuyển
Đầu vào Yêu cầu từ nhà tuyển dụng để xem danh sách và hồ
sơ chi tiết của ứng viên nộp đơn vào một vị trí côngviệc cụ thể
Đầu ra Danh sách các ứng viên đã ứng tuyển vào vị trí công
việc
Luồng sự kiện chính 1.Người dùng đăng nhập
2.Người dùng truy cập vào quản lý tin tuyển dụng3.Người dùng nhấn xem hồ sơ
4.Người dùng chọn xem chi tiết5.Hệ thống hiển thị giao diện hồ sơ của người tìmviệc
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát 14
Trang 362.2.2.12 Use case Gửi phản hồi ứng tuyển
Mô tả Người dùng đăng tin tuyển dụng lên hệ thống
Đầu ra Nhà tuyển dụng sẽ nhận được thông báo rằng tin
tuyển dụng đang trong trạng thái "chờ duyệt"
Luồng sự kiện chính 1.Người dùng đăng nhập
2.Người truy cập vào Quản lý tin tuyển dụng3.Người dùng chọn Các tin tuyển dụng4.Người dùng nhập Xem hồ sơ vào tin tuyển dụng
có hồ sơ cần phản hồi5.Người dùng chọn Phản hồi ứng tuyển6.Hệ thống hiển thị biểu mẫu phản hồi7.Người dùng nhập thông tin cần thiết8.Người dùng chọn Gửi phản hồi
2.3 Thiết kế ERD
Sơ đồ ERD
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát
Trang 37Sử dụng công nghệ NodeJS và ReactJS để thiết kế Website tìm kiếm việc làm IT
Hình 2.1: Sơ đồ ERD
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát 16
Trang 382.4 Sơ đồ hoạt động
2.4.1 Đăng tin tuyển dụng
Hình 2.1: Sơ đồ hoạt động Đăng tuyển dụng
SVTH:Nguyễn Minh Danh GVHD:Nguyễn Văn Phát