Ví dụ Xây dựng mảng đối tượng trọng trong Java

Xây dựng project theo mô hình kế thừa:



Yêu cầu:

1. Nhập thông tin cho n sinh viên (3<n<30)

2. In ra danh sách sinh viên có điểm chữ là A

3. Đổi tên tên cả sinh viên thành chữ in hoa

--------------------

Một số tài liệu và khoá học bổ ích dành cho bạn: 

# Tài liệu: Lập trình hướng đối tượng JAVA core dành cho người mới bắt đầu học lập trình [Click để xem]

# Khoá học online: Lập trình Java trong 4 tuần [Click để xem]


Xây dựng project với các lớp theo hình vẽ dưới đây


Code:

// class SV


package vd_adstract_130114;
import java.util.Scanner;

abstract class SV {
    String hoTen, diaChi,he;
    int namSinh;
    // phuong thuc khoi tao
    public SV(String hoTen, String diaChi,String he,int namSinh){
        this.hoTen=hoTen;
        this.diaChi=diaChi;
        this.he=he;
        this.namSinh=namSinh;
    }
    
    // Tinh diem
    abstract float TinhDiem();
    // diem chu
    char DiemChu(){
        float diem=TinhDiem();
        char dchu;
        if(diem<4)
            dchu='F';
        else if(diem<5.5)
            dchu='D';
        else if(diem<7)
            dchu='C';
        else if(diem<8.5)
            dchu='B';
        else dchu='A';
        
        return dchu;
    }
    // in ket qua
    void InKQ(){
        System.out.print("\n\n IN KET QUA SINH VIEN "+he);
        System.out.print("\n + Ho ten: "+hoTen);
        System.out.print("\n + Dia chi: "+diaChi);
        System.out.print("\n + Nam sinh: "+namSinh);
        System.out.print("\n + Diem tong ket: "+TinhDiem());
        System.out.println("\n + Diem chu: "+DiemChu());        
    }


}


// class SVCD

package vd_adstract_130114;

class SVCD extends SV{
    float dTA,dToan,dLT,dCSDL;
    // khoi tao
    public SVCD(String hoTen, String diaChi,String he,int namSinh,float dTA, float dToan,float dLT,float dCSDL){
        super(hoTen,diaChi,he,namSinh);
        this.dCSDL=dCSDL;
        this.dLT=dLT;
        this.dTA=dTA;
        this.dToan=dToan;
    }

 
 
    // Tinh diem
    float TinhDiem(){
        return (dTA*2+dToan*2+dLT*3+dCSDL*2)/10;
    }

}


// class SVDH

package vd_adstract_130114;


public class SVDH extends SV {
    float dTA,dToan,dLT,dCSDL,dTTNT;
    // khoi tao
    public SVDH(String hoTen, String diaChi,String he,int namSinh,float dTA, float dToan,float dLT,float dCSDL,float dTTNT){
        super(hoTen,diaChi,he,namSinh);
        this.dCSDL=dCSDL;
        this.dLT=dLT;
        this.dTA=dTA;
        this.dToan=dToan;
    }
    // Tinh diem
    float TinhDiem(){
        return (dTA*2+dToan*2+dLT*3+dCSDL*2+dTTNT*2)/12;
    }


}



// class _adstract_130114 (class main)


package vd_adstract_130114;
import java.util.Scanner;
/**
 *
 * @author tranxuanthanh
 */
public class Vd_adstract_130114 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        
        // khai bao mang doi tuong
        SV[] a =new SV[30];
        // Nhap thong tin sinh vien
        System.out.print("\n Chon he sinh vien \n 1 - Dai hoc; \n 2 - Cao dang; \n 3 - thoat \n Nhap so: ");
        
        // Nhap he (Dai hoc hoac Cao dang)
        Scanner inp=new Scanner(System.in);
        int chonHe;
        do{
            chonHe=inp.nextInt();
            if(chonHe!=1 && chonHe!=2&&chonHe!=3)
             System.out.print("\n Chon he chua dung!");
        }while(chonHe!=1 && chonHe!=2&&chonHe!=3);
        
        // Nhap so sinh vien
        
        System.out.print("\n Nhap so sinh vien \n n= ");
        int n;
        do{
            n=inp.nextInt();
            if(n<3 && n>30)
             System.out.print("\n Nhap lai so sinh vien!");
        }while(n<3 && n>30);
        
        String hoTen, diaChi, he;
        int namSinh; 
        float d1, d2, d3, d4,d5;
                
        switch (chonHe){
            
            // SINH VIEN CAO DANG
            case 2:
            {
                
               
                for (int i=0;i<n;i++){
                    System.out.print("\n Nhap thong tin cho sv thu"+(i+1));
                    System.out.print("\n + Ho va ten: ");
                    hoTen = inp.next();
                    System.out.print("\n + Dia chi: ");
                    diaChi = inp.next();
                    he = "Cao dang";
                    System.out.print("\n + Nam sinh: ");
                    namSinh = inp.nextInt();
                    do{
                        System.out.print("\n + Diem 1: ");
                        d1 =inp.nextFloat();
                        if(d1<0&&d1>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d1<0&&d1>10);
                    
                    do{
                        System.out.print("\n + Diem 2: ");
                        d2 =inp.nextFloat();
                        if(d2<0&&d2>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d2<0&&d2>10);
                    
                    do{
                        System.out.print("\n + Diem 3: ");
                        d3 =inp.nextFloat();
                        if(d3<0&&d3>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d3<0&&d3>10);
                    
                    do{
                        System.out.print("\n + Diem 4: ");
                        d4 =inp.nextFloat();
                        if(d4<0&&d4>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d4<0&&d4>10);
                    
                     // khoi tao mang doi tuong
                    a[i] = new SVCD(hoTen,diaChi, he,namSinh,d1,d2,d3,d4);
                   
                    
                }
                
                 // in danh sach sinh vien co diem chu A
                System.out.print("\n * IN DANH SACH SV CO DIEM CHU LA A: \n");
                 for(int i=0;i<n;i++)
                    if(a[i].DiemChu()=='A')
                        a[i].InKQ();
                  // Doi ten sinh vien sang chu in hoa
                  System.out.print("\n * IN TEN SINH VIEN DA DOI THANH CHU HOA \n");
                  for(int i=0;i<n;i++){
                   a[i].hoTen = a[i].hoTen.toUpperCase();
                   System.out.print("\n" + a[i].hoTen);
                   
                  }
            }
            
            // SINH VIEN DAI HOC
            case 1:
            {
                for (int i=0;i<n;i++){
                    System.out.print("\n Nhap thong tin cho sv thu"+(i+1));
                    System.out.print("\n + Ho va ten: ");
                    hoTen = inp.next();
                    System.out.print("\n + Dia chi: ");
                    diaChi = inp.next();
                    he = "Dai hoc";
                    System.out.print("\n + Nam sinh: ");
                    namSinh = inp.nextInt();
                    do{
                        System.out.print("\n + Diem 1: ");
                        d1 =inp.nextFloat();
                        if(d1<0&&d1>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d1<0&&d1>10);
                    
                    do{
                        System.out.print("\n + Diem 2: ");
                        d2 =inp.nextFloat();
                        if(d2<0&&d2>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d2<0&&d2>10);
                    
                    do{
                        System.out.print("\n + Diem 3: ");
                        d3 =inp.nextFloat();
                        if(d3<0&&d3>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d3<0&&d3>10);
                    
                    do{
                        System.out.print("\n + Diem 4: ");
                        d4 =inp.nextFloat();
                        if(d4<0&&d4>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d4<0&&d4>10);
                    
                    do{
                        System.out.print("\n + Diem 5: ");
                        d5 =inp.nextFloat();
                        if(d5<0&&d5>10)
                            System.out.print("\n Nhap lai diem! ");
                    }while(d5<0&&d5>10);
                    
                     // khoi tao mang doi tuong
                    a[i] = new SVDH(hoTen,diaChi, he,namSinh,d1,d2,d3,d4,d5);
                   
                    
                }
               
                 // in danh sach sinh vien co diem chu A
                System.out.print("\n * IN DANH SACH SV CO DIEM CHU LA A: \n");
                 for(int i=0;i<n;i++)
                    if(a[i].DiemChu()=='A')
                        a[i].InKQ();
                 // Doi ten sinh vien sang chu in hoa
                  System.out.print("\n * IN TEN SINH VIEN DA DOI THANH CHU HOA \n");
                  for(int i=0;i<n;i++){
                   a[i].hoTen = a[i].hoTen.toUpperCase();
                   System.out.print("\n" + a[i].hoTen);
                   
                  }
                 
            }
                 default :
                System.out.print("\n Ket thuc ");
        }
        
        
    }
    

}