1. Trang chủ
  2. » Giáo Dục - Đào Tạo

xây dựng website tuyển dụng và tìm kiếm việc làm trên toàn quốc

96 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Mã SV: 1911505310248 Lớp: 19T2 Nội dung tóm tắt: Xây dựng hệ thống website tyển dụng và tìm kiếm việc làm trên toàn quốc nhằm mục đích giúp cho người những người có nhu cầu tìm kiếm việc

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

XÂY DỰNG WEBSITE TUYỂN DỤNG VÀ TÌM KIẾM

VIỆC LÀM TRÊN TOÀN QUỐC

Sinh viên thực hiện : Bùi Văn Sỷ

Trang 2

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

XÂY DỰNG WEBSITE TUYỂN DỤNG VÀ TÌM KIẾM

VIỆC LÀM TRÊN TOÀN QUỐC

Giảng viên hướng dẫn duyệt

Đà Nẵng, ngày 12 tháng 6 năm 2023

Trang 5

Tên đề tài: Xây dựng website tyển dụng và tìm kiếm việc làm trên toàn quốc Sinh viên thực hiện: Bùi Văn Sỷ

Mã SV: 1911505310248 Lớp: 19T2

Nội dung tóm tắt: Xây dựng hệ thống website tyển dụng và tìm kiếm việc làm trên toàn quốc nhằm mục đích giúp cho người những người có nhu cầu tìm kiếm việc làm và các công ty tuyển dụng kết nối với nhau nhanh chống Từ đó có các mục tiêu cụ thể như sau:

- Người dùng xem được các bài đăng tuyển dụng, thông tin các công ty, ứng tuyển hồ sơ vào các bài tuyển dụng, nhắn tin trao đổi với các nhà tuyển dụng, tạo hồ sơ trực tuyến

- Nhà tuyển dụng được đăng những bài đăng tuyển dụng, nhận được hồ sơ của ứng viên, nhắn tin trao đổi với các ứng viên

- Quản trị viên được xét duyệt các hồ sơ đăng ký nhà tuyển dụng, thông kê người dùng, việc làm ứng tuyển

Trang 6

Giảng viên hướng dẫn: Th.S Phạm Thị Trà My Sinh viên thực hiện: Bùi Văn Sỷ

Mã SV: 1911505310248

1 Tên đề tài: Xây dựng website tyển dụng và tìm kiếm việc làm trên toàn quốc 2 Các số liệu, tài liệu ban đầu:

- Tài liệu: ReactJS: https://legacy.reactjs.org/

NodeJS: https://nodejs.org/en/docs

MySQL: https://www.mysql.com/

3 Nội dung chính của đồ án:

Quá trình xây dựng website tyển dụng và tìm kiếm việc làm trên toàn quốc: - Thu thập thông tin tài liệu liên quan và khảo sát thực tế

- Phân tích thiết kế các chức năng của hệ thống - Phân tích thiết kế cơ sơ dữ liệu

- Thiết kế giao diện cho các chức năng - Xây dựng hệ thống website

- Kiểm thử website - Hoàn thành báo cáo tổng hợp

4 Các sản phẩm dự kiến:

- Website tyển dụng và tìm kiếm việc làm trên toàn quốc - File báo cáo hoàn chỉnh

5 Ngày giao đồ án: 06/02/2023 6 Ngày nộp đồ án: 07/06/2023

Đà Nẵng, ngày tháng năm 2023

Trưởng khoa Giảng viên hướng dẫn

Trang 7

Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến quý thầy cô đã giúp đỡ chúng em thực hiện đề tài này Đặc biệt là ThS Phạm Thị Trà My đã tận tình giúp đỡ em trong suốt quá trình thực hiện đề tài tốt nghiệp này

Đồng thời, em cũng xin cảm ơn quý thầy cô thuộc ngành Công nghệ thông tin khoa Công nghệ số, trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng đã truyền đạt những kiến thức cần thiết và những kinh nghiệm quý báu cho chúng em trong suốt thời gian 4 năm trên giảng đường để em có thể thực hiện tốt đề tài này Đặc biệt, em xin gởi lời cảm ơn chân thành tới TS Hoàng Thị Mỹ Lệ, cùng ThS Lê Vũ giáo viên chủ nhiệm lớp 19T2 đã giúp đỡ em rất nhiều trong quá trình học tập và công việc

Trong quá trình thực hiện đề tài, do kiến thức và thời gian còn hạn chế nên không thể tránh khỏi những sai sót Vì vậy em mong quý thầy, cô thông cảm và góp ý để em có thể hoàn thiện đề tài Và những lời góp ý đó có thể giúp em có thể tránh được những sai lầm sau này

Em xin chân thành cảm ơn!

Đà Nẵng, ngày tháng năm 2023

Sinh viên thực hiện

Trang 8

Em xin cam đoan đồ án “Xây dựng website tuyển dụng và tìm kiếm việc làm trên toàn quốc” là một công trình nghiên cứu độc lập dưới sự hướng dẫn của giảng viên Th.S Phạm Thị Trà My Ngoài ra không có bất cứ sự sao chép nào của người khác Đề tài, nội dung báo cáo đồ án là sản phẩm mà em đã nỗ lực nghiên cứu trong quá trình học tập tại trường Các kết quả trình bày trong báo cáo là hoàn toàn trung thực, em xin chịu hoàn toàn trách nhiệm, kỷ luật của trưởng bộ môn và nhà trường đề ra nếu như có vấn đề xảy ra

Sinh viên thực hiện

Trang 9

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

1.2 Hệ quản trị cơ sở dữ liệu MYSQL 6

1.3 Framework và thư viện 6

1.3.1 Thư viện ReactJS 6

1.3.2 Thư viện Material-UI 7

1.3.3 Thư viện Redux-toolkit 7

Trang 10

1.3.5 Thư viện Socket.io 8

1.5 Lý thuyết xây dựng website 12

Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 13

2.1 Khảo sát yêu cầu 13

2.2.3.2 Đăng ký tài khoản 16

2.2.3.3 Theo dõi nhà tuyển dụng 17

2.2.3.4 Hủy theo dõi nhà tuyển dụng 17

Trang 11

2.2.3.14 Cập nhật trạng thái hồ sơ ứng tuyển, gửi email 24

2.2.3.15 Nhắn tin liên lạc với ứng viên 25

2.2.3.16 Tìm kiếm hồ sơ ứng viên 26

2.2.3.17 Cập nhật trạng thái lưu hồ sơ ứng viên 26

2.2.3.18 Đăng ký gói bài đăng tuyển dụng 27

2.2.3.19 Cập nhật tài khoản người dùng 27

2.2.3.20 Xét duyệt hồ sơ đăng ký nhà tuyển dụng 28

2.2.3.21 Cập nhật bài viết website 29

Trang 12

2.2.5.8 Tìm kiếm việc làm 34

2.2.5.9 Cập nhật tin tuyển dụng 35

2.2.5.10 Cập nhật trạng thái hồ sơ ứng tuyển, gửi mail 35

2.2.5.11 Đăng ký gói bài đăng tuyển dụng 36

2.2.5.12 Nhắn tin liên lạc với ứng viên 36

2.2.5.13 Cập nhật tài khoản người dùng 37

2.2.5.14 Duyệt đăng ký nhà tuyển dụng 37

2.2.5.15 Cập nhật bài viết website 38

Trang 13

2.2.8.9 Thêm bài đăng tuyển dụng 53

2.2.8.10 Khóa bài đăng 53

2.2.8.11 Cập nhật trạng thái hồ sơ tuyển dụng, gửi mail 54

2.2.8.12 Nhắn tin trao đổi với ứng viên 54

2.2.8.13 Phê duyệt hồ sơ đăng ký nhà tuyển dụng 55

Chương 3 XÂY DỰNG CHƯƠNG TRÌNH 56

3.1 Công cụ xây dựng chương trình 56

3.2 Giao diện chương trình 57

3.2.1 Giao diện trang chủ 57

Trang 14

3.2.3 Giao diện trang chi tiết việc làm 59

3.2.4 Giao diện trang chi tiết công ty 60

3.2.5 Giao diện trang cập nhật tài khoản 61

3.2.6 Giao diện trang hồ sơ CV 61

3.2.7 Giao diện trang thêm hồ sơ CV 62

3.2.8 Giao diện trang việc làm đã yêu thích 63

3.2.9 Giao diện trang theo dõi nhà tuyển dụng 63

3.2.10 Giao diện trang đăng ký nhà tuyển dụng 64

3.2.11 Giao diện trang nhắn tin trao đổi 64

3.2.12 Giao diện trang nộp hồ sơ ứng tuyển 65

3.2.13 Giao diện trang danh sách bài đăng 65

3.2.14 Giao diện trang cập nhật hồ sơ công ty 66

3.2.15 Giao diện trang tạo bài đăng 67

3.2.16 Giao diện trang danh sách hồ sơ ứng tuyển 68

3.2.17 Giao diện trang cập nhật trạng thái hồ sơ ứng tuyển, gửi email 68

3.2.18 Giao diện trang lưu hồ sơ ứng viên 69

3.2.19 Giao diện trang thông tin của ứng viên 69

3.2.20 Giao diện trang mua dịch vụ đăng tin 70

3.2.21 Giao diện trang lịch sử mua dịch vụ đăng tin 70

3.2.22 Giao diện trang thống kê 71

3.2.23 Giao diện trang quản lý người dùng 72

3.2.24 Giao diện trang phê duyệt nhà tuyển dụng 72

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 73

TÀI LIỆU THAM KHẢO 75

Trang 15

DANH MỤC BẢNG BIỂU

Bảng 2.1 Kịch bản cho usecase đăng nhập 16

Bảng 2.2 Kịch bản cho usecase đăng ký tài khoản 17

Bảng 2.3 Kịch bản cho usecase theo dõi nhà tuyển dụng 17

Bảng 2.4 Kịch bản cho usecase hủy theo dõi nhà tuyển dụng 18

Bảng 2.5 Kịch bản cho usecase tìm kiếm việc làm 18

Bảng 2.6 Kịch bản cho usecase lưu việc làm 19

Bảng 2.7 Kịch bản cho usecase hủy lưu việc làm 20

Bảng 2.8 Kịch bản cho usecase cập nhật hồ sơ cá nhân 20

Bảng 2.9 Kịch bản cho usecase cập nhật CV cá nhân 21

Bảng 2.10 Kịch bản cho usecase nộp hồ sơ ứng tuyển 22

Bảng 2.11 Kịch bản cho usecase đăng ký tài khoản nhà tuyển dụng 22

Bảng 2.12 Kịch bản cho usecase cập nhật hồ sơ nhà tuyển dụng 23

Bảng 2.13 Kịch bản cho usecase cập nhật tin tuyển dụng 24

Bảng 2.14 Kịch bản cho usecase cập nhật trạng thái hồ sơ, gửi mail 25

Bảng 2.15 Kịch bản cho usecase nhắn tin liên lạc với ứng viên 25

Bảng 2.16 Kịch bản cho usecase tìm kiếm hồ sơ ứng viên 26

Bảng 2.17 Kịch bản cho usecase cập nhật trạng thái hồ sơ ứng viên 27

Bảng 2.18 Kịch bản cho usecase đăng ký gói bài đăng tuyển dụng 27

Bảng 2.19 Kịch bản cho usecase cập nhật tài khoản người dùng 28

Bảng 2.20 Kịch bản cho usecase xét duyệt hồ sơ đăng ký nhà tuyển dụng 28

Bảng 2.21 Kịch bản cho usecase cập nhật bài viết website 29

Trang 17

Hình 1.10 Hình ảnh minh họa mô hình Client-Server 12

Hình 2.1 Sơ đồ hoạt động nghiệp vụ hệ thống 13

Hình 2.2 Sơ đồ usecase 15

Hình 2.3 Sơ đồ ERD 30

Hình 2.4 Sơ đồ triển khai relationship diagram 30

Hình 2.5.Sơ đồ hoạt động cho usecase đăng nhập 31

Hình 2.6 Sơ đồ hoạt động cho usecase đăng ký tài khoản 31

Hình 2.7 Sơ đồ hoạt động cho usecase cập nhật CV 32

Hình 2.8 Sơ đồ hoạt động cho usecase cập nhật hồ sơ cá nhân 32

Hình 2.9 Sơ đồ hoạt động cho usecase lưu việc làm 33

Hình 2.10 Sơ đồ hoạt động cho usecase nộp hồ sơ ứng tuyển 33

Hình 2.11 Sơ đồ hoạt động cho usecase theo dõi nhà tuyển dụng 34

Hình 2.12 Sơ đồ hoạt động cho usecase tìm kiếm việc làm 34

Hình 2.13 Sơ đồ hoạt động cho usecase cập nhật tin tuyển dụng 35

Hình 2.14 Sơ đồ hoạt động cho usecase cập nhật trạng thái hồ sơ ứng tuyển 35

Hình 2.15 Sơ đồ hoạt động cho usecase đăng ký gói bài đăng tuyển dụng 36

Hình 2.16 Sơ đồ hoạt động cho usecase nhắn tin liên lạc với ứng viên 36

Hình 2.17 Sơ đồ hoạt động cho usecase cập nhật tài khoản người dùng 37

Hình 2.18 Sơ đồ hoạt động cho usecase duyệt hồ sơ đăng ký nhà tuyển dụng 37

Hình 2.19 Sơ đồ hoạt động cho usecase cập nhật bài viết website 38

Trang 18

Hình 2.22 Sơ đồ tuần tự đăng nhập 49

Hình 2.23 Sơ đồ tuần tự tìm kiếm việc làm 50

Hình 2.24 Sơ đồ tuần tự cập nhật hồ sơ cá nhân 50

Hình 2.25 Sơ đồ tuần tự cập nhật CV cá nhân 51

Hình 2.26 Sơ đồ tuần tự nộp hồ sơ ứng tuyển 51

Hình 2.27 Sơ đồ tuần tự đăng ký tài khoản nhà tuyển dụng 52

Hình 2.28 Sơ đồ tuần tự cập nhật hồ sơ nhà tuyển dụng 52

Hình 2.29 Sơ đồ tuần tự thêm bài đăng tuyển dụng 53

Hình 2.30 Sơ đồ tuần tự khóa bài đăng 53

Hình 2.31 Sơ đồ tuần tự cập nhật trạng thái hồ sơ ứng tuyển, gửi mail 54

Hình 2.32 Sơ đồ tuần tự nhắn tin trao đổi với ứng viên 54

Hình 2.33 Sơ đồ tuần tự phê duyệt hồ sơ đăng ký nhà tuyển dụng 55

Hình 3.1 Giao diện trang chủ 57

Hình 3.2 Giao diện tìm kiếm việc làm 58

Hình 3.3 Giao diện trang chi tiết việc làm 59

Hình 3.4 Giao diện trang chi tiết công ty 60

Hình 3.5 Giao diện trang cập nhật tài khoản 61

Hình 3.6 Giao diện trang hồ sơ CV 61

Hình 3.7 Giao diện trang thêm hồ sơ CV 62

Hình 3.8 Giao diện trang việc làm đã yêu thích 63

Hình 3.9 Giao diện trang theo dõi nhà tuyển dụng 63

Hình 3.10 Giao diện trang đăng ký nhà tuyển dụng 64

Hình 3.11 Giao diện trang nhắn tin trao đổi 64

Hình 3.12 Giao diện trang nộp hồ sơ ứng tuyển 65

Hình 3.13 Giao diện trang danh sách bài đăng 65

Hình 3.14 Giao diện trang cập nhật hồ sơ công ty 66

Hình 3.15 Giao diện trang tạo bài đăng tuyển dụng 67

Hình 3.16 Giao diện trang danh sách hồ sơ ứng tuyển 68

Hình 3.17 Giao diện trang cập nhật trạng thái hồ sơ, gửi mail 68

Hình 3.18 Giao diện trang lưu hồ sơ ứng viên 69

Trang 19

Hình 3.20 Giao diện trang mua dịch vụ đăng tin 70

Hình 3.21 Giao diện trang lịch sử mua dịch vụ đăng tin 70

Hình 3.22 Giao diện trang thống kê 71

Hình 3.23 Giao diện trang quản lý người dùng 72

Hình 3.24 Giao diện trang phê duyệt nhà tuyển dụng 72

Trang 20

STT Chữ viết tắt Giải nghĩa

Trang 21

Stt Chữ viết tắt Giải nghĩa Nghĩa tiếng Việt 1 HTML HyperText Markup Language Ngôn ngữ đánh dấu siêu văn bản 2 CSS Cascading Style Sheets Trang trí trang văn bản

3 IT Information Technology Công nghệ thông tin

4 API

Application Programming Interface Giao diện lập trình ứng dụng 5 CV Curriculum vitae Bản tóm tắt về bản thân

6 W3C

World Wide Web

8 HTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn bản

Trang 22

MỞ ĐẦU

Xây dựng website tuyển dụng và tìm kiếm việc làm trên toàn quốc là một đề tài có nhiều ý nghĩa đối với xã hội hiện nay Với nhu cầu tìm kiếm việc làm đang ngày càng tăng cao, việc xây dựng một hệ thống website tuyển dụng và tìm kiếm việc làm sẽ giúp cho việc kết nối giữa người tìm việc và nhà tuyển dụng trở nên dễ dàng và nhanh chóng hơn Đồng thời, việc phát triển công nghệ mới để xây dựng hệ thống này sẽ đóng góp vào sự phát triển của ngành công nghiệp CNTT của Việt Nam Nhà tuyển dụng cũng có thể dễ dàng đăng tuyển và tìm kiếm ứng viên phù hợp với yêu cầu của công việc, trong khi đó người tìm việc có thể tìm kiếm và ứng tuyển vào các vị trí việc làm phù hợp với năng lực và kinh nghiệm của mình một cách nhanh chóng

1 Mục tiêu đề tài

Xây dựng hệ thống website tyển dụng và tìm kiếm việc làm trên toàn quốc nhằm mục đích giúp cho người những người có nhu cầu tìm kiếm việc làm và các công ty tuyển dụng kết nối với nhau nhanh chống Từ đó có các mục tiêu cụ thể như sau:

- Người dùng xem được các bài đăng tuyển dụng, thông tin các công ty, ứng tuyển hồ sơ vào các bài tuyển dụng, nhắn tin trao đổi với các nhà tuyển dụng, tạo hồ sơ trực tuyến

- Nhà tuyển dụng được đăng những bài đăng tuyển dụng, nhận được hồ sơ của ứng viên, nhắn tin trao đổi với các ứng viên

- Quản trị viên được xét duyệt các hồ sơ đăng ký nhà tuyển dụng, thông kê người dùng, việc làm ứng tuyển

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 trên toàn quốc nhắm hướng đến hai đối tượng chính: Người tìm việc và nhà tuyển dụng

b Phạm vi nghiên cứu

- Nghiên cứu tập trung vào người tìm việc và nhà tuyển dụng, hai đối tượng chính của website tìm kiếm việc làm trên toàn quốc

Trang 23

- Nghiên cứu sẽ xem xét và phân tích các lĩnh vực ngành nghề khác nhau mà website hướng đến Điều này bao gồm những ngành rộng rãi như IT, kinh doanh, tài chính, marketing, y tế, giáo dục, sản xuất và nhiều lĩnh vực khác

- Nghiện cứu sẽ tập trung vào các chức năng và dịch vụ mà website cung cấp cho người tìm việc và nhà tuyển dụng, bao gồm tìm kiếm việc làm, đăng tuyển, gửi hồ sơ, phản hồi, tương tác và các chức năng khác

3 Phương pháp nghiên cứu

- Tìm hiểu và phân tích các tài liệu tham khảo liên quan đến lĩnh vực tìm kiếm việc làm, bao gồm các báo cáo nghiên cứu, bài báo và các tài liệu khác

- Khảo sát trực tuyến, trực tiếp để thu thập các ý kiến và phản hồi từ người dùng

4 Giải pháp công nghệ

- Thiết kế cơ sở dữ liệu, sơ đồ usecase, sơ đồ hoạt động: Sử dụng phần mềm StartUML để thiết kế và mô hình hóa cơ sở dữ liệu, sơ đồ usecase và sơ đồ hoạt động của hệ thống

- Ngôn ngữ lập trình: • Backend:

o Sử dụng ngôn ngữ Javascript và thư viện Socket.io để xây dựng phần backend của ứng dụng

o Sử dụng framework ExpressJS đề xử lý các yêu cầu API cho các chức năng của website

o Chạy trên môi trường NodeJS để xây dựng và chạy server • Frontend:

o Sử dụng ngôn ngữ HTML, CSS và thư viện Material-UI để xây dựng giao diện người dùng

o Sử dụng ngôn ngữ Javascript, Typescript và thư viện ReactJS để phát triển các thành phần giao diện

o Sử dụng thư viện Redux Toolit để quản lý trạng thái toàn cục và quản lý dữ liệu trong ứng dụng

• Hệ quản trị CSDL: Sử dụng hệ quản trị cơ sở dữ liệu MYSQL để lưu trữ và quản

Trang 25

Chương 1

CƠ SỞ LÝ THUYẾT

1.1 Tổng quan về ngôn ngữ lập trình 1.1.1 HTML

HTML là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các trang web với các mẫu thông tin được trình bày trên World Wide Web Cùng với CSS và Javascript, HTML tạo ra bộ ba nền tảng kỹ thuật cho World Wide Web

HTML được định nghĩa như là một ứng dụng đơn giản của SGML và được sử dụng trong các tổ chức cần đến các yêu cầu xuất bản phức tạp HTML đã trở thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì Phiên bản chính thức mới nhất của HTML và HTML 4.01 (1999) Sau đó, các nhà phát triển đã thay thế nó bằng XHTML Hiện nay, HTML đang được phát triển tiếp với phiên bản HTML5 hứa hẹn mang lại diện mạo mới cho trang Web

CSS được sử dụng trong Website là công nghệ được phát triển bởi W3C, được dùng để phát triển Front-end

Trang 26

1.1.3 Javascript

JavaScript được tạo ra vào năm 1995 bởi Brendan Eich khi làm việc tại Netscape Communications Ban đầu, ngôn ngữ này được gọi là "LiveScript" và được thiết kế để thực hiện các chức năng đơn giản trên trình duyệt web Netscape Navigator

Sự ra đời của JavaScript đã tạo ra một sự cách mạng trong lĩnh vực phát triển web Trước đó, các trang web chỉ sử dụng HTML tĩnh và không thể tương tác với người dùng Nhưng với JavaScript, nhà phát triển có thể thêm các chức năng động, tương tác và thay đổi nội dung trực tiếp trên trang web mà không cần tải lại trang

JavaScript ngày nay đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới, không chỉ trong việc phát triển ứng dụng web mà còn trong các lĩnh vực như phát triển ứng dụng di động, máy chủ, trí tuệ nhân tạo, và Internet of Things (IoT) Sự phát triển của JavaScript cũng đồng điều với việc xuất hiện nhiều framework và thư viện phổ biến như React, Angular, Vue, và Node.js, giúp đơn giản hóa và tăng tốc quá trình phát triển ứng dụng web

1.1.4 Typescript

Typescript là một ngôn ngữ lập trình mã nguồn mở phát triển bởi Microsoft vào năm 2012 Nó là một phần mở rộng của JavaScript và được biên dịch thành JavaScript Typescript giúp cho việc phát triển ứng dụng web trở nên dễ dàng hơn và an toàn hơn bằng cách cung cấp kiểu dữ liệu tĩnh và tính năng kiểm tra lỗi tại thời điểm biên dịch Điều này giúp cho các lỗi thường gặp trong quá trình phát triển ứng dụng được phát hiện sớm hơn, từ đó giảm thiểu thời gian và chi phí sửa lỗi sau này Ngoài ra, Typescript cũng hỗ trợ các tính năng mới của ECMAScript như async/await, destructuring, template literals, giúp cho việc viết mã nguồn trở nên dễ dàng và tiện lợi hơn

Hình 1.2 Ví dụ về typescript

Trang 27

1.2 Hệ quản trị cơ sở dữ liệu MYSQL

MySQL là một hệ thống quản trị cơ sở dữ liệu quan hệ (RDBMS) hoạt động theo mô hình client-server RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng

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 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 cơ sở dữ liệu trên internet

Với ReactJS, các lập trình viên có thể xây dựng các ứng dụng web hiệu quả, dễ bảo trì và dễ mở rộng ReactJS cho phép tái sử dụng các thành phần (components) UI, giúp giảm thiểu thời gian và công sức phát triển, tăng tính linh hoạt và giảm thiểu sự cố hệ thống

Hình 1.1 Logo React JS

Trang 28

ReactJS cũng hỗ trợ mô hình dữ liệu định hướng (unidirectional data flow) và cho phép tích hợp với các thư viện khác như Redux hay React Router để cải thiện trải nghiệm người dùng và quản lý trạng thái ứng dụng

Một trong những ưu điểm của ReactJS là có cộng đồng lớn và phong phú, cung cấp nhiều tài liệu, ví dụ và các công cụ hỗ trợ để giúp lập trình viên phát triển ứng dụng dễ dàng hơn

1.3.2 Thư viện Material-UI

Material-UI là một thư viện UI (User Interface) được xây dựng trên nền tảng React, hỗ trợ cho việc thiết kế giao diện người dùng trong các ứng dụng web Thư viện này được tạo ra bởi nhóm phát triển tại Call-Em-All và được phát hành dưới giấy phép MIT Material-UI cung cấp các thành phần UI chuẩn theo thiết kế của Google Material Design, giúp cho việc thiết kế giao diện trở nên dễ dàng hơn Ngoài ra, thư viện này còn cung cấp các tính năng như: hỗ trợ responsive design, tương thích với các trình duyệt khác nhau, hỗ trợ theme customization và hỗ trợ các tính năng chuyên sâu như CSS-in-JS

Hình 1.4 Logo Material UI Material-UI được sử dụng rộng rãi trong cộng đồng React và đã trở thành một trong những thư viện UI phổ biến nhất cho React hiện nay

1.3.3 Thư viện Redux-toolkit

Redux Toolkit là một thư viện của Redux, được thiết kế để giúp cho việc sử dụng Redux trở nên dễ dàng hơn và nhanh chóng hơn Thư viện này bao gồm các công cụ giúp bạn viết code Redux một cách đơn giản hơn, tiết kiệm thời gian và giảm thiểu lỗi

Một số tính năng của Redux Toolkit bao gồm: - Slices: Slices là một cách tiện lợi để định nghĩa các reducer, actions và selectors

trong Redux Thay vì phải viết các reducer và action riêng lẻ, bạn có thể sử dụng slice để tổ chức chúng thành một module độc lập

Trang 29

- Thunk Action Creation: Redux Toolkit cung cấp một cách tiện lợi để viết async actions thông qua hàm createAsyncThunk, cho phép bạn thực hiện các thao tác bất đồng bộ một cách đơn giản hơn

Hình 1.5 Logo Redux-toolkit

1.3.4 Thư viện Axios

Axios là một thư viện HTTP client dựa trên JavaScript được sử dụng để gửi các yêu cầu HTTP từ một ứng dụng web đến một API hoặc một backend server Nó cho phép bạn gửi các yêu cầu HTTP với các phương thức như GET, POST, PUT, DELETE và nhiều hơn nữa

Axios cung cấp cho người lập trình một API đơn giản và dễ sử dụng để xử lý các yêu cầu và phản hồi HTTP trong JavaScript Nó hỗ trợ các tính năng như cancel request, interceptors, handling errors và nhiều hơn nữa

Một trong những ưu điểm của Axios là nó có thể được sử dụng trong cả trình duyệt và Node.js Nó cũng hỗ trợ các tính năng như sending and receiving data in JSON format, handling headers and authentication, and handling cookies

Với Axios, ta có thể tạo các yêu cầu HTTP một cách đơn giản và nhanh chóng để tương tác với các API hoặc backend server của mình một cách hiệu quả

1.3.5 Thư viện Socket.io

Socket.IO là một thư viện mã nguồn mở cho phép các ứng dụng web thực hiện giao tiếp hai chiều (bidirectional) giữa máy khách và máy chủ Nó cho phép truyền tải dữ liệu theo thời gian thực (real-time) và được sử dụng rộng rãi trong các ứng dụng web có tính tương tác cao như trò chơi trực tuyến, chát, hệ thống thông báo, hệ thống theo dõi thời gian thực,

Socket.IO cung cấp API đơn giản và linh hoạt, giúp phát triển các ứng dụng thời gian thực dễ dàng hơn Nó hoạt động trên đa nền tảng, cho phép ứng dụng của bạn hoạt động trên nhiều trình duyệt và thiết bị khác nhau

Một số tính năng của Socket.IO: - Gửi và nhận các sự kiện (event) giữa máy khách và máy chủ - Hỗ trợ các kết nối dài hạn (long-polling) và websockets

Trang 30

- Cho phép gửi và nhận dữ liệu bất đồng bộ (asynchronous) giữa máy khách và máy chủ

- Tích hợp với nhiều framework và thư viện phổ biến như Node.js, React, Angular,

Hình 1.6 Logo Socket.io

1.3.6 Framework ExpressJS

ExpressJS là một framework phát triển web dựa trên Node.js Nó giúp cho việc phát triển các ứng dụng web trở nên dễ dàng hơn, với những tính năng như xử lý các yêu cầu HTTP, xử lý các tệp tĩnh, quản lý cookies và phiên, xử lý các dữ liệu được gửi từ form, và nhiều hơn nữa

Với ExpressJS, bạn có thể tạo ra các ứng dụng web đa dạng, từ các ứng dụng đơn giản đến các ứng dụng web phức tạp Nó cũng hỗ trợ các tính năng phổ biến như middleware, routing, template engine, và nhiều hơn nữa

Hình 1.7 Logo Express ExpressJS được phát triển để làm cho việc phát triển web với Node.js dễ dàng hơn và đơn giản hóa quá trình phát triển Nó cũng có thể được sử dụng để phát triển các ứng dụng web API và các ứng dụng web phía máy chủ

Trang 31

1.4 Công cụ hỗ trợ 1.4.1 Visual Studio Code

Visual Studio Code được biết đến là một trình biên tập lập trình code miễn phí dành cho Windows, Linux và macOS Nó được phát triển bởi Microsoft là sự kết hợp hoàn hảo giữa IDE và Code Editor Trình biên tập này được hỗ trợ chức năng debug, đi kèm với Git, có syntax highlighting, tự hoàn thành mã thông minh, snippets, cùng đó là cải tiến mã nguồn Ngoài ra, Visual Studio Code còn cho phép người dùng thay đổi theme, phím tắt, và các tùy chọn khác

Những ưu điểm nổi bật của Visual Studio Code:

- Đa dạng ngôn ngữ lập trình giúp bạn thỏa sức sáng tạo như HTML, CSS, JavaScript, C++,…

- Ngôn ngữ, giao diện tối giản, tinh tế, giúp người dùng dễ dàng định hình nội dung

- Các tiện ích mở rộng đa dạng, phong phú - Tích hợp các tính năng bảo mật (Git), tăng tốc xử lý vòng lặp (Debug),…

- Có thể đơn giản trong việc tìm quản lý hết tất cả các Code có trên hệ thống

1.4.2 XAMPP

Xampp là một phần mềm cho phép giải lập môi trường server hosting ngay trên máy tính của bạn, cho phép bạn chạy demo website mà không cần phải mua hosting hay VPS Chính vì vậy, Xampp hay được phục vụ cho hoạt động học tập giảng dạy thự hành và phát triển web

Xampp được viết tắt của X + Apache + MySQL + PHP + Perl vì nó được tích hợp sẵn Apache, MySQL, PHP, FTP Server, Mail Server Còn X thể hiện cho sự đa nền tảng của Xampp vì nó có thể dùng được cho 4 hệ điều hành khác nhau: Windows, MacOS, Linus và Solaris

Trang 32

1.4.3 Star UML

StarUML là một phần mềm thiết kế và mô hình hóa UML (Unified Modeling Language) UML là một ngôn ngữ chuẩn được sử dụng để mô tả và thiết kế hệ thống phần mềm StarUML cung cấp một giao diện đồ họa cho phép người dùng tạo và chỉnh sửa các biểu đồ UML như biểu đồ lớp, biểu đồ use case, biểu đồ tuần tự, biểu đồ hoạt động, và nhiều loại biểu đồ UML khác

StarUML cung cấp các tính năng như: - Tạo và chỉnh sửa các biểu đồ UML một cách dễ dàng và trực quan - Hỗ trợ nhiều loại biểu đồ UML, bao gồm cả các biểu đồ chức năng và cấu trúc - Hỗ trợ việc nhập và xuất các biểu đồ UML từ và đến các định dạng tệp tin khác

nhau như XMI, XML, và hình ảnh - Cho phép xem và chỉnh sửa các thuộc tính và phương thức của các lớp và đối

tượng trong biểu đồ - Hỗ trợ tính năng tạo mã tự động từ biểu đồ UML, giúp tiết kiệm thời gian và

tránh sai sót trong quá trình phát triển phần mềm

1.4.4 Github

GitHub là một nền tảng dịch vụ lưu trữ mã nguồn và quản lý phiên bản phần mềm dựa trên hệ thống kiểm soát phiên bản Git Nó cung cấp một môi trường cho các nhà phát triển phần mềm để làm việc cùng nhau trên các dự án, quản lý mã nguồn, và theo dõi lịch sử thay đổi của mã nguồn

GitHub cho phép người dùng tạo các kho lưu trữ (repositories) để lưu trữ mã nguồn của dự án Các nhà phát triển có thể tải lên mã nguồn lên GitHub, tạo ra các nhánh (branches) để làm việc độc lập, và sau đó hợp nhất (merge) các nhánh lại với nhau khi hoàn thành công việc Các kho lưu trữ cũng cung cấp tính năng theo dõi vấn đề (issue tracking) để quản lý công việc, giao tiếp và giải quyết các vấn đề liên quan đến dự án

Hình 1.9 Logo github

Trang 33

1.5 Lý thuyết xây dựng website

Mô hình hoạt động "Client-Server": - Người dùng thực hiện một hành động trên giao diện người dùng, chẳng hạn như

click nút hoặc nhập liệu vào form, dữ liệu sẽ được đưa tới Axios để tạo một request HTTP và gửi đến server NodeJS thông qua API của ứng dụng

- Server NodeJS nhận request, sử dụng các middleware để xử lý và định tuyến request đến các controller tương ứng

- Controller xử lý request, thực hiện các thao tác cần thiết, truy vấn dữ liệu với mysql và gửi response về server

- Server NodeJS nhận response, và trả về cho ứng dụng ReactJS thông qua API của ứng dụng

- Ứng dụng ReactJS nhận response từ server, và sử dụng dữ liệu được trả về để cập nhật giao diện người dùng hiển thị cho phù hợp với response

Hình 1.10 Hình ảnh minh họa mô hình Client-Server

Trang 34

Chương 2

PHÂN TÍCH THIẾT KẾ HỆ THỐNG

2.1 Khảo sát yêu cầu 2.1.1 Hoạt động nghiệp vụ

Hình 2.1 Sơ đồ hoạt động nghiệp vụ hệ thống

2.1.2 Liệt kê người dùng và yêu cầu

- Người tìm việc: + Tìm việc làm phù hợp với kỹ năng, kinh nghiệm và mong muốn của mình + Xem thông tin chi tiết về công ty tuyển dụng, vị trí công việc và yêu cầu công

việc + Gửi hồ sơ ứng tuyển và xem trạng thái của hồ sơ + Nhận thông báo về việc làm mới và các cơ hội nghề nghiệp

Trang 35

- Nhà tuyển dụng: + Đăng tin về việc làm và mô tả chi tiết về công việc + Quản lý và xem hồ sơ ứng viên, tiến hành chọn lọc ứng viên phù hợp + Liên hệ và giao tiếp với ứng viên qua hệ thống nhắn tin hoặc email - Quản trị viên:

+ Đảm bảo thông tin về các công ty, người dùng trên hệ thống + Đảm bảo tính bảo mật và quyền riêng tư của người dùng

2.2 Phân tích thiết kế hệ thống 2.2.1 Liệt kê Actor và Usecase

2.2.1.1 Khách vãng lai

- Xem thông tin bài viết của website - Tìm kiếm bài đăng tuyển dụng - Xem chi tiết bài đăng tuyển dụng - Xem thông tin các công ty

- Đăng ký tài khoản người dùng

2.2.1.2 Người tìm việc

- Đăng nhập hệ thống - Lưu, hủy lưu các việc làm yêu thích - Theo dõi, hủy theo dõi nhà tuyển dụng - Nộp hồ sơ ứng tuyển

- Cập nhật hồ sơ cá nhân - Cập nhật CV cá nhân - Xem thông báo - Nhắn tin trao đổi với nhà tuyển dụng

2.2.1.3 Nhà tuyển dụng

- Đăng ký tài khoản nhà tuyển dụng - Cập nhật bài đăng tuyển dụng - Cập nhật hồ sơ nhà tuyển dụng - Xem hồ sơ ứng tuyển của ứng viên

Trang 36

- Cập nhật trạng thái hồ sơ, gửi mail đến ứng viên - Nhắn tin liên lạc ứng viên

- Tìm kiếm, xem hồ sơ của ứng viên - Đăng ký gói bài đăng tuyển dụng - Lưu hồ sơ của ứng viên

2.2.1.4 Quản trị viên

- Cập nhật tài khoản người dùng hệ thống - Xem, xét duyệt hồ sơ đăng ký nhà tuyển dụng - Thống kê

- Cập nhật bài đăng của website - Cập nhật hệ thống

2.2.2 Sơ đồ usecase

Hình 2.2 Sơ đồ usecase

Trang 37

2.2.3 Kịch bản

2.2.3.1 Đăng nhập

STT Use case name Đăng nhập 1 Description Actor đã có tài khoản có thể đăng nhập

2 Actor Người tìm việc, nhà tuyển dụng

3 Input Người dùng truy cập vào hệ thống

4 Output Người dùng đăng nhập thành công

5 Basic flow

1) Bắt đầu use case 2) Người dùng chọn đăng nhập 3) Người dùng nhập email và mật khẩu sau đó nhấn nút đăng nhập

4) Kết thúc use case

6 Alternative flow Không có

7 Exception flow 3’) Thông báo lỗi nếu tài khoản hoặc mật khẩu không

đúng, hoặc tài khoản không tồn tại Bảng 2.1 Kịch bản cho usecase đăng nhập

2.2.3.2 Đăng ký tài khoản

STT Use case name Đăng ký tài khoản 1 Description Actor đăng ký tài khoản người dùng hệ thống

2 Actor Người tìm việc

3 Input Khách vãng lai truy cập vào hệ thống, chưa có tài

Trang 38

6 Alternative flow Không có

7 Exception flow 3’) Hệ thống thông báo nếu email đã được sử dụng, mật

khẩu không trùng khớp Bảng 2.2 Kịch bản cho usecase đăng ký tài khoản

STT Use case name Theo dõi nhà tuyển dụng 1 Description Actor theo dõi nhà tuyển dụng

2 Actor Người tìm việc

3 Input Actor đăng nhập thành công

4 Output Theo dõi nhà tuyển dụng thành công

5 Basic flow

1) Bắt đầu use case 2) Người dùng vào xem chi tiết nhà tuyển dụng 3) Nhấn nút “Theo dõi” → Hệ thống gửi thông báo theo dõi thành công

4) Kết thúc use case

6 Alternative flow Không có

7 Exception flow 3”) Hệ thống báo lỗi theo dõi không thành công

Bảng 2.3 Kịch bản cho usecase theo dõi nhà tuyển dụng

STT Use case name Hủy theo dõi nhà tuyển dụng

1 Description Actor hủy theo dõi nhà tuyển dụng

2 Actor Người tìm việc

3 Input Actor đăng nhập thành công, đã theo dõi nhà tuyển dụng

4 Output Hủy theo dõi nhà tuyển dụng thành công

Trang 39

5 Basic flow

1) Bắt đầu use case 2) Người dùng vào xem nhà tuyển dụng đang theo dõi 3) Nhấn nút “Hủy theo dõi” 1 nhà tuyển dụng → Hệ thống gửi thông báo hủy theo dõi thành công

4) Kết thúc use case

6 Alternative flow Không có

7 Exception flow Không có

Bảng 2.4 Kịch bản cho usecase hủy theo dõi nhà tuyển dụng

2.2.3.5 Tìm kiếm việc làm

STT Use case name Tìm kiếm việc làm

1 Description Actor tìm kiếm công việc theo yêu cầu

2 Actor Người tìm việc, khách vãng lai

3 Input Actor truy cập vào hệ thống

4 Output Tìm các công việc

5 Basic flow

1) Bắt đầu use case 2) Actor nhập các yêu cầu:tên việc làm, nghề nghiệp, thành phố, kinh nghiệm, mức lương, cấp bậc, trình độ, loại công việc, giới tính

3) Nhấn nút “Tìm kiếm” 4) Hiện thị kết quả tìm kiếm 5) Kết thúc use case

6 Alternative flow Không có

7 Exception flow Không có

Bảng 2.5 Kịch bản cho usecase tìm kiếm việc làm

Trang 40

2.2.3.6 Lưu việc làm

STT Use case name Lưu việc làm 1 Description Actor lưu việc làm mình yêu thích

2 Actor Người tìm việc

3 Input Actor đăng nhập vào hệ thống

4 Output Việc làm lưu thành công

5 Basic flow

1) Bắt đầu use case 2) Actor chọn việc làm cần lưu 3) Nhấn nút “Lưu” → Hệ thống thông báo lưu thành công

5) Kết thúc use case

6 Alternative flow Không có

7 Exception flow Không có

Bảng 2.6 Kịch bản cho usecase lưu việc làm

2.2.3.7 Hủy lưu việc làm

STT Use case name Hủy việc làm

1 Description Actor hủy việc làm mà đã lưu

2 Actor Người tìm việc

3 Input Actor đăng nhập thành công, đã lưu việc đó

4 Output Hủy lưu việc thành công

5 Basic flow

1) Bắt đầu use case 2) Người dùng vào xem danh sách đã lưu 3) Người dùng chọn một mục trong danh sách 4) Nhấn nút icon “trai tim” → Hệ thống thông báo hủy lưu thành công

5) Kết thúc use case

6 Alternative flow Không có

Ngày đăng: 18/09/2024, 10:34

w