Cần giúp đỡ bài tập java về ArrayList
Mình mới học java, hôm qua giờ mày mò mãi mà ko ra đc bài này, mình tìm google, tìm đủ mọi cách tối qua đến giờ vẫn ko tìm ra cách làm, ngồi máy tính cả ngày nay, thử đủ mọi cách ong cả đầu mà ra , nên mang lên đây hỏi. Bài yêu cầu sử dụng constructor và arraylist để tạo ra menu quản lý nhân viên(Console).
Mình nghĩ phần find hướng làm của mình là tạo biến x cho người dùng nhập vào để tìm kiếm, chạy vòng lặp qua arraylist, nếu arraylist bốc i = x, thì hiển thị ra màn hình, nhưng ở đây đề yêu cầu id(int) hoặc tên(String), 2 kiểu khác nhau, mình chả biết làm sao cho đc.
Phần update thì cho người dùng nhập id muốn update, sau đó hiển thị list nhưng thứ cần sửa: tên, ngày sinh, giới tính…switch case chọn cái cần sửa, rồi thay cái cần sửa cho nhân viên có id tương ứng. mà làm ko ra. Phần add mình làm đc rồi, phần update mình chạy, nhập id cần update, “lua chon update”, xong nó ko cho mình nhập lựa chọn! Phần find thì làm mãi ko ra bạn nào giúp mình với. Còn phần display, đề cần là khi nhập display mà chưa nhập add sẽ xuất thông báo “Ko có thông tin để hiển thị”, nhưng khi mình nhập display mà chưa nhập add thì nó ko xuất dòng đó!
Phần display mình làm: chạy vòng for trong arraylist, nếu arraylist.get(i)==null thì xuất “Ko có thông tin để hiển thị”, ngược lại sẽ xuất thông tin đã nhập từ add.
Đây là yêu cầu đề bài:
Khi người dùng nhập “add”:
• Nhập thông tin nhân viên.
• Các thông tin như tên, giới tính, ngày tháng năm sinh và số điện thoại bắt buộc phải
nhập. Các thông tin khác có thể bỏ qua.
• Mã nhân viên được phát sinh tự động.
• Giới tính chỉ được phép nhập nam hoặc nữ.
• Ngày tháng năm sinh phải đủ 10 ký tự (dd/mm/yyyy).
• Trình độ chuyên môn chỉ được phép nhập “Trung cấp” hoặc “Cao đẳng” hoặc “Đại
học”
-Khi người dùng nhập “display”: Hiển thị thông tin nhân viên. Lưu ý nếu người dùng chưa thực hiện thao tác “add”, ứng dụng sẽ hiển thị thông báo “Not found information”
Khi người dùng nhập “update”: Cho phép người dùng cập nhật tất cả các thông tin,
ngoại trừ mã nhân viên.
-Khi người dùng nhập “find”:
• Ứng dụng cho phép người dùng tìm kiếm nhân viên theo mã số hoặc theo tên. Nếu
tìm thấy sẽ hiển thị thông tin nhân viên tương ứng. Ngược lại hiển thị thông báo
“Not found information”.
Sau khi thực hành xong bài này, học viên có khả năng :
• Khai báo được lớp
• Khai báo được thuộc tính
• Khai báo được phương thức, phương thức khởi tạo
• Tạo đối tượng, truy cập thuộc tính, phương thức
• Trước khi thực hiện tìm kiếm, ứng dụng phải yêu cầu người dùng nhập mã số hoặc
tên. Hiển thị thông báo “Please enter your information” nếu người dùng chưa nhập.
Đây là phần code của mình, class NhanVien:
import java.util.ArrayList;
import java.util.Scanner;
/**
*
* @author Administrator
*/
public class NhanVien {
int id;
String ten;
String diaChi;
String ngaySinh;
String gioiTinh;
String trinhDo;
String sdt;
String email;
//Phuong thuc khoi tao
public NhanVien() {
}
public NhanVien(int id,String ten, String diaChi, String ngaySinh, String gioiTinh, String trinhDo, String sdt, String email) {
this.id=id;
this.ten = ten;
this.diaChi = diaChi;
this.ngaySinh = ngaySinh;
this.gioiTinh = gioiTinh;
this.trinhDo = trinhDo;
this.sdt = sdt;
this.email = email;
}
public void hienThi() {
System.out.println("-------------------");
System.out.println("Ma nhan vien: " + id);
System.out.println("Ten nhan vien: " + ten);
System.out.println("Dia Chi: " + diaChi);
System.out.println("Ngay Sinh: " + ngaySinh);
System.out.println("Gioi Tinh: " + gioiTinh);
System.out.println("Trinh Do: " + trinhDo);
System.out.println("So dien thoai: " + sdt);
System.out.println("Email: " + email);
System.out.println("-------------------");
}
public void capNhat() {
int opt;
Scanner s = new Scanner(System.in);
System.out.println("MENU:");
System.out.println("1. Sua ten nhan vien");
System.out.println("2. Sua dia chi");
System.out.println("3. Sua ngay sinh");
System.out.println("4. Sua gioi tinh");
System.out.println("5. Sua trinh do");
System.out.println("6. Sua so dien thoai");
System.out.println("7. Sua email");
System.out.print("Lua chon de update: ");
opt = s.nextInt();
switch (opt) {
case 1:
System.out.print("Nhap ten moi: ");
ten = s.nextLine();
break;
case 2:
System.out.print("Nhap dia chi moi");
diaChi = s.nextLine();
break;
case 3:
System.out.print("Nhap ngay sinh moi: ");
ngaySinh = s.nextLine();
break;
case 4:
System.out.print("Nhap gioi tinh moi: ");
gioiTinh = s.nextLine();
break;
case 5:
System.out.print("Nhap trinh do moi: ");
trinhDo = s.nextLine();
break;
case 6:
System.out.print("Nhap so dien thoai moi: ");
sdt = s.nextLine();
break;
case 7:
System.out.print("Nhap email moi: ");
email = s.nextLine();
break;
case 8:
break;
}
}
}
class Progam(main):
import java.util.ArrayList;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
ArrayList<NhanVien> listNV = new ArrayList();
int dem = 0;
System.out.println("Nhap 'add' de them thong tin nhan vien");
System.out.println("Nhap 'display' de xem thong tin nhan vien");
System.out.println("Nhap 'update' de cap nhat thong tin nhan vien");
System.out.println("Nhap 'find' de tim kiem thong tin nhan vien");
System.out.println("Nhap 'exit' de thoat chuong trinh");
String opt = "";
Scanner s = new Scanner(System.in);
do {
System.out.print("Lua chon cua ban: ");
opt = s.nextLine();
switch (opt.toLowerCase()) {
case "add":
dem++;
int id=dem;
System.out.print("Nhap ten nhan vien: ");
String ten = s.nextLine();
do {
if (ten.isEmpty() == true) {
System.out.print("Chua nhap ten, Nhap ten: ");
ten = s.nextLine();
}
} while (ten.isEmpty() == true);
System.out.print("Nhap dia chi: ");
String diaChi = s.nextLine();
System.out.print("Nhap ngay sinh: ");
String ngaySinh = s.nextLine();
do {
if (ngaySinh.isEmpty() == true) {
System.out.print("Chua nhap ngay sinh, Nhap ngay sinh: ");
ngaySinh = s.nextLine();
} else if (ngaySinh.length() != 10) {
System.out.print("Ngay sinh co 10 ky tu, Nhap ngay sinh: ");
ngaySinh = s.nextLine();
}
} while (ngaySinh.isEmpty() == true || ngaySinh.length() != 10);
System.out.print("Nhap gioi tinh: ");
String gioiTinh = s.nextLine();
do {
if (gioiTinh.isEmpty() == true) {
System.out.print("Chua nhap gioi tinh, Nhap gioi tinh: ");
gioiTinh = s.nextLine();
} else if (!"nam".equals(gioiTinh) && !"nu".equals(gioiTinh)) {
System.out.print("Gioi tinh=nam hoac gioi tinh=nu, Nhap gioi tinh: ");
gioiTinh = s.nextLine();
}
} while (gioiTinh.isEmpty() == true || !"nam".equals(gioiTinh.toLowerCase()) && !"nu".equals(gioiTinh.toLowerCase()));
System.out.print("Nhap trinh do: ");
String trinhDo = s.nextLine();
do {
if (!"trung cap".equals(trinhDo.toLowerCase()) && !"cao dang".equals(trinhDo.toLowerCase()) && !"dai hoc".equals(trinhDo.toLowerCase())) {
System.out.print("Trinh do: trung cap, cao dang hoac dai hoc, Nhap trinh do: ");
trinhDo = s.nextLine();
}
} while (!"trung cap".equals(trinhDo.toLowerCase()) && !"cao dang".equals(trinhDo.toLowerCase()) && !"dai hoc".equals(trinhDo.toLowerCase()));
System.out.print("Nhap so dien thoai: ");
String sdt = s.nextLine();
do {
if (sdt.isEmpty() == true) {
System.out.print("Chua nhap so dien thoai, Nhap sdt: ");
sdt = s.nextLine();
}
} while (ten.isEmpty() == true);
System.out.print("Nhap email: ");
String email = s.nextLine();
NhanVien nv1 = new NhanVien(id, ten, diaChi, ngaySinh, gioiTinh, trinhDo, sdt, email);
listNV.add(nv1);
break;
case "display":
for (int i = 0; i < listNV.size(); i++) {
{
if (listNV.get(i)==null) {
System.out.println("Ko co thong tin de hien thi");
} else {
listNV.get(i).hienThi();
}
}
}
break;
case "update":
NhanVien nv = new NhanVien();
int maNV;
System.out.print("Nhap ma nhan vien can update: ");
maNV = s.nextInt();
for (int i = 0; i < listNV.size(); i++) {
if (dem == maNV) {
nv.capNhat();
break;
}
}
case "find":
/*NhanVien tim= new NhanVien();
do{
System.out.print("Nhap id hoac ten nhan vien can tim: ");
String timKiem=s.nextLine();
//ten=s.nextLine();
}while(tim.ten.equals(timKiem));
}*/
//while(listNV.)
//{}
break;
default:
System.out.println("Lua chon ko ton tai");
;
}
} while (true);
}
}
Ok, xử lý từng phần nhé
1) Ở class NhanVien của bạn có 2 vấn đề
Nếu đã có getter và setter thì phần Update xong
2) Phần Find thì tạo ra 2 void với từng loại thôi
3) Phần display có cách khác đó là dùng void .isEmpty() của ArrayList , nó sẽ trả về dạng Boolean
4) Code của bạn chưa dc tối ưu hóa, nên chia thành cách void nhỏ để dễ dàng fix lỗi sau này
cảm ơn bạn. mình mới học, chưa học đến phần get, set nên ko đc sử dụng bạn ơi!
bạn nói kiểu này, mấy người mới học như mình sao hiểu được, phần display mình có dùng qua isEmpty()==true rồi, nhưng vẫn ko đc, vì vậy mới mang lên hỏi đấy chứ!
Mình nghĩ khi học về Class thì phải dạy về getter và setter luôn chứ nhỉ @@ Nó đơn giản mà !
Vậy bạn thử tham khảo video sau : https://www.youtube.com/watch?v=mGOAr3c1ILQ
Nếu bạn hiểu dc về setter và getter thì phần Update là đơn giản rồi
Bạn thử post code dùng .isEmpty lên đây xem, vì mình dùng vẫn dc @@
cảm ơn bạn nha, mình làm dc rồi, mới xem lại, do mình bỏ cái if isEmpty đó trong vòng for nên nó ko chạy, bỏ ra ngoài thì nó chạy rồi^^