Tải bản đầy đủ (.pdf) (98 trang)

KHÓA LUẬN TỐT NGHIỆP PHÁT TRIỂN ỨNG DỤNG ĐÀO TẠO VÀ SÁT HẠCH CẤP GIẤY PHÉP LÁI XE

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 (5.51 MB, 98 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

BÀNH THANH SƠN
PHẠM TRẦN CHÍNH

KHĨA LUẬN TỐT NGHIỆP

PHÁT TRIỂN ỨNG DỤNG ĐÀO TẠO
VÀ SÁT HẠCH CẤP GIẤY PHÉP LÁI XE
Application development for training
and testing of driving licenses

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP. HỒ CHÍ MINH, NĂM 2021


ĐẠ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

BÀNH THANH SƠN – 17520984
PHẠM TRẦN CHÍNH - 17520292

KHĨA LUẬN TỐT NGHIỆP

PHÁT TRIỂN ỨNG DỤNG ĐÀO TẠO


VÀ SÁT HẠCH CẤP GIẤY PHÉP LÁI XE
Application development for training
and testing of driving licenses

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
ThS. HUỲNH HỒ THỊ MỘNG TRINH

TP. HỒ CHÍ MINH, 2021


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
…………………… ngày ………………….. của Hiệu trưởng Trường Đại học Công
nghệ Thông tin.

1.

…………………………………………. – Chủ tịch.

2.

…………………………………………. – Thư ký.

3.

…………………………………………. – Ủy viên.


4.

…………………………………………. – Ủy viên.


LỜI CẢM ƠN
Trãi qua quãng thời gian học tập và rèn luyện tại khoa Công nghệ Phần mềm,
trường Đại học Công nghệ Thông – ĐHQG TP. HCM, chúng em đã được trang bị
những kỹ năng và kiến thức cần thiết để thực hiện khóa luận tốt nghiệp của mình.
Để hồn thành được khóa luận này là nhờ có kiến thức và sự hướng dẫn tận
tình của q thầy cơ.
Trước hết, em xin gửi lời cảm ơn tới Ban Giám hiệu trường Đại học Công
nghệ Thông tin đã tạo điều kiện về cơ sở vật chất, môi trường học tập và nghiên cứu
hiện đại để chúng em thuận lợi tiếp thu kiến thức, các thầy cô các bộ môn đã chỉ dạy
cho chúng em các kiến thức cơ bản để có thể thực hiện được khóa luận tốt nghiệp
như ngày hơm nay.
Quan trọng nhất, chúng em xin gửi lời cảm ơn tới cơ Huỳnh Hồ Thị Mộng
Trinh đã tận tình giúp đỡ, định hướng cách tư duy để chúng em thực hiện khóa luận
tốt nghiệp này. Đó là những góp ý vơ cùng q báu khơng chỉ trong q trình thực
hiện khóa luận này mà cịn là kiến thức cho chúng em trong quá trình nghiên cứu và
lập nghiệp về sau.
Vì nhiều lý do, trong q trình thực hiện khóa luận chúng em khơng tránh khỏi
những sai sót, chúng em kính mong nhận được sự chỉ dẫn và góp ý của thầy cơ để đề
tài khóa luận được hồn thiện hơn.
Chúng em xin chân thành cảm ơn. Chúc những điều tốt đẹp nhất sẽ luôn đồng
hành cùng mọi người.
Thành phố Hồ Chí Minh, ngày 18 tháng 6 năm 2021
Sinh viên
BÀNH THANH SƠN
PHẠM TRẦN CHÍNH



MỤC LỤC
DANH MỤC BẢNG VÀ HÌNH ...................................................................................
TĨM TẮT KHĨA LUẬN .......................................................................................... 1
Chương 1.

TỔNG QUAN ĐỀ TÀI .......................................................................2

1.1. Lý do lựa chọn đề tài .....................................................................................2
1.2. Khảo sát nhu cầu............................................................................................3
1.2.1.

Thông tin cá nhân người được khảo sát ..............................................3

1.2.2.

Thực trạng ...........................................................................................3

1.2.3.

Nhu cầu thực tế....................................................................................4

1.3. Tìm hiểu về các ứng dụng liên quan .............................................................5
1.3.1.

Ứng dụng “Ôn thi GPLX 600 câu” ....................................................5

1.3.2.


Phần mềm luyện thi từ Bộ Giao thông vận tải ....................................5

1.3.3.

Tổng kết ...............................................................................................6

1.4. Phạm vi ..........................................................................................................7
1.5. Phương pháp thực hiện ..................................................................................8
1.6. Bố cục báo cáo...............................................................................................9
1.7. Ý nghĩa thực tiễn .........................................................................................10
Chương 2.

KIẾN THỨC NỀN TẢNG, KỸ THUẬT..........................................11

2.1. Tổng quan về PHP và Phalcon ....................................................................11
2.1.1.

PHP ....................................................................................................11

2.1.2.

Phalcon ..............................................................................................12

2.2. Tổng quan ReactJS, NextJS, Ant Design, TailwindCSS, React Query,
Redux ....................................................................................................................14
2.2.1.

ReactJS ..............................................................................................14



2.2.2.

NextJS ...............................................................................................17

2.2.3.

Ant Design .........................................................................................18

2.2.4.

TailwindCSS .....................................................................................19

2.2.5.

React Query .......................................................................................19

2.2.6.

Redux và Redux Toolkit....................................................................21

2.3. AaPanel Control Panel ................................................................................24
2.4. CloudFlare ...................................................................................................25
2.4.1.

CloudFlare là gì? ...............................................................................25

2.4.2.

Ưu nhược điểm của CloudFlare ........................................................25


Chương 3.

PHÂN TÍCH, THIẾT KẾ, TRIỂN KHAI HỆ THỐNG....................27

3.1. Xác định và phân tích yêu cầu hệ thống ......................................................27
3.1.1.

Xác định yêu cầu hệ thống ................................................................27

3.1.2.

Phân tích yêu cầu hệ thống ................................................................28

3.1.3.

Use-case .............................................................................................31

3.2. Thiết kế hệ thống .........................................................................................50
3.2.1.

Thiết kế cơ sở dữ liệu ........................................................................50

3.2.2.

Thiết kế kiến trúc hệ thống ................................................................68

3.2.3.

Thiết kế giao diện hệ thống ...............................................................70


3.3. Triển khai hệ thống ......................................................................................76
Chương 4.

KẾT LUẬN, ĐÁNH GIÁ, HƯỚNG PHÁT TRIỂN ........................78

4.1. Kết quả đạt được ..........................................................................................78
4.2. Định hướng phát triển..................................................................................85


DANH MỤC HÌNH
Hình 1.1 – Biểu đồ tỉ lệ mong muốn chức năng sẽ xuất hiện trong hệ thống.............4
Hình 2.1 – Lợi ích của PHP ......................................................................................11
Hình 2.2 – Tốc độ của Phalcon so với những Framework khác ...............................13
Hình 2.3 – DOM Tree ...............................................................................................15
Hình 2.4 – Ưu điểm của React ..................................................................................17
Hình 2.5 – So sánh NextJS và framework tương tự - GatsbyJs ................................18
Hình 2.6 – Ant Design ..............................................................................................19
Hình 2.7 – Sơ đồ life-cycle của React Query............................................................20
Hình 2.8 – Cách Redux làm việc ..............................................................................22
Hình 2.9 – Cách làm việc của Redux ........................................................................23
Hình 2.10 – Giao diện của aaPanel ...........................................................................24
Hình 2.11 – So sánh giữa CloudFlare và khơng dùng CloudFlare ...........................25
Hình 3.1 – Use tổng quát của người dùng ................................................................31
Hình 3.2 – Use case tổng quát của quản trị viên .......................................................32
Hình 3.3 – Use case đăng ký tài khoản .....................................................................32
Hình 3.4 – Use case đăng nhập .................................................................................34
Hình 3.5 – Use case quản lý thơng tin cá nhân .........................................................35
Hình 3.6 – Use case quản lý hồ sơ đăng ký sát hạch ................................................37
Hình 3.7 – Use case quản lý và theo dõi kết quả thi thử của người dùng.................40
Hình 3.8 – Use case thư viện câu hỏi ........................................................................41

Hình 3.9 – Use case thư viện đề thi ..........................................................................43
Hình 3.10 – Use case thư viện tra cứu biển báo........................................................44
Hình 3.11 – Use case thi thử .....................................................................................45
Hình 3.12 – Use case xem tin tức .............................................................................46
Hình 3.13 – Sơ đồ lớp tổng quát của cơ sở dữ liệu ...................................................50
Hình 3.14 – Kiến trúc tổng thể hệ thống ...................................................................68
Hình 3.15 – Kiến trúc tầng ReactJS + NextJS Client và ReactJS Admin Client......68
Hình 3.16 – Kiến trúc tầng PHP Phalcon Server ......................................................69


Hình 3.17 – Thiết kế giao diện tổng thế (layout) ......................................................70
Hình 3.18 – Thiết kế trang chủ .................................................................................71
Hình 3.19 – Thiết kế màn hình đăng nhập ................................................................71
Hình 3.20 – Thiết kế màn hình danh sách đề thi.......................................................72
Hình 3.21 – Thiết kế màn hình thư viện câu hỏi.......................................................72
Hình 3.22 – Thiết kế màn hình thư viện biển báo.....................................................73
Hình 3.23 – Thiết kế màn hình thi thử ......................................................................73
Hình 3.24 – Thiết kế màn hình kết quả thi thử .........................................................74
Hình 3.25 – Sơ đồ liên kết các màn hình ..................................................................75
Hình 3.26 – Mơ hình triển khai hệ thống ..................................................................76
Hình 4.1 – Màn hình danh sách bộ đề thi .................................................................79
Hình 4.2 – Màn hình thi thử ......................................................................................79
Hình 4.3 – Màn hình xem kết quả thi .......................................................................80
Hình 4.4 – Màn hình học theo câu hỏi ......................................................................80
Hình 4.5 – Màn hình danh sách kết quả / lịch sử thi.................................................81
Hình 4.6 – Màn hình tra cứu biển báo ......................................................................82
Hình 4.7 – Màn hình đăng ký hồ sơ sát hạch ............................................................83
Hình 4.8 – Màn hình đăng nhập ................................................................................84
Hình 4.9 – Màn hình trang chính dành cho quản trị viên .........................................84
Hình 4.10 – Màn hình quản lý nhân viên ..................................................................85

Hình 4.11 – Màn hình quản lý câu hỏi ......................................................................85


DANH MỤC BẢNG
Bảng 1.1 – Phân bố khảo sát theo độ tuổi ...................................................................3
Bảng 1.2 – Bảng tỉ lệ nhu cầu thi bằng lái theo hạng bằng lái....................................3
Bảng 1.3 – Bảng tỉ lệ cách học lý thuyết ....................................................................4
Bảng 1.4 – Bảng so sánh tính năng của các ứng dụng và ứng dụng đề xuất ..............6
Bảng 3.1 – Đặc tả use case đăng ký tài khoản ..........................................................32
Bảng 3.2 – Đặc tả use case đăng nhập ......................................................................34
Bảng 3.3 – Đặc tả use case quản lý thông tin cá nhân ..............................................35
Bảng 3.4 – Đặc tả use case quản lý hồ sơ đăng ký sát hạch .....................................37
Bảng 3.5 – Đặc tả use case quản lý và theo dõi kết quả thi thử của người dùng ......40
Bảng 3.6 – Đặc tả use case thư viện câu hỏi .............................................................41
Bảng 3.7 – Đặc tả use case thư viện đề thi ...............................................................43
Bảng 3.8 – Đặc tả use case thư viện tra cứu biển báo...............................................44
Bảng 3.9 – Đặc tả use case thi thử ............................................................................45
Bảng 3.10 – Đặc tả use case xem tin tức ..................................................................46
Bảng 3.11 – Danh sách các actors.............................................................................48
Bảng 3.12 – Danh sách các use case .........................................................................48
Bảng 3.13 – Mô tả tổng quát CSDL..........................................................................51
Bảng 3.14 – Bảng USER ...........................................................................................55
Bảng 3.15 – Bảng USER_META .............................................................................56
Bảng 3.16 – Bảng USER_EXAM .............................................................................56
Bảng 3.17 – Bảng USER_EXAM_DETAIL ............................................................57
Bảng 3.18 – Bảng TRAFFICT_SIGN.......................................................................57
Bảng 3.19 – Bảng TRAFFIC_SIGN_CATEGORY .................................................58
Bảng 3.20 – Bảng REGISTRATION ........................................................................58
Bảng 3.21 – Bảng REGISTRATION_META ..........................................................59
Bảng 3.22 – Bảng QUESTION .................................................................................59

Bảng 3.23 – Bảng QUESTION_CATEGORY .........................................................61
Bảng 3.24 – Bảng QUESTION_ANSWER ..............................................................61


Bảng 3.25 – Bảng QUESTION_ANSWER_RESULT .............................................62
Bảng 3.26 – Bảng PREDEFINED_EXAM...............................................................62
Bảng 3.27 – Bảng PREDEFINED_EXAM_QUESTION ........................................63
Bảng 3.28 – Bảng POST ...........................................................................................63
Bảng 3.29 – Bảng POST_CATEGORY ...................................................................64
Bảng 3.30 – Bảng POST_META ..............................................................................65
Bảng 3.31 – Bảng LICENSE_LEVEL ......................................................................65
Bảng 3.32 – Bảng COMMENT ................................................................................66
Bảng 3.33 – Bảng FILE ............................................................................................66
Bảng 3.34 – Mô tả tầng ReactJS + NextJS Client và ReactJS Admin Client ...........69
Bảng 3.35 – Mô tả kiến trúc tầng PHP Phalcon Server ............................................69


DANH MỤC TỪ VIẾT TẮT
Từ viết tắt

Đầy đủ

Covid-19

Coronavirus disease 2019

HTML

Hyper-text markup language


State

State
Application Programing
Interface

API
RPC

Remote Procedure Call

Server

Server

Client

Client

Admin

Function

Administrator
Có nguồn gốc từ từ different,
đồng nghĩa với reconciliation
Function

Class


Class

App

Application

Internet

Internet

UI

User-interface

CSDL

Cơ sở dữ liệu

VPS

Virtual Private Server

Diffing

Nghĩa
Dịch bệnh gây ra bởi virus
Corona năm 2019
Ngôn ngữ đánh dấu siêu văn
bản, dùng để quyết định cấu trúc
của webstie

Trạng thái
Phương thức kết nối các ứng
dụng lại với nhau
Phương pháp gọi thủ tục từ xa.
RPC là một trong các phương
thức API
Máy chủ
Máy khách, ứng dụng phía
khách hàng
Quản trị viên
Tham chiếu, so sánh
Hàm trong lập trình, chức năng
Lớp trong lập trình, một định
nghĩa kiểu dữ liệu có cấu trúc
Ứng dụng
Mạng máy tính có quy mơ tồn
cầu
Giao diện người dùng
Dùng để lưu trữ dữ liệu của ứng
dụng
Máy chủ riêng ảo


TĨM TẮT KHĨA LUẬN
Đề tài khóa luận “PHÁT TRIỂN ỨNG DỤNG ĐÀO TẠO VÀ SÁT HẠCH
CẤP GIẤY PHÉP LÁI XE” nhằm phát triển hệ thống hỗ trợ việc học lý thuyết trong
sát hạch cấp giấy phép lái xe ở Việt Nam, đồng thời cải tiến và số hóa một số nghiệp
vụ đào tạo và sát hạch của một trung tâm đào tạo và sát hạch giấy phép lái xe. Hệ
thống gồm 2 thành phần chính: trang web e-learning dành cho người học và trang
quản lý dành cho nhân viên trung tâm hoặc quản trị viên. Hệ thống chủ yếu nhắm tới

những người có nhu cầu học để sát hạch giấy phép lái xe, cũng như các trung tâm sát
hạch để cấp giấy phép lái xe có nhu cầu cải tiến và số hóa một số nghiệp vụ của trung
tâm.
Đề tài sử dụng kết hợp nhiều loại công nghệ và kiến trúc phần mềm mới, đem
lại hiệu quả tốt về mặt phát triển và vận hành như: PHP Phalcon 4, Single Page
Application hỗ trợ Server-side rendering sử dụng framework NextJS, Redux Toolkit
(thư viện quản lý trạng thái ứng dụng ở phía người dùng), React Query (ứng dụng hỗ
trợ lấy và caching dữ liệu phía người dùng).

1


Chương 1. TỔNG QUAN ĐỀ TÀI
1.1.

Lý do lựa chọn đề tài

Trong thời kỳ phát triển hiện nay, công nghệ thông tin được ứng dụng vào mọi
lĩnh vực trong đời sống xã hội nhằm tăng hiệu quả công việc, giảm thời gian, chi
phí và có được tính kết nối cao. Do đó số hóa áp dụng cơng nghệ thơng tin trở thành
mục tiêu chính mà nhiều tổ chức cá nhân hướng tới.
Về lĩnh vực đào tạo và sát hạch cấp giấy phép lái xe, ở Việt Nam hiện nay chủ
yếu đào tạo lý thuyết bằng hình thức học trực tiếp tại trung tâm, gây tốn kém về
chi phí phịng học, thiết bị giảng dạy,… Song song đó, đại dịch Covid-19 đang diễn
ra đã làm gián đoạn hoạt động của rất nhiều lĩnh vực, trong đó có cả lĩnh vực đào
tạo và sát hạch giấy phép lái xe. Một số nơi áp dụng giãn cách xã hội, cấm tụ tập
đông người nên việc học lý thuyết tập trung tại trung tâm là bất khả thi, người có
nhu cầu sát hạch thì khơng thể học, cịn trung tâm thì khơng thể nhận học viên, gây
thất thoát tiền bạc và thời gian của trung tâm.
Ngoài ra, theo thống kê từ nguồn tin của báo Pháp Luật Online1, chỉ có 60%

người dự sát hạch giấy phép lái xe ô tô, 74% người dự sát hạch giấy phép lái xe mô
tô là đạt. Theo kết quả khảo sát của nhóm chúng em từ 122 người, có 79.5% người
đã thi bằng lái cho rằng khó khăn khi thi sát hạch lý thuyết là chi phí cao, khơng
hiệu quả và cách học (thông qua sách của trung tâm) nhàm chán, dẫn tới kết quả
sát hạch không cao hoặc thậm chí là trượt.
Dựa trên những cơ sở, dữ liệu và nhu cầu thực tế, cùng với kết quả khảo sát từ
nhóm chúng em, chúng em quyết định chọn đề tài “Phát triển ứng dụng đào tạo và
sát hạch cấp giấy phép lái xe”. Đề tài này tập trung xây dựng một hệ thống hỗ trợ
đào tạo và sát hạch lý thuyết cấp giấy phép lái xe, với mong muốn hỗ trợ người dự
thi sát hạch có được kết quả cao, tạo ra công cụ học thú vị, giảm gánh nặng và số

1

/>
2


hóa một phần quy trình đào tạo và sát hạch của trung tâm đào tạo và sát hạch cấp
giấy phép lái xe.

1.2.

Khảo sát nhu cầu

1.2.1. Thông tin cá nhân người được khảo sát
Tổng số người được khảo sát là 122 người.
Các lứa tuổi của người tham gia khảo sát có tỉ lệ được phân bố như trong bảng
1.1 bên dưới
Bảng 1.1 – Phân bố khảo sát theo độ tuổi
Độ tuổi


Dưới 18

18 – 25

25 – 30

Trên 30

Tỉ lệ

0%

96.7%

2.5%

0.8%

Giới tính của người được tham gia khảo sát có tỉ lệ 70.2% nam và 29.8% nữ.
1.2.2. Thực trạng
Có trên 80% người được khảo sát có dự định thi bằng lái, hầu hết tập trung
vào các hạng bằng lái phổ biến như A1 (mô tơ), A2 (mơ tơ có dung tích xi lanh trên
175cc) và B1, B2 (ô tô).
Bảng 1.2 – Bảng tỉ lệ nhu cầu thi bằng lái theo hạng bằng lái
Hạng bằng lái
A1 (mô tô trên 50cc), A2
(mô tô trên 175cc)
B1, B2 (ơ tơ)


Tỉ lệ (tổng 100%)
47%
31%

Khác

2%

Khơng có nhu cầu

20%

Những khó khăn thường gặp trong khi học để thi lý thuyết mà những người
được khảo sát gặp phải là: chi phí cao, không hiệu quả, lý thuyết nhiều, thiếu tài liệu
dễ học, học sách chán, học vẹt, nội dung ôn thi không sát với thực tế.

3


Các phương pháp ôn luyện phổ biến của những người tham gia khảo sát là:
Học thuộc lòng từ sách luyện thi, học theo mẹo tham khảo từ người khác và sử dụng
các ứng dụng hỗ trợ luyện thi trên di động.
Bảng 1.3 – Bảng tỉ lệ cách học lý thuyết
Cách học

Tỉ lệ

Học thuộc lòng
Học theo mẹo tham khảo
trên Internet

Học bằng ứng dụng

50%
54%
10%

1.2.3. Nhu cầu thực tế
Có đến 90% người được khảo sát hứng thú với hệ thống được triển khai thơng
qua đề tài này.
Các mong muốn phổ biến là: có câu hỏi ôn tập sát với thi thực tế, lộ trình ơn tập
hiệu quả, cho phép thi thử, có mẹo để học. Ngồi ra cịn mong muốn được nhắc lịch
học thơng qua Facebook Messenger, e-mail, số điện thoại, có thể thảo luận được về
câu hỏi.

Hình 1.1 – Biểu đồ tỉ lệ mong muốn chức năng sẽ xuất hiện trong hệ thống

4


1.3.

Tìm hiểu về các ứng dụng liên quan

1.3.1. Ứng dụng “Ôn thi GPLX 600 câu”
Ứng dụng “Ôn thi GPLX 600 câu” câu của nhà phát triển ứng dụng WATERFALL
là ứng dụng hỗ trợ ôn tập lý thuyết thi sát hạch giấy phép lái xe phổ biến nhất trên
Play Store (Android) và App Store (iOS), với lượt cài đặt trên 2 triệu, đánh giá trung
bình 4.8 / 5.0 sao từ hơn 65 nghìn người dùng.
Ưu điểm:
-


Ứng dụng nhỏ gọn, giao diện dễ nhìn

-

Thư viện câu hỏi đầy đủ theo bộ đề của Bộ Giao thơng vận tải

-

Có thể sử dụng offline

Nhược điểm:
-

Khơng có chức năng hỗ trợ tương tác giữa các người dùng

-

Chỉ hỗ trợ nền tảng di động, khơng có phiên bản dành cho máy tính cá nhân
1.3.2. Phần mềm luyện thi từ Bộ Giao thông vận tải
Đây là phần mềm chính thức được phát hành bởi Bộ Giao thơng Vận tải.

Ưu điểm:
-

Cập nhật bởi Bộ Giao thông vận tải

-

Giống với phần mềm thi thật của các trung tâm đang sử dụng


-

Sử dụng được offline

Nhược điểm:
-

Giao diện đơn sơ, khó nhìn

-

Chỉ hỗ trợ máy tính Windows.

-

Khơng có chức năng tương tác với những người tham gia học

-

Hay bị lỗi vặt

-

Dung lượng nặng

5


-


Không cho phép học theo câu hỏi
1.3.3. Tổng kết

Sau khi tìm hiểu, sử dụng, trải nghiệm các phần mềm, ứng dụng đã có sẵn trước đó
với mục đích có phần gần giống với đề tài của nhóm, nhóm nhận thấy các hệ thống
đã làm tốt trong việc hỗ trợ người dùng học lý thuyết để sát hạch (trong trường hợp
ứng dụng “Ôn tập GPLX 600 câu”). Tuy nhiên các ứng dụng này đều thiếu sự tương
tác giữa những người tham gia, đặc biệt phần mềm chính thức từ Bộ Giao thông vận
tải vô cùng đơn sơ và nhàm chán, không gây hứng thú và hiệu quả cho người học,
đồng thời chỉ hỗ trợ một số nền tảng nhất định.
Từ những điều đã phân tích như ở trên, nhóm nhận thấy ứng dụng của nhóm
cần phải tập trung vào trải nghiệm người dùng, tăng cường tương tác, thảo luận giữa
các người dùng, đặc biệt phải hỗ trợ đa nền tảng để người dùng có thể sử dụng ứng
dụng mọi lúc mọi nơi.
Bảng 1.4 – Bảng so sánh tính năng của các ứng dụng và ứng dụng đề xuất
Tính năng
Đa nền tảng
Chức năng tướng
tác cộng đồng
Thư viên câu hỏi
đầy đủ
Gọn nhẹ
Cho phép học theo
câu hỏi

Ứng dụng “Ơn
thi GPLX 600
câu”
Khơng


Phần mềm của
Bộ Giao thơng
Vận tải
Khơng

Khơng

Khơng











Khơng





Khơng




6

Ứng dụng đề
xuất



1.4.

Phạm vi

Hoàn thành cơ bản một ứng dụng với 2 phần chính, hỗ trợ cho 2 đối tượng:
Người học – những người có nhu cầu học và sát hạch giấy phép lái xe; Trung tâm
đào tạo và sát hạch giấy phép lái xe.
-

Phạm vi ứng dụng: ứng dụng được xây dựng và vận hành trên nền tảng website,
chạy ở hệ điều hành Linux / CentOS, sử dụng mơ hình client – server với client
sử dụng công nghệ Single Page Application và server sử dụng công nghệ RPC
(Remote Procedure Call).

-

Phạm vi dữ liệu: Ngân hàng câu hỏi và đề thi được cập nhật chính thức theo bộ
đề của Bộ Giao thơng Vận tải.

7


1.5.


Phương pháp thực hiện

Làm việc theo nhóm 2 thành viên, quản lý code trên hệ thống quản lý phiên bản
GitHub, theo dõi tiến độ công việc ở Trello, phân chia công việc phù hợp với năng
lực và kinh nghiệm của từng thành viên, thực hiện khóa luận theo lượng cơng việc và
thời gian đã được lập kế hoạch chi tiết. Các vấn đề liên quan đều được trao đổi trực
tiếp giữa các thành viên bằng nhiều hình thức liên lạc.
Phương pháp thực hiện được nhóm chia làm 4 bước.
Bước 1: Khảo sát hiện trạng, nhu cầu thực tế để tìm tính năng cần thiết để phát
triển ứng dụng.
Bước 2: Nghiên cứu công nghệ cần thiết để triển khai ứng dụng.
Các công nghệ sử dụng:
-

Front-end: sử dụng thư viện giao diện ReactJS và framework NextJS nhằm
cung cấp khả năng xây dựng các thành phần giao diện người dùng có tính
tương tác cao, có tính tái sử dụng. Phần quản trị lẫn trang web cho người học
được nhóm sử dụng framework Ant Design và TailwindCSS.

-

Back-end: Sử dụng ngơn ngữ lập trình PHP 7.4 cùng với framework Phalcon
hỗ trợ đa nền tảng, đáp ứng cơ bản được yêu cầu hệ thống, dễ dàng triển khai,
kết hợp với tiêu chuẩn PRC API để giao tiếp giữa client và server. Phalcon
là một framework PHP nhanh và đơn giản. Web server được nhóm sử dụng
Nginx vì độ ổn định cao, đa nền tảng và cân bằng tải.

-


Hệ quản trị cơ sở dữ liệu: Nhóm sử dụng MySQL / MariaDB cho tồn bộ
hệ thống vì đáp ứng được yêu cầu tính đúng đắn, ràng buộc cao. MySQL /
MariaDB miễn phí, hỗ trợ đa nền tảng và có sẵn ở nhiều nhà cung cấp
hosting.

Bước 3: Thu thập dữ liệu bộ đề, câu hỏi chính thức từ Bộ Giao thông Vận tải cũng
như các trung tâm.

8


-

Thu thập dữ liệu câu hỏi từ sách ôn tập của Bộ Giao thơng Vận tải, các ứng
dụng có sẵn trên thị trường và từ phần mềm chính thức của bộ giao thơng vận
tải.

-

Định dạng, chuẩn hóa dữ liệu để nhập vào hệ thống.

Bước 4: Phân tích thiết kế kiến trúc ứng dụng sẽ thực hiện.
Bước 5: Triển khai ứng dụng bằng các công nghệ đã nghiên cứu, bám theo các
thiết kế phân tích ở bước 4 cũng như sử dụng bộ dữ liệu ở bước 3.
Bước 6: Vận hành thử hệ thống để lấy ý kiến, đánh giá.
1.6.

Bố cục báo cáo

Báo cáo gồm có 4 chương:

Chương 1 - TỔNG QUAN ĐỀ TÀI: Trình bày về lý do lựa chọn đề tài, đối tượng,
phạm vi tiếp cận đề tài, đưa ra các điểm nổi bật so với các ứng dụng đã có sẵn trên
thị trường, đề xuất giải pháp để giải quyết các vấn đề đã đặt ra.
Chương 2 – KIẾN THỨC, KỸ THUẬT: Trình bày các kiến thức, cơng nghệ, kỹ
thuật và cách hoạt động của kiến trúc ứng dụng được sử dụng để xây dựng hệ thống.
Chương 3 - PHÂN TÍCH THIẾT KẾ HỆ THỐNG: Trình bày chi tiết quy trình
xây dựng hệ thống, từ khâu xác định phân tích u cầu bài tốn cho đến xây dựng cơ
sở dữ liệu, xây dựng ứng dụng.
Chương 4 – KẾT LUẬN, ĐÁNH GIÁ, HƯỚNG PHÁT TRIỂN: Đưa ra kết luận,
đánh giá tổng quan về những gì đã đạt được của khóa luận, đưa ra hướng phát triển
của ứng dụng trong tương lai.

9


1.7.

Ý nghĩa thực tiễn

Đề tài của nhóm nhằm tạo ra một ứng dụng hỗ trợ đắc lực cho những người có nhu
cầu sát hạch giấy phép lái xe, giúp họ vượt qua phần thi lý thuyết, tiết kiệm thời gian
và chi phí học, xa hơn nữa là xây dựng một nền tảng cho phép người dùng thảo luận
về những vấn đề liên quan tới giao thơng. Song đó, ứng dụng được tạo ra để số hóa
phần nào quy trình đào tạo và sát hạch của một trung tâm đào tạo và sát hạch cấp giấy
phép lái xe.

10


Chương 2. KIẾN THỨC NỀN TẢNG, KỸ THUẬT

2.1.

Tổng quan về PHP và Phalcon

2.1.1. PHP
2.1.1.1.

PHP là gì?

PHP là ngơn ngữ lập trình mã nguồn mở phía server được thiết kế để xây dựng
ứng dụng web động. Code PHP thực thi trên server để sinh ra code HTML và trả
về cho trình duyệt web render theo yêu cầu của nhà phát triển. PHP cho phép xây
dựng ứng dụng web tương tác với mọi cơ sở dữ liệu như: MySQL, Oracle,...

Hình 2.1 – Lợi ích của PHP
PHP là ngơn ngữ lập trình phía server dùng trong phát triển web phổ biến nhất hiện
tại. PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do Rasmus
Lerdorf tạo ra năm 1995 được viết bằng C và được sửa lại năm 1997.
2.1.1.2.
-

Lý do lựa chọn PHP để xây dựng và phát triển website

Là ngơn ngữ lập trình nguồn mở: Đồng nghĩa với việc có thể sử dụng PHP miễn
phí. Là một ngơn ngữ nguồn mở nên cộng đồng sử dụng PHP rất lớn, tài liệu
học về PHP rất nhiều. Phiên bản mới nhất của PHP vừa được ra mắt chính thức
gần đây là PHP 8.0 với nhiều cải tiến đáng giá.

-


Dễ học, dễ dùng: Một trong những ưu điểm của PHP là dễ sử dụng. Cú pháp
của PHP rất dễ học vì giống với ngơn ngữ lập trình C/C++. Tài liệu của PHP

11


rất chi tiết. Ngồi ra những người khơng phải dân chun, khơng biết qua OOP
vẫn có thể sử dụng PHP được vì phần lớn thư viện và API của PHP hỗ trợ lập
trình thủ tục.
-

Dễ cập nhật: Vì khơng cần phải biên dịch hay trải qua các công đoạn làm rối
mã nguồn, ứng dụng viết bằng PHP có thể cập nhật dễ dàng chỉ bằng cách sử
file mã nguồn trực tiếp.

-

Chi phí phát triển thấp: Vì tính dễ dàng của PHP, cùng với PHP là mã nguồn
mở nên chi phí phát triển thấp hơn hẳn so với những ngôn ngữ cùng chức năng.

-

Giảm thời gian phát triển: PHP có rất nhiều cú pháp ngắn gọn để viết code.
Ngồi ra có vơ vàn framework hỗ trợ rất tốt trong q trình phát triển ứng dụng.
Framework số 1 dành cho phát triển website là Larvel, hay WordPress – CMS
phổ biến nhất, đều được viết bằng PHP.

-

Được hỗ trợ bởi nhiều nhà cung cấp web hosting: Hosting được sinh ra nhằm

mục đích có thể đặt nhiều website trên cùng một máy chủ để giảm chi phí. PHP
được hỗ trợ tốt bởi hầu hết hosting. Chi phí hosting PHP cũng rẻ hơn nhiều so
với các ngôn ngữ khác như NodeJS chẳng hạn.

-

Hiệu suất khá cao: mặc dù hiệu suất không quá cao do là một ngôn ngữ thông
dịch trực tiếp, nhưng PHP vẫn cao hơn so với những ngơn ngữ có đặc tính tương
tự. Hiệu suất cao giúp giảm tải cho hệ thống, tăng tốc quá trình xử lý dữ liệu.
2.1.2. Phalcon
2.1.2.1.

Phalcon là gì?

Phalcon là một framework dùng cho lập trình web bằng PHP, nó tương tự như
các Framework nổi tiếng khác của PHP như Laravel, CodeIgniter, Yii,… nhưng
Phalcon có một kiến trúc rất đặc biệt, mới lạ, khác với hầu hết các framework khác,
vì nó được thiết kế cho mục tiêu: chạy nhanh nhất!
Phalcon có kiến trúc rất đặc biệt, mã code của framework được viết bằng Zephir
(trước đây là C/C++) được biên dịch thẳng thành phần mở rộng của PHP - thư viện

12


binary .dll, và nạp luôn vào bộ nhớ của PHP. Do đó, khi có u cầu từ trình duyệt,
PHP chỉ cần chạy code của dự án để phục vụ người dùng.
Vì những điều đó Phalcon chạy rất nhanh, hơn hẳn so với các PHP framework
khác và cấu trúc mã nguồn dự án cũng đơn giản.

Hình 2.2 – Tốc độ của Phalcon so với những Framework khác

Phiên bản mới nhất hiện tại của Phalcon là Phalcon 5, hỗ trợ PHP 8.0.

13


2.1.2.2.
-

Lý do để lựa chọn framework Phalcon?

Tốc độ nhanh: Vì Phalcon được viết dưới dạng phần mở rộng của PHP, ngôn
ngữ C – ngôn ngữ gần với ngôn ngữ hệ thống và có thể được biên dịch ra mã
máy, nên toàn bộ framework đã được load vào bộ nhớ của PHP, loại bỏ hồn
tồn q trình đọc mã nguồn framework từ ổ đĩa mỗi khi có request, làm cho
framework này chạy rất nhanh.

-

Hỗ trợ ORM: Phalcon hỗ trợ lớp Model dạng ORM (object relational mapping)
nên nhà phát triển có thể hạn chế tối đa việc truy vấn dữ liệu từ cơ sở dữ liệu
bằng SQL.

-

Volt Template engine: Giúp viết code cho tầng View nhanh chóng. Tuy nhiên,
trong khóa luận, nhóm khơng dùng tới tầng View của Phalcon, vì nhóm chỉ cần
xuất dữ liệu ra dạng JSON là đủ.

-


Có nhiều cơng cụ hỗ trợ q trình phát triển: Có đầy đủ các công cụ quản lý
phiên bản cơ sở dữ liệu (migration), cơng cụ tạo nhanh dự án, model, controller
(devtools).

-

Phalcon có tài liệu khá đầy đủ và rõ ràng

-

Hỗ trợ caching (ra file, bộ nhớ, Redis, Memcached,…), queue, logging, event
manager

-

Hỗ trợ nhiều hệ quản trị cơ sở dữ liệu: MySQL, Postgresql, Oracle,
MongoDB,…
2.2.

Tổng quan ReactJS, NextJS, Ant Design, TailwindCSS, React

Query, Redux
2.2.1. ReactJS
2.2.1.1.

ReactJS là gì?

React được phát triển bởi Facebook – mạng xã hội hàng đầu thế giới, vào năm
2013 với vai trò là một thư viện JavaScript mã nguồn mở. Là giải pháp nhanh chóng,
đơn giản và hữu hiệu để xây dựng giao diện người dùng.


14


×