You are on page 1of 5

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT

ĐẠI HỌC QUỐC GIA HÀ NỘI


NAM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Độc lập – Tự do – Hạnh phúc

ĐỀ THI CUỐI KỲ
Môn: Lập trình Java
Đề 4
Thời gian: 90 phút

Bài 1 (7đ)
Công ty Century chuyên thiết kế nhà ở tại thành phố Hà Nội. Công
ty có phần mềm quản lý nhân viên gồm 4 lớp:
Staff, Architect, Supervisor, và StaffManagement
 Lớp Staff (nhân viên) có các thuộc tính như sau: String id (mã
nhân viên), String name (họ và tên), int age (tuổi), int seniority
(thâm niên), double basicSalary (lương cơ bản), String email
(địa chỉ email).
 Lớp Architect (Kiến trúc sư) kế thừa từ lớp Staff và có thêm
các thuộc tính: int no_constructions (số lượng công trình đã
hoàn thiện thiết kế), double reward (tiền thưởng). Một kiến trúc
sư chỉ phụ trách thiết kế một trong hai lĩnh vực là biệt thự liền
kề hoặc chung cư.
 Lớp Supervisor (Nhân viên giám sát) kết thừa từ lớp Staff và
có thêm thuộc tính: int no_violates (số lượng lỗi phát hiện trong
thiết kế).
Hoàn thiện các phương thức sau:
 Phương thức getExpertise() ở lớp Architect. Chuyên môn thiết
kế của mỗi kiến trúc sư phụ trách được xác định dựa vào việc
phân tích tên miền trong địa chỉ email của kiến trúc sư. Cụ thể
thông tin về tên miền được cho tương ứng trong bảng dưới đây:
Tên Tên lĩnh vực phụ trách
miền
advl biệt thự liền kề (adjacent
villa)
apm chung cư (apartment)
Ví dụ:
- Địa chỉ email minhht@advl.cent.vn là kiến trúc sư phụ
trách thiết kế biệt thự liền kề
- Địa chỉ emal: duongkl@apm.cent.vn là kỹ thuật viên phụ
trách thiết kế chung cư
 Phương thức getSalary() ở lớp Architect và lớp Supervisor,
trong đó:
o Lương của kiến trúc sư = lương cơ bản + (số công trình đã
hoàn thiện thiết kế + thâm niên)* 300.000 + tiền thưởng
o Lương của nhân viên giám sát = lương cơ bản + thâm
niêm * 200.000 + số lỗi phát hiện trong thiết kế *150.000
 Phương thức public ArrayList<Staff>
readData(String fileName) ở lớp StaffManagement để
đọc vào một danh sách nhân viên từ tệp văn bản.
- Dòng đầu tiên là số lượng nhân viên
- Mỗi thuộc tính của một đối tượng được viết trên 1 dòng
theo thứ tự: index, id, name, age, seniority, basicSalary,
email. Trong đó, nếu index = 1 thì đối tượng được hiểu là
Architect và có thêm các thuộc tính no_constructions (số
lượng công trình đã hoàn thiện thiết kế ), reward (tiền
thưởng). Ngược lại, index = 0 thì đối tượng là
Supervisor có thêm 01 thuộc tính no_violates.
Ví dụ một file dư liệu đầu vào:
 Phương thức public void printInforStaffs(ArrayList
<Staff> staffs) để in ra thông tin của mỗi nhân viên trên một
dòng.
 Phương thức public void sortBySalary(ArrayList
<Staff> staffs) để sắp xếp lương các nhân viên theo thứ tự
giảm dần.
 Phương thức public ArrayList <Staff>
filterExpert(ArrayList <Staff> staffs, String
expertise) trả về những kiến trúc sư có chuyên môn thiết kế
expertise.
 hương thức public ArrayList <Staff>
filterSupervisorBySalary(ArrayList < Staff> staffs)
để tìm những nhân viên giám sát có mức lương cao hơn mức
lương thấp nhất của các kiến trúc sư.

Bài 2 (3 điểm)
Hoàn thiện các phương thức trong file ArrayUtils.java theo các yêu
cầu sau:
1. Phương thức public static int[][]
inputMatrix(Scanner reader) thực hiện nhập số nguyên
dương n và n*n số nguyên từ bàn phím, kết quả trả về là ma
trận kích thước n*n được nhập từ bàn phím.
2. Phương thức public static int findMax(int[][]
mat) trả về giá trị nhỏ nhất trong ma trận.
3. Phương thức public static int[]
findColumns(int[][] mat) trả về các cột có tổng lớn thứ
hai trong ma trận.

----------------------------------------Hết phần đề
bài--------------------------------------

Chú ý: Sinh viên đọc cẩn thận các lưu ý sau đây để tránh mắc các
lỗi khi làm bài
1. Sinh viên chỉ cần hoàn thiện các phương thức được yêu cầu,
tuyệt đối không chỉnh sửa nguyên mẫu (bao gồm danh sách đối
và kiểu dữ liệu trả về) của các phương thức này, chỉ viết thêm
vào phần nội dung phương thức.
2. Sinh viên có thể viết thêm các phương thức phụ trợ khác nếu cần,
tuy nhiên tốt nhất tránh đặt tên trùng với tên các phương thức đã
cho.
3. Các phương thức được chấm điểm độc lập, đúng phương thức
nào sẽ được điểm phương thức đó, tuy nhiên cần đảm bảo bài
làm có thể biên dịch và chạy được. Các bài có lỗi biên dịch, hoặc
không chạy được sẽ nhận điểm 0.
4. Các phương thức sinh viên chưa làm đến, hoặc không hoàn thiện
được thì để lại như nguyên mẫu ban đầu, không chỉnh sửa, thêm
bớt, tránh việc bài không biên dịch được.
5. Khi làm bài sinh viên có thể tự nộp bài và chấm điểm trên 1 bộ
test mẫu, kết quả này chỉ là kết quả tham khảo, bài làm của sinh
viên sẽ được chấm lại trên một bộ test khác và thông báo kết quả
sau.
6. Bài được sử dụng để chấm điểm cho sinh viên là bài nộp lần cuối
cùng trước khi hết giờ, các bài nộp trước đó không tính, do vậy
sinh viên hết sức chú ý và cẩn trọng khi nộp bài lần cuối.

You might also like