Java - Viết chương trình quản lý giao dịch nhà đất.

Xây dựng chương trình quản lý danh sách các giao dịch nhà đất. Thông tin bao gồm:

  • Giao dịch đất: Mã giao dịch, ngày giao dịch (ngày, tháng, năm), đơn giá, loại đất (loại A, B, C), diện tích. Nếu là loại B, C thì thành tiền = diện tích * đơn giá. Nếu là loại A thì thành tiền = diện tích * đơn giá * 1.5.
  • Giao dịch nhà: Mã giao dịch, ngày giao dịch (ngày, tháng, năm), đơn giá, loại nhà (cao cấp, thường), địa chỉ, diện tích. Nếu là loại nhà cao cấp thì thành tiền = diện tích * đơn giá, nếu là loại thường thì thành tiền = diện tích * đơn giá * 90%.

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

  • Xây dựng các lớp với quan hệ thừa kế.
  • Nhập xuất danh sách các giao dịch.
  • Tính trung bình thành tiền của giao dịch đất.
  • Xuất ra các giao dịch của tháng 9 năm 2013.

Bài giải

-------------------- ######## --------------------

GiaoDich.java
package baitapquanlynhadat;

import java.util.Scanner;

public class GiaoDich {
	private String maGiaoDich, ngayGiaoDich;
	private long donGia;
	private float dienTich;
	Scanner scanner = new Scanner(System.in);
	
	public GiaoDich() {
		super();
	}

	public GiaoDich(String maGiaoDich, String ngayGiaoDich, long donGia, float dienTich) {
		super();
		this.maGiaoDich = maGiaoDich;
		this.ngayGiaoDich = ngayGiaoDich;
		this.donGia = donGia;
		this.dienTich = dienTich;
	}

	public String getMaGiaoDich() {
		return maGiaoDich;
	}

	public void setMaGiaoDich(String maGiaoDich) {
		this.maGiaoDich = maGiaoDich;
	}

	public String getNgayGiaoDich() {
		return ngayGiaoDich;
	}

	public void setNgayGiaoDich(String ngayGiaoDich) {
		this.ngayGiaoDich = ngayGiaoDich;
	}

	public long getDonGia() {
		return donGia;
	}

	public void setDonGia(long donGia) {
		this.donGia = donGia;
	}

	public float getDienTich() {
		return dienTich;
	}

	public void setDienTich(float dienTich) {
		this.dienTich = dienTich;
	}
	
	public void nhap() {
		System.out.print("Nhập mã giao dịch: ");
		maGiaoDich = scanner.nextLine();
		System.out.print("Nhập ngày giao dịch (ngày/tháng/năm): ");
		ngayGiaoDich = scanner.nextLine();
		System.out.print("Nhập đơn giá: ");
		donGia = Long.parseLong(scanner.nextLine());
		System.out.print("Nhập diện tích: ");
		dienTich = Float.parseFloat(scanner.nextLine());
	}
	
	@Override
	public String toString() {
		return "Mã giao dịch: " + this.maGiaoDich + ", ngày giao dịch: " + this.ngayGiaoDich + 
			", đơn giá: " + this.donGia + ", diện tích: " + this.dienTich;
	}
}

GiaoDichDat.java
package baitapquanlynhadat;

public class GiaoDichDat extends GiaoDich {
	private String loaiDat;

	public GiaoDichDat() {
		super();
	}

	public GiaoDichDat(String loaiDat) {
		super();
		this.loaiDat = loaiDat;
	}

	public String getLoaiDat() {
		return loaiDat;
	}

	public void setLoaiDat(String loaiDat) {
		this.loaiDat = loaiDat;
	}
	
	public void nhap() {
		super.nhap();
		System.out.print("Nhập loại đất (A/B/C): ");
		loaiDat = scanner.nextLine();
	}

	@Override
	public String toString() {
		return super.toString() + ", loại đất: " + this.loaiDat;
	}
}

GiaoDichNha.java
package baitapquanlynhadat;

public class GiaoDichNha extends GiaoDich {
	private String loaiNha, diaChi;
	private int choose;
	
	public GiaoDichNha() {
		super();
	}

	public GiaoDichNha(String loaiNha, String diaChi) {
		super();
		this.loaiNha = loaiNha;
		this.diaChi = diaChi;
	}

	public String getLoaiNha() {
		return loaiNha;
	}

	public void setLoaiNha(String loaiNha) {
		this.loaiNha = loaiNha;
	}

	public String getDiaChi() {
		return diaChi;
	}

	public void setDiaChi(String diaChi) {
		this.diaChi = diaChi;
	}
	
	public void nhap() {
		super.nhap();
		System.out.print("Nhập địa chỉ: ");
		diaChi = scanner.nextLine();
		System.out.print("Nhập loại nhà (0: cao cấp, 1: thường): ");
		choose = scanner.nextInt();
		switch (choose) {
			case 0:
				loaiNha = "cao cấp";
				break;
			case 1: 
				loaiNha = "thường";
				break;
			default:
				System.out.println("Chọn số không hợp lệ.");
				break;
		}
	}
	
	@Override
	public String toString() {
		return super.toString() + ", loại nhà: " + this.loaiNha + ", địa chỉ: " + this.diaChi;
	}
}

Main.java
package baitapquanlynhadat;

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

public class Main {

	public static void main(String[] args) {
		ArrayList<GiaoDichNha> arrGiaoDichNha = new ArrayList<>();
		ArrayList<GiaoDichDat> arrGiaoDichDat = new ArrayList<>();
		int soGiaoDichDat = 0, soGiaoDichNha = 0;
		long tongTienGiaoDichDat = 0, trungBinhThanhTien = 0;
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("Nhập số giao dịch đất: ");
		soGiaoDichDat = scanner.nextInt();
		System.out.print("Nhập số giao dịch nhà: ");
		soGiaoDichNha = scanner.nextInt();
		
		System.out.println("Nhập thông tin giao dịch đất:");
		for (int i = 0; i < soGiaoDichDat; i++) {
			System.out.println("Nhập thông tin giao dịch đất thứ " + (i + 1) + ":");
			GiaoDichDat giaoDichDat = new GiaoDichDat();
			giaoDichDat.nhap();
			arrGiaoDichDat.add(giaoDichDat);
		}
		
		System.out.println("Nhập thông tin giao dịch nhà:");
		for (int i = 0; i < soGiaoDichNha; i++) {
			System.out.println("Nhập thông tin giao dịch nhà thứ " + (i + 1) + ":");
			GiaoDichNha giaoDichNha = new GiaoDichNha();
			giaoDichNha.nhap();
			arrGiaoDichNha.add(giaoDichNha);
		}
		
		System.out.println("---Thông tin các giao dịch đất---");
		for (int i = 0; i < arrGiaoDichNha.size(); i++) {
			System.out.println(arrGiaoDichDat.get(i).toString());
		}
		
		System.out.println("---Thông tin các giao dịch nhà---");
		for (int i = 0; i < arrGiaoDichNha.size(); i++) {
			System.out.println(arrGiaoDichNha.get(i).toString());
		}
		
		for (int i = 0; i < arrGiaoDichDat.size(); i++) {
			if (arrGiaoDichDat.get(i).getLoaiDat().equalsIgnoreCase("A")) {
				tongTienGiaoDichDat += arrGiaoDichDat.get(i).getDienTich() * 
					arrGiaoDichDat.get(i).getDonGia() * 1.5;
			} else if (arrGiaoDichDat.get(i).getLoaiDat().equalsIgnoreCase("B") || 
					arrGiaoDichDat.get(i).getLoaiDat().equalsIgnoreCase("C")) {
				tongTienGiaoDichDat += arrGiaoDichDat.get(i).getDienTich() * 
					arrGiaoDichDat.get(i).getDonGia();
			}
		}
		trungBinhThanhTien = tongTienGiaoDichDat / (arrGiaoDichDat.size());
		System.out.println("Trung bình thành tiền của giao dịch đất = " + trungBinhThanhTien);
		
		// xuất ra các giao dịch của tháng 9 năm 2013
		System.out.println("Các giao dịch đất của tháng 9 năm 2013: ");
		for (int i = 0; i < arrGiaoDichDat.size(); i++) {
			String[] dateGiaoDichDat = arrGiaoDichDat.get(i).getNgayGiaoDich().split("/");
			if (dateGiaoDichDat[1].equals("9") && dateGiaoDichDat[2].equals("2013")) {
				System.out.println(arrGiaoDichDat.get(i).toString());
			}
		}
		
		System.out.println("Các giao dịch nhà của tháng 9 năm 2013: ");
		for (int i = 0; i < arrGiaoDichNha.size(); i++) {
			String[] dateGiaoDichNha = arrGiaoDichNha.get(i).getNgayGiaoDich().split("/");
			if (dateGiaoDichNha[1].equals("9") && dateGiaoDichNha[2].equals("2013")) {
				System.out.println(arrGiaoDichNha.get(i).toString());
			}
		}
	}

}

Kết quả sau khi biên dịch chương trình:

Nguồn: freetuts.net