Tải bản đầy đủ (.docx) (76 trang)

Phát triển ứng dụng hỗ trợ quản lý sinh viên thực tập doanh nghiệp và gợi ý định hướng nghề nghiệp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.89 MB, 76 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 1
PHÁT TRIỂN ỨNG DỤNG HỖ TRỢ QUẢN LÝ SINH VIÊN THỰC TẬP DOANH
NGHIỆP VÀ GỢI Ý ĐỊNH HƯỚNG NGHỀ NGHIỆP

GV HƯỚNG DẪN:
Nguyễn Thị Thanh Trúc
SV THỰC HIỆN:
Lê Thế Phúc – 20521764
Nguyễn Nhật Hồng Qn – 20521790

TP. HỒ CHÍ MINH, 2023


LỜI CẢM ƠN
Lời đầu tiên, em xin được gửi lời cảm ơn chân thành đến cô với sự giúp
đỡ, giảng dạy nhiệt tình trong suốt quá trình thực hiện đồ án của môn học này.
Đối với đề tài này, ban đầu cơng việc thực hiện gặp rất nhiều khó khăn vì chưa
hiểu rõ được chi tiết của một quy trình thực tập của sinh viên là như thế nào. Tuy
nhiên, với sự tận tâm và phân tích tỉ mỉ, dễ hiểu của cơ đã giúp nhóm chúng em
có được cái nhìn rõ hơn về vấn đề mình đang cần phải giải quyết. Trong suốt q
trình thực hiện, cơ ln theo dõi tiến độ thực hiện và đưa ra những góp ý bổ ích
giúp cho cơng việc thực hiện của nhóm trở nên đơn giản hơn rất nhiều so với
trước đó. Mặc dù thời gian của môn học là không nhiều, nhưng những kiến thức
mà chúng em nhận được là rất lớn. Qua đó, em xin thay mặt nhóm để gửi đến cơ
lời cảm ơn sâu sắc với những gì cơ đã truyền đạt cho chúng em. Em xin chân
thành cảm ơn.
TP.Hồ Chí Minh, tháng 7 năm 2023




MỤC LỤC
Chương 1: Tổng quan

1

1.1.

Mục tiêu đề tài

1

1.2.

Đối tượng nghiên cứu

1

1.3.

Hướng nghiên cứu

1

Chương 2: Cơ sở lý thuyết và Công nghệ sử dụng
2.1.

Cơ sở lý thuyết


3
3

2.1.1.

Thuật tốn Tìm kiếm nhị phân (Binary Search)

3

2.1.2.

Thuật tốn Sắp xếp nhanh (Quick Sort)

5

2.1.3.

Recommendation System

7

2.2.

Cơng nghệ sử dụng

10

2.2.1.

Tổng quan cơng nghệ sử dụng


10

2.2.2.

Tìm hiểu cơng nghệ

10

Chương 3: Phân tích bài tốn

20

3.1.

Danh sách các u cầu phần mềm

20

3.2.

Phân tích thiết kế

22

3.2.1.

Use Cases Diagram

22


3.2.2.

Sequence Diagram

54

Chương 4: Thiết kế
4.1.

Thiết kế dữ liệu

4.1.1.

Cơ sở dữ liệu

60
60
60


4.1.2.
4.2.

Mô tả

Thiết kế giao diện

Chương 5: Tổng kết


60
76
79

5.1.

Kết luận

79

5.2.

Hướng phát triển

79


Chương 1: Tổng quan
1.1.
-

Mục tiêu đề tài
Xây dựng ứng dụng “Quản lý sinh viên thực tập doanh nghiệp và gợi ý định
hướng nghề nghiệp” nhằm giúp sinh viên và nhà trường có thể quản lý, đồng
bộ thơng tin, thuận tiện theo dõi quá trình thực tập, giấy tờ hay các bước đăng
ký thực tập tại doanh nghiệp. Hỗ trợ giảng viên hướng dẫn thực tập đơn giản
hóa các thao tác quản lý và tạo điều kiện tốt nhất cho sinh viên thực tập hiệu
quả.

-


Phát triển ứng dụng với các chức năng đáp ứng đầy đủ yêu cầu người dùng và
linh hoạt để phục vụ cho nhiều hệ thống hơn, gợi ý định hướng nghề nghiệp
giúp bản thân sinh viên biết được thơng tin những ngành mình có thể theo
đuổi trong tương lai.

1.2.


Đối tượng nghiên cứu

Đối tượng được nghiên cứu chính trong đề tài là sinh viên đang trong giai
đoạn phù hợp để đăng ký thực tập doanh nghiệp.



Bên cạnh đó, đối tượng không thể thiếu là giảng viên hướng dẫn và người
quản lý. Đây cũng là các đối tượng mà nhóm hướng đến trong q trình
nghiên cứu và thực hiện đề tài.

1.3.

Hướng nghiên cứu



Tìm hiểu về quy trình thực tập của các trường Đại học, Cao đẳng hiện nay.




Tìm hiểu về mơ hình Quản lý sinh viên.



Khảo sát sinh viên về những vấn đề thường gặp, gây khó khăn cho quá trình
đăng ký thực tập.



Tìm hiểu về các ứng dụng gợi ý hướng nghiệp hiện nay: JobWay, …

1




Xây dựng các yêu cầu cơ bản và cần thiết cho ứng dụng.



Phân tích chi tiết cho từng yêu cầu bài tốn.



Tìm hiểu về kiến trúc phần mềm Client – Server.



Tìm hiểu Figma để thiết kế UI cho ứng dụng.




Phát triển ứng dụng trên nền tảng ElectronJS.



Sử dụng Trello để quản lý tiến trình thực hiện.



Sử dụng Google Drive để lưu trữ tài liệu.



Cài đặt ứng dụng bằng IDE Visual Studio Code.

2


Chương 2: Cơ sở lý thuyết và Công nghệ sử dụng
2.1.

Cơ sở lý thuyết
2.1.1. Thuật tốn Tìm kiếm nhị phân (Binary Search)
a.

Ý tưởng thuật tốn




Thuật tốn tìm kiếm nhị phân hoạt động trên các mảng đã
được sắp xếp. Thuật toán bắt đầu bằng việc so sánh một phần
tử đứng chính giữa mảng với giá trị cần tìm. Nếu bằng nhau,
vị trí của nó trong mảng sẽ được trả về. Nếu giá trị cần tìm
nhỏ hơn phần tử này, quá trình tìm kiếm tiếp tục ở nửa nhỏ
hơn của mảng. Nếu giá trị cần tìm lớn hơn phần tử ở giữa,
quá trình tìm kiếm tiếp tục ở nửa lớn hơn của mảng. Bằng
cách này, ở mỗi phép lặp thuật tốn có thể loại bỏ nửa mảng
mà giá trị cần tìm chắc chắn khơng xuất hiện.

b.

Các bước thực hiện



Giả sử mảng tìm kiếm bao gồm các phần tử nằm trong left
(chỉ số của phần tử đầu mảng) và right (chỉ số của phần tử
cuối mảng). Các bước của giải thuật như sau:

Các bước thực hiện
Bước 1
Bước 2

Chi tiết


Gán left = 0; right = n – 1




mid = ¿ ¿ 2

¿

(mid là chỉ số của

phần tử giữa mảng)


So sánh a[mid] với x (giá trị cần tìm
kiếm):

3


+ a[mid] = x  Tìm thấy giá trị
 Dừng thuật tốn và trả về
kết quả tìm thấy giá trị trong
mảng
+ a[mid] > x  Gán right =
mid – 1  Tìm kiếm x trong
mảng con a[left], …, a[mid –
1]
+ a[mid] < x  Gán left = mid
+ 1  Tìm kiếm x trong
mảng con a[mid + 1], …,
a[right]



Bước 3
c.

Nếu left ≤ right thì lặp lại bước 2.
Ngược lại thì dừng thuật toán

Độ phức tạp
Trường hợp

Số lần so sánh

Tốt nhất

1

Xấu nhất

log2(n)

Trung bình

log2( )

n
2

2.1.2. Thuật tốn Sắp xếp nhanh (Quick Sort)
a. Ý tưởng thuật toán



Thuật toán sẽ chọn ra một phần tử trong mảng để làm điểm đánh
dấu gọi là pivot. Sau khi chọn được điểm đánh dấu, nó sẽ chia mảng

4


đó thành hai mảng con bằng cách so sánh với pivot đã chọn. Một
mảng sẽ bao gồm các phần tử nhỏ hơn hoặc bằng pivot và mảng cịn
lại ln lớn hơn hoặc bằng pivot.


Sau đó, q trình này được lặp lại đủ số lần cho đến khi các mảng
nhỏ có thể được sắp xếp một cách dễ dàng để tạo ra một tập dữ liệu
được sắp xếp đầy đủ.
b. Các bước thực hiện

Các bước thực hiện

Chi tiết


Bước 1

Gán left là vị trí đầu danh sách bên
trái, right là vị trí đầu danh sách bên
phải

Bước 2




Nếu left ≥ right thì kết thúc (danh
sách chỉ có 1 phần tử). Ngược lại thì:


Bước 2.1: Chọn tùy ý một phần tử
a[k] trong danh sách (left ≤ k ≤
right) mà tại đó x = a[k]; i = left; j
= right



Bước 2.2: Tìm kiếm và đổi chỗ cặp
phần tử a[i], a[j] nằm sai chỗ:
o a[i] < x  i++
o a[i] > x  j-o Nếu i ≤ j thì đổi chỗ a[i] và a[j]
o i++; j--

5




Bước 2.3: Nếu i ≤ j thì lặp lại bước
2.2



Nếu left < i thì gọi đệ quy để phân
hoạch danh sách con a[left], …,

a[j]

Bước 3


Nếu i < right thì gọi đệ quy để phân
hoạch danh sách con a[i], …,
a[right]

c. Độ phức tạp
Trường hợp

Số lần so sánh

Tốt nhất

1

Xấu nhất

nlog(n)

Trung bình

n2

2.1.3. Recommendation System


Recommendation System là hệ thống dựa vào “sở thích” của người

dùng trong q khứ, để dự đốn “sở thích” của người dùng trong
tương lại và thực hiện gợi ý cho người dùng. Để hệ thống hoạt động
tốt thì việc trước tiên đó chính là phản hồi từ người dùng.



Recommendation System được chia thành 2 nhóm lớn: Hệ thống
dựa trên nội dung (Content – based system) và Hệ thống lọc cộng
tác (Collaborative system)



Hệ thống dựa trên nội dung (Content – based system):
o Là một hệ thống gợi ý đề xuất các sản phẩm hoặc nội dung tương
tự với nội dung mà người đã thích hoặc tìm kiếm trước đó, dựa

6


trên thuộc tính của các sản phẩm đó. Q trình thực hiện hệ
thống gợi ý dựa trên nội dung được thực hiện theo các bước sau:
Các bước thực hiện

Chi tiết


Thu thập dữ liệu: Thu thập thơng tin
về thuộc tính của các sản phẩm, bao

Bước 1


gồm tên, mô tả, thể loại, tác giả, đạo
diễn, đánh giá của người dùng, …


Xác định đặc trưng của sản phẩm:
Phân tích các thuộc tính của sản phẩm

Bước 2

để xác định các đặc trưng của sản
phẩm đó, ví dụ thể loại, đạo diễn, diễn
viên, …


Xây dựng mơ hình: Sử dụng các thuật
tốn máy học để xây dựng mơ hình
dựa trên các đặc trưng của sản phẩm.
Các thuật toán phổ biến được sử dụng

Bước 3

trong hệ thống bao gồm Vector Space
Model, Term Frequency-Inverse
Document Frequency và Latent
Semantic Analysis

Bước 4




Tạo các gợi ý: Sử dụng mơ hình để
đưa ra các gợi ý cho người dùng dựa
trên các sản phẩm đã được người
dùng thích hoặc tìm kiếm trước đó.
Các sản phẩm đó có các đặc trưng
tương tự với các sản phẩm đã được
7


người dùng thích hoặc tìm kiếm sẽ
được đề xuất cho người dùng


Đánh giá và cải tiến: Đánh giá hiệu
quả của hệ thống bằng cách sử dụng
các phương pháp đánh giá như độ
chính xác, độ phủ, độ đa dạng, … Sau

Bước 5

đó, cải tiến hệ thống bằng cách tối ưu
hoaas các tham số của mơ hình hoặc
bổ sung các thuộc tính mới của sản
phẩm để tăng độ chính xác và hiệu
quả của hệ thống

o Minh họa:

Hình 2.1: Hình ảnh minh họa về Content – based system

-

Hệ thống lọc cộng tác (Collaborative system):
o Là một hệ thống gợi ý đề xuất sản phẩm cho người dùng dựa trên
sự tương đồng giữa người dùng và lịch sử sử dụng sản phẩm của
họ. Hệ thống lọc cộng tác gồm hai loại: Lọc dựa trên người dùng
(User-based Collaborative) và Lọc dựa trên sản phẩm (Itembased Collaborative)
o Quá trình thực hiện hệ thống lọc cộng tác bao gồm các bước sau:

8


Các bước thực hiện

Chi tiết


Xây dựng ma trận đánh giá: Tạo một
ma trận với người dùng ở hàng và sản

Bước 1

phẩm ở cột, mỗi phần tử trong ma
trận là đánh giá của người dùng đó
với sản phẩm tương ứng


Tính tốn độ tương đồng giữa các
người dùng: Sử dụng các phương


Bước 2

pháp đo độ tương đồng. Ví dụ như
Cosine Similarity để tính tốn độ
tương đồng giữa các người dùng


Bước 3

Đưa ra các gợi ý: Sử dụng độ tương
đồng giữa các người dùng để đưa ra
các gợi ý sản phẩm cho người dùng

o Minh họa:

Hình 2.2: Hình ảnh minh họa về Collaborative system
2.2.

Công nghệ sử dụng
2.2.1. Tổng quan công nghệ sử dụng
o Front-end:


Thư viện Javascript: ReactJS
9




SCSS




Javascript Framework: ElectronJS

o Back-end:


NodeJS (Express)



MySQL

2.2.2. Tìm hiểu cơng nghệ
a. Thư viện ReactJS


Là một thư viện mã nguồn mở được Facebook xây dựng và
phát triển. Thư viện này được sử dụng để tạo các ứng dụng
trang Web hấp dẫn với hiệu quả cao, tốc độ tải trang nhanh.



Các đặc trưng của ReactJS: JSX, Components, One-way Data
Binding, Virtual DOM, Simplicity, Performance.

10



Hình 2.3: Hình ảnh khái qt về các tính năng của
ReactJS


JSX: Viết tắt của Javascript XML. Là phần cú pháp mở rộng
của Javascript và được sử dụng bởi ReactJS.



Components: Ứng dụng ReactJS được tạo ra từ các
components và mỗi component sẽ có logic, cách xử lý, điều
khiển riêng biệt. Vì thế, nó có tính tái sử dụng và điều này
giúp cho hệ thống dễ phát triển, bảo trì và rà soát lỗi trên các
dự án lớn.



One-way Data Binding: ReactJS được thiết kế theo luồng dữ
liệu một chiều hay One-way Data Binding. Flux là một mẫu
kiến trúc giúp dữ liệu của chúng ta ln giữ theo một chiều.
Điều này tạo tính linh hoạt và tính hiệu quả hơn cho ứng dụng.

11




Virtual DOM: Là sự đại diện cho đối tượng DOM gốc và hoạt
động theo cơ chế One-way Data Binding. Người dùng không
cần thao tác trực tiếp trên Real DOM mà vẫn có thể thấy được

các sự thay đổi của nó. Bởi vì Virtual DOM đóng vai trị như
là một model và view nên sự thay đổi một trong hai sẽ kéo
theo thành phần còn lại cũng sẽ thay đổi. Bất cứ khi nào có
một sự thay đổi trong ứng dụng, toàn bộ UI sẽ được rerendered lại trong Virtual DOM và sau đó nó sẽ kiểm tra sự
khác biệt giữa DOM trước đó và DOM mới vừa thay đổi. Khi
hồn thành, Real DOM chỉ cập nhật lại những thành phần thực
sự thay đổi và giữ nguyên phần còn lại.



Simplicity: ReactJS sử dụng JSX để tạo cho ứng dụng trở nên
đơn giản và việc code trở nên dễ hiểu hơn. Như đã biết,
ReactJS được phát triển dựa trên nền tảng component nê có
thể tái sử dụng lại các component khi cần thiết. Điều này giúp
việc học và sử dụng ReactJS trở nên đơn giản hơn.



Performance: ReactJS được biết đến với hiệu suất vơ cùng
tuyệt vời. Đặc trưng này giúp nó trở nên hiệu quả hơn rất
nhiều frameworks hiện nay. Bởi vì ReactJS quản lý một
Virtual DOM (tồn tại hoàn toàn trong bộ nhớ). Do đó, khi tạo
mới một component, chúng ta khơng viết trực tiếp trên Real
DOM mà thay vào đó là viết trên Virtual DOM. Điều này giúp
cho hiệu năng mượt mà và nhanh hơn rất nhiều

b. ElectronJS Framework

12





ElectronJS là một runtime framework cho phép người dùng
tạo ứng dụng chạy trên nền tảng máy tính sử dụng HTML,
CSS và Javascript. Đây là sự kết hợp giữa 2 công nghệ đang
vô cùng phổ biến hiện nay là NodeJS và Chromium.



Thành phần kiến trúc: Chromium, NodeJS và Custom APIs.

Hình 2.5: Hình ảnh mơ tả thành phần kiến trúc của
Electron
+ Chromium: Chịu trách nhiệm tạo và hiển thị các trang
của Web. Nội dung Web được hiển thị trong
Rendering process của ElectronJS và nhờ mơi trường
Chromium, chúng ta có quyền truy cập đến tất cả APIs
của trình duyệt và cơng cụ phát triển.
+ NodeJS: Cho phép truy cập vào vùng hệ thống.
ElectronJS chạy trên nền tảng NodeJS trong chính
Main process của nó. Điều đó giúp chúng ta truy cập
vào tồn bộ chức năng của NodeJS như tương tác với
file hệ thống, hệ điều hành, …

13


+ Custom APIs: Cho phép các nhà phát triển tạo những
trải nghiệm trên máy tính một cách đơn giản và làm

việc dễ dàng với các chức năng có sẵn. ElectronJS có
một API dễ dàng để có thẻ sử dụng các thư viện mà
giúp thực hiện các công việc như tạo và hiển thị menu,
hiển thị các thông báo, làm việc với bàn phím, …


Cách hoạt động: ElectronJS bao gồm 2 tiến trình là main
process và rendering process
+ Main process: Chịu trách nhiệm gửi và nhận các yêu
cầu từ phía Client, chuyển đổi dữ liệu giữa các cửa sổ
khác nhau và là nơi quản lý tất cả bộ nhớ trong hệ
thống. Có thể nói đây là trung tâm trao đổi dữ liệu của
mọi cửa sổ trong ứng dụng.
+ Rendering process: Chịu trách nhiệm hiển thị giao
diện của ứng dụng, tương tác trực tiếp với người dùng,
xử lý các sự kiện và gửi yêu cầu tới Main Process.

14


Hình 2.6: Hình ảnh mơ tả quy trình hoạt động của
Electron


Các đặc trưng nổi bật của ElectronJS:
+ Tính bảo mật.
+ Khả năng truy cập ở cấp độ thấp.
+ Khả năng truy cập vào phần cứng.
+ Tính tái sử dụng.
+ Hiệu năng cao.

+ Tiết kiệm chi phí và thời gian.
+ Có sẵn Module để đóng gói ứng dụng.

c. NodeJS


NodeJS là một nền tảng hướng máy chủ được xây dựng trên
cơ chế Javascript của Chrome. Nó giúp cho việc xây dựng
ứng dụng trở nên nhanh và dễ dàng mở rộng hơn.

15


Thành phần kiến trúc: Requests, NodeJS Server, Event



Queue, Thread Pool, Event Loop, External Resources.
Các thành phần quan trọng của NodeJS được mơ tả qua sơ



đồ dưới đây:

Hình 2.7: Hình ảnh khái quát các thành phần quan trọng trong
NodeJS


Các đặc trưng của NodeJS:
+ Asynchronous and Event Driven: Tất cả APIs của thư

viện NodeJS đều bất đồng bộ. NodeJS dựa trên máy
chủ và không đợi cho tới khi một API trả về dữ liệu.
Máy chủ chuyển đến API tiếp theo sau khi gọi nó và
sẽ có một cơ chế thơng báo sự kiên của NodeJS giúp
máy chủ nhận được phản hồi từ API trước đó đã gọi.
+ Single Threaded, Highly Scalable: NodeJS sử dụng
mơ hình đơn luồng với các sự kiện lặp. Cơ chế sự
16



×