Java: Chữa bài tập 1 phần thừa kế

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Lớp Person:

package chuabaitap.baitap1_thuake;

import java.util.Scanner;

public class Person {
  String ten;
  byte gioiTinh;
  String ngaySinh;
  String diaChi;

  public Person() {
  }

  public Person(String ten, byte gioiTinh, String ngaySinh, String diaChi) {
    this.ten = ten;
    this.gioiTinh = gioiTinh;
    this.ngaySinh = ngaySinh;
    this.diaChi = diaChi;
  }

  public String getTen() {
    return ten;
  }

  public byte getGioiTinh() {
    return gioiTinh;
  }

  public String getNgaySinh() {
    return ngaySinh;
  }

  public String getDiaChi() {
    return diaChi;
  }

  public void setTen(String ten) {
    this.ten = ten;
  }

  public void setGioiTinh(byte gioiTinh) {
    this.gioiTinh = gioiTinh;
  }

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

  public void setDiaChi(String diaChi) {
    this.diaChi = diaChi;
  }

  void inputInfo(){
    Scanner input=new Scanner(System.in);
    do{
      System.out.print("Input name: ");
      ten=input.nextLine();
    }while (ten.length()<1);
    //Nhp gii tính: 0: N, 1: Nam, 2: Khác
    do{
      System.out.print("Input gender: ");
      gioiTinh=input.nextByte();
    }while (!(0<=gioiTinh && gioiTinh<=2));
    input.nextLine();
    do{
      System.out.print("Input DOB: ");
      ngaySinh=input.nextLine();
    }while (ngaySinh.length()<8);
    do{
      System.out.print("Input address: ");
      diaChi=input.nextLine();
    }while (diaChi.length()<6);
  }

  void showInfo(){
    System.out.println("Name: "+ten);
    System.out.println("Gender: "+(gioiTinh==0?"N":gioiTinh==1?"Nam":"Khác"));
    System.out.println("DOB: "+ngaySinh);
    System.out.println("Address: "+diaChi);
  }
}

Lớp Student:

package chuabaitap.baitap1_thuake;

import java.util.Scanner;

public class Student extends Person {
  String maSinhVien;
  float diemTrungBinh;
  String email;

  @Override
  void inputInfo() {
    Scanner input=new Scanner(System.in);
    super.inputInfo();
    do{
      System.out.print("Input Roll number: ");
      maSinhVien=input.nextLine();
    }while (maSinhVien.length()!=8);
    do{
      System.out.print("Input average mark: ");
      diemTrungBinh=input.nextFloat();
    }while (!(0<=diemTrungBinh && diemTrungBinh<=10));
    input.nextLine();
    do{
      System.out.print("Input email: ");
      email=input.nextLine();
    }while (!(email.contains("@") && !email.contains(" ")));
  }

  @Override
  void showInfo() {
    super.showInfo();
    System.out.println("Roll number: "+maSinhVien);
    System.out.println("Average mark: "+diemTrungBinh);
    System.out.println("Email: "+email);
    System.out.println("Hc bng: "+xetHocBong());
  }

  String xetHocBong(){
    if(diemTrungBinh>=8){
      return ược hc bng";
    }
    return "Không được hc bng";
  }
}

Lớp StudentTest:

package chuabaitap.baitap1_thuake;

import java.util.*;

public class StudentTest {
  static ArrayList<Student> StudentList = new ArrayList<>();
  static int n;
  static Scanner input=new Scanner(System.in);

  static void menu(){
    System.out.println("===MENU===");
    System.out.println("1. Nhp n sinh viên");
    System.out.println("2. Hin th thông tin");
    System.out.println("3. Đim trung bình Max, Min");
    System.out.println("4. Tìm sinh viên theo mã");
    System.out.println("5. Sp xếp tăng dn theo tên");
    System.out.println("6. Sinh viên được hc bng");
    System.out.println("7. Thoát");
  }

  static void inputNStudents(){
    Student student;
    do{
      System.out.print("Input n: ");
      n=input.nextInt();
    }while (n<1);
    for(int i=0; i<n; i++){
      System.out.printf("Nhp liu cho sinh viên th %d: %n",i+1);
      student=new Student();
      student.inputInfo();
      StudentList.add(student);
    }
  }

  static void diemTrungBinhMaxVaMin(){
    float Max,Min;
    //Tìm Max:
    Max=0;
    for(Student student:StudentList){
      if(Max<student.diemTrungBinh){
        Max=student.diemTrungBinh;
      }
    }
    System.out.println("Nhng sinh viên có đim trung bình cao nht:");
    for(Student student:StudentList){
      if(student.diemTrungBinh==Max){
        student.showInfo();
      }
    }
    //Tìm Min:
    Min=10;
    for(Student student:StudentList){
      if(Min>student.diemTrungBinh){
        Min=student.diemTrungBinh;
      }
    }
    System.out.println("Nhng sinh viên có đim trung bình thp nht:");
    for(Student student:StudentList){
      if(student.diemTrungBinh==Min){
        student.showInfo();
      }
    }
  }

  static void timSinhVienTheoMa(){
    String maSinhVien;
    System.out.print("Mi nhp mã sinh viên mun tìm: ");
    input.nextLine();
    maSinhVien=input.nextLine();
    boolean timThay=false;
    for(Student student:StudentList){
      if(student.maSinhVien.equals(maSinhVien)){
        student.showInfo();
        timThay=true;
        break;
      }
    }
    if(!timThay){
      System.out.printf("Không tìm thy sinh viên nào có mã là <%s>%n",maSinhVien);
    }
  }

  static void hienThiCacSinhVien(){
    if(StudentList.isEmpty()){
      System.out.println("Không có sinh viên nào!");
      return;
    }
    for(Student student:StudentList){
      student.showInfo();
    }
  }

  static void sapXepTangDanTheoTen(){
    Collections.sort(StudentList, new Comparator<Student>() {
      @Override
      public int compare(Student student1, Student student2) {
        if(student1.ten.compareTo(student2.ten)>0){
          return 1;
        }
        if(student1.ten.compareTo(student2.ten)==0){
          return 0;
        }
        return -1;
      }
    });
    hienThiCacSinhVien();
  }

  static void sinhVienDuocHocBong(){
    Collections.sort(StudentList, new Comparator<Student>() {
      @Override
      public int compare(Student student1, Student student2) {
        if(student1.diemTrungBinh<student2.diemTrungBinh){
          return 1;
        }
        if(student1.diemTrungBinh==student2.diemTrungBinh){
          return 0;
        }
        return -1;
      }
    });
    System.out.println("Nhng sinh viên được hc bng:");
    boolean timThay=false;
    for(Student student:StudentList){
      if(student.diemTrungBinh>=8){
        student.showInfo();
        timThay=true;
      }
    }
    if(!timThay){
      System.out.println("Không có sinh viên nào được hc bng!");
    }
  }

  public static void main(String[] args) {
//    Person person=new Person();
//    person.inputInfo();
//    person.showInfo();
//    Student student=new Student();
//    student.inputInfo();
//    student.showInfo();
    menu();
    while (true){
      System.out.print("Mi chn 1 mc: ");
      switch (input.nextInt()){
        case 1:
          inputNStudents();
          break;
        case 2:
          hienThiCacSinhVien();
          break;
        case 3:
          diemTrungBinhMaxVaMin();
          break;
        case 4:
          timSinhVienTheoMa();
          break;
        case 5:
          sapXepTangDanTheoTen();
          break;
        case 6:
          sinhVienDuocHocBong();
          break;
        case 7: return;
      }
    }
  }
}
» Tiếp: Trừu tượng (Abstract) và Đa hình (Polymorphism)
« Trước: Thừa kế (Inheritant)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!