GIỚI THIỆU CÔNG NGHỆ SỬ DỤNG
ReactJS [1]
ReactJS là một thư viện JavaScript phổ biến và mạnh mẽ được sử dụng cho việc xây dựng giao diện người dùng (UI) động và tương tác trên nền web Được phát triển bởi Facebook, ReactJS cho phép bạn xây dựng các ứng dụng web độc lập, tái sử dụng và dễ bảo trì.
ReactJS sử dụng mô hình component, trong đó mọi thành phần giao diện đều được xem như các "components" riêng biệt Các components có thể được xếp chồng lên nhau để tạo thành các giao diện phức tạp và có thể tái sử dụng lại trong nhiều phần của ứng dụng Điều này giúp tăng tính module và sự linh hoạt trong quá trình phát triển.
Một điểm đáng chú ý của ReactJS là khả năng quản lý trạng thái (state) của ứng dụng ReactJS cung cấp một cách tiếp cận hiệu quả để quản lý và cập nhật trạng thái của các components, giúp bạn xây dựng giao diện động và phản hồi nhanh chóng với các thay đổi trong dữ liệu.
ReactJS cũng có cộng đồng phát triển mạnh mẽ, với nhiều tài liệu, công cụ và các thư viện bổ trợ khác nhau Các công cụ như React Router cho điều hướng, Redux cho quản lý trạng thái toàn cục, và Axios cho gửi yêu cầu HTTP là chỉ một số ví dụ.
NodeJS [2]
Node.js là một môi trường chạy code JavaScript phía server Dựa trên JavaScript Engine của Google Chrome, Node.js cho phép xây dựng các ứng dụng máy chủ hiệu quả, linh hoạt và có khả năng mở rộng.
Với Node.js, bạn có thể viết JavaScript để xử lý các tác vụ máy chủ như xây dựng API, quản lý tệp tin, xử lý yêu cầu HTTP, và tương tác với cơ sở dữ liệu. Node.js cung cấp các công cụ và thư viện phong phú để giúp bạn xây dựng các ứng dụng web, dịch vụ web và ứng dụng phần mềm phức tạp.
Một trong những lợi ích lớn của Node.js là kiến trúc không chặn (non- blocking architecture), cho phép xử lý đa luồng hiệu quả và đồng thời xử lý hàng ngàn kết nối mà không gây tắc nghẽn Điều này giúp tăng hiệu suất và khả năng mở rộng của ứng dụng, đồng thời cung cấp trải nghiệm đáng tin cậy cho người dùng.
Ngoài ra, Node.js có một hệ sinh thái phát triển mạnh mẽ với hàng ngàn các module và gói mã nguồn mở có sẵn thông qua NPM (Node Package Manager) Bạn có thể sử dụng NPM để tìm kiếm, cài đặt và quản lý các gói phần mềm từ cộng đồng, giúp nâng cao năng suất và tiết kiệm thời gian phát triển.
ExpressJS [3]
Express.js là một framework web phía máy chủ được xây dựng dựa trên Node.js Với Express.js, bạn có thể nhanh chóng và dễ dàng xây dựng các ứng dụng web và API mạnh mẽ
Express.js tập trung vào việc tạo ra các ứng dụng web đơn giản, nhẹ nhàng và linh hoạt Nó cung cấp một cách tiếp cận đơn giản để định nghĩa các tuyến đường (routes), xử lý yêu cầu và phản hồi, quản lý trạng thái và gửi dữ liệu đến và từ cơ sở dữ liệu
Với cú pháp rõ ràng và hướng dẫn tốt, Express.js giúp bạn nhanh chóng xây dựng các ứng dụng web linh hoạt và dễ bảo trì Nó cho phép bạn tạo các middleware tùy chỉnh để xử lý các yêu cầu trung gian, kiểm soát quyền truy cập và thực hiện các chức năng phụ trợ khác.
Express.js cũng có một cộng đồng phát triển đông đảo và hệ sinh thái mở rộng với nhiều middleware và gói mở rộng hữu ích Bạn có thể sử dụng các middleware như Body-parser, Cookie-parser, và Passport để giúp xử lý dữ liệu và xác thực.
Redux [4]
Redux là một thư viện quản lý trạng thái (state management) phổ biến trong ứng dụng web phát triển bằng JavaScript Nó giúp bạn quản lý trạng thái ứng dụng một cách dễ dàng và hiệu quả.
Redux sử dụng mô hình quản lý trạng thái theo kiểu "single source of truth" (nguyên tắc duy nhất một nguồn thông tin đúng đắn) Trạng thái của toàn bộ ứng dụng được lưu trữ trong một cấu trúc dữ liệu duy nhất gọi là "store" Mọi thay đổi trạng thái đều phải thông qua các "actions" (hành động) và được xử lý bởi các
Với Redux, bạn có thể tách biệt trạng thái và logic ứng dụng khỏi giao diện người dùng Điều này giúp tạo ra các ứng dụng dễ bảo trì, kiểm thử và tái sử dụng mã Bạn cũng có thể dễ dàng theo dõi và gỡ lỗi các thay đổi trạng thái của ứng dụng trong thời gian thực.
Redux không bị ràng buộc với bất kỳ framework hoặc thư viện giao diện người dùng cụ thể nào, cho phép bạn tích hợp nó vào bất kỳ ứng dụng JavaScript nào Nó đã trở thành một trong những công cụ phổ biến trong cộng đồng phát triển web và có nhiều hỗ trợ từ các thư viện và công cụ khác như React, Angular và Vue.
ViteJS [5]
ViteJS là công cụ tương tự webpack, Rollup, Parcel …
Mục đích của Vite là giải quyết những bài toán hiệu năng của các Javascript tool hiện tại.
- Tốc độ khởi động server nhanh:
Vite cải thiện tốc độ khởi động của dev server bằng cách chia các modules thành 2 nhóm: dependencies và source code.
Dependencies là hầu hết plain javascript không thay đổi trong quá trình dev. Một số dependencies lớn (ví dụ component libraries với hàng trăm modules) khá tốn kém để xử lý Vite pre-bundles các dependencies này sử dụng esbuild Esbuild viết bằng Go và pre-bundles nhanh gấp 10-100x các bundler khác dựa trên javasript.
Source code chứa non-plain javascript cần chuyển đổi (ví dụ JSX, CSS, Vue
…), và được edit thường xuyên Tất cả source code không cần thiết phải load cùng lúc Vite xử lý source code qua native ESM Điều này cho phép trình duyệt đảm nhận 1 phần công việc bundler Vite chỉ cần chuyển đổi và xử lý source code khi browser request nó Code đằng sau import động chỉ được xử lý khi thật sự sử dụng trên màn hình hiện tại.
Khi 1 file được chỉnh sửa trong hệ thống bundler-based, sẽ là không hiệu quả khi build lại toàn bộ bundle Tốc độ update sẽ chậm lại khi dự án lớn lên Ở 1 số bundler, dev server chạy bundling trong memory do vậy chỉ cần vô hiệu hóa 1 phần module graph khi 1 file thay đổi, nhưng nó vẫn cần cấu trúc lại toàn bộ bundle và reload web page Cấu trúc lại bundle là tốn kém, và tải lại page sẽ làm mất trạng thái hiện tại của ứng dụng Cho nên 1 số bundlers hỗ trợ Hot Module Replacement (HMR): cho phép 1 module có thể “hot replace” mà không ảnh hưởng đến toàn bộ page Tuy nhiên thực tế tốc độ HMR cũng giảm đi đáng kể khi kích thước ứng dụng tăng lên.
XÁC ĐỊNH,PHÂN TÍCH YÊU CẦU
Khảo sát hiện trạng
3.1.1 Các quy trình, nghiệp vụ
- Quy trình ứng tuyển vào bài đăng tuyển dụng.
- Quy trình tìm kiếm thông tin (bài đăng tuyển dụng, nhà tuyển dụng,…).
- Quy trình quản lý thông tin người tìm việc.
- Quy trình quản lý thông tin nhà tuyển dụng.
- Quy trình quản lý các bình luận của người tìm việc trong bài đăng tuyển dụng.
3.1.2 Khảo sát hệ thống hiện có
Trong quá trình thực hiện và xây dựng phần mềm của nhóm, nhóm đã có tiến hành khảo sát một số các trang web có chức năng tương tự như: TopCV, Vietnamworks Vì phần mềm của nhóm khá đặc thù nên nhóm đã chọn lọc cẩn thận những gì có thể tham khảo và làm theo Cả hai trang đều có quản lý riêng các bài tuyển dụng và nhà tuyển dụng riêng, về mặt này nhóm có thể tham khảo.
Với trang TopCV, việc sử dụng cùng một tông sắc cho các thành phần trong giao diện của mình được nhóm đánh giá rất cao vì sẽ không làm cho trang web trở nên quá tương phản nhưng vẫn có thể đảm bảo thỏa mãn được người dùng nhờ việc thiết kế thành phần giao diện gọn gàng cũng như các tương tác giao diện phù hợp.
Ngoài ra cũng có một số trang như chi tiết bài tuyển dụng của trang cũng được bố trí khá hợp lý nên nhóm đã cân nhắc đưa bố cục này vào trang chi tiết bài tuyển dụng của nhóm.
Với trang này không có quá nhiều để nhóm có thể tham khảo ngoại trừ các thẻ việc làm được thiết kế khá đẹp Ngoài đó ra thì trang có cách bố trí chưa thực sự quá ấn tượng và có phần hơi rối vì có các quảng cáo chen ngang tầm nhìn khá khó chịu.
Yêu cầu phần mềm
● Chức năng lưu trữ thông tin:
○ Thông tin người tìm việc: Mã ứng viên, tên khách hàng, CMND/CCCD,…
○ Thông tin nhà tuyển dụng: Mã nhà tuyển dụng, tên nhà tuyển dụng, địa chỉ trụ sở, địa chỉ chi nhánh,…
○ Thông tin bài đăng tuyển dụng: Mã bài tuyển dụng, mã nhà tuyển dụng, kỹ năng, yêu cầu công việc, thâm niên tối thiểu, loại hình công việc (full-time, part-time,…), địa chỉ, ghi chú, số lượng ứng tuyển,…
○ Thông tin các bài báo: Mã bài báo, thông tin bài báo, …
● Chức năng tra cứu thông tin:
○ Tra cứu thông tin bài tuyển dụng.
○ Tra cứu thông tin nhà tuyển dụng.
○ Tính toán số ngày còn lại của bài đăng tuyển dụng.
● Chức năng thống kê, báo cáo:
○ Thống kê tổng số lượng bài tuyển dụng đã đăng.
3.2.2 Yêu cầu phi chức năng
● Yêu cầu giao diện: o Thiết kế giao diện đơn giản nhưng vẫn đảm bảo tính chỉn chu, tạo cảm giác thoải mái cho người dùng. o Dễ thao tác đảm bảo tính tương tác cao, thuận tiện cho người dùng sử dụng. o Các thao tác chuyển trang không rườm ra nhằm đảm bảo hiệu suất công việc. o Màu sắc giao diện không gây khó chịu cho mắt người dùng, đáp ứng nhu cầu làm việc thời gian dài trên hệ thống.
● Yêu cầu về vận hành: o Hệ thống có thể chạy được trên máy tính bàn, máy tính xách tay. o Hệ thống có thể chạy trên các trình duyệt sau đây: Microsoft Edge, Google Chrome. o Hệ thống hiển thị đầy đủ các thông tin quản lý trong cơ sở dữ liệu. o Hệ thống thực hiện chính xác các thao tác truy vấn cơ sở dữ liệu dựa trên thao tác của người dùng.
● Yêu cầu về hiệu suất: o Hệ thống có thể chạy 24/7 mà không gặp phải các lỗi nghiêm trọng dẫn đến sập hệ thống, thất thoát dữ liệu,…. o Thời gian phản hồi của hệ thống đảm bảo đủ nhanh và mượt mà (thời gian phản hồi chậm nhất không quá 2 giây). o Hệ thống có thể thực đa tác vụ đối với các thao tác và xử lý trên hệ thống.
● Yêu cầu về bảo mật: o Thực hiện việc phân quyền trên hệ thống. o Dữ liệu không bị thất thoát trong quá trình làm việc trên hệ thống.
Sơ đồ use-case
3.3.1 Sơ đồ use-case tổng quát
Hình 3.10 Use-case tổng quát
Bảng 3.1 Danh sách các actor chính của hệ thống
STT Tên Actor Ý nghĩa/ Ghi chú
1 Người tìm việc Người thao tác chính của trang web.
Bảng 3.2 Use-case tổng quát
STT Tên Use-case Ý nghĩa
Cho phép người tìm việc đăng nhập vào hệ thống để tiếp cận đầy đủ với các chức năng của hệ thống.
2 Đăng ký Người dùng có thể tiến hành đăng ký tài khoản để có thể đăng nhập vào hệ thống.
Người dùng có thể lấy lại mật khẩu trong trường hợp quên mật khẩu của tài khoản đã đăng ký trên hệ thống.
4 Chỉnh sửa thông tin ứng viên
Người dùng có thể chỉnh sửa thông tin của bản thân đã khai báo trên hệ thống.
5 Tìm kiếm bài đăng tuyển dụng
Người dùng có thể tìm kiếm các bài đăng được lưu trữ trên hệ thống.
6 Xem chi tiết thông tin bài đăng tuyển dụng
Người dùng có thể xem chi tiết thông tin của bài đăng tuyển dụng sau khi đăng nhập.
7 Tìm kiếm thông tin Người dùng có thể tìm kiếm thông tin của nhà nhà tuyển dụng tuyển dụng được lưu trữ trên hệ thống.
8 Xem chi tiết thông tin nhà tuyển dụng
Người dùng có thể xem chi tiết thông tin của nhà tuyển dụng sau khi đăng nhập.
9 Ứng tuyển vào bài đăng tuyển dụng
Người dùng có thể ứng tuyển vào các bài đăng tuyển dụng do trung tâm giới thiệu việc làm đăng tuyển.
Đặc tả Use-case và sơ đồ hoạt động (Activity Diagram)
Bảng 3.3 Bảng mô tả use-case đăng nhập
Tên Use-case Đăng nhập
Cho phép người tìm việc truy cập vào hệ thống bằng tài khoản đã được đăng ký từ trước để tiếp cận đầy đủ với các chức năng của hệ thống.
Kích hoạt Người dùng khởi động trang web và chọn mục đăng nhập.
Use-case liên quan Không có.
Tiền điều kiện Người dùng đã đăng xuất khỏi hệ thống.
Hậu điều kiện Người dùng đăng nhập vào hệ thống thành công.
1 Hệ thống hiển thị form đăng nhập.
2 Người dùng nhập tên tài khoản và mật khẩu và chọn đăng nhập.
3 Hệ thống kiểm tra thông tin đăng nhập.
4 Thông báo đăng nhập thành công và chuyển hướng đến trang chủ.
3a Hệ thống thông báo tài khoản không tồn tại hoặc mật khẩu không trùng khớp với tên tài khoản.
=> Use-case tiếp tục ở bước 2.
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi hệ thống.
Bảng 3.4 Bảng mô tả use-case đăng ký
Tên Use-case Đăng ký
Mô tả Người dùng có thể tiến hành đăng ký tài khoản để có thể đăng nhập vào hệ thống.
Kích hoạt Người dùng vào mục đăng nhập và chọn đăng ký.
Use-case liên quan Không có.
Tiền điều kiện Không có.
Hệ thống thông báo tài khoản có lưu trữ thông tin của người dùng được khởi tạo và lưu trữ thành công trên hệ thống Hệ thống chuyển hướng người dùng đến trang đăng nhập.
1 Hệ thống hiển thị giao diện đăng ký.
2 Người dùng nhập các trường thông tin cần thiết (*)
3 Hệ thống kiểm tra định dạng thông tin.
4 Thông báo tài khoản đã được tạo thành công
3a Hệ thống thông báo các trường nhập bị sai và yêu cầu người dùng nhập lại.
=> Use-case tiếp tục ở bước 2.
3b Hệ thống thông báo có trường nhập bị trùng thông tin so với thông tin lưu trữ trong hệ thống.
=> Use-case tiếp tục ở bước 2.
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
(*) Mô tả các trường dữ liệu:
Bảng 3.5 Bảng mô tả trường dữ liệu use-case đăng ký
Tên trường dữ liệu Kiểu dữ liệu Bắt buộc ? Nhiều giá trị ?
Bảng 3.6 Bảng mô tả use case quên mật khẩu
Tên Use-case Quên mật khẩu
Mô tả Người dùng có thể lấy lại mật khẩu trong trường hợp quên mật khẩu của tài khoản đã đăng ký trên hệ thống.
Kích hoạt Người dùng chọn mục quên mật khẩu trong trang đăng nhập
Use-case liên quan Không có.
Tiền điều kiện Không có.
Hậu điều kiện Tài khoản được đặt lại mật khẩu thành công.
1 Hệ thống hiển thị giao diện quên mật khẩu.
2 Người dùng nhập email của tài khoản cần lấy lại mật khẩu.
3 Hệ thống kiểm tra thông tin định dạng.
4 Hệ thống gửi đường link lấy lại mật khẩu đến cho email người dùng.
5 Người dùng nhấn vào đường link, chuyển hướng đến trang lấy lại mật khẩu.
6 Người dùng nhập trường thông tin cần thiết.
7 Hệ thống kiểm tra thông tin định dạng.
8 Hệ thống thông báo đã đổi mật khẩu thành công, hệ thống chuyển hướng về trang đăng nhập.
3a Hệ thống thông báo email nhập không tồn tại trong hệ thống.
=> Use-case tiếp tục ở bước 2.
3b Hệ thống thông báo email nhập không đúng định dạng.
=> Use-case tiếp tục ở bước 2.
7a Hệ thống thông báo các trường nhập không đúng yêu cầu.
=> Use-case tiếp tục ở bước 6.
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
3.4.4 Chỉnh sửa thông tin ứng viên
Bảng 3.7 Bảng mô tả use-case chỉnh sửa thông tin user
Tên Use-case Chỉnh sửa thông tin user
Mô tả Người dùng có thể cập nhật lại thông tin hiện có trên hệ thống.
Kích hoạt Người dùng ấn nút Thông tin người dùng.
Use-case liên quan : Đăng nhập.
Tiền điều kiện Không có.
Hậu điều kiện Thông tin của người dùng được chỉnh sửa.
1 Hệ thống hiển thị giao diện chỉnh sửa thông tin.
2 Người dùng nhập các trường thông tin cần thay đổi.
3 Hệ thống kiểm tra thông tin định dạng.
4 Thông báo chỉnh sửa thông tin thành công.
4a Hệ thống thông báo các trường nhập bị sai và yêu cầu người dùng nhập lại.
=> Use-case tiếp tục ở bước 2.
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
3.4.5 Tìm kiếm bài đăng tuyển dụng
Bảng 3.8 Bảng mô tả use-case tìm kiếm bài đăng tuyển dụng
Tên Use-case Tìm kiếm bài tuyển dụng.
Mô tả Người dùng có thể tìm kiếm bài tuyển dụng theo các tiêu chí tương ứng.
Kích hoạt Người dùng ấn nút tìm kiếm
Use-case liên quan Không có.
Tiền điều kiện Không có.
Hậu điều kiện Hiển thị các bài tuyển dụng tương ứng.
1 Người dùng nhập các trường cần tìm kiếm vào các ô tương ứng.
3 Hệ thống hiển thị các bài tuyển dụng tương ứng
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
3.4.6 Xem chi tiết thông tin bài đăng tuyển dụng
Bảng 3.9 Bảng mô tả use-case xem chi tiết thông tin bài đăng tuyển dụng
Tên Use-case Xem chi tiết thông tin bài đăng tuyển dụng
Mô tả Người dùng có thể xem chi tiết thông tin của bài đăng tuyển dụng sau khi đăng nhập.
Kích hoạt Người dùng nhấn vào một bài đăng tuyển dụng.
Use-case liên quan : Đăng nhập
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Hiển thị thông tin chi tiết của bài đăng tuyển dụng.
1 Hệ thống kiểm tra tài khoản đăng nhập hiện tại có phải là tài khoản ứng viên không.
2 Hệ thống chuyển hướng đến trang hiển thị thông tin chi tiết bài đăng tuyển dụng.
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
3.4.7 Tìm kiếm thông tin nhà tuyển dụng
Bảng 3.10 Bảng mô tả use-case tìm kiếm thông tin nhà tuyển dụng
Tên Use-case Tìm kiếm nhà tuyển dụng.
Mô tả Người dùng có thể tìm kiếm bài tuyển dụng theo các tiêu chí tương ứng.
Kích hoạt Người dùng ấn nút tìm kiếm.
Use-case liên quan Không có.
Tiền điều kiện Người dùng phải ở trang nhà tuyển dụng
Hậu điều kiện Hiển thị các nhà tuyển dụng tương ứng.
1 Người dùng nhập các trường cần tìm kiếm vào các ô tương ứng.
3 Hệ thống hiển thị các nhà tuyển dụng tương ứng
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
3.4.8 Xem chi tiết thông tin nhà tuyển dụng
Bảng 3.11 Bảng mô tả use-case xem chi tiết thông tin nhà tuyển dụng
Tên Use-case Xem chi tiết thông tin nhà tuyển dụng
Mô tả Người dùng có thể xem chi tiết thông tin của nhà tuyển dụng sau khi đăng nhập.
Kích hoạt Người dùng nhấn vào một nhà tuyển dụng bất kỳ.
Use-case liên quan : Đăng nhập
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống.
Hậu điều kiện Hệ thống hiển thị thông tin chi tiết của nhà tuyển dụng
1 Hệ thống kiểm tra tài khoản đăng nhập hiện tại có phải là tài khoản ứng viên không.
2 Hệ thống chuyển hướng đến trang hiển thị thông tin chi tiết bài đăng tuyển dụng.
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
3.4.9 Ứng tuyển vào bài đăng tuyển dụng
Bảng 3.12 Bảng mô tả use case ứng tuyển vào bài đăng tuyển dụng
Tên Use-case Ứng tuyển vào bài đăng tuyển dụng
Mô tả Người dùng có thể ứng tuyển bài tuyển dụng
Kích hoạt Người dùng ấn nút ứng tuyển.
Use-case liên quan : Đăng nhập, xem chi tiết bài tuyển dụng
Tiền điều kiện Người dùng phải ở trang bài tuyển dụng cần ứng tuyển. Hậu điều kiện Người dùng ứng tuyển bài tuyển dụng
1 Hệ thống hiển thị trang bài tuyển dụng mà người dùng muốn ứng tuyển.
3 Hệ thống thông báo ứng tuyển thành công
Luồng sự kiện ngoại lệ
Người dùng thoát khỏi giao diện.
Phân tích và thiết kế Cơ sở dữ liệu
Dựa trên việc xác định yêu cầu và phân tích yêu cầu, ứng dụng web bao gồm các bảng sau đây:
Bảng 3.13 Mô tả bảng Posts
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id VARCHAR(255) Khóa chính Id bài tuyển dụng. jobTitle VARCHAR(255) Not null Tên công việc tuyển dụng. salaryMin INT Lương tối thiểu. salaryMax INT Lương tối đa. experienceYear INT Not null Thâm niên làm việc. endDate DATE Hạn bài tuyển dụng. requiredAmount INT Số lượng tuyển dụng. gender TINYINT(1) Giới tính. jobDescribe TEXT Mô tả công việc. benefits TEXT Quyền lợi công việc. jobRequirement TEXT Not null Yêu cầu công việc. appliedCount INT Số lượng người đã ứng tuyển. companyId STRING Khoá ngoại
Id của nhà tuyển dụng tạo bài ứng tuyển. positionId INT Khoá ngoại
Id của vị trí tuyển dụng. academicLevelId INT Khoá ngoại
Id của trình độ học vấn. workingTypeId INT Khoá ngoại
Id của loại hình làm việc.
Bảng 3.14 Mô tả bảng Postcareers
Tên trường Kiểu dữ liệu Ràng buộc Mô tả postId VARCHAR(255) Khóa chính, khoá ngoại (Posts) Id bài tuyển dụng. careerId INT Khoá chính, khoá ngoại (Careers) Id ngành nghề.
Bảng 3.15 Mô tả bảng Candidates
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id VARCHAR(255) Khóa chính Id bài tuyển dụng. candidateName VARCHAR(255) Not null Id khu vực. civilId VARCHAR(12) Unique Căn cước công dân của ứng viên. age INT Tuổi ứng viên. profileImage VARCHAR(255) Đường dẫn hình ảnh hồ sơ ứng viên. cvImage VARCHAR(255) Đường dẫn hình ảnh CV ứng viên. phoneNumber VARCHAR(255) Số điện thoại của ứng viên. email VARCHAR(255) Email của ứng viên. fullAddress TEXT Địa chỉ. province VARCHAR(30) Tỉnh/thành phố của ứng viên. district VARCHAR(30) Quận/huyện của ứng viên. ward VARCHAR(30) Phường của ứng viên. gender TINYINT(1) Giới tính của ứng viên. experienceYear INT Thâm niên của ứng viên. academicLevelId INT Khóa ngoại
Id trình độ học vấn của ứng viên. positionId INT Khóa ngoại
Id cấp bậc mong muốn của ứng viên.
Bảng 3.16 Mô tả bảng Candidateposts
Tên trường Kiểu dữ liệu Ràng buộc Mô tả candidateId VARCHAR(255) Khoá chính, khoá ngoại (Candidates) Id ứng viên. postId VARCHAR(255) Khoá chính, khoá ngoại (Posts) Id bài tuyển dụng. isApplied TINYINT(1)
Trạng thái ứng viên đã được chấp nhận phỏng vấn hay chưa.
Bảng 3.17 Mô tả bảng Candidatecareers
Tên trường Kiểu dữ liệu Ràng buộc Mô tả candidateId VARCHAR(255) Khoá chính, khoá Id ứng viên. ngoại (Candidates) careerId INT Khoá chính, khoá ngoại (Careers) Id ngành nghề.
Bảng 3.18 Mô tả bảng Careers
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id INT Khoá chính Id ngành nghề. careerName VARCHAR(255) Tên ngành nghề.
Bảng 3.19 Mô tả bảng Companies
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id VARCHAR(255) Khoá chính Id ngành nghề. companyName TEXT Tên nhà tuyển dụng. imageLink VARCHAR(255) Đường dẫn của ảnh logo nhà tuyển dụng. email TEXT Email của nhà tuyển dụng. phone TEXT Số điện thoại của nhà tuyển dụng. address TEXT Địa chỉ nhà tuyển dụng. province VARCHAR(30) Tỉnh/thành phố của ứng viên. district VARCHAR(30) Quận/huyện của ứng viên. ward VARCHAR(30) Phường của ứng viên. introduction TEXT Giới thiệu chung về nhà tuyển dụng. companySizeMin INT
Số lượng ứng viên nhỏ nhất của công ty. companySizeMax INT
Số lượng ứng viên lớn nhất của công ty.
Bảng 3.20 Mô tả bảng Companycareers
Tên trường Kiểu dữ liệu Ràng buộc Mô tả companyId VARCHAR(255) Khoá chính, khoá ngoại (Companies) Id nhà tuyển dụng. careerId INT Khoá chính, khoá ngoại (Careers) Id ngành nghề.
Bảng 3.21 Mô tả bảng Positions
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id INT Khoá chính Id cấp bậc. positionName VARCHAR(255) Tên cấp bậc.
Bảng 3.22 Mô tả bảng Workingytpes
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id INT Khoá chính Id loại hình làm việc. workingTypeName VARCHAR(255) Tên loại hình làm việc.
Bảng 3.23 Mô tả bảng Academiclevels
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id INT Khoá chính Id trình độ học vấn. academicLevelNam e VARCHAR(255) Tên trình độ học vấn.
Bảng 3.24 Mô tả bảng Comments
Tên trường Kiểu dữ liệu Ràng buộc Mô tả id INT Khoá chính Id bình luận. commentText TEXT Nội dung bình luận. rating INT Đánh giá điểm. postId VARCHAR(36) Khoá ngoại (Posts) Id của bài tuyển dụng. candidateId VARCHAR(36) Khoá ngoại
Id của ứng viên viết bình luận.
CÀI ĐẶT VÀ TRIỂN KHAI HỆ THỐNG
Cấu hình cài đặt
● MySQL: Cơ sở dữ liệu quan hệ để lưu thông tin.
● NodeJS: Thao tác với cơ sở dữ liệu các thao tác như thêm, xóa, sửa dữ liệu.
● ReactJS: Xây dựng các giao diện để người dùng có thể tương tác với hệ thống.
Môi trường phát triển và triển khai hệ thống
● Công cụ quản lý CSDL: MySql WorkBench.
● Công cụ vẽ sơ đồ phân tích thiết kế: StarUML.
● Công cụ xây dựng ứng dụng: Visual Studio Code.
● Công cụ quản lý mã nguồn: Github.
Màn hình giao diện
Hình 4.12 Giao diện trang đăng nhập
Bảng 4.25 Mô tả thành phần đăng nhập
STT Tên Kiểu Chức năng
1 txtUsername input Hiển thị tên tài khoản.
2 txtPassword input Hiển thị tên mật khẩu.
3 btnForget a Chuyển đến trang quên mật khẩu.
4 btnLogin button Thực hiện thao tác đăng nhập
Hình 4.13 Giao diện trang đăng kí
Bảng 4.26 Mô tả trang đăng kí
STT Tên Kiểu Chức năng
2 txtUsername Input Ô nhập tên người dùng
3 txtPassword Input Ô nhập mật khẩu
4 txtRePasswor d Input Ô nhập lại mật khẩu
5 txtName Input Ô nhập họ và tên
6 txtId Input Ô nhập số căn cước công dân
8 selectGender Select Dropdown chọn giới tính
9 txtPhone Input Ô nhập số điện thoại
10 txtAddress Input Ô nhập địa chỉ
11 selectProvinc e Select Dropdown chọn tỉnh thành
12 selectDistrict Select Dropdown chọn quận huyện
13 selectWard Select Dropdown chọn phường
14 txtExpYear Input Ô nhập thâm niên làm việc
15 selectAL Select Dropdown chọn trình độ học vấn
16 selectPos Select Dropdown chọn vị trí mong muốn
17 selectCareer Select Dropdown chọn chuyên ngành bản thân
18 btnRegister Button Nút xác nhận đăng kí
19 btnLogin Link Liên kết chuyển đến trang đăng nhập
4.3.3 Quên mật khẩu / Lấy lại mật khẩu
Hình 4.14 Giao diện trang quên mật khẩu / tạo mới mật khẩu
Bảng 4.27 Mô tả trang quên mật khẩu / trang tạo mới mật khẩu
STT Tên Kiểu Chức năng
1 txtEmail Input Ô nhập email của tài khoản muốn phục hồi
2 btnForgetPass Button Thực hiện việc gửi thông tin token gửi đến email được nhập.
3 txtPassword Input Ô nhập mật khẩu mới
4 txtRePassword Input Ô nhập lại mật khẩu mới
5 btnRecreate Input Thực hiện việc cập nhật lại mật khẩu mới
6 btnLogin Link Thực hiện chuyển đến trang đăng nhập
7 btnRegister Link Thực hiện chuyển đến trang đăng kí
Hình 4.15 Giao diện trang chủ
Bảng 4.28 Mô tả trang chủ
STT Tên Kiểu Chức năng
1 btnHome link Thực hiện chuyển đến trang chủ
2 btnJobs link Thực hiện chuyển đến trang bài tuyển dụng
3 btnCompanies link Thực hiện chuyển đến trang nhà tuyển dụng
4 btnEditProfile link Thực hiện chuyển đến trang cập nhật tài khoản
5 btnLogout button Thực hiện việc đăng xuất tài khoản
6 txtJobs input Ô nhập bài tuyển dụng cần tìm
7 selectCareer select Dropdown chọn ngành nghề cần tìm
8 selectPosition select Dropdown chọn cấp bậc cần tìm
9 btnSearch select Thực hiện việc tìm kiếm
10 divJobList div Danh sách các bài tuyển dụng
11 navList ul Danh mục các nút điều hướng đến các trang tương ứng
12 careerList ul Danh mục các ngành nghề hiện có với số bài tuyển dụng
4.3.5 Trang danh sách tất cả việc làm
Hình 4.16 Giao diện trang tất cả việc làm
Bảng 4.29 Mô tả trang tất cả việc làm
STT Tên Kiểu Chức năng
1 txtSearch Input Ô nhập tên bài đăng tuyển dụng
2 selectCareer select Dropdown chọn ngành nghề cần tìm
3 btnSearch button Thực hiện việc tìm kiếm
4 jobList ul Hiển thị các bài tuyển dụng
5 sidebarFilter div Sidebar filter theo danh mục
4.3.6 Trang danh sách nhà tuyển dụng
Hình 4.17 Modal chi tiết danh sách ứng tuyển
Bảng 4.30 Mô tả modal chi tiết danh sách ứng tuyển
STT Tên Kiểu Chức năng
1 txtCompany input Vùng nhập liệu cho tên nhà tuyển dụng.
2 btnSearch button Nút thực hiện chức năng tìm kiếm nhà tuyển dụng.
3 btnChange div Thẻ thể hiện thông tin của nhà tuyển dụng.
4.3.7 Trang chỉnh sửa thông tin user
Hình 4.18 Giao diện tạo mới bài tuyển dụng
Bảng 4.31 Mô tả tạo mới bài tuyển dụng
STT Tên Kiểu Chức năng
1 inputCandidateName input Ô điền tên ứng viên.
2 selectGender select Ô chọn giới tính.
5 inputCivilId input Ô nhập số chứng minh nhân dân / căn cước công dân.
6 inputNumber input Ô nhập số điện thoại.
7 inputAddress input Ô nhập địa chỉ.
8 selectProvince select Ô chọn tỉnh thành
9 selectDistrict select Ô chọn quận / huyện.
10 selectWard select Ô chọn thị xã / phường.
11 inputExperienceYear input Ô nhập thâm niên.
12 selectAcademicLevel select Ô chọn trình độ học vấn.
13 selectPosition select Ô chọn vị trí mong muốn.
14 selectCareer select Ô chọn quận huyện ứng tuyển.
15 inputCVImage input Ô chọn hình ảnh CV.
16 inputProfileImage input Ô chọn hình ảnh hồ sơ người dùng.
17 editButton button Nút thực hiện chức năng chỉnh sửa.
4.3.8 Trang thông tin chi tiết bài tuyển dụng
Hình 4.19 Giao diện chỉnh sửa bài tuyển dụng
Bảng 4.32 Mô tả chỉnh sửa bài tuyển dụng
STT Tên Kiểu Chức năng
1 btnApply button Nút chuyển hướng sang trang ứng tuyển.
2 btnCompany button Nút chuyển hướng đến trang chi tiết nhà tuyển dụng.
3 txtComments textarea Vùng điền bình luận
4 relateJobList ul Vùng hiển thị danh sách các công việc liên quan.
4.3.9 Trang thông tin chi tiết nhà tuyển dụng
Hình 4.20 Giao diện danh sách nhà tuyển dụng
TỔNG KẾT
Kết quả đạt được
- Nhóm đã học được các lý thuyết liên quan đến đặc tả các chức năng của phần mềm hệ thống.
- Nhóm đã biết cách xây dựng và thiết kế cơ sở dữ liệu cho đề tài của nhóm.
- Nhóm đã phối hợp làm việc nhóm, tiếp thu, chỉ dẫn lẫn nhau một cách sôi nổi.
- Ngoài ra nhóm cũng đã học được cách thu thập yêu cầu từ khách hàng, các quy trình khảo sát hiện trạng cũng như quy trình phân tích yêu cầu phần mềm.
Trong đợt đồ án này, nhóm đã có cố gắng áp dụng một số công nghệ mà nhóm mới tiếp xúc lần đầu để xây dựng phần mềm này như: ReactJS,NodeJS, ViteJS cũng như sử dụng MySQL để xây dựng cơ sở dữ liệu.
Hạn chế
Vì quỹ thời gian hạn chế và còn thiếu nhiều kinh nghiệm, nhóm vẫn còn phạm phải rất nhiều khuyết điểm và thiếu sót trong quá trình thực hiện dự án, có thể kể đến như:
● Nhóm không có nhiều thời gian để thực hiện việc họp nhóm và phân chia công việc, do đó các công việc phân bố không đều nhau.
● Do thời gian hạn chế nên nhóm vẫn chưa thực sự chăm chút cho đồ án về mặt giao diện.
● Những sai sót và bất cập trong việc xử lý một số lỗi phần mềm vẫn chưa được khắc phục kịp thời: một số chức năng còn chưa đáp ứng một số yêu cầu so với các sản phẩm trên thị trường như: hệ thống khuyến nghị việc làm.
Hướng phát triển
- Tiếp tục nâng cấp về mặt khuyến nghị việc làm.
- Tổ chức hoàn thiện, bảo trì những phần hệ thống (giao diện, chức năng) còn chưa tốt.
- Deploy website lên trên các công cụ tìm kiếm.
- Học cách tối ưu truy cập cũng như áp dụng xử lý transaction trong môi trường thương mại
- Phân bổ công việc cho các thành viên hợp lý.
- Sắp xếp thời gian tổ chức họp nhóm nhiều hơn.
- Giải quyết xung đột, đồng thời hỗ trợ thành viên nhóm kịp thời.
- Thực hiện đồ án nên lên kế hoạch và thực hiện từ giai đoạn sớm của học kỳ, tránh trường hợp gấp gáp thực hiện dẫn đến sai sót không đáng có.
- Nên phân tích kỹ càng các yêu cầu hiện nay trên thị trường đối với đề tài để có cái nhìn sâu rộng cũng như biết bản thân và nhóm nên làm gì khi phát triển sản phẩm.