1. Viết chương trình bằng NNLT Java để khai báo lớp Sinh viên gồm: - Thuộc tính: tên, điểm ĐT là mảng thực gồm 6 phần tử điểm học kỳ, kết quả. - Phương thức tạo: có 2 tham số để gán giá trị cho các thuộc tính tên và điểm ĐT - Phương thức tính kết quả: nếu học ít hơn 5 kỳ sẽ có kết quả điểm ĐT là ĐTB các kỳ, nếu học đủ 6 kỳ sẽ có kết quả điểm ĐT là ĐBQ với kỳ 6 có hệ số 2. Thiết kế chương trình quản lý các đối tượng sau trong một Viện khoa học: nhà khoa học, nhà quản lý và nhân viên phòng thí nghiệm. Một nhà khoa học cũng có thể làm công tác quản lý. Các thành phần dữ liệu của các đối tượng trên: - Nhà khoa học: họ tên, năm sinh, bằng cấp, chức vụ, số bài báo đã công bố, số ngày công trong tháng, bậc lương - Nhà quản lý: họ tên, năm sinh, bằng cấp, chức vụ, số ngày công trong tháng, bậc lương - Nhân viên phòng thí nghiệm: họ tên, năm sinh, bằng cấp, lương trong tháng. Biết rằng nhân viên phòng thí nghiệm lãnh lương khoán, còn lương của nhà khoa học và nhà quản lý bằng số ngày công trong tháng * bậc lương. Nhập, xuất danh sách nhân viên và in tổng lương đã chi trả cho từng loại đối tượng (cảm ơn nhiều )
Thú thật thì Java mình mới đi học 2 buổi! Nhìn cái đề câu 1 mình chưa hiểu yêu cầu đề chỗ phương thức nhập và tính điểm nhưng nếu theo mình hiểu là khi khởi tạo lấy 2 tham số là tên với mảng điểm 6 phần tử. Rồi tính KQ là lấy trung bình điểm các học kỳ!?! Nếu như đúng theo giả thiết bài toán mà mình đang nghĩ thì mình giải theo kiểu này (các cao thủ đừng chém nhá, mặc dù code chạy ngon lành): Mã: import java.util.*; public class SinhVien { String Ten; float DT[] = new float[6]; float KQ; SinhVien(String a, float b[]){ Ten = a; DT = b.clone(); } public void ShowName(){ System.out.print(Ten); } public void ShowKQ(){ int i; float tb=0; for(i = 0; i<6; i++){ tb+= DT[i]; } if(DT[5]==0){ KQ=tb/5; } else{ KQ=tb/6; } System.out.print(KQ); } public static void main(String[] args){ float dt[]=new float[6]; Scanner s = new Scanner(System.in); SinhVien SV[] = new SinhVien[100]; System.out.println("Nhap so luong sinh vien"); int n = s.nextInt(); for(int i = 0; i<n;i++){ System.out.println("Nhap ten sinh vien: "); String ten = new String(s.next()); System.out.println("Nhap diem sinh vien: "); for(int j=0; j<6;j++){ System.out.println("Nhap diem HK"+(int)(j+1)+": "); dt[j] = s.nextFloat(); } SV[i] = new SinhVien(ten, dt); } for(int i=0;i<n;i++){ System.out.print("Sinh vien "); SV[i].ShowName(); System.out.print(" co KQ la: "); SV[i].ShowKQ(); } } }
Mình cũng không hiểu được yêu cầu bài một muốn nói gì, đọc cả buổi tối chưa hiểu đề nên chưa làm được. Code bài này thì dễ những hiểu được đề thì khó Đề có sai không hè? Hệ số....mấy nữa chứ
Trong 6 lần nhập điểm. Chỉ cần 1 lần nhập rỗng thì tính là ĐTB các kỳ. Tuy nhiên phải tính có bao nhiêu lần nhập rỗng để chia cho chính xác(ở trên kia chỉ kiểm tra kỳ cuối, còn các kỳ khác ko kiểm tra). Còn nếu nhập đủ thì hệ số là một ẩn số của bài toán
Bài 2 mình làm theo phương thức kế thừa, hok biết làm vậy đúng hok nữa, ae sửa giùm với thêm hàm main giùm KyO với Mã: public class th{ String hoten; int namsinh; String bangcap; float tinhluong; th () {}; th (String h, int n, String b, String t){ hoten = h; namsinh = n; bangcap = b; tinhluong = t; } public void tinhluong(int a,int b){ return a*b; } } public class nkh extends th{ String chucvu; int sobaibao; int songaycong; int bacluong; nkh (){}; nkh (String cv,int sbb, int snc, int bl;){ chucvu = cv; sobaibao = sbb; songaycong = snc; bacluong = bl; } tinhluong(snc,bl); } public class nql extends th{ String chucvu; int songaycong; int bacluong; nql (){}; nql (String cv, int snc, int bl;){ chucvu = cv; songaycong = snc; bacluong = bl; } tinhluong(snc,bl); } public class nv extends th{ float luongtrongthang; nv (){}; nv (float ltt;){ luongtrongthang = ltt; } return ltt; }