Professional Documents
Culture Documents
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.
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 NhanVien() {
super();
}
@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 LapTrinhVien() {
super();
}
@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 KiemChungVien() {
super();
}
@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;
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;
}
Bài 2 - Viết chương trình quản lý cán bộ của một trường đại hoc.
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).
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:
//CanBo.java
package baitapquanlycanbo;
import java.util.Scanner;
public CanBo() {
super();
}
@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 GiangVien() {
super();
}
@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 NhanVien() {
super();
}
@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;
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 NhanVien() {
super();
}
@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 NhanVienToanThoiGian() {
super();
}
@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 NhanVienThoiVu() {
super();
}
@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;
Bài 4 - Viết chương trình quản lý đất của công ty bất động sản.
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:
import java.util.Scanner;
public MiengDat() {
super();
}
@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 MiengDatHinhChuNhat() {
super();
}
@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 MiengDatHinhThang() {
super();
}
@Override
public double tinhDienTich() {
return ((this.dayLon + this.dayNho) * this.chieuCao) / 2;
}
@Override
public long tinhTien() {
return this.donGia * (long) this.tinhDienTich() * 90 / 100;
}
@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 MiengDatHinhTamGiac() {
super();
}
@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;
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());
}