Trường đại học cần quản lý lương tháng các đối tượng của trường gồm:
- CHUYÊN VIÊN: là cán bộ làm tại các phòng ban, thông tin của chuyên viên gồm: mã chuyên viên, họ tên, hệ số lương, tên phòng ban làm, tiền lương tăng
thêm.
- GIẢNG VIÊN: là cán bộ giảng dạy tại các khoa, thông tin của giảng viên gồm: mã chuyên viên, họ tên, hệ số lương, tên khoa giảng dạy, nhóm môn giảng dạy.
- QUẢN LÝ: là cán bộ làm công tác quản lý (trưởng phó) tại các khoa và các phòng ban, thông tin của quản lý gồm: mã chuyên viên, họ tên, hệ số lương, hệ số phụ cấp.
Cán bộ quản lý của nhà trường cần quản lý các thông tin sau:
- Thông tin từng cán bộ (thông tin chung và thông tin riêng của đối tượng)
- Tính tiền lương cho từng cán bộ theo nguyên tắc:
  • CHUYÊN VIÊN: tiền lương = Hệ số lương * 1.650.000 + tiền lương tăng thêm; 
  • GIẢNG VIÊN: tiền lương = (Hệ số lương * 1.650.000) + phụ cấp đặc biệt ngành (20% lương);
  • QUẢN LÝ: tiền lương = (hệ số lương + hệ số phụ cấp) * 1.650.000;
Yêu cầu thực hiện: - Dùng kiến thức mô hình hóa dữ liệu trong lập trình hướng đối tượng để xây dựng
các lớp (có kế thừa). Vẽ sơ đồ phân cấp các lớp tương ứng.
- Chương trình thực hiện được các yêu cầu quản lý sau:
  • Lưu trữ danh sách cán bộ của nhà trường (Dùng ArrayList, dùng chung một
  • danh sách)
  • Thêm một cán bộ bất kỳ vào danh sách
  • Hiển thị danh sách cán bộ đã có
  • Tính tổng tiền lương tất cả các cán bộ
  • Hiển thị thông tin của các cán bộ là CHUYÊN VIÊN
  • Hiển thị thông tin của các cán bộ là QUẢN LÝ có phụ cấp > 0.6
  • Sắp xếp danh sách cán bộ theo Họ tên
  • Sắp xếp danh sách cán bộ theo Tiền Lương

Bài làm 

I, Sơ đồ kế thừa các lớp


 II, Tải về code đầy đủ

III, Triển khai 

1, Xây dựng lớp người( Class person) để quản lý các thuộc tính chung họ tên, mã chuyên viên, hệ số lương.

package quanLyLuong;
import java.util.Scanner;
public class person {
public int maCV;
public String hoTen;
public double hSL;
public double tienLuong;
public person() {
maCV = 0;
hoTen = "";
hSL = 0.0;
tienLuong = 0.0;
}
public person(int maSV, String hoTen, double hSL, double tienLuong) {
this.hoTen = hoTen;
this.hSL = hSL;
this.maCV = maSV;
this.tienLuong = tienLuong;
}
public void nhap() {
Scanner input = new Scanner(System.in);
System.out.print("Nhap ho ten: ");
hoTen = input.nextLine();
System.out.print("Nhap ma chuyen vien: ");
maCV = input.nextInt();
System.out.print("Nhap he so luong: ");
hSL = input.nextDouble();
}
public String getHoTen() {
return hoTen;
}
public void xuat(){
System.out.print("\nHo ten: "+ hoTen);
System.out.print("\nMa chuyen vien: "+ maCV);
System.out.print("\nHe so luong: "+ hSL);
}
}

 2, Xây dựng lớp chuyenVien từ lớp person để quản lý cán bộ chuyên viên

package quanLyLuong;
import java.util.Scanner;
public class chuyenVien extends person {
public String tenPB;
public double tienTangThem;
public chuyenVien() {
super();
tenPB = "";
tienTangThem = 0.0;
}
public chuyenVien(String tenPB, double tienTangThem) {
this.tenPB = tenPB;
this.tienTangThem= tienTangThem;
}
public void nhap() {
super.nhap();
Scanner input = new Scanner(System.in);
System.out.print("Nhap ten phong ban: ");
tenPB = input.nextLine();
System.out.print("Nhap tien luong tang them: ");
tienTangThem = input.nextDouble();
}
public double tinhLuong() {
tienLuong = hSL*1650000+tienTangThem;
return tienLuong;
}
public void xuat() {
super.xuat();
System.out.print("\nTen phong ban: "+tenPB);
System.out.print("\nTien luong tang them: "+tienTangThem);
System.out.print("\nTien luong: "+tinhLuong()+"\n");
}
}

3, Xây dựng lớp giangVien kế thừa từ lớp person để quản lý cán bộ giảng viên

package quanLyLuong;
import java.util.Scanner;
public class giangVien extends person{
public String tenKhoa, nhomMon;
public giangVien() {
super();
tenKhoa = "";
nhomMon = "";
}
public giangVien(String tenKhoa, String nhomMon) {
this.tenKhoa = tenKhoa;
this.nhomMon = nhomMon;
}
public void nhap() {
super.nhap();
Scanner input = new Scanner(System.in);
System.out.print("Nhap ten khoa: "+tenKhoa);
tenKhoa = input.nextLine();
System.out.print("Nhap nhom mon: "+nhomMon);
nhomMon = input.nextLine();
}
public double tinhLuong() {
tienLuong = hSL*1650000*(1.2);
return tienLuong;
}
public void xuat() {
super.xuat();
System.out.print("\nTen khoa: "+tenKhoa);
System.out.print("\nNhom mon: "+nhomMon);
System.out.print("\nTien luong: "+tinhLuong()+"\n");
}
}

4, Xây dựng lớp quanLy kế thừa từ lớp person để quản lý cán bộ là quản lý

package quanLyLuong;
import java.util.Scanner;
public class quanLy extends person {
public double hSPC;
public quanLy() {
hSPC = 0.0;
}
public quanLy(double hSPC) {
super();
this.hSPC = hSPC;
}
public void nhap() {
super.nhap();
Scanner input = new Scanner(System.in);
System.out.print("Nhap he so phu cap: ");
hSPC = input.nextDouble();
}
double tinhLuong() {
tienLuong = (hSL+hSPC)*1650000;
return tienLuong;
}
public void xuat() {
super.xuat();
System.out.print("\nHe so phu cap: "+hSPC);
System.out.print("\nTien luong: "+tinhLuong()+"\n");
}
}

5, Xây dựng lớp danhSach để quản lý việc nhập danh sách, sắp xếp danh sách theo tên, theo hệ số lương,...

package quanLyLuong;
import java.util.*;
import java.util.Iterator;
public class danhSach {
ArrayList<person> DS;
public void nhapDS() {
Scanner input = new Scanner(System.in);
int i, n, k;
System.out.print("\nNhap so can bo: ");
n = input.nextInt();
DS = new ArrayList<>(n); // cap phat bo nho cho DS
for (i = 0; i < n; i++) {
System.out.print("\nCan bo can nhap(1: chuyen vien, 2: giang vien, 3: quan ly): ");
k = input.nextInt();
if (k == 1) {
chuyenVien x= new chuyenVien();
x.nhap();
DS.add(x);
}
else if(k == 2) {
giangVien x= new giangVien();
x.nhap();
DS.add(x);
}
else if(k == 3) {
quanLy x= new quanLy();
x.nhap();
DS.add(x);
}
else i--;
}
}
// in DS
public void inDS() {
System.out.print("\nDanh sach can bo:\n");
for(person x:DS) {
x.xuat();
}
}
public void tongTien() {
double s =0;
for(person x:DS) {
s+=x.tienLuong;
}
}
public void inQL6() {
System.out.print("\nDanh sach can bo quan ly co phu cap >0.6:\n");
for(person x:DS) {
if(x instanceof quanLy && ((quanLy) x).hSPC>0.6) {
x.xuat();
}
}
}
public void sapXepA(){
Collections.sort(DS, new Comparator<person>() {
@Override
public int compare(person s1, person s2) {
return (s1.getHoTen().compareTo(s2.getHoTen()));
}
});
System.out.print("\nDanh sach sau khi sap xep theo bang chu cai\n");
for(person x:DS) {
x.xuat();
}
}
public void sapXepLuong(){
Collections.sort(DS, new Comparator<person>() {
@Override
public int compare(person s1, person s2) {
if(s1.tienLuong < s2.tienLuong) {
return 1;
}
else if (s1.tienLuong == s2.tienLuong)
return 0;
else {
return -1;
}
}
});
System.out.print("\nDanh sach sau khi sap xep theo luong\n");
for(person x:DS) {
x.xuat();
}
}
} 6, Cuối cùng xây dựng class main để quản lý thứ tự các yêu cầu của bài toán
Xem code ở file tải về tại mục II

IV, Kết quả test

  • Nhập thông tin cán bộ
  • 
    
    Nhap so can bo: 4
    
    Can bo can nhap(1: chuyen vien, 2: giang vien, 3: quan ly): 2
    Nhap ho ten: Trinh Xuan
    Nhap ma chuyen vien: 142
    Nhap he so luong: 0.3
    Nhap ten khoa: CNTT
    Nhap nhom mon: HDT java
    
    Can bo can nhap(1: chuyen vien, 2: giang vien, 3: quan ly): 2
    Nhap ho ten: A Teo
    Nhap ma chuyen vien: 474
    Nhap he so luong: 2
    Nhap ten khoa: Kinh Te
    Nhap nhom mon: Triet hoc
    
    Can bo can nhap(1: chuyen vien, 2: giang vien, 3: quan ly): 3
    Nhap ho ten: Ngoc Danh
    Nhap ma chuyen vien: 212
    Nhap he so luong: 4
    Nhap he so phu cap: 0.7
    
    Can bo can nhap(1: chuyen vien, 2: giang vien, 3: quan ly): 1
    Nhap ho ten: My duyen
    Nhap ma chuyen vien: 232
    Nhap he so luong: 0.5
    Nhap ten phong ban: CNTT
    Nhap tien luong tang them: 200000
    
    
  • In thông tin cán bộ
    
    
    Danh sach can bo:
    
    Ho ten: Trinh Xuan
    Ma chuyen vien: 142
    He so luong: 0.3
    Ten khoa: CNTT
    Nhom mon: HDT java
    Tien luong: 594000.0
    
    Ho ten: A Teo
    Ma chuyen vien: 474
    He so luong: 2.0
    Ten khoa: Kinh Te
    Nhom mon: Triet hoc
    Tien luong: 3960000.0
    
    Ho ten: Ngoc Danh
    Ma chuyen vien: 212
    He so luong: 4.0
    He so phu cap: 0.7
    Tien luong: 7755000.0
    
    Ho ten: My duyen
    Ma chuyen vien: 232
    He so luong: 0.5
    Ten phong ban: CNTT
    Tien luong tang them: 200000.0
    Tien luong: 1025000.0
    
    
  • Cán bộ Quản lý có hệ số phụ cấp trên 0.6
    
    
    Danh sach can bo quan ly co phu cap >0.6:
    
    Ho ten: Ngoc Danh
    Ma chuyen vien: 212
    He so luong: 4.0
    He so phu cap: 0.7
    Tien luong: 7755000.0
    
  • Danh sách cán bộ sắp xếp theo bảng chữ cái

Danh sach sau khi sap xep theo bang chu cai

Ho ten: A Teo
Ma chuyen vien: 474
He so luong: 2.0
Ten khoa: Kinh te
Nhom mon: Triet hoc
Tien luong: 3960000.0

Ho ten: My Duyen
Ma chuyen vien: 232
He so luong: 0.5
Ten phong ban: CNTT
Tien luong tang them: 200000.0
Tien luong: 1025000.0

Ho ten: Ngoc Danh
Ma chuyen vien: 212
He so luong: 4.0
He so phu cap: 0.7
Tien luong: 7755000.0

Ho ten: Trinh Xuan
Ma chuyen vien: 142
He so luong: 0.3
Ten khoa: CNTT
Nhom mon: HDT java
Tien luong: 594000.0
  • Danh sách cán bộ sắp xếp theo lương
Danh sach sau khi sap xep theo luong

Ho ten: Ngoc Danh
Ma chuyen vien: 212
He so luong: 4.0
He so phu cap: 0.7
Tien luong: 7755000.0

Ho ten: A Teo
Ma chuyen vien: 474
He so luong: 2.0
Ten khoa: Kinh te
Nhom mon: Triet hoc
Tien luong: 3960000.0

Ho ten: My Duyen
Ma chuyen vien: 232
He so luong: 0.5
Ten phong ban: CNTT
Tien luong tang them: 200000.0
Tien luong: 1025000.0

Ho ten: Trinh Xuan
Ma chuyen vien: 142
He so luong: 0.3
Ten khoa: CNTT
Nhom mon: HDT java
Tien luong: 594000.0

Process finished with exit code 0