PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Trong thời đại phát triển của công nghệ thông tin, việc ứng dụng công nghệ vào các lĩnh vực của đời sống xã hội ngày càng trở nên phổ biến, trong đó có lĩnh vực giáo dục. Việc xây dựng hệ thống tư vấn sinh viên là một giải pháp hữu ích, giúp nâng cao chất lượng đào tạo, hỗ trợ sinh viên học tập và phát triển toàn diện. Hệ thống tư vấn sinh viên bao gồm ứng dụng Website và di động, nơi không chỉ sinh viên mà còn có cựu sinh viên, phụ huynh, học sinh có thể đặt câu hỏi cho ban tư vấn hệ thống là các giảng viên của nhà trường, sinh viên được chọn làm tư vấn viên và nhận được phản hồi từ họ về các vấn đề liên quan đến học tập và ngoài việc học tập.
Hệ thống có thể giúp giải quyết các vấn đề và mang lại những lợi ích to lớn. Hệ thống cung cấp cho sinh viên các lĩnh vực để có thể xin tư vấn tùy theo thắc mắc của sinh viên,. Qua đó, hệ thống giúp sinh viên có thể nhận câu hỏi từ những giảng viên có hiểu biết về lĩnh vực và nhận được câu trả lời đúng đắn. Hệ thống giúp giảng viên giải đáp thắc mắc của sinh viên một cách nhanh chóng, giảm tải số lượng sinh viên đến trực tiếp các phòng chức năng để hỏi các vấn đề từ đó giảm tải áp lực cho đội tư vấn truyền thống của nhà trường.
Hệ thống tư vấn sinh viên là một giải pháp hiệu quả, góp phần nâng cao chất lượng đào tạo, hỗ trợ sinh viên học tập và phát triển toàn diện. Do đó chúng em quyết định thực hiện đề tài : “Xây dựng hệ thống tư vấn sinh viên sử dụng MERN Stack” 2. MỤC TIÊU ĐỀ TÀI Xây dựng hệ thống tư vấn cho sinh viên. Vận dụng MERN Stack để xây dựng hệ thống.
PHƯƠNG PHÁP THỰC HIỆN Tìm hiểu các kiến thức cần thiết để thực hiện đề tài: - Các kỹ thuật phân tích thiết kế hệ thống: o Thiết kế cơ sở dữ liệu: Các kiến thức về thiết kế cơ sở dữ liệu NoSQL như MongoDB, bao gồm cách thiết kế schema-less và tối ưu hóa truy vấn. 18 PHẦN MỞ ĐẦU o Thiết kế API: Phân tích và thiết kế các API RESTful hoặc GraphQL để giao tiếp giữa frontend và backend. - Tìm hiểu các framework và thư viện chính cho đề tài: o Express.js: Cụ thể, hiểu về cách Express.js hoạt động như một framework backend cho Node.js, cách xử lý middleware và routing trong ứng dụng. o React và React Native: ▪ React (cho ứng dụng web): Hiểu về cách sử dụng React để xây dựng giao diện người dùng, cách sử dụng component, JSX và viết các ứng dụng đơn trang (Single Page Applications - SPAs).
▪ React Native (cho ứng dụng di động): Tìm hiểu cách sử dụng React Native để phát triển ứng dụng di động đa nền tảng, bao gồm cấu trúc dự án, component và các thư viện hỗ trợ. - Công cụ và kỹ năng khác: o Git và GitHub: Quản lý mã nguồn và phiên bản, làm việc nhóm. 19 CƠ SỞ LÝ THUYẾT PHẦN NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. MERN Stack là gì ? Hình 1.1: MERN Stack [1] MERN Stack là một bộ công nghệ phổ biến được sử dụng để phát triển các ứng dụng web hiện đại, bao gồm cả frontend và backend.
MERN là từ viết tắt của bốn công nghệ chính: - MongoDB: Một cơ sở dữ liệu NoSQL phổ biến, lưu trữ dữ liệu dưới dạng tài liệu (document) thay vì các bảng như trong các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). MongoDB sử dụng định dạng BSON (Binary JSON) để lưu trữ dữ liệu, giúp truy xuất và xử lý dữ liệu nhanh chóng.js: Một framework cho Node.js, cung cấp các tính năng mạnh mẽ để xây dựng các API và các ứng dụng web dễ dàng và nhanh chóng.js giúp tổ chức và quản lý các chức năng của ứng dụng web thông qua routing và middleware. - React: Một thư viện JavaScript được sử dụng để xây dựng giao diện người dùng (UI) cho các ứng dụng web. React cho phép tạo ra các component UI tái sử dụng, giúp quản lý trạng thái và dữ liệu dễ dàng hơn.js: Một môi trường thực thi JavaScript trên máy chủ, cho phép sử dụng JavaScript để phát triển các ứng dụng phía server.js sử dụng mô hình non- blocking và event-driven, giúp xử lý nhiều yêu cầu cùng lúc một cách hiệu quả.
Tại sao nên chọn MERN Stack ? Tiết kiệm chi phí khi xây dựng: - JavaScript: Cả bốn công nghệ trong MERN Stack (MongoDB, Express.js, React, Node.js) đều dựa trên JavaScript, giúp giảm chi phí đào tạo và thuê mướn lập trình viên vì chỉ cần một ngôn ngữ duy nhất cho cả frontend và backend. - Mã nguồn mở: Tất cả các công nghệ trong MERN Stack đều là mã nguồn mở, giúp giảm chi phí mua sắm công cụ và phần mềm. Thân thiện với SEO: - Ứng dụng web xây dựng bằng React.js có thể được cấu hình để dễ dàng thu thập thông tin bởi các công cụ tìm kiếm như Google, Yahoo. Điều này giúp cải thiện khả năng tìm kiếm và xếp hạng trang web.
Hiệu suất cao: - Faster Response: Node.js và MongoDB kết hợp với nhau giúp cải thiện tốc độ phản hồi giữa frontend và backend, giúp ứng dụng chạy mượt mà và nhanh chóng. - Non-blocking I/O: Node.js sử dụng mô hình asynchronous I/O và non-blocking, giúp xử lý nhiều yêu cầu cùng một lúc một cách hiệu quả. Bảo mật tốt hơn: - Các ứng dụng xây dựng bằng MERN Stack có thể tích hợp dễ dàng với các nhà cung cấp dịch vụ hosting bảo mật. Ngoài ra, các công cụ bảo mật của MongoDB và Node.js cũng giúp bảo vệ ứng dụng khỏi các mối đe dọa từ Internet.
Tốc độ phát triển nhanh: - Fast Delivery: Sử dụng MERN Stack giúp rút ngắn thời gian phát triển và triển khai ứng dụng, từ đó giúp đưa sản phẩm đến tay khách hàng nhanh hơn. - Fast Modifications: Các công nghệ trong MERN Stack hỗ trợ việc thay đổi và cập nhật ứng dụng một cách nhanh chóng và dễ dàng theo yêu cầu của khách hàng. Mã nguồn mở và cộng đồng hỗ trợ mạnh mẽ: 21 CƠ SỞ LÝ THUYẾT - Tất cả các công nghệ trong MERN Stack đều là mã nguồn mở, cung cấp một lượng lớn tài liệu và cộng đồng hỗ trợ, giúp lập trình viên dễ dàng tìm kiếm giải pháp cho các vấn đề phát sinh trong quá trình phát triển. Dễ dàng chuyển đổi giữa client và server: - Do tất cả các công nghệ đều sử dụng JavaScript, việc chuyển đổi và tích hợp giữa front-end và back-end trở nên dễ dàng và mượt mà hơn.
Cấu trúc kiến trúc của MERN Stack và cách nó hoạt động? [1] Cấu trúc kiến trúc của MERN Stack bao gồm bốn thành phần chính: MongoDB, Express.js, React và Node. Đây là các công nghệ phổ biến và mạnh mẽ được sử dụng để phát triển ứng dụng web và di động toàn diện. Hãy đi vào từng thành phần và cách chúng hoạt động cùng nhau trong kiến trúc MERN Stack: - [5] MongoDB (Database): o MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL, dữ liệu được lưu trữ dưới dạng các tài liệu (documents) dựa trên BSON (Binary JSON). o MongoDB không yêu cầu một cấu trúc schema cố định, cho phép linh hoạt trong việc lưu trữ dữ liệu và thích ứng với các thay đổi cấu trúc dữ liệu.
o Dữ liệu trong MongoDB được tổ chức thành các bộ sưu tập (collection) và các tài liệu (document) không cần phải tuân thủ một mô hình quan hệ như các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).js là một framework phổ biến cho Node.js, cung cấp một cách tiếp cận đơn giản để xây dựng các ứng dụng web và API.js giúp quản lý các yêu cầu HTTP và các middleware, cho phép xử lý các yêu cầu từ phía client và cung cấp các phản hồi tương ứng. o Nó cho phép xử lý định tuyến (routing) và middleware để điều hướng và xử lý các yêu cầu HTTP từ client đến server. - React (Frontend): o [2] React cho Web: 22 CƠ SỞ LÝ THUYẾT ▪ React cho phép phân chia giao diện thành các thành phần độc lập gọi là component. Mỗi component quản lý một phần của giao diện và có thể tái sử dụng trong nhiều nơi khác nhau trong ứng dụng.
▪ Nó sử dụng JSX (JavaScript XML), một cú pháp mở rộng của JavaScript, để kết hợp mã HTML với JavaScript. JSX giúp việc viết mã giao diện trở nên đơn giản hơn và dễ hiểu hơn so với việc sử dụng các phương pháp truyền thống. ▪ React sử dụng virtual DOM (Document Object Model) để tối ưu hóa hiệu suất render giao diện, chỉ render lại những thành phần thay đổi thực sự thay vì render lại toàn bộ DOM, giúp tăng tốc độ và hiệu quả của ứng dụng web. o [3] React Native cho Mobile: ▪ React Native là một framework cho phép phát triển ứng dụng di động sử dụng JavaScript và React.
▪ Nó cho phép lập trình viên sử dụng các thành phần React để xây dựng giao diện người dùng cho cả iOS và Android. ▪ React Native sử dụng các thành phần giao diện tương tự như React, nhưng thay vì render ra HTML, nó sử dụng các thành phần tương thích với giao diện người dùng native của từng hệ điều hành. ▪ Điểm mạnh của React Native là khả năng tái sử dụng mã nguồn giữa các nền tảng, giảm thiểu thời gian phát triển và chi phí bảo trì ứng dụng di động.js là một môi trường thực thi mã nguồn mở cho phép chạy JavaScript ngoài môi trường trình duyệt. o Nó được sử dụng để xây dựng các ứng dụng server-side và cung cấp các API để tương tác với cơ sở dữ liệu và các dịch vụ bên ngoài.js sử dụng mô hình không đồng bộ (asynchronous) và không chặn (non-blocking) để xử lý nhiều yêu cầu cùng một lúc một cách hiệu quả.
Các thành phần của MERN Stack MERN Stack là một công nghệ stack bao gồm các thành phần chính sau: 23 CƠ SỞ LÝ THUYẾT - [5] MongoDB: Hình 1.2: Mongo DB o MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL (Non-SQL hoặc Not Only SQL) phổ biến. o Nó lưu trữ dữ liệu dưới dạng các tài liệu (document) có cấu trúc linh hoạt (schema-less). o MongoDB sử dụng BSON (Binary JSON) để lưu trữ dữ liệu, cho phép nó hoạt động nhanh và hiệu quả trong việc truy xuất và lưu trữ dữ liệu. o Được sử dụng cho lưu trữ dữ liệu của ứng dụng, MongoDB cung cấp tính mở rộng (scalability) tốt và có hỗ trợ các tính năng để nâng cao hiệu suất và độ tin cậy.3: Express JS o Express.js là một framework backend cho Node.js, được sử dụng để xây dựng các ứng dụng web và API.