# PHẦN MỀM QUẢN LÝ HỌC SINH
## Quản lý trường phổ thông trọn gói — PHP & MySQL
> Điểm danh, sổ điểm, thời khoá biểu, cổng thông tin phụ huynh.
> Cài đặt trong 3 phút trên XAMPP, không cần Composer, không cần cấu hình phức tạp.
## 1. GIỚI THIỆU
Phần mềm Quản Lý Học Sinh là giải pháp web hoàn chỉnh giúp nhà trường số hoá toàn bộ
công tác quản lý học vụ: từ khai báo lớp học, hồ sơ học sinh, điểm danh hằng ngày,
nhập điểm, xếp thời khoá biểu cho đến báo cáo thống kê và cổng thông tin cho phụ huynh.
Sản phẩm được viết bằng **PHP thuần và MySQL**, không phụ thuộc framework hay thư viện
cài đặt qua Composer. Toàn bộ mã nguồn nằm gọn trong một thư mục, chép vào `htdocs`
của XAMPP là chạy được. Điều này giúp:
- **Giáo viên tin học của trường tự bảo trì được** — không cần biết Laravel, Node.js hay Docker
- **Chạy được trên máy cấu hình thấp** — một máy tính văn phòng thông thường là đủ
- **Không phụ thuộc Internet** khi vận hành hằng ngày
- **Dễ tuỳ biến** — mã nguồn có chú thích tiếng Việt đầy đủ, đặt tên biến bằng tiếng Việt không dấu
**Quy mô sản phẩm:** 16 module chức năng · 48 file PHP · 13 bảng cơ sở dữ liệu.
## 2. DÀNH CHO AI
| Đối tượng | Lợi ích |
|---|---|
| **Trường THCS, THPT, tiểu học** | Thay sổ giấy và file Excel rời rạc bằng một hệ thống tập trung |
| **Trung tâm gia sư, luyện thi** | Quản lý lớp, điểm danh, báo kết quả cho phụ huynh |
| **Giáo viên tin học nhà trường** | Mã nguồn rõ ràng, dễ sửa theo đặc thù trường mình |
| **Sinh viên CNTT** | Đồ án tốt nghiệp / bài tập lớn có đầy đủ tài liệu phân tích thiết kế |
| **Lập trình viên freelance** | Nền tảng sẵn để nhận dự án cho trường học, rút ngắn thời gian phát triển |
## 3. BA VAI TRÒ NGƯỜI DÙNG
Phần mềm phân quyền theo ba vai trò, **kiểm soát ở phía máy chủ** chứ không chỉ ẩn menu.
Nghĩa là giáo viên hay phụ huynh dù có gõ thẳng địa chỉ trang cũng không truy cập được
dữ liệu ngoài phạm vi của mình.
### Quản trị viên
Toàn quyền trên mọi dữ liệu: khai báo danh mục, quản lý học sinh toàn trường,
cấp tài khoản, tuỳ chỉnh cấu hình, sao lưu dữ liệu, xem nhật ký thao tác.
### Giáo viên chủ nhiệm
Chỉ thao tác trên lớp mình phụ trách: xem danh sách học sinh, điểm danh, nhập điểm,
xếp thời khoá biểu, xem thống kê lớp. Không thấy dữ liệu lớp khác, không vào được
phần quản trị hệ thống.
### Phụ huynh
Chỉ **xem** (không sửa) thông tin con em mình: bảng điểm, tình hình chuyên cần,
thời khoá biểu. Không thể xem thông tin học sinh khác.
## 4. TÍNH NĂNG CHI TIẾT
### 4.1. Quản lý danh mục
**Học kỳ** — khai báo học kỳ theo năm học với ngày bắt đầu và kết thúc.
Trạng thái (Chưa bắt đầu / Đang diễn ra / Đã kết thúc) được hệ thống tự xác định
theo ngày hiện tại, không cần cập nhật thủ công.
**Lớp học** — mã lớp, tên lớp, khối, giáo viên chủ nhiệm, sĩ số tối đa, phòng học.
Bảng danh sách hiển thị sĩ số hiện tại kèm thanh tiến trình mức lấp đầy so với sĩ số tối đa.
**Môn học** — 14 môn phổ thông có sẵn, phân loại bắt buộc / tự chọn, có hệ số riêng.
Thêm bớt tuỳ ý theo chương trình của trường.
### 4.2. Hồ sơ học sinh và phụ huynh
**Học sinh** — quản lý đầy đủ: mã, họ tên, giới tính, ngày sinh, dân tộc, tôn giáo,
địa chỉ, số điện thoại, email, lớp, trạng thái (đang học / nghỉ học / chuyển trường).
Tìm kiếm và lọc theo lớp, theo trạng thái.
**Trang hồ sơ chi tiết** với 4 thẻ:
- *Tổng quan* — thông tin cá nhân, thông tin lớp, biểu đồ phân bố xếp loại theo môn
- *Bảng điểm* — biểu đồ cột điểm các môn và bảng chi tiết từng cột điểm
- *Điểm danh* — tỷ lệ chuyên cần, hạnh kiểm suy ra tự động, lịch sử điểm danh
- *Phụ huynh* — danh sách phụ huynh liên kết kèm thông tin liên hệ
Header hồ sơ hiển thị nổi bật 4 chỉ số: điểm trung bình chung, xếp loại học lực,
hạnh kiểm và **thứ hạng trong toàn trường**.
**Phụ huynh** — một phụ huynh liên kết được với nhiều con đang học trong trường,
mỗi học sinh có thể có bố, mẹ hoặc người giám hộ.
### 4.3. Điểm danh
Chọn ngày và lớp, hệ thống tải danh sách học sinh đang học. Mỗi em có 4 nút trạng thái:
**Có mặt / Vắng / Đi muộn / Có phép**. Mặc định tất cả là có mặt, giáo viên chỉ cần
sửa những em vắng rồi bấm lưu một lần cho cả lớp.
Điểm danh lại cùng ngày cùng lớp sẽ ghi đè kết quả cũ, không tạo bản ghi trùng lặp.
Thẻ tổng hợp hiển thị số lượng theo từng trạng thái ngay khi thao tác.
### 4.4. Sổ điểm
Nhập 5 cột điểm theo chuẩn: **Miệng, 15 phút, 1 tiết, Giữa kỳ, Cuối kỳ** cho từng
học sinh — môn học — học kỳ.
Hệ thống **tự tính** điểm trung bình môn theo công thức trọng số, tự xếp loại
(Giỏi / Khá / Trung bình / Yếu), tự tính điểm trung bình chung và thứ hạng.
Người dùng không phải nhập tay bất kỳ giá trị tính toán nào.
Công thức mặc định: `(Miệng×1 + 15'×1 + 1Tiết×2 + GK×2 + CK×3) / 9`
Ngưỡng xếp loại mặc định: Giỏi ≥ 8.0 · Khá ≥ 6.5 · Trung bình ≥ 5.0
Cả **công thức lẫn ngưỡng đều chỉnh được** trong phần Cấu hình. Vì điểm trung bình
được tính khi truy vấn chứ không lưu cứng, thay đổi cấu hình sẽ áp dụng ngay cho
toàn bộ báo cáo cũ lẫn mới.
### 4.5. Thời khoá biểu theo tiết
Giao diện lưới **thứ × tiết** trực quan, tách riêng buổi sáng và buổi chiều,
mỗi buổi 5 tiết, 6 ngày từ Thứ Hai đến Thứ Bảy. Bấm ô trống để xếp tiết,
bấm tiết đã có để sửa hoặc xoá. Mỗi môn có màu riêng cố định giúp nhìn nhanh.
**Cảnh báo trùng lịch giáo viên** — khi xếp một giáo viên vào tiết mà họ đã có giờ
ở lớp khác cùng thời điểm, hệ thống từ chối lưu và nêu rõ trùng với lớp nào, môn gì.
Trường hợp đặc biệt (lớp ghép) vẫn xếp được bằng cách tích ô xác nhận.
**Sao chép thời khoá biểu** giữa các lớp cùng khối giúp rút ngắn thời gian xếp lịch.
### 4.6. Nhập liệu hàng loạt từ Excel
Hai chức năng nhập hàng loạt: **danh sách học sinh** và **bảng điểm**.
Quy trình 2 bước an toàn: tải file CSV lên → hệ thống hiện **bảng xem trước kèm
kiểm tra từng dòng** → người dùng xem rồi mới xác nhận ghi vào cơ sở dữ liệu.
Các lỗi được phát hiện và báo cụ thể theo từng dòng:
- Thiếu dữ liệu bắt buộc
- Mã học sinh trùng hoặc không tồn tại
- Môn học không tồn tại
- Ngày sinh sai định dạng
- Điểm không phải số hoặc nằm ngoài thang 0–10
- Dòng trùng lặp trong chính file nhập
- Học sinh nằm ngoài phạm vi quyền của người nhập
Chỉ những dòng hợp lệ mới được ghi, dòng lỗi bị bỏ qua và báo rõ lý do.
Toàn bộ chạy trong transaction — nếu có sự cố giữa chừng, dữ liệu được khôi phục nguyên vẹn.
Có sẵn nút **tải file mẫu** đúng định dạng để người dùng điền.
### 4.7. Báo cáo và thống kê
**Bảng điều khiển** — 6 thẻ số liệu nhanh, biểu đồ điểm danh 7 ngày gần nhất,
biểu đồ tròn phân bố xếp loại học lực, bảng sĩ số từng lớp kèm tỷ lệ lấp đầy.
**Trang thống kê** với bộ lọc theo khoảng thời gian, lớp và học kỳ,
kèm phím tắt nhanh (Hôm nay / Tuần này / Tháng này):
- Biểu đồ cột chồng điểm danh theo lớp
- Biểu đồ radar điểm trung bình theo môn
- Bảng **Top 10 học sinh giỏi** có huy chương cho 3 hạng đầu
- Bảng **Top 10 học sinh vắng nhiều nhất**
- Bảng chi tiết điểm theo môn: số lượng Giỏi/Khá/TB/Yếu, điểm trung bình, tổng bản ghi
**Lịch học** — lịch tháng tổng hợp tình hình chuyên cần từng ngày.
**Xuất dữ liệu** — nút Xuất Excel trên các trang danh sách, file giữ nguyên bộ lọc
đang áp dụng và phạm vi quyền của người xuất. File CSV có BOM UTF-8 nên Excel
trên Windows mở đúng tiếng Việt.
**In hồ sơ** — chế độ in được tối ưu riêng: ẩn menu và nút bấm, bảng chuyển sang
đen trắng tiết kiệm mực, lặp lại tiêu đề bảng qua các trang. Chọn máy in
"Microsoft Print to PDF" để lưu thành file PDF.
### 4.8. Cổng thông tin phụ huynh
Phụ huynh đăng nhập bằng tài khoản nhà trường cấp, vào thẳng cổng riêng
với giao diện đơn giản, chỉ đọc.
**Trang tổng quan** — mỗi con một thẻ, hiển thị điểm trung bình, tỷ lệ chuyên cần
và số buổi vắng.
**Trang chi tiết từng con** gồm 3 thẻ:
- *Bảng điểm* — biểu đồ cột điểm các môn, bảng chi tiết, điểm trung bình chung
- *Chuyên cần* — số buổi có mặt / vắng / đi muộn / có phép, lịch sử 30 buổi gần nhất
- *Thời khoá biểu* — lịch học theo tiết của lớp con đang học
Phụ huynh in được trang này để lưu hoặc gửi người thân.
### 4.9. Quản trị hệ thống
**Quản lý người dùng** — tạo tài khoản cho giáo viên và phụ huynh, gán vai trò,
liên kết với giáo viên chủ nhiệm hoặc phụ huynh tương ứng, đặt lại mật khẩu khi quên.
Có ràng buộc an toàn: không xoá được tài khoản đang đăng nhập, không xoá được
quản trị viên cuối cùng.
**Cấu hình phần mềm** — 15 tham số chỉnh qua giao diện, không phải sửa code:
tên trường, tên phần mềm, năm học, ngưỡng xếp loại, trọng số từng cột điểm,
số dòng mỗi trang, sĩ số mặc định, thời gian tự đăng xuất.
**Sao lưu và phục hồi** — tạo file sao lưu `.sql` bằng một nút bấm, tải về máy,
phục hồi khi cần. Chức năng viết bằng PHP thuần nên không phụ thuộc `mysqldump`,
chạy được trên mọi cài đặt XAMPP. Khi phục hồi, hệ thống tự sao lưu hiện trạng
trước khi ghi đè và bắt gõ chuỗi xác nhận để tránh thao tác nhầm.
**Nhật ký thao tác** — ghi lại ai đã thêm/sửa/xoá dữ liệu gì, vào lúc nào, từ địa chỉ IP nào.
Có bộ lọc theo người dùng, loại hành động và khoảng thời gian. Hữu ích khi cần truy vết
một thay đổi sai hoặc làm rõ trách nhiệm.
### 4.10. Giao diện
- **Chế độ sáng / tối** — chuyển bằng một nút trên thanh công cụ, ghi nhớ lựa chọn
- **Dùng được trên điện thoại** — menu trượt ra khi bấm, các thẻ tự xếp lại theo màn hình
- **Thu gọn menu** — mở rộng vùng làm việc khi cần
- **Thông báo tự động** — nhắc lớp chưa điểm danh hôm nay, học sinh vắng nhiều bất thường,
học kỳ sắp kết thúc
- **Đồng hồ hệ thống** hiển thị thứ, ngày, giờ theo thời gian thực
## 5. BẢO MẬT
| Biện pháp | Mô tả |
|---|---|
| Mã hoá mật khẩu | Thuật toán bcrypt, không lưu mật khẩu dạng đọc được |
| Chống SQL Injection | Toàn bộ truy vấn dùng prepared statements |
| Chống CSRF | Mọi thao tác ghi dữ liệu đều có token bí mật theo phiên |
| Chống session fixation | Đổi mã phiên ngay sau khi đăng nhập thành công |
| Mật khẩu mặc định | Bắt buộc đổi ở lần đăng nhập đầu, không cho dùng lại mật khẩu mặc định |
| Tự đăng xuất | Sau thời gian không thao tác (mặc định 30 phút, chỉnh được) |
| Phân quyền | Kiểm soát ở phía máy chủ, gõ thẳng địa chỉ cũng không lách được |
| Bảo vệ file sao lưu | Thư mục sao lưu chặn truy cập trực tiếp qua trình duyệt |
## 6. YÊU CẦU HỆ THỐNG
| Thành phần | Yêu cầu |
|---|---|
| Hệ điều hành | Windows 7 trở lên (hoặc Linux có LAMP) |
| PHP | 8.0 trở lên, bật `pdo_mysql` và `mbstring` |
| Cơ sở dữ liệu | MySQL 5.7+ hoặc MariaDB 10.3+ |
| Trình duyệt | Chrome, Edge, Firefox, Cốc Cốc bản mới |
| Dung lượng | Khoảng 5 MB mã nguồn, dữ liệu tuỳ quy mô trường |
**XAMPP bản mới đã có sẵn tất cả**, không cần cài thêm gì.
> Lần đầu mở phần mềm cần Internet để tải giao diện (Bootstrap và thư viện biểu đồ).
> Nếu máy hoàn toàn không có mạng, xem mục 9 để chuyển sang dùng offline.
Tài khoản demo: demo; mật khẩu: demo123
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
HƯỚNG DẪN CÀI ĐẶT
HƯỚNG DẪN CÀI ĐẶT
Bước 1 — Cài XAMPP
Tải XAMPP tại `https://www.apachefriends.org` và cài đặt theo mặc định.
Chọn bản có **PHP 8.0 trở lên**.
Sau khi cài xong, XAMPP thường nằm ở `C:\xampp`
Bước 2 — Chép mã nguồn
Giải nén file zip sản phẩm, chép thư mục `quan-ly-hoc-sinh` vào `C:\xampp\htdocs\`
Sau khi chép đúng, bạn phải có đường dẫn:
C:\xampp\htdocs\quan-ly-hoc-sinh\install\index.php
> Bạn có thể đổi tên thư mục `quan-ly-hoc-sinh` thành tên khác tuỳ ý
> (ví dụ `qlhs` hoặc `truong-abc`), phần mềm tự nhận đường dẫn.
Bước 3 — Khởi động Apache và MySQL
Mở **XAMPP Control Panel**, bấm nút **Start** ở hai dòng:
- **Apache**
- **MySQL**
Chờ đến khi tên hai dịch vụ này chuyển sang **nền màu xanh lá**.
Bước 4 — Chạy trình cài đặt
Mở trình duyệt, truy cập:
http://localhost/quan-ly-hoc-sinh/install/
Trình cài đặt sẽ dẫn bạn qua 4 bước:
**4.1. Kiểm tra môi trường**
Hệ thống tự kiểm tra 6 điều kiện: phiên bản PHP, các extension cần thiết,
quyền ghi thư mục, sự tồn tại của file cấu trúc cơ sở dữ liệu.
Tất cả phải hiện dấu **✓ màu xanh** mới bấm được nút tiếp tục.
**4.2. Kết nối cơ sở dữ liệu**
Điền thông tin MySQL. Với XAMPP mặc định:
- Máy chủ: `localhost`
- Tên cơ sở dữ liệu: `quan_ly_hoc_sinh` (hoặc tên bạn muốn)
- Tên đăng nhập: `root`
- Mật khẩu: *để trống*
Nếu cơ sở dữ liệu chưa tồn tại, hệ thống tự tạo.
**4.3. Tạo bảng dữ liệu**
Bấm nút, hệ thống tạo toàn bộ 13 bảng.
> ⚠️ Nếu cơ sở dữ liệu bạn chọn đã có dữ liệu, bước này sẽ **xoá sạch** dữ liệu cũ.
> Chỉ chạy trình cài đặt khi triển khai lần đầu.
**4.4. Tạo tài khoản quản trị**
Điền tên trường và tạo tài khoản quản trị của riêng bạn.
Tài khoản mẫu `admin` sẽ được xoá tự động.
Đặt mật khẩu mạnh, tối thiểu 6 ký tự. Hệ thống không cho dùng các mật khẩu
phổ biến như `123456` hay `password`.
### Bước 5 — Xoá thư mục cài đặt
Sau khi thấy màn hình **"Cài đặt hoàn tất"**, hãy **xoá thư mục `install/`** trên máy chủ:
C:\xampp\htdocs\quan-ly-hoc-sinh\install\
Đây là bước bảo mật quan trọng, tránh người khác chạy lại trình cài đặt và xoá dữ liệu.
### Bước 6 — Đăng nhập và sử dụng
http://localhost/quan-ly-hoc-sinh/
Từ những lần sau, chỉ cần bật Apache + MySQL trong XAMPP rồi vào địa chỉ trên.
## 8. XEM THỬ VỚI DỮ LIỆU MẪU
Muốn xem giao diện có dữ liệu trước khi nhập liệu thật, mở **Command Prompt** và chạy:
C:\xampp\php\php.exe C:\xampp\htdocs\quan-ly-hoc-sinh\database\seed.php
Lệnh này tạo bộ dữ liệu minh hoạ đầy đủ:
12 lớp · 60 học sinh · 96 phụ huynh · 830 bản ghi điểm · hơn 1.000 lượt điểm danh ·
317 tiết thời khoá biểu · tài khoản giáo viên và phụ huynh mẫu.
> ⚠️ Lệnh này **xoá sạch dữ liệu nghiệp vụ hiện có** rồi sinh lại từ đầu.
> Chỉ dùng khi mới cài để xem thử, tuyệt đối không chạy khi đã có dữ liệu thật.
Tài khoản mẫu sau khi chạy lệnh:
- Giáo viên: `gv1` đến `gv12`, mật khẩu `gv123`
- Phụ huynh: `ph1` đến `ph5`, mật khẩu `ph123`
Các tài khoản này bị bắt đổi mật khẩu ngay ở lần đăng nhập đầu tiên.
## 9. CÁC TÌNH HUỐNG THƯỜNG GẶP
### Apache không khởi động được
Cổng 80 đang bị chương trình khác chiếm, thường là Skype hoặc IIS.
Trong XAMPP bấm **Config → httpd.conf**, tìm dòng `Listen 80` đổi thành `Listen 8080`,
lưu lại và khởi động lại Apache. Sau đó truy cập bằng địa chỉ:
http://localhost:8080/quan-ly-hoc-sinh/
Trang trắng hoặc báo lỗi kết nối cơ sở dữ liệu
MySQL chưa được bật trong XAMPP, hoặc thông tin kết nối trong
`config/database.php` không đúng.
### Chữ tiếng Việt bị lỗi phông
Xảy ra khi import cơ sở dữ liệu thủ công không đúng bảng mã.
Hãy dùng trình cài đặt thay vì import tay, hoặc import kèm tham số
`--default-character-set=utf8mb4`
### Giao diện hiển thị sai sau khi cập nhật
Nhấn **Ctrl + F5** để tải lại và bỏ qua bộ nhớ đệm trình duyệt.
### Dùng chung cho nhiều máy trong trường
Cài phần mềm trên một máy làm máy chủ. Các máy khác trong cùng mạng LAN
truy cập theo địa chỉ IP của máy chủ, ví dụ:
http://192.168.1.10/quan-ly-hoc-sinh/
Cần mở cổng 80 trong tường lửa Windows của máy chủ.
Xem địa chỉ IP bằng lệnh `ipconfig` trong Command Prompt.
### Dùng hoàn toàn offline, không cần Internet
Tải sẵn thư viện Bootstrap 5.3, Bootstrap Icons và Chart.js về thư mục `assets/`,
sau đó sửa các đường dẫn CDN trong hai file `includes/header.php`
và `includes/footer.php` trỏ về file cục bộ.
### Quên mật khẩu quản trị
Nhờ một quản trị viên khác đặt lại trong `Hệ thống → Người dùng`.
Nếu chỉ có một tài khoản quản trị duy nhất, cần đặt lại trực tiếp
trong cơ sở dữ liệu qua phpMyAdmin.
## 10. BỘ SẢN PHẨM BAO GỒM
| Thành phần | Nội dung |
|---|---|
| **Mã nguồn đầy đủ** | 48 file PHP, có chú thích tiếng Việt chi tiết |
| **Trình cài đặt tự động** | Wizard 4 bước, kiểm tra môi trường, tự tạo cơ sở dữ liệu |
| **Cấu trúc cơ sở dữ liệu** | File `schema.sql` sạch, 13 bảng |
| **Dữ liệu demo** | Script sinh 60 học sinh và toàn bộ dữ liệu liên quan |
| **Tài liệu hướng dẫn sử dụng** | Dành cho giáo vụ, giáo viên, ban giám hiệu |
| **Tài liệu phân tích thiết kế** | Sơ đồ CSDL, kiến trúc, quy tắc nghiệp vụ — dùng được cho đồ án |
## 11. NHỮNG GÌ PHIÊN BẢN NÀY CHƯA CÓ
Để quý khách nắm rõ trước khi mua, xin nêu thẳng các chức năng **chưa có** trong bản này:
- Gửi tin nhắn SMS hoặc email tự động cho phụ huynh
- Xếp thời khoá biểu tự động bằng thuật toán (hiện xếp thủ công, có cảnh báo trùng lịch)
- Phân quyền giáo viên theo môn giảng dạy (hiện phân theo lớp chủ nhiệm)
- Sinh file PDF phía máy chủ (hiện in qua trình duyệt, chọn "Microsoft Print to PDF")
- Sao lưu tự động theo lịch (hiện sao lưu thủ công bằng một nút bấm)
- Quản lý học phí, thu chi
- Ứng dụng di động riêng (giao diện web đã dùng tốt trên điện thoại)
## 12. HỖ TRỢ
Quý khách gặp khó khăn trong quá trình cài đặt hoặc sử dụng,
vui lòng liên hệ trực tiếp với người bán để được hướng dẫn.
Nguồn: Topcode.vn