TỔNG QUAN
Từ khóa "tìm kiếm việc làm" đang trở thành xu hướng phổ biến, thu hút sự quan tâm của nhiều người Nhiều trang web uy tín như timviecnhanh và topcv cung cấp dịch vụ tìm kiếm việc làm theo nhu cầu cá nhân Các trang này không chỉ cho phép người tìm việc ứng tuyển online mà còn giúp các công ty tìm kiếm ứng viên qua CV Ngoài ra, chúng còn cung cấp nhiều tin tức và mẹo hữu ích liên quan đến việc tìm kiếm việc làm.
Với niềm đam mê nghiên cứu hệ thống, hiện tại chúng em đang theo học tại TTCNPM thuộc trường Đại học Sư phạm Kỹ thuật TPHCM Chúng em quyết định thử sức mình bằng cách phát triển một hệ thống tương tự, không chỉ tích hợp các chức năng hiện có mà còn bổ sung thêm những tính năng hữu ích cần thiết.
Hệ thống trang web dự tính xây dựng là cầu nối giữa nhà tuyển dụng và sinh viên tìm việc, cung cấp chức năng tìm kiếm việc làm qua từ khóa tên công việc và ngành nghề Người dùng có thể dễ dàng tìm kiếm công việc phù hợp với nhu cầu của mình Bên cạnh đó, trang web còn cho phép quản lý CV và ứng tuyển vào các vị trí mong muốn Công ty cũng có thể đăng tin tuyển dụng và quản lý CV của ứng viên cho các vị trí trong công ty.
Mục đích của đề 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ập trung vào hai vấn đề trọng tâm: đầu tiên là phát triển một nền tảng trực tuyến hiệu quả để kết nối sinh viên với các cơ hội việc làm, và thứ hai là cung cấp công cụ quản lý thông tin việc làm cho phòng doanh nghiệp, nhằm nâng cao khả năng tìm kiếm việc làm cho sinh viên.
Để phát triển ứng dụng Web hiệu quả với Java Spring Boot và Angular, sinh viên cần nắm vững kiến thức chuyên môn và hiểu rõ khả năng ứng dụng của từng thành phần trong mô hình này Cụ thể, họ phải xác định các đặc trưng về nguyên tắc hoạt động của Java Spring Boot trong việc xây dựng server, Angular cho ứng dụng phía người dùng, và MongoDB làm cơ sở dữ liệu Ngoài ra, việc tìm hiểu các thư viện và mã nguồn module hỗ trợ là rất quan trọng để tối ưu hóa quá trình phát triển ứng dụng thực tế.
Đề tài nghiên cứu ứng dụng mô hình Java Spring Boot và Angular trong việc xây dựng “Website tìm việc làm” Sản phẩm cuối cùng sẽ là một ứng dụng Web hoàn chỉnh, tích hợp đầy đủ các thành phần của hai công nghệ này, đồng thời đáp ứng các yêu cầu như tạo CV, ứng tuyển, đăng tin tuyển dụng và nhiều tính năng thực tiễn khác Nghiên cứu tập trung vào hai nhóm đối tượng chính: nhóm có kiến thức công nghệ và nhóm có nhu cầu tìm việc làm, tuyển dụng nhân sự.
Nhóm đối tượng nghiên cứu về kiến thức công nghệ bao gồm bốn thành phần chính: Spring Boot, thư viện Angular, và cơ sở dữ liệu MongoDB Ngoài ra, các thư viện Javascript như JWT (Json Web Token) và charts cũng cần được xem xét để phục vụ cho các ứng dụng liên quan đến doanh thu và mức độ ưa thích của sản phẩm.
Nhóm đối tượng tìm việc làm và tuyển dụng nhân sự cần nắm rõ kiến thức và kinh nghiệm, đồng thời xem xét các đánh giá về trải nghiệm người dùng trên các trang web tìm kiếm việc làm cụ thể.
Phạm vi nghiên cứu được xác định ở mức tổng quát, giúp người thực hiện nắm vững kiến thức chung và áp dụng hiệu quả vào sản phẩm thực tế, tránh việc chỉ tập trung vào các lý thuyết phức tạp không có 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
CƠ SỞ LÝ THUYẾT
Java và lịch sử phát triển
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) độc đáo, khác với nhiều ngôn ngữ lập trình khác Thay vì biên dịch trực tiếp mã nguồn thành mã máy hoặc thông dịch mã nguồn khi thực thi, Java biên dịch mã nguồn thành bytecode Bytecode này sau đó được môi trường thực thi (runtime environment) xử lý, mang lại tính linh hoạt và khả năng tương thích cao cho các ứng dụng Java.
Java có cú pháp tương tự như C và C++, nhưng đơn giản hơn và ít tính năng xử lý cấp thấp hơn, giúp việc lập trình trở nên dễ dàng hơn Nhờ đó, việc viết chương trình bằng Java không chỉ đơn giản mà còn giảm thiểu công sức trong việc sửa lỗi.
Java được phát triển bởi James Gosling cùng với các đồng nghiệp tại Sun Microsystems vào năm 1991 Ngôn ngữ này ban đầu được đặt tên là Oak, lấy cảm hứng từ những cây sồi mọc xung quanh nơi làm việc của Gosling.
Java được phát hành vào năm 1994 và sau khi Oracle mua lại Sun Microsystems vào năm 2009-2010, họ đã tự nhận mình là "người quản lý công nghệ Java" với cam kết phát triển một cộng đồng tham gia và minh bạch Lịch sử phiên bản Java đã chứng kiến nhiều sự phát triển quan trọng qua các năm.
• 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
• Phiên bản dự kiến tiếp theo: Java 9 dự kiến ra đời năm 2016
Java Reflection
Java reflection serves as the foundation for the operation of all dependency injection frameworks in Java, including Dagger, Google Guice, PicoContainer, and Spring Understanding Java reflection is essential for effectively engaging with Spring and its functionalities.
Reflection là kỹ thuật quan trọng để truy xuất thông tin từ kiểu dữ liệu, cho phép kích hoạt phương thức hoặc tạo thể hiện của kiểu dữ liệu đó Một ứng dụng nổi bật của reflection là Java Bean, giúp các IDE như NetBeans và các framework lấy 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 liên quan đến reflection nằm trong hai package chính: java.lang và java.lang.reflect Trong package java.lang.reflect, có ba lớp quan trọng cần nắm vững 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
Trong lập trình, Accessible Object cho phép bỏ qua các kiểm tra về phạm vi truy xuất (public, private, protected) của trường, phương thức và constructor Điều này giúp chúng ta sử dụng reflection để thay đổi và thực thi các thành phần này mà không cần lo lắng về quyền truy cập của chúng.
- 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
Tổng quan về Spring
Spring framework, hay còn gọi là Spring, là một cấu trúc mã nguồn mở được thiết kế để phát triển ứng dụng cho ngôn ngữ lập trình Java Phiên bản đầu tiên của Spring do Rod Johnson phát triển và được giới thiệu trong cuốn sách "Expert One-on-One JavaEE Design and Development", xuất bản bởi Wrox Press vào tháng 10 năm 2002.
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
Mặc dù Spring framework không yêu cầu tuân theo mô hình lập trình cụ thể, nó đã trở thành một lựa chọn phổ biến trong cộng đồng lập trình viên Java, thay thế cho mô hình Enterprise Java Bean Thiết kế của framework này mang lại sự tự do cho lập trình viên Java, đồng thời cung cấp giải pháp tiện lợi, đầy đủ tài liệu và dễ sử dụng, phù hợp với các thực hành thông dụng trong công nghệ phần mềm.
Spring framework không chỉ sở hữu những đặc trưng nền tảng có thể áp dụng cho mọi ứng dụng Java, mà còn có nhiều mở rộng và cải tiến trong việc phát triển ứng dụng web dựa trên nền tảng Java Enterprise Sự nổi tiếng của Spring framework một phần đến từ những đặc điểm này, và nó được công nhận bởi giới thương mại như một nền tảng kiến trúc quan trọng trong chiến lược phát triển phần mềm.
Lịch sử phát triển
Spring framework được Rod Johnson phát triển lần đầu vào năm 2000, và đến năm 2001, Java Servlet API cùng với Enterprise Java Bean đã trở thành các mô hình lập trình chủ yếu cho các ứng dụng web.
Dự án Spring được thành lập vào năm 2003 trên nền tảng Sourceforge nhằm mục đích phát triển framework này Sau hơn một năm phát triển, phiên bản đầu tiên (1.0) của Spring đã được phát hành vào tháng 3 năm 2004.
Spring Framework đã nhanh chóng phổ biến các kỹ thuật trước đây ít được biết đến, đặc biệt là kỹ thuật “đảo ngược quyền điều khiển” (Inversion of Control - IoC) Một ví dụ cụ thể là việc sử dụng phương thức method = c.getMethod("printHello", String.class); và method.invoke(instance, "World"); để in ra "Hello World".
Năm 2005 chứng kiến sự gia tăng đáng kể trong mức độ hưởng ứng của người dùng, nhờ vào việc giới thiệu các phiên bản mới với nhiều tính năng nổi bật Sự ra đời của Diễn đàn Spring vào cuối năm 2004 đã đóng góp quan trọng vào việc nâng cao tính phổ biến của bộ framework, trở thành nguồn thông tin quý giá cho cộng đồng người sử dụng từ đó đến nay.
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 suốt 3 ngày Tiếp theo, hội thảo diễn ra ở Antwerp vào tháng 6 năm 2006, với sự tham gia của hơn 400 người.
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
IoC Container trong Spring được phát triển dựa trên nguyên lý Inversion of Control, một khái niệm đã có từ lâu trong các mẫu thiết kế Nguyên lý này đã được phổ biến rộng rãi nhờ vào công lao của Robert C Martin và Martin Fowler.
Khái niệm Control Flow (luồng thực thi) đề cập đến 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 nó được thực thi.
Với sự phát triển ngày càng phức tạp của các chương trình, lập trình viên đã áp dụng phương pháp lập trình hướng đối tượng để phân loại và tổ chức các chức năng thành các đối tượng riêng biệt Họ cũng xây dựng các thư viện tạo sẵn nhằm tái sử dụng mã nguồn hiệu quả Trong quá trình thực thi chương trình, thay vì tập trung vào từng bước thực hiện câu lệnh cụ thể, lập trình viên chú trọng vào việc gọi phương thức của các đối tượng trong ứng dụng và các đối tượng từ thư viện đã được tạo dựng.
Khi xây dựng ứng dụng, lập trình viên thường phải điều khiển luồng thực thi và phát triển các chức năng nghiệp vụ Tuy nhiên, nhiều chương trình có luồng thực thi tương tự nhau, như phần tương tác HTTP trong ứng dụng web hay unit testing Việc lặp đi lặp lại quá trình này không chỉ tốn thời gian và chi phí mà còn dễ dẫn đến lỗi và sự nhàm chán Điều này đã thúc đẩy sự phát triển của nguyên lý đảo ngược điều khiển, giúp tối ưu hóa quy trình lập trình.
Hình 2.2 Mô hình ứng dụng áp dụng IoC
Khái niệm "đảo ngược" đề cập đến việc chuyển giao nhiệm vụ kiểm soát luồng thực thi từ ứng dụng cho một thư viện phần mềm khung chuyên trách bên ngoài Ứng dụng sẽ không còn kiểm soát điều khiển luồng thực thi, mà chỉ tập trung vào việc định nghĩa chức năng Thư viện phần mềm khung sẽ dựa vào cấu hình của ứng dụng để điều phối luồng thực thi trong chương trình.
Thư viện phần mềm khung khác biệt với các thư viện thông thường ở chỗ, thay vì chỉ cung cấp chức năng cho ứng dụng gọi đến, nó tạo ra luồng thực thi và tự động gọi các chức năng của ứng dụng.
IoC, hay Inversion of Control, là một mẫu thiết kế và tập hợp các kỹ thuật lập trình, trong đó luồng thực thi của hệ thống được đảo ngược so với phương pháp tương tác truyền thống Trong Spring, IoC cũng mang ý nghĩa tương tự, với các đối tượng chính để xây dựng ứng dụng được quản lý bởi Spring IoC container Các đối tượng này được gọi là bean, và 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.
Trong lập trình truyền thống, các module cấp cao phụ thuộc vào các module cấp thấp, dẫn đến việc tạo ra các dependency Khi có sự thay đổi ở module cấp thấp, module cấp cao cũng cần phải điều chỉnh theo, gây ra một chuỗi thay đổi liên tiếp và làm giảm khả năng bảo trì của mã nguồn.
Dependency Injection (DI) has emerged as a crucial concept in software development, with various DI containers such as Unity and StructureMap available to facilitate the implementation of DI in code These tools can also be referred to as IoC (Inversion of Control) Containers, as they serve similar purposes in managing dependencies within applications.
➢ 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
• Constructor Injection: Các dependency sẽ được container truyền vào (inject vào) 1 class thông qua constructor của class đó Đây là cách thông dụng nhất
• Setter Injection: Các dependency sẽ được truyền vào 1 class thông qua các hàm Setter
Interface Injection requires a class to implement a specific interface that contains an Inject method Dependencies are injected into the class by invoking this Inject method through the container This method is considered cumbersome and is the least commonly used approach for dependency injection.
➢ Ưu khuyết điểm của DI:
Bảng 2.1 Ưu khuyết điểm của DI Ưu điểm Khuyết điểm
• 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
Các module
Spring được xây dựng với 7 module chính [8]
Hình 2.3 Các module của Spring Framework
Spring Core is the fundamental package of the Spring framework, offering essential features such as Inversion of Control (IoC) and Dependency Injection (DI) At its core is the BeanFactory, which implements the Factory pattern and enables the management of dependencies between objects through a configuration file.
The Spring context is a configuration file that provides essential contextual information for the Spring framework It offers various services, including JNDI access, EJB integration, email functionality, internationalization, validation, and scheduling capabilities.
Spring AOP (Lập trình Hướng Khía Cạnh) là một mô-đun của Spring framework, cho phép tích hợp chức năng lập trình hướng khía cạnh thông qua cấu hình Mô-đun này cung cấp dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng sử dụng Spring, cho phép tích hợp quản lý giao dịch khai báo mà không cần dựa vào thành phần EJB Ngoài ra, Spring AOP cũng hỗ trợ lập trình metadata, cho phép người dùng thêm annotation vào mã nguồn để hướng dẫn Spring cách thức liên hệ với các khía cạnh.
Spring DAO (Data Access Object) cung cấp một cấu trúc phân cấp exception cho việc quản lý kết nối đến cơ sở dữ liệu, giúp điều khiển các lỗi và thông báo mà nhà cung cấp cơ sở dữ liệu ném ra Tầng exception này đơn giản hóa việc xử lý lỗi và giảm thiểu khối lượng mã cần viết, như việc mở và đóng kết nối Ngoài ra, module này cũng cung cấp dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng Spring.
Spring ORM (Object Relational Mapping) integrates with various ORM frameworks, offering tools for object-relational mapping, including JDO, Hibernate, OJB, and iBatis SQL Maps.
Spring Web là một phần của module application context, cung cấp ngữ cảnh cho các ứng dụng web Nó hỗ trợ tích hợp với các framework như Struts, JSF và Webwork Module này giúp giảm thiểu công việc xử lý nhiều yêu cầu và gán các tham số của yêu cầu vào các đối tượng domain.
Spring MVC là một framework MVC hoàn chỉnh, được thiết kế để phát triển ứng dụng web với đầy đủ các đặc điểm của mẫu MVC Framework này cho phép cấu hình thông qua giao diện và hỗ trợ nhiều kỹ thuật view như JSP, Velocity, Tiles, cùng với khả năng tạo file PDF và Excel.
Tổng quan về Spring Boot
Spring Boot là một module của Spring Framework, giúp phát triển ứng dụng nhanh chóng với các tính năng RAD (Rapid Application Development) Trước đây, việc khởi tạo một dự án Spring thường gặp nhiều khó khăn do phải khai báo các dependency trong file pom.xml và cấu hình phức tạp bằng XML hoặc annotation Tuy nhiên, với Spring Boot, quá trình tạo ứng dụng Spring trở nên đơn giản và nhanh gọn hơn rất nhiều.
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
• Chuẩn cho Microservices (Cloud support; giảm việc setup, config; các thư viện hỗ trợ…)
Tạo một Spring Boot Application
IDE hỗ trợ Spring Tool Suit
Giới thiệu
RESTful API là tiêu chuẩn thiết kế API cho ứng dụng web, giúp quản lý tài nguyên như tệp văn bản, ảnh, âm thanh, video và dữ liệu động một cách hiệu quả Các tài nguyên này được định dạng và truyền tải thông qua giao thức 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
Một trong những đặc điểm nổi bật của REST là tính phi trạng thái (stateless), có nghĩa là hệ thống không lưu trữ thông tin của client Ví dụ, khi bạn gửi yêu cầu để xem trang thứ hai của tài liệu, và sau đó muốn xem trang tiếp theo, REST sẽ không lưu lại thông tin về yêu cầu trước đó.
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 cung cấp một cấu trúc cho phép người dùng truy cập vào các tài nguyên thông qua URL Tài nguyên ở đây bao gồm mọi thứ có thể được định danh, như video, hình ảnh, báo cáo thời tiết, và nhiều hơn nữa.
• 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à:
Để bảo mật thông tin, hãy giấu đuôi các tài liệu mở rộng của bản gốc trên máy chủ như jsp, php, asp nếu có, nhằm ẩn đi một số dữ liệu 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ì trả về mã lỗi (404 Not Found) khi không tìm thấy địa chỉ yêu cầu, hãy luôn cung cấp một trang mặc định hoặc tài nguyên thay thế như một phản hồi để cải thiện trải nghiệm người dùng.
4) Truyền tải JavaScript Object Notation (JSON), XML hoặc cả hai
Khi client gửi yêu cầu đến Web Service, dữ liệu thường được truyền tải dưới dạng XML hoặc JSON và nhận lại cũng theo hình thức tương tự Client có thể chỉ định kiểu dữ liệu mong muốn như JSON hoặc XML thông qua các chỉ định MINE, được gửi kèm trong phần HEADER của yêu cầu.
• 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
Angular, hay còn gọi là "Angular 2+" hoặc "Angular v2 trở lên", là một khung ứng dụng web mã nguồn mở được phát triển trên nền tảng TypeScript bởi nhóm Angular tại Google cùng với sự hỗ trợ của cộng đồng Đây là một phiên bản viết lại hoàn toàn từ AngularJS, do chính nhóm phát triển trước đó thực hiện.
Một trong những tính năng nổi bật của Angular 2 là khả năng phát triển ứng dụng cho nhiều nền tảng, bao gồm web, di động và máy tính để bàn gốc, điều mà AngularJS không hỗ trợ cho di động.
Angular là một nền tảng miễn phí, được phát triển để xây dựng các ứng dụng web động, đặc biệt là ứng dụng một trang (SPA) Nền tảng này được hàng nghìn nhà phát triển trên toàn thế giới ưa chuộng.
2.5.2 So sánh Angular, ReactJS và VueJS
Angular, được phát triển bởi Google và ra mắt lần đầu vào năm 2010, là một khung JavaScript dựa trên TypeScript Năm 2016, một bước ngoặt quan trọng xảy ra với sự ra mắt của Angular 2, đánh dấu việc loại bỏ "JS" khỏi tên gọi ban đầu Kể từ đó, Angular 2+ được gọi đơn giản là Angular Mặc dù AngularJS (phiên bản 1) vẫn tiếp tục được cập nhật, nhưng bài viết này sẽ tập trung vào Angular Phiên bản ổn định mới nhất hiện nay là Angular 7, được phát hành vào tháng 10 năm 2018.
React, một thư viện JavaScript do Facebook phát triển, được ra mắt lần đầu vào năm 2013 và hiện đang được sử dụng rộng rãi trong các sản phẩm của Facebook như Instagram và WhatsApp Phiên bản ổn định mới nhất của React là 16.X, được phát hành vào tháng 11 năm 2023.
Vue.js, được phát triển bởi Evan You, cựu nhân viên của Google vào năm 2014, là framework trẻ nhất trong nhóm Trong hai năm qua, Vue đã tăng cường độ phổ biến đáng kể mặc dù không có sự hỗ trợ từ một công ty lớn Phiên bản ổn định hiện tại của Vue là 2.17, được phát hành vào tháng 8 năm 2018, và các cộng tác viên của Vue nhận được sự hỗ trợ từ Patreon.
3, hiện đang trong giai đoạn tạo mẫu và đang có kế hoạch chuyển sang TypeScript
Hình 2.5 So sánh mức độ phổ biến Angular, ReactJS và VueJS
Angular là framework hoàn thiện nhất với sự hỗ trợ mạnh mẽ từ cộng đồng và cung cấp một gói hoàn chỉnh Mặc dù có đường cong học tập dốc và các khái niệm phát triển phức tạp, Angular là lựa chọn lý tưởng cho các công ty có đội ngũ lớn và các nhà phát triển quen thuộc với TypeScript.
React đã trưởng thành và nhận được sự đóng góp lớn từ cộng đồng, trở thành một công cụ phổ biến trong thị trường việc làm Tương lai của React rất tươi sáng, đặc biệt là cho những người mới bắt đầu với các khung JavaScript front-end, các công ty khởi nghiệp và những nhà phát triển ưa chuộng sự linh hoạt Khả năng tích hợp dễ dàng với các khung công tác khác giúp React có lợi thế nổi bật cho những ai muốn linh hoạt trong mã nguồn của mình.
Vue là một framework JavaScript mới nổi, không có sự hỗ trợ từ các công ty lớn, nhưng đã chứng tỏ sức mạnh cạnh tranh với Angular và React trong những năm qua Sự lựa chọn của nhiều ông lớn Trung Quốc như Alibaba và Baidu sử dụng Vue làm khung front-end chính cho thấy tiềm năng phát triển của nó Tuy nhiên, vẫn còn phải xem liệu Vue có thể duy trì và phát triển vị thế của mình trong tương lai.
Tổng quan về Angular
Angular, thường được biết đến với tên gọi "Angular 2+" hoặc "Angular v2 trở lên", là một khung ứng dụng web mã nguồn mở được phát triển dựa trên TypeScript bởi nhóm Angular tại Google cùng với sự hỗ trợ của cộng đồng Đây là một phiên bản viết lại hoàn toàn của AngularJS, được tạo ra bởi cùng một nhóm phát triển.
Một trong những tính năng nổi bật của Angular 2 là khả năng phát triển ứng dụng cho nhiều nền tảng khác nhau, bao gồm web, di động và máy tính để bàn gốc, điều mà AngularJS không hỗ trợ cho di động.
Angular là một nền tảng miễn phí được phát triển để xây dựng các ứng dụng web động, đặc biệt là các ứng dụng một trang (SPA) Nền tảng này được hàng nghìn nhà phát triển trên toàn thế giới ưa chuộng.
So sánh Angular, ReactJS và VueJS
Angular, được phát triển bởi Google và ra mắt lần đầu vào năm 2010, là một khung JavaScript dựa trên TypeScript Năm 2016 đánh dấu một bước ngoặt quan trọng với sự ra mắt của Angular 2, khi tên gọi "AngularJS" bị loại bỏ Hiện tại, Angular 2+ được gọi đơn giản là Angular Mặc dù AngularJS (phiên bản 1) vẫn tiếp tục nhận được các bản cập nhật, nhưng bài viết này sẽ tập trung vào Angular Phiên bản ổn định mới nhất hiện nay là Angular 7, được phát hành vào tháng 10 năm 2018.
React, do Facebook phát triển, được ra mắt lần đầu vào năm 2013 và hiện đang được sử dụng phổ biến trong các sản phẩm của công ty như Facebook, Instagram và WhatsApp Phiên bản ổn định mới nhất là 16.X, đã được phát hành vào tháng 11 năm 2023.
Vue, hay còn gọi là Vue.js, là framework JavaScript trẻ nhất, được phát triển bởi Evan You, một cựu nhân viên của Google vào năm 2014 Trong hai năm qua, Vue đã tăng trưởng đáng kể về mức độ phổ biến, mặc dù không nhận được sự hỗ trợ từ một công ty lớn Phiên bản ổn định hiện tại là 2.17, được phát hành vào tháng 8 năm 2018, và cộng đồng phát triển Vue được hỗ trợ thông qua Patreon.
3, hiện đang trong giai đoạn tạo mẫu và đang có kế hoạch chuyển sang TypeScript
Hình 2.5 So sánh mức độ phổ biến Angular, ReactJS và VueJS
Angular là một framework hoàn thiện và hỗ trợ tốt từ cộng đồng, nhưng có đường cong học tập dốc và các khái niệm phát triển phức tạp Đây là lựa chọn lý tưởng cho các công ty có đội ngũ lớn và cho những nhà phát triển quen thuộc với TypeScript.
React đã trưởng thành với sự đóng góp lớn từ cộng đồng và đang ngày càng được chấp nhận rộng rãi Thị trường việc làm cho React rất khả quan, cho thấy tương lai tươi sáng cho khung công tác này Đây là lựa chọn lý tưởng cho những người mớ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 ưa thích sự linh hoạt Khả năng tích hợp dễ dàng với các khung công tác khác mang lại lợi thế lớn cho những ai muốn có sự linh hoạt trong mã nguồn của mình.
Vue là một framework JavaScript mới nổi, không có sự hỗ trợ từ các công ty lớn, nhưng đã chứng tỏ khả năng cạnh tranh mạnh mẽ với Angular và React trong vài năm qua Sự lựa chọn của nhiều gã khổng lồ Trung Quốc như Alibaba và Baidu sử dụng Vue làm khung front-end chính đã góp phần vào sự phát triển của nó Tuy nhiên, hiệu quả lâu dài của Vue vẫn cần được theo dõi.
Vue là lựa chọn hoàn hảo cho những ai yêu thích sự đơn giản nhưng vẫn cần tính linh hoạt trong phát triển ứng dụng Tuy nhiên, trong tương lai, người dùng nên thận trọng với những thay đổi có thể xảy ra trong công nghệ này.
2.5.2.4 Sử dụng Angular trong dự án
Trong dự án này, trang end-user và trang admin được phát triển dựa trên Angular phiên bản 10.2.5
Giới thiệu
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 MongoDB Inc, có trụ sở tại New York, ban đầu như một nền tảng dịch vụ (Platform as a Service - PaaS) Đến năm 2009, MongoDB chính thức ra mắt thị trường với vai trò là 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 này Nhiều tổ chức lớn và vừa như SourceForge, Foursquare, và eBay đã áp dụng MongoDB để phát triển cơ sở dữ liệu của họ.
MongoDB là một cơ sở dữ liệu hướng đối tượng, cho phép lưu trữ dữ liệu linh hoạt mà 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ệ Điều này cho phép lưu trữ nhiều loại dữ liệu khác nhau trong cùng một Collection (tương đương với Table trong SQL) Nhờ vào đặc điểm này, MongoDB có khả năng lưu trữ 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 trữ.
MongoDB là một cơ sở dữ liệu phân tán, mang lại những đặc điểm nổi bật như tính sẵn sàng cao và khả năng mở rộng theo chiều ngang, giúp tối ưu hóa hiệu suất và khả năng phục vụ trong môi trường dữ liệu lớn.
Đặc trưng
MongoDB là cơ sở dữ liệu NoSQL loại Document Database với nhiều yếu tố được bổ sung để nâng cao hiệu suất sử dụng như Index, Schema,
MongoDB được lập trình bằng ngôn ngữ C++ và hỗ trợ tốt với các Javascript Framework
Các khái niệm tiêu biểu khi sử dụng MongoDB: [3]
Tài liệu trong MongoDB là đơn vị cơ bản của dữ liệu, tương đương với một dòng trong bảng SQL Mỗi tài liệu được cấu trúc dưới dạng một chuỗi JSON độc lập.
Collection là một tập hợp các tài liệu có thuộc tính tương tự, tương đương với bảng (Table) trong SQL Sự khác biệt lớn nhất giữa chúng là bảng trong SQL có cấu trúc cố định, yêu cầu dữ liệu phải tuân theo quy định đó, trong khi Collection cho phép nhập liệu tự do với các tài liệu có thuộc tính khác nhau mà không gặp lỗi.
Database trong MongoDB là các cơ sở dữ liệu độc lập, bao gồm một hoặc nhiều Collection cùng với các cài đặt và phân quyền liên quan.
Khóa _id là một định danh đặc biệt được tự động tạo ra bởi MongoDB khi thêm một Document vào Collection Mỗi Document trong Collection đều có một _id duy nhất, đảm bảo tính riêng biệt cho từng tài liệu.
Chỉ mục (Index) trong MongoDB là một cấu trúc dữ liệu quan trọng, giúp thu thập thông tin về các trường trong Document của Collection, từ đó tăng tốc độ truy vấn đáng kể Tuy nhiên, việc tạo thêm chỉ mục cũng làm tăng dung lượng bộ nhớ tiêu hao cho cơ sở dữ liệu Trường _id là trường chỉ mục mặc định luôn được khởi tạo khi thêm mới một Document.
MongoDB hỗ trợ truy vấn dữ liệu hiệu quả với nhiều câu lệnh bổ trợ, giúp đơn giản hóa quá trình truy vấn so với các ngôn ngữ truyền thống, đồng thời vẫn đảm bảo tốc độ truy vấn nhanh chóng.
Ưu điểm
Lược đồ dữ liệu linh hoạt trong cơ sở dữ liệu NoSQL cho phép tổ chức dữ liệu theo kiểu Document Database, cho phép lưu trữ các Document với thuộc tính và kích thước khác nhau trong cùng một Collection của MongoDB.
Tăng tốc độ truy vấn dữ liệu hiệu quả bằng cách khởi tạo Index cho các trường thông thường, giúp cải thiện đáng kể tốc độ truy xuất thông tin.
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)
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.
Khuyết điểm
Cơ sở dữ liệu không có cấu trúc, như MongoDB, loại bỏ các ràng buộc khóa ngoại và khóa chính của cơ sở dữ liệu quan hệ, dẫn đến việc các vấn đề về toàn vẹn dữ liệu phải được xử lý bởi Server ứng dụng Điều này cũng có nghĩa là MongoDB không cảnh báo về các sai sót trong dữ liệu đầu vào do thiếu các quy định ràng buộc.
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
Aspose Cells
Aspose.Cells for Java is a powerful class library designed for creating and managing Microsoft Excel spreadsheets within Java applications, independent of Microsoft Office Automation or other products.
Aspose.Cells for Java là một API mạnh mẽ cho phép các nhà phát triển Java tích hợp khả năng đọc, viết và thao tác bảng tính Excel trực tiếp trong ứng dụng của họ mà không cần phụ thuộc vào Microsoft Excel.
Aspose.Cells cho Java là một API mạnh mẽ và mở rộng, cung cấp nhiều tính năng vượt trội so với các thành phần khác trên thị trường Nó cho phép xuất dữ liệu và định dạng bảng tính chi tiế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, cũng như quản lý luồng dữ liệu Excel, với khả năng lưu kết quả ở nhiều định dạng khác nhau.
Aspose word
Aspose.Words cho NET là thư viện lớp mạnh mẽ cho phép thực hiện nhiều tác vụ xử lý văn bản trong ứng dụng NET mà không cần sử dụng tự động hóa hay các sản phẩm của Microsoft Office trên máy chủ phát triển.
Aspose.Words cho NET là một API mạnh mẽ giúp xử lý văn bản, cho phép thực hiện nhiều tác vụ xử lý văn bản trực tiếp trong các ứng dụng Java.
Aspose.Words for NET supports various document formats including DOC, OOXML, RTF, HTML, OpenDocument, PDF, XPS, and EPUB With Aspose.Words, users can view, create, edit, convert, display, and print documents without the need for Microsoft Word.
Json Web Token
JWT (Json Web Token) là một mã thông báo tiêu chuẩn mở cho phép trao đổi thông tin qua các yêu cầu HTTP, với thông tin được xác minh và đảm bảo tính đáng tin cậy nhờ vào chữ ký So với các phiên làm việc truyền thống, JWT mang lại nhiều lợi ích vượt trội.
• 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
Máy chủ cung cấp hiệu suất tốt hơn bằng cách đọc thông tin theo yêu cầu, trong khi nếu sử dụng phiên, hệ thống sẽ phải truy vấn thông tin từ 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 là phương pháp mà người phát hành mã thông báo JWT và người xác minh mã thông báo sử dụng cùng một khóa bí mật để mã hóa và kiểm tra tính hợp lệ của mã thông báo.
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
HMAC yêu cầu cả hai bên chia sẻ một khóa bí mật, cho phép bên nhận tạo mã JWT hợp lệ từ khóa đó Trong khi đó, RSA sử dụng khóa công khai để kiểm tra, nhưng không thể tạo mã JWT mới, giúp bảo mật chữ ký 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
Ngx-charts
Ngx-chart là một thư viện biểu đồ mạnh mẽ dành cho Angular, cho phép kết xuất và tạo hoạt ảnh cho các phần tử SVG bằng cách sử dụng thư viện JavaScript D3 Thư viện này được ưa chuộng trong phát triển ứng dụng Angular nhờ vào khả năng hiển thị biểu đồ dễ dàng và tích hợp tốt với các tính năng của nền tảng Angular như AoT và Universal Ngx-chart mang lại sự tiện lợi và hiệu quả cho các nhà phát triển khi xây dựng ứng dụng.
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ị
KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU
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 là website tuyển dụng thu hút 100,000 lượt truy cập mỗi ngày, cung cấp dữ liệu hồ sơ ứng viên đa dạng và chất lượng cao, trở thành công cụ hỗ trợ đắc lực cho công tác tuyển dụng Đặc biệt, dịch vụ này rất hữu ích và tiết kiệm chi phí cho các công ty thường xuyên tuyển dụng nhiều vị trí Việc đăng tuyển công việc trên website diễn ra đơn giản và hiệu quả, nhờ vào sự hỗ trợ tận tâm từ bộ phận chăm sóc khách hàng, giúp công việc của bạn được đăng tải nhanh chóng và rõ ràng.
Hình 3.2 Chức năng của website Career Link
- Giao diện thân thiện, dễ sử dụng
Nền tảng này cung cấp đầy đủ tính năng cho nhà tuyển dụng đăng tin và tìm kiếm hồ sơ ứng viên phù hợp, đồng thời giúp người dùng dễ dàng tạo CV để ứng tuyển vào các vị trí 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
- Có hỗ trợ chatbox để hỗ trợ người dùng
- Có hỗ trợ chia sẻ các công việc quan tâm thông qua các kênh Facebook, Twitter, LinkedIn
- Có hỗ trợ các mẫu CV có sẵn, rất tiện, đẹp
Topdev
TopDev là mạng lưới tuyển dụng hàng đầu tại Việt Nam trong lĩnh vực Di động và CNTT, cung cấp giải pháp nhân tài công nghệ Với khả năng bao phủ 95% cộng đồng công nghệ trong nước, TopDev phục vụ khách hàng không chỉ tại Việt Nam mà còn mở rộng ra Đông Nam Á.
Mạng lưới công nghệ bao gồm tất cả các hoạt động và giá trị mà nhân lực công nghệ cần để làm việc và giải trí, như sự kiện, cộng đồng, trang web và diễn đàn Dựa trên mạng lưới này, Topdev đã kết nối được 95% cộng đồng công nghệ tại 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.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
- Giao diện thân thiện, dễ sử dụng
Nền tảng này cung cấp đầy đủ tính năng cho nhà tuyển dụng đăng tin và tìm kiếm hồ sơ ứng viên phù hợp, đồng thời giúp 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
- Có hỗ trợ chatbox để hỗ trợ người dùng
- Có hỗ trợ chia sẻ các công việc quan tâm thông qua các kênh Facebook, Twitter, LinkedIn
- Có hỗ trợ các mẫu CV có sẵn, rất tiện, đẹp: 02 nguồn CV (tin Basic Plus & Distinction)
- Hiển thị tin đăng trên các website chuyên công nghệ liên kết: Techtalk.vn, Techmaster, Freetuts
- Có Chương trình tích lũy đơn hàng & Khách hàng thân thiết: TopDev Rewards
- 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
- Cam kết đảm bảo chất lượng dịch vụ (đối với gói Enterprise trở lên)
So sánh Careerlink và Topdev
Bảng 3.1 So sánh CareerLink và Topdev
Giá cả Gói SME/ Startup:
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
Thời hạn sử dụng tin đăng
01 năm kể từ ngày đặt mua
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
Thời gian hiển thị mỗi tin đăng (đối với gói
Tổng: 60 ngày 30 ngày chính thức + 30 ngày bảo hảnh
Kết quả thu thập và kiểm tra các hệ thống hiện tại đã cung cấp cho chúng tôi cái nhìn tổng quát về quy trình tìm việc làm, từ đó đáp ứng hiệu quả nhu cầu việc làm cho sinh viên trường ĐH Sư Phạm Kỹ Thuật TP.HCM và các nhà tuyển dụng Hệ thống sẽ được cấu trúc bao gồm nhiều phần khác nhau nhằm tối ưu hóa trải nghiệm cho cả hai bên.
• 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 dành cho người dùng cuối hỗ trợ sinh viên tìm kiếm nhà tuyển dụng và cơ hội việc làm, cho phép họ lưu việc làm quan tâm và nộp đơn ứng tuyển Đối với nhà tuyển dụng, nền tảng này cung cấp tính năng đăng tin tuyển dụng và quản lý hồ sơ ứng viên một cách hiệu quả.
• 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.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
• 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
- Ứ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
• Cập nhật thông tin cá nhân
• 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ị
• 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
• 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
• 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ệ
• Xem danh sách, tìm kiếm ngành
• Thêm mới, xóa, cập nhật ngành
• 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
• Thêm mới, xóa, cập nhật vị trí công việc
- Quản lý nhà tuyển dụng
• Xem danh sách, tìm kiếm nhà tuyển dụng
• Thêm mới, xóa, cập nhật nhà tuyển dụng
• Duyệt, hủy duyệt nhà tuyển dụng
• Xem danh sách filter theo lĩnh vực
• Xem danh sách, tìm kiếm sinh viên
• Thêm mới, xóa, cập nhật sinh viên
• Xem danh sách filter theo ngành, khoa
• Xem danh sách, tìm kiếm việc làm
• Thêm mới, xóa, cập nhật việc làm
• Xem danh sách filter theo ngành, khoa, lĩnh vực, vị trí công việc, việc làm duyệt, chưa duyệt
• Duyệt, hủy duyệt thông tin tuyển dụng
- Quản lý câu hỏi khảo sát sinh viên
• Xem danh sách, tìm kiếm câu hỏi khảo sát sinh viên
• Thêm mới, xóa, cập nhật câu hỏi khảo sát sinh viên
- Quản lý câu hỏi khảo sát nhà tuyển dụng
• Xem danh sách, tìm kiếm câu hỏi khảo sát nhà tuyển dụng
• Thêm mới, xóa, cập nhật câu hỏi khảo sát nhà tuyển dụng
- Xem các thống kê kết quả khảo sát sinh viên
- Xem các thống kê kết quả khảo sát doanh nghiệp
• Xem danh sách, tìm kiếm email
• Gửi mail hàng loạt cho sinh viên, doanh nghiệp
3.2.1.2 Yêu cầu chức năng hệ thống a Phân quyền:
- Admin: có mọi quyền trong hệ thống
- Người tìm việc: có quyền trên trang end-user dành cho người tìm việc
- Nhà tuyển dụng: có quền trên trang end-user dành cho nhà tuyển dụng b Thông báo
- Luôn luôn hiển thị thông báo cho người dùng biết cho dùng hành động đó thành công hay thất bại c Bảo mật
- Luôn kiểm tra tính hợp lệ của dữ liệu trước khi xử lý d Lưu trữ dữ liệu, hình ảnh e Ngôn ngữ:
3.2.2 Yêu cầu phi chức năng a Khả năng sử dụng (Usability)
- Giao diện thân thiện, dễ sử dụng đối với người dùng
- Dễ thao tác b Tính hiệu quả (Effectiveness)
- Tốc độ tìm kiếm nhanh và hiệu quả
- Tốc độ load trang nhanh c Khả năng tương thích (Compatibility)
- Tương thích với nhiều thiết bị duyệt web như máy tính, điện thoại, tablet d Khả năng phát triển (Development)
- Dễ dàng mở rộng và phát triển sau này.