Java - Viết chương trình quản lý thông tin các chuyến xe.

Công ty du lich V quản lý thông tin của các chuyến xe. Thông tin của 2 loại chuyến xe:

  • Chuyến xe nội thành: Mã số chuyến, họ tên tài xế, số xe, số tuyến, số km đi được, doanh thu.
  • Chuyến xe ngoại thành: Mã số chuyến, họ tên tài xế, số xe, nơi đến, số ngày đi được, doanh thu.

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 có quan hệ thừa kế.
  • Nhập, xuất danh sách các chuyến xe.
  • Tính tổng doanh thu cho từng loại xe.

Bài giải

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

Hướng dẫn:

Bước 1: Xây dựng lớp ChuyenXe bao gồm các thuộc tính chung của 2 loại chuyến xe nội thành và ngoại thành đó là mã số chuyến, họ tên tài xế, số xe, doanh thu.

Bước 2: Xây dựng lớp ChuyenXeNoiThanh kế thừa lớp ChuyenXe và có các thuộc tính riêng là số tuyến, số km đi được.

Bước 3: Xây dựng lớp ChuyenXeNgoaiThanh kế thừa lớp ChuyenXe và có các thuộc tính riêng là nơi đến, số ngày đi được.

Bước 4: Xây dựng lớp Main nhập, hiển thị thông tin các chuyến xe và tính tổng doanh thu cho từng loại xe.

ChuyenXe.java
package baitapquanlychuyenxe;

import java.util.Scanner;

public class ChuyenXe {
	protected String maSoChuyen, hoTenTaiXe, soXe;
	protected double doanhThu;
	Scanner scanner = new Scanner(System.in);
	
	public ChuyenXe() {
		super();
		this.maSoChuyen = "";
		this.hoTenTaiXe = "";
		this.soXe = "";
		this.doanhThu = 0;
	}

	public ChuyenXe(String maSoChuyen, String hoTenTaiXe, String soXe, double doanhThu) {
		super();
		this.maSoChuyen = maSoChuyen;
		this.hoTenTaiXe = hoTenTaiXe;
		this.soXe = soXe;
		this.doanhThu = doanhThu;
	}

	public String getMaSoChuyen() {
		return maSoChuyen;
	}

	public void setMaSoChuyen(String maSoChuyen) {
		this.maSoChuyen = maSoChuyen;
	}

	public String getHoTenTaiXe() {
		return hoTenTaiXe;
	}

	public void setHoTenTaiXe(String hoTenTaiXe) {
		this.hoTenTaiXe = hoTenTaiXe;
	}

	public String getSoXe() {
		return soXe;
	}

	public void setSoXe(String soXe) {
		this.soXe = soXe;
	}

	public double getDoanhThu() {
		return doanhThu;
	}

	public void setDoanhThu(double doanhThu) {
		this.doanhThu = doanhThu;
	}
	
	public void nhapThongTinChuyenXe() {
		System.out.print("Nhập mã số chuyến: ");
		maSoChuyen = scanner.nextLine();
		System.out.print("Nhập họ tên tài xế: ");
		hoTenTaiXe = scanner.nextLine();
		System.out.print("Nhập số xe: ");
		soXe = scanner.nextLine();
		System.out.print("Nhập doanh thu: ");
		doanhThu = scanner.nextDouble();
	}
	
	public String toString() {
		return "Mã số chuyến: " + this.maSoChuyen + ", họ tên tài xế: " + this.hoTenTaiXe
				+ ", số xe: " + this.soXe + ", doanh thu: " + this.doanhThu;
	}
}

ChuyenXeNoiThanh.java
package baitapquanlychuyenxe;

public class ChuyenXeNoiThanh extends ChuyenXe {
	private String soTuyen;
	private double soKmDiDuoc;
	
	public ChuyenXeNoiThanh() {
		super();
	}

	public ChuyenXeNoiThanh(String soTuyen, double soKmDiDuoc) {
		super();
		this.soTuyen = soTuyen;
		this.soKmDiDuoc = soKmDiDuoc;
	}

	public double getSoKmDiDuoc() {
		return soKmDiDuoc;
	}

	public void setSoKmDiDuoc(double soKmDiDuoc) {
		this.soKmDiDuoc = soKmDiDuoc;
	}

	public Scanner getScanner() {
		return scanner;
	}

	public void setScanner(Scanner scanner) {
		this.scanner = scanner;
	}
	
	public void nhapThongTinChuyenXe() {
		super.nhapThongTinChuyenXe();	// gọi hàm nhapThongTinChuyenXe() của lớp ChuyenXe
		System.out.print("Nhập số tuyến: ");
		soTuyen = scanner.nextLine();
		System.out.print("Nhập số km đi được: ");
		soKmDiDuoc = scanner.nextDouble();
	}
	
	public String toString() {
		return super.toString() + ", số tuyến: " + this.soTuyen + 
				", số km đi được: " + this.soKmDiDuoc;
	}
}

ChuyenXeNgoaiThanh.java
package baitapquanlychuyenxe;

public class ChuyenXeNgoaiThanh extends ChuyenXe {
	private String noiDen;
	private int soNgayDiDuoc;
	
	public ChuyenXeNgoaiThanh() {
		super();
		this.noiDen = "";
		this.soNgayDiDuoc = 0;
	}

	public ChuyenXeNgoaiThanh(String noiDen, int soNgayDiDuoc) {
		super();
		this.noiDen = noiDen;
		this.soNgayDiDuoc = soNgayDiDuoc;
	}

	public String getNoiDen() {
		return noiDen;
	}

	public void setNoiDen(String noiDen) {
		this.noiDen = noiDen;
	}

	public int getSoNgayDiDuoc() {
		return soNgayDiDuoc;
	}

	public void setSoNgayDiDuoc(int soNgayDiDuoc) {
		this.soNgayDiDuoc = soNgayDiDuoc;
	}
	
	public void nhapThongTinChuyenXe() {
		super.nhapThongTinChuyenXe();
		System.out.print("Nhập nơi đến: ");
		noiDen = scanner.nextLine();
		System.out.print("Nhập số ngày đi được: ");
		soNgayDiDuoc = scanner.nextInt();
	}
	public String toString() {
		return super.toString() + ", nơi đến: " + this.noiDen + ", số ngày đi được: " + 
				this.soNgayDiDuoc;
	}
}

Main.java
package baitapquanlychuyenxe;

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

public class Main {

	public static void main(String[] args) {
		ArrayList<ChuyenXeNoiThanh> arrChuyenXeNoiThanh = new ArrayList<>();
		ArrayList<ChuyenXeNgoaiThanh> arrChuyenXeNgoaiThanh = new ArrayList<>();
		int soChuyenNoiThanh, soChuyenNgoaiThanh;
		double doanhThuXeNoiThanh = 0, doanhThuXeNgoaiThanh = 0;
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("Nhập số chuyến xe nội thành: ");
		soChuyenNoiThanh = scanner.nextInt();
		System.out.print("Nhập số chuyến xe ngoại thành: ");
		soChuyenNgoaiThanh = scanner.nextInt();
		
		System.out.println("Nhập thông tin chuyến xe nội thành:");
		for (int i = 0; i < soChuyenNoiThanh; i++) {
			System.out.println("Nhập thông tin chuyến xe thứ " + (i + 1) + ":");
			ChuyenXeNoiThanh chuyenXeNoiThanh = new ChuyenXeNoiThanh();
			chuyenXeNoiThanh.nhapThongTinChuyenXe();
			doanhThuXeNoiThanh += chuyenXeNoiThanh.getDoanhThu();
			arrChuyenXeNoiThanh.add(chuyenXeNoiThanh);
		}
		
		System.out.println("Nhập thông tin chuyến xe ngoại thành:");
		for (int i = 0; i < soChuyenNgoaiThanh; i++) {
			System.out.println("Nhập thông tin chuyến xe thứ " + (i + 1) + ":");
			ChuyenXeNgoaiThanh chuyenXeNgoaiThanh = new ChuyenXeNgoaiThanh();
			chuyenXeNgoaiThanh.nhapThongTinChuyenXe();
			doanhThuXeNgoaiThanh += chuyenXeNgoaiThanh.getDoanhThu();
			arrChuyenXeNgoaiThanh.add(chuyenXeNgoaiThanh);
		}
		
		System.out.println("-----Thông tin chuyến xe nội thành-----");
		for (int i = 0; i < arrChuyenXeNoiThanh.size(); i++) {
			System.out.println(arrChuyenXeNoiThanh.get(i).toString());
		}
		
		System.out.println("-----Thông tin chuyến xe ngoại thành-----");
		for (int i = 0; i < arrChuyenXeNgoaiThanh.size(); i++) {
			System.out.println(arrChuyenXeNgoaiThanh.get(i).toString());
		}
		
		System.out.println("Doanh thu từng chuyến xe: ");
		System.out.println("Doanh thu chuyến xe nội thành: " + doanhThuXeNoiThanh);
		System.out.println("Doanh thu chuyến xe ngoại thành: " + doanhThuXeNgoaiThanh);
	}

}

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

Nguồn: freetuts.net