Nạp 2 class vào cùng 1 ArrayList để có thể xuất ra tất cả

Mình đang viết một chương trình, sắp hoàn thiện nó rồi, nhưng mình đang thắc mắc không biết làm sao để có nhể nạp 2 cái class Trưởng phòng và Tiếp thị vào cùng 1 ArrayList để khi mình xuất ra thì có thể xuất ra tất cả. Và lại như mình muốn tìm 1 người trong số 3 thằng này thì không lẽ phải đi tới từng đối tượng.?
Mình muốn gom toàn bộ vào ArrayList để có thể truy xuất dễ dàng. Hi vọng mòi người giúp đỡ. Mình cảm ơn… Đây là code của mình:

package Demo2;
import java.util.*;
public class QuanLyCongTy {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        NhanVien nv2 = new NhanVien();
        Tiepthi TT = new Tiepthi();
        TruongPhong TP = new TruongPhong();
        int choise;
        int chon;
        int n;
        do{
            System.out.println("1. Nhập danh sách nhân viên hành chính");
            System.out.println("2. Nhập danh sách nhân viên Tiếp thị");
            System.out.println("3. Nhập danh sách nhân viên Trưởng phòng");
            System.out.println("4. Xuất danh sách nhân viên");
            choise = input.nextInt();
        switch(choise){
            case 1 :
                System.out.println("Thêm thông tin: ");
                System.out.println("số nhân viên bạn muốn nhập: ");
                n = input.nextInt();
                for(int i=0;i<n;i++){
                nv2.nhap();
            }
            break;
            case 2:
                System.out.println("Thêm thông tin: ");
                System.out.println("số nhân viên bạn muốn nhập: ");
                n = input.nextInt();
                for(int i=0;i<n;i++){
                TT.nhap();
            }
                break;
            case 3:
                System.out.println("Thêm thông tin: ");
                System.out.println("số nhân viên bạn muốn nhập: ");
                n = input.nextInt();
                for(int i=0;i<n;i++){
                TP.nhap();
                }
                break;
            case 4:
                nv2.xuat();
                TT.xuat();
                TP.xuat();
            break;
        }
        }while(choise !=0);
    }
}
package Demo2;
import java.util.*;
public class NhanVien {
    protected String Manv;
    protected String Hoten;
    protected double Luong;
    Scanner input = new Scanner (System.in);
    public NhanVien() {
 
        }
    ArrayList<NhanVien> nvien = new ArrayList<>();
        NhanVien nhanvien;
    public void nhap(){
        
        System.out.println("Nhập mã nhân viên: ");
        setManv(input.next());
        System.out.println("Nhập tên nhân viên: ");
        setHoten(input.next());
        System.out.println("Nhập lương nhân viên: ");
        setLuong(input.nextDouble());
        nhanvien = new NhanVien(Manv, Hoten, Luong);
        nvien.add(nhanvien);
    }
    public void xuat(){
        for(int i=0;i<nvien.size();i++){
    if(nvien.isEmpty()){
        System.out.print("Không có thông tin");    
    }else{
        System.out.println(nvien.get(i).toString());
            }
        }
    }
    public double Luongnv(){
        return Luong;
    }
    public double ThueThuNhap(){
        if(Luongnv()>= 9000 && Luongnv() <=15000)
            return Luongnv()+0.1;
        if(Luongnv() >15000)
            return Luongnv()*0.12;
        return Luongnv();
    }
    
    public String toString(){
        return "| "+ "Nhân viên hành chính: " + "Tên: "+Hoten + " - " +"Mã nhân viên: " +Manv + " - "+"Lương: " +Luong + " - " +"Thu nhập: "+ Luongnv()+ " - "+ "Thuế thu nhập: " + ThueThuNhap()  + "| ";
    }
    

    public NhanVien(String Manv, String Hoten, double Luong) {
        this.Manv = Manv;
        this.Hoten = Hoten;
        this.Luong = Luong;
    }

    public String getManv() {
        return Manv;
    }

    public void setManv(String Manv) {
        this.Manv = Manv;
    }

    public String getHoten() {
        return Hoten;
    }

    public void setHoten(String Hoten) {
        this.Hoten = Hoten;
    }

    public double getLuong() {
        return Luong;
    }

    public void setLuong(double Luong) {
        this.Luong = Luong;
    }
    
}
package Demo2;
import java.util.*;
public class Tiepthi extends NhanVien {
    private double doanhso;
    private double huehong;
    public Tiepthi(){
        
    }
    @Override
    public void nhap(){
        super.nhap();
        System.out.println("Nhập doanh số: ");
        doanhso = new Scanner(System.in).nextDouble();
        System.out.println("Nhập huê hồng: ");
        huehong = new Scanner(System.in).nextDouble();
    }
    @Override
    public double Luongnv(){
        return (double) Luong+doanhso+huehong;
    }
    @Override
    public double ThueThuNhap(){
        return super.ThueThuNhap();
    }
    @Override
    public String toString(){
        return "| "+ "Nhân viên tiếp thị: " + "Tên: "+Hoten + " - " +"Mã nhân viên: " +Manv + " - " + "Lương: " +Luong + " - " + "Doanh số: "+doanhso+ " - " + "Huê Hồng: " + huehong + " - " + "Thu nhập: " + Luongnv() + "Thuế thu nhập: " + ThueThuNhap() + "| ";
    }
    @Override
    public void xuat(){
        super.xuat();
    }
    public Tiepthi(double doanhso, double huehong) {
        this.doanhso = doanhso;
        this.huehong = huehong;
    }

    public double getDoanhso() {
        return doanhso;
    }

    public void setDoanhso(double doanhso) {
        this.doanhso = doanhso;
    }

    public double getHuehong() {
        return huehong;
    }

    public void setHuehong(double huehong) {
        this.huehong = huehong;
    }
    
}
package Demo2;
import java.util.*;
public class TruongPhong extends NhanVien {
    private double trachnhiem;
    public TruongPhong(){
    
}
    @Override
    public void nhap(){
        super.nhap();
        System.out.println("Nhập lương trách nhiệm: ");
        trachnhiem = new Scanner(System.in).nextDouble();
    }
    @Override
    public double Luongnv(){
        return (double) Luong+trachnhiem;
    }
    @Override
    public double ThueThuNhap(){
        return super.ThueThuNhap();
    }
    @Override
    public String toString(){
        return "| "+ "Trưởng phòng: " + "Tên: "+Hoten + " - " +"Mã nhân viên: " +Manv + " - "+"Lương: " +Luong + " - " + "Trách nhiệm: "+trachnhiem + " - " + "Thu Nhập: " + Luongnv() + "| ";
    }

    @Override
    public void xuat(){
        super.xuat();
    }
    
    public TruongPhong(double trachnhiem) {
        this.trachnhiem = trachnhiem;
    }

    public double getTrachnhiem() {
        return trachnhiem;
    }

    public void setTrachnhiem(double trachnhiem) {
        this.trachnhiem = trachnhiem;
    }
    
}

Em cảm ơn nhiều ạ…!

mình nghĩ bạn nên chuyển nhanvien thành 1 lớp abstract và tạo thêm 1 lớp nhanvienhanhchinh , sau đó thì cho các lớp kia implement 2 method nhập và xuất rồi tại class quản lý chỉ việc truyền kiểu đối tượng muốn nhập hoặc xuất vào còn việc thực thi nhập xuất thì sẽ tùy vào đối tượng kiểu gì mà sẽ thực thi đúng method…

e chưa hình dung ra được ạ :frowning:

A mình đã hiểu ý của bạn. Nhưng giờ mình muốn tạo thêm 1 lệnh là xuất 3 nhân viên có thu nhập cao nhất trong 3 thằng tiếp thị trưởng phòng cùng hành chính thì sao mà xuất dc :frowning: nếu như xuất từng loại thì có thể

Assignment MOB1013 của FPoly à :smile:

đồng dâm đây rồi :)))

B làm dc chưa :v thông não cho mình chỗ kẹt phát

Trong đề nó kêu xuất ra 5 nhân viên có thu nhập cao nhất thì chỉ cần cho for chạy từ 0 đến nhỏ hơn 5 sau đó sort danh sách lớn đến nhỏ và xuất ko cần rắc rối

Nhưng list chứa dữ liệu nó chỉ có mỗi thằng nhân viên @@ thì nó xuất mỗi thằng nhân viên chứ mấy :v

Ông hiểu dc đề nhưng khi code chương trình lại áp dụng sai nên bài trên sai rồi

thì cứ tạo 1 arraylist chứa các nhân viên có thể add dc cả tiếp thị, trưởng phòng

1 Like

mình tạo rồi mà khi nhập TT với TP sau đó xuất ra nó k ra @@

ib cậu ơi ^^!..

Mình đã gửi cậu project demo bài nhập xuất rồi đó xem xong nếu ko hiểu thì hỏi mình

Bài này mình làm theo cách của cậu nên nhìn chắc sẽ hiểu thôi

vậy thì viết thêm method tính lương ở class nhanvien rồi cho các class con implement nó (mỗi thằng con có 1 cách tính lương riêng) , rồi tạo 1 arraylist kiểu nhanvien rồi add các đối tượng con vào , sau đó cho chạy for + gọi method tính lương để tìm người có lương cao nhất…

Em phải làm ngược lại

1 Like

E hoàn thành rồi anh ^^! cảm ơn anh nha. Nhờ ví dụ của anh em mới hiểu cặn kẽ vậy hì hì… Giờ e sẽ tiếp tục cố gắng thêm ^^! Em cảm ơn a…!!

anh oi anh con hoat động trong group không nếu còn cho em xin cái project được không ạ

3 posts were merged into an existing topic: Topic lưu trữ các post off-topic - version 3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?