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

  1. Đọc mục 0–4 của bài, tự viết code trên máy.
  2. Chạy, so với mục 7. Nếu lệch → xem mục 9 (trace) và mục 10 (lỗi).
  3. Chỉ mở mục 5 khi đã thử ít nhất 20 phút.
  4. 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 QuanLyPS

Nếu PowerShell chặn script:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Bả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

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

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.ps1

Bả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 --all

Sau khi tạo audio hoặc cập nhật Markdown, chạy lại script xuất HTML:

.\xuat-html.ps1

Ghi chú sư phạm

🎧
Lồng tiếng tóm tắt bài giảng (ZeroTTS AI)
Đang đọc: Mai Chi (Nữ) · Thời lượng ~1–2 phút
ZeroTTS AI
00:00
--:--
📝 Lời thuyết minh (Tự động tô sáng câu đang đọc • Bấm vào câu để tua tới):
Đang nạp dữ liệu lời đọc...