Hỏi về bài tập lập trình hướng đội tượng trong java

E mới học về lập trình hướng đội tượng. E vừa làm một bài mà không hiểu sai ở đâu nữa ai có thể chỉ e với ạ :grin:
Đề bài: Bài toán quản lý thông tin 3 học sinh tiểu học bao gồm những thông tin sau: Họ tên, lớp, ngày sinh, điểm toán, lý hóa, anh. Người quản lý sẽ quản lý về thông tin các học sinh trên, hiển thị danh sách sinh viên theo điểm tăng dần của điểm trung bình. Ngoài ra khi cần thiết, sẽ tiến hành tìm kiếm theo họ tên hoặc các điểm toán, lý, hóa, anh để hiển thị ra các thông tin học sinh cần tìm.
Viết chương trình giải quyết bài toán trên bằng LTHĐT?
- Đối tượng:

  • Học Sinh
  • Quản Lý
  • Main
  • Trong Main, tiến hành kiểm tra các phương thức:
  • nhập/in thông tin 3 học sinh
    + sắp xếp thông tin học sinh theo điểm TB tăng dần
    + tìm kiếm thông tin học sinh theo họ tên
    + tìm kiếm thông tin học sinh theo điểm toán
    + tìm kiếm thông tin học sinh theo điểm trung bình
    E có 3 class như sau:

Class Sinh Vien

public class SinhVien {
private String hoTen;
private String lop;
private String ngaySinh;
private float diemToan;
private float diemLy;
private float diemHoa;
private float diemAnh;
public SinhVien() {
    
}

public SinhVien(String hoTen, String lop, String ngaySinh, float diemToan,
        float diemLy, float diemHoa, float diemAnh) {
    super();
    this.hoTen = hoTen;
    this.lop = lop;
    this.ngaySinh = ngaySinh;
    this.diemToan = diemToan;
    this.diemLy = diemLy;
    this.diemHoa = diemHoa;
    this.diemAnh = diemAnh;
}

public String getHoTen() {
    return hoTen;
}

public void setHoTen(String hoTen) {
    this.hoTen = hoTen;
}

public String getLop() {
    return lop;
}

public void setLop(String lop) {
    this.lop = lop;
}

public String getNgaySinh() {
    return ngaySinh;
}

public void setNgaySinh(String ngaySinh) {
    this.ngaySinh = ngaySinh;
}

public float getDiemToan() {
    return diemToan;
}

public void setDiemToan(float diemToan) {
    this.diemToan = diemToan;
}

public float getDiemLy() {
    return diemLy;
}

public void setDiemLy(float diemLy) {
    this.diemLy = diemLy;
}

public float getDiemHoa() {
    return diemHoa;
}

public void setDiemHoa(float diemHoa) {
    this.diemHoa = diemHoa;
}

public float getDiemAnh() {
    return diemAnh;
}

public void setDiemAnh(float diemAnh) {
    this.diemAnh = diemAnh;
}

public float getTrungBinh() {
    return (getDiemAnh() + getDiemHoa()
            + getDiemLy() + getDiemToan()) / 4;
}

Class QuanLy

public class QuanLy {
private SinhVien[] sv = new SinhVien[3];;
private Scanner scanner = new Scanner(System.in);;

public QuanLy() {
    
}

public void showSV(SinhVien sv) {
    
    System.out.println(sv.getHoTen() + "\t" + sv.getLop()
            + "\t" + sv.getNgaySinh());

}

public void diemTB() {
    for (int i = 0; i<sv.length;){
        if (sv[i].getTrungBinh()<sv[i+1].getTrungBinh()){
            showSV(sv[i]);
            if (sv[i+1].getTrungBinh()<sv[i+2].getTrungBinh()){
                showSV(sv[i+1]);
                showSV(sv[i+2]);
            }else {
                showSV(sv[i+2]);
                showSV(sv[i+1]);
            }
        }else {
            showSV(sv[i+1]);
            if (sv[i].getTrungBinh()<sv[i+2].getTrungBinh()){
                showSV(sv[i]);
                showSV(sv[i+2]);
            }else {
                showSV(sv[i+2]);
                showSV(sv[i]);
            }
        }
    }
    
}
public void searchName(){
    System.out.println("Tim kiem theo ho ten: " );
    String str = scanner.nextLine();
    for (int i = 1; i <= sv.length; i++) {
        if (str.equals(sv[i].getHoTen())){
            showSV(sv[i]);
        }
    }
    
}
public void searchScore(){
    System.out.println("Tim kiem theo diem toan: " );
    scanner = new Scanner(System.in);
    String index = scanner.nextLine();
    for (int i = 0; i < sv.length; i++) {
        if (index.equals(sv[i].getDiemToan())){
            showSV(sv[i]);
        }
    }
}
public void searchAverage(){
    System.out.println("Tim kiem theo diem toan: " );
    scanner = new Scanner(System.in);
    String index = scanner.nextLine();
    
    for (int i = 0; i < sv.length; i++) {
        if (index.equals(sv[i].getTrungBinh())){
            showSV(sv[i]);
        }
    }
}

}

Class Main

public class Main {

public static void main(String[] args) {
    
    SinhVien sv1 = new SinhVien();
    SinhVien sv2 = new SinhVien();
    SinhVien sv3 = new SinhVien();
    sv1.setHoTen("Nguyen van a");
    sv1.setLop("10a");
    sv1.setNgaySinh("22");
    sv1.setDiemToan(10);
    sv1.setDiemHoa(10);
    sv1.setDiemLy(10);
    sv1.setDiemAnh(10);
    sv2.setHoTen("Nguyen van b");
    sv2.setLop("10b");
    sv2.setNgaySinh("21");
    sv2.setDiemToan(9);
    sv2.setDiemHoa(9);
    sv2.setDiemLy(9);
    sv2.setDiemAnh(9);
    sv3.setHoTen("Nguyen van c");
    sv3.setLop("10c");
    sv3.setNgaySinh("23");
    sv3.setDiemToan(8);
    sv3.setDiemHoa(8);
    sv3.setDiemLy(8);
    sv3.setDiemAnh(8);
    QuanLy quanLy = new QuanLy();
    System.out.println("Ho ten" + "\t" + "Lop" + "\t" + "Ngay Sinh");
    quanLy.diemTB();
    quanLy.searchName();
}

}

trong hàm main đâu có thấy 3 object sinh viên và object Quản lý liên quan đến nhau đâu ?
Thấy tách biệt.
Em gọi hàm diemTB và searchName thì đâu có data đâu mà ra được.

2 Likes

Là sao hả a. e mới học chưa hiểu lắm. E tưởng gọi class sinhvien trong class quanly là liên quan tới nhau rồi chứ ạ

anh cũng không biết viết sao cho em hiểu nữa. Để anh nhờ người khác giúp vậy.
Mà em đang coi tài liệu ở đâu vậy.
Tài liệu tham khảo


2 Likes

Em chưa add sinhvien vào quanly,
Trong lass quanly em cũng cần set cho List sinh viên nữa.

private SinhVien[] sv = new SinhVien[3]; -->// not  implement set get method
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?