1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM

144 13 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 144
Dung lượng 7,07 MB

Nội dung

(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại 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ý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA ĐÀO TẠO CHẤT LƯỢNG CAO

Ngành: CÔNG NGHỆ THÔNG TIN

GVHD: THS NGUYỄN MINH ĐẠO

Trang 2

i

LỜI CẢM ƠN

Lời đầu tiên, cho phép nhóm em được gửi lời cảm ơn chân thành đến thầy Nguyễn Minh Đạo, người đã phụ trách hướng dẫn nhóm chúng em trong việc thực hiện và hoàn thành bài báo cáo một cách tốt và hiệu quả nhất Những sự chỉ dạy, nhật xét, đóng góp ý kiến từ thầy đã góp phần rất quan trọng trong việc giúp chúng em hoàn hành đề tài một cách hoàn thiện nhất

Cảm ơn các thầy cô trong khoa Công Nghệ Thông Tin đã luôn nhiệt tình, cống hiến, tận tình giải đáp các thắc mắc của chúng em Bên cạnh đó, chúng em xin được cảm ơn các bạn cùng khóa, các anh chị khóa trên đã không ngần ngại chia sẻ các thông tin, kinh nghiệm bổ ích giúp chúng em hoàn thiện hơn đề tài của mình Báo cáo được thực hiện trong một khoảng thời gian có hạn, cùng với những hạn chế về mặt kiến thức nên việc sai sót là điều không thể tránh khỏi trong quá trình thực hiện Chúng em kính mong nhận được những lời nhận xét, ý kiến đóng góp quý báo từ quý Thầy Cô để chúng em có thêm kinh nghiệm và hoàn thành tốt hơn những đề tài sau này

Chúng em xin chân thành cảm ơn !

Trang 3

- Tìm hiểu về nghiệp vụ quản lý việc làm sẵn có hiện nay Từ đó có cái nhìn tổng quát về nghiệp vụ quản lý việc làm, nghiên cứu xây dựng trang web việc làm với nghiệp vụ đã tìm hiểu

2 Các vấn đề phát sinh

- Phía khách hàng thay đổi một số nghiệp vụ trong quá trình xây dựng website

- Không hiểu rõ mong muốn của khách hàng

3 Các phương pháp giải quyết vấn đề

- Tái sử dụng và thêm một số chức năng để phù hợp với nghiệp vụ thay đổi

- Tiến hành nhiều cuộc thảo luận để giải quyết vần đề được đưa ra

4 Kết quả đạt được

- Website quản lý việc làm cung cấp nguồn nhân lực cho trường

- Xây dựng được hệ thống dễ dàng bảo trì, phát triển và mở rộng

Trang 4

iii

TÓM TẮT BẰNG TIẾNG ANH

1 Research issues

- Learn about Single page application (Angular), Spring Boot and MongoDB

to solve the problem of service delivery system using API for the job

website of the Business Relations Department

- Learn about job management profession available today From there, there is

an overview of the job management profession

2 Problems arise

- The client side changes some operations during the construction of the website

- Not understanding what the customer wants

3 Problem Solving Methods

- Reuse and add some functionality to accommodate changing business

- Conduct a lot of discussions to solve the problem raised

4 Results achieved

- Job management website provides human resources for the school

- Build a system that is easy to maintain, develop and expand

Trang 5

iv

MỤC LỤC

LỜI CẢM ƠN i

TÓM TẮT BẰNG TIẾNG VIỆT ii

TÓM TẮT BẰNG TIẾNG ANH iii

MỤC LỤC iv

DANH MỤC TỪ VIẾT TẮT viii

DANH MỤC BẢNG ix

DANH MỤC HÌNH ẢNH xii

CHƯƠNG 1 TỔNG QUAN 1

Tính cấp thiết của đề tài 1

Mục đích của đề tài 1

Đối tượng và phạm vi nghiên cứu 2

Kết quả dự kiến đạt được 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

Ngôn ngữ lập trình Java 3

2.1.1 Java và lịch sử phát triển 3

2.1.2 Java Reflection 3

Spring Framework 4

2.2.1 Tổng quan về Spring 4

2.2.2 Lịch sử phát triển 5

2.2.3 Một số khái niệm chính 6

2.2.4 Các module 8

Spring Boot 10

2.3.1 Tổng quan về Spring Boot 10

2.3.2 Tạo một Spring Boot Application 10

RESTful API 11

2.4.1 Giới thiệu 11

2.4.2 Xây dựng RESTful WebService 11

Trang 6

v

Angular 12

2.5.1 Tổng quan về Angular 12

2.5.2 So sánh Angular, ReactJS và VueJS 13

MongoDB 15

2.6.1 Giới thiệu 15

2.6.2 Đặc trưng 15

2.6.3 Ưu điểm 16

2.6.4 Khuyết điểm 17

Các kỹ thuật và thư viện khác 17

2.7.1 Aspose Cells 17

2.7.2 Aspose word 17

2.7.3 Json Web Token 18

2.7.4 Ngx-charts 19

CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 20

Khảo sát hiện trạng 20

3.1.1 Careerlink 20

3.1.2 Topdev 21

3.1.3 So sánh Careerlink và Topdev 24

Xác định yêu cầu 25

3.2.1 Yêu cầu chức năng 25

3.2.2 Yêu cầu phi chức năng 28

CHƯƠNG 4 MÔ HÌNH HÓA YÊU CẦU 29

Định nghĩa các usecase 29

4.1.1 Actor 29

4.1.2 Use case 30

Usecase diagram 35

Đặc tả usecase 36

Trang 7

vi 4.3.1 Usecase Admin quản lý thông tin tuyển dụng (Manage employment

information) 36

4.3.2 Usecase quản lý người tìm việc (Manage job seeker) 39

4.3.3 Usecase quản lý nhà tuyển dụng (Manage employer) 43

4.3.4 Usecase quản lý CV (Manage CV) 46

4.3.5 Usecase ứng tuyển thông tin tuyển dụng (Apply for employment infomation) 49

4.3.6 Usecase hủy ứng tuyển thông tin tuyển dụng (Apply for employment infomation) 50

4.3.7 Usecase nhà tuyển dụng đăng tin tuyển dụng “Post employment information” 51

CHƯƠNG 5 THIẾT KẾ PHẦN MỀM 53

Thiết kế lược đồ tuần tự 53

5.1.1 Lược đồ tuần tự “ứng tuyển việc làm” 53

5.1.2 Lược đồ tuần tự “hủy ứng tuyển việc làm” 54

5.1.3 Lược đồ tuần tự “duyệt CV đã ứng tuyển” 55

5.1.4 Lược đồ tuần tự “lưu thông tin tuyển dụng quan tâm” 56

5.1.5 Lược đồ tuần tự “hủy lưu thông tin tuyển dụng quan tâm” 56

5.1.6 Lược đồ tuần tự “xóa tất cả thông tin tuyển dụng quan tâm” 57

5.1.7 Lược đồ tuần tự “xóa CV” 58

5.1.8 Lược đồ tuần tự “tạo tài khoản sinh viên” 58

5.1.9 Lược đồ tuần tự “cập nhật tài khoản sinh viên” 59

5.1.10 Lược đồ tuần tự “thay đổi trạng thái tài khoản sinh viên” 60

Thiết kế Database 61

5.2.1 Collection – các collection chính 61

5.2.2 Một số collection quản lý khác 76

5.2.3 Document 82

Thiết kế lược đồ lớp 86

Thiết kế giao diện 87

Trang 8

vii

5.4.1 Màn hình client 87

5.4.2 Màn hình admin 101

5.4.3 Màn hình sinh viên 110

5.4.4 Màn hình nhà tuyển dụng 117

CHƯƠNG 6 CÀI ĐẶT VÀ KIỂM THỬ ỨNG DỤNG 123

Cài đặt ứng dụng 123

6.1.1 Thư viện và môi trường phát triển 123

6.1.2 Lệnh cài đặt và chạy chương trình 123

6.1.3 Các bước cài đặt 123

Kiểm thử phần mềm 124

6.2.1 Mục tiêu kiểm thử 124

6.2.2 Chức năng ứng tuyển/ hủy ứng tuyển công việc 124

6.2.3 Chức năng gửi mail hàng loạt 125

CHƯƠNG 7 KẾT LUẬN 126

Kết quả đạt được 126

Ưu điểm và nhược điểm 126

7.2.1 Ưu điểm 126

7.2.2 Nhược điểm 127

7.2.3 Khó khăn 127

Kinh nghiệm đạt được 127

Hướng phát triển trong tương lai 128

TÀI LIỆU THAM KHẢO 129

Trang 9

IoC Inversion of Control

HTTP Hyper Text Transfer Protocol

API Application Programming Interface

Trang 10

ix

DANH MỤC BẢNG

Bảng 2.1 Ưu khuyết điểm của DI 8

Bảng 2.2 Bảng các kiểu MINE trong RESTful API 12

Bảng 3.1 So sánh CareerLink và Topdev 24

Bảng 4.1 Actor 29

Bảng 4.2 Usecase 30

Bảng 4.5 Đặc tả usecase thêm thông tin tuyển dụng 36

Bảng 4.6 Đặc tả usecase cập nhật thông tin tuyển dụng 37

Bảng 4.7 Đặc tả use case tìm kiếm thông tin tuyển dụng 38

Bảng 4.8 Đặc tả usecase thêm mới người tìm việc 40

Bảng 4.9 Đặc tả usecase cập nhật thông tin người tìm việc 41

Bảng 4.10 Đặc tả usecase tìm kiếm người tìm việc 42

Bảng 4.11 Đặc tả usecase thêm nhà tuyển dụng 43

Bảng 4.12 Đặc tả usecase cập nhật nhà tuyển dụng 44

Bảng 4.13 Đặc tả usecase tìm kiếm nhà tuyển dụng 45

Bảng 4.14 Đặc tả usecase thêm mới CV 46

Bảng 4.15 Đặc tả usecase cập nhật CV 47

Bảng 4.16 Đặc tả usecase tìm kiếm CV 48

Bảng 4.17 Đặc tả usecase ứng tuyển thông tin tuyển dụng 49

Bảng 4.18 Đặc tả usecase ứng tuyển thông tin tuyển dụng 50

Bảng 4.19 Đặc tả usecase Nhà tuyển dụng đăng tin tuyển dụng 51

Bảng 5.1 Đặc tả collection CV 62

Bảng 5.2 Đặc tả collection Thông Tin Tuyển Dụng 63

Bảng 5.3 Đặc tả collection Nhà tuyển dụng 65

Bảng 5.4 Đặc tả collection Khoa 66

Bảng 5.5 Đặc tả collection Lĩnh vực 67

Bảng 5.6 Đặc tả collection Ngành đào tạo 67

Bảng 5.7 Đặc tả collection Sinh Viên 68

Bảng 5.8 Đặc tả collection Vị trí công việc 69

Bảng 5.9 Đặc tả collection Thỏa thuận người dùng 69

Bảng 5.10 Đặc tả collection Tài khoản 70

Bảng 5.11 Đặc tả collection Thông tin tuyển dụng quan tâm 70

Bảng 5.12 Đặc tả collection Câu hỏi khảo sát danh nghiệp 71

Bảng 5.13 Đặc tả collection Câu hỏi khảo sát sinh viên 72

Bảng 5.14 Đặc tả collection Kết quả khảo sát sinh viên 73

Bảng 5.15 Đặc tả collection Kết quả khảo sát doanh nghiệp 74

Trang 11

x

Bảng 5.16 Đặc tả collection Tỉnh thành 77

Bảng 5.17 Đặc tả collection Quận huyện 77

Bảng 5.18 Đặc tả collection Confirmation token 78

Bảng 5.19 Đặc tả collection Email template 78

Bảng 5.20 Đặc tả collection Thông tin liên hệ 79

Bảng 5.21 Đặc tả collection MyFile 79

Bảng 5.22 Đặc tả collection Banner 80

Bảng 5.23 Đặc tả collection Side banner 80

Bảng 5.24 Đặc tả collection Quy định 81

Bảng 5.25 Đặc tả Document Hồ sơ ứng tuyển 83

Bảng 5.26 Đặc tả Document Thông tin liên hệ công ty 83

Bảng 5.27 Đặc tả Document Thông tin tuyển dụng sơ lược 84

Bảng 5.28 Đặc tả Document Nhà tuyển dụng sơ lược 84

Bảng 5.29 Đặc tả Document Quá trình học tập 84

Bảng 5.30 Đặc tả Document Quá trình làm việc 85

Bảng 5.31 Đặc tả Document Nơi làm việc 85

Bảng 5.32 Mô tả màn hình đăng ký nhà tuyển dụng 88

Bảng 5.33 Mô tả màn hình đăng ký sinh viên 89

Bảng 5.34 Mô tả màn hình homepage 92

Bảng 5.35 Mô tả màn hình danh sách công việc 93

Bảng 5.36 Mô tả màn hình chi tiết công việc 96

Bảng 5.37 Mô tả màn hình danh sách cv người tìm việc 98

Bảng 5.38 Mô tả màn hình chi tiết CV người tìm việc 100

Bảng 5.40 Danh sách màn hình admin 101

Bảng 5.41 Mô tả màn hình tài khoản nhà tuyển dụng 101

Bảng 5.42 Mô tả màn hình thêm mới tài khoản nhà tuyển dụng 103

Bảng 5.43 Mô tả màn hình cập nhật/xem chi tiết tài khoản nhà tuyển dụng 105

Bảng 5.44 Mô tả màn hình danh email template 107

Bảng 5.45 Mô tả màn hình thêm mới email template 109

Bảng 5.46 Mô tả màn hình sender email 109

Bảng 5.49 Danh sách màn hình sinh viên 110

Bảng 5.50 Mô tả màn hình cập nhật tài khoản sinh viên 111

Bảng 5.51 Mô tả màn hình danh sách danh sách CV sinh viên 112

Bảng 5.52 Mô tả màn hình thêm mới CV sinh viên 115

Bảng 5.53 Mô tả màn hình danh sách công việc đã ứng tuyển 116

Bảng 5.56 Danh sách màn hình nhà tuyển dụng 117

Trang 12

xi

Bảng 5.58 Mô tả màn hình danh sách công việc 118

Bảng 5.59 Mô tả màn hình thêm mới công việc 121

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 123 Bảng 6.2 Danh sách các lệnh cài đặt và chạy chương trình 123

Bảng 6.4 Kiểm thử chức năng ứng tuyển/hủy ứng tuyển công việc 124

Bảng 6.5 Kiểm tra chức năng gửi mail hàng loạt 125

Bảng 7.1 Khó khăn về công nghệ 127

Bảng 7.2 Khó khăn về quy trình thực hiện 127

Trang 13

xii

DANH MỤC HÌNH ẢNH

Hình 3.1 Trang chủ website Topdev 23

Hình 3.2 Chức năng của webiste Topdev 23

Hình 4.1 Usecase quản lý thông tin tuyển dụng 36

Hình 4.2 Usecase add thông tin tuyển dụng 36

Hình 4.3 Update thông tin tuyển dụng 37

Hình 4.4 Use case tìm kiếm thông tin tuyển dụng 38

Hình 4.5 Usecase quản lý người tìm việc 39

Hình 4.6 Usecase thêm người tìm việc 40

Hình 4.7 Usecase cập nhật người tìm việc 41

Hình 4.8 Usecase tìm kiếm người tìm việc 42

Hình 4.9 Usecase quản lý nhà tuyển dụng 43

Hình 4.10 Usecase thêm nhà tuyển dụng 43

Hình 4.11 Usecase cập nhật nhà tuyển dụng 44

Hình 4.12 Usecase tìm kiếm nhà tuyển dụng 45

Hình 4.13 Usecase quản lý CV 46

Hình 4.14 Usecase thêm mới CV 46

Hình 4.15 Usecase cập nhật CV 47

Hình 4.16 Usecase tìm kiếm CV 48

Hình 4.17 Usecase ứng tuyển thông tin tuyển dụng 49

Hình 4.18 Usecase hủy ứng tuyển thông tin tuyển dụng 50

Hình 4.19 Usecase nhà tuyển dụng đăng tin tuyển dụng 51

Hình 5.1 Lược đồ tuần tự "ứng tuyển việc làm" 53

Hình 5.2 Lược đồ tuần tự "hủy ứng tuyển việc làm" 54

Hình 5.3 Lược đồ tuần tự "duyệt CV đã ứng tuyển" 55

Hình 5.4 Lược đồ tuần tự "lưu thông tin tuyển dụng quan tâm" 56

Hình 5.5 Lược đồ tuần tự " hủy lưu thông tin tuyển dụng quan tâm" 57

Hình 5.6 Lược đồ tuần tự “xóa tất cả thông tin tuyển dụng quan tâm” 57

Hình 5.7 Lược đồ tuần tự “xóa CV” 58

Hình 5.8 Lược đồ tuần tự “tạo tài khoản sinh viên” 59

Hình 5.9 Lược đồ tuần tự “cập nhật tài khoản sinh viên” 60

Hình 5.10 Lược đồ tuần tự “thay đổi trạng thái tài khoản sinh viên” 60

Hình 5.11 Database diagram - các collection chính 61

Hình 5.12 Database diagram - một số collection khác 76

Hình 5.13 Database diagram – document 82

Hình 5.14 Sơ đồ lớp 86

Trang 14

xiii

Hình 5.15 Màn hình đăng ký nhà tuyền dụng 87

Hình 5.16 Màn hình đăng ký sinh viên 89

Hình 5.17 Màn hình homepage 91

Hình 5.18 Màn hình danh sách công việc 93

Hình 5.19 Màn hình chi tiết công việc 95

Hình 5.20 Màn hình danh sách cv người tìm việc 97

Hình 5.21 Màn hình chi tiết CV người tìm việc 100

Hình 5.22 Màn hình tài khoản nhà tuyển dụng 101

Hình 5.23 Màn hình thêm mới nhà tuyển dụng 103

Hình 5.24 Màn hình cập nhật/xem chi tiết nhà tuyển dụng 105

Hình 5.25 Màn hình danh sách email template 107

Hình 5.26 Màn hình thêm mới email template 108

Hình 5.27 Màn hình sender email 109

Hình 5.28 Màn hình cập nhật tài khoản sinh viên 111

Hình 5.29 Màn hình danh sách CV sinh viên 112

Hình 5.30 Màn hình thêm mới CV sinh viên 114

Hình 5.31 Màn hình danh sách công việc ứng tuyển 116

Hình 5.32 Màn hình danh sách công việc 118

Hình 5.33 Màn hình thêm mới công việc 120

Hình 6.1 Các thư mục trong “quan-ly-viec-lam” 124

Trang 15

1

CHƯƠNG 1 TỔNG QUAN Tính cấp thiết của đề tài

Từ khóa tìm kiếm việc làm đang là một từ khóa rất là nổi, và chắc hẳn ai trong

chúng ta cũng phải tìm kiếm đến nó Trên mạng có rất nhiều trang web nổi tiếng và

uy tín giúp ta tìm các công việc theo đúng nhu cầu của ta như: timviecnhanh, topcv, , các trang web này hầu hết đều có các chức năng giống nhau như tìm kiếm việc làm, tìm kiếm công ty, ứng tuyển online, các công ty có thể vào đây để tìm các ứng viên cho công ty mình thông qua các CV mà họ viết, ngoài ra các trang web còn chứa rất nhiều tin tức, các mẹo hay, bổ ích liên quan đến tìm việc

Với sự hứng thú với hệ thống như thế này, và hiện tại học tập tại TTCNPM của trường Đại học sư phạm kỹ thuật TPHCM Chúng em quyết định thử thách bản thân tạo ra một hệ thống tương tự với các chức năng trên và bổ sung thêm một số chức năng hữu ích cần thiết

Hệ thống trang web dự tính xây dựng giống như một sợi dây liên kết giữa các nhà tuyển dụng với sinh viên tìm việc của trường Hệ thống cung cấp các chức năng như tìm kiếm việc làm thông qua các từ khóa tên công việc, ngành nghề để giúp cho người dùng có thể tìm kiếm được công việc theo nhu cầu của mình Ngoài ra trang web còn thêm chức năng quản lý các CV của mình và ứng tuyển các CV đấy vào các công việc mà mình ứng tuyển Công ty có thể đăng tuyển các CV các công việc cho công ty mình

Mục đích của đề tài

Đề tài “XÂY DỰNG WEBSITE QUẢN LÝ VIỆC LÀM PHÒNG DOANH NGHIỆP CỦA TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM” đặt ra 2 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:

Vấn đề đầu tiên đưa ra về yếu tố lý thuyết, sinh viên thực hiện cần có kết quả nghiên cứu chuyên môn và hiểu được tổng quan và khả năng ứng dụng của từng thành phần trong mô hình Java Spring Boot và Angular nói chung Với từng thành phần của Java Spring Boot và Angular hiểu xác định được các đặc trưng về nguyên tắc hoạt động, thành phần hoặc mô hình Thư viện được xây dựng dựa trên ngôn ngữ lập trình Javascript đạt được sự phổ biến đến lập trình viên như: Java Spring Boot – xây dựng Server, Angular – xây dựng ứng dụng phía người dùng, MongoDB – cơ sở dữ liệu Song song với việc hiểu về các thành phần tiêu biểu của Java Spring Boot và Angular sinh viên cũng cần phải có thêm tìm hiểu về các thư viện, mã nguồn module giúp ích trong quá trình xây dựng ứng dụng Web thực tế

Trang 16

2 Vấn đề thứ hai của đề tài đặt ra về ứng dụng mô hình Java Spring Boot và Angular vào xây dựng một sản phẩm cụ thể, ở đây là “Website tìm việc làm” Sản phẩm hoàn thành phải là một ứng dụng Web được xây dựng có đầy đủ các thành phần của mô hình Java Spring Boot và Angular và đáp ứng thêm các yêu cầu về ứng dụng tạo CV, ứng tuyển, đăng tin tuyển dụng, , và một số tính năng khác có thể áp dụng trong thực tế cũng như khả năng nâng cấp hoặc tiếp tục phát triển tính năng trong tương lai

Đối tượng và phạm vi nghiên cứu

Đề tài được thực hiện nghiên cứu xoay quanh hai nhóm đối tượng trọng tâm

bao gồm: nhóm đối tượng về kiến thức công nghệ và nhóm đối tượng có nhu cầu tìm việc làm, tuyển dụng nhân sự

Trong đó nhóm đối tượng về kiến thức công nghệ bao gồm 4 đối tượng nghiên cứu bắt buộc là: Spring Boot, thư viện Angular, cơ sở dữ liệu MongoDB Kết hợp thêm trong nhóm đối tượng nghiên cứu về kiến thức công nghệ là một số thư viện Javascript có giá trị ứng dụng như JWT (Json Web Token), charts cũng cần được nghiên cứu cho các ứng dụng về doanh thu cũng như mức độ ưa thích của sản phẩm

Nhóm đối tượng có nhu cầu tìm việc làm, tuyển dụng nhân sự bao gồm kiến thức về kinh nghiệm cũng như các đánh giá về trải nghiệm người dùng trên một trang web về tìm kiếm việc làm cụ thể

Phạm vi nghiên cứu đề ra ở mức độ tổng quát, người thực hiện đề tài hiểu được các kiến thức chung của nội dung nghiên cứu và áp dụng được từng nội dung kiến thức vào sản phẩm thực tế, không đặt nặng các lý thuyết nặng nề không mang tính ứng dụng

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 tìm kiếm việc làm với những kiến thức đã tìm hiểu

Trang 17

[1]

Cú pháp Java được vay mượn nhiều từ C và C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn

Java được khởi đầu bởi James - Gosling và bạn đồng nghiệp ở Sun Microsystems năm 1991 Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi)

do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này

Java được phát hành vào năm 1994 Sau khi Oracle mua lại công ty Sun Microsystems năm 2009 - 2010, Oracle đã mô tả họ là "người quản lý công nghệ Java với cam kết không ngừng để bồi dưỡng một cộng đồng tham gia và minh bạch" Lịch sử phiên bản java:

• Java SE 6 (còn gọi là Mustang), được công bố 11 tháng 12 năm 2006

• Java SE 7 (còn gọi là Dolphin), được bắt đầu từ tháng 8 năm 2006 và công bố ngày 28 tháng 7 năm 2011

[2]

Trang 18

4 Reflection là kĩ thuật rất cần thiết để lấy các thông tin của một kiểu dữ liệu Dựa vào đó ta có thể kích hoạt (gọi các phương thức) hoặc tạo thể hiện của kiểu dữ liệu

đó Một ứng dụng quan trọng của reflection mà chúng ta có thể biết là Java Bean Nhờ đó, các IDE (như NetBeans) hoặc các framework có thể lấy được các thông tin

và thiết lập giá trị cho các đối tượng trong môi trường run-time

Các lớp được dùng trong reflection nằm trong hai package là java.lang và java.lang.reflect Package java.lang.reflect bao gồm ba lớp chính mà chúng ta cần biết là Constructor, Field và Method:

- Class: Lớp này đại diện cho các lớp, interface và chứa các phương thức dùng

để lấy các đối tượng kiểu Constructor, Field, Method

- Accessible Object: Các kiểm tra về phạm vi truy xuất (public, private,

protected) của field, method, constructor sẽ được bỏ qua Nhờ đó chúng ta có thể dùng reflection để thay đổi, thực thi các thành phần này mà không cần quan tâm đến phạm vi truy xuất của nó

- Constructor: Chứa các thông tin về một constructor của lớp

- Field: chứa các thông tin về một field của lớp, interface

- Method: chứa các thông tin về một phương thức của lớp, interface

Hình 2.1 Kiến trúc tổng quát Java Reflection API

Spring Framework

2.2.1 Tổng quan về Spring

Spring framework, hay ngắn hơn là Spring, là một cấu trúc dùng để xây dựng chương trình ứng dụng mã nguồn mở dành cho ngôn ngữ lập trình Java Phiên bản đầu tiên của nó do Rod Johnson viết và đã được ông xuất bản cùng với quyển sách đầu tay Expert One-on-One JavaEE Design and Development (Nhà xuất bản Wrox Press, Tháng 10 năm 2002) [7]

Trang 19

5 Kiến trúc của Spring framework được ra mắt công chúng lần đầu tiên hồi tháng

6 năm 2003 dưới Giấy phép Apache - phiên bản 2.0 Phiên bản 1.0 đánh dấu mốc thành đạt đầu tiên được xuất bản vào tháng 3 năm 2004 và tiếp đó vào tháng 9 năm

2004, tháng 3 năm 2005 [7]

Tuy Spring framework không bắt buộc người ta phải tuân theo một mô hình lập trình cụ thể nào, song nó lan truyền rộng rải trong cộng đồng những người viết chương trình dùng Java, như một hình thức chủ yếu thay thế cho mô hình Enterprise Java Bean Theo thiết kế, bộ framework này giải phóng lập trình viên dùng Java, cho phép

họ nhiều quyền tự do hơn và đồng thời cung cấp một giải pháp tiện lợi, đầy đủ dẫn chứng bằng tài liệu, dễ dàng sử dụng, phù hợp với những thực hành thông dụng trong công nghệ phần mềm

Bên cạnh những đặc trưng nền tảng của Spring framework là những cái có thể dùng được trong bất cứ một chương trình ứng dụng Java nào, rất nhiều các mở rộng

và tiến bộ trong việc kiến tạo các trình ứng dụng dành cho nền tảng mạng web based application) dựa trên nền Java Enterprise cũng tồn tại nữa Spring framework nổi tiếng cũng một phần do chính đặc thù kể trên và được giới thương mại công nhận như một nền tảng kiến trúc có tầm quan trọng trong chiến lược kiến tạo phần mềm

(web-2.2.2 Lịch sử phát triển

Phần đầu tiên của Spring framework ban đầu nguyên được Rod Johnson viết vào năm 2000 Vào năm 2001, những mô hình lập trình cho các trình ứng dụng Web được đại đa số sử dụng đều do Java Servlet API và Enterprise Java Bean cung cấp [7].

Năm 2003 thành lập dự án phát tại Sourceforge để phát triển Spring Sau khi phát triển trên nền tảng ban đầu hơn một năm họ đã phát hành phiên bản đầu tiên (1.0) vào tháng 3 năm 2004

Spring framework đã làm cho những kỹ thuật vốn không được biết đến mấy trở nên những kỹ thuật được mọi người ưa chuộng trong một thời gian ngắn ngủi Một trong Method method = c.getMethod("printHello", String.class); method.invoke(instance, "World"); Hello World 10 những kỹ thuật nổi tiếng hơn cả

là kỹ thuật “đảo ngược quyền điều khiển” (Inversion of Control, IoC)

Năm 2005 cho thấy mức độ hưởng ứng nâng cao hơn những năm trước, nguyên

do cũng vì những phiên bản mới được giới thiệu với những cột mốc đáng kể và những tính năng mới được thêm vào Diễn đàn Spring (Spring Forum) ra đời cuối năm 2004 cũng góp phần không nhỏ trong việc nâng cao tính phổ biến của bộ framework và từ

đó đến nay đã sinh trưởng trở thành một nguồn thông tin quan trọng, giúp đỡ cho người sử dụng

Trang 20

6 Vào tháng 12 năm 2005, hội thảo đầu tiên về Spring Framework đã được tổ chức tại Miami, Florida thu hút 300 nhà phát triển trong 3 ngày và tiếp theo đó cuộc hội thảo ở Antwerp vào tháng 6 năm 2006, thu hút hơn 400 người

2.2.3 Một số khái niệm chính

Hai trong những thành phần chủ chốt và là nền tảng tạo nên sức mạnh của Spring chính là IoC và DI

1.1.1 Inversion of Control (IoC)

IoC Container trong Spring được xây dựng dựa trên nguyên lý Inversion of Control (đảo ngược điều khiển) đã xuất hiện khá lâu trong các mẫu hình thiết kế (design pattern), và được phổ biến rộng rãi nhờ Robert C Martin và Martin Fowler

Khái niệm Control Flow (tạm dịch là luồng thực thi) được sử dụng cho trình tự thực hiện các câu lệnh, chỉ thị hoặc lời gọi hàm trong một chương trình, khi chương trình này thực thi

Do chương trình ngày càng phức tạp, nên các lập trình viên áp dụng phương pháp lập trình hướng đối tượng nhằm phân loại, chia tách các chức năng và gom thành các đối tượng Các lập trình viên còn tạo dựng các thư viện tạo sẵn để có thể sử dụng lại Luồng thực thi của chương trình, trong những tình huống cần xem xét ở mức tổng thể, không còn quan tâm đến các bước thực thi câu lệnh cụ thể nữa, mà chỉ xem xét đến quá trình gọi phương thức của các đối tượng trong ứng dụng cũng như các đối tượng của thư viện dựng sẵn

Các lập trình viên, khi xây dựng ứng dụng từ đầu, đã thực hiện hai nhiệm vụ: trực tiếp điều khiển luồng thực thi của chương trình và xây dựng các chức năng để đáp ứng nghiệp vụ của ứng dụng Thực tế, có nhiều chương trình hoặc bộ phận trong chương trình có luồng thực thi rất giống nhau, chẳng hạn phần tương tác với HTTP trong các ứng dụng web, phần unit testing trong các ứng dụng,… Việc trực tiếp tạo dựng và kiểm soát luồng thực thi của chương trình lặp đi lặp lại khi xây dựng nhiều ứng dụng sẽ làm mất nhiều công sức, chi phí, tạo ra sự nhàm chán và dễ phát sinh lỗi Điều này tạo ra động lực cũng như môi trường để nguyên lý đảo ngược điều khiển nảy nở và phát triển

Trang 21

7

Hình 2.2 Mô hình ứng dụng áp dụng IoC

Như vậy, khái niệm “đảo ngược” ở đây chính là chuyển nhiệm vụ kiểm soát lưu trình thực thi từ ứng dụng cho một thành phần chuyên trách (thường là một thư viện phần mềm khung – framework – dựng sẵn ở bên ngoài) Ứng dụng chính chúng ta quan tâm phát triển không kiểm soát việc điều khiển luồng thực thi nữa, mà chỉ tập trung vào việc định nghĩa chức năng Thư viện phần mềm khung chuyên trách kiểm soát điều khiển sẽ dựa trên mô tả trong cấu hình của ứng dụng để thay mặt ứng dụng điều phối luồng thực thi trong chương trình

Dễ dàng nhận thấy thư viện phần mềm khung này khác với các thư viện thông thường ở chỗ: thư viện thông thường cung cấp các chức năng và chờ được ứng dụng gọi đến, còn thư viện phần mềm khung tạo dựng luồng thực thi và gọi đến các chức năng của ứng dụng

Nói một cách ngắn gọn IoC là một design pattern và tập hợp các kỹ thuật lập trình liên quan, trong đó luồng thực thi của một hệ thống bị đảo ngược so với cách tương tác truyền thống IoC trong Spring cũng hoàn toàn mang ý nghĩa như trên Trong Spring các đối tượng chính để xây dựng ứng dụng thì được quản lý bởi Spring IoC container Và IoC container gọi các đối tượng đó là các bean Một bean chỉ đơn giản là một đối tượng được khởi tạo và quản lý bởi Spring IoC container

1.1.2 Dependency Injection (DI)

Với cách code thông thường, các module cấp cao sẽ gọi các module cấp thấp Module cấp cao sẽ phụ thuộc và module cấp thấp, điều đó tạo ra các dependency Khi module cấp thấp thay đổi, module cấp cao phải thay đổi theo Một thay đổi sẽ kéo theo hàng loạt thay đổi, giảm khả năng bảo trì của code

Trang 22

8

Vì thế DI ra đời, Hiện nay, một số DI container như Unity, StructureMap v…v,

hỗ trợ trong việc cài đặt và áp dụng Dependency Injection vào code, tuy nhiên vẫn có thể gọi chúng là IoC Container, ý nghĩa tương tự nhau [1]

➢ Có thể hiểu Dependency Injection một cách đơn giản như sau:

• Các module không giao tiếp với nhau mà thông qua interface

• Module cấp thấp sẽ implement interface

• Module cấp cao sẽ gọi module cấp thấp thông qua interface

• Việc khởi tạo các module cấp thấp do DI container thực hiện

• Interface Injection: Class cần inject sẽ implement 1 interface Interface này

chứa 1 hàm tên Inject Container sẽ injection dependency vào 1 class thông qua việc gọi hàm Inject của interface đó Đây là cách rườm rà và ít được sử

dụng nhất

➢ Ưu khuyết điểm của DI:

Bảng 2.1 Ưu khuyết điểm của DI

• Giảm sự kết dính giữa các module

• Code dễ bảo trì, dễ thay thế module

• Rất dễ test và viết Unit Test

• Dễ dàng thấy quan hệ giữa các

module (Vì các dependecy đều

được inject vào constructor)

• Khái niệm DI khá “khó tiêu”, các developer mới sẽ gặp khó khăn khi học

• Sử dụng interface nên đôi khi sẽ khó debug, do không biết chính xác module nào được gọi

• Các object được khởi tạo toàn bộ ngay từ đầu, có thể làm giảm performance

• Làm tăng độ phức tạp của code

2.2.4 Các module

Spring được xây dựng với 7 module chính. [8]

Trang 23

9

Hình 2.3 Các module của Spring Framework

Spring Core: Core package là phần cơ bản nhất của Spring, cung cấp những

đặc tính như IoC (Inversion of Control) và DI (Dependency Injection) Khái niệm cơ bản là BeanFactory, một cài đặt của Factory pattern, cho phép “móc nối” sự phụ thuộc giữa các đối tượng trong file cấu hình

Spring Context: Spring context là một file cấu hình để cung cấp thông tin ngữ

cảnh của Spring Spring context cung cấp các service như JNDI access, EJB integration, e-mail, internalization, validation, và scheduling functionality

Spring AOP (Aspect – Oriented Programming): Spring AOP module tích

hợp chức năng lập trình hướng khía cạnh vào Spring framework thông qua cấu hình của nó Spring AOP module cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong bất kỳ ứng dụng nào sử dụng Spring Với Spring AOP chúng ta có thể tích hợp declarative transaction management vào trong ứng dụng mà không cần dựa vào EJB component Spring AOP module cũng đưa lập trình metadata vào trong Spring Sử dụng cái này chúng ta có thể thêm annotation vào source code để hướng dẫn Spring nơi và làm thế nào để liên hệ với aspect

Spring DAO (Data Access Object): Tầng JDBC và DAO đưa ra một cây phân

cấp exception để quản lý kết nối đến database, điều khiển exception và thông báo lỗi được ném bởi vendor của database Tầng exception đơn giản điều khiển lỗi và giảm khối lượng code mà chúng ta cần viết như mở và đóng kết nối Hình 2.6: Các module của Spring framework 15 Module này cũng cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng Spring

Trang 24

10

Spring ORM (Object Relational Mapping): Spring có thể tích hợp với một

vài ORM framework để cung cấp Object Relation tool bao gồm: JDO, Hibernate, OJB và iBatis SQL Maps

Spring Web: Nằm trên application context module, cung cấp context cho các

ứng dụng web Spring cũng hỗ trợ tích hợp với Struts, JSF và Webwork Web module cũng làm giảm bớt các công việc điều khiển nhiều request và gắn các tham số của request vào các đối tượng domain

Spring MVC: MVC Framework thì cài đặt đầy đủ đặc tính của MVC pattern

để xây dựng các ứng dụng Web MVC framework thì cấu hình thông qua giao diện

và chứa được một số kỹ thuật view bao gồm: JSP, Velocity, Tiles và generation of PDF và Excel file

Spring Boot

2.3.1 Tổng quan về Spring Boot

Spring Boot là một module của Spring Framework cung cấp các tính năng RAD (Rapid Aplication Development) để phát triển ứng dụng nhanh Nếu như trước đây, công đoạn khởi tạo một dự án Spring khá vất vả từ việc khai báo các dependency trong file pom.xml cho đến cấu hình bằng XML hoặc annotation phức tạp, thì giờ đây với Spring Boot, chúng ta có thể tạo các ứng dụng Spring một cách nhanh chóng và cấu hình cũng đơn giản hơn

Dưới đây là một số tính năng nổi bật của Spring Boot:

• Có các tính năng của Spring Framework

• Tạo ứng dụng độc lập, có thể chạy bằng java-jar (cho cả java web)

• Cung cấp một loạt các tính năng phi chức năng phổ biến cho các dự án lớn như những trực tiếp Web Server như Tomcat, Jetty, …

• Cấu hình ít, tự động cấu hình bất kỳ khi nào có thể (giảm thời gian viết code, tăng năng xuất)

• Không yêu cầu XML config

• Cung cấp nhiều plugin

• Chuẩn cho Microservices (Cloud support; giảm việc setup, config; các thư viện hỗ trợ…)

2.3.2 Tạo một Spring Boot Application

Java 1.8 trở lên

Gradle 2.3+ hoặc Maven 3.0+

Trang 25

11 Spring Framework 5.x.x.BUILD-SNAPSHOT

IDE hỗ trợ Spring Tool Suit

RESTful API

2.4.1 Giới thiệu

RESTful API là một dạng tiêu chuẩn được sử dụng trong việc thiết kế API cho ứng dụng web để giúp quản lý resource một cách dễ dàng nhất Chủ yếu quản lý các tài nguyên hệ thống như: Tệp văn bản, ảnh, âm thanh, video hoặc dữ liệu động… Trong đó phải kể đến là các tài nguyên được định dạng và được truyền tải thông qua HTTP

Hình 2.4 Cách thức hoạt động RESTful API 2.4.2 Xây dựng RESTful WebService

Quy tắc xây để tạo ra một ứng dụng WebService tuân thủ 4 quy tắc thiết kế cơ bản sau:

1) Sử dụng các pương thức HTTP một cách rõ ràng

• Bạn muốn thực hiện các thao tác trên dữ liệu cần lưu ý các thao tác sau:

• Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST

• Để truy xuất tài nguyên, sử dụng GET

• Để thay đổi trạng thái tài nguyên hoặc cập nhật nó, sử dụng PUT

• Để hủy bỏ hoặc xóa một tài nguyên, sử dụng DELETE

2) Phi trạng thái

• Một đặc điểm của REST là phi trạng thái (stateless), có nghĩa là nó không lưu trữ thông tin của client Chẳng hạn bạn vừa gửi yêu cầu để xem trang thứ 2 của tài liệu, và bây giờ bạn muốn xem trang tiếp theo REST không lưu trữ lại

Trang 26

12 thông tin rằng trước đó nó đã phục vụ bạn Điều đó có nghĩa là REST không quản lý phiên làm việc (Session)

3) Hiển thị cấu trúc thư mục như các URLs

• Rest đưa ra một cấu trúc để người dùng có thể truy cập vào tài nguyên của nó thông qua các URL, tài nguyên ở đây là tất cả những cái mà bạn có thể gọi tên được (Video, ảnh, báo cáo thời tiết,…)

• Một vài nguyên tắc bổ sung để lưu ý trong khi nói về cấu trúc địa chỉ của RESTfull Web Service là:

• Giấu đuôi các tài liệu mở rộng của bản gốc trong máy chủ (.jsp, php, asp) nếu

có, vì vậy bạn có thể giấu một số thứ mà không cần thay đổi địa chỉ URLs

• Để mọi thứ là chữ thường

• Thay thế các khoảng trống bằng gạch chân hoặc gạch nối (một trong hai loại)

• Tránh các chuỗi yêu cầu càng nhiều càng tốt

• Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một đường dẫn, luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi 4) Truyền tải JavaScript Object Notation (JSON), XML hoặc cả hai

• Khi client gửi một yêu cầu tới Web Service nó thường dược truyền tải dưới dạng XML hoặc JSON và thông thường nhận về với hình thức tương tự Đôi khi Client cũng có thể chỉ định kiểu dữ liệu nhận về mà nó mong muốn (JSON hoặc XML, …), các chỉ định này được gọi là các kiểu MINE, nó được gửi kèm trên phần HEADER của request

• Dưới đây là các kiểu MINE phổ biến thường sử dụng với REST service

Bảng 2.2 Bảng các kiểu MINE trong RESTful API

Trang 27

13 Một trong những tính năng chính của Angular 2 là khả năng phát triển cho nhiều nền tảng: web, di động và máy tính để bàn gốc (trong khi AngularJS không có hỗ trợ

di động)

Angular được tạo ra để xây dựng các ứng dụng web động, thường được sử dụng

để tạo các ứng dụng một trang (SPA) Angular là một nền tảng miễn phí và được hàng nghìn nhà phát triển trên khắp thế giới ưa chuộng [9]

2.5.2 So sánh Angular, ReactJS và VueJS

2.5.2.1 Lịch sử phát triển

Angular, được phát triển bởi Google, được phát hành lần đầu tiên vào năm 2010,

là phiên bản lâu đời nhất trong số đó Nó là một khung JavaScript dựa trên TypeScript Một sự thay đổi đáng kể đã xảy ra vào năm 2016 khi phát hành Angular 2 (và việc loại bỏ “JS” khỏi tên ban đầu - AngularJS) Angular 2+ được gọi là Angular Mặc dù AngularJS (phiên bản 1) vẫn được cập nhật, chúng tôi sẽ tập trung thảo luận vào Angular Phiên bản ổn định mới nhất là Angular 7, được phát hành vào tháng 10 năm

3, hiện đang trong giai đoạn tạo mẫu và đang có kế hoạch chuyển sang TypeScript

Trang 28

14

2.5.2.2 Mức độ phổ biến

Hình 2.5 So sánh mức độ phổ biến Angular, ReactJS và VueJS

2.5.2.3 Tóm lại

Angular là framework hoàn thiện nhất trong số các framework, có sự hỗ trợ tốt

về mặt người đóng góp và là một gói hoàn chỉnh Tuy nhiên, đường cong học tập rất dốc và các khái niệm về phát triển trong Angular có thể gây khó khăn cho các nhà phát triển mới Angular là một lựa chọn tốt cho các công ty có đội ngũ lớn và các nhà phát triển đã sử dụng TypeScript

React vừa đủ tuổi để trưởng thành và có số lượng đóng góp khổng lồ từ cộng đồng Nó đang được chấp nhận rộng rãi Thị trường việc làm cho React thực sự tốt

và tương lai cho khung công tác này có vẻ tươi sáng React có vẻ như là một lựa chọn tốt cho những người bắt đầu với các khung JavaScript front-end, các công ty khởi nghiệp và các nhà phát triển thích sự linh hoạt Khả năng tích hợp liền mạch với các khung công tác khác mang lại cho nó một lợi thế lớn cho những ai muốn có một số tính linh hoạt trong mã của họ

Vue là người mới tham gia đấu trường, không có sự hậu thuẫn của một công ty lớn Tuy nhiên, nó đã hoạt động rất tốt trong vài năm qua khi trở thành đối thủ cạnh tranh mạnh mẽ của Angular và React Điều này có lẽ đóng một vai trò nhất định khi rất nhiều gã khổng lồ Trung Quốc như Alibaba và Baidu chọn Vue làm khung JavaScript front-end chính của họ Tuy nhiên, vẫn còn phải xem nó hoạt động như

Trang 29

15 thế nào trong tương lai và người ta có lý do để thận trọng với nó Vue nên là lựa chọn của bạn nếu bạn thích sự đơn giản, nhưng cũng thích sự linh hoạt.

MongoDB hệ quản trị cơ sở dữ liệu mã nguồn mở (open-source) thuộc họ cơ sở

dữ liệu phi quan hệ (NoSQL) [3]

MongoDB được phát triển từ năm 2007 bởi một tổ chức tên là MongoDB Inc

có trụ sở tại New York Tại thời điểm đó MongoDB được phát triển như là một nền tảng dịch vụ (Platform as a services - PAAS) Đến năm 2009 MongoDB đã được chính thức giới thiệu trên thị trường như một máy chủ cơ sở dữ liệu mã nguồn mở (open-source database server) được duy trì và phát triển bởi tổ chức MongoDB Inc Tại thời điểm đó đã có nhiều tổ chức lớn và vừa như SourceForge, Foursquare, eBay

sử dụng MongoDB để phát triển cơ sở dữ liệu của họ

MongoDB được xây dựng theo hướng là một cơ sở dữ liệu hướng đối tượng vì vậy nó không có các ràng buộc toàn vẹn dữ liệu như ở các Cơ sở dữ liệu quan hệ mà cho phép lưu trữ dữ liệu linh hoạt (stores data in flexible) có dữ liệu khác nhau trong cùng một Collection (tương đương với Table ở SQL) Do chính đặc thù này mà MongoDB có thể được sử dụng để lưu các dữ liệu đa dạng và phức tạp mà không bị hạn chế khi có thay đổi về cấu trúc lưu dữ liệu

MongoDB là một cơ sở dữ liệu phân tán vì vậy nó sẽ có những đặc trưng của

cơ sở dữ liệu phân tán như: tính sẵn sàng cao, khả năng mở rộng theo chiều ngang,

Trang 30

16

• Document - tài liệu: là đơn vị cơ bản của dữ liệu trong MongoDB, một document tương đương với một dòng trong bảng của SQL Mỗi một document đều có cấu trúc là một đoạn chuỗi json độc lập

• Collection: là tập hợp các document có các thuộc tính tương tự nhau Collection tương đương với một bảng (Table) trong SQL Điểm khác nhau

rõ rệt nhất ở đây chính là việc bảng trong SQL có cấu trúc được quy định sẵn và dữ liệu vào luôn phải tuân theo cấu trúc đó, còn Collection có thể tiếp nhận tự do mọi document có các thuộc tính khác nhau vào mà không hề phát sinh lỗi

• Database: là các cơ sở dữ liệu độc lập lẫn nhau của MongoDB, một Database của MongoDB bao gồm một hay nhiều Collection và các cài đặt, phân quyền kèm theo Database đó

• _id: là một khóa định danh đặc biệt được quy định tự động bởi MongoDB khi thêm một Document vào Collection _id của bất cứ Document nào đều luôn là duy nhất trong Collection chứa document đó

• Index - chỉ mục: là một cấu trúc dữ liệu thu thập thông tin về các trường (field) trong Document của Collection từ đó mà nó giúp cho các câu truy vấn (query) đến các trường này tăng đáng kể tốc độ truy vấn Tuy nhiên việc tạo thêm các Index cũng làm tăng đáng kể dung lượng bộ nhớ tiêu hao cho Database MongoDB Trường _id là trường chỉ mục luôn luôn được khởi tạo mặc định bởi MongoDB khi thêm mới một Document

• Query - truy vấn: cũng giống như tất cả cơ sở dữ liệu khác, MongoDB hỗ trợ truy vấn dữ liệu và nhà phát triển của cơ sở dữ liệu này cũng đã cung cấp

số lượng lớn các câu lệnh bổ trợ giúp đơn giản hóa việc truy vấn dữ liệu hơn rất nhiều lần so với các ngôn ngữ truy vấn dữ liệu truyền thống mà vẫn đảm bảo được tốc độ truy vấn nhanh

2.6.3 Ưu điểm

Lược đồ dữ liệu linh hoạt, do là cơ sở dữ liệu NoSQL tổ chức dữ liệu theo kiểu Document Database nên có thể tùy ý lưu các Document với các thuộc tính và kích thước Document khác nhau và cùng một Collection của MongoDB

Tốc độ truy vấn dữ liệu nhanh, có thể tăng tốc độ truy vấn dữ liệu ở các trường (field) thông thường bằng cách khởi tạo Index cho trường tương ứng đó

Khả năng mở rộng cơ sở dữ liệu lớn

Phù hợp cho xu hướng Big Data trên toàn thế giới cũng như dễ dàng được lựa chọn với các ứng dụng thời gian thực (real-time)

Trang 31

17 Được hỗ trợ bởi nhiều thư viện Javascript và có thể ứng dụng cho nhiều nền tảng, ngôn ngữ khác nhau

2.6.4 Khuyết điểm

Là cơ sở dữ liệu không có cấu trúc nên không còn các ràng buộc khóa ngoại, khóa chính như cơ sở dữ liệu quan hệ Từ đó các vấn đề về toàn vẹn dữ liệu phải được chuyển đến cho Server ứng dụng xử lý thay Các vấn đề về sai dữ liệu đầu vào thường không được MongoDB cảnh báo do không có ràng buộc nào quy định

Tiêu tốn nhiều tài nguyên trong quá trình xử lý cũng như tiêu tốn bộ nhớ cho việc khởi tạo thêm các Index tăng tốc độ truy vấn

Các kỹ thuật và thư viện khác

2.7.1 Aspose Cells

Aspose.Cells cho Java là một class library để tạo và quản lý các bảng tính Microsoft Excel trong các ứng dụng Java, độc lập với Microsoft Office Automation hoặc các sản phẩm khác

Aspose.Cells for Java là một API xử lý bảng Excel xuất sắc đã cho phép các nhà phát triển Java nhúng khả năng đọc, viết và thao tác các bảng tính Excel từ trong các ứng dụng Java của riêng họ mà không cần dựa vào Microsoft Excel

Aspose.Cells cho Java là một API phong phú, có thể mở rộng và tính năng phong phú, cung cấp nhiều chức năng vượt xa khả năng xuất dữ liệu đơn giản của các thành phần khác có sẵn trên thị trường Aspose.Cells cho Java cung cấp khả năng xuất dữ liệu, định dạng bảng tính đến mức hạt nhất, nhập hình ảnh, tạo biểu đồ, áp dụng và tính toán các công thức phức tạp, luồng dữ liệu Excel và lưu kết quả theo các định dạng khác nhau

2.7.2 Aspose word

Aspose.Words for NET là một class library tiên tiến để thực hiện một loạt các tác vụ xử lý văn bản trong các ứng dụng NET, không cần tự động hóa hoặc các sản phẩm Microsoft Office trên máy chủ phát triển

Aspose.Words for NET là một API xử lý văn bản tiên tiến cho phép bạn thực hiện một loạt các tác vụ xử lý văn bản trực tiếp trong các ứng dụng Java

Aspose.Words for NET hỗ trợ DOC, OOXML, RTF, HTML, OpenDocument, PDF, XPS, EPUB và các định dạng khác Với Aspose.Words có thể xem, tạo, sửa đổi, chuyển đổi, hiển thị và in tài liệu mà không cần sử dụng Microsoft Word

Trang 32

18

2.7.3 Json Web Token

JWT (Json Web Token) là một mã thông báo tiêu chuẩn mở được sử dụng để trao đổi thông tin với các yêu cầu HTTP Thông tin này được xác minh và đánh dấu đáng tin cậy dựa trên signature JWT có nhiều lợi thế hơn các session

• Không có trạng thái (stateless), thông tin không được lưu trữ trên máy chủ

• Dễ phát triển, mở rộng

• Hiệu suất tốt hơn do máy chủ đọc thông tin trong yêu cầu (nếu sử dụng phiên, hệ thống phải truy vấn thông tin trong lưu trữ hoặc cơ sở dữ liệu)

Hình 2.6 Cấu trúc Json web token

Phần Signature sẽ được mã hóa bằng HMAC hoặc RSA

HMAC: Người tạo JWT (người phát hành mã thông báo) và người nhận JWT (người xác minh mã thông báo) đã sử dụng cùng một secret key để mã hóa và kiểm tra

RSA sử dụng 1 cặp khóa, đối tượng khởi tạo JWT sử dụng khóa riêng để mã hóa, bộ thu JWT sử dụng puclic key để kiểm tra

Vì vậy, với HMAC cả hai bên phải chia sẻ một secret key với nhau và JWT bên nhận hoàn toàn có thể tạo ra một mã JWT hợp lệ khác dựa trên khóa bí mật đó Đối với RSA, người nhận sử dụng public key để kiểm tra nhưng không thể khởi tạo JWT mới dựa trên khóa đó Do đó, mã hóa sử dụng RSA giúp bảo mật signature tốt hơn khi chia sẻ JWT với nhiều đối tượng khác nhau

Trong dự án, JWT được áp dụng để xác thực và ủy quyền

Trang 33

19

2.7.4 Ngx-charts

Ngx-chart là thư viện biểu đồ cho Angular, nó bao bọc thư viện JavaScript D3

và sử dụng Angular để kết xuất và tạo hoạt ảnh cho các phần tử SVG Đây là một trong những thư viện biểu đồ phổ biến nhất để phát triển ứng dụng Angular vì nó giúp hiển thị biểu đồ dễ dàng hơn rất nhiều và cung cấp các khả năng khác mà nền tảng Angular mang lại như AoT, Universal, v.v Ngx-chart là một thư viện mạnh mẽ và dễ

sử dụng trong các ứng dụng Angular [7]

Trong dự án, biểu đồ ngx được áp dụng để trình bày dữ liệu thống kê cho trang quản trị

Trang 34

20

CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG VÀ

XÁC ĐỊNH YÊU CẦU Khảo sát hiện trạng

3.1.1 Careerlink

3.1.1.1 Giới thiệu

Được thành lập vào năm 2006, CareerLink.vn đã từng bước trở thành cầu nối vững chắc giữa người lao động và nhà tuyển dụng Chuyên cung cấp dịch vụ tìm kiếm nhân sự quản lý cấp cao, và dịch vụ tuyển dụng trực tuyến Qua đó, nhà tuyển dụng

sẽ hài lòng với việc tìm được ứng viên phù hợp nhu cầu, còn người tìm việc sẽ thỏa mãn với khát vọng vươn tới đỉnh cao sự nghiệp [5]

CareerLink.vn hiện đang là website tuyển dụng có tới 100,000 người truy cập mỗi ngày Với lượng truy cập lớn, dữ liệu hồ sơ ứng viên đa dạng và phong phú đạt trình độ cao, website là công cụ hỗ trợ đắc lực trong công tác tuyển dụng của công

ty Đặc biệt là đối với các đơn vị thường hay tuyển dụng và tuyển dụng nhiều vị trí trong năm thì đây chính là dịch vụ hữu hiệu và khá tiết kiệm chi phí

Đăng tuyển công việc là một công cụ đơn giản và hữu ích cho việc tuyển dụng Với sự hỗ trợ tận tâm, nhiệt tình của bộ phận chăm sóc khách hàng, công việc của bạn sẽ được đăng lên website một cách rõ ràng, nhanh chóng và thuận lợi nhất

3.1.1.2 Chức năng website

Hình 3.1 Website CareerLink

Trang 35

21

Hình 3.2 Chức năng của website Career Link

3.1.1.3 Điểm mạnh

- Giao diện thân thiện, dễ sử dụng

- Có đầy đủ các tính năng để người người tuyển dụng đăng tin và tìm được hồ

sơ ứng viên phù hợp và người dùng dễ dàng tạo CV ứng tuyển công việc

- Tích hợp cơ sở dữ liệu Hồ sơ của CareerLink

- Hỗ trợ đa ngôn ngữ: tiếng anh, tiếng việt

Trang 36

22 Mạng lưới bao gồm tất cả các hoạt động và giá trị mà bất kỳ nhân lực công nghệ nào cũng có thể cần, làm việc cùng và giải trí, bao gồm các sự kiện công nghệ, cộng đồng công nghệ, trang web công nghệ, diễn đàn, v.v Dựa trên mạng lưới này, Topdev

đã đạt được 95% công nghệ các cộng đồng ở Việt Nam

Sau gần 5 năm hoạt động, TopDev đã trở thành:

• Nền tảng tuyển dụng CNTT hàng đầu tại Việt Nam với hơn 2.000 khách hàng và hơn 300.000 hồ sơ Developer

• Đơn vị duy nhất tại Việt Nam giúp xây dựng Thương hiệu Nhà tuyển dụng cho hàng trăm công ty CNTT tại Việt Nam

• Đơn vị uy tín nhất xuất bản các phân tích và báo cáo thị trường CNTT & nhân lực IT tại Việt Nam

• Đơn vị tổ chức của hai sự kiện Công nghệ có ảnh hưởng nhất tại Việt Nam: Vietnam Mobile Day & Vietnam Web Summit

Hình 3.3 Giới thiệu Topdev

Trang 37

23

3.1.2.2 Chức năng website

Hình 3.1 Trang chủ website Topdev

Chức năng chính của trang tìm kiếm việc làm Topdev

Hình 3.2 Chức năng của webiste Topdev

Trang 38

24

3.1.2.3 Điểm mạnh

- Giao diện thân thiện, dễ sử dụng

- Có đầy đủ các tính năng để người người tuyển dụng đăng tin và tìm được hồ

sơ ứng viên phù hợp và người dùng dễ dàng tạo CV ứng tuyển công việc

- Tích hợp cơ sở dữ liệu Hồ sơ của CareerLink

- Hỗ trợ đa ngôn ngữ: tiếng anh, tiếng việt

Gói Regular: 1.490.000 VND

Gói Extra: 2.020.000 VND

Gói Premium: 8.700.000 VND

Chức năng Có đầy đủ chức năng của

trang web tìm việc

Có đầy đủ chức năng của trang web tìm việc

Chất lượng CV Sàng lọc CV trước khi

gửi sang Nhà tuyển dụng, tránh nhận CV rác

Không

Thời hạn sử dụng tin

đăng

01 năm kể từ ngày đặt mua

06 tháng – 01 năm

Trang 39

25

Nguồn CV ứng viên 02 nguồn CV (tin Basic

Plus & Distinction) – Nguồn tự nhiên – Nguồn do TopDev giới thiệu

Nguồn tự nhiên và

Thời gian hiển thị mỗi tin

đăng (đối với gói

Enterprise trở lên)

Tổng: 60 ngày 30 ngày chính thức + 30 ngày bảo hảnh

Trung bình 30 ngày

Xác định yêu cầu

Với kết quả thu thập và kiểm tra các hệ thống hiện tại, giúp chúng em có góc nhìn tổng quát về nghiệp vụ tìm việc làm hiện nay, giúp giải quyết được nhu cầu việc làm cho sinh viên của trường ĐH Sư Phạm Kỹ Thuật TP.HCM và nhà tuyển dụng một cách hiệu quả Hệ thống sẽ bao gồm các phần sau:

• Phần trang admin quản lý xét duyệt các tài khoản sinh viên, quản lý các tin đăng, bài đăng, xem được các báo cáo thống kê

• Phần trang end-user dành cho sinh viên có thể tìm kiếm nhà tuyển dụng, việc làm, lưu việc làm quan tâm, và ứng tuyển việc làm Đối với nhà tuyển dụng có thể đăng tin việc làm và xét duyệt hồ sơ ứng viên

• Các trang xây dựng với giao diện thân thiện, dễ sử dụng, đáp ứng nhanh chóng như cầu của người dùng

3.2.1 Yêu cầu chức năng

3.2.1.1 Yêu cầu chức năng nghiệp vụ

a Người tìm việc

- Quản lý thông tin cá nhân

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

• Chỉnh sửa thông tin cá nhân

- Xem danh sách công việc

- Xem chi tiết công việc

- Xem chi tiết nhà tuyển dụng

Trang 40

26

- Ứng tuyển, hủy ứng tuyển công việc

- Lưu, hủy công việc quan tâm

- Tìm kiếm việc làm, nhà tuyển dụng

b Nhà tuyển dụng

- Quản lý thông tin cá nhân

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

• Cập nhật thông tin cá nhân

• Quên mật khẩu

• Verify tài khoản

- Quản lý tin đăng

• Tạo mới tin đăng

• Xem, sửa, xóa tin đăng

- Xem danh sách CV đã ứng tuyển

- Duyệt, hủy duyệt hồ sơ ứng tuyển

- Xem chi tiết ứng viên

- Tìm kiếm ứng viên

c Người quản trị

- Quản lý tỉnh thành

• Xem danh sách, tìm kiếm tỉnh thành

• Thêm mới, xóa, cập nhật tỉnh thành

- Quản lý quận huyện

• Xem danh sách, tìm kiếm quận huyện

• Thêm mới, xóa, cập nhật quận huyện

- Quản lý quy định

• Xem danh sách, tìm kiếm quy định

• Thêm mới, xóa, cập nhật quy định

- Quản lý thông tin liên hệ

• Xem danh sách, tìm kiếm thông tin liên hệ

• Thêm mới, xóa, cập nhật thông tin liên hệ

- Quản lý ngành

• Xem danh sách, tìm kiếm ngành

• Thêm mới, xóa, cập nhật ngành

- Quản lý khoa

• Xem danh sách, tìm kiếm khoa

• mới, xóa, cập nhật khoa

- Quản lý vị trí công việc

• Xem danh sách, tìm kiếm vị trí công việc

Ngày đăng: 26/12/2022, 14:32

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w