You are on page 1of 33

BÀI TẬP ỨNG DỤNG PHẦN JAVA OOP

Bài 1 - Viết chương trình quản lý nhân viên trong 1 công ty phần mềm.

Đăng bởi: VanNguyen - Vào ngày: 14-12-2017 - View: 16219

Công ty phần mềm Hoàn Cầu được thành lập từ năm 2007, chuyên nhận thực hiện
các dự án phần mềm từ các đơn vị khác, cũng như phát triển các phần mềm do chính
công ty đề xuất. Giả sử công ty có 2 loại nhân viên: Lập trình viên là những người
sẽ viết mã nguồn cho các ứng dụng, Kiểm chứng viên có nhiệm vụ kiểm tra mã
nguồn và chương trình mà lập trình viên viết ra để tìm các lỗi trước khi giao sản
phẩm cho khách hàng.

Hiện tại, công ty lưu trữ thông tin của các loại nhân viên như sau:

 Lập trình viên: mã nhân viên, họ tên, tuổi, số điện thoại, email, lương cơ bản,
số giờ overtime.
 Kiểm chứng viên: mã nhân viên, họ tên, tuổi, số điện thoại, email, lương cơ
bản, số lỗi phát hiện được.
Do tính chất công việc khác nhau nên lương cơ bản của lập trình viên và kiểm chứng
viên cũng khác nhau. Cụ thể:

 Lương (lập trình viên) = lương cơ bản + số giờ làm thêm * 200.000.
 Lương (kiểm chứng viên) = lương cơ bản + số lỗi * 50.000.
Bạn hãy đề xuất thiết kế các lớp đối tượng cần thiết để quản lý danh sách các nhân
viên của công ty và hỗ trợ tính lương cho nhân viên theo tiêu chí đặt ra như trên.

Hãy viết chương trình thực hiện các yêu cầu sau:

 Nhập vào danh sách nhân viên (lưu trữ trong một mảng duy nhất).
 Liệt kê danh sách nhân viên có lương thấp hơn mức lương trung bình của các
nhân viên trong công ty.
Bài giải

// NhanVien.java
package baitapquanlynhanvien;

import java.util.Scanner;

public class NhanVien {


private String maNhanVien, hoTen, soDienThoai, mail;
private int tuoi;
protected int luong, luongCoBan;
Scanner scanner = new Scanner(System.in);

public NhanVien() {
super();
}

public NhanVien(String maNhanVien, String hoTen, String soDienThoai, String


mail, int tuoi,
int luong, int luongCoBan) {
super();
this.maNhanVien = maNhanVien;
this.hoTen = hoTen;
this.soDienThoai = soDienThoai;
this.mail = mail;
this.tuoi = tuoi;
this.luong = luong;
this.luongCoBan = luongCoBan;
}

public String getMaNhanVien() {


return maNhanVien;
}

public void setMaNhanVien(String maNhanVien) {


this.maNhanVien = maNhanVien;
}

public String getHoTen() {


return hoTen;
}

public void setHoTen(String hoTen) {


this.hoTen = hoTen;
}

public String getSoDienThoai() {


return soDienThoai;
}

public void setSoDienThoai(String soDienThoai) {


this.soDienThoai = soDienThoai;
}

public String getMail() {


return mail;
}

public void setMail(String mail) {


this.mail = mail;
}

public int getTuoi() {


return tuoi;
}
public void setTuoi(int tuoi) {
this.tuoi = tuoi;
}

public int getLuong() {


return luong;
}

public void setLuong(int luong) {


this.luong = luong;
}

public int getLuongCoBan() {


return luongCoBan;
}

public void setLuongCoBan(int luongCoBan) {


this.luongCoBan = luongCoBan;
}

public void nhap() {


System.out.print("Nhập mã nhân viên: ");
maNhanVien = scanner.nextLine();
System.out.print("Nhập họ tên nhân viên: ");
hoTen = scanner.nextLine();
System.out.print("Nhập số điện thoại: ");
soDienThoai = scanner.nextLine();
System.out.print("Nhập mail: ");
mail = scanner.nextLine();
System.out.print("Nhập tuổi: ");
tuoi = scanner.nextInt();
System.out.print("Nhập lương cơ bản: ");
luongCoBan = scanner.nextInt();
}

public int tinhLuong() {


return 0;
}

@Override
public String toString() {
return "Mã nhân viên: " + this.maNhanVien + ", họ tên nhân viên: " +
this.hoTen +
", số điện thoại: " + this.soDienThoai + ", mail: " + this.mail +
", tuổi: " + this.tuoi + ", lương cơ bản: " + this.luongCoBan;
}
}
//LapTrinhVien.java
package baitapquanlynhanvien;

public class LapTrinhVien extends NhanVien {


private int soGioLamThem;

public LapTrinhVien() {
super();
}

public LapTrinhVien(int soGioLamThem) {


super();
this.soGioLamThem = soGioLamThem;
}

public int getSoGioLamThem() {


return soGioLamThem;
}

public void setSoGioLamThem(int soGioLamThem) {


this.soGioLamThem = soGioLamThem;
}

@Override
public void nhap() {
super.nhap();
System.out.print("Nhập số giờ làm thêm: ");
soGioLamThem = scanner.nextInt();
}

@Override
public int tinhLuong() {
this.luong = this.luongCoBan + this.soGioLamThem * 200000;
return this.luong;
}

@Override
public String toString() {
return super.toString() + "\n, số giờ làm thêm: " + this.soGioLamThem +
", lương: " + this.luong;
}
}
//KiemChungVien.java
package baitapquanlynhanvien;

public class KiemChungVien extends NhanVien {


private int soLoiPhatHien;

public KiemChungVien() {
super();
}

public KiemChungVien(int soLoiPhatHien) {


super();
this.soLoiPhatHien = soLoiPhatHien;
}

public int getSoLoiPhatHien() {


return soLoiPhatHien;
}
public void setSoLoiPhatHien(int soLoiPhatHien) {
this.soLoiPhatHien = soLoiPhatHien;
}

@Override
public void nhap() {
super.nhap();
System.out.print("Nhập số lỗi phát hiện: ");
soLoiPhatHien = scanner.nextInt();
}

@Override
public int tinhLuong() {
this.luong = this.luongCoBan + this.soLoiPhatHien * 50000;
return this.luong;
}

@Override
public String toString() {
return super.toString() + "\n, số lỗi phát hiện: " + this.soLoiPhatHien +
", lương: " + this.luong;
}

}
//Main.java
package baitapquanlynhanvien;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {


int luongTrungBinh = 0, tongLuong = 0;
Scanner scanner = new Scanner(System.in);
System.out.print("Nhập số nhân viên trong công ty: ");
int soNhanVien = scanner.nextInt();
NhanVien[] nhanVien = new NhanVien[soNhanVien];
System.out.println("Nhập thông tin cho nhân viên");
for (int i = 0; i < soNhanVien; i++) {
System.out.println("Nhập thông tin nhân viên thứ " + (i + 1) + ":");
System.out.print("Chọn loại nhân viên (1 - lập trình viên, 2 - kiểm chứng
viên): ");
int choose = scanner.nextInt();

if (choose == 1) {
nhanVien[i] = new LapTrinhVien();
} else if (choose == 2) {
nhanVien[i] = new KiemChungVien();
}

nhanVien[i].nhap();
nhanVien[i].tinhLuong();
}

System.out.println("Thông tin của các nhân viên trong công ty: ");
for (int i = 0; i < soNhanVien; i++) {
System.out.println(nhanVien[i].toString());
}

System.out.println("Danh sách nhân viên có lương thấp hơn mức lương trung
bình của "
+ "các nhân viên trong công ty.");
for (int i = 0; i < soNhanVien; i++) {
tongLuong += nhanVien[i].tinhLuong();
}
luongTrungBinh = tongLuong / soNhanVien;

for (int i = 0; i < soNhanVien; i++) {


if (nhanVien[i].tinhLuong() <= luongTrungBinh) {
System.out.println(nhanVien[i].toString());
}
}
}

}
Bài 2 - Viết chương trình quản lý cán bộ của một trường đại hoc.

Đăng bởi: VanNguyen - Vào ngày: 14-12-2017 - View: 3442

Giả sử một trường đại học cần quản lý thông tin cán bộ (gồm giảng viên và nhân
viên hành chính trong trường).

Với giảng viên cần quản lý các thông tin: họ tên, khoa, trình độ (cử nhân, thạc sĩ,
tiến sĩ), phụ cấp, số tiết dạy, hệ số lương.

Với nhân viên hành chính cần quản lý họ tên, phòng ban, số ngày công, hệ số lương,
phụ cấp, chức vụ (trưởng phòng, phó phòng, nhân viên).

Phụ cấp cán bộ được tính theo bảng sau:

Học vị giảng viên Phụ cấp Chức vụ nhân viên Phụ cấp
Cử nhân 300 Trưởng phòng 2000
Thạc sĩ 500 Phó phòng 1000
Tiến sĩ 1000 Nhân viên 500
Lương giảng viên được tính như sau: Hệ số lương * 730 + phụ cấp + số tiết dạy *
45.

Lương nhân viên được tính như sau: Hệ số lương * 730 + phụ cấp + số ngày công *
200.

Hãy viết chương trình thực hiện các chức năng sau:

 Nhập vào danh sách cán bộ trong trường.


 In danh sách cán bộ.
 Tính tổng lương phải trả cho cán bộ trong trường.
Yêu cầu: Sử dụng tính chất kế thừa và đa hình. Lập trình các chức năng theo yêu
cầu trên.
Bài giải

//CanBo.java
package baitapquanlycanbo;

import java.util.Scanner;

public class CanBo {


private String hoTen, loaiCanBo;
private double heSoLuong;
private int phuCap;
protected int choose;
Scanner scanner = new Scanner(System.in);
CanBo canBo;

public CanBo() {
super();
}

public CanBo(String hoTen, String loaiCanBo, double heSoLuong, int phuCap) {


super();
this.hoTen = hoTen;
this.loaiCanBo = loaiCanBo;
this.heSoLuong = heSoLuong;
this.phuCap = phuCap;
}

public String getHoTen() {


return hoTen;
}

public void setHoTen(String hoTen) {


this.hoTen = hoTen;
}

public String getLoaiCanBo() {


return loaiCanBo;
}

public void setLoaiCanBo(String loaiCanBo) {


this.loaiCanBo = loaiCanBo;
}

public double getHeSoLuong() {


return heSoLuong;
}

public void setHeSoLuong(double heSoLuong) {


this.heSoLuong = heSoLuong;
}

public int getPhuCap() {


return phuCap;
}

public void setPhuCap(int phuCap) {


this.phuCap = phuCap;
}

public void nhap() {


System.out.print("Nhập họ tên: ");
hoTen = scanner.nextLine();
System.out.print("Nhập hệ số lương: ");
heSoLuong = Double.parseDouble(scanner.nextLine());
}
public long tinhLuong() {
return 0;
}

@Override
public String toString() {
return "Tên: " + this.hoTen + ", hệ số lương: " + this.heSoLuong + ", phụ cấp:
"+
phuCap + ", lương: " + this.tinhLuong();
}
}

//GiangVien.java
package baitapquanlycanbo;

public class GiangVien extends CanBo {


private String khoa, trinhDo;
private int soTietDay, choose;

public GiangVien() {
super();
}

public GiangVien(String khoa, String trinhDo, int soTietDay) {


super();
this.khoa = khoa;
this.trinhDo = trinhDo;
this.soTietDay = soTietDay;
}

public String getKhoa() {


return khoa;
}
public void setKhoa(String khoa) {
this.khoa = khoa;
}

public String getTrinhDo() {


return trinhDo;
}

public void setTrinhDo(String trinhDo) {


this.trinhDo = trinhDo;
}

public int getSoTietDay() {


return soTietDay;
}

public void setSoTietDay(int soTietDay) {


this.soTietDay = soTietDay;
}

@Override
public void nhap() {
super.nhap();
System.out.print("Nhập khoa: ");
khoa = scanner.nextLine();
do {
System.out.print("Nhập trình độ (1 - cử nhân, 2 - thạc sĩ, 3 -tiến sĩ): ");
choose = scanner.nextInt();
switch (choose) {
case 1:
trinhDo = "cử nhân";
this.setPhuCap(300);
break;
case 2:
trinhDo = "thạc sĩ";
this.setPhuCap(500);
break;
case 3:
trinhDo = "tiến sĩ";
this.setPhuCap(1000);
default:
System.out.println("Chọn không đúng!");
break;
}
} while (choose < 1 || choose > 3);
System.out.print("Số tiết dạy: ");
soTietDay = scanner.nextInt();
}

@Override
public long tinhLuong() {
return (long) (this.getHeSoLuong() * 730 + this.getPhuCap() +
this.getSoTietDay() * 45);
}

@Override
public String toString() {
return super.toString() + ", khoa: " + this.khoa + ", trình độ: " + this.trinhDo +
", số tiết dạy: " + this.soTietDay;
}
}

//NhanVien.java
package baitapquanlycanbo;

public class NhanVien extends CanBo {


private String phongBan, chucVu;
private int soNgayCong, choose;

public NhanVien() {
super();
}

public NhanVien(String phongBan, String chucVu, int soNgayCong) {


super();
this.phongBan = phongBan;
this.chucVu = chucVu;
this.soNgayCong = soNgayCong;
}

public String getPhongBan() {


return phongBan;
}

public void setPhongBan(String phongBan) {


this.phongBan = phongBan;
}

public String getChucVu() {


return chucVu;
}

public void setChucVu(String chucVu) {


this.chucVu = chucVu;
}

public int getSoNgayCong() {


return soNgayCong;
}
public void setSoNgayCong(int soNgayCong) {
this.soNgayCong = soNgayCong;
}

@Override
public void nhap() {
super.nhap();
System.out.print("Nhập phòng ban: ");
phongBan = scanner.nextLine();
do {
System.out.print("Nhập chức vụ (1 - trưởng phòng, 2 - phó phòng, 3 - nhân
viên): ");
choose = scanner.nextInt();
switch (choose) {
case 1:
chucVu = "trưởng phòng";
this.setPhuCap(2000);
break;
case 2:
chucVu = "phó phòng";
this.setPhuCap(1000);
break;
case 3:
chucVu = "nhân viên";
this.setPhuCap(500);
break;
default:
System.out.println("Chọn không đúng!");
break;
}
} while (choose < 1 || choose > 3);
System.out.print("Nhập số ngày công: ");
soNgayCong = scanner.nextInt();
}

@Override
public long tinhLuong() {
return (long) (this.getHeSoLuong() * 730 + this.getPhuCap() +
this.getSoNgayCong() * 200);
}

@Override
public String toString() {
return super.toString() + ", phòng ban: " + this.phongBan + ", chức vụ: " +
this.chucVu +
", số ngày công: " + this.soNgayCong;
}

}
//Main.java
package baitapquanlycanbo;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {


ArrayList<CanBo> arrCanBo = new ArrayList<>();
int choose, soCanBo;
long tongLuong = 0, luongThapNhat, luong;
CanBo canBo = null;
Scanner scanner = new Scanner(System.in);

System.out.print("Nhập số lượng cán bộ trong trường: ");


soCanBo = scanner.nextInt();
for (int i = 0; i < soCanBo; i++) {
System.out.println("Nhập thông tin cán bộ thứ " + (i + 1) + ":");
do {
System.out.print("Chọn loại cán bộ (1 - giảng viên, 2 - nhân viên): ");
choose = scanner.nextInt();
switch (choose) {
case 1:
canBo = new GiangVien();
canBo.nhap();
arrCanBo.add(canBo);
break;
case 2:
canBo = new NhanVien();
canBo.nhap();
arrCanBo.add(canBo);
break;
default:
System.out.println("Chọn không hợp lệ.");
break;
}
} while (choose < 1 || choose > 3);
}

System.out.println("Hiển thị danh sách cán cán bộ trong trường: ");


for (CanBo cb : arrCanBo) {
System.out.println(cb.toString());
}

for (CanBo cb : arrCanBo) {


luong = cb.tinhLuong();
tongLuong += luong;
}
System.out.println("Tổng lương phải trả cho cán bộ trong trường = " +
tongLuong);
}

Bài 3 - Viết chương trình tính lương nhân viên trong 1 công ty.
Viết chương trình tính lương nhân viên trong một nhân viên với mô tả như sau:
Công ty này có hai loại nhân viên đó là nhân viên toàn thời gian và nhân viên thời
vụ.

 Nhân viên toàn thời gian bình thường sẽ hưởng lương 10 triệu/tháng. Nhân
viên toàn thời gian là sếp sẽ hưởng lương 20 triệu/tháng.
 Nhân viên toàn thời gian nếu làm thêm thì sẽ được cộng thêm 800 ngàn/ngày
(bất kể chức vụ), nhân viên thời vụ cứ làm thêm mỗi giờ được 100 ngàn.
Ứng dụng sẽ cho phép người dùng nhập thông tin từng nhân viên. Mỗi nhân viên có
tên nhân viên, loại nhân viên (nhân viên toàn thời gian, nhân viên thời vụ). Nhân
viên toàn thời gian thì là nhân viên bình thường hay là sếp, có làm thêm ngày nào
không. Nhân viên thời vụ thì làm được bao nhiêu giờ. Cuối cùng dựa vào thông tin
đó, xuất ra màn hình lương tương ứng của từng nhân viên.

Bài giải
//NhanVien.java
package baitaptinhluong;

import java.util.Scanner;

public class NhanVien {


private String tenNhanVien;
protected long luongNhanVien;
Scanner scanner = new Scanner(System.in);

public NhanVien() {
super();
}

public NhanVien(String tenNhanVien, long luongNhanVien) {


super();
this.tenNhanVien = tenNhanVien;
this.luongNhanVien = luongNhanVien;
}

public void nhapThongTin() {


System.out.print("Nhập tên nhân viên: ");
tenNhanVien = scanner.nextLine();
}
// khai báp phương thức tinhLuong() để lớp con có thể ghi đè
public void tinhLuong() {

@Override
public String toString() {
return "Tên nhân viên: " + this.tenNhanVien + ", lương nhân viên: " +
this.luongNhanVien + " VND";
}

}
// NhanVienToanThoiGian.java
package baitaptinhluong;

public class NhanVienToanThoiGian extends NhanVien {


private int soNgayLamThem, choose;
private String loaiNhanVien;
private static long LUONG_NHAN_VIEN_LA_SEP = 20000000;
private static long LUONG_NHAN_VIEN_BINH_THUONG = 10000000;
private static long LUONG_LAM_THEM = 800000;

public NhanVienToanThoiGian() {
super();
}

public NhanVienToanThoiGian(int soNgayLamThem, String loaiNhanVien) {


super();
this.soNgayLamThem = soNgayLamThem;
this.loaiNhanVien = loaiNhanVien;
}

public int getSoNgayLamThem() {


return soNgayLamThem;
}
public void setSoNgayLamThem(int soNgayLamThem) {
this.soNgayLamThem = soNgayLamThem;
}

public String getLoaiNhanVien() {


return loaiNhanVien;
}

public void setLoaiNhanVien(String loaiNhanVien) {


this.loaiNhanVien = loaiNhanVien;
}

public void nhapThongTin() {


super.nhapThongTin();
System.out.print("Nhập số ngày làm thêm: ");
soNgayLamThem = scanner.nextInt();
System.out.print("Nhập loại nhân viên (1 - bình thường, 2 - sếp): ");
choose = scanner.nextInt();
switch (choose) {
case 1:
loaiNhanVien = "Nhân viên bình thường";
break;
case 2:
loaiNhanVien = "Sếp";
break;
default:
System.out.println("Nhập loại nhân viên không đúng!");
break;
}
}

public void tinhLuong() {


if (loaiNhanVien.equals("Nhân viên bình thường")) {
luongNhanVien = LUONG_NHAN_VIEN_BINH_THUONG +
this.soNgayLamThem * LUONG_LAM_THEM;
} else if (loaiNhanVien.equals("Sếp")) {
luongNhanVien = LUONG_NHAN_VIEN_LA_SEP +
this.soNgayLamThem * LUONG_LAM_THEM;
}
}

@Override
public String toString() {
return super.toString() + ", loại nhân viên: " + this.loaiNhanVien +
", số ngày làm thêm: " + this.soNgayLamThem;
}
}
// NhanVienThoiVu.java
package baitaptinhluong;

public class NhanVienThoiVu extends NhanVien {


private int gioLamViec;
private static long LUONG_NHAN_VIEN_THOI_VU_MOT_GIO = 100000;

public NhanVienThoiVu() {
super();
}

public NhanVienThoiVu(int gioLamViec) {


super();
this.gioLamViec = gioLamViec;
}

public void nhapThongTin() {


super.nhapThongTin();
System.out.print("Nhập số giờ làm việc: ");
gioLamViec = scanner.nextInt();
}
public void tinhLuong() {
luongNhanVien = LUONG_NHAN_VIEN_THOI_VU_MOT_GIO *
this.gioLamViec;
}

@Override
public String toString() {
return super.toString() + ", giờ làm việc: " + this.gioLamViec;
}
}
//Main.java
package baitaptinhluong;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {


int soNhanVienToanThoiGian, soNhanVienThoiVu;
Scanner scanner = new Scanner(System.in);
NhanVien nhanVien;
ArrayList<NhanVien> arrNhanVien = new ArrayList<>();

System.out.print("Nhập số nhân viên toàn thời gian: ");


soNhanVienToanThoiGian = scanner.nextInt();
System.out.println("NHẬP THÔNG TIN NHÂN VIÊN TOÀN THỜI GIAN");
for (int i = 0; i < soNhanVienToanThoiGian; i++) {
System.out.println("Nhập thông tin nhân viên toàn thời gian thứ " + (i + 1) +
": ");
nhanVien = new NhanVienToanThoiGian(); // lúc này nhanVien là nhân
viên toàn thời gian
nhanVien.nhapThongTin();
arrNhanVien.add(nhanVien);
}

System.out.print("Nhập số nhân viên thời vụ: ");


soNhanVienThoiVu = scanner.nextInt();
System.out.println("NHẬP THÔNG TIN NHÂN VIÊN THỜI VỤ");
for (int i = 0; i < soNhanVienThoiVu; i++) {
System.out.println("Nhập thông tin nhân viên thời vụ thứ " + (i + 1) + ": ");
nhanVien = new NhanVienThoiVu(); // còn bây giờ nhanVien là nhân viên
thời vụ
nhanVien.nhapThongTin();
arrNhanVien.add(nhanVien);
}

System.out.println("THÔNG TIN NHÂN VIÊN");


for (NhanVien nv : arrNhanVien) {
nv.tinhLuong();
System.out.println(nv.toString());
}
}

Bài 4 - Viết chương trình quản lý đất của công ty bất động sản.

Đăng bởi: VanNguyen - Vào ngày: 14-12-2017 - View: 843

Một công ty kinh doanh bất động sản sở hữu n miếng đất. Mỗi miếng đất có những
thông tin sau:

 Mã số (ví dụ: MS001).


 Đơn giá một m2.
Ngoài ra, mỗi miếng đất tùy theo hình dạng còn có những thông tin riêng. Hiện có 3
loại hình dạng:

 Hình chữ nhật: diện tích = dài * rộng.


 Hình thang: diện tích = (đáy lớn + đáy nhỏ) * chiều cao / 2.
 Hình tam giác: diện tích = (đáy * chiều cao) / 2.
Những miếng đất hình thang và hình tam giác được công ty giảm giá 10%.

Viết chương trình thực hiện các yêu cầu sau:


 Nhập danh sách những miếng đất của công ty.
 Tính tổng diện tích các miếng đất.
 Tính tổng giá tiền của các miếng đất.
Bài giải
//MiengDat.java
package baitapquanlybatdongsan;

import java.util.Scanner;

public class MiengDat {


private String maSo;
protected long donGia;
Scanner scanner = new Scanner(System.in);

public MiengDat() {
super();
}

public MiengDat(String maSo, long donGia) {


super();
this.maSo = maSo;
this.donGia = donGia;
}

public String getMaSo() {


return maSo;
}

public void setMaSo(String maSo) {


this.maSo = maSo;
}

public long getDonGia() {


return donGia;
}

public void setDonGia(long donGia) {


this.donGia = donGia;
}

public double tinhDienTich() {


return 0;
}

public long tinhTien() {


return this.donGia * (long) this.tinhDienTich();
}

public void nhap() {


System.out.print("Nhập mã số miếng đất: ");
maSo = scanner.nextLine();
System.out.print("Nhập đơn giá 1m2: ");
donGia = scanner.nextLong();
}

@Override
public String toString() {
return "Mã số miếng đất: " + this.maSo + ", đơn giá: " + this.donGia + " VND,
diện tích: "
+ this.tinhDienTich() + ", giá tiền: " + this.tinhTien();
}
}
// MiengDatHinhChuNhat.java
package baitapquanlybatdongsan;

public class MiengDatHinhChuNhat extends MiengDat {


private int chieuDai, chieuRong;

public MiengDatHinhChuNhat() {
super();
}

public MiengDatHinhChuNhat(int chieuDai, int chieuRong) {


super();
this.chieuDai = chieuDai;
this.chieuRong = chieuRong;
}

public int getChieuDai() {


return chieuDai;
}

public void setChieuDai(int chieuDai) {


this.chieuDai = chieuDai;
}

public int getChieuRong() {


return chieuRong;
}

public void setChieuRong(int chieuRong) {


this.chieuRong = chieuRong;
}

@Override
public double tinhDienTich() {
return (this.chieuDai * this.chieuRong);
}

@Override
public void nhap() {
super.nhap();
do {
System.out.print("Nhập chiều dài miếng đất: ");
chieuDai = scanner.nextInt();
System.out.print("Nhập chiều rộng miếng đất: ");
chieuRong = scanner.nextInt();
} while ((chieuDai <= chieuRong) || (chieuDai <= 0) || (chieuRong <= 0));
}

@Override
public String toString() {
return super.toString() + ", chiều dài: " + this.chieuDai +
", chiều rộng: " + this.chieuRong;
}
}
// MiengDatHinhThang.java
package baitapquanlybatdongsan;

import java.awt.image.DataBufferUShort;

public class MiengDatHinhThang extends MiengDat {


private int dayLon, dayNho, chieuCao;

public MiengDatHinhThang() {
super();
}

public MiengDatHinhThang(int dayLon, int dayNho, int chieuCao) {


super();
this.dayLon = dayLon;
this.dayNho = dayNho;
this.chieuCao = chieuCao;
}

public int getDayLon() {


return dayLon;
}

public void setDayLon(int dayLon) {


this.dayLon = dayLon;
}

public int getDayNho() {


return dayNho;
}

public void setDayNho(int dayNho) {


this.dayNho = dayNho;
}

public int getChieuCao() {


return chieuCao;
}

public void setChieuCao(int chieuCao) {


this.chieuCao = chieuCao;
}

@Override
public double tinhDienTich() {
return ((this.dayLon + this.dayNho) * this.chieuCao) / 2;
}

@Override
public long tinhTien() {
return this.donGia * (long) this.tinhDienTich() * 90 / 100;
}

public void nhap() {


super.nhap();
do {
System.out.print("Nhập đáy lớn: ");
dayLon = scanner.nextInt();
System.out.print("Nhập đáy nhỏ: ");
dayNho = scanner.nextInt();
} while ((dayLon <= dayNho) || (dayLon <= 0) || (dayNho <= 0));
System.out.print("Nhập chiều cao: ");
chieuCao = scanner.nextInt();
}

@Override
public String toString() {
return super.toString() + ", đáy lớn: " + this.dayLon + ", đáy nhỏ: " +
this.dayNho + ", chiều cao: " + this.chieuCao;
}
}
// MiengDatHinhTamGiac.java
package baitapquanlybatdongsan;

public class MiengDatHinhTamGiac extends MiengDat {


private int chieuCao, day;

public MiengDatHinhTamGiac() {
super();
}

public MiengDatHinhTamGiac(int chieuCao, int day) {


super();
this.chieuCao = chieuCao;
this.day = day;
}

public int getChieuCao() {


return chieuCao;
}

public void setChieuCao(int chieuCao) {


this.chieuCao = chieuCao;
}

public int getDay() {


return day;
}

public void setDay(int day) {


this.day = day;
}

@Override
public void nhap() {
super.nhap();
do {
System.out.print("Nhập đáy: ");
day = scanner.nextInt();
System.out.print("Nhập chiều cao: ");
chieuCao = scanner.nextInt();
} while ((day < 0) || (chieuCao < 0));
}

@Override
public double tinhDienTich() {
return (this.day * this.chieuCao) / 2;
}

@Override
public long tinhTien() {
return this.donGia * (long) this.tinhDienTich() * 90 / 100;
}

@Override
public String toString() {
return super.toString() + ", đáy: " + this.day +
", chiều cao: " + this.chieuCao;
}
}
//Main.java
package baitapquanlybatdongsan;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {


int choose;
Scanner scanner = new Scanner(System.in);
ArrayList<MiengDat> arrMiengDat = new ArrayList<>();
MiengDat miengDat;
System.out.print("Nhập số lượng miếng đất: ");
int soMiengDat = scanner.nextInt();

for (int i = 0; i < soMiengDat; i++) {


System.out.println("Nhập thông tin miếng đất thứ " + (i + 1) + ": ");
System.out.print("Chọn hình dạng miếng đất (0 - đất hình chữ nhật, "
+ "1 - đất hình thang, 2 - đất hình tam giác): ");
choose = scanner.nextInt();
switch(choose) {
case 0:
miengDat = new MiengDatHinhChuNhat();
miengDat.nhap();
arrMiengDat.add(miengDat);
break;
case 1:
miengDat = new MiengDatHinhThang();
miengDat.nhap();
arrMiengDat.add(miengDat);
break;
case 2:
miengDat = new MiengDatHinhTamGiac();
miengDat.nhap();
arrMiengDat.add(miengDat);
break;
default:
System.out.println("Bạn nhập không đúng. Mời nhập lại");
break;
}
}

System.out.println("Hiển thị thông tin những miếng đất của công ty");
for (MiengDat dat : arrMiengDat) {
System.out.println(dat.toString());
}

// tính tổng diện tích các miếng đất


double tongDienTich = 0;
for (MiengDat dat : arrMiengDat) {
tongDienTich += dat.tinhDienTich();
}
System.out.println("Tổng diện tích các miếng đất = " + tongDienTich);

// tính tổng giá tiền các miếng đất


long tongGiaTien = 0;
for (MiengDat dat : arrMiengDat) {
tongGiaTien += dat.tinhTien();
}
System.out.println("Tổng giá tiền các miếng đất = " + tongGiaTien);
}
}

You might also like