Giới thiệu dự án
Trong bối cảnh chuyển đổi số giáo dục đang diễn ra mạnh mẽ theo các định hướng của Bộ Giáo dục và Đào tạo (tiêu biểu như Thông tư 58/2011/TT-BGDĐT và Thông tư 26/2020/TT-BGDĐT về quy chế đánh giá, xếp loại học sinh THCS), việc ứng dụng công nghệ thông tin vào công tác quản trị trường học đã trở thành yêu cầu cấp thiết. Tại nhiều cơ sở giáo dục tuyến huyện, quá trình chuyển đổi từ phương thức quản trị truyền thống sang số hóa đồng bộ vẫn đối mặt với nhiều rào cản về hạ tầng kỹ thuật, ngân sách và năng lực vận hành.
Khóa luận tốt nghiệp "Ứng dụng WinForm C#.NET xây dựng phần mềm quản lý điểm học sinh Trường THCS Chu Văn An – Duy Xuyên – Quảng Nam" do sinh viên Hà Quốc Dũng (Khoa Công nghệ Thông tin, Trường Đại học Quảng Nam) thực hiện dưới sự hướng dẫn của Th.S Nguyễn Văn Khương, tập trung giải quyết bài toán tự động hóa quy trình quản lý điểm số và hồ sơ học vụ cho đơn vị trường học thực tế.
+-------------------------------------------------------------------------+
| HỆ THỐNG QUẢN LÝ ĐIỂM THCS CHU VĂN AN |
| (Kiến trúc Client-Server) |
+-------------------------------------------------------------------------+
|
+-----------------------------+-----------------------------+
| |
v v
+-----------------------------+ +-----------------------------+
| Client WinForms (.NET) | | Database MS SQL Server |
| - Giao diện nghiệp vụ | <=========> | - Lưu trữ quan hệ tập trung |
| - Kiểm thực & tính toán ĐTB | TCP/IP | - Toàn vẹn tham chiếu (FK) |
| - Phân quyền người dùng | Port 1433 | - Xử lý đa truy cập qua LAN |
+-----------------------------+ +-----------------------------+
1. Bối cảnh và vấn đề thực tế (Problem Statement)
Qua khảo sát thực tế ngày 04/02/2019 tại Trường THCS Chu Văn An (Thị trấn Nam Phước, huyện Duy Xuyên, tỉnh Quảng Nam) với sự tham vấn của Hiệu trưởng Nguyễn Lợi, quy trình quản lý điểm số tại trường tồn tại các điểm nghẽn nghiêm trọng:
- Xử lý thủ công, phân tán: Điểm số được ghi nhận trên sổ điểm cái bằng giấy và các file Microsoft Excel cá nhân của từng giáo viên bộ môn, dẫn đến nguy cơ sai lệch số liệu và mất mát dữ liệu khi bàn giao.
- Tốn thời gian tổng kết: Mỗi kỳ kiểm tra định kỳ hoặc tổng kết học kỳ, hội đồng sư phạm mất từ 7 đến 10 ngày để thu thập bảng điểm, tính điểm trung bình (ĐTB), xếp loại học lực - hạnh kiểm và lập báo cáo thống kê.
- Dễ phát sinh sai sót số học: Quy trình tính toán điểm trung bình thủ công dễ nhầm lẫn trọng số hệ số môn học (hệ số 1, 2, 3), làm sai lệch kết quả thi đua và xếp loại của học sinh.
2. Mục tiêu dự án
- Chuẩn hóa quy trình quản lý học vụ: Thiết lập mô hình cơ sở dữ liệu quan hệ (RDBMS) đồng bộ cho toàn bộ thực thể: Học sinh, Giáo viên, Lớp học, Môn học, Học kỳ và Điểm số.
- Tự động hóa tính toán và xếp loại: Lập trình giải thuật tính ĐTB môn học, ĐTB học kỳ và phân loại học lực tự động, chính xác 100% theo quy chế của Bộ GD&ĐT.
- Mô hình Client-Server trong mạng cục bộ (LAN): Cho phép các máy trạm của giáo viên truy cập đồng thời vào máy chủ cơ sở dữ liệu để nhập và tra cứu dữ liệu.
- Tối ưu hóa thời gian tra cứu và thống kê: Rút ngắn thời gian truy xuất thông tin học sinh và kết xuất bảng điểm từ hàng chục phút xuống dưới 1 giây.
- Tiết kiệm chi phí đầu tư: Tận dụng hạ tầng máy tính hiện có của nhà trường mà không đòi hỏi nâng cấp phần cứng đắt đỏ hay duy trì chi phí thuê dịch vụ đám mây (SaaS) hàng tháng.
3. Giải pháp kỹ thuật và phạm vi triển khai
- Phương pháp tiếp cận: Xây dựng ứng dụng Desktop Client-Server 2 lớp (2-Tier Architecture) sử dụng ngôn ngữ lập trình C#, nền tảng Windows Forms (.NET Framework) kết hợp hệ quản trị cơ sở dữ liệu Microsoft SQL Server.
- Chỉ số kỳ vọng:
- Tốc độ phản hồi truy vấn dữ liệu: $< 500\text{ ms}$.
- Giảm thiểu 80% thời gian xử lý sổ sách cuối kỳ cho cán bộ giáo vụ.
- Tương thích 100% với hệ điều hành Windows 7/8/10 trên các máy tính cấu hình cơ bản.
- Phạm vi & Giới hạn: Triển khai nội bộ tại Trường THCS Chu Văn An, phục vụ khoảng 1.000 - 1.500 học sinh cùng đội ngũ hơn 60 cán bộ, giáo viên; vận hành trong phạm vi mạng LAN nhà trường.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, quy trình quản lý điểm số được so sánh và đánh giá thông qua các phương án triển khai phổ biến:
| Tiêu chí so sánh |
Quản lý sổ sách giấy |
Quản lý bằng Microsoft Excel rời rạc |
Hệ thống WinForms C#.NET + SQL Server |
| Tính toàn vẹn dữ liệu |
Rất thấp (dễ rách, mất, tẩy xóa) |
Thấp (dễ đè file, lỗi công thức VLOOKUP/AVERAGE) |
Rất cao (ràng buộc toàn vẹn khóa chính/ngoại, Trigger, Transaction) |
| Khả năng làm việc đồng thời |
Đơn lẻ (1 người/sổ tại 1 thời điểm) |
Hạn chế (xung đột file lock khi chia sẻ qua folder mạng) |
Cao (hỗ trợ hàng chục kết nối đồng thời qua giao thức TCP/IP) |
| Tốc độ tra cứu thông tin |
15 - 30 phút/học sinh |
1 - 3 phút/học sinh |
$< 0.5$ giây/học sinh (Indexed Search) |
| Bảo mật & Phân quyền |
Khóa tủ vật lý |
Đặt mật khẩu file (dễ bị bypass) |
Xác thực tài khoản SQL Server, phân quyền truy cập form chức năng |
| Chi phí triển khai & bảo trì |
Chi phí văn phòng phẩm cao |
Sẵn có theo bộ Office |
Chi phí 0 VNĐ (tận dụng SQL Server Express và .NET Runtime) |
Phân loại yêu cầu người dùng theo mô hình MoSCoW:
- Must Have (Bắt buộc phải có):
- Đăng nhập xác thực tài khoản giáo vụ/quản trị viên.
- Quản lý danh mục: Giáo viên, Học sinh, Lớp học, Môn học, Học kỳ.
- Nhập, sửa, xóa và lưu điểm chi tiết theo môn, lớp, học kỳ.
- Tìm kiếm học sinh/giáo viên theo Mã định danh hoặc Họ tên.
- Should Have (Nên có):
- Thống kê danh sách học sinh theo lớp, thống kê kết quả điểm theo học kỳ.
- Báo lỗi nhập liệu (ví dụ: điểm $< 0$ hoặc $> 10$, trùng mã khóa chính).
- Could Have (Có thể phát triển thêm):
- Kết xuất báo cáo ra định dạng Excel/PDF thông qua Crystal Reports.
- Đổi mật khẩu tài khoản trực tiếp trên giao diện người dùng.
- Won't Have (Chưa thực hiện trong giai đoạn này):
- Cổng thông tin tra cứu điểm trực tuyến qua Web/Mobile App cho phụ huynh.
- Đồng bộ hóa dữ liệu lên cơ sở dữ liệu ngành của Bộ GD&ĐT qua RESTful API.
+-------------------------------------------------------------+
| USE CASE TỔNG QUÁT HỆ THỐNG |
+-------------------------------------------------------------+
+--------------------+
| Đăng nhập |
+--------------------+
^
| <<include>>
+----------------------------------+----------------------------------+
| | | | |
v v v v v
+------------+ +------------+ +------------+ +------------+ +------------+
| Quản lý | | Quản lý | | Quản lý | | Quản lý | | Tìm kiếm |
| Giáo viên | | Học sinh | | Lớp / Môn | | Điểm | | & Thống kê |
+------------+ +------------+ +------------+ +------------+ +------------+
Thiết kế hệ thống
1. Kiến trúc phân tầng và ngăn xếp công nghệ (Technology Stack)
Hệ thống được tổ chức theo kiến trúc 2 tầng (Client-Server Architecture) với các công nghệ định danh cụ thể:
- Client Tier (Presentation Layer): Windows Forms trên nền tảng .NET Framework 4.0/4.5, viết bằng ngôn ngữ C#. Sử dụng các control tiêu chuẩn (
DataGridView, BindingSource, ComboBox, TextBox).
- Data Access Layer (DAL): Sử dụng thư viện ADO.NET (
System.Data.SqlClient) để tương tác trực tiếp với cơ sở dữ liệu qua các đối tượng SqlConnection, SqlCommand, SqlDataAdapter, DataTable.
- Database Tier (Storage Layer): Microsoft SQL Server 2008 R2 / 2012 / 2014, chạy dưới dạng Windows Service (
MSSQLSERVER hoặc SQLEXPRESS).
+-----------------------------------------------------------------------+
| KIẾN TRÚC CLIENT-SERVER 2 TẦNG |
+-----------------------------------------------------------------------+
[ WORKSTATION (MÁY TRẠM) ] [ DATABASE SERVER (MÁY CHỦ) ]
+----------------------------+ +-----------------------------+
| Windows Forms UI (C#) | | Microsoft SQL Server |
| + Giao diện đăng nhập | | + Engine quan hệ RDBMS |
| + Quản lý Học sinh, Lớp | | + Lưu trữ Tables, Indices |
| + Nhập & Thống kê điểm | | + Toàn vẹn thực thể (PK, FK)|
+--------------+-------------+ +--------------+--------------+
| ^
| (ADO.NET / SqlClient) |
v |
+----------------------------+ |
| SqlConnection, SqlCommand | <========================+
| System.Data.DataTable | TDS Protocol (Port 1433)
+----------------------------+
2. Thiết kế Cơ sở Dữ liệu (Database Schema)
Cơ sở dữ liệu bao gồm 7 bảng quan hệ được chuẩn hóa theo dạng chuẩn 3 (3NF) nhằm triệt tiêu dư thừa dữ liệu:
+---------------------------------------------------------------------------------+
| SƠ ĐỒ THỰC THỂ QUAN HỆ (ERD) |
+---------------------------------------------------------------------------------+
+----------------+ +----------------+ +----------------+
| GIAOVIEN | | LOP | | HOCSINH |
+----------------+ +----------------+ +----------------+
| PK MaGV | | PK MaLop | | PK MaHS |
| TenGV | | TenLop | | TenHS |
| NgaySinh | | FK MaGV |----+ | NgaySinh |
| GioiTinh | +----------------+ | | GioiTinh |
| DiaChi | +---->| FK MaLop |
| SDT | | DiaChi |
+----------------+ +----------------+
|
|
+----------------+ +----------------+ |
| MONHOC | | HOCKY | |
+----------------+ +----------------+ |
| PK MaMon | | PK MaHK | v
| TenMon | | TenHK | +----------------+
| HeSoMon | | HeSoHK | | DIEM |
+----------------+ +----------------+ +----------------+
| | | PK,FK1 MaHS |
+---------------------------+------------------>| PK,FK2 MaMon |
| PK,FK3 MaHK |
| PK,FK4 MaLop |
| Diem |
+----------------+
Chi tiết cấu trúc các bảng vật lý:
-
DANGNHAP (Tài khoản truy cập hệ thống):
TenDangNhap (NVARCHAR(50), Primary Key): Tên đăng nhập người dùng.
MatKhau (NVARCHAR(50), Not Null): Mật khẩu truy cập.
Quyen (NVARCHAR(20)): Quyền hạn sử dụng (Admin, GiaoVien).
-
GIAOVIEN (Danh mục Giáo viên):
MaGV (NVARCHAR(10), Primary Key): Mã định danh giáo viên.
TenGV (NVARCHAR(50), Not Null): Họ và tên giáo viên.
NgaySinh (DATETIME): Ngày tháng năm sinh.
GioiTinh (NVARCHAR(5)): Giới tính (Nam/Nữ).
DiaChi (NVARCHAR(100)): Địa chỉ thường trú.
SDT (VARCHAR(15)): Số điện thoại liên hệ.
-
LOP (Danh mục Lớp học):
MaLop (NVARCHAR(10), Primary Key): Mã lớp (ví dụ: 6A1, 9A2).
TenLop (NVARCHAR(50), Not Null): Tên hiển thị lớp học.
MaGV (NVARCHAR(10), Foreign Key $\to$ GIAOVIEN.MaGV): Giáo viên chủ nhiệm.
-
HOCSINH (Danh mục Học sinh):
MaHS (NVARCHAR(10), Primary Key): Mã định danh duy nhất của học sinh.
TenHS (NVARCHAR(50), Not Null): Họ tên học sinh.
NgaySinh (DATETIME): Ngày sinh.
GioiTinh (NVARCHAR(5)): Giới tính.
MaLop (NVARCHAR(10), Foreign Key $\to$ LOP.MaLop): Lớp đang theo học.
DiaChi (NVARCHAR(100)): Địa chỉ cư trú.
-
MONHOC (Danh mục Môn học):
MaMon (NVARCHAR(10), Primary Key): Mã môn học (TOAN, VAN, ANH...).
TenMon (NVARCHAR(50), Not Null): Tên đầy đủ môn học.
HeSoMon (INT, Default = 1): Hệ số tính điểm của môn.
-
HOCKY (Danh mục Học kỳ):
MaHK (NVARCHAR(10), Primary Key): Mã học kỳ (HK1, HK2).
TenHK (NVARCHAR(50)): Tên học kỳ.
HeSoHK (INT, Default = 1): Hệ số tính điểm của học kỳ.
-
DIEM (Bảng lưu trữ kết quả học tập):
MaHS (NVARCHAR(10), Foreign Key $\to$ HOCSINH.MaHS): Khóa chính tổng hợp (Composite PK Part 1).
MaMon (NVARCHAR(10), Foreign Key $\to$ MONHOC.MaMon): Composite PK Part 2.
MaHK (NVARCHAR(10), Foreign Key $\to$ HOCKY.MaHK): Composite PK Part 3.
MaLop (NVARCHAR(10), Foreign Key $\to$ LOP.MaLop): Composite PK Part 4.
Diem (FLOAT, Constraint: $0 \le \text{Diem} \le 10$): Điểm số trung bình môn của học sinh.
Methodology (Phương pháp phát triển)
Dự án áp dụng mô hình phát triển Thác nước cải tiến (Iterative Waterfall Model), kết hợp phân tích hướng đối tượng với ngôn ngữ mô hình hóa thống nhất UML (Unified Modeling Language):
[Khảo sát & Thu thập Yêu cầu] (04/02/2019)
│
▼
[Phân tích Hệ thống (UML Use Case, Sequence)]
│
▼
[Thiết kế Cơ sở Dữ liệu & Kiến trúc 2-Tier]
│
▼
[Lập trình WinForms C# & Cấu hình SQL LAN]
│
▼
[Kiểm thử Chức năng & Tinh chỉnh Hiệu năng] (04/2019)
Ma trận đánh giá rủi ro và giải pháp khắc phục (Risk Mitigation):
- Rủi ro rớt kết nối mạng LAN: Triển khai cơ chế bẫy lỗi
try-catch-finally toàn cục, thiết lập Connection Timeout = 15 giây trên chuỗi kết nối ADO.NET để tránh treo giao diện người dùng.
- Rủi ro xung đột dữ liệu khi nhiều máy cùng sửa điểm: Sử dụng giao dịch cơ sở dữ liệu (
SqlTransaction) với mức cô lập phù hợp (IsolationLevel.ReadCommitted).
- Rủi ro tấn công nội bộ qua tài khoản
sa: Áp dụng chính sách mật khẩu bắt buộc (Enforce Password Policy) trên SQL Server Configuration Manager, phân định quyền tài khoản ứng dụng riêng biệt.
Implementation và kết quả
Development process
Quá trình hiện thực hóa phần mềm tập trung vào việc xử lý các thao tác tương tác cơ sở dữ liệu qua ADO.NET và xây dựng các thuật toán tính toán nghiệp vụ điểm số chuẩn xác.
1. Lớp kết nối và xử lý dữ liệu tập trung qua ADO.NET
Đoạn mã C# quản lý kết nối cơ sở dữ liệu và nạp dữ liệu vào bảng điều khiển:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace QuanLyDiemTHCS
{
public class DatabaseService
{
// Chuỗi kết nối đến SQL Server qua IP mạng LAN hoặc Tên Server
private static readonly string ConnectionString =
@"Data Source=192.168.1.100,1433;Initial Catalog=QLDiemChuVanAn;User ID=sa;Password=SecurePassword@2019;Connect Timeout=15;";
public static SqlConnection GetConnection()
{
return new SqlConnection(ConnectionString);
}
public static DataTable ExecuteQuery(string query, SqlParameter[] parameters = null)
{
DataTable dataTable = new DataTable();
using (SqlConnection connection = GetConnection())
{
try
{
connection.Open();
using (SqlCommand command = new SqlCommand(query, connection))
{
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
adapter.Fill(dataTable);
}
}
}
catch (SqlException ex)
{
MessageBox.Show("Lỗi kết nối cơ sở dữ liệu: " + ex.Message,
"Lỗi SQL", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
return dataTable;
}
}
}
2. Xử lý nghiệp vụ cập nhật điểm an toàn bằng SqlTransaction
Để đảm bảo tính nguyên tố (Atomicity) trong tính chất ACID của hệ thống cơ sở dữ liệu khi cập nhật điểm cho cả lớp học:
public bool CapNhatDiemHocSinh(string maHs, string maMon, string maHk, string maLop, double diemSo)
{
// Kiểm tra tính hợp lệ của miền giá trị điểm số
if (diemSo < 0.0 || diemSo > 10.0)
{
throw new ArgumentOutOfRangeException("diemSo", "Điểm số phải nằm trong thang điểm [0, 10].");
}
string sqlCheck = "SELECT COUNT(1) FROM DIEM WHERE MaHS = @MaHS AND MaMon = @MaMon AND MaHK = @MaHK AND MaLop = @MaLop";
string sqlInsert = "INSERT INTO DIEM (MaHS, MaMon, MaHK, MaLop, Diem) VALUES (@MaHS, @MaMon, @MaHK, @MaLop, @Diem)";
string sqlUpdate = "UPDATE DIEM SET Diem = @Diem WHERE MaHS = @MaHS AND MaMon = @MaMon AND MaHK = @MaHK AND MaLop = @MaLop";
using (SqlConnection conn = DatabaseService.GetConnection())
{
conn.Open();
using (SqlTransaction transaction = conn.BeginTransaction())
{
try
{
SqlCommand cmdCheck = new SqlCommand(sqlCheck, conn, transaction);
cmdCheck.Parameters.AddWithValue("@MaHS", maHs);
cmdCheck.Parameters.AddWithValue("@MaMon", maMon);
cmdCheck.Parameters.AddWithValue("@MaHK", maHk);
cmdCheck.Parameters.AddWithValue("@MaLop", maLop);
int exists = Convert.ToInt32(cmdCheck.ExecuteScalar());
SqlCommand cmdExecute = new SqlCommand(exists > 0 ? sqlUpdate : sqlInsert, conn, transaction);
cmdExecute.Parameters.AddWithValue("@MaHS", maHs);
cmdExecute.Parameters.AddWithValue("@MaMon", maMon);
cmdExecute.Parameters.AddWithValue("@MaHK", maHk);
cmdExecute.Parameters.AddWithValue("@MaLop", maLop);
cmdExecute.Parameters.AddWithValue("@Diem", diemSo);
cmdExecute.ExecuteNonQuery();
transaction.Commit();
return true;
}
catch (Exception)
{
transaction.Rollback();
throw;
}
}
}
}
3. Thuật toán tính điểm trung bình và xếp loại học lực
Thuật toán tuân thủ quy chế đánh giá học sinh bậc THCS:
$$\text{ĐTBHK} = \frac{\sum (\text{Điểm môn} \times \text{Hệ số môn})}{\sum \text{Hệ số môn}}$$
public static (double Dtb, string XepLoai) TinhDiemVaXepLoai(DataTable bangDiemMon)
{
double tongDiemHeSo = 0.0;
int tongHeSo = 0;
bool coMonDuoi3_5 = false;
bool coMonDuoi5_0 = false;
double diemToan = 0.0, diemVan = 0.0;
foreach (DataRow row in bangDiemMon.Rows)
{
double diem = Convert.ToDouble(row["Diem"]);
int heSo = Convert.ToInt32(row["HeSoMon"]);
string maMon = row["MaMon"].ToString().ToUpper();
if (maMon == "TOAN") diemToan = diem;
if (maMon == "VAN") diemVan = diem;
if (diem < 3.5) coMonDuoi3_5 = true;
if (diem < 5.0) coMonDuoi5_0 = true;
tongDiemHeSo += (diem * heSo);
tongHeSo += heSo;
}
if (tongHeSo == 0) return (0.0, "Chưa đủ dữ liệu");
double dtb = Math.Round(tongDiemHeSo / tongHeSo, 2);
string xepLoai = "Kém";
if (dtb >= 8.0 && (diemToan >= 8.0 || diemVan >= 8.0) && !coMonDuoi5_0)
{
xepLoai = "Giỏi";
}
else if (dtb >= 6.5 && (diemToan >= 6.5 || diemVan >= 6.5) && !coMonDuoi3_5)
{
xepLoai = "Khá";
}
else if (dtb >= 5.0 && (diemToan >= 5.0 || diemVan >= 5.0))
{
xepLoai = "Trung bình";
}
else if (dtb >= 3.5)
{
xepLoai = "Yếu";
}
return (dtb, xepLoai);
}
Testing và validation
Hệ thống đã trải qua quá trình kiểm thử chức năng (Black-box Testing) và kiểm thử hiệu năng kết nối mạng cục bộ với tập dữ liệu mẫu tương đương quy mô thực tế của Trường THCS Chu Văn An (1.200 học sinh, 30 lớp học, 13 môn học và hơn 31.000 bản ghi điểm):
| Kịch bản kiểm thử |
Dữ liệu đầu vào |
Kết quả mong đợi |
Kết quả thực tế |
Trạng thái |
| Xác thực đăng nhập |
Sai mật khẩu 3 lần |
Báo lỗi đăng nhập, không mở Main Form |
Hiển thị MessageBox cảnh báo, giữ nguyên form đăng nhập |
PASS |
| Kiểm tra ràng buộc điểm |
Nhập điểm 11.5 hoặc -1 |
Chặn lưu, thông báo lỗi miền giá trị |
Giao diện cảnh báo, chặn truy vấn xuống CSDL |
PASS |
| Toàn vẹn khóa ngoại |
Xóa lớp khi còn học sinh |
Báo lỗi ràng buộc toàn vẹn khóa ngoại |
SQL Server trả lỗi Foreign Key Constraint, hệ thống bắt bẫy lỗi êm |
PASS |
| Tìm kiếm học sinh |
Nhập chuỗi "Nguyễn" |
Trả về danh sách học sinh có tên chứa "Nguyễn" |
Trả về 142 kết quả trong thời gian $85\text{ ms}$ |
PASS |
| Đa truy cập qua LAN |
5 máy trạm cùng mở sổ điểm |
Không phát sinh deadlock, dữ liệu đọc nhất quán |
Đọc và ghi đồng thời ổn định, độ trễ trung bình $115\text{ ms}$ |
PASS |
+-------------------------------------------------------------------------+
| BIỂU ĐỒ HIỆU NĂNG PHẢN HỒI HỆ THỐNG |
+-------------------------------------------------------------------------+
Thao tác truy vấn Thời gian phản hồi (ms)
------------------------- -----------------------------------------------
Đăng nhập hệ thống |==== (45 ms)
Tìm kiếm học sinh theo mã |== (22 ms)
Tìm kiếm theo tên (Like) |======== (85 ms)
Nạp bảng điểm lớp (45 HS) |=========== (115 ms)
Tính ĐTB & Xếp loại lớp |============= (135 ms)
------------------------- -----------------------------------------------
0 ms 50 ms 100 ms 150 ms
Kết quả đạt được
- Hoàn thành 100% các Use Case đề ra:
- Xây dựng thành công 10 module chức năng hoàn chỉnh: Đăng nhập, Quản lý Giáo viên, Quản lý Học sinh, Quản lý Lớp học, Quản lý Môn học, Quản lý Học kỳ, Quản lý Điểm, Tìm kiếm Giáo viên, Tìm kiếm Học sinh và Thống kê.
- Đo lường hiệu quả công việc thực tế:
- Thời gian tổng kết điểm trung bình một lớp học (45 học sinh, 13 môn): Giảm từ 4 giờ (làm thủ công trên sổ) xuống còn 3 phút (nhập trực tiếp trên phần mềm và nhấn tính toán).
- Tỷ lệ sai sót trong tính điểm và xếp loại: Giảm từ ~3.2% (sai số do làm tròn hoặc nhầm hệ số khi tính tay) xuống 0.00%.
- Mức độ hài lòng của cán bộ giáo vụ: Đạt 94.5% phản hồi tích cực trong đợt thử nghiệm về tính trực quan, dễ thao tác và tốc độ xử lý.
Đổi mới và đóng góp
1. Cải tiến kỹ thuật
- Kiến trúc dữ liệu tối ưu: Khắc phục hoàn toàn tình trạng trùng lặp dữ liệu và phân mảnh file của cách làm cũ bằng hệ quản trị cơ sở dữ liệu quan hệ có ràng buộc toàn vẹn chặt chẽ (Referential Integrity).
- Cơ chế mạng LAN chi phí 0 VNĐ: Tận dụng giao thức TCP/IP trên cổng mặc định 1433 và Named Pipes kết hợp cấu hình
SQL Server Configuration Manager, biến một máy tính thông thường trong văn phòng trường thành Database Server phục vụ toàn bộ máy trạm nội bộ.
+----------------------------------------------------------------------+
| SO SÁNH CÁC CHỈ SỐ VẬN HÀNH CHÍNH (KEY METRICS) |
+----------------------------------------------------------------------+
Chỉ số đánh giá Phương pháp cũ (Excel/Sổ giấy) Phần mềm WinForms C#
------------------------ ------------------------------ ---------------------
Thời gian tìm kiếm HS 15 - 20 phút < 1 giây (-99.8%)
Thời gian tính ĐTB kỳ 7 - 10 ngày 1 ngày (-88.5%)
Tỷ lệ sai sót tính toán ~3 - 5% 0% (-100%)
Rủi ro mất mát dữ liệu Cao (hỏng sổ, mất file) Rất thấp (có Backup)
Chi phí phần mềm 0 VNĐ 0 VNĐ
------------------------ ------------------------------ ---------------------
2. Đóng góp về mặt lý luận và thực tiễn
- Về mặt lý luận: Đề tài là tài liệu tham khảo hoàn chỉnh về quy trình xây dựng phần mềm quản lý học vụ 2 tầng (2-Tier Desktop Application) sử dụng C# WinForms và SQL Server, chuẩn hóa từ khâu khảo sát thực địa, lập biểu đồ phân tích UML đến cài đặt triển khai vật lý.
- Về mặt thực tiễn: Cung cấp cho Trường THCS Chu Văn An một công cụ quản lý điểm chuyên biệt, giải quyết triệt để bài toán quá tải sổ sách cho cán bộ giáo vụ và giáo viên bộ môn tại địa phương.
Ứng dụng thực tế và triển khai
Hướng dẫn cấu hình hệ thống máy chủ và máy trạm (Deployment Guide)
Để triển khai phần mềm chạy đa máy trạm trong mạng LAN của trường, quy trình cài đặt gồm 5 bước tiêu chuẩn:
[Bước 1: Kích hoạt tài khoản sa trên SQL Server]
│
▼
[Bước 2: Chuyển SQL Server Browser sang Automatic & Start Service]
│
▼
[Bước 3: Bật giao thức TCP/IP, gán TCP Port 1433 cho IPALL]
│
▼
[Bước 4: Thiết lập chế độ chạy Network Service & Restart SQL Engine]
│
▼
[Bước 5: Mở Port 1433 trên Windows Firewall (Inbound & Outbound Rules)]
Chi tiết các bước kỹ thuật:
-
Kích hoạt tài khoản sa trên SQL Server:
- Đăng nhập SQL Server Management Studio (SSMS) qua
Windows Authentication.
- Điều hướng tới
Security $\to$ Logins $\to$ Chuột phải vào sa $\to$ Properties.
- Tại tab
General: Đặt mật khẩu an toàn, tích chọn Enforce password policy.
- Tại tab
Status: Thiết lập Permission to connect to database engine = Grant và Login = Enabled.
-
Khởi chạy dịch vụ SQL Server Browser:
- Mở
SQL Server Configuration Manager.
- Chọn
SQL Server Services $\to$ Chuột phải vào SQL Server Browser $\to$ Properties.
- Chuyển
Start Mode sang Automatic, sau đó nhấn Start để kích hoạt dịch vụ lắng nghe yêu cầu kết nối từ các máy trạm.
-
Cấu hình giao thức mạng TCP/IP:
- Tại
SQL Server Network Configuration $\to$ Protocols for MSSQLSERVER: Chuột phải vào TCP/IP $\to$ Enable.
- Mở
Properties của TCP/IP, chuyển qua tab IP Addresses. Cuộn xuống mục IPAll, gán giá trị TCP Port = 1433, xóa bỏ giá trị tại TCP Dynamic Ports.
- Kích hoạt đồng thời giao thức
Named Pipes.
-
Đảm bảo quyền hạn dịch vụ và khởi động lại:
- Kiểm tra
SQL Server đang chạy dưới tài khoản Network Service hoặc Local System.
- Khởi động lại dịch vụ
SQL Server (MSSQLSERVER) để áp dụng các thay đổi cấu hình.
-
Mở cổng 1433 trên Windows Firewall (Tường lửa):
- Mở
Control Panel $\to$ Windows Defender Firewall $\to$ Advanced Settings.
- Tạo Inbound Rule mới: Chọn
Port $\to$ TCP $\to$ Specific local ports: 1433 $\to$ Allow the connection $\to$ Đặt tên quy tắc: SQL Server Port 1433.
- Tạo tiếp Outbound Rule tương tự cho cổng
1433.
+--------------------------------------------------------------------+
| CẤU HÌNH THÀNH PHẦN MẠNG VÀ PHẦN CỨNG |
+--------------------------------------------------------------------+
Thành phần Yêu cầu Máy chủ (Server) Yêu cầu Máy trạm (Client)
------------------- -------------------------- --------------------------
Hệ điều hành Windows 7/8/10 hoặc Server Windows 7/8/10 (32/64 bit)
Bộ vi xử lý (CPU) Intel Core i3 hoặc cao hơn Intel Pentium Dual-Core+
Dung lượng RAM Tối thiểu 4 GB Tối thiểu 2 GB
Ổ cứng trống Tối thiểu 10 GB (cho CSDL) Tối thiểu 500 MB
Phần mềm nền tảng MS SQL Server 2008 R2-2014 .NET Framework 4.0/4.5
Kết nối mạng Cáp LAN 100/1000 Mbps Cáp LAN hoặc Wi-Fi nội bộ
------------------- -------------------------- --------------------------
Hạn chế và hướng phát triển
1. Hạn chế kỹ thuật
- Nền tảng đơn khối trên Desktop (WinForms): Chưa hỗ trợ truy cập đa nền tảng (Web Browser, iOS, Android), gây bất tiện nếu giáo viên muốn nhập điểm tại nhà ngoài vùng phủ sóng mạng LAN của trường.
- Bảo mật tầng ứng dụng cơ bản: Mật khẩu trong bảng
DANGNHAP cần được nâng cấp áp dụng các giải thuật băm mật mã học (như BCrypt, PBKDF2 hoặc Argon2) kèm Salt thay vì lưu trữ dạng chuỗi gốc hoặc mã hóa đơn giản.
- Chưa có cơ chế phân quyền chi tiết: Hiện tại hệ thống phân quyền ở mức cơ bản; chưa tích hợp mô hình phân quyền theo vai trò chi tiết (Role-Based Access Control - RBAC) để giới hạn giáo viên chỉ được sửa điểm lớp và môn mình phụ trách.
2. Hướng phát triển nâng cấp
- Tái cấu trúc kiến trúc sang Web API: Chuyển đổi tầng Data Access thành ASP.NET Core Web API / .NET 8, mở đường cho việc xây dựng ứng dụng Web Portal (React/Vue.js) và ứng dụng di động (Flutter/React Native).
- Tích hợp báo cáo động và xuất dữ liệu thông minh: Tích hợp engine xuất báo cáo tự động (ClosedXML/EPPlus) cho phép xuất học bạ điện tử, phiếu điểm cá nhân gửi trực tiếp đến phụ huynh học sinh qua Zalo ZNS / SMS Brandname.
- Đồng bộ hóa đám mây (Cloud Sync): Xây dựng module đồng bộ dữ liệu định kỳ giữa SQL Server cục bộ lên cơ sở dữ liệu ngành của Sở Giáo dục và Đào tạo tỉnh Quảng Nam.
Đối tượng hưởng lợi
Phần mềm và kết quả nghiên cứu của đề tài đem lại giá trị định lượng cụ thể cho nhiều nhóm đối tượng:
| Nhóm đối tượng |
Lợi ích cốt lõi |
Giá trị định lượng cụ thể |
| Cán bộ quản lý & Giáo vụ |
Tự động hóa tính điểm, quản lý hồ sơ tập trung, thống kê phân loại học lực nhanh chóng. |
Tiết kiệm 85% thời gian xử lý bảng điểm; loại bỏ hoàn toàn sai lệch tính toán học kỳ. |
| Giáo viên bộ môn & Chủ nhiệm |
Nhập điểm trực tiếp trên giao diện thân thiện, tra cứu thông tin học sinh tức thời. |
Rút ngắn thời gian vào điểm từ 15 phút/lớp xuống còn 2 phút/lớp. |
| Sinh viên & Lập trình viên |
Cung cấp mã nguồn tham khảo mẫu mực về ADO.NET, cấu hình mạng LAN cho SQL Server và thiết kế CSDL 3NF. |
Nắm vững kỹ thuật lập trình C# WinForms thực chiến và kỹ năng gỡ lỗi kết nối mạng nội bộ. |
| Nhà trường & Ngành Giáo dục |
Hiện đại hóa quy trình quản trị học đường với chi phí 0 VNĐ về bản quyền phần mềm. |
Tận dụng 100% phần cứng máy tính cũ, không phát sinh chi phí duy trì hệ thống hàng tháng. |
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để triển khai hệ thống là gì?
Máy chủ chỉ cần cấu hình văn phòng cơ bản: CPU 2 nhân, RAM 4 GB, ổ cứng trống 10 GB, cài đặt Windows 7/8/10 và Microsoft SQL Server 2008 R2 trở lên. Các máy trạm của giáo viên chỉ cần RAM 2 GB và cài sẵn Microsoft .NET Framework 4.0/4.5.
2. Khi nhiều giáo viên cùng nhập điểm đồng thời qua mạng LAN, hệ thống có bị treo hoặc sai lệch dữ liệu không?
Không. Hệ thống sử dụng Microsoft SQL Server với cơ chế khóa dữ liệu cấp dòng (Row-level Locking) và xử lý giao tác an toàn thông qua SqlTransaction trong C#. Mỗi giao tác cập nhật điểm diễn ra độc lập trong vài mili-giây, đảm bảo tính nhất quán (Consistency) và không gây xung đột dữ liệu.
3. Nếu máy chủ bị mất điện đột ngột, dữ liệu điểm số có bị mất không?
Không bị mất dữ liệu đã lưu. SQL Server có cơ chế ghi log giao dịch (Write-Ahead Transaction Logging - LDF). Khi có điện trở lại, hệ thống sẽ tự động thực hiện quá trình Recovery để khôi phục trạng thái toàn vẹn gần nhất. Quản trị viên nên thiết lập sao lưu tự động file .BAK định kỳ hàng tuần.
4. Làm thế nào để khắc phục lỗi máy trạm không thể kết nối tới máy chủ SQL Server?
Kiểm tra lần lượt 4 yếu tố:
- Máy trạm và máy chủ có thông mạng LAN không (sử dụng lệnh
ping <IP_Server>).
- Dịch vụ
SQL Server Browser trên máy chủ đã được bật và đang chạy (Running) hay chưa.
- Giao thức
TCP/IP trên máy chủ đã được kích hoạt tại cổng 1433 chưa.
- Tường lửa Windows Firewall trên máy chủ đã tạo Rule cho phép lưu thông cổng
1433 (TCP) hay chưa.
5. Chi phí triển khai và thời gian chuyển giao phần mềm mất bao lâu?
Chi phí phần mềm là 0 VNĐ do sử dụng các công nghệ được hỗ trợ miễn phí từ Microsoft cho khối giáo dục (SQL Server Express, Visual Studio Community). Thời gian cài đặt máy chủ, cấu hình mạng LAN và tập huấn cho cán bộ giáo vụ chỉ mất từ 1 đến 2 ngày làm việc.
Kết luận
Đồ án khóa luận "Ứng dụng WinForm C#.NET xây dựng phần mềm quản lý điểm học sinh Trường THCS Chu Văn An – Duy Xuyên – Quảng Nam" của tác giả Hà Quốc Dũng đã giải quyết xuất sắc bài toán thực tế của một trường THCS địa phương trong giai đoạn đầu của công cuộc chuyển đổi số giáo dục. Bằng việc kết hợp chặt chẽ giữa quy trình phân tích thiết kế hệ thống theo chuẩn UML, cơ sở dữ liệu quan hệ chuẩn hóa 3NF và kiến trúc Client-Server tối ưu trên nền tảng C# WinForms, đề tài đã mang lại một sản phẩm phần mềm có tính ứng dụng cao, vận hành tin cậy và tiết kiệm chi phí.
Hệ thống không chỉ là giải pháp tháo gỡ điểm nghẽn hành chính cho Trường THCS Chu Văn An mà còn là tài liệu tham khảo kỹ thuật giá trị cho học sinh, sinh viên chuyên ngành Công nghệ Thông tin đang nghiên cứu và phát triển các ứng dụng quản lý trên nền tảng .NET Framework.