web viewluu danh sach sinh vien.\n"+ "13. phuong thuc sap xep theo ten sinh vien, neu...
TRANSCRIPT
Bài 1:
Bước 1: Tạo lớp danh sách
package quanLySinhVien;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class DanhSach <T> implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private List<T> ds;
/**
* Constructor: Khởi tạo danh sách các đối tượng kiểu T
*/
public DanhSach() {
ds=new ArrayList<T>();
}
/**
* Thêm 1 đối tượng t thuộc kiểu T vào danh sách
* @param t là đối tượng cần thêm vào danh sách
* @return true nếu thêm thàng công -- không trùng mã số
* @return false nếu ngược lại
*/
public boolean them(T t) {
if(ds.contains(t))
return false;
ds.add(t);
return true;
}
/**
* Xuất toàn bộ những phần tử trong List ra cửa sổ console
*/
public void xuat() {
for(T t: ds)
System.out.println(t);
}
/**
* Tìm kiếm thông tin khi biết khóa
* @param t -- chứa khóa cần tìm
* @return đối tượng kiểu T nếu tìm thấy
* @return null nếu ngược lại
*/
public T timKiem(T t) {
if(ds.contains(t))
return ds.get(ds.indexOf(t));
return null;
}
/**
* Xóa 1 đối tượng t thuộc kiểu T khi biết khóa
* @param t
* @return true nếu tồn tại
* @return false nếu không tồn tại
*/
public boolean xoa(T t) {
return ds.remove(t);
}
/**
* Get danh sách các đối tượng kiểu T
* @return
*/
public List<T> getDs() {
return ds;
}
/**
* Cap nhat
* @param tOld
* @param tNew
* @return boolean
*/
public boolean capNhat(T tOld, T tNew) {
if(ds.contains(tOld) && ds.indexOf(tOld)==ds.indexOf(tNew)){
ds.remove(tOld);
ds.add(tNew);
return true;
}
return false;
}
}
Bước 2: Tạo lớp Lớp Học
package quanLySinhVien;
import java.io.Serializable;
public class LopHoc implements Serializable, Comparable<LopHoc>{
/**
*
*/
private static final long serialVersionUID = 1L;
private String maLop, tenLop, chuyenNganh;
public LopHoc(String maLop, String tenLop, String chuyenNganh) {
super();
this.maLop = maLop;
this.tenLop = tenLop;
this.chuyenNganh = chuyenNganh;
}
public LopHoc(String maLop) {
this(maLop,"","");
}
public String getMaLop() {
return maLop;
}
public void setMaLop(String maLop) {
this.maLop = maLop;
}
public String getTenLop() {
return tenLop;
}
public void setTenLop(String tenLop) {
this.tenLop = tenLop;
}
public String getChuyenNganh() {
return chuyenNganh;
}
public void setChuyenNganh(String chuyenNganh) {
this.chuyenNganh = chuyenNganh;
}
@Override
public String toString() {
return String.format("%-10s %-25s %-15s", maLop,tenLop,chuyenNganh);
}
@Override
public boolean equals(Object obj) {
LopHoc lh=(LopHoc)obj;
return this.maLop.equalsIgnoreCase(lh.maLop);
}
@Override
public int compareTo(LopHoc o) {
return this.maLop.compareToIgnoreCase(o.maLop);
}
}
Bước 3: Tạo lớp Sinh Viên
package quanLySinhVien;
import java.io.Serializable;
public class SinhVien implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
protected String maSV, hoSV, tenSV;
protected int tuoi;
protected String maLop;
public SinhVien(String maSV, String hoSV, String tenSV, int tuoi,
String maLop) {
super();
this.maSV = maSV;
this.hoSV = hoSV;
this.tenSV = tenSV;
this.tuoi = tuoi;
this.maLop = maLop;
}
public SinhVien(String maSV) {
this(maSV,"","",0,"");
}
public String getMaSV() {
return maSV;
}
public void setMaSV(String maSV) {
this.maSV = maSV;
}
public String getHoSV() {
return hoSV;
}
public void setHoSV(String hoSV) {
this.hoSV = hoSV;
}
public String getTenSV() {
return tenSV;
}
public void setTenSV(String tenSV) {
this.tenSV = tenSV;
}
public int getTuoi() {
return tuoi;
}
public void setTuoi(int tuoi) {
this.tuoi = tuoi;
}
public String getMaLop() {
return maLop;
}
public void setMaLop(String maLop) {
this.maLop = maLop;
}
@Override
public String toString() {
return String.format("%-10s %-20s %-5s %-10s", maSV,hoSV+" "+tenSV,tuoi,maLop);
}
@Override
public boolean equals(Object obj) {
SinhVien sv=(SinhVien)obj;
return this.maSV.equalsIgnoreCase(sv.maSV);
}
}
Bước 4: Tạo lớp Sinh Viên Niên Chế
package quanLySinhVien;
import java.io.Serializable;
public class SinhVienNienChe extends SinhVien implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int hocKy, nam;
public SinhVienNienChe(String maSV, String hoSV, String tenSV, int tuoi,
String maLop, int hocKy, int nam) {
super(maSV, hoSV, tenSV, tuoi, maLop);
this.hocKy = hocKy;
this.nam = nam;
}
public int getHocKy() {
return hocKy;
}
public void setHocKy(int hocKy) {
this.hocKy = hocKy;
}
public int getNam() {
return nam;
}
public void setNam(int nam) {
this.nam = nam;
}
@Override
public String toString() {
return super.toString()+String.format("%-20s", "Nien hoc: "+hocKy+"-"+nam);
}
}
Bước 5: Tạo lớp kiểm thử
package quanLySinhVien;
import java.io.File;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class KiemThu {
private static final String fileDSLop = "dbLH";
private static final String fileDSSV = "dbSV";
private static Scanner sc=new Scanner(System.in);
public static void main(String[] args) throws Exception{
DanhSach<LopHoc> dsLop=new DanhSach<LopHoc>();
if(new File(fileDSLop).exists())
dsLop=(DanhSach<LopHoc>)SaveLoadFile.load(fileDSLop);
DanhSach<SinhVien> dsSinhVien=new DanhSach<SinhVien>();
if(new File(fileDSSV).exists())
dsSinhVien=(DanhSach<SinhVien>)SaveLoadFile.load(fileDSSV);
int chon=0;
boolean flag=true;
do{
System.out.println("1. Them lop hoc (khong trung ma lop).\n"+
"2. Xuat danh sach lop hoc.\n"+
"3. Tim lop hoc dua vao ma lop.\n"+
"4. Xoa lop hoc khi biet ma lop. Luu y: khi xoa 1 lop hoc, phai xoa toan bo sinh vien thuoc lop hoc do.\n"+
"5. Cap nhat thong tin lop hoc khi biet ma lop.\n"+
"6. Luu danh sach lop hoc.\n"+
"7. Them sinh vien (khong trung ma SV, ma lop phai ton tai).\n"+
"8. Xuat danh sach sinh vien.\n"+
"9. Tim sinh vien dua tren ma so.\n"+
"10. Xoa 1 sinh vien dua tren ma so.\n"+
"11. Cap nhat thong sinh vien dua tren ma so.\n"+
"12. Luu danh sach sinh vien.\n"+
"13. Phuong thuc sap xep theo ten sinh vien, neu trung ten sap xep theo ho sinh vien.\n"+
"14. Thong ke tong so sinh vien theo tung lop.");
chon=sc.nextInt();
switch (chon) {
case 1:
dsLop.them(nhapLop());
break;
case 2:
dsLop.xuat();
break;
case 3:
sc.nextLine();
System.out.println("Nhap ma lop can tim: ");
String maLop=sc.nextLine();
LopHoc lh=dsLop.timKiem(new LopHoc(maLop));
if(lh!=null)
System.out.println(lh);
else
System.out.println("Không ton tai lop.");
break;
case 4:
sc.nextLine();
System.out.println("Nhập mã lớp cần xóa: ");
maLop=sc.nextLine();
boolean kq=dsLop.xoa(new LopHoc(maLop));
if(kq) //tương đương kq==true
{
System.out.printf("Xóa lớp %s thành công.\n",maLop);
Iterator<SinhVien> it=dsSinhVien.getDs().iterator();
while(it.hasNext()){
SinhVien sv=it.next();
if(sv.getMaLop().equalsIgnoreCase(maLop))
it.remove();
}
}
else
System.out.println("Xóa không thành công.");
break;
case 5:
sc.nextLine();
System.out.println("Nhap ma lop can cap nhat: ");
maLop=sc.nextLine();
LopHoc lhOld=new LopHoc(maLop);
System.out.println("Nhap chuyen nganh moi cho lop nay: ");
String chuyenNganh=sc.nextLine();
LopHoc lhNew=lhOld;
lhNew.setChuyenNganh(chuyenNganh);
kq=dsLop.capNhat(lhOld, lhNew);
if(kq)
System.out.println("Cap nhat thanh cong.");
else
System.out.println("Cap nhat khong thanh cong.");
break;
case 6:
SaveLoadFile.save(dsLop, fileDSLop);
break;
case 7:
//Kiểm tra mã lớp có tồn tại không?
SinhVien sv=nhapSinhVien();
lh=dsLop.timKiem(new LopHoc(sv.getMaLop()));
if(lh!=null){
if(dsSinhVien.them(sv))
System.out.println("Thêm thành công.");
else
System.out.println("Thêm không thành công. Trùng mã sv.");
}else
System.out.println("Thêm không thành công. Không tồn tại mã lớp");
break;
case 8:
dsSinhVien.xuat();
break;
case 12:
SaveLoadFile.save(dsSinhVien, fileDSSV);
break;
case 13:
Collections.sort(dsSinhVien.getDs(),new Comparator<SinhVien>() {
@Override
public int compare(SinhVien sv1, SinhVien sv2) {
int kq=sv1.getTenSV().compareToIgnoreCase(sv2.getTenSV());
return (kq==0) ? sv1.getHoSV().compareToIgnoreCase(sv2.getHoSV()) : kq;
}
});
break;
case 14:
//Key: LopHoc
//Value: Số sinh viên
Map<LopHoc, Integer> thongKe=new TreeMap<LopHoc,Integer>();
for(SinhVien s: dsSinhVien.getDs()){
LopHoc l=dsLop.timKiem(new LopHoc(s.getMaLop()));
if(thongKe.containsKey(l))
thongKe.put(l, thongKe.get(l)+1);
else
thongKe.put(l, 1);
}
// System.out.println(thongKe);
//Xuất mỗi lớp trên 1 dòng
Iterator<LopHoc> itKey=thongKe.keySet().iterator();
Iterator<Integer> itValue=thongKe.values().iterator();
while(itKey.hasNext()){
System.out.print(itKey.next()+"\t"+itValue.next());
System.out.println();
}
break;
default:
flag=false;
break;
}
}while(flag);
}
private static SinhVien nhapSinhVien() {
Scanner sc=new Scanner(System.in);
SinhVien sv=null;
System.out.println("Nhap ma sv: ");
String maSV=sc.nextLine();
System.out.println("Nhap ho sv: ");
String hoSV=sc.nextLine();
System.out.println("Nhap ten sv: ");
String tenSV=sc.nextLine();
System.out.println("Nhap tuoi: ");
int tuoi=sc.nextInt();
sc.nextLine();
System.out.println("Nhap ma lop: ");
String maLop=sc.nextLine();
System.out.println("\t1. Sinh vien nien che\n\t2. Sinh vien tin chi");
int chon=sc.nextInt();
switch (chon) {
case 1:
System.out.println("\tNhap hoc ky: ");
int hocKy=sc.nextInt();
System.out.println("\tNhap nam hoc: ");
int nam=sc.nextInt();
sv=new SinhVienNienChe(maSV, hoSV, tenSV, tuoi, maLop, hocKy, nam);
break;
case 2:
//Sinh viên tự làm
break;
}
return sv;
}
private static LopHoc nhapLop() {
Scanner sc=new Scanner(System.in);
System.out.println("Nhap ma lop: ");
String maLop=sc.nextLine();
System.out.println("Nhap ten lop: ");
String tenLop=sc.nextLine();
System.out.println("Nhap chuyen nganh: ");
String chuyenNganh=sc.nextLine();
return new LopHoc(maLop, tenLop, chuyenNganh);
}
}
Bước 6: Tạo lớp SaveLoadFile
package quanLySinhVien;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SaveLoadFile {
/**
* Lưu đối tượng obj vào tập tin có tên là fileName
* @param obj
* @param fileName
* @throws Exception
*/
public static void save(Object obj, String fileName) throws Exception{
FileOutputStream fos=new FileOutputStream(fileName);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.close();
}
/**
* Nạp lại đối tượng từ tập tin có tên là fileName
* @param fileName
* @return
* @throws Exception
*/
public static Object load(String fileName) throws Exception{
Object obj=null;
FileInputStream fis=new FileInputStream(fileName);
ObjectInputStream ois=new ObjectInputStream(fis);
obj=ois.readObject();
ois.close();
return obj;
}
}
Bài 2: Bán vé nhà ga
Bước 1:
package bai03Chuong05Collections;
import java.io.Serializable;
import java.text.DecimalFormat;
public class KhachHang implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String cMND;
private String tenKH;
private String gaDen;
private double giaTien;
public KhachHang(String cMND) {
this(cMND,"","",0.0);
}
public KhachHang(String cMND, String tenKH, String gaDen, double giaTien) {
super();
this.cMND = cMND;
this.tenKH = tenKH;
this.gaDen = gaDen;
this.giaTien = giaTien;
}
public String getcMND() {
return cMND;
}
public void setcMND(String cMND) {
this.cMND = cMND;
}
public String getTenKH() {
return tenKH;
}
public void setTenKH(String tenKH) {
this.tenKH = tenKH;
}
public String getGaDen() {
return gaDen;
}
public void setGaDen(String gaDen) {
this.gaDen = gaDen;
}
public double getGiaTien() {
return giaTien;
}
public void setGiaTien(double giaTien) {
this.giaTien = giaTien;
}
@Override
public String toString() {
DecimalFormat df=new DecimalFormat("#,##0 VND");
return String.format("%-10s %-15s %-15s %10s", cMND,tenKH,gaDen,df.format(giaTien));
}
@Override
public boolean equals(Object obj) {
KhachHang kh=(KhachHang)obj;
return this.cMND.equalsIgnoreCase(kh.cMND);
}
}
Bước 2:
package bai03Chuong05Collections;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class DanhSachKhachHang implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Queue<KhachHang> dsDoiVe;
private Queue<KhachHang> dsCoVe;
/**
* Khởi tạo danh sách
*/
public DanhSachKhachHang() {
dsDoiVe=new LinkedList<KhachHang>();
dsCoVe=new LinkedList<KhachHang>();
}
/**
* Thêm một khách hàng mới vào hàng đợi.
* Nếu Số CMND khách hàng đã có thì không tạo phần tử mới mà chỉ cập nhật lại ga và giá tiền đến.
* Ngược lại thêm khách hàng vào hàng đợi.
* @param khNew là khách hàng mới cần thêm vào hàng đợi.
*/
public void themKhachHangVaoHangDoi(KhachHang khNew) {
for(KhachHang kh: dsDoiVe){
if(kh.getcMND().equalsIgnoreCase(khNew.getcMND())){
kh.setGaDen(khNew.getGaDen());
kh.setGiaTien(khNew.getGiaTien());
return;
}
}
dsDoiVe.add(khNew);
}
/**
* Hủy một khách hàng ra khỏi danh sách. (khách hàng không mua vé nữa)
* @param cMND là cMND khách hàng không muốn xếp hàng mua vé nữa.
* @return true nếu cMND tồn tại.
* @return false nếu ngược lại.
*/
public boolean huyKhachHang(String cMND) {
KhachHang kh=new KhachHang(cMND);
if(dsDoiVe.contains(kh)){
dsDoiVe.remove(kh);
return true;
}
return false;
}
/**
* Xuất danh sách khách hàng đợi vé
*/
public void hienThiDanhSachDoi() {
for(KhachHang kh : dsDoiVe)
System.out.println(kh);
}
/**
* Bán vé cho khách hàng đợi
* @return true nếu bán thành công
* @return false nếu hết khách hàng trong hàng.
*/
public boolean banVe() {
if(dsDoiVe.size()>0){
KhachHang kh=dsDoiVe.poll();
dsCoVe.add(kh);
return true;
}
return false;
}
/**
* Xuất danh sách khách hàng đã có vé.
*/
public void hienThiDanhSachCoVe() {
for(KhachHang kh: dsCoVe)
System.out.println(kh);
}
/**
* Số khách hàng chờ vé.
* @return int
*/
public int soKhachChoVe() {
return dsDoiVe.size();
}
/**
* Số khách hàng đã có vé.
* @return int
*/
public int soKhachDaCoVe() {
return dsCoVe.size();
}
/**
* Tổng tiền thu về từ việc bán vé cho khách hàng.
* @return double
*/
public double tongTien() {
double tong=0.0;
for(KhachHang kh: dsCoVe)
tong+=kh.getGiaTien();
return tong;
}
/**
* Danh sách các ga có khách hàng chờ mua vé.
* @return Set -- Danh sách tên ga (chỉ xuất hiện một lần)
*/
public Set<String> danhSachGaChoVe() {
Set<String> dsGa=new TreeSet<String>();
for(KhachHang kh: dsDoiVe)
dsGa.add(kh.getGaDen());
return dsGa;
}
/**
* Thống kê số vé đã bán theo từng ga.
* @return Map -- ga và số vé tương ứng
*/
public Map<String, Integer> thongKeSoVeTungGa() {
Map<String, Integer> bangThongKe=new TreeMap<String, Integer>();
for(KhachHang kh:dsCoVe ){
String ga=kh.getGaDen();
if(bangThongKe.containsKey(ga))
bangThongKe.put(ga, bangThongKe.get(ga)+1);
else
bangThongKe.put(ga, 1);
}
return bangThongKe;
}
/**
* Nhập thông tin khách hàng từ bàn phím
* Nếu CMND đã tồn tại thì không cần nhập tên khách hàng.
* @return 1 KhachHang
*/
public KhachHang nhapKhachHang() {
@SuppressWarnings("resource")
Scanner sc=new Scanner(System.in);
System.out.println("Nhap CMND: ");
String cMND=sc.nextLine();
KhachHang kh=new KhachHang(cMND);
String tenKH=null;
if(!dsDoiVe.contains(kh)){
System.out.println("Nhap ten Khach hang: ");
tenKH=sc.nextLine();
}else{
// tenKH=dsDoiVe.peek().getTenKH();
for(KhachHang k: dsDoiVe){
if(k.getcMND().equalsIgnoreCase(cMND)){
tenKH=k.getTenKH();
break;
}
}
}
System.out.println("Nhap ga den: ");
String gaDen=sc.nextLine();
System.out.println("Nhap gia tien: ");
double giaVe=sc.nextDouble();
return new KhachHang(cMND,tenKH,gaDen,giaVe);
}
/**
* Chỉ lưu danh sách khách hàng chờ nhận vé
* @param fileName là tập tin chứa danh sách khách hàng
*/
public void saveDsDoiVe(String fileName) {
SaveLoadFile.save(dsDoiVe, fileName);
}
/**
* Nạp danh sách khách hàng đợi vé từ file
* @param fileName là tập tin chứa danh sách khách hàng đợi vé
*/
@SuppressWarnings("unchecked")
public void loadDsDoiVe(String fileName) {
dsDoiVe=(Queue<KhachHang>)SaveLoadFile.load(fileName);
}
}
Bước 3
package bai03Chuong05Collections;
import java.io.File;
import java.text.DecimalFormat;
import java.util.Map;
import java.util.Scanner;
public class ChuongTrinhQuanLyBanVe {
private static final String fileName = "dskhChoVe"; //File lưu danh sách khách hàng còn đợi vé.
private static Scanner sc=new Scanner(System.in);
public static void main(String[] args) {
int chon;
boolean flag=true;
DanhSachKhachHang dsKhachHang=new DanhSachKhachHang();
if(new File(fileName).exists()) //Nếu dữ liệu đã có thì nạp lên
dsKhachHang.loadDsDoiVe(fileName);
// else //Ngược lại khởi tạo danh sách
// dsKhachHang=new DanhSachKhachHang();
do{
System.out.println("====Hệ thống menu==="+
"\n1. Thêm một khách hàng mới vào hàng đợi mua vé."+
"\n2. Bán một vé cho khách hàng. Chỉ bán cho người đăng ký trước."+
"\n3. Hiển thị danh sách khách hàng chờ vé."+
"\n4. Hủy một khách hàng ra khỏi danh sách. (khách hàng không mua vé nữa)."+
"\n5. Thống kê tình hình bán vé."+
"\n6. Lưu danh sách vào file."+
"\n7. Hiển thị danh sách các ga đang chờ mua vé."+
"\n8. Số vé đã bán tương ứng cho từng ga.");
chon=sc.nextInt();
switch (chon) {
case 1:
dsKhachHang.themKhachHangVaoHangDoi(dsKhachHang.nhapKhachHang());
break;
case 2:
if(!dsKhachHang.banVe())
System.out.println("Không còn khách hàng đợi mua vé.");
else
System.out.println("Bán vé thành công.");
break;
case 3:
if(dsKhachHang.soKhachChoVe()==0)
System.out.println("Không còn khách hàng chờ vé.");
else
dsKhachHang.hienThiDanhSachDoi();
break;
case 4:
if(dsKhachHang.soKhachChoVe()!=0){
sc.nextLine();
System.out.println("Nhập số CMND khách hàng cần hủy: ");
String cMND=sc.nextLine();
if(!dsKhachHang.huyKhachHang(cMND))
System.out.println("Không tồn tại "+cMND);
}else
System.out.println("Không có khách chờ.");
break;
case 5:
DecimalFormat df=new DecimalFormat("#,##0 VND");
System.out.println("Số khách chờ nhận vé: "+dsKhachHang.soKhachChoVe());
System.out.println("Số khách đã nhận vé: "+dsKhachHang.soKhachDaCoVe());
System.out.println("Tổng tiền đã thu về trong ngày: "+df.format(dsKhachHang.tongTien()));
if(dsKhachHang.soKhachDaCoVe()!=0){
System.out.println("Danh sách khách hàng đã có vé: ");
dsKhachHang.hienThiDanhSachCoVe();
}else
System.out.println("Chưa bán vé nào trong ngày hôm nay.");
break;
case 6:
dsKhachHang.saveDsDoiVe(fileName);
break;
case 7:
if(dsKhachHang.soKhachChoVe()!=0){
System.out.println("Danh sách ga chờ mua vé: ");
System.out.println(dsKhachHang.danhSachGaChoVe());
}else
System.out.println("Không còn khách chờ.");
break;
case 8:
Map<String, Integer> thongKe=dsKhachHang.thongKeSoVeTungGa();
if(thongKe.size()>0){
System.out.printf("%10s %15s\n","Tên ga","Số vé đã bán");
for(String tenGa : thongKe.keySet())
System.out.printf("%10s %15s\n",tenGa,thongKe.get(tenGa));
}
else
System.out.println("Chưa bán vé nào.");
break;
default:
flag=false;
break;
}
}
while(flag);
}
}
Bước 4:
package bai03Chuong05Collections;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SaveLoadFile {
/**
* Tuần tự hóa đối tượng vào file
* @param obj là đối tượng cần tuần tự hóa
* @param fileName là tên file chứa dữ liệu
*/
public static void save(Object obj, String fileName) {
try{
FileOutputStream fos=new FileOutputStream(fileName);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.close();
}catch (Exception e) {
e.printStackTrace();
}
}
/**
* Khôi phục đối tượng đã được tuần tự hóa từ file
* @param fileName là file chứa đối tượng đã được tuần tự hóa
* @return Object obj
*/
public static Object load(String fileName) {
Object obj=null;
try{
FileInputStream fis=new FileInputStream(fileName);
ObjectInputStream ois=new ObjectInputStream(fis);
obj=ois.readObject();
ois.close();
}catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}