Bài 14- Bài toán quản lý thông tin xe với ArrayList với lớp trừu tượng

  Bài 14 , Với 1 tập mini các loại xe trong thế giới thực cho bên dưới: Xe đạp điện, xe máy, xe trẻ con, xe đạp, ô tô tải, xe hơi Yêu cầu ...

 

Bài 14, Với 1 tập mini các loại xe trong thế giới thực cho bên dưới:
Xe đạp điện, xe máy, xe trẻ con, xe đạp, ô tô tải, xe hơi
Yêu cầu quản lý:
  1. Thông tin từng loại xe
  1. Tính tiền thuế cho từng chiếc xe dựa trên giá trị xe như sau:
  • Xe đạp: Không đóng thuế
  • Xe máy: VAT=10% và thuế trước bạ 5%
  • Xe ô tô khách: Thuế tiêu thụ đặc biệt 30%(số chỗ >=5), 50%(Số chỗ <5), thuế VAT=10%, thuế trước bạ 20%
  • Xe ô tô tải: VAT=10%, thuế trước bạ 2%
Yêu cầu sinh viên:
  1. Dùng kiến thức mô hình hoá dữ liệu trong lập trình hướng đối tượng để xây dựng các lớp
  1. Thiết kế mô hình cây phân bố các lớp. Mối quan hệ giữa các lớp và interface
  1. Chuyển từ mô hình trên sang ngôn ngữ lập trình java. (Chuyển sang thiết kế các lớp và interface tương ứng bằng ngôn ngữ lập trình java)
  1. Cài đặt test chương trình
Thực ra, với thời gian thi thực hành gấp rút, nên mình không thể làm nổi bật sự ưu việt của interface, abstract. Nhưng vẫn đạt yêu cầu thầy cô rồi!
Nên code bài này viết cũng không hay cho lắm. Có thời gian sẽ viết lại.
Nếu bạn vẫn thắc mắc thì hãy đọc một bài khá hay về interface, abstract: https://vntalking.com/interface-trong-java-ban-da-hieu-dung.html

Code đầy đủ:

  • Phần dưới có thể thiếu, tải về đây để đúng yêu cầu bài
  • Code để tham khảo, Chúc các bạn sẽ học tập tốt.

Tạo lớp abstract xe.java để quản lý xe

Không khác gì so với việc sử dụng class. Vì bài này khai triển không được nhiều...
package TH5.bai14;
import java.util.Scanner;
abstract class xe {
public String tenXe, mauSac;
public float tienThue, giaBan, thueTruocBa, thueDacBiet;
public xe() {
tenXe = "";
mauSac = "";
tienThue = 0.0f;
giaBan = 0.0f;
}
public xe(String tienXe, String mauSac, float tienThue, float giaBan, float thueTruocBa, float thueDacBiet) {
this.tenXe = tienXe;
this.giaBan = giaBan;
this.mauSac = mauSac;
this.tienThue = tienThue;
this.thueTruocBa = thueTruocBa;
this.thueDacBiet = thueDacBiet;
}
public void nhap() {
Scanner sc = new Scanner(System.in);
System.out.print("Nhap vao ten xe: ");
tenXe = sc.nextLine();
System.out.print("Nhap vao mau xe: ");
mauSac = sc.nextLine();
System.out.print("Nhap vao gia ban: ");
giaBan = sc.nextFloat();
}
public float thue() {
return (float)(giaBan*0.1);
}
public void xuat() {
System.out.print("\nTen xe: "+ tenXe);
System.out.print("\nMau xe: "+ mauSac);
System.out.print("\nGia ban: "+ giaBan);
}
}

Tạo interface info.java để khai báo hàm trừu tượng

package TH5.bai14;
public interface info {
public void nhap();
public void xuat();
}

Tạo lớp xeDap.java 

package TH5.bai14;
import java.util.Scanner;
public class xeDap extends xe implements info{
public int soBanh;
public xeDap() {
super();
soBanh= 0;
}
public xeDap(int soBanh) {
this.soBanh = soBanh;
}
public void nhap() {
super.nhap();
Scanner sc = new Scanner(System.in);
System.out.print("Nhap so banh: ");
soBanh = sc.nextInt();
}
public float thue() {
tienThue= super.thue();
return tienThue;
}
public void xuat() {
super.xuat();
System.out.print("\nso Banh xe: "+ soBanh);
System.out.print("\nTien thue: "+thue());
}
}

Tạo lớp xeMay.java

package TH5.bai14;
import java.util.Scanner;
public class xeMay extends xe implements info{
public float dungTich;
public xeMay() {
super();
dungTich= 0.0f;
}
public xeMay(float dungTich) {
this.dungTich = dungTich;
}
public void nhap() {
super.nhap();
Scanner sc = new Scanner(System.in);
System.out.print("Nhap dung tich xe: ");
dungTich = sc.nextFloat();
}
public float thue() {
tienThue= super.thue()+(float)(giaBan*0.05);
return tienThue;
}
public void xuat() {
super.xuat();
System.out.print("\nDung tich xe: "+ dungTich);
System.out.print("\nTien thue: "+thue());
}
}

 Tạo lớp oToTai.java

package TH5.bai14;
import java.util.Scanner;
public class oToTai extends xe implements info{
public float trongTai;
public oToTai() {
super();
trongTai= 0.0f;
}
public oToTai(float dungTich) {
this.trongTai = dungTich;
}
public void nhap() {
super.nhap();
Scanner sc = new Scanner(System.in);
System.out.print("Nhap trong tai xe: ");
trongTai = sc.nextFloat();
}
public float thue() {
tienThue= super.thue()+(float)(giaBan*0.02);
return tienThue;
}
public float getThue(){
return tienThue;
};
public void xuat() {
super.xuat();
System.out.print("\nTrong tai xe: "+ trongTai);
System.out.print("\nTien thue: "+thue());
}
}

Tạo lớp oToKhach.java

package TH5.bai14;
import java.util.Scanner;
public class oToKhach extends xe implements info{
public int soCho;
public oToKhach() {
super();
soCho= 0;
}
public oToKhach(int soCho) {
this.soCho = soCho;
}
public void nhap() {
super.nhap();
Scanner sc = new Scanner(System.in);
System.out.print("Nhap so cho xe: ");
soCho = sc.nextInt();
}
public float thue() {
if(soCho >=5) {
tienThue= super.thue()+(float)(giaBan*0.5);
}
else {
tienThue= super.thue()+(float)(giaBan*0.7);
}
return tienThue;
}
public void xuat() {
super.xuat();
System.out.print("\nSo cho tren xe: "+ soCho);
System.out.print("\nTien thue: "+thue());
}
}

Tạo danhSach.java để quản lý theo yêu cầu bài

package TH5.bai14;
import java.util.Scanner;
import java.util.ArrayList;
public class danhSach {
int dem;
ArrayList<xe> DS;
public void nhapDSXe(){
Scanner input = new Scanner(System.in);
int i, n, k;
dem=0;
System.out.print("\nNhap so xe: ");
n = input.nextInt();
DS = new ArrayList<>(n); // cap phat bo nho cho DS
for (i = 0; i < n; i++) {
System.out.print("\nCac loai xe nhap(1: xe dap, 2: xe may, 3: xe tai, 4: xe khach): ");
k = input.nextInt();
if (k == 1) {
xeDap x= new xeDap();
x.nhap();
DS.add(x);
}
else if(k == 2) {
xeMay x= new xeMay();
x.nhap();
DS.add(x);
}
else if(k == 3) {
oToTai x= new oToTai();
x.nhap();
DS.add(x);
}
else if(k == 4) {
oToKhach x= new oToKhach();
x.nhap();
DS.add(x);
dem++;
}
else i--;
}
}
public void xuatDSXe() {
for(xe x:DS) {
x.xuat();
}
}
public void demXeKhach() {
System.out.printf("\n\nSo xe khach la: %d\n",dem);
}
public void thueTai() {
float max = 0.0f;
for( xe x:DS) {
if(x instanceof oToTai && ((oToTai) x).getThue()>max){
max = ((oToTai) x).getThue();
}
}
System.out.printf("\nThue o to tai cao nhat la: %.0f\n",max);
}
public void dSXeDap() {
for(xe x:DS) {
if(x instanceof xeDap && ((xeDap) x).soBanh>0) {
x.xuat();
}
}
}
}

Tạo bai14.java để gọi hàm main()

Xem và tải từ phần code đầy đủ

Kết quả test


"/Users/danh/Documents/xxx/th_lthdt/out/production/th_lthdt" 
Nhap so xe: 4

Cac loai xe nhap(1: xe dap, 2: xe may, 3: xe tai, 4: xe khach): 2
Nhap vao ten xe: honda
Nhap vao mau xe: den
Nhap vao gia ban: 300
Nhap dung tich xe: 21

Cac loai xe nhap(1: xe dap, 2: xe may, 3: xe tai, 4: xe khach): 1
Nhap vao ten xe: viet nhat
Nhap vao mau xe: trag
Nhap vao gia ban: 30
Nhap so banh: 2

Cac loai xe nhap(1: xe dap, 2: xe may, 3: xe tai, 4: xe khach): 3
Nhap vao ten xe: truong phat
Nhap vao mau xe: xanh
Nhap vao gia ban: 500
Nhap trong tai xe: 12

Cac loai xe nhap(1: xe dap, 2: xe may, 3: xe tai, 4: xe khach): 4
Nhap vao ten xe: truong hai
Nhap vao mau xe: tin
Nhap vao gia ban: 900
Nhap so cho xe: 30

DANH SACH XE : 
Ten xe: honda
Mau xe: den
Gia ban: 300.0
Dung tich xe: 21.0
Tien thue: 45.0
Ten xe: viet nhat
Mau xe: trag
Gia ban: 30.0
so Banh xe: 2
Tien thue: 3.0
Ten xe: truong phat
Mau xe: xanh
Gia ban: 500.0
Trong tai xe: 12.0
Tien thue: 60.0
Ten xe: truong hai
Mau xe: tin
Gia ban: 900.0
So cho tren xe: 30
Tien thue: 540.0

So xe khach la: 1

Thue o to tai cao nhat la: 60

Danh sach xe dap: 
Ten xe: viet nhat
Mau xe: trag
Gia ban: 30.0
so Banh xe: 2
Tien thue: 3.0
Process finished with exit code 0

COMMENTS

BLOGGER
Tên

bài viết hay,4,Bài viết khác,1,cấu trúc dữ liệu và giải thuật,3,fithou,36,ghim,4,giải tích 2,1,Hướng dẫn,5,Lập trình C,1,lập trình hướng đối tượng,3,Lập trình java,1,phần mềm,2,phần mềm lập trình,2,sách,1,tác phẩm đồ họa,3,tản mạn,4,Thiết kế web,3,thực hành lập trình cơ sở,18,thực hành lập trình hướng đối tượng,16,
ltr
item
Blog NDanh: Bài 14- Bài toán quản lý thông tin xe với ArrayList với lớp trừu tượng
Bài 14- Bài toán quản lý thông tin xe với ArrayList với lớp trừu tượng
https://1.bp.blogspot.com/-zURJTAMKo_I/XuWEbXcJNeI/AAAAAAAAg2o/rhld8VOAUAk9VU_-rGTV7YmrKLCjevzuwCK4BGAsYHg/d/banner-blog.png
https://1.bp.blogspot.com/-zURJTAMKo_I/XuWEbXcJNeI/AAAAAAAAg2o/rhld8VOAUAk9VU_-rGTV7YmrKLCjevzuwCK4BGAsYHg/s72-c-d/banner-blog.png
Blog NDanh
https://blog.ndanh.com/2020/04/bai-14-bai-toan-quan-ly-thong-tin-xe.html
https://blog.ndanh.com/
https://blog.ndanh.com/
https://blog.ndanh.com/2020/04/bai-14-bai-toan-quan-ly-thong-tin-xe.html
true
1596452775547375681
UTF-8
Tải tất cả bài viết Không tìm thấy bài viết nào XEM TẤT CẢ Đọc thêm Trả lời Hủy trả lời Xóa Bởi Trang chủ PAGES POSTS Xem tất cả Bài viết đề xuất CHỦ ĐỀ LƯU TRỮ SEARCH TẤT CẢ BÀI VIẾT Không tìm thấy nội dung của bạn Quay về trang chủ Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow CHIA SẺ ĐỂ XEM NỘI DUNG Bước 1: Chia sẻ lên facebook chế độ công khai Bước 2: Vào facebook, ấn vào bài đã chia sẻ công khai để hiện nội dung! Click Copy All Code Select All Code Code của bạn đã được copy Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content