Mục lục & hướng dẫn
BỘ GIẢI LAB JAVA — HƯỚNG DẪN SỬ DỤNG
Kết quả chạy prompt "giảng giải lab chi tiết" cho toàn bộ 6
đề lab trong
C:\Users\user\Documents\New folder (3).
Cấu trúc
bai-giai-lab/
├─ lab01-GIAI-CHI-TIET.md # môi trường, mảng, nguyên tố, Fibonacci
├─ lab02-GIAI-CHI-TIET.md # PS, ATM, PTB2, NhanVien
├─ lab03-GIAI-CHI-TIET.md # Diem, SinhVien, HCN, Diem toạ độ
├─ lab04-GIAI-CHI-TIET.md # SV, DSSV, Date, sắp xếp, xóa
├─ lab05-GIAI-CHI-TIET.md # abstract, kế thừa, đa hình, bưu phẩm
├─ mang-bo-tro-GIAI-CHI-TIET.md# 10 bài mảng/vòng lặp bổ trợ
├─ bien-dich-va-chay.ps1 # script biên dịch + chạy
└─ src/
├─ lab01/ (7 tệp) ├─ lab02/ (8 tệp)
├─ lab03/ (8 tệp) ├─ lab04/ (3 tệp)
├─ lab05/ (11 tệp) └─ mang/ (10 tệp)
Tổng: 47 tệp .java, tách tự động từ các
khối code trong 6 tài liệu (mỗi khối có dòng
// ===== TenTep.java =====).
Mỗi tài liệu có gì
Mỗi bài đi theo cấu trúc 12 mục:
| Mục | Nội dung | Vì sao quan trọng |
|---|---|---|
| 0–3 | đề, yêu cầu ẩn, input/output, thiết kế + lý do | Dạy phân tích trước khi code |
| 4 | code từng bước (4–8 bước nhỏ) | Không dán cả bài, buộc hiểu từng phần |
| 5–7 | lời giải đầy đủ, lệnh chạy, output mẫu | Có thể đối chiếu khi tự làm |
| 8 | bảng 4–6 ca kiểm thử | Kỹ năng kiểm thử — điểm cộng khi chấm |
| 9 | trace biến của ca khó nhất | Hiểu tại sao ra kết quả |
| 10 | ≥5 lỗi kèm thông báo javac thật |
Sửa lỗi nhanh khi bị kẹt |
| 11–12 | câu hỏi "vì sao" + hướng mở rộng | Ôn thi và làm phần nâng cao |
Cách dùng
- Đọc mục 0–4 của bài, tự viết code trên máy.
- Chạy, so với mục 7. Nếu lệch → xem mục 9 (trace) và mục 10 (lỗi).
- Chỉ mở mục 5 khi đã thử ít nhất 20 phút.
- Làm hết mục 8 (bảng kiểm thử) — nộp kèm bảng này sẽ được đánh giá cao.
Cách biên dịch và chạy
Yêu cầu: đã cài JDK (javac -version chạy được) và đang
đứng trong thư mục bai-giai-lab.
# chạy toàn bộ bằng script
.\bien-dich-va-chay.ps1 -Lab lab02 -Main QuanLyPS
# hoặc làm tay
cd src\lab02
javac *.java
java QuanLyPSNếu PowerShell chặn script:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassBảng tra nhanh: đề → tệp
| Đề | Tài liệu | Tệp nộp |
|---|---|---|
| Lab 01 mục 2.3 | lab01-...md phần A1–A4 |
Chao2, DocSo, HinhTron,
SapXepNgauNhien |
| Lab 01 mục 2.4 | phần A5–A7 | GiaiThua, NguyenToTrongMang,
FibonacciTrongMang |
Lab 02 PS |
lab02-...md Bài 1 |
PS, QuanLyPS |
Lab 02 ATM |
Bài 2 | ATM, QuanLyATM |
| Lab 02 ở nhà | Bài 3, 4 | PTB2 + GiaiPT, NhanVien +
QuanLyNV |
| Lab 03 chính | lab03-...md Phần 1 |
Diem, SinhVien, QuanLySV |
| Lab 03 mở rộng | Phần 2 | SinhVienMoRong, QuanLySV2 |
| Lab 03 ở nhà | Phần 3 | DiemToaDo, HCN,
QuanLyHCN |
| Lab 04 chính | lab04-...md Phần 1–3 |
SV, DSSV, QuanLyDSSV |
| Lab 04 ở nhà | Phần 4 | đã tích hợp trong SV.java, DSSV.java |
| Lab 05 chính | lab05-...md Phần 1–2 |
DiemHP, HPLyThuyet,
HPThucHanh, SinhVien,
QuanLyHP |
| Lab 05 mở rộng | Phần 3 | HPDoAn |
| Lab 05 ở nhà | Phần 4 | BuuPham, Thu, BuuKien,
ThungThu, QuanLyBuuPham |
| Bài mảng bổ trợ | mang-bo-tro-...md |
10 tệp |
Lưu ý về độ chính xác
- Toàn bộ kết quả trong tài liệu đã được tính tay lại (điểm trọng số, phân số, lương, tổng tiền).
- Đã biên dịch và chạy toàn bộ trên JDK 17.0.20.1: 47/47 tệp biên dịch không lỗi, 46/46 ca kiểm thử tự động đạt.
- Hai sai sót đã phát hiện và sửa trong quá trình kiểm chứng:
t = 2*p - p/qvớip = 1/2, q = 5/7bằng 3/10, không phải13/10(vì2p = 1, không phải2).SinhVienMoRongin 7.82, không phải7.83— do sai số biểu diễndouble(7.824999999999999). Giải thích đầy đủ ở mục 7 củalab03.
Kiểm chứng tự động
cd "C:\Users\user\Documents\Default Project\bai-giai-lab"
.\tests\run-tests.ps1 # chạy cả 46 ca
.\tests\run-tests.ps1 -Lab lab02 # chỉ lab 02
.\tests\run-tests.ps1 -Verbose # in cả output thực tếKết quả lần chạy cuối:
Tong: 46 test | PASS 46 | FAIL 0 | SKIP 0
Bộ test kiểm tra: output chứa đúng chuỗi kỳ vọng, không có
Exception, exit code = 0. Nó không kiểm
tra thiết kế lớp — phần đó dùng CHAM-BAI.md (rubric 10
điểm).
JDK
- Đã cài Temurin JDK 17.0.20.1 tại
C:\Users\user\jdk-17.0.20.1. - Đã thêm
...\binvàoPATH(User) và đặtJAVA_HOME(User). - Mở cửa sổ
cmd/PowerShell mới để nhận biến môi trường, rồi kiểm tra:javac -version.
Bản PDF
Thư mục pdf/ chứa 8 tài liệu đã xuất (kèm
.docx để chỉnh sửa). Xuất bằng pandoc (Markdown → HTML) rồi
Microsoft Edge headless (HTML → PDF), khổ A4, có CSS riêng cho code và
bảng.
| Tệp | Số trang |
|---|---|
lab01-GIAI-CHI-TIET.pdf |
26 |
lab02-GIAI-CHI-TIET.pdf |
25 |
lab03-GIAI-CHI-TIET.pdf |
19 |
lab04-GIAI-CHI-TIET.pdf |
22 |
lab05-GIAI-CHI-TIET.pdf |
22 |
mang-bo-tro-GIAI-CHI-TIET.pdf |
12 |
README.pdf |
5 |
CHAM-BAI.pdf |
3 |
Tổng 134 trang. Xuất lại bất cứ lúc nào:
.\xuat-pdf.ps1Bản HTML & Lồng tiếng AI (ZeroTTS)
Thư mục html/ là bản web hiện đại, mở offline bằng trình
duyệt (hỗ trợ Dark Mode, tìm kiếm, sao chép code 1-click):
html/
├─ index.html # trang mục lục & tìm kiếm bài tập (mở file này trước)
├─ README.html
├─ lab01..lab05-GIAI-CHI-TIET.html
├─ mang-bo-tro-GIAI-CHI-TIET.html
├─ CHAM-BAI.html
├─ toan-bo-bai-giai.html # gộp 6 bài giải vào 1 trang (~670 KB)
└─ assets/
├─ style.css # giao diện tối ưu (Dark/Light mode, typography)
├─ app.js # tìm kiếm, sao chép code, audio player, theme
└─ audio/ # 8 tệp thuyết minh âm thanh .wav sinh bởi ZeroTTS
├─ README.wav ├─ lab01.wav .. lab05.wav
├─ mang-bo-tro.wav └─ CHAM-BAI.wav
Tạo và tuỳ biến giọng đọc lồng tiếng (ZeroTTS):
# Xem danh sách giọng đọc tiếng Việt hỗ trợ (Mai Chi, Quang Minh, Tiến Đạt, Gia Huy...)
python tao-long-tieng.py --list-voices
# Tạo lại âm thanh cho một bài cụ thể với giọng khác
python tao-long-tieng.py --lab lab01 --voice quangminh
# Tạo toàn bộ 8 bài
python tao-long-tieng.py --allSau khi tạo audio hoặc cập nhật Markdown, chạy lại script xuất HTML:
.\xuat-html.ps1Ghi chú sư phạm
lab03dùng tênDiemToaDocho bài ở nhà để không trùng lớpDiem(điểm học phần) trong cùng thư mục. Khi nộp, có thể đổi lại thànhDiemvà để trong thư mục riêng.lab04dùng năm cố định 2026 để tính tuổi (ghi rõ giả định). Nếu năm hiện tại khác, sửa một hằng số.lab02quy ước mẫu bằng 0 được đưa về 1 (thay vì ném ngoại lệ) để phù hợp trình độ năm 1.