Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh đổi mới giáo dục và đào tạo tại Việt Nam, đặc biệt ở bậc giáo dục đại học, công tác quản lý đào tạo và đảm bảo chuẩn chất lượng đầu ra đang đứng trước nhiều yêu cầu cấp thiết về mặt chuyển đổi số. Trường Đại học Công nghiệp Hà Nội là một trong những đơn vị triển khai chương trình kiểm định chất lượng đào tạo theo chuẩn kiểm định về phần mềm máy tính nhằm nâng cao hiệu quả giảng dạy và quản lý sinh viên. Theo định hướng đó, Khoa Điện tử của trường đã và đang thực hiện chương trình kiểm định chất lượng cho ngành Công nghệ Kỹ thuật Máy tính.

Tuy nhiên, trong quá trình triển khai thực tế, nhiều khâu nghiệp vụ quản lý vẫn được tiến hành theo phương thức thủ công, dẫn đến tình trạng tiêu tốn thời gian hoàn thành theo từng chu kỳ kiểm định. Cụ thể, việc theo dõi, tổng hợp và thống kê số lượng giờ giảng dạy của giảng viên vào sổ kê giờ thường xuyên gặp phải khó khăn, dễ phát sinh sai sót số liệu và gây tốn kém chi phí lưu trữ, cập nhật dữ liệu. Xuất phát từ thực trạng trên, nhóm tác giả đã thực hiện đề tài "Thiết kế Website phục vụ hoạt động giảng dạy và nghiên cứu cho Khoa Điện tử" nhằm xây dựng công cụ số hóa hỗ trợ công tác quản lý giảng dạy và tra cứu thông tin khoa học.

Theo văn bản đồ án, mục tiêu nghiên cứu được xác định bao gồm 3 nội dung chính:

  1. Thiết kế được Website hỗ trợ giảng viên thống kê khối lượng giảng dạy.
  2. Giúp sinh viên tích luỹ được kiến thức về lập trình Website, quản lý cơ sở dữ liệu, quản trị tài khoản.
  3. Giúp sinh viên rèn luyện được các kỹ năng như viết báo cáo, trình bày vấn đề kỹ thuật, làm việc nhóm, tinh thần phấn đấu và thái độ nghiêm túc.

Đối tượng nghiên cứu của đồ án là quá trình thiết kế Website phục vụ cho Khoa Điện tử và hệ thống Website hỗ trợ hoạt động giảng dạy, nghiên cứu khoa học của đơn vị.

Về phạm vi nghiên cứu:

  • Nội dung: Tập trung vào kỹ thuật lập trình, cơ chế vận hành, đối tượng sử dụng trong thiết kế website; nghiên cứu ngôn ngữ lập trình phía máy chủ (backend) và phía máy khách (frontend: HTML, CSS, JavaScript).
  • Không gian triển khai: Ứng dụng nội bộ trong phạm vi Khoa Điện tử thuộc Trường Đại học Công nghiệp Hà Nội.
  • Phạm vi nghiệp vụ: Thống kê khối lượng giảng dạy của giảng viên theo tháng và hỗ trợ nạp tập tin chứa thông tin lịch giảng dạy, lịch thực hành theo tuần.

Ý nghĩa khoa học của đề tài thể hiện ở việc hỗ trợ tính toán thời gian giảng dạy một cách hợp lý và cung cấp căn cứ để điều chỉnh lịch giảng dạy đáp ứng yêu cầu của nhà trường. Về mặt thực tiễn, sản phẩm trực tiếp trợ giúp giảng viên trong việc hoàn thiện số liệu sổ kê giờ, đồng thời hỗ trợ tra cứu thông tin giảng dạy, nghiên cứu khoa học một cách khoa học, thuận tiện và đảm bảo an toàn dữ liệu.

Cơ sở lý thuyết và phương pháp

Để xây dựng hệ thống, đồ án đã tổng hợp các khái niệm nền tảng về công nghệ phần mềm và kiến trúc ứng dụng web:

  • Mô hình kiến trúc máy khách - máy chủ (Client - Server): Vận hành trên giao thức truyền tải siêu văn bản (HTTP) với hai phương thức trao đổi dữ liệu chính là GET (yêu cầu tài nguyên, truyền tham số qua URL) và POST (truyền tải dữ liệu qua phần thân của yêu cầu HTTP, đảm bảo tính an toàn cho dữ liệu nhạy cảm).
  • Mô hình kiến trúc MVC (Model - View - Controller): Phân tách hệ thống thành ba thành phần độc lập nhằm tối ưu hóa việc quản lý mã nguồn, trong đó Model quản lý dữ liệu và tương tác với hệ quản trị cơ sở dữ liệu, View kết xuất giao diện người dùng, còn Controller đóng vai trò tiếp nhận yêu cầu từ Client và điều phối luồng dữ liệu giữa Model và View.
  • Hệ quản trị cơ sở dữ liệu: So sánh giữa cơ sở dữ liệu quan hệ (RDBMS - đại diện là MySQL) quản lý dữ liệu qua các bảng liên kết bởi khóa chính, khóa ngoại với cơ sở dữ liệu phi quan hệ NoSQL hướng tài liệu (đại diện là MongoDB) lưu trữ dữ liệu dưới dạng tài liệu JSON/BSON với lược đồ động linh hoạt.
  • Ngăn xếp công nghệ phát triển web: Khảo sát các công cụ phát triển backend (Node.js với framework Express.js, PHP với framework Laravel) và frontend (HTML, CSS, JavaScript kết hợp template engine như Handlebars.js, Mustache, AngularJS và thư viện giao diện Bootstrap).

Phương pháp nghiên cứu thực tế được nhóm tác giả áp dụng bao gồm hai nhóm chính:

  • Phương pháp thu thập thông tin từ giảng viên: Thực hiện tổng hợp và phân tích thực trạng hoạt động giảng dạy, nghiên cứu khoa học tại Khoa Điện tử dựa trên việc đối soát các biểu mẫu ghi chép, sổ kê giờ và lịch trình giảng dạy thực tế của đội ngũ giảng viên.
  • Phương pháp xử lý thông tin: Tiến hành xây dựng ý tưởng, lập kế hoạch thiết kế hệ thống phần mềm, sau đó tiến hành lập trình, kiểm tra thử nghiệm, chỉnh sửa lỗi, triển khai và hoàn thiện sản phẩm ứng dụng.

Nguồn dữ liệu đầu vào của hệ thống là các tập tin bảng tính Microsoft Excel (định dạng mở rộng .xlsx) chứa lịch giảng dạy lý thuyết đầy đủ và lịch thực hành hàng tuần do Khoa Điện tử ban hành.

Thiết kế và triển khai

Hệ thống được thiết kế nhằm đáp ứng các yêu cầu chức năng cụ thể: hỗ trợ giảng viên thống kê khối lượng giảng dạy; hiển thị thông tin nhóm nghiên cứu khoa học; cho phép nhập và chỉnh sửa lịch giảng dạy; hỗ trợ điền thông tin thực hành; tích hợp cơ chế đăng nhập và phân quyền người dùng (quản trị viên và người dùng thông thường); triển khai hoạt động trên môi trường Internet.

Ràng buộc kỹ thuật của thiết kế bao gồm: yêu cầu độ chính xác tương đối trong dữ liệu thống kê; thời gian phản hồi máy chủ nhanh chóng; giao diện tối giản, thuận tiện khi thao tác; hệ thống tương thích với các tập tin bảng tính .xlsx chuẩn hóa theo tuần và theo tháng.

Nhóm tác giả đã tiến hành so sánh hai phương án kỹ thuật trước khi bước vào giai đoạn thiết kế chi tiết:

Tiêu chí so sánh Phương pháp 1: Node.js (Express.js) + Handlebars + MongoDB Phương pháp 2: PHP (Laravel) + MySQL
Backend & Ngôn ngữ Express.js, sử dụng JavaScript đồng nhất trên cả máy chủ và máy khách, tốc độ xử lý nhanh dựa trên V8 Engine. Laravel (PHP), kiến trúc hướng đối tượng chặt chẽ, tích hợp nhiều cơ chế bảo mật nhưng cấu trúc phức tạp.
Frontend Template Template Handlebars.js biên dịch mã HTML giúp tăng tốc độ xử lý, tách rời logic khỏi giao diện, hỗ trợ vòng lặp tốt. Tích hợp công cụ template Blade của Laravel, yêu cầu thiết lập logic phụ thuộc vào hệ sinh thái PHP.
Cơ sở dữ liệu MongoDB (NoSQL) với lược đồ động linh hoạt, không yêu cầu xác định cấu trúc cố định từ trước, truy vấn trường thuận tiện. MySQL (RDBMS) có cấu trúc quan hệ chặt chẽ, tối ưu cho ứng dụng giao dịch nhưng kém linh hoạt khi cấu trúc dữ liệu thay đổi.
Hạn chế kỹ thuật Express.js xử lý kém tối ưu đối với tác vụ nặng về CPU; MongoDB không đảm bảo tính toàn vẹn ACID mạnh như RDBMS. Laravel đòi hỏi thời gian làm quen dài, nâng cấp phiên bản dễ gây xung đột thư viện, trình quản lý gói Composer xử lý chậm hơn npm.

Dựa trên việc đối chiếu cấu trúc dữ liệu đầu vào từ các tập tin Excel không đòi hỏi quan hệ liên kết phức tạp giữa các bảng, nhóm nghiên cứu đã lựa chọn Phương pháp 1 làm giải pháp triển khai chính thức.

Hệ thống sử dụng các thư viện kỹ thuật:

  • Backend: express (khung ứng dụng web), mongoose (thư viện mô hình hóa dữ liệu MongoDB), exceljs và convert-excel-to-json (đọc và chuyển đổi dữ liệu từ tập tin bảng tính Excel sang định dạng JSON).
  • Frontend: express-handlebars (bộ công cụ kết xuất giao diện theo mô hình MVC), bootstrap (định dạng bố cục giao diện responsive).

Kiến trúc chi tiết của các khối chức năng được xác định như sau:

  • Khối Model: Định nghĩa hai lược đồ dữ liệu chính trong cơ sở dữ liệu MongoDB phục vụ công tác lưu trữ lịch đào tạo.

Bảng dữ liệu cho lịch đầy đủ:

Tên trường (Field) Kiểu dữ liệu (Type) Mô tả chi tiết (Description)
Bomon String Tên bộ môn quản lý học phần
Malop String Mã định danh của lớp học
He String Hệ đào tạo
Nganh String Ngành đào tạo
Khoa String Niên khóa đào tạo
Giangvien String Họ và tên giảng viên phụ trách
SoSV String Số lượng sinh viên trong lớp
Hinhthuc String Hình thức học: LT (Lý thuyết), TH (Thực hành), ĐA (Đồ án), TTTN (Thực tập tốt nghiệp)
Ngay String Tuần học (Xác định theo ngày thứ Hai của tuần)
Sotietday String Số lượng tiết giảng dạy trong tuần

Bảng dữ liệu cho lịch thực hành:

Tên trường (Field) Kiểu dữ liệu (Type) Mô tả chi tiết (Description)
Bo_mon String Tên bộ môn phụ trách
He, Khoa, Ma_lop String Hệ đào tạo, khóa học, mã lớp sinh viên
Ten_nhom, Tong_so_nhom String Tên nhóm thực hành và tổng số nhóm của lớp
SL_HS_SV String Số lượng học sinh / sinh viên trong nhóm
Hocphan_Monhoc String Tên học phần hoặc môn học thực hành
Ca_thu_2 đến Ca_chu_nhat String Ca học phân bổ từ thứ Hai đến Chủ nhật
Phong_thu_2 đến Phong_chu_nhat String Phòng học thực hành tương ứng từ thứ Hai đến Chủ nhật
Giang_vien String Tên giảng viên hướng dẫn thực hành
Ngay, Thang, Nam String Định danh mốc thời gian tuần (thứ Hai), tháng và năm
  • Khối View: Xây dựng hệ thống giao diện người dùng gồm 9 trang chức năng: Trang chủ, Trang tìm kiếm, Trang nhập dữ liệu, Trang thống kê khối lượng giảng dạy, Trang hỗ trợ điền thông tin thực hành, Trang thông tin nghiên cứu khoa học, Trang nhóm nghiên cứu khoa học, Trang đăng nhập và Trang hướng dẫn sử dụng.
  • Khối Controller và thuật toán xử lý dữ liệu:
    1. Lưu đồ thuật toán nhập lịch đầy đủ: Người dùng bắt buộc phải đăng nhập với quyền quản trị viên (Admin). Quản trị viên tiến hành tải lên tệp tin bảng tính Excel định dạng .xlsx. Trình duyệt gửi yêu cầu lên máy chủ thông qua phương thức HTTP POST. Máy chủ sử dụng thư viện đọc tập tin, lưu dữ liệu vào các biến cục bộ theo các trường của bảng lịch đầy đủ. Tiếp đó, hệ thống thực thi phương thức deleteMany() để xóa toàn bộ dữ liệu cũ có trường Ngay trùng với mốc thời gian của tập tin tải lên nhằm tránh trùng lặp dữ liệu, rồi sử dụng phương thức create() để lưu các bản ghi mới vào MongoDB.
    2. Lưu đồ thuật toán nhập lịch thực hành: Sau khi xác thực quyền quản trị viên, người dùng tải lên tập tin Excel lịch thực hành kèm theo thông số ngày thứ Hai của tuần cần nhập. Hệ thống gửi yêu cầu POST lên máy chủ để đọc tệp, trích xuất dữ liệu vào các biến tương ứng của bảng lịch thực hành, gọi phương thức deleteMany() loại bỏ dữ liệu tuần cũ trên MongoDB và thực hiện create() để lưu trữ dữ liệu tuần mới.
    3. Lưu đồ thuật toán thống kê khối lượng giảng dạy: Người dùng đăng nhập vào hệ thống, nhập họ tên giảng viên cần tra cứu và chọn các mốc tuần (ngày thứ Hai tương ứng) thuộc tháng cần thống kê. Trình duyệt gửi yêu cầu POST chứa các tham số trên về máy chủ. Controller tiếp nhận dữ liệu và thực thi phương thức find() trên MongoDB để lọc các bản ghi có trường Giangvien và Ngay tương ứng, sau đó tính toán số tiết và trả kết quả tổng hợp về khối View để hiển thị cho người dùng.

Nội dung chính theo từng chương

Chương 1: Tổng quan về lập trình Website

Chương 1 hệ thống hóa cơ sở lý luận về công nghệ web và bối cảnh nghiên cứu. Nội dung chương trình bày lịch sử phát triển của World Wide Web từ năm 1989 do Tim Berners-Lee khởi xướng, cùng các mốc lịch sử kỹ thuật như sự ra đời của HTML/HTTP (1991), trình duyệt Mosaic (1993), JavaScript (1995), CSS (1996), XHTML (2000), điện thoại thông minh (2007), HTML5 (2010), Progressive Web Apps (2015) và WebAssembly (2019). Chương khảo sát 10 mô hình trang web phổ biến (thương mại điện tử, kinh doanh, blog, danh mục đầu tư, sự kiện, cá nhân, thành viên, phi lợi nhuận, thông tin, diễn đàn trực tuyến), đồng thời trích dẫn số liệu từ Adobe (38% người dùng ngừng tương tác nếu bố cục không hấp dẫn) và số liệu của Stanford về độ tin cậy của website.

Chương cũng phân tích các thách thức cốt lõi khi lập trình website bao gồm: lựa chọn ngăn xếp công nghệ, tối ưu hóa giao diện và trải nghiệm người dùng (UI/UX) thông qua thử nghiệm A/B, kiểm thử tính tương thích đa nền tảng (sử dụng công cụ kiểm thử như LambdaTest, BrowserStack, TestingBot), cải thiện hiệu suất thông qua chỉ số Google Core Web Vitals, bảo mật hệ thống (phòng chống tấn công XSS, lỗi xác thực, tích hợp SSL) và quy trình bảo trì dài hạn. Về khía cạnh kỹ thuật, chương giới thiệu chi tiết các thành phần: ngôn ngữ, framework, cơ sở dữ liệu quan hệ/phi quan hệ, máy chủ web (Apache, Nginx, IIS) và cơ chế giao tiếp HTTP GET/POST. Từ đó, chương xác định bài toán thực tiễn cần giải quyết là tự động hóa khâu thống kê giờ dạy và lưu trữ thông tin nghiên cứu khoa học cho Khoa Điện tử.

Chương 2: Thiết kế Website thống kê giảng dạy

Chương 2 tập trung vào việc mô hình hóa yêu cầu và thiết kế kỹ thuật chi tiết cho phần mềm. Tác giả tiến hành phân tích mục tiêu thiết kế, các điều kiện ràng buộc về nghiệp vụ thống kê theo tháng/tuần và các tiêu chí đánh giá kỹ thuật. Trên cơ sở đó, chương đưa ra phân tích đối sánh chi tiết giữa hai ngăn xếp công nghệ (Node.js/Express.js kết hợp MongoDB và PHP/Laravel kết hợp MySQL), làm rõ cơ sở lựa chọn kiến trúc JavaScript đồng nhất kết hợp cơ sở dữ liệu NoSQL.

Chương trình bày chi tiết bản vẽ kiến trúc MVC và sơ đồ tương tác giữa ba khối Controller, Model, View với máy khách (Client) và hệ cơ sở dữ liệu (Database). Về mặt dữ liệu, chương xác lập chi tiết bảng cấu trúc các trường cho hai đối tượng lưu trữ chính là lịch giảng dạy đầy đủ (10 trường dữ liệu) và lịch thực hành (24 trường dữ liệu). Đồng thời, chương chi tiết hóa các thuật toán xử lý dữ liệu thông qua ba lưu đồ xử lý nghiệp vụ: tiến trình nạp tập tin bảng tính lịch đầy đủ, tiến trình nạp tập tin bảng tính lịch thực hành và tiến trình truy vấn thống kê khối lượng giảng dạy sử dụng các hàm thao tác dữ liệu của Mongoose.

Chương 3: Thử nghiệm và đánh giá

Chương 3 trình bày việc đưa hệ thống vào vận hành thử nghiệm trên môi trường thực tế tại Khoa Điện tử. Nội dung chương tập trung vào việc chạy thử nghiệm và kiểm chứng sản phẩm dựa trên tập dữ liệu lịch trình giảng dạy thực tế của các giảng viên trong khoa. Tác giả đã tiến hành kiểm chứng kết quả số liệu thống kê đối với một số giảng viên cụ thể thuộc Khoa Điện tử gồm: ThS. Nguyễn Văn Cường, giảng viên Dương Thị Hằng, giảng viên Đinh Thị Kim Phượng, giảng viên Lê Việt Tiến, giảng viên Vũ Thị Hoàng Yến và giảng viên Lê Mạnh Long.

Qua kết quả thực nghiệm, chương đánh giá mức độ chính xác của các thuật toán xử lý tập tin Excel, tính đúng đắn của số giờ giảng dạy và số giờ được thanh toán so với sổ sách kê giờ truyền thống. Đồng thời, chương phân tích tính ứng dụng của website trong việc hỗ trợ điều chỉnh lịch trình đào tạo và đánh giá các tác động tích cực của phần mềm đối với môi trường làm việc số hóa, giảm thiểu chi phí hành chính và nâng cao hiệu quả quản trị giáo dục nội bộ.

Kết quả và đóng góp

Về mặt sản phẩm kỹ thuật, đồ án đã hoàn thành thiết kế và xây dựng thành công website phục vụ công tác giảng dạy và nghiên cứu khoa học với các module chức năng hoàn chỉnh:

  • Module xác thực và phân quyền người dùng: Cho phép phân định quyền truy cập giữa người quản trị hệ thống (có quyền nhập, xóa, cập nhật lịch trình giảng dạy từ tập tin Excel) và người dùng thông thường (thực hiện tra cứu, xem thông tin).
  • Module nhập liệu tự động: Xử lý đọc trực tiếp các tập tin bảng tính Excel (.xlsx) chứa lịch đào tạo đầy đủ và lịch thực hành hàng tuần, tự động làm sạch và nạp dữ liệu vào MongoDB.
  • Module thống kê khối lượng giảng dạy: Cho phép tổng hợp số tiết giảng dạy thực tế và tính toán số giờ được thanh toán theo từng tháng đối với từng giảng viên.
  • Module thông tin khoa học: Cung cấp giao diện tra cứu thông tin hoạt động nghiên cứu khoa học và hồ sơ của các nhóm nghiên cứu trong Khoa Điện tử.

Về mặt thực nghiệm kiểm chứng, hệ thống đã được thử nghiệm và xuất kết quả thống kê giờ giảng dạy cho 6 giảng viên của Khoa Điện tử được ghi nhận trong văn bản:

  1. Giảng viên Nguyễn Văn Cường (cán bộ hướng dẫn).
  2. Giảng viên Dương Thị Hằng.
  3. Giảng viên Đinh Thị Kim Phượng.
  4. Giảng viên Lê Việt Tiến.
  5. Giảng viên Vũ Thị Hoàng Yến.
  6. Giảng viên Lê Mạnh Long.

Đóng góp của đồ án thể hiện ở việc thay thế quy trình thống kê số giờ giảng dạy thủ công, vốn tiềm ẩn nhiều sai sót và mất thời gian, bằng một hệ thống phần mềm web tự động hóa. Đề tài hỗ trợ trực tiếp công tác quản lý của bộ phận giáo vụ và giảng viên Khoa Điện tử, đồng thời tạo ra công cụ phục vụ thiết thực cho lộ trình kiểm định chất lượng chương trình đào tạo ngành Công nghệ Kỹ thuật Máy tính theo các tiêu chuẩn phần mềm tại Trường Đại học Công nghiệp Hà Nội.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của hệ thống được xác định dựa trên phạm vi và các đặc điểm công nghệ được phân tích trong đồ án:

  • Việc sử dụng Express.js và Node.js tuy mang lại tốc độ xử lý nhanh cho các thao tác đọc/ghi dữ liệu nhưng chưa được tối ưu cho các tác vụ xử lý tính toán chuyên sâu tiêu tốn nhiều tài nguyên CPU.
  • Giao diện người dùng sử dụng template Handlebars.js kết xuất từ phía máy chủ, dẫn đến tính tương tác động và khả năng quản lý trạng thái thời gian thực còn hạn chế hơn so với các khung ứng dụng trang đơn (Single-Page Application).
  • Quy trình nhập dữ liệu phụ thuộc chặt chẽ vào cấu trúc định dạng của các tập tin Excel đầu vào; hệ thống sẽ yêu cầu tải lại hoặc báo lỗi nếu cấu trúc bảng tính bị thay đổi so với quy định chuẩn của khối Model.
  • Phạm vi triển khai và tập mẫu dữ liệu thử nghiệm chỉ mới giới hạn trong nội bộ Khoa Điện tử của Trường Đại học Công nghiệp Hà Nội.

Hướng nghiên cứu và phát triển tiếp theo được đặt ra:

  • Cải tiến giao diện người dùng theo hướng ứng dụng trang đơn (SPA) nhằm tăng tính tương tác và cải thiện trải nghiệm người dùng.
  • Tăng cường khả năng tương thích của bộ chuyển đổi dữ liệu Excel để có thể tự động nhận dạng và xử lý linh hoạt nhiều mẫu biểu dữ liệu khác nhau.
  • Mở rộng phạm vi tích hợp hệ thống vào cổng thông tin quản lý đào tạo chung của toàn trường, kết nối trực tiếp với cơ sở dữ liệu thời khóa biểu và thanh toán thù lao tập trung.

Giá trị tham khảo

Đồ án là tài liệu tham khảo phù hợp cho sinh viên thuộc các ngành Công nghệ Kỹ thuật Máy tính, Công nghệ Thông tin, Kỹ thuật Phần mềm và Hệ thống Thông tin đang thực hiện đồ án tốt nghiệp hoặc nghiên cứu ứng dụng web quản lý đào tạo theo kiến trúc MVC.

Các nội dung có giá trị tham khảo chuyên môn cao bao gồm:

  • Phương pháp phân tích, so sánh lựa chọn công nghệ giữa ngăn xếp JavaScript full-stack (Node.js, Express.js, MongoDB) và ngăn xếp PHP truyền thống (Laravel, MySQL).
  • Bảng thiết kế cấu trúc dữ liệu chi tiết cho bài toán quản lý lịch học lý thuyết và lịch thực hành (với các trường dữ liệu phân bổ ca học, phòng học từ thứ Hai đến Chủ nhật).
  • Lưu đồ thuật toán và quy trình xử lý dữ liệu tập tin bảng tính Excel (.xlsx) vào cơ sở dữ liệu NoSQL thông qua việc phối hợp các phương thức deleteMany(), create() và find() của Mongoose.

Câu hỏi thường gặp

1. Vì sao nhóm nghiên cứu quyết định lựa chọn ngăn xếp Node.js, Express.js và MongoDB thay vì Laravel và MySQL?
Nhóm nghiên cứu lựa chọn Express.js vì công cụ này có tốc độ xử lý nhanh, hỗ trợ lập trình viên sử dụng đồng nhất một ngôn ngữ JavaScript trên cả máy chủ và máy khách, đồng thời tận dụng được hệ sinh thái gói phong phú của npm. Về mặt dữ liệu, tệp đầu vào của bài toán là bảng tính Excel có cấu trúc dữ liệu không đòi hỏi các quan hệ ràng buộc phức tạp như trong RDBMS; do đó lược đồ động của cơ sở dữ liệu NoSQL MongoDB kết hợp cùng thư viện Mongoose giúp việc ánh xạ, lưu trữ và truy vấn dữ liệu theo từng trường diễn ra nhanh chóng, thuận tiện hơn so với việc thiết lập các bảng quan hệ cố định trong MySQL.

2. Cấu trúc bảng dữ liệu cho lịch thực hành trong MongoDB bao gồm những trường thông tin cụ thể nào?
Bảng dữ liệu lịch thực hành gồm 24 trường dữ liệu định dạng String: Bo_mon, He, Khoa, Ma_lop, Ten_nhom, Tong_so_nhom, SL_HS_SV, Hocphan_Monhoc, 7 trường ca học từ thứ Hai đến Chủ nhật (Ca_thu_2 đến Ca_chu_nhat), 7 trường phòng học tương ứng (Phong_thu_2 đến Phong_chu_nhat), cùng các trường định danh Giang_vien, Ngay, Thang, và Nam.

3. Tiến trình Controller xử lý tập tin Excel lịch giảng dạy diễn ra theo các bước kỹ thuật nào?
Khi quản trị viên đăng nhập và tải lên tệp .xlsx, trình duyệt gửi yêu cầu POST đến máy chủ. Controller sử dụng các thư viện convert-excel-to-json và exceljs để phân tích tệp và lưu tạm thời vào các biến cục bộ. Tiếp theo, hệ thống thực thi lệnh deleteMany() đối với các bản ghi có trường Ngay trùng khớp với dữ liệu mới tải lên để xóa bỏ các bản ghi của tuần đó, tránh tình trạng trùng lặp. Cuối cùng, phương thức create() được gọi để ghi toàn bộ dữ liệu mới vào cơ sở dữ liệu MongoDB.

4. Dữ liệu thử nghiệm và kiểm chứng chức năng thống kê của website được thực hiện trên những đối tượng nào?
Hệ thống đã được thử nghiệm và đối soát kết quả tính toán số giờ giảng dạy, số giờ được thanh toán trên tập dữ liệu đào tạo thực tế của 6 giảng viên thuộc Khoa Điện tử - Trường Đại học Công nghiệp Hà Nội, bao gồm: ThS. Nguyễn Văn Cường, giảng viên Dương Thị Hằng, giảng viên Đinh Thị Kim Phượng, giảng viên Lê Việt Tiến, giảng viên Vũ Thị Hoàng Yến và giảng viên Lê Mạnh Long.

5. Các thư viện phụ trợ nào được sử dụng trong mã nguồn ứng dụng để phục vụ xử lý bảng tính và giao diện?
Ở tầng backend, hệ thống sử dụng thư viện express để dựng khung ứng dụng, mongoose để tương tác với MongoDB, cùng hai thư viện convert-excel-to-json và exceljs để trích xuất dữ liệu bảng tính. Ở tầng frontend, hệ thống tích hợp thư viện tạo khuôn mẫu giao diện express-handlebars và thư viện giao diện bootstrap để xây dựng bố cục các trang chức năng.

Kết luận

Đồ án tốt nghiệp "Thiết kế Website phục vụ hoạt động giảng dạy và nghiên cứu cho Khoa Điện tử" của nhóm sinh viên ngành Công nghệ Kỹ thuật Máy tính, Trường Đại học Công nghiệp Hà Nội đã giải quyết trọn vẹn bài toán tự động hóa quy trình thống kê khối lượng giảng dạy từ các tập tin bảng tính Excel. Hệ thống được xây dựng hoàn chỉnh theo mô hình kiến trúc MVC trên nền tảng công nghệ Node.js, Express.js, Handlebars.js và cơ sở dữ liệu MongoDB. Các kết quả tính toán số giờ giảng dạy và số giờ thanh toán đã được kiểm chứng chuẩn xác trên dữ liệu thực tế của giảng viên trong khoa, đóng góp thiết thực cho công tác quản lý đào tạo và hỗ trợ chương trình kiểm định chất lượng đào tạo theo chuẩn phần mềm máy tính của nhà trường.