CƠ SỞ LÝ THUYẾT
HTML
HTML, viết tắt của Hypertext Markup Language, là ngôn ngữ giúp người dùng tạo và cấu trúc các thành phần trên trang web hoặc ứng dụng, bao gồm việc phân chia đoạn văn, tiêu đề, liên kết và trích dẫn.
HTML là một phần thiết yếu trong mọi website, nhưng nó không phải là ngôn ngữ lập trình, nên không thể tạo ra các chức năng động Thay vào đó, HTML giống như Microsoft Word, được sử dụng để bố cục và định dạng trang web.
Khi làm việc với HTML, chúng ta sử dụng cấu trúc mã đơn giản gồm các thẻ và thuộc tính để đánh dấu nội dung trên trang web Chẳng hạn, để tạo một đoạn văn, chúng ta chỉ cần đặt văn bản giữa cặp thẻ mở
và thẻ đóng
.HTML documents là các tệp có đuôi html và có thể được mở bằng bất kỳ trình duyệt web nào như Google Chrome, Safari hoặc Mozilla Firefox.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Firefox) Trình duyệt đọc các files HTML này và xuất bản nội dung lên internet sao cho người đọc có thể xem được nó
Mỗi website thường bao gồm nhiều trang HTML như trang chủ, trang giới thiệu và trang liên hệ, với mỗi trang cần các HTML riêng biệt Mỗi trang HTML được cấu thành từ các thẻ (elements), tạo nên cấu trúc cây thư mục bao gồm các phần như section, paragraph, heading và các khối nội dung khác Hầu hết các phần tử HTML đều có thẻ mở và thẻ đóng với cấu trúc .
Từ những ngày đầu tiên, HTML đã là một phát minh vượt thời đại W3C liên tục xuất bản các bản cập nhật và nâng cấp
HTML4, thường được gọi là “HTML”, được phát hành vào năm 1999, trong khi phiên bản mới nhất là HTML5 ra mắt vào năm 2014 với nhiều tính năng quan trọng mới.
HTML5 mang đến tính năng nổi bật là hỗ trợ âm thanh và video, cho phép người dùng nhúng các tệp âm thanh và video trực tiếp vào trang web mà không cần sử dụng Flash Player, thông qua các thẻ và .
Nó cũng hỗ trợ những tính năng mặc định như hỗ trợ scalable vector graphics (SVG) và MathML cho các công thức toán học và phương trình khoa học
HTML5 mang đến nhiều cải tiến về ngôn ngữ với các thẻ mới, giúp trình duyệt hiểu rõ mục đích chính của nội dung trên website Điều này không chỉ có lợi cho người đọc mà còn hỗ trợ tối ưu hóa cho các công cụ tìm kiếm.
2.1.2 Ưu nhược điểm của HTML Ưu điểm:
• Ngôn ngữ được sử dụng rộng lớn này có rất nhiều nguồn tài nguyên hỗ trợ và cộng đồng sử dụng cực lớn[1]
• Sử dụng mượt mà trên hầu hết mọi trình duyệt
• Có quá trình học đơn giản và trực tiếp
• Mã nguồn mở và hoàn toàn miễn phí
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
• Markup gọn gàng và đồng nhất
• Chuẩn chính của web được vận hành bởi World Wide Web Consortium (W3C)
• Dễ dàng tích hợp với các ngôn ngữ backend như PHP và Node.js
• Được dùng chủ yếu cho web tĩnh Đối với các tính năng động, bạn cần sử dụng JavaScript hoặc ngôn ngữ backend bên thứ 3 như PHP
Các trang web thường cần được thiết kế riêng biệt để thực thi các logic nhất định cho người dùng, mặc dù chúng có thể sử dụng các yếu tố giống nhau như headers và footers.
• Một số trình duyệt chậm hỗ trợ tính năng mới
• Khó kiểm soát cảnh thực thi của trình duyệt (ví dụ, những trình duyệt cũ không render được tag mới).
CSS
CSS, hay Cascading Style Sheet, là ngôn ngữ dùng để tạo phong cách và định kiểu cho các yếu tố được viết bằng ngôn ngữ đánh dấu như HTML Nó cho phép điều chỉnh định dạng của nhiều trang web cùng lúc, giúp tiết kiệm thời gian cho các nhà phát triển web CSS phân tách cách hiển thị của trang web với nội dung chính, điều khiển bố cục, màu sắc và font chữ để tạo ra trải nghiệm người dùng tốt hơn.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
CSS, được phát triển bởi W3C vào năm 1996, đóng vai trò quan trọng trong việc trang trí và định dạng văn bản viết bằng HTML Trong khi HTML chỉ được sử dụng để "đánh dấu" nội dung trên trang web, CSS giúp cải thiện giao diện và trải nghiệm người dùng bằng cách thêm các yếu tố thiết kế cần thiết.
Các thẻ như được giới thiệu trong HTML phiên bản 3.2 đã gây không ít khó khăn cho lập trình viên do sự đa dạng về font chữ, màu nền và phong cách Việc chỉnh sửa mã cho trang web trở thành một quá trình tốn thời gian và công sức Để khắc phục vấn đề này, W3C đã phát triển CSS.
HTML và CSS có mối quan hệ chặt chẽ, trong đó HTML là ngôn ngữ đánh dấu cơ bản cho website, còn CSS chịu trách nhiệm định hình phong cách và giao diện của nó Sự kết hợp giữa hai ngôn ngữ này là điều không thể thiếu để tạo nên một trang web hoàn chỉnh.
CSS về lý thuyết không có cũng được, nhưng khi đó website sẽ không chỉ là một trang chứa văn bản mà không có gì khác
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
CSS sử dụng cú pháp tiếng Anh đơn giản để thiết lập các quy tắc có thể áp dụng cho các yếu tố Đáng chú ý, HTML không được sử dụng để định hình phong cách, mà chỉ đóng vai trò đánh dấu để xác định loại yếu tố, chẳng hạn như
Đây là văn bản.
.Để tạo phong cách cho văn bản, bạn chỉ cần sử dụng CSS với cú pháp đơn giản, bao gồm phần chọn và phần khai báo Bạn chọn một yếu tố và xác định các thuộc tính cần áp dụng cho nó Quá trình này thật dễ dàng và hiệu quả.
Tuy nhiên, cũng có nhiều quy tắc cần ghi nhớ
Selector sẽ chỉ định yếu tố HTML mà bạn muốn áp dụng phong cách Khối khai báo sẽ bao gồm một hoặc nhiều khai báo, được phân cách bằng dấu chấm phẩy.
Mỗi khai báo CSS bao gồm một tên và giá trị, được phân tách bằng dấu hai chấm Mỗi khai báo phải kết thúc bằng dấu chấm phẩy, và toàn bộ block khai báo được đặt trong dấu ngoặc nhọn.
2.2.2 Ưu nhược điểm của CSS Ưu điểm:
Sự khác biệt rõ rệt giữa một trang web có sử dụng CSS và một trang web không có CSS là rất dễ nhận thấy Khi một trang web không tải đầy đủ, người dùng chỉ thấy nền trắng cùng với chữ màu đen và xanh.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Một trang web không có CSS sẽ trông rất kém hấp dẫn và thiếu chuyên nghiệp Nếu thành phần CSS không tải lên được hoặc không tồn tại, website của bạn sẽ mất đi sự thu hút cần thiết Bạn có muốn website của mình xuất hiện như vậy không? Chắc chắn là không.
Trước khi áp dụng CSS, tất cả các phong cách cần được tích hợp vào mã HTML Điều này có nghĩa là bạn phải xác định rõ các thành phần như màu nền, màu chữ, và cách căn chỉnh.
CSS cho phép bạn định dạng mọi thứ trong một tệp riêng, giúp tạo phong cách trước và tích hợp tệp CSS vào đầu tệp HTML Điều này làm cho mã HTML trở nên rõ ràng và dễ quản lý hơn.
CSS giúp bạn tránh việc lặp lại mô tả cho từng thành phần, tiết kiệm thời gian và rút gọn mã code, từ đó dễ dàng kiểm soát lỗi hơn.
CSS giúp bạn có nhiều styles trên một trang web HTML, vì vậy, khả năng điều chỉnh trang gần như vô hạn
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Một stylesheet thường được lưu trữ trong bộ nhớ cache của trình duyệt, cho phép sử dụng lại trên nhiều trang mà không cần nạp lại Điều này giúp tăng tốc độ tải trang và giảm lượng dữ liệu truyền qua mạng.
Với một sự thay đổi đơn giản trong mã, một kiểu dáng khác nhau có thể được áp dụng cho cùng một trang, giúp cải thiện khả năng tiếp cận và tối ưu hóa trải nghiệm người dùng trên các thiết bị khác nhau Hơn nữa, ngay cả những thiết bị không hỗ trợ phong cách vẫn có thể hiển thị nội dung một cách hiệu quả.
Javascript
JavaScript là ngôn ngữ lập trình phổ biến nhất trên thế giới trong suốt 20 năm qua Nó cũng là một trong số 3 ngôn ngữ chính của lập trình web:
1 HTML: Giúp bạn thêm nội dung cho trang web
2 CSS: Định dạng thiết kế, bố cục, phong cách, canh lề của trang web
3 JavaScript: Cải thiện cách hoạt động của trang web
JavaScript là một ngôn ngữ lập trình dễ học và linh hoạt, phù hợp cho nhiều ứng dụng khác nhau, từ việc nâng cao chức năng của website đến phát triển game và phần mềm web Đặc biệt, cộng đồng lập trình viên, đặc biệt là trên GitHub, đã cung cấp hàng ngàn mẫu template và ứng dụng JavaScript hữu ích.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Hình 4: Javascript là một người bạn thân thiện của mọi lập trình viên
JavaScript, được phát triển bởi Brandan Eich tại Netscape trong chỉ mười ngày vào tháng 9 năm 1995, ban đầu mang tên Mocha, sau đó đổi thành Mona và LiveScript trước khi trở thành JavaScript như ngày nay Phiên bản đầu tiên của ngôn ngữ này có tính năng hạn chế và độc quyền bởi Netscape, nhưng đã phát triển mạnh mẽ theo thời gian nhờ sự đóng góp không ngừng từ cộng đồng lập trình viên.
Trong năm 1996, JavaScript được chính thức đặt tên là ECMAScript ECMAScript 2 phát hành năm 1998 và ECMAScript 3 tiếp tục ra mắt vào năm 1999
JavaScript đã phát triển mạnh mẽ và hiện nay hoạt động trên tất cả các trình duyệt cũng như trên nhiều thiết bị, từ di động đến máy tính để bàn.
JavaScript đã trải qua sự phát triển mạnh mẽ và đạt tỷ lệ sử dụng lên đến 92% trên các website vào năm 2016 Chỉ trong vòng 20 năm, ngôn ngữ lập trình này đã chuyển mình từ một công cụ riêng lẻ thành một phần không thể thiếu trong bộ công cụ của các lập trình viên web.
Nếu bạn thường xuyên sử dụng internet, có lẽ bạn đã tiếp xúc với JavaScript Ngôn ngữ này thường được nhúng trực tiếp vào trang web hoặc tham chiếu qua file js riêng biệt JavaScript hoạt động phía client, nghĩa là mã lệnh sẽ được tải về máy của người dùng.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC, cho biết rằng quá trình xử lý dữ liệu diễn ra ngay tại vị trí của khách truy cập, thay vì phải xử lý trên máy chủ và sau đó gửi kết quả về cho khách.
Các trình duyệt web phổ biến cho phép người dùng tùy chọn tắt JavaScript Do đó, bạn cần hiểu cách trang web hoạt động khi không có JavaScript.
2.3.2 Ưu nhược điểm của Javascript Ưu điểm:
JavaScript nổi bật với nhiều ưu điểm vượt trội so với các ngôn ngữ lập trình khác, đặc biệt trong các ứng dụng thực tiễn Một số lợi ích chính của JavaScript bao gồm khả năng tương tác cao, dễ dàng tích hợp với các công nghệ khác, và hỗ trợ phát triển ứng dụng web mượt mà, giúp nâng cao trải nghiệm người dùng.
1 Bạn không cần một compiler vì web browser có thể biên dịch nó bằng HTML
2 Nó dễ học hơn các ngôn ngữ lập trình khác
3 Lỗi dễ phát hiện hơn và vì vậy dễ sửa hơn
4 Nó có thể được gắn trên một số element của trang web hoặc event của trang web như là thông qua click chuột hoặc di chuột tới
5 JS hoạt động trên nhiều trình duyệt, nền tảng, vâng vâng
6 Bạn có thể sử dụng JavaScript để kiểm tra input và giảm thiểu việc kiểm tra thủ công khi truy xuất qua database
7 Nó giúp website tương tác tốt hơn với khách truy cập
8 Nó nhanh hơn và nhẹ hơn các ngôn ngữ lập trình khác
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Hình 5: Dễ học là ưu điểm lớn nhất của Javascript
Mọi ngôn ngữ lập trình đều có khuyết điểm, đặc biệt là JavaScript, khi nó thu hút một lượng lớn hacker và scammer tìm kiếm lỗ hổng bảo mật để khai thác Những khuyết điểm này có thể gây ra rủi ro cho người dùng và hệ thống.
2 Có thể được dùng để thực thi mã độc trên máy tính của người dùng;
3 Nhiều khi không được hỗ trợ trên mọi trình duyệt;
5 Có thể bị triển khai khác nhau tùy từng thiết bị dẫn đến việc không đồng nhất
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Hình 6: Javascript rất dễ bị các Hacker khai thác
PHP
PHP (viết tắt của Hypertext Preprocessor) là một ngôn ngữ lập trình kịch bản chủ yếu được sử dụng cho giao tiếp phía server, khác với JavaScript có thể hoạt động ở cả frontend và backend, trong khi Python chủ yếu dành cho phía client Để hiểu rõ hơn về PHP, việc nắm vững kiến thức về ngôn ngữ kịch bản là rất cần thiết.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Ngôn ngữ script, hay còn gọi là ngôn ngữ lập trình kịch bản, là công cụ tự động hóa thực hiện các tác vụ trong môi trường runtime đặc biệt Nó cho phép các trang web tĩnh, được xây dựng bằng HTML và CSS, thực hiện những hành động cụ thể theo quy tắc mà người dùng đã xác định trước PHP là một trong những ngôn ngữ scripting phổ biến nhất hiện nay.
Bạn có thể sử dụng script để xác thực biểu mẫu, đảm bảo rằng tất cả các trường đã được điền trước khi gửi về server Script sẽ kiểm tra tất cả các trường khi người dùng gửi biểu mẫu, và nếu có trường nào trống, một cảnh báo sẽ hiển thị để thông báo cho người dùng.
Ngôn ngữ script được sử dụng phổ biến để tạo hiệu ứng thả xuống khi di chuyển con trỏ qua menu chính, cùng với các tính năng như nút cuộn, hình động và mở hộp thoại.
Phía server và phía client
Các ngôn ngữ script có thể chạy phía client (frontend) hoặc phía server (backend)
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Client-side scripts are processed by web browsers When a client requests a page containing these scripts, the server responds by sending executable source code to the browser.
Ngôn ngữ script phía server là các script được thực thi trên máy chủ trước khi gửi tới trình duyệt Thay vì gửi mã nguồn, các máy chủ web sẽ xử lý và chuyển đổi mã thành định dạng HTML đơn giản trước khi truyền tải.
Script phía server giúp các nhà quản trị web bảo vệ mã nguồn, trong khi script phía client lại dễ dàng bị người dùng truy cập Giờ đây, bạn đã nắm rõ khái niệm cơ bản về ngôn ngữ lập trình script, bao gồm client-side và server-side Vậy PHP là gì?
Như đã đề cập, PHP là ngôn ngữ script được tạo cho các giao tiếp phía server
Nó có khả năng xử lý các chức năng phía server, bao gồm thu thập dữ liệu từ biểu mẫu, quản lý file trên server, và sửa đổi cơ sở dữ liệu, cùng nhiều chức năng khác.
Ngôn ngữ này được Rasmus Lerdorf phát triển ban đầu để theo dõi lượng khách truy cập vào trang cá nhân của mình Khi ngôn ngữ này ngày càng phổ biến, Lerdorf đã quyết định phát hành nó dưới dạng mã nguồn mở, khuyến khích các nhà phát triển tham gia vào việc sử dụng, sửa đổi và cải thiện mã Quyết định này đã dẫn đến sự phát triển của ngôn ngữ script mà chúng ta sử dụng ngày nay.
PHP, mặc dù là ngôn ngữ lập trình đa năng, nhưng chủ yếu được sử dụng trong phát triển web nhờ vào tính năng nổi bật cho phép nhúng mã vào file HTML.
Để bảo vệ mã nguồn của bạn khỏi việc bị xem bởi người khác, bạn có thể sử dụng ngôn ngữ script để ẩn nó Chỉ cần viết mã vào file PHP và nhúng vào HTML, nội dung gốc sẽ không bị lộ ra cho bất kỳ ai.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Một lợi ích quan trọng của tính năng đặc biệt này là khả năng sử dụng lại mã HTML mà không cần phải viết lại nhiều lần Thay vào đó, bạn chỉ cần ghi mã vào file PHP Khi cần sử dụng HTML, bạn chỉ cần chèn file PHP, giúp tiết kiệm thời gian và công sức trong quá trình phát triển.
An example of a PHP page can be seen on Facebook, where the URL ends with php (facebook.com/home.php) This indicates that the page is built using a PHP file (home.php) that contains hypertext preprocessor code along with HTML tags.
2.4.2 Ưu nhược điểm của PHP Ưu điểm
Về ưu điểm được giới thiệu sơ qua trong nội dung trên, chúng tôi sẽ cho bạn thấy 5 ưu điểm nổi bật nhất về ngôn ngữ PHP này:
PHP là một ngôn ngữ lập trình miễn phí, mang lại lợi thế lớn cho những ai muốn học lập trình Người học có thể dễ dàng tiếp cận tài liệu và thực hành trực tuyến mà không cần lo lắng về chi phí học tập.
Cú pháp và cấu trúc của PHP rất dễ hiểu, giúp người học nhanh chóng nắm bắt ngôn ngữ lập trình này Điều này thu hút nhiều lập trình viên, đặc biệt là những người không thích cấu trúc phức tạp, làm cho PHP trở thành một lựa chọn hấp dẫn cho những ai đam mê lập trình.
MYSQL
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
MySQL is an open-source relational database management system (RDBMS) that operates on a client-server model It serves as software or a service for creating and managing databases, focusing on the relationships between data.
MySQL là một trong những phần mềm quản lý cơ sở dữ liệu quan hệ (RDBMS) phổ biến nhất, được sử dụng rộng rãi bởi các ứng dụng web lớn như Facebook, Twitter, YouTube, Google, và Yahoo! để lưu trữ dữ liệu Ban đầu, MySQL chỉ được sử dụng hạn chế, nhưng hiện nay nó đã tương thích với nhiều hệ điều hành quan trọng như Linux, macOS, Microsoft Windows, và Ubuntu.
Hình 10: MYSQL là hệ quản trị cơ sở dữ liệu phổ biến
Cơ sở dữ liệu là tập hợp các dữ liệu được tổ chức theo một cấu trúc nhất định Ví dụ, khi bạn chụp hình tự sướng, bức ảnh bạn vừa chụp chính là dữ liệu, và thư viện lưu trữ những bức ảnh đó chính là cơ sở dữ liệu.
Cơ sở dữ liệu (database) là nơi lưu trữ và tổ chức dữ liệu, được sắp xếp thành các bộ dữ liệu chung (dataset) tương tự như bảng tính Mỗi bảng trong cơ sở dữ liệu có mối liên hệ với nhau, tạo thành một hệ thống thông tin liên kết.
Trong RDBMS, thuật ngữ "Relational" (liên hệ) thể hiện sự hỗ trợ cho mô hình dữ liệu quan hệ Nếu phần mềm không cung cấp tính năng này, nó sẽ được gọi là DBMS.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Mã nguồn mở (open source) cho phép mọi người sử dụng và chỉnh sửa phần mềm theo nhu cầu của mình Bất kỳ ai cũng có thể cài đặt và học cách tùy chỉnh phần mềm này Tuy nhiên, giấy phép GPL (GNU Public License) quy định các quyền hạn và điều kiện sử dụng Nếu bạn cần sự linh hoạt và hỗ trợ cao cấp, có thể lựa chọn phiên bản thương mại.
Máy tính sử dụng phần mềm RDBMS được gọi là máy khách (client) và khi cần truy cập dữ liệu, chúng kết nối với máy chủ RDBMS (server) Đây chính là mô hình "client-server".
MySQL Server là hệ thống máy tính cài đặt phần mềm MySQL dành cho server, cho phép lưu trữ dữ liệu và quản lý truy cập từ máy khách Dữ liệu được tổ chức trong các bảng có mối liên hệ với nhau MySQL Server nổi bật với tốc độ nhanh, tính an toàn và độ tin cậy cao Phần mềm MySQL hoàn toàn miễn phí và được phát triển, phân phối, hỗ trợ bởi Oracle Corporation.
Hình 11: Cấu trúc cơ bản về việc giao tiếp giữa client-server model
Trong một mạng, máy client giao tiếp với máy server, cho phép client gửi yêu cầu từ giao diện người dùng (GUI) và nhận kết quả mong muốn từ server, miễn là cả hai bên hiểu nhau Tương tự, MySQL hoạt động theo cách này, nơi nó tạo ra các bảng để quản lý dữ liệu hiệu quả.
Nguyễn Quang Trung Hiếu, sinh viên lớp 17CNTTC, đã nghiên cứu về việc lưu trữ dữ liệu và mối liên hệ giữa các bảng trong cơ sở dữ liệu Khi client gửi yêu cầu SQL qua lệnh đặc biệt trên MySQL, ứng dụng trên server sẽ xử lý và phản hồi thông tin, sau đó trả kết quả về cho máy client.
Việc lựa chọn GUI MySQL từ máy client là rất quan trọng, vì một GUI nhẹ sẽ giúp các thao tác quản lý dữ liệu trở nên dễ dàng và nhanh chóng hơn.
Các công cụ giao diện người dùng (GUI) phổ biến cho MySQL bao gồm MySQL WorkBench, SequelPro, DBVisualizer và Navicat DB Admin Tool Một số công cụ miễn phí, trong khi một số khác là phiên bản thương mại Một số ứng dụng chỉ tương thích với macOS, trong khi nhiều ứng dụng khác hỗ trợ các hệ điều hành phổ biến Khách hàng nên lựa chọn GUI phù hợp với nhu cầu của họ Đối với việc quản lý cơ sở dữ liệu web, chẳng hạn như trang web WordPress, phpMyAdmin là lựa chọn rõ ràng nhất.
MySQL là hệ quản lý cơ sở dữ liệu phổ biến nhất trên thị trường, chỉ đứng sau Oracle Database về số lượng tìm kiếm, hồ sơ người dùng trên LinkedIn và mức độ thảo luận trên các diễn đàn trực tuyến.
2.5.2 Ưu nhược điểm của Mysql Ưu điểm:
Linh hoạt và dễ dùng
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Bạn có thể tùy chỉnh mã nguồn để phù hợp với nhu cầu của mình mà không phải chi trả thêm chi phí Quá trình cài đặt cũng rất dễ dàng và thường không mất nhiều thời gian.
Hình 13: MySQl hỗ trợ nhiều ngôn ngữ và HĐH
Nhiều cụm máy chủ hiện nay sử dụng MySQL để xử lý dữ liệu lớn, từ các trang thương mại điện tử đến các hoạt động kinh doanh liên quan đến công nghệ thông tin MySQL không chỉ đảm bảo tốc độ cao mà còn mang lại hiệu suất mượt mà, đáp ứng nhu cầu của các doanh nghiệp.
GITHUB
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
GitHub là dịch vụ lưu trữ mã nguồn Git trên nền tảng web, phục vụ cho các dự án phát triển phần mềm với cả phiên bản miễn phí và trả phí Các dự án mã nguồn mở được cung cấp kho lưu trữ miễn phí, và tính đến tháng 4 năm 2016, GitHub đã thu hút hơn 14 triệu người dùng cùng với 35 triệu kho mã nguồn, trở thành máy chủ chứa mã nguồn lớn nhất thế giới Nó đã trở thành yếu tố quan trọng trong cộng đồng phát triển mã nguồn mở, với nhiều nhà phát triển coi GitHub là sự thay thế cho sơ yếu lý lịch, trong khi một số nhà tuyển dụng yêu cầu ứng viên cung cấp liên kết đến tài khoản GitHub để đánh giá năng lực.
Vào ngày 4 tháng 6 năm 2018, Microsoft công bố thỏa thuận mua lại GitHub với giá 7,5 tỷ USD Ngày chuyển nhượng quyền sở hữu chính thức vẫn chưa được tiết lộ.
GitHub không chỉ là nền tảng lưu trữ mã nguồn phần mềm mà còn hỗ trợ nhiều loại tập tin khác như Final Cut và tài liệu Word Ngoài việc lưu trữ mã nguồn, GitHub còn cung cấp nhiều định dạng và tính năng hữu ích cho người dùng.
3D cho phép xem trước các tập tin thông qua trình xem file STL tích hợp, hiển thị trên khung 3D Công nghệ này được hỗ trợ bởi WebGL và Three.js, mang lại trải nghiệm trực quan tốt hơn cho người dùng.
• Nguồn gốc định dạng PSD của Photoshop có thể được xem trước và so với các phiên bản trước của cùng một tập tin
• Lồng nhiệm vụ danh sách
Các trang web nhỏ có thể được lưu trữ trên GitHub từ kho công cộng, với định dạng URL là http://projectname.github.io Để tạo ra trang web này, bạn chỉ cần bắt đầu một kho lưu trữ có định dạng tương tự như projectname.io.
• Code Snippets (bằng cách sử dụng tên miền phụ Gist)
• Theo dõi vấn đề và tính năng yêu cầu
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
• Trực quan của dữ liệu không gian địa lý
Hình 15: Github là một người bạn của mọi lập trình viên
Quản lý source code dễ dàng
Khi bạn tạo một repository trên GitHub, toàn bộ mã nguồn sẽ được lưu trữ tại đây Bạn có thể xem lại quá trình làm việc của mình thông qua các bình luận sau mỗi lần commit Đặc biệt, nhiều người có thể cùng hợp tác trong một repository, tạo điều kiện cho sự phát triển và chia sẻ mã nguồn hiệu quả.
Lợi ích đầu tiên của việc quản lý commit là bạn có thể theo dõi ai đã thực hiện và những thay đổi nào đã được thực hiện Hệ thống nhánh cho phép dự án phát triển theo nhiều hướng khác nhau, giúp tăng cường khả năng sáng tạo Tuy nhiên, để hoàn thiện dự án, cuối cùng bạn cần phải gộp tất cả các nhánh trở lại vào nhánh MASTER.
Github giúp chứng tỏ bạn là ai
Không thể phủ nhận rằng những câu từ đẹp trong CV là quan trọng, nhưng mã nguồn chính là minh chứng thuyết phục nhất để chứng tỏ bạn là một lập trình viên thực thụ.
Đầu tư vào một tài khoản GitHub ấn tượng và đưa liên kết vào CV của bạn sẽ thu hút sự chú ý của nhà tuyển dụng Không ai muốn bỏ qua ứng viên có hồ sơ nổi bật.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Nhiều công ty lớn trên thế giới coi việc có đóng góp cho cộng đồng hoặc sản phẩm trên Github là yêu cầu quan trọng trong quy trình tuyển dụng Việc đăng tải các dự án lên Github giúp bạn xây dựng một hồ sơ cá nhân đáng tin cậy, tạo lợi thế cạnh tranh so với các ứng viên khác.
Github giúp cải thiện kỹ năng code
Học lập trình trên GitHub là một phương pháp hiệu quả trong thời đại công nghệ hiện nay Với hàng triệu dự án mã nguồn mở và hàng trăm ngàn người đóng góp, bạn có thể dễ dàng tiếp cận và học hỏi từ hàng tỉ lần thay đổi mỗi ngày Việc quan sát và so sánh các thay đổi này không chỉ giúp bạn nắm bắt kỹ thuật mới mà còn cải thiện đáng kể kỹ năng lập trình của bản thân.
Github là một kho tài nguyên tuyệt vời
With the Explore feature, you can track and search for open-source projects that match your preferred technology patterns Don't hesitate to create a GitHub account today Start your own projects and share them with others, or feel free to fork any open-source project You can also create pull requests or issues if you find bugs or need support.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Hình 16: Github đem đến rất nhiều lợi ích cho lập trình viên
DOCKER
Docker là nền tảng giúp đơn giản hóa quá trình xây dựng, triển khai và chạy ứng dụng thông qua việc sử dụng các container trên nền tảng ảo hóa Ban đầu được phát triển bằng Python, Docker hiện đã chuyển sang sử dụng Golang.
Container trong Docker là gì?
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Containers cho phép lập trình viên đóng gói ứng dụng cùng với tất cả các thư viện và phụ thuộc cần thiết, tạo thành một gói hoàn chỉnh.
Nhờ vào container, ứng dụng có thể chạy trên mọi máy Linux, bất kể các cài đặt tùy chỉnh khác nhau so với máy phát triển mã nguồn.
Theo một cách nào đó, Docker khá giống virtual machine Nhưng tại sao Docker lại phát triển, phổ biến nhanh chóng? Đây là những nguyên nhân:
Docker's ease of use makes it accessible for everyone, from developers to system administrators, leveraging the advantages of containers for rapid building and testing Users can package their applications on their laptops and deploy them seamlessly on public or private clouds The mantra is "Build once, run anywhere."
• Tốc độ: Docker container rất nhẹ và nhanh, bạn có thể tạo và chạy docker container trong vài giây
Docker cho phép chia nhỏ các chức năng của ứng dụng thành các container riêng biệt, như chạy Database và Redis cache trên các container khác nhau, trong khi ứng dụng Node.js hoạt động trên một container riêng Việc liên kết các container này giúp dễ dàng mở rộng và cập nhật các thành phần một cách độc lập Trong bối cảnh xu hướng chuyển dịch sang microservices của các hệ thống lớn, Docker trở thành một yếu tố quan trọng trong nhiều công cụ DevOps Hiện nay, Kubernetes cũng đang được sử dụng rộng rãi như một công cụ quản lý container tiên tiến.
Các khái niệm liên quan
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
• Docker Engine : là thành phần chính của Docker, như một công cụ để đóng gói ứng dụng
Docker Hub là một nền tảng tương tự như GitHub nhưng dành cho các hình ảnh Docker Tại đây, bạn có thể tìm thấy hàng ngàn hình ảnh công khai được tạo ra bởi cộng đồng, giúp bạn dễ dàng truy cập và sử dụng những hình ảnh cần thiết Chỉ cần tải về và cấu hình theo yêu cầu của bạn.
Hình ảnh (image) là một khuôn mẫu để tạo ra một container, thường dựa trên một hình ảnh có sẵn với các tùy chỉnh bổ sung Ví dụ, bạn có thể xây dựng một hình ảnh dựa trên hình ảnh CentOS mẫu để chạy Nginx cùng với các cấu hình cần thiết cho ứng dụng web của mình Bạn có thể tự tạo một hình ảnh riêng hoặc sử dụng những hình ảnh được chia sẻ từ cộng đồng trên Docker Hub Một hình ảnh được xây dựng dựa trên các chỉ dẫn trong Dockerfile.
• Container: là một instance của một image Bạn có thể create, start, stop, move or delete container dựa trên Docker API hoặc Docker CLI
• Docker Client: là một công cụ giúp người dùng giao tiếp với Docker host
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Docker Daemon là thành phần lắng nghe yêu cầu từ Docker Client, giúp quản lý các đối tượng như Container, Image, Network và Volumes thông qua REST API Đồng thời, các Docker Daemon cũng tương tác với nhau để quản lý các dịch vụ Docker một cách hiệu quả.
• Dockerfile: là một tập tin bao gồm các chỉ dẫn để build một image
• Volumes: là phần dữ liệu được tạo ra khi container được khởi tạo
2.7.2 Ưu nhược điểm của Docker Ưu điểm:
Docker mang lại tính tiện lợi và nhanh chóng, giúp triển khai dịch vụ hoặc ứng dụng chỉ trong vài phút, thay vì hàng chục phút như trước đây với VMs Bên cạnh đó, Docker cũng tiết kiệm tài nguyên hiệu quả; mỗi container chỉ tiêu tốn tài nguyên khi đang hoạt động, và khi không sử dụng, tài nguyên sẽ được trả về cho máy chủ host.
Hệ thống có khả năng tự động mở rộng cao nhằm đáp ứng nhu cầu phục vụ người dùng Việc khởi tạo và tắt docker container diễn ra dễ dàng, dựa trên các chỉ số (metric) của hệ thống.
Thứ tư là dễ dàng automate (tự động hóa) việc quản lý các docker container thông qua Kubernetes hoặc Docker Swarm
Hình 18: Ưu điểm của Docker rất to lớn
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Docker container nhỏ hơn và tiêu tốn ít tài nguyên hơn so với máy ảo, bao gồm cả máy chủ và cơ sở dữ liệu Docker tận dụng tài nguyên hệ thống tối đa, sử dụng bộ lập lịch kernel của máy chủ Tuy nhiên, bạn không nên kỳ vọng rằng Docker sẽ làm tăng tốc độ ứng dụng của bạn.
Docker có thể làm chậm hiệu suất nếu không được cấu hình đúng cách Khi sử dụng Docker, bạn nên thiết lập giới hạn cho bộ nhớ, CPU và I/O để tránh tình trạng quá tải Nếu kernel phát hiện bộ nhớ của máy chủ quá thấp, nó có thể tự động ngừng các quy trình quan trọng, dẫn đến việc các quy trình không mong muốn, bao gồm cả Docker, bị giết, gây ra sự không ổn định cho hệ thống.
Mặc dù các điều chỉnh bộ nhớ của Docker không hoàn toàn giải quyết được vấn đề hiệu suất, nhưng việc sử dụng Docker container có thể dẫn đến một mức giảm tốc độ không đáng kể do lớp bổ sung giữa ứng dụng và hệ điều hành Docker không cung cấp sự cách ly hoàn toàn như máy ảo, nhưng ưu điểm lớn nhất của nó là chia nhỏ ứng dụng thành các phần, giúp bảo mật hơn; nếu một phần bị xâm phạm, các phần khác vẫn an toàn Tuy nhiên, tất cả các container đều chia sẻ quyền truy cập vào một hệ điều hành máy chủ duy nhất, điều này làm tăng nguy cơ về sự cô lập không đầy đủ, cho phép mã độc hại có thể truy cập vào bộ nhớ máy tính của bạn.
Trong môi trường chạy nhiều container, việc không giới hạn khả năng tài nguyên có thể dẫn đến tấn công lạm dụng tài nguyên Để đảm bảo hiệu quả và tối ưu hóa khả năng cách ly, mỗi container nên được thiết kế để xử lý một lĩnh vực quan tâm cụ thể.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Cấu hình mặc định của Docker không cho phép người dùng đặt tên, điều này dẫn đến một vấn đề quan trọng Không gian tên trong Docker cho phép tài nguyên phần mềm chỉ sử dụng các tài nguyên khác nếu chúng thuộc về một không gian tên cụ thể, giúp quản lý tài nguyên hiệu quả hơn.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Phân tích yêu cầu đề tài
Website hỗ trợ học tập giúp người dùng cập nhật kiến thức nhanh chóng mà không cần tìm hiểu sách vở thủ công Đây là nền tảng giao lưu học tập và là nơi các thí sinh có thể thi đua để đạt điểm cao.
3.1.2 Yêu cầu bài toán Đối với website hỗ trợ trong việc học tập, yêu cầu cao nhất luôn phải có giao diện đơn giản để giúp mọi người dễ dàng tiếp cận
Website học tập cần có các chức năng cơ bản như đăng nhập, đăng ký, thi và hiển thị kết quả Đặc biệt, tính bảo mật là yếu tố quan trọng hàng đầu để đảm bảo người dùng cảm thấy an toàn khi truy cập vào trang web, nhất là khi có nhiều người sử dụng.
Tốc độ tải trang là yếu tố quan trọng đối với mọi website Để cải thiện khả năng chịu tải, tôi luôn nỗ lực giảm thiểu việc sử dụng các thư viện có sẵn.
Đặc tả chức năng
Có 4 tác nhân chính trong hệ thống website hỗ trợ trong việc học tập:
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Quản lý thông tin người dùng là việc thu thập dữ liệu của tất cả thành viên trong hệ thống website, bao gồm cả giáo viên và thí sinh tự do Hệ thống cho phép thực hiện các chức năng như đổi tên người dùng và mật khẩu một cách dễ dàng.
Quản lý câu hỏi: có thể thực hiện chức năng thêm câu hỏi cho hệ thống cũng như thực hiện các chức năng sửa xóa
Quản lý câu hỏi trò chơi: có thể thêm và chỉnh sửa hay xóa các câu hỏi trong phần trò chơi của hệ thống
Quản lý thông tin bài làm: hiển thị thông tin tất cả bài làm của người dùng, tên người dùng, kết quả bài bài…
Quản lý thông tin cá nhân cho phép người dùng đăng ký tài khoản và thực hiện đăng nhập Người dùng có quyền cập nhật thông tin cá nhân, bao gồm việc thay đổi tên và mật khẩu.
Quản lý làm bài: có quyền làm bài trắc nghiệm, khi nhấn nộp bài thì hiển thị chi tiết bài làm, hiển thị kết quả bài làm
Quản lý kết quả bài làm cho phép lưu trữ dữ liệu điểm sau khi hoàn thành bài kiểm tra Đồng thời, người dùng có quyền tham gia các trò chơi với câu hỏi được thêm vào bởi admin, thông qua một hệ thống trực quan và dễ sử dụng.
Quản lý thông tin cá nhân của thí sinh được thực hiện thông qua hệ thống truy cập cố định, nơi người dùng có thể nhập mã sinh viên để kiểm tra thông tin cá nhân của mình.
Quản lý làm bài thi: thí sinh có thể thực hiện làm bài thi để thực hiện việc điểm danh một cách tự động
Quản lý làm bài tập: thí sinh có thể thực hiện làm bài tập mà giảng viên đã giao
Giáo viên có quyền quản lý thông tin thí sinh cố định, cho phép họ thực hiện các thao tác thêm, chỉnh sửa hoặc xóa thông tin thí sinh một cách hiệu quả.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Quản lý bài tập: giảng viên có thể thực hiện thêm bài tập về nhà cho sinh viên và hệ thống sẽ thông báo bằng gmail cho sinh viên
Giảng viên có khả năng quản lý điểm danh hiệu quả bằng cách thực hiện các chức năng như điểm danh tự động, xem thông tin điểm danh, thực hiện điểm danh thủ công, cũng như thêm, chỉnh sửa hoặc xóa thông tin Ngoài ra, giảng viên còn có thể xuất dữ liệu điểm danh dưới dạng file Excel.
Quản lý công việc cá nhân: giảng viên thể thực hiện thêm công việc cá nhân của bản thân và thực hiện chỉnh sửa hay xóa.
Biểu đồ phân rã chức năng
BFD, hay biểu đồ phân rã chức năng, thể hiện cấu trúc phân cấp của các chức năng trong hệ thống từ tổng quát đến chi tiết Mỗi chức năng chính có thể bao gồm một hoặc nhiều chức năng con, tất cả được trình bày rõ ràng trong khung của biểu đồ.
Giới hạn phạm vi của hệ thống thông tin cần phải phân tích
Tiếp cận thông tin về mặt logic nhằm làm rõ chức năng của hệ thống
Phân biệt các chức năng và nhiệm vụ của từng bộ phận trong hệ thống thông tin, từ đó lọc bỏ những chức năng trùng lặp, dư thừa
BFD không có tính động, chỉ thể hiện các chức năng mà không phản ánh trình tự xử lý hay sự trao đổi thông tin giữa các chức năng Vì vậy, BFD thường được áp dụng như một mô hình chức năng trong giai đoạn đầu của quá trình phân tích.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Hình 20: Biểu đồ phân rã chức năng của hệ thống
Sơ đồ Usecase
Use case là một kỹ thuật quan trọng trong kỹ thuật phần mềm và hệ thống, giúp nắm bắt yêu cầu chức năng của hệ thống Nó mô tả sự tương tác giữa người dùng bên ngoài (actor) và hệ thống, từ đó cung cấp cái nhìn rõ ràng về cách thức hoạt động của hệ thống trong các tình huống cụ thể.
Hệ thống thể hiện cách ứng xử của nó đối với môi trường bên ngoài trong một bối cảnh cụ thể, từ góc độ của người sử dụng Điều này mô tả các yêu cầu mà hệ thống cần đáp ứng, tức là những chức năng mà hệ thống phải thực hiện, mà không đi sâu vào cách thức thực hiện Tập hợp tất cả các Use case của hệ thống sẽ phản ánh đầy đủ các tình huống mà hệ thống có thể được áp dụng.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.1 Sơ đồ use case tổng quát
Hình 21: Sơ đồ use case tổng quát của hệ thống
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Bảng 1: Mô tả use case tổng quát của hệ thông
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Quản lý thông tin người dùng
Use case này mô tả chức năng quản lý thông tin của người dùng như thêm người dùng, chỉnh sửa, xóa thông tin
Quản lý câu hỏi thi là một chức năng quan trọng cho phép thí sinh tự điều chỉnh nội dung bài thi của mình Chức năng này bao gồm việc thêm mới câu hỏi, sửa đổi các câu hỏi đã có và xóa những câu hỏi không còn phù hợp Việc thực hiện các thao tác này giúp thí sinh tối ưu hóa bài thi, đảm bảo nội dung phù hợp với yêu cầu và mục tiêu học tập của họ.
3 Quản lý câu hỏi trò chơi
Use case này mô tả chức năng quản lý câu hỏi trò chơ cho thí sinh tự do, thêm câu hỏi, chỉnh sửa câu hỏi hay xóa
4 Quản lý kết quả thí sinh tự do
Chức năng quản lý kết quả thí sinh tự do cho phép người dùng xem toàn bộ thông tin của tất cả thí sinh, bao gồm tên, ngày thi và số điểm.
5 Đăng nhập trang quản trị
Chức năng đăng nhập trang quản trị là bước đầu tiên để xác nhận tài khoản và thực hiện quyền quản trị.
6 Quản lý thí sinh cố định
Use case này mô tả chức năng của giảng viên trong việc quản lý thông tin thí sinh, bao gồm việc thêm, chỉnh sửa hoặc xóa các dữ liệu như mã học phần, tên và lớp học.
7 Quản lý câu hỏi điểm danh
Chức năng quản lý câu hỏi điểm danh của giảng viên bao gồm việc thêm, chỉnh sửa và xóa câu hỏi, nhằm đảm bảo quy trình điểm danh được thực hiện hiệu quả.
8 Quản lý thông tin điểm danh
Use case này mô tả chức năng hiển thị toàn bộ thông tin điểm danh của thí sinh cố định, thực hiện điểm danh tự động hay thủ công
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
9 Đăng nhập trang giảng viên
Use case này mô tả muốn thực hiện quyền giảng viên phải đăng nhập để xác thực thông tin
10 Quản lý thông tin cá nhân
Use case này mô tả chức năng quản lý thông tin cá nhân của thí sinh tự do như xem thông tin hay đổi mật khẩu
11 Thực hiện chức năng thi
Use case này mô tả chức năng thực hiện thi của thí sinh tự do bằng cách chọn đề thi và thực hiện thi
12 Thực hiện chơi trò chơi
Use case này mô tả chức năng thực hiện chơi trò chơi
13 Quản lý lịch sử bài làm cá nhân
Use case này mô tả chức năng quản lý lịch sử bài làm cá nhân, xem ngày thi kết quả thi
14 Đăng nhập trang thí sinh tự do
Use case này mô tả chức năng xác thực thông tin khi truy cập vào trang của thí sinh tự do
15 Quản lý kiểm tra thông tin cá nhân
Use case này mô tả chức năng của thí sinh cố định kiểm tra thông tin cá nhân bằng cách nhập mã sinh viên
16 Quản lý làm bài thi Use case này mô tả chức năng thi của thí sinh cố định thực hiện chức năng thi
18 Quản lý làm bài tập Use case này mô tả chức năng làm bài tập của thí sinh cố định
19 Quét mã QR để xác thực
Use case này mô tả chức năng quyét mã QR của thí sinh cố định để chuyển hướng trang
20 Truy cập link giảng viên cấp
Use case này mô chức năng truy cập link giảng viên cấp để nộp bài tập
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.2 Sơ đồ use case quản lý thông tin người dùng
Hình 22: Sơ đồ use case quản lý thông tin người dùng Bảng 2: Mô tả use case quản lý thông tin người dùng
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Thêm người dùng Thêm thông tin người dùng khi muốn tạo mới một người dùng
2 Chỉnh sửa thông tin người dùng
Thực hiện chỉnh sửa thông tin người dùng khi có yêu cầu
3 Xóa người dùng Thực hiện chức năng xóa người dùng
3.4.3 Sơ đồ use case quản lý câu hỏi thi
Hình 23: Sơ đồ use case quản lý câu hỏi thi
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Hình 3: Mô tả use case quản lý câu hỏi thi
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Thêm câu hỏi Thực hiện chức năng thêm câu hỏi cho thí sinh tự do
2 Chỉnh sửa thông tin câu hỏi
Thực hiện chức năng chỉnh sửa thông tin câu hỏi cho thí sinh tự do
3 Xóa câu hỏi Thực hiện chức năng xóa câu hỏi
3.4.4 Sơ đồ use case quản lý câu hỏi trò chơi
Hình 24: Sơ đồ use case quản lý câu hỏi trò chơi Hình 4: Mô tả use case quản lý câu hỏi trò chơi
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Thêm câu hỏi Thực hiện chức năng thêm câu hỏi trò chơi cho thí sinh tự do
2 Chỉnh sửa thông tin câu hỏi
Thực hiện chức năng chỉnh sửa thông tin câu hỏi trò chơi cho thí sinh tự do
3 Xóa câu hỏi Thực hiện chức năng xóa câu hỏi trò chơi
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.5 Sơ đồ use case quản lý kết quả thí sinh tự do
Hình 25: Sơ đồ use case quản lý kết quả thí sinh tự do Hình 5: Mô tả use case quản lý kết quả thí sinh tự do
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Xem thông kê về điểm
Xem thông kê về điểm số thi của các thí sinh tự do
2 Xem thống kê về ngày thi
Xem thông kê về ngày thi của các thí sinh tự do
3 Xem thống kê về thành viên thi
Xem thông kê về thành viên của các thí sinh tự do
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.6 Sơ đồ use case quản lý thí sinh cố định
Hình 26: Sơ đồ use case quản lý thí sinh cố định Hình 6: Mô tả use case quản lý thí sinh cố định
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Thêm thí sinh cố định
Giảng viên thực hiện thêm thông tin thí sinh cố định để thí sinh cố định có thể điểm danh
2 Sửa thông tin của thí sinh cố định
Giảng viên có thể sửa thông tin của thí sinh cố định
3 Xóa thông tin của thí sinh cố định
Giảng viên có thể xóa thông tin của thí sinh cố định
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.7 Sơ đồ usecase quản lý câu hỏi điểm danh
Hình 27: Sơ đồ use case quản lý câu hỏi điểm danh Hình 7: Mô tả use case quản lý câu hỏi điểm danh
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Thêm câu hỏi Giảng viên có thể thêm câu hỏi cho thí sinh cố định điểm danh
2 Chỉnh sửa câu hỏi Giảng viên có thể sửa câu hỏi điểm danh của thí sinh cố định
3 Xóa câu hỏi Giảng viên có thể xóa câu hỏi điểm danh của thí sinh cố định
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.8 Sơ đồ use case quản lý thông tin điểm danh
Hình 28: Sơ đồ use case quản lý thông tin điểm danh Hình 8: Mô tả use case quản lý thông tin điểm danh
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Xem thông tin điểm danh
Giảng viên có thể xem thông tin điểm danh của các thí sinh cố đinh
2 Điểm danh thủ công Giảng viên có thể điểm danh thủ công
3 Chỉnh sửa thông tin điểm danh
Giảng viên có thể thực hiện chỉnh sửa thông tin điểm danh
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.9 Sơ đồ use case quản lý thông tin cá nhân
Hình 29: Sơ đồ use case quản lý thông tin cá nhân Hình 9: Mô tả use case quản lý thông tin cá nhân
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Xem thông tin cá nhân
Thí sinh tự do có thể xem thông tin cá nhân của bản thân
2 Đổi mật khẩu thông tin tài khoản
Thí sinh tự do có thể đổi mật khẩu thông tin tài khoản của bản thân
3.4.10 Sơ đồ use case thực hiện chức năng thi
Hình 30: Sơ đồ use case thực hiện chức năng thi
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Hình 10: Mô tả use case thực hiện chức năng thi
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Lựa chọn bài thi Thí sinh tự do có thể tự lựa chọn đề thi cho bản thân
2 Xem kết quả bài thi Thí sinh tự do có thể xem kết quả bài thi sau khi thực hiện xong bài thi
3 Xem chi tiết bài thi Sau khi thực hiện bài thi thí sinh tự do có thể xem chi tiết bài thi
3.4.11 Sơ đồ use case thực hiện chơi trò chơi
Hình 31: Sơ đồ use case thực hiện chơi trò chơi Hình 11: Mô tả use case thực hiện chơi trò chơi
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Chọn các quyền trợ giúp
Thí sinh tự do có thể thực hiện chọn các quyền trợ giúp trong trò chơi
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.4.12 Sơ đồ use case quản lý lịch sử bài làm cá nhân
Hình 32: Sơ đồ use case quản lý lịch sử bài làm cá nhân Hình 12: Mô tả use case quản lý lịch sử bài làm cá nhân
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Xem thông kế về điểm số cá nhân
Thí sinh tự do có thể xem thống kê điểm số ngày thi của bản thân
3.4.13 Sơ đồ use case kiểm tra thông tin cá nhân
Hình 33: Sơ đồ use case kiểm tra thông tin cá nhân Hình 13: Mô tả use case kiểm tra thông tin cá nhân
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Nhập mã sinh viên Thí sinh cố định có thể nhập mã sinh viên để kiểm tra thông tin cá nhân
3.4.14 Sơ đồ use case đăng nhập
Hình 34: Sơ đồ use case đăng nhập
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Bảng 14: Mô tả use case đăng nhập
STT Tên Use Case Ý Nghĩa/ Ghi Chú
1 Đăng ký thành viên Thí sinh tự do hay giáo viên có quyền đăng ký thành viên để phân trang của mình
2 Nhập thông tin đăng nhập
Thí sinh tự do hay giáo viên hay admin phải nhập thông tin đăng nhập để chuyển sang trang của bản thân mình
3 Quên mật khẩu Thí sinh tự do hay giáo viên có thể thực hiện chức năng quên mật khẩu
Biểu đồ tuần tự
Biểu đồ tuần tự là công cụ hữu ích để xác định trình tự diễn ra sự kiện trong một nhóm đối tượng Nó không chỉ mô tả chi tiết các thông điệp được gửi và nhận giữa các đối tượng, mà còn nhấn mạnh vào thứ tự thời gian của việc gửi và nhận những thông điệp này.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.5.1 Biểu đồ tuần tự đăng ký thành viên
Hình 35: Biểu đồ tuần tự cho chức năng đăng ký thành viên Đặc tả chức năng Đăng ký:
- Khi thí sinh tự do hoặc truy cập vào trang chủ website, thì họ chọn mục đăng ký thành viên
- Sau đó họ nhập các thông tin cần thiết cho quá trình đăng ký thành viên
- Khi nhấn nút đăng ký thì hệ thống tiếp nhận thông tin và xử lý
- Nếu thông tin đăng ký đã tồn tại thì hệ thống sẽ trả về thông báo cho thí sinh tự do hoặc giảng viên, và yêu cầu nhập lại
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
- Ngược lại nếu thông tin chưa có trong cơ sở dữ liệu thì hệ thống sẽ thông báo đăng ký thành công
3.5.2 Biểu đồ tuần tự đăng nhập
Hình 36: Biểu đồ tuần tự cho chức năng đăng nhập Đặc tả chức năng đăng nhập:
- Khi thí sinh tự do truy cập vào trang chủ của website muốn đăng nhập thì nhập thông tin đăng nhập vào ô đăng nhập
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
- Sau khi nhấn nút đăng nhập hệ thống sẽ tiếp nhận thông tin và xử lý, sau đó sẽ tìm thông tin từ Database của hệ thống
- Nếu như thông tin không tồn tại thì sẽ thông báo cho thí sinh tự do sai tên đăng nhập hoặc mật khẩu, và yêu cầu nhập lại
- Ngược lại nếu có thông tin thì thông báo đăng ký thành công và chuyển hướng sang trang lựa chọn
3.5.3 Biểu đồ tuần tự chức năng thi
Hình 37: Biểu đồ tuần tự chức năng thi Đặc tả chức năng thi:
- Khi thí sinh tự do truy cập vào trang lựa chọn của website, thí sinh tự do có quyền lựa chọn thể loại câu hỏi cho bản thân
- Sau đó hệ thống sẽ tiếp nhận câu hỏi lựa chọn và xử lý để tìm dữ liệu từ database
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
- Sau đó hệ thống sẽ lấy thông tin câu hỏi và chuyển hướng đến trang thi cho thí sinh tự do
Thí sinh tự do sẽ tiến hành thi và sau khi nhấn nút nộp bài, hệ thống sẽ tiếp nhận thông tin bài làm Sau đó, hệ thống sẽ phân tích các câu hỏi đúng sai và trả lại kết quả điểm cho thí sinh.
- Thí sinh tự do có thể xem thông tin chi tiết bài làm hoặc quay trở về trang lựa chọn
3.5.4 Biểu đồ tuần tự chức năng thêm câu hỏi
Hình 38: Biểu đồ tuần tự chức năng thêm câu hỏi Đặc tả chức năng thêm câu hỏi:
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
- Admin truy cập vào trang thêm câu hỏi, sau đó nhập nội dung câu hỏi cần thêm vào hệ thống
- Sau khi nhấn nút thêm thì hệ thống sẽ tiếp nhận thông tin và xử lý thêm câu hỏi vào database
- Sẽ có hai trường hợp xảy ra, nếu thêm câu hỏi thất bại hệ thống sẽ trả về thông tin, và yêu cầu nhập lại
- Nếu thêm câu hỏi thành công thì hệ thống sẽ thông báo cho admin và quay trở lại trang thêm câu hỏi
3.5.5 Biểu đồ tuần tự chức năng điểm danh
Hình 39: Biểu đồ tuần tự chức năng điểm danh
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC Đặc tả chức năng thêm điểm danh:
- Giảng viên truy cập trang điểm danh, chọn vào nút điểm danh sau đó giảng viên chọn môn học, mã học phần, buổi học để điểm danh
Hệ thống sẽ tiếp nhận thông tin từ giảng viên và tìm kiếm dữ liệu trong cơ sở dữ liệu Nếu không tìm thấy dữ liệu, hệ thống sẽ thông báo cho giảng viên và yêu cầu họ chọn lại từ đầu.
- Nếu như thông tin có trong database thì hệ thống sẽ chuyển hướng sang trang
3.5.6 Biểu đồ tuần tự chức năng thi của thí sinh cố định
Hình 40: Biểu đồ tuần tự chức năng thi của thí sinh cố định
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC Đặc tả chức năng thi của thí sinh cố định:
- Thí sinh cố định sử dụng điện thoại di động để quét mã QR để truy cập vào trang QR
Thí sinh cần xác thực danh tính bằng cách nhập mã sinh viên của mình Nếu thông tin không chính xác, hệ thống sẽ yêu cầu thí sinh nhập lại thông tin.
Nếu mã sinh viên được nhập chính xác, thí sinh có thể truy cập vào trang thi cá nhân để hoàn thành bài làm và điểm danh.
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Biểu đồ hoạt động
3.6.1 Biểu đồ hoạt động chức năng đăng nhập
Hình 41: Biểu đồ hoạt động chức năng đăng nhập
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.6.2 Biểu đồ hoạt động chức năng đăng ký thành viên
Hình 42: Biểu đồ hoạt động chức năng đăng ký
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.6.3 Biểu đồ hoạt động chức năng thêm câu hỏi
Hình 43: Biểu đồ hoạt động chức năng thêm câu hỏi
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.6.4 Biểu đồ hoạt động chức năng điểm danh
Hình 44: Biểu đồ hoạt động chức năng điêm danh
Thiết kế Database
Chức năng: lưu trữ thông tin người dùng
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Bảng 15: Bảng lưu trữ thông tin users
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key Mã người dùng
2 Name Varchar(255) Tên người dùng
3 Username Varchar(255) Tên tài khoản
4 Password Varchar(255) Mật khẩu tài khoản
5 Email Varchar(255) Email tài khoản
6 Nghề nghiệp Varchar(255) Nghề nghiệp của người dùng
7 Token Varchar(255) Token xác thực thông tin của tài khoản
8 Xác thực Varchar(255) Xác thực gmail của tài khoản
3.7.2 Bảng tài khoản của Admin
Chức năng: lưu trữ thông tin Admin
Bảng 16: Bảng lưu trữ thông tin admin
STT Tên trường Kiểu dữ liệu Khóa Mô tả
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
1 ID Int Primary key Mã Admin
3 Username Varchar(255) Tên tài khoản
4 Password Varchar(255) Mật khẩu tài khoản Admin
5 Email Varchar(255) Email tài khoản Admin
3.7.3 Bảng công việc cá nhân
Chức năng: lưu trữ thông tin công việc cá nhân của giảng viên
Bảng 17: Bảng công việc cá nhân
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key Mã công việc
3 Start Date Thời gian bắt đầu
4 End Date Thời gian kết thúc
5 Taikhoan Varchar(255) Tên tài khoản
Chức năng: lưu trữ thông tin câu hỏi của thí sinh tự do
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key Mã câu hỏi
7 Ans5 Varchar(255) Đáp án đúng
3.7.5 Bảng chi tiết bài làm
Chức năng: lưu trữ thông tin bài làm chi tiết của thí sinh tự do
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
Bảng 19: Bảng chi tiết bài làm
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key Mã câu hỏi
7 Anscx Varchar(255) Đáp án đúng
8 Anslc Varchar(255) Đáp án của người dùng
9 Session Varchar(255) Session của ngườ dùng
Chức năng: lưu trữ điểm số của thí sính tự do
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key Mã điểm
2 Name Varchar(255) Tên người dùng
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3 Date DATE Ngày thực hành
Chức năng: lưu trữ câu hỏi trò chơi của thí sinh tự do
Bảng 21: Bảng lưu trữ câu hỏi trò chơi
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key Id câu hỏi
6 Anscx Varchar(255) Đáp án chính xác
Chức năng: lưu trữ thông tin sinh viên
Bảng 22: Bảng lưu trữ dữ liệu sinh viên
Sinhvien STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key ID sinh viên
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
2 Msv Int Mã sinh viên
3 Hoten Varchar(255) Họ tên sinh viên
4 Mahocphan Varchar(255) Mã học phần của sinh viên
5 Tenmonhoc Varchar(255) Tên môn học của sinh viên
6 Giaovien Varchar(255) Email của giáo viên
3.7.9 Bảng lịch sử điểm danh
Chức năng: lưu trữ thông tin yêu cầu của điểm danh
Hình 23: Bảng lưu trữ tùy chọn điểm danh của giảng viên
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key ID điểm danh
2 Mahocphan Int Mã học phần yêu cầu điểm danh
3 Buoi_hoc Varchar(255) Buổi học điểm danh
3.7.10 Bảng câu hỏi điểm danh
Chức năng: lưu trữ câu hỏi điểm danh
Hình 24: Bảng lưu trữ câu hỏi điểm danh
Cauhoi_diemdanh STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key ID câu hỏi
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
2 Cauhoi Varchar(255) Câu hỏi điểm danh
7 Caucx Varchar(255) Đáp án chính xác
8 Buoi Int Buổi học điểm danh
9 Mahocphan Varchar(255) Mã học phần điểm danh
10 Monhoc Varchar(255) Môn học điểm danh
11 Giaovien Varchar(255) Giáo viên phụ trách
Chức năng: lưu trữ thông tin điểm danh của sinh viên
Bảng 25: Bảng lưu trữ thông tin điểm danh của sinh viên
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key ID
2 MSV Varchar(255) Mã sinh viên
3 Hoten Varchar(255) Họ tên sinh viên
4 Lop Varchar(255) Lớp sinh viên
5 Buoi Varchar(255) Buổi học điểm danh
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
6 Diem Varchar(255) Điểm của buổi học điểm danh
7 Mahocphan Varchar(255) Mã học phần điểm danh
8 Monhoc Varchar(255) Môn học điểm danh
Chức năng: lưu trữ bài tập của sinh viên
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key ID
2 Monhoc Varchar(255) Môn học của bài tập
3 mhp Varchar(255) Mã học phần của bài tập
4 tieude Varchar(255) Tiêu đề của bài tập
5 Ngayhancuoi Date Ngày cuối nộp bài
6 Giohancuoi Date Giờ cuối nộp bài
7 File Varchar(255) File bài tập
9 Giaovien Varchar(255) Bài tập thuộc giáo viên
Chức năng: lưu trữ bài tập nộp lại của sinh viên
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
STT Tên trường Kiểu dữ liệu Khóa Mô tả
1 ID Int Primary key ID
2 MSV Varchar(255) Mã sinh viên nộp bài tập
3 Hoten Varchar(255) Họ tên sinh viên nộp bài tập
4 Lop Varchar(255) Lớp sinh viên nộp bài tập
5 Mahocphan Varchar(255) Mã học phần bài tập
6 Tenhocphan Varchar(255) Tên học phần bài tập
7 Ngayhancuoi Date Ngày sinh viên nộp bài tập
8 Giohancuoi Date Giờ sinh viên nộp bài tập
9 Filedinhkem Varchar(255) File bài tập của sinh viên
10 Ghichu Varchar(255) Thời gian nộp bài hợp lệ hay không
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC
3.7.14 Sơ đồ thực thể kết hợp
Hình 45: Sơ đồ thực thể kết hợp của hệ thống
SVTH: Nguyễn Quang Trung Hiếu – Lớp: 17CNTTC