Bản quyền thuộc về TITV.vn,
vui lòng không đăng tải lại nội dung từ trang này.
Video giải thích chi tiết
https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html
https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.html
Code chi tiết
package main;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
public class ViDuGhiDoiTuong {
public static void main(String[] args) {
try {
File file = new File("/Users/mac/eclipse-workspace/Java_73/file.data");
OutputStream os = new FileOutputStream(file);
ObjectOutputStream oos =new ObjectOutputStream(os);
SinhVien st = new SinhVien("001", "TITV", 2000, 10);
oos.writeObject(st);
oos.flush();
oos.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
package main;
import java.io.Serializable;
import java.util.Objects;
public class SinhVien implements Comparable, Serializable {
private String maSinhVien;
private String hoVaTen;
private int namSinh;
private float diemTrungBinh;
public SinhVien(String maSinhVien) {
this.maSinhVien = maSinhVien;
}
public SinhVien(String maSinhVien, String hoVaTen, int namSinh, float diemTrungBinh) {
this.maSinhVien = maSinhVien;
this.hoVaTen = hoVaTen;
this.namSinh = namSinh;
this.diemTrungBinh = diemTrungBinh;
}
public String getMaSinhVien() {
return maSinhVien;
}
public void setMaSinhVien(String maSinhVien) {
this.maSinhVien = maSinhVien;
}
public String getHoVaTen() {
return hoVaTen;
}
public void setHoVaTen(String hoVaTen) {
this.hoVaTen = hoVaTen;
}
public int getNamSinh() {
return namSinh;
}
public void setNamSinh(int namSinh) {
this.namSinh = namSinh;
}
public float getDiemTrungBinh() {
return diemTrungBinh;
}
public void setDiemTrungBinh(float diemTrungBinh) {
this.diemTrungBinh = diemTrungBinh;
}
@Override
public String toString() {
return "SinhVien [maSinhVien=" + maSinhVien + ", hoVaTen=" + hoVaTen + ", namSinh=" + namSinh
+ ", diemTrungBinh=" + diemTrungBinh + "]";
}
@Override
public int compareTo(SinhVien o) {
return this.maSinhVien.compareTo(o.maSinhVien);
}
@Override
public int hashCode() {
return Objects.hash(diemTrungBinh, hoVaTen, maSinhVien, namSinh);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
SinhVien other = (SinhVien) obj;
return Objects.equals(maSinhVien, other.maSinhVien);
}
}
package main;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class DanhSachSinhVien {
private ArrayList danhSach;
public DanhSachSinhVien() {
this.danhSach = new ArrayList();
}
public DanhSachSinhVien(ArrayList danhSach) {
this.danhSach = danhSach;
}
// 1. Thêm sinh viên vào danh sách.
public void themSinhVien(SinhVien sv) {
this.danhSach.add(sv);
}
// 2. In danh sách sinh viên ra màn hình.
public void inDanhSachSinhVien() {
for (SinhVien sinhVien : danhSach) {
System.out.println(sinhVien);
}
}
// 3. Kiểm tra danh sách có rỗng hay không.
public boolean kiemTraDanhSachRong() {
return this.danhSach.isEmpty();
}
// 4. Lấy ra số lượng sinh viên trong danh sách.
public int laySoLuongSinhVien() {
return this.danhSach.size();
}
// 5. Làm rỗng danh sách sinh viên.
public void lamRongDanhSach() {
this.danhSach.removeAll(danhSach);
}
// 6. Kiểm tra sinh viên có tồn tại trong danh sách hay không, dựa trên mã sinh viên.
public boolean kiemTraTonTai(SinhVien sv) {
return this.danhSach.contains(sv);
}
// 7. Xóa một sinh viên ra khỏi danh sách dựa trên mã sinh viên.
public boolean xoaSinhVien(SinhVien sv) {
return this.danhSach.remove(sv);
}
// 8. Tìm kiếm tất cả sinh viên dựa trên Tên được nhập từ bàn phím.
public void timSinhVien(String ten) {
for (SinhVien sinhVien : danhSach) {
if(sinhVien.getHoVaTen().indexOf(ten)>=0) {
System.out.println(sinhVien);
}
}
}
// 9. Xuất ra danh sách sinh viên có điểm từ cao đến thấp.
public void sapXepSinhVienGiamDanTheoDiem() {
Collections.sort(this.danhSach, new Comparator() {
@Override
public int compare(SinhVien sv1, SinhVien sv2) {
if(sv1.getDiemTrungBinh()sv2.getDiemTrungBinh()) {
return -1;
}else {
return 0;
}
}
});
}
// 10. Ghi xuong file
public void ghiDuLieuXuongFile(File file) {
try {
OutputStream os = new FileOutputStream(file);
ObjectOutputStream oos =new ObjectOutputStream(os);
for (SinhVien sinhVien : danhSach) {
oos.writeObject(sinhVien);
}
oos.flush();
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package test;
import java.io.File;
import java.util.Scanner;
import main.DanhSachSinhVien;
import main.SinhVien;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
DanhSachSinhVien dssv = new DanhSachSinhVien();
int luaChon = 0;
do {
System.out.println("MENU ---------- ");
System.out.println("Vui lòng chọn chức năng: ");
System.out.println(
"1. Thêm sinh viên vào danh sách.\n"
+ "2. In danh sách sinh viên ra màn hình.\n"
+ "3. Kiểm tra danh sách có rỗng hay không.\n"
+ "4. Lấy ra số lượng sinh viên trong danh sách.\n"
+ "5. Làm rỗng danh sách sinh viên.\n"
+ "6. Kiểm tra sinh viên có tồn tại trong danh sách hay không, dựa trên mã sinh viên.\n"
+ "7. Xóa một sinh viên ra khỏi danh sách dựa trên mã sinh viên.\n"
+ "8. Tìm kiếm tất cả sinh viên dựa trên Tên được nhập từ bàn phím.\n"
+ "9. Xuất ra danh sách sinh viên có điểm từ cao đến thấp.\n"
+ "10. Lưu danh sách sinh viên xuống tập tin.\n"
+ "0. Thoát khỏi chương trình");
luaChon = sc.nextInt();
sc.nextLine();
if(luaChon==1) {
// 1. Thêm sinh viên vào danh sách.
System.out.println("Nhập mã sinh viên: "); String maSinhVien = sc.nextLine();
System.out.println("Nhập họ và tên: "); String hoVaTen = sc.nextLine();
System.out.println("Nhập năm sinh: "); int namSinh = sc.nextInt();
System.out.println("Nhập điểm trung bình: "); float diemTrungBinh = sc.nextFloat();
SinhVien sv = new SinhVien(maSinhVien, hoVaTen, namSinh, diemTrungBinh);
dssv.themSinhVien(sv);
}else if(luaChon==2) {
// 2. In danh sách sinh viên ra màn hình.
dssv.inDanhSachSinhVien();
}else if(luaChon==3) {
// 3. Kiểm tra danh sách có rỗng hay không.
System.out.println("Danh sách rỗng: "+ dssv.kiemTraDanhSachRong());
}else if(luaChon==4) {
// 4. Lấy ra số lượng sinh viên trong danh sách.
System.out.println("Số lượng hiện tại: "+ dssv.laySoLuongSinhVien());
}else if(luaChon==5) {
// 5. Làm rỗng danh sách sinh viên.
dssv.lamRongDanhSach();
}else if(luaChon==6) {
// 6. Kiểm tra sinh viên có tồn tại trong danh sách hay không, dựa trên mã sinh viên.
System.out.println("Nhập mã sinh viên: "); String maSinhVien = sc.nextLine();
SinhVien sv = new SinhVien(maSinhVien);
System.out.println("Kiếm tra sinh viên có trong danh sách: "+dssv.kiemTraTonTai(sv));
}else if(luaChon==7) {
// 7. Xóa một sinh viên ra khỏi danh sách dựa trên mã sinh viên.
System.out.println("Nhập mã sinh viên: "); String maSinhVien = sc.nextLine();
SinhVien sv = new SinhVien(maSinhVien);
System.out.println("Xóa sinh viên trong danh sách: "+dssv.xoaSinhVien(sv));
}else if(luaChon==8) {
// 8. Tìm kiếm tất cả sinh viên dựa trên Tên được nhập từ bàn phím.
System.out.println("Nhập họ và tên: "); String hoVaTen = sc.nextLine();
System.out.println("Kết quả tìm kiếm: ");
dssv.timSinhVien(hoVaTen);
}else if(luaChon==9) {
// 9. Xuất ra danh sách sinh viên có điểm từ cao đến thấp.
dssv.sapXepSinhVienGiamDanTheoDiem();
dssv.inDanhSachSinhVien();
}else if(luaChon==10) {
// System.out.println("Nhập họ và tên: "); String hoVaTen = sc.nextLine();
System.out.println("Nhap ten file: ");
String tenFile = sc.nextLine();
File f = new File(tenFile);
dssv.ghiDuLieuXuongFile(f);
}
}while(luaChon!=0);
}
}
Không có nhận xét nào:
Đăng nhận xét