Tạo bởi Trần Văn Điêp|
Java Advanced

[Video] Chương trình quản lý sinh viên bằng HashMap - Java Advanced

Viết chương trình quản lý sinh viên sử dụng HashMap trong Java (Java Advanced). Cụ thể:

  1. Tạo lớp Student với các thuộc tính: rollNo, name, sex, age, email, address. Cần có constructor không đối sốconstructor đầy đủ tham số.

  2. Tạo một HashMap<String, Student> để quản lý danh sách sinh viên, dùng rollNo làm key.

  3. Xây dựng menu chương trình với các chức năng:

    • Nhập N sinh viên

    • In thông tin tất cả sinh viên

    • Tìm kiếm sinh viên theo rollNo và hiển thị thông tin nếu có


Nội dung giải thích & code mẫu

1. Lớp Student – định nghĩa đối tượng sinh viên

public class Student { private String rollNo; private String name; private String sex; private int age; private String email; private String address; // Constructor không đối số public Student() { } // Constructor đầy đủ tham số public Student(String rollNo, String name, String sex, int age, String email, String address) { this.rollNo = rollNo; this.name = name; this.sex = sex; this.age = age; this.email = email; this.address = address; } // Getter / Setter public String getRollNo() { return rollNo; } public void setRollNo(String rollNo) { this.rollNo = rollNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } // Phương thức nhập từ console public void input() { Scanner scanner = new Scanner(System.in); System.out.print("Nhập rollNo: "); this.rollNo = scanner.nextLine(); System.out.print("Nhập tên: "); this.name = scanner.nextLine(); System.out.print("Nhập giới tính: "); this.sex = scanner.nextLine(); System.out.print("Nhập tuổi: "); this.age = Integer.parseInt(scanner.nextLine()); System.out.print("Nhập email: "); this.email = scanner.nextLine(); System.out.print("Nhập địa chỉ: "); this.address = scanner.nextLine(); } // Phương thức hiển thị thông tin student public void display() { System.out.println("RollNo: " + rollNo + ", Name: " + name + ", Sex: " + sex + ", Age: " + age + ", Email: " + email + ", Address: " + address); } @Override public String toString() { return "Student{" + "rollNo='" + rollNo + '\'' + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + ", email='" + email + '\'' + ", address='" + address + '\'' + '}'; } }

Giải thích chi tiết:

  • Constructor không tham số để khởi tạo đối tượng rồi gán sau khi nhập thông tin.

  • Constructor đầy đủ để khởi tạo nhanh nếu có sẵn dữ liệu.

  • input() dùng Scanner để người dùng nhập từ console.

  • display() để in thông tin ra màn hình.

  • toString() để dễ in hoặc debug.


2. Sử dụng HashMap<String, Student> để quản lý sinh viên

Bạn sử dụng HashMap theo cú pháp:

Map<String, Student> studentMap = new HashMap<>();

Ở đây:

  • Key là rollNo (String) – đảm bảo mỗi sinh viên có mã số duy nhất.

  • Value là đối tượng Student chứa các thông tin chi tiết.

Ưu điểm dùng HashMap:

  • Truy xuất (lookup) theo rollNo rất nhanh (O(1) trung bình).

  • Dễ thêm, sửa, xóa sinh viên.

  • Không cần duyệt toàn bộ để tìm, nếu biết rollNo.


3. Xây dựng menu chương trình

Phần menu giúp người dùng thao tác dễ dàng với chương trình quản lý sinh viên. Dưới đây là code mẫu cho Main:

import java.util.*; public class Main { public static void main(String[] args) { Map<String, Student> studentMap = new HashMap<>(); Scanner scanner = new Scanner(System.in); int choice; do { showMenu(); System.out.print("Chọn: "); choice = Integer.parseInt(scanner.nextLine()); switch (choice) { case 1: System.out.print("Nhập số lượng sinh viên N: "); int N = Integer.parseInt(scanner.nextLine()); for (int i = 0; i < N; i++) { Student s = new Student(); s.input(); studentMap.put(s.getRollNo(), s); } break; case 2: System.out.println("=== Danh sách sinh viên ==="); for (Student s : studentMap.values()) { s.display(); } break; case 3: System.out.print("Nhập RollNo cần tìm: "); String key = scanner.nextLine(); Student found = studentMap.get(key); if (found != null) { found.display(); } else { System.out.println("Không tìm thấy sinh viên với RollNo: " + key); } break; case 4: System.out.println("Thoát chương trình."); break; default: System.out.println("Lựa chọn không hợp lệ, hãy chọn lại."); } } while (choice != 4); scanner.close(); } private static void showMenu() { System.out.println("=== Quản lý sinh viên ==="); System.out.println("1. Nhập N sinh viên"); System.out.println("2. In thông tin sinh viên"); System.out.println("3. Tìm kiếm sinh viên theo RollNo"); System.out.println("4. Thoát"); } }

Giải thích phần menu:

  • case 1: Nhập N sinh viên, gọi input() từng đối tượng và lưu vào studentMap với rollNo làm key.

  • case 2: Duyệt studentMap.values() để in ra thông tin tất cả sinh viên.

  • case 3: Dùng studentMap.get(key) để tìm nhanh sinh viên theo mã (rollNo).

  • case 4: Thoát chương trình.

  • Xử lý default: nếu người dùng nhập sai chức năng, nhắc chọn lại.

Phản hồi từ học viên

5

Tổng 0 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó