1. Trang chủ
  2. » Tất cả

Đồ án 2 tìm hiểu công nghệ reactjs nodejs phần mềm quản lý trung tâm ngoại ngữ

162 16 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ án 2 tìm hiểu công nghệ ReactJS NodeJS phần mềm quản lý trung tâm ngoại ngữ
Tác giả Trần Thế Anh
Người hướng dẫn ThS. Nguyễn Công Hoan
Trường học Đại học Công nghệ Thông tin, Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Công nghệ Thông tin
Thể loại Đồ án
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 162
Dung lượng 4,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương 1. TỔNG QUAN (19)
    • 1.1. Hiện trạng (19)
      • 1.1.1. Nhu cầu thực tế đề tài (19)
      • 1.1.2. Hiện trạng đơn vị cần xây dựng phần mềm (19)
      • 1.1.3. Các phần mềm đang sẵn có (19)
      • 1.1.4. Các hạn chế, vấn đề tồn tại (20)
    • 1.2. Mục tiêu (20)
      • 1.2.1. Mục đích (20)
    • 1.3. Phạm vi (20)
      • 1.3.1. Đối tượng sử dụng (20)
      • 1.3.2. Yêu cầu (20)
  • Chương 2. CƠ SỞ LÝ THUYẾT, TỔNG QUAN CÔNG NGHỆ (23)
    • 2.1. Thuật toán sử dụng (23)
      • 2.1.1. Thuật toán Bcrypt (23)
    • 2.2. Công nghệ sử dụng (26)
      • 2.2.1. React (26)
      • 2.2.2. React Redux (28)
      • 2.2.3. Ant Design (29)
      • 2.2.4. Firebase Storage (30)
      • 2.2.5. JSON Web Token (31)
      • 2.2.6. Sequelize (33)
      • 2.2.7. PostgreSQL (34)
      • 2.2.8. Vercel (36)
      • 2.2.9. Heroku (0)
  • Chương 3. PHÂN TÍCH THIẾT KẾ ỨNG DỤNG (39)
    • 3.1. Yêu cầu nghiệp vụ (39)
      • 3.1.1. Phân loại các yêu cầu phần mềm (39)
      • 3.1.2. Bảng trách nhiệm cho các yêu cầu (63)
    • 3.2. Use case (77)
      • 3.2.1. Sơ đồ Use case (77)
      • 3.2.2. Danh sách Actors (78)
      • 3.2.3. Danh sách các Use case (78)
      • 3.2.4. Đặc tả Use case (80)
    • 3.3. Activity diagram (103)
      • 3.3.1. Lược đồ hoạt động quản lý khóa học (103)
      • 3.3.2. Lược đồ hoạt động quản lý lớp học (104)
      • 3.3.3. Lược đồ hoạt động quản lý học viên (105)
      • 3.3.4. Lược đồ hoạt động quản lý nhân sự (106)
      • 3.3.5. Lược đồ hoạt động quản lý điểm (107)
      • 3.3.6. Lược đồ hoạt động quản lý trình độ (108)
      • 3.3.7. Lược đồ hoạt động cài đặt tham số, quy định (109)
      • 3.3.8. Lược đồ hoạt động báo cáo (110)
    • 3.4. Thiết kế cơ sở dữ liệu (111)
      • 3.4.1. Sơ đồ ERD (111)
      • 3.4.2. Mô tả chi tiết (111)
    • 3.5. Thiết kế giao diện (119)
      • 3.5.1. Danh sách các màn hình (119)
      • 3.5.2. Sơ đồ liên kết màn hình (121)
      • 3.5.3. Mô tả chi tiết các màn hình (121)
    • 3.6. Component Diagram (157)
    • 3.7. Deployment Diagram (158)
  • Chương 4. Kết luận (159)
    • 4.1. Kết quả đạt được (159)
    • 4.2. Hạn chế (159)
    • 4.3. Hướng phát triển (160)
  • TÀI LIỆU THAM KHẢO (161)

Nội dung

LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành và sự tri ân đến thầy Nguyễn Công Hoan đã hướng dẫn, tạo điều kiện cho em hoàn thành đồ án 2 – Tìm hiểu công nghệ ReactJS & Nodejs Trong khoản

Trang 1

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

TRẦN THẾ ANH – 19521220

ĐỒ ÁN 2 – TÌM HIỂU CÔNG NGHỆ REACTJS & NODEJS

PHẦN MỀM QUẢN LÝ TRUNG TÂM NGOẠI NGỮ

(Language Center Management System)

GIẢNG VIÊN HƯỚNG DẪN ThS NGUYỄN CÔNG HOAN

Trang 2

TP HỒ CHÍ MINH, THÁNG 12 NĂM 2022

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

TRẦN THẾ ANH - 19521220

ĐỒ ÁN 2 – TÌM HIỂU CÔNG NGHỆ REACTJS & NODEJS

PHẦN MỀM QUẢN LÝ TRUNG TÂM NGOẠI NGỮ

(Language Center Management System)

GIẢNG VIÊN HƯỚNG DẪN ThS NGUYỄN CÔNG HOAN

Trang 3

LỜI CẢM ƠN

Em xin gửi lời cảm ơn chân thành và sự tri ân đến thầy Nguyễn Công Hoan đã hướng dẫn, tạo điều kiện cho em hoàn thành đồ án 2 – Tìm hiểu công nghệ ReactJS & Nodejs

Trong khoảng thời gian thực hiện đồ án, em đã học hỏi thêm được nhiều kiến thức, kinh nghiệm, biết được quy trình để tạo ra một sản phẩm phần mềm

Bên cạnh đó, em xin cảm ơn các bạn bè trong lớp đã thảo luận và góp ý cho đề tài đồng thời đã khơi thêm nguồn động lực cho em trong suốt quá trình đầy khó khăn Mặc dù đã cố gắng hoàn thành báo cáo với tất cả nỗ lực song báo cáo của em chắc chắn không tránh khỏi những thiếu sót, em rất mong nhận được sự thông cảm và góp ý chân thành từ thầy Em xin chân thành cảm ơn

Thành phố Hồ Chí Minh, tháng 12 năm 2022

Trần Thế Anh

Trang 4

TÓM TẮT

Đồ án với đề tài “Quản lý trung tâm ngoại ngữ” tập trung vào phân tích thực trạng

và ứng dụng các công nghệ để từ đó xây dụng ứng dụng website có thể sử dụng mà không yêu cầu quá nhiều về phần cứng, phần mềm Đáp ứng được nhu cầu cơ bản

về quản lý trung tâm ngoại ngữ

Đề tài được bắt đầu từ việc tìm hiểu thực trạng, đưa ra các vấn đề còn tồn đọng hoặc

có thể cải thiện Xác định mục tiêu, phạm vi của đề tài cũng như các chức năng cần

có của hệ thống Ngoài việc xử lý các nghiệp vụ cho hệ thống, em cũng đã tìm hiểu,

so sánh và lựa chọn được các công nghệ mới và phù hợp giúp nâng cao trải nghiệm người dùng, tối ưu chi phí phát triển và triển khai

Nhờ việc phân tích các yêu cầu rõ ràng, thời gian phát triển ngắn và các yêu cầu, tính năng ít thay đổi, trong quá trình phát triển đề tài đã sử dụng mô hình V-model cho việc xây dựng hệ thống Kết quả thu được trong giai đoạn thiết kế như kiến trúc

hệ thống, cơ sở dữ liệu, giao diện được thể hiện bằng sơ đồ người dùng, sơ đồ tuần

tự và bản thiết kế sử dụng công cụ Figma và Draw.io Trong giai đoạn thực hiện, client và server được phát triển song song sử dụng thư viện React cho client và Node.js với Express framework cho server, công cụ phát triển Visual Studio Code cùng công cụ quản lý công việc Notion Công việc kiểm thử unit test được thực hiện xuyên suốt quá trình phát triển và được kiểm thử tích hợp ở cuối giai đoạn Trong giai đoạn vận hành, server đã được triển khai lên máy chủ Google Cloud, hoàn toàn

có thể truy cập dữ liệu thông qua api từ bất cứ thiết bị nào gửi yêu cầu có chứa trường xác thực dữ liệu hợp lệ

Phần cuối cùng của khoá luận là trình bày kết quả đã thực hiện lên cuốn báo cáo, đưa ra kết luận và hướng phát triển cho hệ thống trong tương lai

Trang 5

Nội dung khoá luận được trình bày trong 4 chương:

- Chương 01: Tổng quan

Trình bày sơ bộ về thực trạng, nhu cầu thực tế Xác định mục tiêu và phạm vi đề tài

- Chương 02: Cơ sở lý thuyết, tổng quan công nghệ

Giớ thiệu về giải thuật, những công nghệ, nền tảng được sử dụng trong đồ án

- Chương 03: Phân tích thiết kế ứng dụng

Phân tích yêu cầu, thiết kế, hiện thực và triển khai ứng dụng

- Chương 04: Kết luận

Những kết quả đạt được sau khi kết thúc đồ án Những hạn chế, khó khăn trong quá trình phát triển đồ án và nêu ra hướng phát triển trong tương lai

Trang 6

MỤC LỤC

Chương 1 TỔNG QUAN 1

1.1 Hiện trạng 1

1.1.1 Nhu cầu thực tế đề tài 1

1.1.2 Hiện trạng đơn vị cần xây dựng phần mềm 1

1.1.3 Các phần mềm đang sẵn có 1

1.1.4 Các hạn chế, vấn đề tồn tại 2

1.2 Mục tiêu 2

1.2.1 Mục đích 2

1.3 Phạm vi 2

1.3.1 Đối tượng sử dụng 2

1.3.2 Yêu cầu 2

Chương 2 CƠ SỞ LÝ THUYẾT, TỔNG QUAN CÔNG NGHỆ 5

2.1 Thuật toán sử dụng 5

2.1.1 Thuật toán Bcrypt 5

2.2 Công nghệ sử dụng 8

2.2.1 React 8

2.2.2 React Redux 10

2.2.3 Ant Design 11

2.2.4 Firebase Storage 12

2.2.5 JSON Web Token 13

2.2.6 Sequelize 15

2.2.7 PostgreSQL 16

Trang 7

2.2.8 Vercel 18

2.2.9 Heroku 19

Chương 3 PHÂN TÍCH THIẾT KẾ ỨNG DỤNG 20

3.1 Yêu cầu nghiệp vụ 20

3.1.1 Phân loại các yêu cầu phần mềm 20

3.1.2 Bảng trách nhiệm cho các yêu cầu 44

3.2 Use case 58

3.2.1 Sơ đồ Use case 58

3.2.2 Danh sách Actors 59

3.2.3 Danh sách các Use case 59

3.2.4 Đặc tả Use case 61

3.3 Activity diagram 84

3.3.1 Lược đồ hoạt động quản lý khóa học 84

3.3.2 Lược đồ hoạt động quản lý lớp học 85

3.3.3 Lược đồ hoạt động quản lý học viên 86

3.3.4 Lược đồ hoạt động quản lý nhân sự 87

3.3.5 Lược đồ hoạt động quản lý điểm 88

3.3.6 Lược đồ hoạt động quản lý trình độ 89

3.3.7 Lược đồ hoạt động cài đặt tham số, quy định 90

3.3.8 Lược đồ hoạt động báo cáo 91

3.4 Thiết kế cơ sở dữ liệu 92

3.4.1 Sơ đồ ERD 92

3.4.2 Mô tả chi tiết 92

3.5 Thiết kế giao diện 100

Trang 8

3.5.1 Danh sách các màn hình 100

3.5.2 Sơ đồ liên kết màn hình 102

3.5.3 Mô tả chi tiết các màn hình 102

3.6 Component Diagram 138

3.7 Deployment Diagram 139

Chương 4 Kết luận 139

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

4.2 Hạn chế 140

4.3 Hướng phát triển 141

BẢNG PHÂN CÔNG CÔNG VIỆC 142

TÀI LIỆU THAM KHẢO 143

Tài liệu tiếng Anh 143

Tài liệu tiếng Việt 144

Trang 9

DANH MỤC HÌNH

Hình 2.1 Tốc độ băm của 1 số thuật toán phổ biến 6

Hình 2.2 Mã giải thuật toán băm Bcrypt 7

Hình 2.3 Kết qủa cuối cùng của quá trình băm 7

Hình 2.4 Logo thư viện React 8

Hình 2.5 Logo thư viện React Redux 10

Hình 2.6 Các thành phần của Redux 11

Hình 2.7 Logo thư viện Ant Design 11

Hình 2.8 Logo Firebase Storage 12

Hình 2.9 Logo JSON Web Token (JWT) 13

Hình 2.10 Nội dung header JWT 14

Hình 2.11 Nội dung Reserved claims 15

Hình 2.12 Nguyên tắc chuỗi bí mật 15

Hình 2.13 Logo ORM Sequelize 16

Hình 2.14 Logo PostgreSQL 16

Hình 2.15 Minh hoạ bộ dữ liệu được lưu trong bảng của PostgreSQL 17

Hình 2.16 Logo Vercel 18

Hình 2.17 Logo Google Cloud Platform 19

Hình 3.1 Sơ đồ use case 59

Hình 3.2 Lược đồ hoạt động quản lý khóa học 84

Hình 3.3 Lược đồ hoạt động quản lý lớp học 85

Hình 3.4 Lược đồ hoạt động quản lý học viên 86

Hình 3.5 Lược đồ hoạt động quản lý nhân sự 87

Hình 3.6 Lược đồ hoạt động quản lý điểm 88

Hình 3.7 Lược đồ hoạt động quản lý trình độ 89

Hình 3.8 Lược đồ hoạt động cài đặt tham số, quy định 90

Hình 3.9 Lược đồ hoạt động báo cáo 91

Hình 3.10 Lược đồ quan hệ ERD 92

Hình 3.11 Sơ đồ liên kết màn hình 102

Trang 10

Hình 3.12 Màn hình đăng nhập 103

Hình 3.13 Màn hình quên mật khẩu 104

Hình 3.14 Màn hình quên mật khẩu 105

Hình 3.15 Màn hình trang chủ 106

Hình 3.16 Màn hình danh sách giảng viên 107

Hình 3.17 Màn hình thêm giảng viên 109

Hình 3.18 Màn hình danh sách nhân viên 110

Hình 3.19 Màn hình thêm nhân viên 112

Hình 3.20 Màn hình danh sách học viên 113

Hình 3.21 Màn hình thêm học viên 115

Hình 3.22 Màn hình chi tiết học viên 116

Hình 3.23 Màn hình chi tiết học viên – lớp 117

Hình 3.24 Màn hình chi tiết học viên – thời khóa biểu 118

Hình 3.25 Màn hình chi tiết học viên – điểm 118

Hình 3.26 Màn hình danh sách khóa học 119

Hình 3.27 Màn hình thêm khóa học - 1 121

Hình 3.28 Màn hình thêm khóa học - 2 122

Hình 3.29 Màn hình thêm khóa học 123

Hình 3.30 Màn hình chi tiết khóa học – thông tin 124

Hình 3.31 Màn hình chi tiết khóa học – lớp 124

Hình 3.32 Màn hình loại khóa học 125

Hình 3.33 Màn hình mức độ khóa học 127

Hình 3.34 Màn hình danh sách cột điểm 128

Hình 3.35Màn hình khung giờ 129

Hình 3.36 Màn hình danh sách lớp học 130

Hình 3.37 Màn hình thêm lớp học 132

Hình 3.38 Màn hình chi tiết lớp học 133

Hình 3.39 Màn hình chi tiết lớp học – lịch 133

Hình 3.40 Màn hình chi tiết lớp học – điểm 134

Trang 11

Hình 3.41Màn hình chi tiết lớp học – học viên 135

Hình 3.42 Màn hình chi tiết lớp học – bài thi 136

Hình 3.43 Màn hình chi tiết lớp học – giảng viên 137

Hình 3.44 Component diagram 138

Hình 3.45 Deployment diagram 139

Trang 12

DANH MỤC BẢNG

Bảng 2.1 Bảng giới hạn kích thước của dữ liệu trong PostgreSQL 18

Bảng 3.1 Danh sách yêu cầu nghiệp vụ 22

Bảng 3.2 Biểu mẫu và quy định 1 22

Bảng 3.3 Biểu mẫu và quy định 2 22

Bảng 3.4 Biểu mẫu và quy định 3 23

Bảng 3.5 Biểu mẫu và quy định 4 23

Bảng 3.6 Biểu mẫu và quy định 5 23

Bảng 3.7 Biểu mẫu và quy định 6 24

Bảng 3.8 Biểu mẫu và quy định 7 24

Bảng 3.9 Biểu mẫu và quy định 8 25

Bảng 3.10 Biểu mẫu và quy định 9 25

Bảng 3.11 Biểu mẫu và quy định 10 25

Bảng 3.12 Biểu mẫu và quy định 11 26

Bảng 3.13 Biểu mẫu và quy định 12 26

Bảng 3.14 Biểu mẫu và quy định 13 27

Bảng 3.15 Biểu mẫu và quy định 14 27

Bảng 3.16 Biểu mẫu và quy định 15 27

Bảng 3.17 Biểu mẫu và quy định 16 28

Bảng 3.18 Biểu mẫu và quy định 17 28

Bảng 3.19 Biểu mẫu và quy định 18 29

Bảng 3.20 Biểu mẫu và quy định 19 29

Bảng 3.21 Biểu mẫu và quy định 20 29

Bảng 3.22 Biểu mẫu và quy định 21 30

Bảng 3.23 Biểu mẫu và quy định 22 30

Bảng 3.24 Biểu mẫu và quy định 23 30

Bảng 3.25 Biểu mẫu và quy định 24 31

Bảng 3.26 Biểu mẫu và quy định 25 31

Bảng 3.27 Biểu mẫu và quy định 26 32

Trang 13

Bảng 3.28 Biểu mẫu và quy định 27 32

Bảng 3.29 Biểu mẫu và quy định 28 32

Bảng 3.30 Biểu mẫu và quy định 29 33

Bảng 3.31 Biểu mẫu và quy định 30 33

Bảng 3.32 Biểu mẫu và quy định 31 34

Bảng 3.33 Biểu mẫu và quy định 32 34

Bảng 3.34 Biểu mẫu và quy định 33 34

Bảng 3.35 Biểu mẫu và quy định 34 35

Bảng 3.36 Biểu mẫu và quy định 35 35

Bảng 3.37 Biểu mẫu và quy định 36 35

Bảng 3.38 Biểu mẫu và quy định 37 36

Bảng 3.39 Biểu mẫu và quy định 38 36

Bảng 3.40 Biểu mẫu và quy định 39 36

Bảng 3.41 Danh sách yêu cầu tiện dụng 40

Bảng 3.42 Danh sách yêu cầu hiệu quả 42

Bảng 3.43 Danh sách yêu cầu tiến hóa 42

Bảng 3.44 Danh sách yêu cầu tương thích 42

Bảng 3.45 Danh sách yêu cầu bảo mật 43

Bảng 3.46 Danh sách yêu cầu an toàn 44

Bảng 3.47 Danh sách yêu cầu công nghệ 44

Bảng 3.48 Bảng trách nhiệm yêu cầu nghiệp vụ 48

Bảng 3.49 Bảng trách nhiệm yêu cầu tiện dụng 51

Bảng 3.50 Bảng trách nhiệm yêu cầu hiệu quả 54

Bảng 3.51 Bảng trách nhiệm yêu cầu tiến hóa 55

Bảng 3.52 Bảng trách nhiệm yêu cầu tương thích 56

Bảng 3.53 Bảng trách nhiệm yêu cầu bảo mật 56

Bảng 3.54 Bảng trách nhiệm yêu cầu an toàn 57

Bảng 3.55 Bảng danh sách các actors 59

Bảng 3.56 Danh sách các use case 61

Trang 14

Bảng 3.57 Đặc tả Use case Đăng nhập 62

Bảng 3.58 Đặc tả Use case Khôi phục mật khẩu 63

Bảng 3.59 Đặc tả Use case Cập nhật thông tin 64

Bảng 3.60 Đặc tả Use case Quản lý học viên 67

Bảng 3.61 Đặc tả Use-case Quản lý khóa học 70

Bảng 3.62 Đặc tả Use-case Quản lý lớp học 73

Bảng 3.63 Đặc tả Use-case Quản lý nhân viên 75

Bảng 3.64 Đặc tả Use-case Quản lý giảng viên 76

Bảng 3.65 Đặc tả Use-case Xem danh sách hóa đơn 77

Bảng 3.66 Đặc tả Use-case Thống kê 78

Bảng 3.67 Đặc tả Use-case Quản lý loại khóa học 79

Bảng 3.68 Đặc tả Use-case Quản lý cột điểm 80

Bảng 3.69 Đặc tả Use-case Quản lý khung giờ 81

Bảng 3.70 Đặc tả Use-case Quản lý cấp độ 82

Bảng 3.71 Đặc tả Use-case Xem thời khóa biểu giảng viên 83

Bảng 3.72 Đặc tả Use-case Cài đặt 83

Bảng 3.73 Mô tả chi tiết bảng Bill 93

Bảng 3.74 Mô tả chi tiết bảng BillInfo 93

Bảng 3.75 Mô tả chi tiết bảng Class 93

Bảng 3.76 Mô tả chi tiết bảng ClassTime 94

Bảng 3.77 Mô tả chi tiết bảng Column_Course 94

Bảng 3.78 Mô tả chi tiết bảng Column_Transcript 94

Bảng 3.79 Mô tả chi tiết bảng ConfirmCodes 94

Bảng 3.80 Mô tả chi tiết bảng Course 95

Bảng 3.81 Mô tả chi tiết bảng CourseType 95

Bảng 3.82 Mô tả chi tiết bảng Employee 96

Bảng 3.83 Mô tả chi tiết bảng Exam 96

Bảng 3.84 Mô tả chi tiết bảng Learning 96

Bảng 3.85 Mô tả chi tiết bảng Lecturer 97

Trang 15

Bảng 3.86 Mô tả chi tiết bảng Level 97

Bảng 3.87 Mô tả chi tiết bảng Parameter 97

Bảng 3.88 Mô tả chi tiết bảng RefeshToken 98

Bảng 3.89 Mô tả chi tiết bảng Role 98

Bảng 3.90 Mô tả chi tiết bảng Student 98

Bảng 3.91 Mô tả chi tiết bảng Teaching 98

Bảng 3.92 Mô tả chi tiết bảng TestType 99

Bảng 3.93 Mô tả chi tiết bảng Testing 99

Bảng 3.94 Mô tả chi tiết bảng TimeFrame 99

Bảng 3.95 Mô tả chi tiết bảng User 100

Bảng 3.96 Danh sách các màn hình 102

Bảng 3.97 Mô tả đối tượng trên màn hình đăng nhập 103

Bảng 3.98 Biến cố và xử lý trên màn hình đăng nhập 104

Bảng 3.99 Mô tả đối tượng trên màn hình quên mật khẩu 104

Bảng 3.100 Biến cố và xử lý trên màn hình đăng nhập 105

Bảng 3.101 Biến cố và xử lý trên màn hình đăng nhập 106

Bảng 3.102 Biến cố và xử lý trên màn hình đăng nhập 106

Bảng 3.103 Mô tả các đối tượng trên màn hình trang chủ 107

Bảng 3.104 Biến cố và xử lý trên màn hình trang chủ 107

Bảng 3.105 Mô tả các đối tượng trên màn hình danh sách giảng viên 108

Bảng 3.106 Biến cố và xử lý trên màn hình danh sách giảng viên 108

Bảng 3.107 Mô tả các đối tượng trên màn hình thêm giảng viên 110

Bảng 3.108 Biến cố và xử lý trên màn hình thêm giảng viên 110

Bảng 3.109 Mô tả các đối tượng trên màn hình danh sách nhân viên 111

Bảng 3.110 Biến cố và xử lý trên màn hình danh sách nhân viên 111

Bảng 3.111 Mô tả các đối tượng trên màn hình thêm nhân viên 113

Bảng 3.112 Biến cố và xử lý trên màn hình thêm nhân viên 113

Bảng 3.113 Mô tả các đối tượng trên màn hình danh sách học viên 114

Bảng 3.114 Biến cố và xử lý trên màn hình danh sách học viên 114

Trang 16

Bảng 3.115 Mô tả các đối tượng trên màn hình thêm học viên 115

Bảng 3.116 Biến cố và xử lý trên màn hình thêm học viên 116

Bảng 3.117 Mô tả các đối tượng trên màn hình chi tiết học viên 117

Bảng 3.118 Biến cố và xử lý trên màn hình chi tiết học viên – lớp 117

Bảng 3.119Mô tả các đối tượng trên màn hình chi tiết học viên – điểm 119

Bảng 3.120Biến cố và xử lý trên màn hình chi tiết học viên – điểm 119

Bảng 3.121 Mô tả các đối tượng trên màn hình danh sách khóa học 120

Bảng 3.122 Biến cố và xử lý cho màn hình danh sách khóa học 120

Bảng 3.123 Mô tả các đối tượng trên màn hình thêm khóa học 121

Bảng 3.124 Biến cố và xử lý trên màn hình thêm khóa học 122

Bảng 3.125 Mô tả các đối tượng trên màn hình thêm khóa học 122

Bảng 3.126 Biến cố và xử lý trên màn hình thêm khóa học 122

Bảng 3.127 Mô tả các đối tượng trên màn hình thêm khóa học 123

Bảng 3.128 Biến cố và xử lý trên màn hình thêm khóa học 123

Bảng 3.129 Mô tả các đối tượng trên màn hình chi tiết khóa học – lớp 125

Bảng 3.130 Biến cố và xử lý trên màn hình chi tiết khóa học – lớp 125

Bảng 3.131 Mô tả các đối tượng trên màn hình loại khóa học 126

Bảng 3.132 Biến cố và xử lý trên màn hình loại khóa học 126

Bảng 3.133 Mô tả các đối tượng trên màn hình mức độ khóa học 127

Bảng 3.134 Biến cố và xử lý trên màn hình mức độ khóa học 128

Bảng 3.135 Mô tả các đối tượng trên màn hình danh sách cột điểm 129

Bảng 3.136 Biến cố và xử lý trên màn hình danh sách cột điểm 129

Bảng 3.137 Mô tả các đối tượng trên màn hình khung thời gian 130

Bảng 3.138 Biến cố và xử lý trên màn hình khung thời gian 130

Bảng 3.139 Mô tả các đối tượng trên màn hình danh sách lớp học 131

Bảng 3.140 Biến cố và xử lý trên màn hình danh sách lớp học 131

Bảng 3.141 Mô tả các đối tượng trên màn hình thêm lớp học 132

Bảng 3.142 Biến cố và xử lý trên màn hình thêm lớp học 132

Bảng 3.143 Mô tả các đối tượng trên màn hình chi tiết lớp học – điểm 134

Trang 17

Bảng 3.144 Biến cố và xử lý trên màn hình chi tiết lớp học – điểm 134

Bảng 3.145 Mô tả các đối tượng trên màn hình chi tiết lớp học – học viên 135

Bảng 3.146 Biến cố và xử lý trên màn hình chi tiết lớp học – học viên 135

Bảng 3.147 Mô tả các đối tượng trên màn hình chi tiết lớp học – bài thi 136

Bảng 3.148 Biến cố và xử lý trên màn hình chi tiết lớp học – bài thi 136

Bảng 3.149 Mô tả các đối tượng trên màn hình chi tiết lớp học – giảng viên 137

Bảng 3.150 Biến cố và xử lý trên màn hình chi tiết lớp học – giảng viên 137

Bảng 4.1 Bảng danh sách các tài khoảng truy cập 140

Trang 19

CHƯƠNG 1 TỔNG QUAN

1.1 Hiện trạng

1.1.1 Nhu cầu thực tế đề tài

Ngày nay, đáp ứng với việc hội nhập quốc tế, việc học ngoại ngữ cũng trở thành một xu hướng tất yếu Từ đó các trung tâm ngoại ngữ ra đời ngày càng nhiều Tuy nhiên việc quản lý vận hành, dữ liệu của các trung tâm hầu hết vẫn thao tác bởi những ứng dụng cơ bản tách rời nhau, chưa có sự thống nhất và đảm bảo an toàn dữ liệu Đồng thời các trung tâm và học viên muốn tiếp cận nhau phải thông qua nhiều nguồn trung gian khác Đối mặt với những điều đó, phần mềm Quản lý trung tâm ngoại ngữ được ra đời và đã, đang và sẽ trở thành nhu cầu thiết yếu của các trung tâm ngoại ngữ

1.1.2 Hiện trạng đơn vị cần xây dựng phần mềm

Hiện trạng đơn vị:

• Cơ cấu tổ chức: các trung tâm có nhiều chi nhánh hoặc một chi nhánh, số lượng người dùng có thể đáp ứng là trên 100 người

• Quy trình nghiệp vụ: tiếp nhận học sinh, xếp các khóa học phù hợp với trình

độ, quản lý dữ liệu về tài liệu, giảng viên, nhân viên, báo cáo thống kê doanh thu

• Hiện trạng về mặt tin học: quản lý thông tin qua giấy tờ, excel, trao đổi thông tin, thông báo qua Zalo, Facebook…

1.1.3 Các phần mềm đang sẵn có

• Hệ thống quản lý trung tâm ngoại ngữ Mono eLMS

• Công cụ quản lý trung tâm ngoại ngữ Centre Online

• Phần mềm quản lý đào tạo VnResource – EBMPro

• Và rất nhiều phần mềm khác

Trang 20

- Giảm thiểu số lượng công việc thủ công, tiết kiệm thời gian, công sức

- Nâng cao tính chính xác và bảo mật trong kinh doanh, quản lý thông tin học viên, nhân viên

- Kiểm soát tốt công việc sắp xếp lịch học hợp lí, thống kê báo cáo

1.3.2.1 Yêu cầu chức năng

• Quản lý tài khoản

▪ Đăng ký tài khoản

▪ Đăng nhập

▪ Quên mật khẩu

▪ Đổi mật khẩu

• Quản lý học viên

▪ Tiếp nhận và hiệu chỉnh thông tin học viên

▪ Tra cứu học viên

▪ Xếp lớp

▪ Lập thẻ học viên và in

▪ Lập hóa đơn thu học phí

▪ Xem bảng điểm

Trang 21

▪ Xem thời khóa biểu

• Quản lý khoá học

▪ Tạo mới và hiệu chỉnh thông tin khóa học

▪ Tra cứu khóa học

▪ Xem thông tin chi tiết khóa học

▪ Xem danh sách lớp học thuộc khóa học

• Quản lý lớp học

▪ Tạo mới và hiệu chỉnh thông tin lớp học

▪ Tra cứu lớp học

▪ Xem chi tiết thông tin lớp học

▪ Xem thời khóa biểu lớp học

▪ Xem bảng điểm của lớp

▪ Xem danh sách học viên

▪ Thiết lập bài thi và lịch thi

▪ Bổ nhiệm giáo viên

• Quản lý nhân viên

▪ Thêm và hiệu chỉnh thông tin nhân viên

▪ Tra cứu nhân viên

• Quản lý giảng viên

▪ Thêm và hiệu chỉnh thông tin giảng viên

▪ Tra cứu giảng viên

▪ Xem thời khóa biểu giảng viên

▪ Xem danh sách lớp dạy

▪ Cập nhật điểm cho học viên

• Báo cáo, thống kê

▪ Thống kê doanh thu, chi tiêu theo tháng/quý/năm

▪ Lập danh sách top những lớp học được đăng ký nhiều nhất

▪ Xem chi tiết hóa đơn và in hóa đơn

Trang 22

• Quản lý trình độ học vấn

▪ Tạo trình độ học vấn mới, hiệu chỉnh thông tin trình độ học vấn

• Quản lý loại khóa học

▪ Tạo mới, hiệu chỉnh thông tin loại khóa học

• Quản lý cột điểm

▪ Tạo mới, hiệu chỉnh thông tin cột điểm

• Quản lý khung thời gian

▪ Tạo mới, hiệu chỉnh thông tin khung thời gian

• Thiết lập chung

▪ Thay đổi quy định, tham số

▪ Thiết lập thông tin trung tâm

▪ Hiệu chỉnh thông tin tài khoản

1.3.2.2 Yêu cầu phi chức năng

• Yêu cầu về giao diện:

- Giao diện thân thiện, bố cục hợp lý, dễ sử dụng

- Giao diện thống nhất, đồng bộ, không gây bất ngờ cho người sử dụng

- Màu sắc, vị trí, hiển thị của các component có tính đồng bộ

• Yêu cầu về độ tin cậy, bảo mật:

- Có sử dụng phân quyền cho từng nhóm tài khoản

- Dữ liệu tài khoản người dùng được bảo mật

• Yêu cầu về độ tương thích:

Trang 23

- Dễ dàng nâng cấp tính năng đã có nhờ vào sự hệ thống hóa trong khâu

xử lý

- Dễ dàng mở rộng khi có nhu cầu phát triển

• Yêu cầu về tính hiệu quả:

- Hệ thống quản lý dữ liệu một cách logic

- Hiệu năng ổn định tránh gây khó chịu cho người dùng

CHƯƠNG 2

CƠ SỞ LÝ THUYẾT, TỔNG QUAN CÔNG NGHỆ

2.1 Thuật toán sử dụng

2.1.1 Thuật toán Bcrypt

Để mật khẩu được an toàn ngay cả khi cơ sở dữ liệu của hệ thống bị rò rỉ, chúng ta cần băm mật khẩu trước khi sử dụng Vì tính chất của hàm băm là cùng 1 đầu vào thì kết quả sẽ luôn cho ra 1 giá trị không đổi, việc sử dụng các thuật toán băm thông thường dễ bị kẻ tấn công suy ra bằng các phương pháp như Dictionary Attack, Rainbrow Table Attack, …

Bcrypt là một thuật toán mã hoá mật khẩu đã được tạo ra bởi Niels Provos và David Mazières vào năm 1999, nó hoạt động dựa trên các thuật toán mã hóa Blowfish Nhằm tạo ra sự khó khăn, giảm tốc độ khi giải mã để tìm ra mật khẩu của các cuộc tấn công, Bcrypt sẽ tạo ra các chuỗi mã hoá ngẫu nhiên sau mỗi lần tạo ra

Bcrypt là sự kết hợp của cơ chế băm, yếu tố salt và stretching, cụ thể như sau:

Cơ chế băm:

- Giá trị băm không thể dịch ngược lại giá trị ban đầu

- Với cùng giá trị đầu vào, hàm băm luôn cho 1 kết quả đầu ra

- Đầu vào khác nhau sẽ cho các giá trị đầu ra khác nhau

Yếu tố salt: Giá trị đầu vào được thêm bởi 1 chuỗi ngẫu nhiên, giúp giảm bớt khả năng kẻ tấn công có dữ liệu được tính toán từ trước hoặc tốn nhiều thời gian để tìm

Trang 24

Stretching: Các máy tính hiện nay có tốc độ xử lý rất nhanh, vì thế cơ chế này sẽ giúp làm chậm quá trình băm dữ liệu hay còn gọi là tăng tải, khiến kẻ tấn công tốn nhiều thời gian để có được dữ liệu băm

Hình 2.1 Tốc độ băm của 1 số thuật toán phổ biến 1

Bcrypt được chạy trên 2 pha:

- Pha 1: Hàm EksBlowfishSetup được gọi để chuẩn bị cho quá trình băm với chi

phí mong muốn, salt và mật khẩu dùng cho khởi tạo trạng thái của eksblowfish Trong trường hợp mật khẩu không đủ tốt hoặc quá ngắn, nó sẽ được xử lý và tạo ra mật khẩu có độ dài lớn hơn Mục đích chính của bước này là tăng cường sức mạnh của key để làm chậm tốc độ tính toán từ đó giảm tốc độ của kẻ tấn công

1 Nguồn: https://asecuritysite.com/encryption/bcrypt

Trang 25

Hình 2.2 Mã giải thuật toán băm Bcrypt 2

- Pha 2: Giá trị 192 bits OrpheanBeholderScryDoubt được mã hoá 64 lần sử dụng eksblowfish với chế độ ECB3 Đầu ra của pha này là giá trị cost và 128 bits salt được ghéo với kết quả vòng lặp mã hoá

Hình 2.3 Kết qủa cuối cùng của quá trình băm 4

2 Nguồn: https://auth0.com

Trang 26

2.2 Công nghệ sử dụng

2.2.1 React

Hình 2.4 Logo thư viện React 5

ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản thân nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành phần trên website Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ liệu không chỉ thực hiện được trên tầng Server mà còn ở dưới Client Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau React so sánh

sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM Trước khi đến cài đặt và cấu hình, chúng ta sẽ đi đến một

số khái niệm cơ bản:

- Virtual DOM:

Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng Việc chỉ node gốc mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý React

JS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này.Virtual DOM là một object Javascript, mỗi object chứa đầy đủ thông tin cần thiết để tạo ra một DOM, khi dữ liệu thay đổi nó sẽ tính toán sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM tree thật React sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều Dữ liệu được truyền từ parent đến child thông qua props Luồng dữ liệu đơn giản giúp chúng ta dễ dàng kiểm soát cũng như sửa lỗi Với các đặc điểm ở trên, React dùng để xây dựng các ứng dụng lớn mà dữ liệu của

5 Nguồn: https://reactjs.org/

Trang 27

chúng thay đổi liên tục theo thời gian Dữ liệu thay đổi thì hầu hết kèm theo sự thay đổi về giao diện Ví dụ như Facebook: trên Newsfeed của bạn cùng lúc sẽ có các status khác nhau và mỗi status lại có số like, share, comment liên tục thay đổi Khi

đó React sẽ rất hữu ích để sử dụng

- Giới thiệu về JSX:

JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript Đặc điểm: Faster: Nhanh hơn JSX thực hiện tối ưu hóa trong khi biên dịch sang mã Javacsript Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã tương đương viết trực tiếp bằng Javascript Safer: an toàn hơn Ngược với Javascript, JSX là kiểu statically-typed, nghĩa là nó được biên dịch trước khi chạy, giống như Java, C++ Vì thế các lỗi sẽ được phát hiện ngay trong quá trình biên dịch Ngoài ra, nó cũng cung cấp tính năng gỡ lỗi khi biên dịch rất tốt Easier: Dễ dàng hơn JSX kế thừa dựa trên Javascript, vì vậy rất dễ dàng để cho các lập trình viên Javascripts có thể sử dụng (tham khảo tại https://jsx.github.io/)

- Giới thiệu về Components:

React được xây dựng xung quanh các component, chứ không dùng template như các framework khác Trong React, chúng ta xây dựng trang web sử dụng những thành phần (component) nhỏ Chúng ta có thể tái sử dụng một component ở nhiều nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một component lại có thể chứa thành phần khác Mỗi component trong React có một trạng thái riêng, có thể thay đổi, và React sẽ thực hiện cập nhật component dựa trên những thay đổi của trạng thái Mọi thứ React đều là component Chúng giúp bảo trì mã code khi làm việc với các dự án lớn Một react component đơn giản chỉ cần một method render

Có rất nhiều methods khả dụng khác, nhưng render là method chủ đạo

- Props và State:

Props: giúp các component tương tác với nhau, component nhận input gọi là props,

Trang 28

thể hiện trạng thái của ứng dụng, khi state thay đồi thì component đồng thời render lại để cập nhật UI

2.2.2 React Redux

Hình 2.5 Logo thư viện React Redux 6

Redux là một predictable state management tool cho các ứng dụng Javascript Nó giúp bạn viết các ứng dụng hoạt động một cách nhất quán, chạy trong các môi trường khác nhau (client, server, and native) và dễ dàng để test Redux ra đời lấy cảm hứng từ tư tưởng của ngôn ngữ Elm và kiến trúc Flux của Facebook Do vậy Redux thường dùng kết hợp với React

Các thành phần trong Redux:

- Actions đơn giản là các events Chúng là cách mà chúng ta send data từ app đến Redux store Những data này có thể là từ sự tương tác của user vs app, API calls hoặc cũng có thể là từ form submission

- Reducers là các function nguyên thủy chúng lấy state hiện tại của app, thực hiện một action và trả về một state mới Những states này được lưu như những objects và chúng định rõ cách state của một ứng dụng thay đổi trong việc phản hồi một action được gửi đến store

- Store lưu trạng thái ứng dụng và nó là duy nhất trong bất kỳ một ứng dụng Redux nào Bạn có thể access các state được lưu, update state, và đăng ký or hủy đăng ký các listeners thông qua helper methods

6 Nguồn: https://react-redux.js.org/

Trang 29

Hình 2.6 Các thành phần của Redux 7

2.2.3 Ant Design

Hình 2.7 Logo thư viện Ant Design 8

Ant là tập hợp các components của React được xây dựng theo chuẩn thiết kế của Ant UED Team Tương tự như chuẩn Material Design, Ant cung cấp hầu hết các component thông dụng trong ứng dụng web hiện đại, như Layout, Button, Icon, DatePicket, v.v…Bên cạnh đó Ant cũng có những component riêng thú vị, như LocaleProvider cho phép bạn thay đổi ngôn ngữ trên toàn ứng dụng

Ant Design hiện đang có hơn 76k star trên GitHub và hiện là thư viện UI lớn thứ 2 trên thế giới

Có thể coi Ant Design cho React là tập hợp của hầu hết các thư viện về React Dưới đây là danh sách các component mà nó cung cấp:

- General: Button, Icon

Trang 30

- Layout: Grid, Layout

- Navigation: Affix, Breadcrumb, Dropdown, Menu, Pagination, Steps

- Data Entry: AutoComplete, Checkbox, Cascader, DatePicker, Form,

InputNumber, Input, Mention, Rate, Radio, Switch, Slider, Select,

TreeSelect, Transfer, TimePicker, Upload

- Data Display: Avatar, Badge, Collapse, Carousel, Card, Calendar, List, Popover, Tree, Tooltip, Timeline, Tag, Tabs, Table

- Feedback: Alert, Drawer, Modal, Message, Notification, Progress,

Popconfirm, Spin, Skeleton

- Other: Anchor, BackTop, Divider, LocaleProvider

Ngoài ra, trong hệ sinh thái của Ant Design, còn có các thư viện như Ant Design Pro, Ant Design Chart, Ant Design Mobile,…

2.2.4 Firebase Storage

Hình 2.8 Logo Firebase Storage 9

Firebase Storage là dịch vụ được xây dựng cho mục đích lưu trữ và quản lý các nội dung mà người dùng ứng dụng tạo ra như ảnh, videos hay dữ liệu dạng file

Firebase Storage cung cấp các API cho việc uploads và download các file từ app của bạn một cách bảo mật và bạn không cần quan tâm đến chất lượng đường truyền mạng

Firebase Storage được xây dựng trên nền tảng Google Cloud Platform nên có nhiều lợi thế

9 Nguồn: https://blog.angular.io/

Trang 31

Một số điểm mạnh:

- Robust: Firebase Storage thực hiện việc upload và download không phụ thuộc vào chất lượng đường truyền mạng hơn nữa các quá trình đó có thể bắt đầu lại khi bị tạm dừng giúp tiết kiệm thời gian và băng thông

- Secure: Được tích hợp Firebase Authentication cho việc bảo mật nên dễ dàng quản lý quyền truy cập vào các files

- Scalable: Firebase Storage được xây dựng trên nền tảng Google Cloud

Platform nên khả năng mở rộng có thể lên đến hàng Petabyte dữ liệu

2.2.5 JSON Web Token

Hình 2.9 Logo JSON Web Token (JWT) 10

JSON Web Token (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượng JSON Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ

ký số JWTs có thể được ký bằng một thuật toán bí mật (với thuật toán HMAC) hoặc một public / private key sử dụng mã hoá RSA

Một ví dụ về JWT Token:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEsImlzcy I6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y2ExZTQxZGY3YmM 5MGM4YWI2ZDBmNjIwN2Q0OTFjZjZkYWQ3YzY2ZWE3OTdiNDYxNGI3M TkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQ.uKqU9dTB6gKwG6jQCuXYAiMN dfNRw98Hw_IWuA5MaMo

Trang 32

Thoạt trông phức tạp là thế nhưng nếu hiểu, cấu trúc của một JWT chỉ đơn giản như sau:

<base64-encoded header>.<base64-encoded payload>.<base64-encoded signature>

Nói một cách khác, JWT là sự kết hợp (bởi dấu ) một Object Header dưới định dạng JSON được encode base64, một payload object dưới định dạng JSON được encode base64 và một Signature cho URI cũng được mã hóa base64

Thành phần JWT:

- Header: bao gồm hai phần chính: loại token (mặc định là JWT - Thông tin này cho biết đây là một Token JWT) và thuật toán đã dùng để mã hóa

(HMAC SHA256 - HS256 hoặc RSA)

Hình 2.10 Nội dung header JWT

- Payload chứa các claims Claims là một các biểu thức về một thực thể (chẳng hạn user) và một số metadata phụ trợ Có 3 loại claims thường gặp trong Payload: reserved, public và private claims

▪ Reserved claims: Đây là một số metadata được định nghĩa trước, trong đó một số metadata là bắt buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy đủ thông tin: iss (issuer), iat (issued-at time) exp

(expiration time), sub (subject), aud (audience), jti (Unique Identifier cho JWT

Trang 33

Hình 2.11 Nội dung Reserved claims

▪ Public Claims - Claims được cộng đồng công nhận và sử dụng rộng rãi

▪ Private Claims - Claims tự định nghĩa (không được trùng với Reserved Claims và Public Claims), được tạo ra để chia sẻ thông tin giữa 2 parties đã thỏa thuận và thống nhất trước đó

- Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header, payload cùng với một chuỗi bí mật theo nguyên tắc sau:

Hình 2.12 Nguyên tắc chuỗi bí mật

- Do bản thân Signature đã bao gồm cả header và payload nên Signature có thể dùng để kiểm tra tính toàn vẹn của dữ liệu khi truyền tải

2.2.6 Sequelize

Trang 34

Hình 2.13 Logo ORM Sequelize 11

Sequelize là một ORM dành cho Node.js và io.js Nó hỗ trợ bạn truy cập một cách

dễ dàng đến PostgreSQL, MySQL, MariaDB, SQLite và MSSQL cùng với các tính năng như là relations, eager and lazy loading, read replication,…

2.2.7 PostgreSQL

Hình 2.14 Logo PostgreSQL 12

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ-đối tượng mã nguồn mở tiên tiến nhất hiện nay được phát triển bởi Khoa Điện Toán, Đại học California – Hoa kỳ dựa trên Postgres phiên bản 4.2 Nó có thể chạy trên nhiều nền tảng khác nhau như Windows, Mac OS X, Solari

PostgreSQL là cơ sở dữ liệu quan hệ, do đó nó lưu trữ quan hệ giữa các bộ đại diện cho các thực thể và mỗi quan hệ giữa chúng Mối quan hệ và các thuộc tính của các thực thể là cố định Các thuộc tính của thể là nguyên tử (số nguyên, số thực, logic) hoặc kiểu dữ liệu có cấu trúc (mảng)

11 Nguồn: https://sequelize.org/

12 Nguồn: https://www.postgresql.org/

Trang 35

Hình 2.15 Minh hoạ bộ dữ liệu được lưu trong bảng của PostgreSQL 13

PostgreSQL hỗ trợ giao dịch (transaction) với các thuộc tính ACID, cụ thể là:

- Tính nguyên tử (Atomicity): Các transaction được coi như là các đơn vị hoàn chỉnh Nó có thể được thực hiện thành công hoặc thất bại, nếu thất bại trạng thái cơ sở dữ liệu vẫn sẽ được giữ nguyên

- Tính nhất quán (Consistency): Trong cùng 1 cơ sở dữ liệu, giữa các transaction chỉ tồn tại 1 trạng thái hợp lệ duy nhất Tất cả dữ liệu được ghi đều phải tuân thủ các ràng buộc hiện có

- Tính cô lập (Isolation): Chức năng giúp kiểm soát xử lý đồng thời, bảo đảm

dữ liệu không bị hỏng bởi các transactions đồng thời hoặc không hợp pháp

- Tính lâu bền (Durability): Khi transaction đã thực hiện xong (đã commit), những cập nhật trở nên cố định và không thay đổi Khi hệ thống gặp sự cố bất ngờ, quá trình khôi phục bảo đảm những transaction đã được commit sẽ được khôi phục nguyên vẹn

Là cơ sở dữ liệu quan hệ hướng đối tượng, PostgreSQL trở nên lợi thế hơn các cơ sở

dữ liệu SQL khác như MySQL, MariaDB, FireBird Nó hỗ trợ các kiều dữ liệu người dùng tự định nghĩa và các hành vi của chúng bao gồm các kiều dữ liệu, các hàm, các

Trang 36

thao tác, tên miền và chỉ mục Các kiểu dữ liệu được cung cấp sẵn cũng vô cùng phong phú: uuid, tiền tệ, kiểu liệt kê, hình học (geometric), nhị phân (binary), địa chỉ mạng, mảng

PostgreSQL có thể xử lý một lượng lớn dữ liệu, kích thước tối đa được thể hiện trong bảng dưới đây:

Kích thước tối đa của cơ sở dữ liệu Không giới hạn

Số cột tối đa trên mỗi bảng 250 - 1600 phụ thuộc vào kiểu cột

Số lượng index tối đa trên mỗi bảng Không giới hạn

Bảng 2.1 Bảng giới hạn kích thước của dữ liệu trong PostgreSQL

2.2.8 Vercel

Hình 2.16 Logo Vercel 14

14 Nguồn: https://vercel.com/

Trang 37

Vercel là một nền tảng dành cho các framework giao diện người dùng và các trang

web tĩnh, được xây dựng để tích hợp với nội dung, thương mại hoặc cơ sở dữ liệu

Vercel mang đến cho nhà phát triển trải nghiệm dễ dàng giải quyết những việc khó

như: triển khai ngay lập tức, mở rộng quy mô tự động và phân phát nội dung được

cá nhân hóa trên toàn cầu Vercel còn giúp đội ngữ Front-end dễ dàng phát triển,

xem trước và cung cấp trải nghiệm người dùng thú vị, trong đó hiệu suất là mặc

định

2.2.9 Google Cloud Platform

Hình 2.17 Logo Google Cloud Platform 15

Google Cloud hay còn gọi là Google Cloud Platform (GCP) chính là một nền tảng của kỹ

thuật điện toán đám mây cho phép các cá nhân, tổ chức, các doanh nghiệp, các cơ quan có thể xây dựng, phát triển, và hoạt động các ứng dụng của mình trên hệ thống phần mềm do google tạo ra Các ứng dụng rất phổ biến hiện nay được mọi người sử dụng rất nhiều như: Trình duyệt Chrome, ứng dụng bản đồ Google Map, Google Apps, kênh Youtube…

Google Cloud cung cấp tất cả các giải pháp quản lý cho doanh nghiệp, giúp doanh nghiệp

có thể phát triển hệ thống công nghệ của mình một cách chính xác, hiện đại Bên cạnh đó,

GC còn giúp người dùng và doanh nghiệp giải quyết các vấn đề như: Developer (phát triển), Management (Quản lý), Computer Engine, Mobile, Storage, Big Data…

Trang 38

Một điểm khác biệt nữa mà GC mang lại so với các dịch vụ đám mây khác đó chính là hệ thống DataCenter luôn ổn định và có độ bảo mật dữ liệu cực cao, giúp bảo vệ dữ liệu người dùng và khách hàng trước sự dòm ngó và xâm nhập trái phép của các hacker công nghệ

Những sản phẩm và dịch vụ Google Cloud cung cấp

Big Data: BigQuery, Cloud Dataproc, Cloud Dataflow…

Services: Translate API, Prediction API…

Storage: Cloud Storage, Cloud Datastore, Cloud SQL…

Compute: App Engine, Compute Engine, …

Những dịch vụ Google Cloud cấp cao

o Dịch vụ IoT (Internet of things hay còn gọi là internet vạn vật): đây chính là

dịch vụ cho phép người dùng có thể dễ dàng quản lý, sử dụng dữ liệu từ những thiết bị IoT

o Dịch vụ Cloud Machine Learning Engine (máy tìm kiếm đám mây): được

sử dụng để phát triển ứng dụng AI – trí tuệ nhân tạo AI đã cho thấy sức mạnh vượt trội của mình trong những năm gần đây, AI đã giúp con người xử

lý những dữ liệu và thông tin khổng lồ dễ dàng và đơn giản hơn bao giờ hết

o Dịch vụ Hadoop và Apache Spark: bao gồm cả Google Cloud Dataproc: giúp người dùng quản lý dữ liệu có hệ thống, bảo mật, nhanh hơn

và an toàn hơn

o Dịch vụ Google Big Query: đây là dịch vụ giúp xử lý và phân tích các tệp dữ

liệu cực kỳ lớn Nó hoạt động với chức năng truy vấn tương tự cơ sở dữ liệu SQL truyền thống Những tệp dữ liệu mà nó xử lý có thể lên đến hàng trăm triệu terabyte

Trang 39

CHƯƠNG 3

PHÂN TÍCH THIẾT KẾ ỨNG DỤNG

3.1 Yêu cầu nghiệp vụ

3.1.1 Phân loại các yêu cầu phần mềm

3.1.1.1 Danh sách các yêu cầu nghiệp vụ

11 Tạo mới và hiệu chỉnh thông tin

13 Xem thông tin chi tiết khóa học BM13

14 Xem danh sách lớp học thuộc khóa

15 Tạo mới và hiệu chỉnh thông tin lớp

17 Xem chi tiết thông tin lớp học BM17

Trang 40

21 Thiết lập bài thi và lịch thi BM21 QĐ21

23 Thêm và hiệu chỉnh thông tin nhân

25 Thêm và hiệu chỉnh thông tin giảng

30 Thống kê doanh thu, chi tiêu theo

31 Xem chi tiết hóa đơn và in hóa đơn BM31

33 Tạo trình độ học vấn mới, hiệu chỉnh

Bảng 3.1 Danh sách yêu cầu nghiệp vụ

a Biểu mẫu và quy định 1

Ngày đăng: 01/02/2023, 21:12

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] P. G. D. Group, "PostgreSQL: Documentation," The PostgreSQL Global Development Group, [Online]. Available: https://www.postgresql.org/docs/ Sách, tạp chí
Tiêu đề: PostgreSQL: Documentation
[2] Sascha Depold, "Manual | Sequelize," 2021. [Online]. Available: https://sequelize.org/master/manual/assocs.html Sách, tạp chí
Tiêu đề: Manual | Sequelize
[3] BezKoder, "Node.js JWT Authentication with PostgreSQL example - BezKoder," 10 December 2021. [Online]. Available:https://www.bezkoder.com/node-js-jwt-authentication-postgresql/ Sách, tạp chí
Tiêu đề: Node.js JWT Authentication with PostgreSQL example - BezKoder
[4] Bezkoder, "React JWT Authentication (without Redux) example - Bezkoder," 3 December 2021. [Online]. Available: https://www.bezkoder.com/react-jwt- auth/ Sách, tạp chí
Tiêu đề: React JWT Authentication (without Redux) example - Bezkoder
[5] Heroku, "Heroku Postgres | Heroku Dev Center," 17 November 2021. [Online]. Available: https://devcenter.heroku.com/articles/heroku-postgresql Sách, tạp chí
Tiêu đề: Heroku Postgres | Heroku Dev Center
[7] BezKoder, "Node.js Express &amp; PostgreSQL: CRUD Rest APIs example with Sequelize," 3 11 2021. [Online]. Available: https://www.bezkoder.com/node- express-sequelize-postgresql/ Sách, tạp chí
Tiêu đề: Node.js Express & PostgreSQL: CRUD Rest APIs example with Sequelize
[8] Comunity contributors, "Tutorial: Intro to React," [Online]. Available: https://reactjs.org/tutorial/tutorial.html. [Accessed 3 10 2021] Sách, tạp chí
Tiêu đề: Tutorial: Intro to React
[9] A. Design, "Ant Design document," [Online]. Available: https://ant.design/docs/react/introduce. [Accessed 11 10 2021] Sách, tạp chí
Tiêu đề: Ant Design document
[6] R. C.Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008 Khác

TỪ KHÓA LIÊN QUAN