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

(Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm

69 2 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

Tiêu đề Xây Dựng Trang Web Tổng Hợp Việc Làm
Tác giả Trần Phương Nam, Nguyễn Thị Ngọc Trân
Người hướng dẫn TS. Huỳnh Xuân Phụng
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2020
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 69
Dung lượng 1,27 MB

Cấu trúc

  • Chương 1. TỔNG QUAN (17)
    • 1.1. Khảo sát hiện trạng (17)
    • 1.2. Mục tiêu và nhiệm vụ của đề tài (18)
      • 1.2.1. Mục tiêu (18)
      • 1.2.2. Nhiệm vụ (18)
    • 1.3. Công nghệ lập trình (18)
    • 1.4. Phạm vi nghiên cứu (19)
    • 1.5. Phương pháp nghiên cứu (19)
  • Chương 2. CƠ SỞ LÝ THUYẾT (20)
    • 2.1. Spring Framework (20)
      • 2.1.1. Giới thiệu về Spring Framework (20)
      • 2.1.2. Ưu điểm của Spring Framework (20)
      • 2.1.3. Spring Boot (21)
    • 2.2. MySQL (22)
      • 2.2.1. Giới thiệu về MySQL (22)
      • 2.2.2. Ưu điểm của MySQL (22)
      • 2.2.3. Nhược điểm của MySQL (23)
      • 2.2.4. Tại sao chọn MySQL? (23)
    • 2.3. Angular (23)
      • 2.3.1. Giới thiệu về Angular (23)
      • 2.3.2. Angular (23)
      • 2.3.3. Tại sao chọn Angular 9? (24)
    • 2.4. Web crawling (24)
      • 2.4.1. Giới thiệu về web crawling (24)
      • 2.4.2. Web crawling và web scraping (24)
      • 2.4.3. Jsoup (25)
      • 2.4.4. Crawler4j (25)
  • Chương 3. XÁC ĐỊNH YÊU CẦU (27)
    • 3.1. Phân tích bài toán (27)
    • 3.2. Quy trình nghiệp vụ (27)
      • 3.2.1. Các nghiệp vụ của Employer (27)
      • 3.2.2. Các nghiệp vụ của Candidate (30)
    • 3.3. Mô hình hóa chức năng (33)
      • 3.3.1. Danh sách các actor (33)
      • 3.3.2. Sơ đồ use case (33)
      • 3.3.3. Mô tả sơ đồ usecase (34)
      • 3.3.4. Đặc tả một số usecase chính (34)
  • Chương 4. THIẾT KẾ PHẦN MỀM (38)
    • 4.1. Thiết kế kiến trúc (38)
      • 4.1.1. Front-end (39)
      • 4.1.2. Back-end (39)
    • 4.2. Thiết kế dữ liệu (40)
      • 4.2.1. Database schema (40)
      • 4.2.2. Mô tả sơ đồ quan hệ (41)
    • 4.3. Thiết kế lược đồ tuần tư (47)
      • 4.3.1. Xác thưc email (0)
      • 4.3.2. Đăng nhập bằng Facebook, Gmail (48)
      • 4.3.3. Đăng nhập bằng email và mật khẩu (48)
  • Chương 5. THIẾT KẾ GIAO DIỆN (49)
    • 5.1. Screen flow cho ứng dụng bên doanh nghiệp (49)
    • 5.2. Screen flow cho ứng dụng bên ứng viên (50)
    • 5.3. Đặc tả chi tiết màn hình (51)
      • 5.3.1. SCC11. Candidate Screen (53)
      • 5.3.2. SCC05. Manago Job Screen (54)
      • 5.3.3. SCC06. Post Job Screen (55)
      • 5.3.4. SCC08. Manage Account Screen (56)
      • 5.3.5. SCE05. Jobs Screen (58)
      • 5.3.6. SCE06. Employer Screen (60)
      • 5.3.7. SCE07. Manage Profile Screen (61)
  • Chương 6. KẾT QUẢ SO SÁNH, THỰC NGHIỆM, PHÂN TÍCH (62)
    • 6.1. Hệ thống back-end (62)
    • 6.2. Hệ thống front-end (62)
  • Chương 7. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (0)
    • 7.1. Kết quả đạt được (64)
    • 7.2. Hạn chế (65)
    • 7.3. Hướng phát triển (65)
  • TÀI LIỆU THAM KHẢO (66)
  • PHỤ LỤC (68)
    • Chương 3 Bảng 3.1 Danh sách các use case (0)
    • Chương 4 Bảng 4.1 Bảng user (0)
    • Chương 3 Hình 3.1 Lược đồ use case (0)
    • Chương 4 Hình 4.1 Kiến trúc ứng dụng (0)
    • Chương 5 Hình 5.1 Screen flow cho ứng dụng bên doanh nghiệp (0)

Nội dung

TỔNG QUAN

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

Trong bối cảnh công nghệ 4.0 phát triển mạnh mẽ, nhu cầu tìm kiếm việc làm ngày càng gia tăng, do đó việc xây dựng các trang web việc làm trở nên cần thiết và mang lại hiệu quả kinh tế cao.

Với sự gia tăng số lượng người tìm việc và nhu cầu tuyển dụng của doanh nghiệp, việc quảng bá bài đăng tuyển dụng trở nên dễ dàng hơn nhờ công nghệ thông tin Các nhà tuyển dụng có thể nhanh chóng tìm kiếm ứng viên phù hợp, trong khi người tìm việc cũng có thể tìm kiếm công việc theo sở thích, đam mê và kinh nghiệm một cách hiệu quả.

Hiện nay, có nhiều trang web hỗ trợ tìm kiếm việc làm từ những nền tảng lớn như Timviecnhanh đến các trang chuyên biệt như Itviec Tuy nhiên, người tìm việc thường bối rối khi lựa chọn trang web phù hợp và hiệu quả nhất cho nhu cầu của mình Đối với các doanh nghiệp nhỏ mới phát triển, việc tìm kiếm ứng viên cũng trở nên khó khăn do thiếu sức cạnh tranh với các công ty lớn Ngoài LinkedIn, có rất ít trang web tổng hợp thông tin ứng viên, làm cho quá trình tuyển dụng trở nên phức tạp hơn.

Hiện nay, chưa có tập dữ liệu việc làm tổng hợp bằng tiếng Việt để huấn luyện các thuật toán máy học nhằm dự báo nhu cầu việc làm trong tương lai Các mô hình này không chỉ hỗ trợ học sinh, sinh viên có định hướng nghề nghiệp rõ ràng hơn mà còn giúp các cơ sở giáo dục cải tiến chương trình đào tạo phù hợp với nhu cầu thực tế.

Để cung cấp danh sách ứng viên tiềm năng cho doanh nghiệp và thông tin việc làm cho ứng viên một cách hiệu quả, các website việc làm cần giải quyết câu hỏi này Cộng đồng nghiên cứu máy học đang cần một tập dữ liệu đầy đủ về thông tin việc làm để nghiên cứu xu hướng nhu cầu tìm việc.

Mục tiêu và nhiệm vụ của đề tài

Tìm hiểu về công nghệ Spring Framework, MySQL và Angular 9 để phát triển một trang web việc làm phục vụ cho ứng viên và doanh nghiệp, với các chức năng cơ bản như đăng tin tuyển dụng, tìm kiếm việc làm và quản lý hồ sơ ứng viên.

- Cho phép các doanh nghiệp đăng ký và tạo bài đăng tuyển dụng.

- Cho phép các người tìm việc đăng ký và tìm kiếm công việc mong muốn.

Hệ thống gợi ý ứng viên tiềm năng cho doanh nghiệp và các vị trí phù hợp với năng lực của ứng viên Đặc biệt, nó tổng hợp các bài đăng việc làm từ những trang web phổ biến tại Việt Nam như TimViecNhanh, CareerBuilder, Jobsgo, TopCV, và TimViec365, thông qua việc sử dụng thư viện Jsoup và Crawler4j Qua đó, hệ thống xây dựng một tập dữ liệu việc làm phục vụ cho cộng đồng máy học.

Khảo sát tình hình hiện tại của các trang web việc làm cho thấy nhiều thách thức đang tồn tại Dựa trên nghiên cứu và khảo sát, nhóm đã phát triển một hệ thống với giao diện đơn giản và dễ sử dụng, đáp ứng nhu cầu của tất cả người dùng.

Khảo sát và phân tích cách tổ chức dữ liệu từ các trang web việc làm nổi tiếng tại Việt Nam như JobsGo, TopCV, CareerBuilder, Timviecnhanh và Timviec365 Dựa trên kết quả khảo sát, thiết kế hệ quản trị cơ sở dữ liệu nhằm phục vụ hiệu quả cho hệ thống crawler.

Xây dựng một trang web tổng hợp thông tin việc làm từ các nguồn khác, tích hợp hệ thống gợi ý việc làm và ứng viên, đồng thời đảm bảo tính hợp pháp trong việc trích xuất dữ liệu, nhằm cung cấp cho cộng đồng máy học một nguồn dữ liệu việc làm phong phú và đáng tin cậy.

Công nghệ lập trình

The project utilizes the Spring Boot framework for back-end development and MySQL as the database management system For the front-end, Angular 9 is employed alongside additional libraries such as ng-bootstrap and Material Design for Bootstrap Additionally, the team has implemented a web crawler using the Jsoup and Crawler4j libraries.

Phạm vi nghiên cứu

Nhóm nghiên cứu đã tiến hành khảo sát và phân tích các website việc làm phổ biến tại Việt Nam như Timviecnhanh, Timviec365, TopCV, CareerBuilder và Jobsgo, từ đó thiết kế hệ thống cơ sở dữ liệu cho website sử dụng MySQL.

Nhóm đã sử dụng thư viện Crawler4j và Jsoup để thu thập dữ liệu từ các trang web việc làm khác nhau và lưu trữ thông tin vào cơ sở dữ liệu đã được thiết lập.

Using Angular 9 along with design support libraries such as ng-bootstrap and Material Design for Bootstrap for the front end, and the Spring Framework for the back end, the team is developing a comprehensive job portal aimed at connecting job seekers with employers.

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

Nhóm đã thưc hiện đồ án thông qua các phương pháp nghiên cứu sau:

- Tìm hiểu các nghiệp vụ cơ bản của đồ án thông qua các trang web việc làm lớn (TimViec365, TimViecNhanh, Jobsgo, CareerBuilder, TopCV).

- Tìm hiểu trang tổng hợp việc làm Jobstreet

Tìm hiểu về các thư viện và framework đã được áp dụng trong đồ án bằng cách truy cập các trang web lập trình, cũng như khám phá các dự án và thư viện mã nguồn mở trên GitHub.

CƠ SỞ LÝ THUYẾT

Spring Framework

2.1.1 Giới thiệu về Spring Framework

Spring Framework là một framework ứng dụng và bộ chứa đảo ngược điều khiển cho nền tảng Java, có thể áp dụng cho bất kỳ ứng dụng Java nào Nhiều bản mở rộng đã được phát triển để xây dựng ứng dụng web trên nền tảng Java EE Framework này cung cấp giải pháp cho nhiều thách thức kỹ thuật mà các nhà phát triển phần mềm Java và tổ chức phải đối mặt Mặc dù Spring Framework không chỉ gắn liền với Java Enterprise platform, sự tích hợp sâu của nó trong Java EE là yếu tố quan trọng cho sự phổ biến của nó.

Hình 2.1 Cấu trúc Spring Framework

2.1.2 Ưu điểm của Spring Framework

Spring cho phép lập trình viên sử dụng POJOs, giúp đơn giản hóa quá trình phát triển ứng dụng mà không cần phải làm việc với EJB, cấu hình hay các luồng chạy phức tạp Hệ thống của Spring được tổ chức theo kiểu mô-đun, với nhiều gói và lớp, nhưng người dùng chỉ cần tập trung vào những phần cần thiết mà không phải lo lắng về những phần còn lại.

Spring không chỉ sở hữu nhiều tính năng nổi bật mà còn hỗ trợ đa dạng công nghệ như ORM Framework, các framework logging, JEE, và các thư viện lập lịch như Quartz và JDK timer Đặc biệt, Module Web của Spring được xây dựng theo mô hình MVC, cung cấp đầy đủ chức năng để thay thế các web framework khác như Struts.

Spring Boot là một dự án thuộc tầng thực thi của Spring IO Framework, giúp đơn giản hóa quá trình thiết lập và phát triển ứng dụng Spring Với Spring Boot, cấu hình Spring được tối ưu hóa, giảm thiểu đáng kể Ngoài ra, Spring Boot hỗ trợ các bộ chứa nhúng, cho phép các ứng dụng web hoạt động độc lập mà không cần triển khai trên các máy chủ web.

Hình 2.2 Vị trí của Spring Boot trong Spring Framework Ưu điểm 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).

- Nhúng trưc tiếp các ứng dụng server (Tomcat, Jetty…) do đó không cần phải triển khai file WAR.

- 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 suất).

- Không yêu cầu XML config.

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

MySQL

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới, được ưa chuộng bởi các nhà phát triển ứng dụng nhờ vào tốc độ cao, tính ổn định và dễ sử dụng Hệ thống này hoạt động trên nhiều hệ điều hành và cung cấp nhiều hàm tiện ích mạnh mẽ Với khả năng bảo mật cao, MySQL rất phù hợp cho các ứng dụng truy cập cơ sở dữ liệu trên internet Người dùng có thể tải MySQL miễn phí từ trang chủ, với nhiều phiên bản tương thích cho các hệ điều hành như Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris và SunOS.

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ phổ biến, sử dụng ngôn ngữ truy vấn có cấu trúc (SQL) Nó hỗ trợ nhiều ngôn ngữ lập trình như NodeJs, PHP, và Perl, cung cấp nơi lưu trữ thông tin cho các trang web được phát triển bằng những ngôn ngữ này.

MySQL là một cơ sở dữ liệu mạnh mẽ, dễ sử dụng và tương thích với nhiều hệ điều hành, cung cấp tốc độ cao và tính ổn định Với nhiều tính năng bảo mật nâng cao, MySQL là lựa chọn lý tưởng cho các ứng dụng truy cập cơ sở dữ liệu qua Internet Hơn nữa, MySQL hỗ trợ đa dạng các chức năng SQL, đáp ứng đầy đủ nhu cầu của người dùng trong quản trị cơ sở dữ liệu quan hệ.

Khả năng mở rộng và mạnh mẽ: MySQL có thể xử lý rất nhiều dữ liệu và hơn thế nữa nó có thể được mở rộng nếu cần thiết.

MySQL hoạt động hiệu quả và tiết kiệm chi phí nhờ vào việc thiết lập một số tiêu chuẩn, từ đó tăng tốc độ thực thi của hệ thống.

MySQL được thiết kế với các hạn chế chức năng, không nhằm mục đích đáp ứng mọi nhu cầu của ứng dụng Điều này dẫn đến việc MySQL có thể kém tin cậy hơn so với một số hệ quản trị cơ sở dữ liệu quan hệ khác, đặc biệt trong việc xử lý các chức năng như tài liệu tham khảo, giao dịch và kiểm toán.

Dung lượng hạn chế có thể gây khó khăn trong việc truy xuất dữ liệu khi số lượng bản ghi của người dùng tăng lên Để cải thiện tốc độ truy xuất, người dùng cần áp dụng các biện pháp như chia tải database ra nhiều server hoặc sử dụng cache MySQL.

Nhóm quyết định chọn MySQL làm hệ quản trị cơ sở dũ liệu với những lý do sau đây:

MySQL là hệ quản trị cơ sở dữ liệu mà nhóm chúng tôi có nhiều kinh nghiệm nhất, vượt trội hơn so với các hệ quản trị cơ sở dữ liệu khác mà chúng tôi đã từng tiếp xúc và làm việc.

Nhóm đã thiết kế cơ sở dữ liệu dựa trên những lợi ích và ưu điểm mà hệ quản trị cơ sở dữ liệu SQL mang lại, như sự thống nhất và tính toàn vẹn của dữ liệu.

Angular

Angular là một framework web mã nguồn mở dựa trên TypeScript, được phát triển bởi nhóm Angular tại Google cùng với sự hỗ trợ từ cộng đồng Đây là phiên bản viết lại hoàn toàn của AngularJS, mang đến nhiều cải tiến và tính năng mới.

Angular là một nền tảng để xây dưng các ứng dụng mobile application và web application Hiện tại phiên bản mới nhất là Angular 10.

Angular không sử dụng khái niệm "scope" hay controller, mà thay vào đó áp dụng cấu trúc thành phần (component) như một đặc điểm chính trong thiết kế.

- Angular có một expression syntax khác so với AngularJs, sử dung “[ ]” cho property binding và “( )” cho event binding.

- Tính module – đa số các tính năng chính đã chuyển về các module.

- Angular chuyển sang sử dụng ngôn ngữ Typescrpit của Microsoft, trong đó có các tính chất như là static typing và annotation.

Angular 9, phiên bản mới nhất được phát triển bởi Google, mang đến nhiều tính năng cải tiến đáng chú ý Với hỗ trợ lazy loading, data-binding, và pipe, Angular 9 giúp tối ưu hóa hiệu suất và trải nghiệm người dùng Bên cạnh đó, sự đa dạng của các ng module cũng tạo điều kiện thuận lợi cho việc phát triển website một cách hiệu quả.

Việc phân chia thành các thành phần như model, service, và component giúp tạo ra một hệ thống thân thiện và dễ sử dụng Điều này không chỉ làm cho dự án trở nên dễ quản lý mà còn hỗ trợ quá trình triển khai và bảo trì trong tương lai.

Web crawling

2.4.1 Giới thiệu về web crawling

Web crawling là quá trình tự động thu thập và lưu trữ thông tin từ các trang web dưới định dạng phù hợp Chương trình thực hiện nhiệm vụ này được gọi là web crawler.

Khi cần thu thập thông tin từ các trang web, chúng ta thường sử dụng API mà các trang đó cung cấp Tuy nhiên, không phải trang web nào cũng có sẵn API, vì vậy cần áp dụng các kỹ thuật khác để lấy thông tin mà không cần thông qua API.

2.4.2 Web crawling và web scraping

Web crawling và web scraping có những điểm khác nhau sau đây:

Bảng 2.1 So sánh giữa web scraping và web crawling

Web scraping Trích xuất dữ liệu từ nhiều nguồn khác nhau trên web.

Có thể thưc hiện trên bất cứ quy mô nào.

Chống trùng lặp có thể không có.

Cần crawl agent và parser

Jsoup là một thư viện mã nguồn mở trong Java, chuyên dùng để phân tích và xử lý nội dung HTML Thư viện này cung cấp các API hữu ích cho việc truy xuất và thao tác dữ liệu từ URL hoặc các tập tin HTML Jsoup áp dụng các phương thức tương tự như DOM, CSS và JQuery, giúp người dùng dễ dàng lấy và quản lý dữ liệu một cách hiệu quả.

Jsoup bao gồm nhiều class, tuy nhiên có 3 class quan trọng nhất, bao gồm:

Crawler4j là một công cụ web crawler mã nguồn mở dành cho Java, cho phép người dùng dễ dàng thu thập thông tin từ các trang web Với Crawler4j, bạn có thể thiết lập một web crawler đa luồng chỉ trong vài phút Để bắt đầu sử dụng, bạn cần thêm dependency vào file pom.xml của dự án.

Một web crawler sẽ cần có hai class chính:

Lớp Crawler sẽ mở rộng giao diện WebCrawler của Crawler4j, có nhiệm vụ xác định các URL cần được crawl và xử lý các trang đã tải xuống Hai hàm chính được ghi đè là shouldVisit, giúp quyết định xem URL có được crawl hay không, và visit, được gọi ngay sau khi nội dung của URL đã được tải xuống Người dùng có thể dễ dàng truy xuất thông tin từ trang đã tải, bao gồm URL, văn bản, liên kết và mã HTML.

- Controller class: định nghĩa các seed của crawler, thư mục mà dữ liệu crawl được sẽ được lưu trữ và số lượng các luồng song song.

XÁC ĐỊNH YÊU CẦU

Phân tích bài toán

Trong bối cảnh hiện nay, với sự xuất hiện của nhiều trang web tuyển dụng việc làm, người tìm việc gặp khó khăn trong việc lựa chọn công việc phù hợp Việc phải chuyển đổi giữa các trang web khác nhau và thực hiện tìm kiếm từ đầu khiến họ bối rối, đặc biệt khi các bài đăng có thể tương tự nhưng lại có điều khoản khác nhau Để giải quyết vấn đề này, nhóm đã phát triển một ứng dụng tuyển dụng, cho phép nhà tuyển dụng đăng bài và người tìm việc dễ dàng tìm kiếm công việc mong muốn Ứng dụng không chỉ tổng hợp các bài đăng từ các trang web khác mà còn gợi ý những công việc phù hợp với năng lực và yêu cầu của ứng viên.

Quy trình nghiệp vụ

3.2.1 Các nghiệp vụ của Employer

5.2.1.1.1 Sơ đồ luồng dữ liệu

D1: Các nghiệp vụ xem thông tin doanh nghiệp, chỉnh sửa thông tin, upload logo company

D3: Thông tin tài khoản nhà tuyển dụng

D6: Biểu mẫu nghiệp vụ được chọn

B2: Lấy D3, xuất D3 ra màn hình

3.2.1.4.1 Sơ đồ luồng dữ liệu

D1: Các nghiệp vụ: Xem bài đăng, Thêm bài đăng, Sửa bài đăng, Xóa bài đăng

D6: Biểu mẫu nghiệp vụ được chọn.

B2: Lấy D3, xuất D3 ra màn hình

3.2.1.3 Quản lý hồ sơ ứng viên

3.2.1.8.1 Sơ đồ luồng dữ liệu

D1: Các nghiệp vụ Xem hồ sơ, Lưu hồ sơ, Xóa hồ sơ.

D3: Danh sách hồ sơ (id_cdt_profile, id_job_profile, applied_date, status).

D6: Biểu mẫu nghiệp vụ được chọn.

B2: Lấy D3, xuất D3 ra màn hình.

3.2.2 Các nghiệp vụ của Candidate

3.2.2.1.1 Sơ đồ luồng dữ liệu

D1: Các nghiệp vụ quản lý thông tin tài khoản như thông tin cá nhân, kinh nghiệm làm việc, học vấn, upload CV

D3: Thông tin tài khoản của ứng viên

D6: Biểu mẫu nghiệp vụ được chọn

B2: Lấy D3, xuất D3 ra màn hình

3.2.2.4.1 Sơ đồ luồng dữ liệu

D1: Candidate chọn bài đăng cần xem thông tin

D3: Danh sách bài đăng trong CSDL:

D6: Xuất danh sách bài đăng cho candidate xem.

B1: Hiện các bài đăng cho candidate lưa chọn.

B2: Lấy thông tin bài đăng candidate đã chọn

B4: Xuất thông tin bài đăng đấy lên cho candidate xem.

3.2.2.6.1 Sơ đồ luồng dữ liệu

D1: Candidate chọn nhà tuyển dụng cần xem thông tin

D3: Danh sách nhà tuyển dụng trong CSDL:

- Danh sách nhà tuyển dụng.

D6: Xuất danh sách nhà tuyển dụng và việc làm theo nhà tuyển dụng cho candidate xem.

B1: Hiện các nhà tuyển dụng cho candidate lưa chọn.

B2: Lấy thông tin nhà tuyển dụng và bài đăng theo nhà tuyển dụng candidate đã chọn B3: Mở CSDL.

B4: Xuất thông tin nhà tuyển dụng bài đăng đấy lên cho candidate xem.

Mô hình hóa chức năng

- Guest: người dùng cơ bản với vai trò candidate

- Eguest: người dùng cơ bản với vai trò employer

- Candidate: người tìm việc, ứng viên.

Hình 3.1 Lược đồ use case

3.3.3 Mô tả sơ đồ usecase

Bảng 3.1 Danh sách các use case

UC07 Save Favorite Job Post

UC08 Remove Saved Job Post

3.3.4 Đặc tả một số usecase chính

Bảng 3.2 Usecase “Sign Up” (UC01)

4 Hệ thống sẽ thông báo tạo tài khoảng thành công, điều hướng người dùng đến trang chủ.

Bảng 3.3 Usecase “Sign In” (UC02)

Bảng 3.4 Usecase “Save Potential Candidate” – UC06

Bảng 3.5 Usecase “Search Job Post” – UC04

2 Người dùng nhấn nút “Search”

3 Hệ thống sẽ hiện thị những bài đăng phù hợp với những thông tin mà người dùng cung cấp.

THIẾT KẾ PHẦN MỀM

Thiết kế kiến trúc

Hình 4.1 Kiến trúc ứng dụng

Về mặt kiến trúc, hệ thống sẽ gồm ba phần chính:

Phần front-end bao gồm ba thành phần chính: khách (gồm ứng viên và doanh nghiệp), ứng viên và doanh nghiệp Khi người dùng thực hiện bất kỳ thao tác nào, Angular sẽ gọi các REST API để truy vấn và hiển thị dữ liệu trên giao diện.

Phía back end, server phản hồi các API RESTful từ client bằng cách kết nối đến cơ sở dữ liệu MySQL, thực hiện truy vấn để lấy dữ liệu và trả về cho giao diện người dùng.

The crawler extracts job information and data from various job websites such as Career Builder, TimViecNhanh, Jobsgo, Timviec365, and TopCV by utilizing seed URLs It then crawls the data based on selected HTML selectors and stores the information in a database.

4.1.1 Front-end Được xây dưng với Angular 9, sử dụng 2 thư viện bổ trợ là MDB và ng-bootstrap. Cấu trúc của phần front-end chính bao gồm các thành phần sau đây:

- Thư mục _helpers: chứa phần auth của ứng dụng

- Thư mục _models: chứa các class của ứng dụng, bao gồm các model của candidate, employer

- Thư mục services: chứa các service của candidate, employer, login social account.

- Thư mục components: chứa các component của candidate, employer, eguest, guest, sử dụng lazy loading

- Thư mục shared: các components và các services dùng chung, shared module

4.1.2 Back-end Được xây dưng với framework Spring Boot

Cấu trúc của phần back-end chính bao gồm các thành phần sau đây:

- config: package chứa các cấu hình của ứng dụng.

- constraint: package chứa các định nghĩa của các constraint annotation do nhóm tư định nghĩa.

- controller: package chứa các controller xử lý các request từ bên client.

- dao: package chứa các DAO (data access object).

- dto: package chứa các DTO (data transfer object).

- event: package xử lý các luồng sư kiện.

- exception: package xử lý các ngoại lệ (exception) xảy ra.

- model: package chứa các định nghĩa của các cấu trúc mô hình.

- payload: package chứa các định nghĩa của payload.

- repository: package chứa các cấu trúc dữ liệu và xử lý các query truy xuất dữ liệu từ CSDL.

- security: package chứa các cấu hình an ninh, xác thưc người dùng.

- util: package xử lý những nghiệp vụ khác.

Cấu trúc của web crawler gồm các thành phần chính:

- CrawlerController.java: khởi tạo và cấu hình các controller của crawler.

- CrawlerFactory.java: khởi tạo kết nối giữa CSDL với hệ thống crawler.

- MyWebCrawler.java: cấu hình filter các seed đã được thêm vào các controller và thưc hiện parse HTML để lấy những thông tin cần thiết lưu vào CSDL.

- Package service: xử lý các query lọc các thông tin, nội dung đã parse ở

MyWebCrawler.java và cập nhật trên CSDL.

Thiết kế dữ liệu

4.2.2 Mô tả sơ đồ quan hệ

Bảng 4.12 Bảng password_reset_token

Bảng 4.15 Bảng saved_job_post

Bảng 4.19 Bảng candidate_job_type

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

4.3.2 Đăng nhập bằng Facebook, Gmail

Hình 4.4 Đăng nhập bằng Facebook 4.3.3 Đăng nhập bằng email và mật khẩu

Hình 4.5 Đăng nhập bằng email và mật khẩu

THIẾT KẾ GIAO DIỆN

Screen flow cho ứng dụng bên doanh nghiệp

Hình 5.1 Screen flow cho ứng dụng bên doanh nghiệp Bảng 5.1 Mô tả screen flow ứng dụng bên doanh nghiệp

Screen flow cho ứng dụng bên ứng viên

Bảng 5.2 Mô tả screen flow ứng dụng bên ứng viên

Đặc tả chi tiết màn hình

Layout cho các màn hình Candidate Screen (SCC11), Manage Job Screen (SCC05), Post Job Screen (SCC06), Manage Account Screen (SCC08):

Hình 5.3 Header layout candidate Bảng 5.3 Mô tả layout

Hình 5.4 Layout màn hình candidate Bảng 5.4 Mô tả màn hình candidate

Hình 5.5 Layout màn hình Manage Job Post Bảng 5.5 Mô tả màn hình Manage Job Post

Hình 5.6 Layout màn hình Post Job Bảng 5.6 Mô tả màn hình Post Job

Hình 5.7 Layout màn hình Manage Account Bảng 5.7 Mô tả màn hình Manage Account

Layout cho các màn hình Jobs Screen (SCE05), Employer Screen (SCE06), Manage Profile Screen (SCE07):

Hình 5.8 Layout header của Employer Screen

Bảng 5.8 Mô tả header của Employer

Bảng 5.9 Mô tả màn hình Jobs Screen

Hình 5.10 Layout Employer Screen Bảng 5.10 Mô tả màn hình Employer

Hình 5.11 Layout Manage Profile Bảng 5.11 Mô tả màn hình Manage Profile

KẾT QUẢ SO SÁNH, THỰC NGHIỆM, PHÂN TÍCH

Hệ thống back-end

Hệ thống back end cung cấp các API cần thiết để xây dựng một website việc làm, phục vụ cho hai nhóm người dùng chính: ứng viên và doanh nghiệp, với các chức năng cơ bản đáp ứng nhu cầu của cả hai bên.

Xem thông tin việc làm và doanh nghiệp bao gồm dữ liệu được nhập từ cơ sở dữ liệu cũng như dữ liệu được thu thập từ các trang web khác.

 Xem thông tin ứng viên

 Các chức năng quản lý tài khoản, quản lý việc làm, lưu hồ sơ, lưu việc làm

- Ngoài ra còn cung cấp hệ thống gợi ý việc làm và ứng viên cho người tìm việc và nhà tuyển dụng.

- Xây dưng hệ thống crawler tổng hợp cơ sở dữ liệu thông tin việc làm

Hệ thống front-end

Hệ thống ở front end được tư xây dưng trên nền tảng Angular 9, sử dụng framework hỗ trợ Material Design for Bootstrap và ng-bootstrap, được responsive đến 90% Bao gồm

4 actor chính với các chức năng sau:

Guest (Khách với vai trò ứng viên):

- Đăng nhập (Local account, Facebook, Gmail)

- Xác thưc tài khoản qua email sau khi đăng kí

- Đặt lại mật khẩu qua email

- Xem danh sách việc làm

Eguest (Khách với vai trò employer):

- Đặt lại mật khẩu qua email

- Xem danh sách việc làm (local jobs, crawled jobs, hot jobs)

- Xóa việc làm đã lưu

- Xem danh sách nhà tuyển dụng

- Xem lịch sử tài khoản

- Quản lý tài khoản (profile cá nhân, kinh nghiệm làm việc, học vấn)

- Xem số lượt nhà tuyển dụng xem và lưu profile

- Cài đặt sở thích việc làm

- Gợi ý việc làm dưa trên sở thích ứng viên.

- Xem danh sách ứng viên

- Xóa ứng viên đã lưu

- Quản lý profile nhà tuyển dụng

- Upload logo nhà tuyển dụng

- Xem lịch sử tài khoản

- Gợi ý ứng viên dưa trên danh sách việc làm đã đăng.

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

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

Sau thời gian nghiên cứu và thực hiện, đề tài “Xây dựng trang web tổng hợp việc làm” đã đạt được những thành quả đáng kể, đáp ứng 90% yêu cầu đề tài với các mục tiêu cụ thể.

- Tìm hiểu các kiến thức cơ bản về Spring Framework, Spring Boot, MySQL, Angular 9 để xây dưng ứng dụng.

- Tìm hiểu các thư viện hỗ trợ xây dưng web crawler: Crawler4j, Jsoup.

- Xây dưng được trang web tổng hợp việc làm phục vụ cho ứng viên và nhà tuyển dụng bao gồm các chức năng cơ bản:

 Cho phép các doanh nghiệp đăng ký, tạo bài đăng tuyển dụng, xem hồ sơ và lưu hồ sơ ứng viên

 Cho phép người tìm việc có thể tìm được nhiều bài đăng tuyển dụng trên nhiều website khác nhau.

 Thống kê lượt view, lượt save, lịch sử tài khoản.

 Gợi ý (recommend) những ứng viên tiềm năng dành cho doanh nghiệp và những công việc, vị trí phù hợp với năng lưc dành cho ứng viên.

 Thống kê việc làm dưa trên các tiêu chí việc làm hot nhất theo ngành nghề, việc làm hot nhất theo lượt view

Web crawler là công cụ quan trọng trong việc thu thập dữ liệu từ internet, giúp xây dựng hệ thống crawler hiệu quả Qua đó, chúng ta có thể tạo ra tập dữ liệu việc làm phong phú, phục vụ cho việc áp dụng các thuật toán máy học trong tương lai Việc tìm hiểu và phát triển hệ thống crawler không chỉ nâng cao khả năng thu thập thông tin mà còn mở ra nhiều cơ hội cho các ứng dụng công nghệ sau này.

Ngoài những mục tiêu trên, nhóm còn đạt được những thành quả sau:

- Hỗ trợ đăng nhập và đăng ký tài khoản người dùng bằng Gmail và Facebook.

- Xác thưc tài khoản sau khi đăng ký trên hệ thống. Ưu điểm của hệ thống:

Hệ thống được xây dựng với giao diện thân thiện và dễ sử dụng, nhờ vào nghiên cứu tỉ mỉ trên các website việc làm lớn Người dùng có thể đăng ký tài khoản thông thường hoặc đăng nhập dễ dàng qua các mạng xã hội như Gmail và Facebook, mang lại sự tiện lợi tối đa Đặc biệt, tính bảo mật được ưu tiên hàng đầu với việc mã hóa mật khẩu người dùng bằng phương pháp bcrypt.

Thông tin về nhà tuyển dụng trên hệ thống được kết hợp từ dữ liệu đăng ký trên địa phương và nguồn dữ liệu phong phú từ các website việc làm khác, đảm bảo tính hợp pháp Điều này giúp người tìm việc dễ dàng tìm kiếm công việc phù hợp, giải quyết vấn đề mà nhiều website hiện nay đang gặp phải Ngoài ra, nguồn dữ liệu thu thập được cũng rất lớn, đáp ứng nhu cầu đào tạo và dự đoán xu hướng việc làm trong tương lai cho cộng đồng học máy.

Việc lựa chọn các framework mạnh mẽ và phù hợp ngay từ đầu giúp website có khả năng mở rộng cao và dễ dàng bảo trì trong quá trình phát triển sau này.

Hạn chế

Trong quá trình thực hiện đồ án, không thể tránh khỏi một số hạn chế Do đó, website cần cải thiện một số tính năng để nâng cao hiệu quả và trải nghiệm người dùng.

- Chưa hỗ trợ chức năng tìm kiếm ứng viên và doanh nghiệp.

- Hệ thống crawler chưa hỗ trợ crawl nhiều nguồn cùng một lúc.

- Chưa hỗ trợ crawl những trang web mà không thể parse HTML chứa script Java.

- Chức năng gợi ý cần phải được hoàn thiện hơn do có thể gợi ý không chính xác.

Hướng phát triển

Sau khi thưc hiện đồ án, nhóm có một số điểm để khắc phục những hạn chế và hoàn thiện, phát triển hệ thống:

- Xây dưng hệ thống quản lý website.

- Hoàn thiện hệ thống crawler, cho phép crawl nhiều trang cùng một lúc.

- Hỗ trợ tư vấn, giải đáp thắc mắc của người dùng.

- Hoàn thiện chức năng gợi ý việc làm và ứng viên.

- Xây dưng thuật toán máy học cho tập dữ liệu thu thập được.

Ngày đăng: 20/12/2021, 06:14

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Tổng quan về Spring Framework (ngày truy cập: 28/06/2020) https://viblo.asia/p/tong-quan-ve-spring-framework-YWOZryEyKQ0[2]Giới thiệu về Spring Framework (ngày truy cập: 22/06/2020) https://kipalog.com/posts/Gioi-thieu-Spring-Framework Link
[3] MySQL là gì? Hướng dẫn toàn tập về MySQL (ngày truy cập: 23/06/2020) https://wiki.matbao.net/mysql-la-gi-huong-dan-toan-tap-ve-mysql/ Link
[4] Web crawling với thư viện BeautifulSoup (ngày truy cập: 23/06/2020) https://kipalog.com/posts/Web-crawling-voi-thu-vien-BeautifulSoup Link
[5] Phân biệt Web Crawling và Web Scraping (ngày truy cập: 25/06/2020) http://itechseeker.com/tutorials/web-scraping/phan-biet-web-crawling-va-web-scraping/ Link
[6] Hướng dẫn phân tích nội dung HTML sử dụng thư viện Jsoup (ngày truy cập: 25/06/2020)https://gpcoder.com/3231-huong-dan-phan-tich-noi-dung-html-su-dung-thu-vien-jsoup/Tiếng Anh Link
[1] Angular (ngày truy cập: 30/06/2020) https://angular.io/docs Link
[2] ng-bootstrap (ngày truy cập: 30/06/2020) https://ng-bootstrap.github.io/#/getting-started Link
[3] Material design for bootstrap (ngày truy cập: 30/06/2020) https://mdbootstrap.com/docs/angular/ Link
[4] Eugen Paraschiv, REST Query Language with Spring Data JPA Specifications (ngày truy cập: 05/04/2020)https://www.baeldung.com/rest-api-search-language-spring-data-specifications Link
[5] Amy DeGregorio, A Guide to Crawler4j (ngày truy cập: 10/05/2020) https://www.baeldung.com/crawler4j Link
[6] Yasser Ganjisaffar, crawler4j (ngày truy cập: 13/05/2020) https://github.com/yasserg/crawler4j Link
[7] Jonathan Hedley, jsoup cookbook (ngày truy cập: 11/05/2020) https://jsoup.org/cookbook/ Link

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Cấu trúc Spring Framework - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Hình 2.1 Cấu trúc Spring Framework (Trang 20)
Hình 2.2 Vị trí của Spring Boot trong Spring Framework - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Hình 2.2 Vị trí của Spring Boot trong Spring Framework (Trang 21)
5.2.1.1.1. Sơ đồ luồng dữ liệu - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
5.2.1.1.1. Sơ đồ luồng dữ liệu (Trang 27)
3.2.1.4.1. Sơ đồ luồng dữ liệu - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
3.2.1.4.1. Sơ đồ luồng dữ liệu (Trang 28)
3.2.2.4.1. Sơ đồ luồng dữ liệu - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
3.2.2.4.1. Sơ đồ luồng dữ liệu (Trang 31)
3.3.2. Sơ đồ use case - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
3.3.2. Sơ đồ use case (Trang 33)
Bảng 3.1 Danh sách các use case - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Bảng 3.1 Danh sách các use case (Trang 34)
Bảng 3.5 Usecase “Search Job Post” – UC04 - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Bảng 3.5 Usecase “Search Job Post” – UC04 (Trang 36)
Hình 4.1 Kiến trúc ứng dụng - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Hình 4.1 Kiến trúc ứng dụng (Trang 38)
Hình 4.2 Database schema - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Hình 4.2 Database schema (Trang 40)
Bảng 4.2 Bảng candidate - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Bảng 4.2 Bảng candidate (Trang 41)
Bảng 4.1 Bảng user - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Bảng 4.1 Bảng user (Trang 41)
Bảng 4.3 Bảng employer - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Bảng 4.3 Bảng employer (Trang 42)
Bảng 4.4 Bảng job_post - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Bảng 4.4 Bảng job_post (Trang 42)
Bảng 4.7 Bảng confirmationtoken - (Đồ án tốt nghiệp) xây dựng trang web tổng hợp việc làm
Bảng 4.7 Bảng confirmationtoken (Trang 43)

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

TÀI LIỆU LIÊN QUAN

w