Đề bài:
Ở đây, mình thực hành cô Xuân, nên chỉ có yêu cầu như sau:
Trong bài này, có yêu cầu nhập xuất file, là một yêu cầu mới

Code đầy đủ:

  • Phần dưới có thể thiếu, tải về đây để đúng yêu cầu bài
  • Code để tham khảo, Chúc các bạn sẽ học tập tốt.

Tạo class nguoi.java

package TH5.bai15;
import java.io.Serializable; // thu vien nay de doc file o class dshocsinh.java
import java.util.Scanner;
public class NGUOI implements Serializable {
public String hoTen, gioiTinh;
public NGUOI() {
super();
hoTen ="";
gioiTinh ="";
}
public NGUOI(String hoTen, String gioiTinh) {
this.hoTen = hoTen;
this.gioiTinh= gioiTinh;
}
public void nhap() {
Scanner sc = new Scanner(System.in);
System.out.print("Nhap ho ten: ");
hoTen = sc.nextLine();
System.out.print("Nhap gioi tinh: ");
gioiTinh = sc.nextLine();
}
public void xuat() {
System.out.printf("%20s%20s", hoTen, gioiTinh);
}
public String getHoTen() {
return hoTen;
}
@Override
public String toString() {
return "NGUOI{" +
"hoTen='" + hoTen + '\'' +
", gioiTinh='" + gioiTinh + '\'' +
'}';
}

 Tạo class hocSinh.java để quản lý thông tin 1 học sinh

package TH5.bai15;
import java.util.Scanner;
public class HOCSINH extends NGUOI {
public String tenLop;
public HOCSINH() {
super();
hoTen = "";
gioiTinh ="";
tenLop = "";
}
public HOCSINH(String hoTen, String gioiTinh, String tenLop) {
this.gioiTinh = gioiTinh;
this.hoTen = hoTen;
this.tenLop = tenLop;
}
public void nhap() {
Scanner sc = new Scanner(System.in);
super.nhap();
System.out.print("Nhap ten lop: ");
tenLop = sc.nextLine();
}
public void xuat() {
super.xuat();
System.out.printf("%20s\n", tenLop);
}
@Override
public String toString() {
return "HOCSINH{" +
"hoten='" + hoTen + '\'' +
", gioitinh='" + gioiTinh + '\'' +
", lop='" + tenLop + '\'' +
'}';
}
}

Tạo lớp DSHOCSINH.java để quản lý các học sinh

Phần này có đọc, ghi file trong java
package TH5.bai15;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class DSHOCSINH {
ArrayList<HOCSINH> DS;
public void nhap() {
int n, i;
Scanner sc = new Scanner(System.in);
do {
System.out.print("\nNhap so hoc sinh: ");
n = sc.nextInt();
} while (n <= 0);
DS = new ArrayList<>(n);
for (i = 0; i < n; i++) {
HOCSINH x = new HOCSINH();
System.out.printf("Nhap hoc sinh thu %d: \n", i + 1);
x.nhap();
DS.add(x);
}
}
public void xuat() {
System.out.printf("%20s%20s%20s\n", "ho ten", "gioi tinh", "lop");
for (HOCSINH x : DS) {
x.xuat();
}
}
public void gioiTinh() {
Scanner sc = new Scanner(System.in);
String gT;
System.out.print("\nNhap vao gioi tinh: ");
gT = sc.nextLine();
System.out.print("\nDanh sach theo gioi tinh: \n");
for (HOCSINH x : DS) {
if (gT.equals(x.gioiTinh) == true) {
x.xuat();
}
}
}
public void ghiFile() {
try {
FileOutputStream fileOut = new FileOutputStream("input.txt");
ObjectOutputStream objOut = new ObjectOutputStream(fileOut);
objOut.flush();
objOut.writeObject(DS);
objOut.close();
fileOut.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public void docFile() {
try {
DS = new ArrayList<HOCSINH>();
FileInputStream fin = new FileInputStream("input.txt");
ObjectInputStream fout = new ObjectInputStream(fin);
DS = (ArrayList)fout.readObject(); for(HOCSINH x:DS) {
x.xuat();
}
fin.close();
fout.close();
}
catch(FileNotFoundException e) {
System.out.print("\nKhong thay file.");
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}

Tạo class bai15.java có menu để gọi ra các yêu cầu

Tải và xem ở mục code đầy đủ

Kết quả test: