IMG-LOGO
×

Tài Liệu Học

Khoá học lập trình Java Core nâng cao

Exception & Collection

[Video] Tìm hiểu exception + debug + package - lập trình Java Nâng Cao [Video] Tìm hiểu collections, Sets, Maps và Generic - lập trình java nâng cao [Video] Chương trình quản lý sinh viên bằng HashMap - Java Advanced

File

[Video] Hướng dẫn đọc ghi file FileInputStream, FileOutputStream, ObjectInputStream trong java - lập trình java nâng cao [Video] Bài tập quản lý sách & lưu thông tin trên Files [Video] File - Quản lý thông tin sinh viên [Video] Quản lý thông tin sinh & lưu object file - Java nâng cao [Video] Viết ứng dụng WinRar | WinZip | 7Zip bằng Java - Nén file Java & giải nén file Java - Khoá học Java [Video] Bài tập quản lý bán vé máy bay - java nâng cao

Thread

[Video] Phân tích quản lý ứng dụng trong HĐH (Window, Mac, Linux)-Phân tích Game đa luồng Java [Video] Tìm hiểu Thread - Đồng bộ Thread - lập trình java nâng cao - Bổ sung thêm lớp học mới. [Video] Giải thích synchronized + Lap trinh Java nang cao [Video] Thread thực hiện in ngẫu nhiên các số nguyên và ký tự - Phần 1 [Video] Thread thực hiện in ngẫu nhiên các số nguyên và ký tự & Đông bộ thread + wait notify + synchronized + Java nâng cao - Phần 2 [Video] Synchronized 2 Thread - Bài tập mảng tên + địa chỉ - Java nâng cao [Video] Bài tập ôn luyện tổng hợp File, OOP, Thread trong java [Video] Sử dụng MultiThreading sinh ký tự a-zA-Z trong java

CSDL

[Video] Kết nối MySQL trong java swing JDBC trong java - lập trình java nâng cao [Video] Kết nối CSDL bằng java swing phần 1 - lập trình java nâng cao [Video] Kết nối CSDL bằng java swing phần 2 - lập trình java nâng cao [Video] Chương trình quản lý thư viện Java + XML Java + CSDL Java- SQL Java [Video] Phần mềm quản lý sinh viên MySQL + Java - Chương trình quản lý sinh viên MySQL + Java - Lập Trình Java [Video] Bài Tập Quản Lý Sinh Viên - CSDL - Java Swing [Video] Chương trình quản lý sản phẩm - quản lý tin tức - quản lý bán hàng - Lập trình Java [Video] Chức năng register & login + CSDL - Lập trình Java nâng cao - Phần 1 [Video] Hướng dẫn sử dụng Persistence Java - Kết nối database Java - MySQL Java nâng cao

Design Pattern & Đa Ngôn Ngữ

[Video] Design Pattern lập trình java nâng cao - lập trình java nâng cao

XML & JSON & CSDL

[Video] C1 > Chương trình quản lý sinh viên Java + Import/Export JSON + File - Lập Trình Java [Video] C2 > Chương trình quản lý sinh viên Java + Import/Export JSON + File - Lập Trình Java

Ôn Tập Tổng Quát & Exmination

[Video] Bài tập - Chường trình quản lý sở thú - Lập trình Java - Lập trình Java nâng cao - Phần 1 [Video] Bài tập - Chường trình quản lý sở thú - Lập trình Java - Lập trình Java nâng cao - Phần 2




Trang Chủ Java Advanced [Assignment] >> Quản lý bán hàng + java console

[Assignment] >> Quản lý bán hàng + java console

by GokiSoft.com - 17:23 29/10/2021 15,663 Lượt Xem

Viết chương trình sau :

- Triển khai lớp đối tường sau

1. Danh mục sản phầm -> gồm các thuộc tính sau : mã danh mục, tên danh mục

- tạo hàm tạo và các bộ getter/setter cho chương trình

- Viết hàm nhập dữ liệu và hiển thị dữ liệu cho danh mục

2. Sản phẩm -> gồm các thuộc tính : mã sản phẩm, mã danh mục, tên sp, giá, ngày nhập, ngày bán, hạn sử dụng, mô tả sản phẩm.

- tạo hàm tạo và các bộ getter/setter cho chương trình

- Viết hàm nhập dữ liệu và hiển thị dữ liệu cho danh mục

Viết menu chương trình sau

1. Nhập thông tin danh mục

2. Nhập thông tin sản phẩm 

3. In ra danh sách các sản phẩm đã bán

4. In ra danh sách sản phầm còn tồn kho

5. In ra danh sách sản phẩm đã quá hạn sử dụng (lấy giờ hiện tại của hệ thống để kiểm tra với HSD của sản phẩm)

6. In ra danh sách sản phẩm sắp hết hạn sử dụng (lấy giờ hiện tại của hệ thống và kiểm tra vs HSD, nếu giờ hiện tại <= HSD và giờ hiện tại >= HSD - 7 ngày thì in  kết quả ra)

7. Tìm kiếm >>> nhập tên sản phẩm -> in ra tất cả các sản phẩm có tên nhập vào và số sản phẩm.

Ví dụ : 

-Tìm kiếm : A

Kết quả :

Sản phẩm: A, price : 100$, ngày nhập : xx-xx-xxxx, ngày bán : xx-xx-xxxx, HSD : xx-xx-xxxx

Sản phẩm: A, price : 100$, ngày nhập : xx-xx-xxxx, ngày bán : xx-xx-xxxx, HSD : xx-xx-xxxx

Sản phẩm: A, price : 100$, ngày nhập : xx-xx-xxxx, ngày bán : xx-xx-xxxx, HSD : xx-xx-xxxx

Số lượng : 3

8. Lưu vào file (danh mục sẽ được lưu vào file category.dat, sản phẩm đã bán vào sell.dat, hết hạn sử dụng vào file : expire.dat, sản phẩm còn lại vào product.dat)

9. Đọc dữ liệu từ file và lưu ra chương trình.

Bình luận



Chia sẻ từ lớp học

Do Trung Duc [T2008A]

Ngày viết: 12:05 28/03/2021



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ex.test4;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author TrungDuc
 */
public class Product implements Serializable{

    public String MaSanPham;
    public String MaDanhMuc;
    public String TenSanPham;
    public float Giaban;
    public Date NgayNhap;
    public Date NgayBan;
    public Date HanSuDung;
    public String MotaSanPham;

    public Product() {
    }

    public Product(String MaSanPham, String MaDanhMuc, String TenSanPham, float Giaban, Date NgayNhap, Date NgayBan, Date HanSuDung, String MotaSanPham) {
        this.MaSanPham = MaSanPham;
        this.MaDanhMuc = MaDanhMuc;
        this.TenSanPham = TenSanPham;
        this.Giaban = Giaban;
        this.NgayNhap = NgayNhap;
        this.NgayBan = NgayBan;
        this.HanSuDung = HanSuDung;
        this.MotaSanPham = MotaSanPham;
    }

    public String getMaSanPham() {
        return MaSanPham;
    }

    public void setMaSanPham(String MaSanPham) {
        this.MaSanPham = MaSanPham;
    }

    public String getMaDanhMuc() {
        return MaDanhMuc;
    }

    public void setMaDanhMuc(String MaDanhMuc) {
        this.MaDanhMuc = MaDanhMuc;
    }

    public String getTenSanPham() {
        return TenSanPham;
    }

    public void setTenSanPham(String TenSanPham) {
        this.TenSanPham = TenSanPham;
    }

    public float getGiaban() {
        return Giaban;
    }

    public void setGiaban(float Giaban) {
        this.Giaban = Giaban;
    }

    public Date getNgayNhap() {
        return NgayNhap;
    }

    public void setNgayNhap(Date NgayNhap) {
        this.NgayNhap = NgayNhap;
    }

    public Date getNgayBan() {
        return NgayBan;
    }

    public void setNgayBan(Date NgayBan) {
        this.NgayBan = NgayBan;
    }

    public Date getHanSuDung() {
        return HanSuDung;
    }

    public void setHanSuDung(Date HanSuDung) {
        this.HanSuDung = HanSuDung;
    }

    public String getMotaSanPham() {
        return MotaSanPham;
    }

    public void setMotaSanPham(String MotaSanPham) {
        this.MotaSanPham = MotaSanPham;
    }

    @Override
    public String toString() {
        return "Product{" + "MaSanPham=" + MaSanPham + ", MaDanhMuc=" + MaDanhMuc + ", TenSanPham=" + TenSanPham + ", Giaban=" + Giaban + ", NgayNhap=" + NgayNhap + ", NgayBan=" + NgayBan + ", HanSuDung=" + HanSuDung + ", MotaSanPham=" + MotaSanPham + '}';
    }

    public void NhapDuLieu() {
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Scanner scan = new Scanner(System.in);

        System.out.println("Nhap Ma San Pham: ");
        MaSanPham = scan.nextLine();

        System.out.println("Nhap Ma Danh Muc: ");
        MaDanhMuc = scan.nextLine();

        System.out.println("Nhap Ten San Pham: ");
        TenSanPham = scan.nextLine();

        System.out.println("Nhap Gia ban San Pham: ");
        Giaban = Float.parseFloat(scan.nextLine());

        System.out.println("Nhap Ngay nhap San Pham: ");
        String ngaynhapString = scan.nextLine();
        if (ngaynhapString.equals("")) {
            NgayNhap = null;
        } else {

            try {
                NgayNhap = format.parse(ngaynhapString);
            } catch (ParseException ex) {
                Logger.getLogger(Product.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

        System.out.println("Nhap Ngay Ban San Pham: ");
        String ngaybanString = scan.nextLine();

        if (ngaybanString.equals("")) {
            NgayBan = null;
        } else {
            try {
                NgayBan = format.parse(ngaybanString);
            } catch (ParseException ex) {
                Logger.getLogger(Product.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        System.out.println("Nhap Han Su Dung San Pham: ");
        String HSDString = scan.nextLine();

        if (HSDString.equals("")) {
            HanSuDung = null;
        } else {
            try {
                HanSuDung = format.parse(HSDString);
            } catch (ParseException ex) {
                Logger.getLogger(Product.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        System.out.println("Nhap mo ta san pham: ");
        MotaSanPham = scan.nextLine();
    }

    public void HienThi() {
        System.out.println(this);
    }

}


Do Trung Duc [T2008A]

Ngày viết: 12:05 28/03/2021



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ex.test4;

import java.io.Serializable;
import java.util.Scanner;

/**
 *
 * @author TrungDuc
 */
public class Category implements Serializable{

    public String MaDanhMuc;
    public String TenDanhMuc;

    public Category() {
    }

    public Category(String MaDanhMuc, String TenDanhMuc) {
        this.MaDanhMuc = MaDanhMuc;
        this.TenDanhMuc = TenDanhMuc;
    }

    public String getMaDanhMuc() {
        return MaDanhMuc;
    }

    public void setMaDanhMuc(String MaDanhMuc) {
        this.MaDanhMuc = MaDanhMuc;
    }

    public String getTenDanhMuc() {
        return TenDanhMuc;
    }

    public void setTenDanhMuc(String TenDanhMuc) {
        this.TenDanhMuc = TenDanhMuc;
    }

    @Override
    public String toString() {
        return "Category{" + "MaDanhMuc=" + MaDanhMuc + ", TenDanhMuc=" + TenDanhMuc + '}';
    }

    public void Hienthi() {
        System.out.println(this);
    }

    public void nhapDuLieu() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Nhap ten danh muc");
        TenDanhMuc = scan.nextLine();
        System.out.println("Nhap ma danh muc");
        MaDanhMuc = scan.nextLine();

    }

}


Do Trung Duc [T2008A]

Ngày viết: 12:05 28/03/2021



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ex.test4;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author TrungDuc
 */
public class Main {

    static List<Category> categoryList = new ArrayList<>();
    static List<Product> productList = new ArrayList<>();
    static Date dateSystem = new Date();

    public static void main(String[] agrs) {
        Scanner scan = new Scanner(System.in);
        int choose;
        do {
            Menu();
            choose = Integer.parseInt(scan.nextLine());

            switch (choose) {
                case 1:
                    NhapThongTinDanhMuc();
                    break;

                case 2:
                    NhapThongTinSanPham();
                    break;

                case 3:
                    InSanPhamDaBan();
                    break;

                case 4:
                    InSanPhamTonKho();
                    break;

                case 5:
                    InSanPhamQuaHan();
                    break;

                case 6:
                    InSanPhamSapHetHan();
                    break;

                case 7:
                    TimKiem();
                    break;

                case 8:
                    LuuFile();
                    break;

                case 9:
                    DocFile();
                    break;
                default:
                    System.err.println("Nhap choose sai!!!");
                    break;
            }

        } while (choose != 9);

    }

    static void Menu() {
        System.out.println("1. Nhập thông tin danh mục");
        System.out.println("2. Nhập thông tin sản phẩm ");
        System.out.println("3. In ra danh sách các sản phẩm đã bán");
        System.out.println("4. In ra danh sách sản phầm còn tồn kho");
        System.out.println("5. In ra danh sách sản phẩm đã quá hạn sử dụng ");
        System.out.println("6. In ra danh sách sản phẩm sắp hết hạn sử dụng");
        System.out.println("7.Tìm kiếm ");
        System.out.println("8. Lưu vào file");
        System.out.println("9. Đọc dữ liệu từ file và lưu ra chương trình");
        System.out.println("Chon: ");
    }

    private static void NhapThongTinDanhMuc() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Nhap so luong danh muc muon them: ");
        int num = Integer.parseInt(scan.nextLine());

        for (int i = 0; i < num; i++) {
            System.out.format("Nhap danh muc thu %d", i + 1);
            Category category = new Category();
            category.nhapDuLieu();
            categoryList.add(category);
        }
    }

    private static void NhapThongTinSanPham() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Nhap so luong san pham muon them: ");
        int num = Integer.parseInt(scan.nextLine());
        for (int i = 0; i < num; i++) {
            System.out.format("Nhap san pham thu %d", i + 1);
            Product product = new Product();
            product.NhapDuLieu();
            productList.add(product);
        }
    }

    private static void InSanPhamDaBan() {
        for (Product product : productList) {
            if (product.getNgayBan() != null) {
                product.HienThi();
            }
        }

    }

    private static void InSanPhamTonKho() {
        for (Product product : productList) {
            if (product.getNgayBan() == null) {
                product.HienThi();
            }
        }
    }

    private static void InSanPhamQuaHan() {
        for (Product product : productList) {
            if (product.getHanSuDung().before(dateSystem)) {
                product.HienThi();
            }
        }

    }

    private static void InSanPhamSapHetHan() {

        for (Product product : productList) {
            Date HanSuDung = product.getHanSuDung();
            Calendar c = Calendar.getInstance();
            c.setTime(HanSuDung);
            c.add(Calendar.DATE, 7);
            Date HanSuDungPlus = c.getTime();

            int compare1 = HanSuDungPlus.compareTo(dateSystem);
            int compare2 = (product.getHanSuDung()).compareTo(dateSystem);
            if (compare1 > 0 && compare2 < 0) {
                product.HienThi();
            }
        }
    }

    private static void TimKiem() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Nhap ten san pham can tim");
        String name = scan.nextLine();
        int count = 0;
        for (Product product : productList) {
            if (product.getTenSanPham().equalsIgnoreCase(name)) {
                count += 1;
                product.HienThi();
            }
        }
        System.out.println("So luong san pham:" + count);

    }

    private static void LuuFile() {
        FileOutputStream fos = null;
        ObjectOutputStream oos = null;

        try {
            fos = new FileOutputStream("category.dat");
            oos = new ObjectOutputStream(fos);
            for (Category category : categoryList) {
                oos.writeObject(category);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        FileOutputStream fos_sell = null;
        ObjectOutputStream oos_sell = null;

        try {
            fos_sell = new FileOutputStream("sell.dat");
            oos_sell = new ObjectOutputStream(fos_sell);
            for (Product product : productList) {
                if (product.NgayBan != null) {
                    oos_sell.writeObject(product);
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        FileOutputStream fos_expire = null;
        ObjectOutputStream oos_expire = null;

        try {
            fos_expire = new FileOutputStream("expire.dat");
            oos_expire = new ObjectOutputStream(fos_expire);
            for (Product product : productList) {
                int compare = product.HanSuDung.compareTo(dateSystem);
                if (compare > 0) {
                    oos_expire.writeObject(product);
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        FileOutputStream fos_other = null;
        ObjectOutputStream oos_other = null;
        try {
            fos_other = new FileOutputStream("product.dat");
            oos_other = new ObjectOutputStream(fos_other);
            for (Product product : productList) {
                int compare1 = product.HanSuDung.compareTo(dateSystem);
                int compare2 = (product.getHanSuDung()).compareTo(dateSystem);
                if ((compare1 > 0 && compare2 < 0) || (product.NgayBan != null)) {
                    continue;
                }
                oos_other.writeObject(product);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private static void DocFile() {
        FileInputStream fis = null;
        ObjectInputStream ois = null;

        try {

            fis = new FileInputStream("category.dat");
            ois = new ObjectInputStream(fis);
            while (true) {
                Category category = (Category) ois.readObject();
                if (category != null) {
                    categoryList.add(category);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        FileInputStream fis_sell = null;
        ObjectInputStream ois_sell = null;

        try {

            fis_sell = new FileInputStream("sell.dat");
            ois_sell = new ObjectInputStream(fis_sell);
            while (true) {
                Product product = (Product) ois_sell.readObject();
                if (product != null) {
                    productList.add(product);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        FileInputStream fis_expire = null;
        ObjectInputStream ois_expire = null;

        try {

            fis_expire = new FileInputStream("expire.dat");
            ois_expire = new ObjectInputStream(fis_expire);
            while (true) {
                Product product = (Product) ois_expire.readObject();
                if (product != null) {
                    productList.add(product);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        FileInputStream fis_other = null;
        ObjectInputStream ois_other = null;

        try {

            fis_other = new FileInputStream("product.dat");
            ois_other = new ObjectInputStream(fis_other);
            while (true) {
                Product product = (Product) ois_other.readObject();
                if (product != null) {
                    productList.add(product);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}


vuong huu phu [T2008A]

Ngày viết: 22:31 27/03/2021



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication50;

import java.util.Scanner;

/**
 *
 * @author Admin
 */
public class Product_portfolio {
    int Ma_danh_muc;
    String Ten_danh_muc; 

    public Product_portfolio() {
    }

    public Product_portfolio(int Ma_danh_muc, String Ten_danh_muc) {
        this.Ma_danh_muc = Ma_danh_muc;
        this.Ten_danh_muc = Ten_danh_muc;
    }

    public int getMa_danh_muc() {
        return Ma_danh_muc;
    }

    public void setMa_danh_muc(int Ma_danh_muc) {
        this.Ma_danh_muc = Ma_danh_muc;
    }

    public String getTen_danh_muc() {
        return Ten_danh_muc;
    }

    public void setTen_danh_muc(String Ten_danh_muc) {
        this.Ten_danh_muc = Ten_danh_muc;
    }

    @Override
    public String toString() {
        return "Ma_danh_muc=" + Ma_danh_muc + ", Ten_danh_muc=" + Ten_danh_muc;
    }
    public void Nhap(){
        Scanner sc = new  Scanner(System.in);
        System.out.println("Nhap ma danh muc");
        Ma_danh_muc = Integer.parseInt(sc.nextLine());
        System.out.println("Nhap ten danh muc");
        Ten_danh_muc = sc.nextLine();
    }
    public void hienthi(){
        System.out.println(toString());
    }
    public String hienthi1(){
      return "Ma danh muc: "+Ma_danh_muc+":: Ten danh muc: "+Ten_danh_muc;
    }
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication50;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Admin
 */
public class Test {

    static ArrayList<Product> Productlist = new ArrayList<>();
    static ArrayList<Product_portfolio> Product_portfoliolist = new ArrayList<>();
    static ArrayList<Product> Sanpham_hethansd = new ArrayList<>();
    static ArrayList<Product> San_pham_da_ban = new ArrayList<>();
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        int lc;
        do {
            menu();
            System.out.println("Nhap su lua chon");
            lc = Integer.parseInt(sc.nextLine());
            switch (lc) {
                case 1:
                    nhap_danh_muc_sp();
                    break;
                case 2:
                    nhap_sp();
                    break;
                case 3:
                    ds_san_pham_ban();
                    break;
                case 4:
                    ds_san_pham_ton_kho();
                    break;
                case 5:
                    ds_sp_qua_han();
                    break;
                case 6:
                    San_shh();
                    break;
                case 7:
                    Tim_kiem();
                    break;
                case 8:
                    luu_file();
                    break;
                case 9:
                    Hienthifile();
                    break;
                default:
                    System.out.println("Nhap lai");
            }
        } while (lc < 10);
    }

    public static void menu() {
        System.out.println("1 Nhap thong tin danh muc");
        System.out.println("2 Nhap thong tin san pham");
        System.out.println("3 In ra cac san pham da ban");
        System.out.println("4 In ra danh sach san pham ton kho");
        System.out.println("5 In ra danh sach san pham qua han");
        System.out.println("6 In ra danh sach san pham sap het han");
        System.out.println("7 Tim kiem san pham");
        System.out.println("8 Luu vao file");
        System.out.println("9 doc du lieu trong file va in ra ");
    }

    private static void nhap_danh_muc_sp() {
        int n;
        System.out.println("So luong danh muc ");
        n = Integer.parseInt(sc.nextLine());
        for (int i = 0; i < n; i++) {
            Product_portfolio p = new Product_portfolio();
            p.Nhap();
            Product_portfoliolist.add(p);
        }
    }

    private static void nhap_sp() {
        if (Product_portfoliolist.size() < 0) {
            System.out.println("chua co danh muc san pham nao!!");
        } else {
            System.out.println("======== danh muc san pham ========");
            for (int i = 0; i < Product_portfoliolist.size(); i++) {
                System.out.println(i + 1 + ":  " + Product_portfoliolist.get(i).hienthi1());
            }
            System.out.println("======== Nhap san pham ===========");
            int n;
            System.out.println("Nhap so luong san pham can them");
            n = Integer.parseInt(sc.nextLine());
            for (int i = 0; i < n; i++) {
                Product product = new Product();
                product.Nhap();
                Productlist.add(product);
            }
        }
    }

    private static void ds_san_pham_ban() {
        System.out.println("Danh sach san pham da ban:");
        Productlist.stream().filter((product) -> (product.getLc() == 1)).forEachOrdered((product) -> {
            product.hienthi();
        });
    }

    private static void ds_san_pham_ton_kho() {
        System.out.println("Danh sach san pham ton kho:");
        Productlist.stream().filter((product) -> (product.getLc() != 1)).forEachOrdered((product) -> product.hienthitonkho());
    }

    private static void ds_sp_qua_han() {
        long millis = System.currentTimeMillis();
        java.sql.Date today = new java.sql.Date(millis);
        Productlist.stream().filter((product) -> (product.getHan_sd().before(today) && product.getLc() == 1)).forEachOrdered((product) -> {
            product.hienthi();
        });
    }

    private static void Tim_kiem() {
        int k = 0;
        System.out.println("Nhap ten can tim kiem!!");
        String tkiem = sc.nextLine();
        k = Productlist.stream().filter((product) -> (product.getTen_san_pham().equalsIgnoreCase(tkiem))).map((product) -> {
            product.hienthi();
            return product;
        }).map((_item) -> 1).reduce(k, Integer::sum);
        if (k != 0) {
            System.out.println("Khong co san pham nao !!");
        } else {
            System.out.println("Co " + k + " san pham!!");
        }
    }

    private static void San_shh() {
        long millis = System.currentTimeMillis();
        Date date = new Date(millis);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, -7);
        java.util.Date gioi_han = cal.getTime();
        Productlist.stream().filter((product) -> (gioi_han.after(product.getHan_sd()))).forEachOrdered((product) -> {
            product.hienthi();
        });
    }

    private static void luu_file() {
        long millis = System.currentTimeMillis();
        java.sql.Date today = new java.sql.Date(millis);
// danh mục sẽ được lưu vào file category.dat
        FileOutputStream fos = null;
        ObjectOutputStream oos = null;
        try {
            fos = new FileOutputStream("category.dat");
            oos = new ObjectOutputStream(fos);
            for (Product_portfolio pr : Product_portfoliolist) {
                oos.writeObject(pr);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        }

        for (Product product : Productlist) {
            if (product.getLc() == 1) {
                //  sản phẩm đã bán vào sell.dat  
                FileOutputStream fos1 = null;
                ObjectOutputStream oos1 = null;

                try {
                    fos = new FileOutputStream("sell.dat");
                    oos = new ObjectOutputStream(fos);
                    oos1.writeObject(product);
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else if (product.getHan_sd().before(today) && product.getLc() == 2) {
// hết hạn sử dụng vào file : expire.dat,
                FileOutputStream fos1 = null;
                ObjectOutputStream oos1 = null;
                try {
                    fos1 = new FileOutputStream("expire.dat");
                    oos1 = new ObjectOutputStream(fos);
                    oos1.writeObject(product);
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }

            } else {
                // product.dat     
                FileOutputStream fos1 = null;
                ObjectOutputStream oos1 = null;
                try {
                    fos1 = new FileOutputStream("product.dat");
                    oos1 = new ObjectOutputStream(fos);
                    oos1.writeObject(product);
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

    }

    private static void Hienthifile() {
        System.out.println("Danh sach danh muc san pham!!");
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        try {
            fis = new FileInputStream("category.dat");
            ois = new ObjectInputStream(fis);
            while (true) {
                Object obj = ois.readObject();
                if (obj != null) {
                    Product_portfoliolist.add((Product_portfolio) obj);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

        }
        System.out.println();
        System.out.println("Danh sach san pham het han");
        FileInputStream fis1 = null;
        ObjectInputStream ois1 = null;
        try {
            fis = new FileInputStream("expire.dat");
            ois = new ObjectInputStream(fis);
            while (true) {
                Object obj = ois1.readObject();
                if (obj != null) {
                    Sanpham_hethansd.add((Product) obj);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (fis1 != null) {
                try {
                    fis1.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if (ois1 != null) {
                try {
                    ois1.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        System.out.println();
        System.out.println("Danh sach san pham da ban");
        FileInputStream fis2 = null;
        ObjectInputStream ois2 = null;
        try {
            fis2 = new FileInputStream("sell.dat");
            ois2 = new ObjectInputStream(fis);
            while (true) {
                Object obj = ois2.readObject();
                if (obj != null) {
                    San_pham_da_ban.add((Product) obj);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (fis2 != null) {
                try {
                    fis2.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if (ois2 != null) {
                try {
                    ois2.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        System.out.println();
        System.out.println("Danh sach san pham con trong kho");
        FileInputStream fis3 = null;
        ObjectInputStream ois3 = null;
        try {
            fis3 = new FileInputStream("product.dat");
            ois3 = new ObjectInputStream(fis);
            while (true) {
                Object obj = ois3.readObject();
                if (obj != null) {
                    Productlist.add((Product) obj);
                } else {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (fis3 != null) {
                try {
                    fis3.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if (ois3 != null) {
                try {
                    ois3.close();
                } catch (IOException ex) {
                    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }

}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication50;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Admin
 */
public class Product {
    int Ma_san_pham,Ma_danh_muc,lc;
    String Ten_san_pham,Mo_ta;
    double Gia_ban;
String Ngnhap,Ngayban,Hansd;
Date Ngay_nhap,Ngay_ban,Han_sd;
    public Product() {
    }

    public Product(int Ma_san_pham, int Ma_danh_muc, int lc, String Ten_san_pham, String Mo_ta, double Gia_ban, String Ngnhap, String Ngayban, String Hansd, Date Ngay_nhap, Date Ngay_ban, Date Han_sd) {
        this.Ma_san_pham = Ma_san_pham;
        this.Ma_danh_muc = Ma_danh_muc;
        this.lc = lc;
        this.Ten_san_pham = Ten_san_pham;
        this.Mo_ta = Mo_ta;
        this.Gia_ban = Gia_ban;
        this.Ngnhap = Ngnhap;
        this.Ngayban = Ngayban;
        this.Hansd = Hansd;
        this.Ngay_nhap = Ngay_nhap;
        this.Ngay_ban = Ngay_ban;
        this.Han_sd = Han_sd;
    }

    public int getMa_san_pham() {
        return Ma_san_pham;
    }

    public void setMa_san_pham(int Ma_san_pham) {
        this.Ma_san_pham = Ma_san_pham;
    }

    public int getMa_danh_muc() {
        return Ma_danh_muc;
    }

    public void setMa_danh_muc(int Ma_danh_muc) {
        this.Ma_danh_muc = Ma_danh_muc;
    }

    public int getLc() {
        return lc;
    }

    public void setLc(int lc) {
        this.lc = lc;
    }

    public String getTen_san_pham() {
        return Ten_san_pham;
    }

    public void setTen_san_pham(String Ten_san_pham) {
        this.Ten_san_pham = Ten_san_pham;
    }

    public String getMo_ta() {
        return Mo_ta;
    }

    public void setMo_ta(String Mo_ta) {
        this.Mo_ta = Mo_ta;
    }

    public double getGia_ban() {
        return Gia_ban;
    }

    public void setGia_ban(double Gia_ban) {
        this.Gia_ban = Gia_ban;
    }

    public String getNgnhap() {
        return Ngnhap;
    }

    public void setNgnhap(String Ngnhap) {
        this.Ngnhap = Ngnhap;
    }

    public String getNgayban() {
        return Ngayban;
    }

    public void setNgayban(String Ngayban) {
        this.Ngayban = Ngayban;
    }

    public String getHansd() {
        return Hansd;
    }

    public void setHansd(String Hansd) {
        this.Hansd = Hansd;
    }

    public Date getNgay_nhap() {
        return Ngay_nhap;
    }

    public void setNgay_nhap(Date Ngay_nhap) {
        this.Ngay_nhap = Ngay_nhap;
    }

    public Date getNgay_ban() {
        return Ngay_ban;
    }

    public void setNgay_ban(Date Ngay_ban) {
        this.Ngay_ban = Ngay_ban;
    }

    public Date getHan_sd() {
        return Han_sd;
    }

    public void setHan_sd(Date Han_sd) {
        this.Han_sd = Han_sd;
    }

    public void Nhap(){
    Scanner sc = new Scanner(System.in);
        System.out.println("Nhap ma san pham");
        Ma_san_pham = Integer.parseInt(sc.nextLine());
        System.out.println("Nhap ma danh muc");
        Ma_danh_muc = Integer.parseInt(sc.nextLine());
        System.out.println("Nhap ten san pham");
        Ten_san_pham = sc.nextLine();
        System.out.println("Nhap gia ban");
        Gia_ban= Double.parseDouble(sc.nextLine());
        System.out.println("Nhap ngay nhap hang");
        Ngnhap = sc.nextLine();
        SimpleDateFormat format = new SimpleDateFormat("dd/mm/yy");
        try {
            Ngay_nhap = format.parse(Ngnhap);
        } catch (ParseException ex) {
            Logger.getLogger(Product.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("Nhap Ngay ban");
        System.out.println("");
        System.out.println("Ban co nhap ngay ban khong");
        System.out.println("1 co:");
        System.out.println("2 khong:");
        System.out.println("Nhap su lua chon");
        lc = Integer.parseInt(sc.nextLine());
        switch(lc){
        case 1:
            System.out.println("Nhap ngay ban:");
             Ngayban = sc.nextLine();
        SimpleDateFormat format1 = new SimpleDateFormat("dd/mm/yy");
        if (Ngayban != null) {
         try {
            Ngay_ban= format1.parse(Ngayban);
                    } catch (ParseException ex) {
            Logger.getLogger(Product.class.getName()).log(Level.SEVERE, null, ex);
        }   
            break;
        }
       case 2:
           break;
        }
        System.out.println("Nhap han su dung");
        Hansd = sc.nextLine();
        SimpleDateFormat format2 = new SimpleDateFormat("dd/mm/yy");
        try {
            Han_sd = format2.parse(Hansd);
        } catch (ParseException ex) {
            Logger.getLogger(Product.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("Nhap mo ta san pham");
        Mo_ta = sc.nextLine();
    }
    public void hienthi(){
        System.out.println(this);
    }
    public void hienthitonkho(){
        System.out.println(tonkho());
    }

    @Override
    public String toString() {
        return "Ma_san_pham=" + Ma_san_pham + ", Ma_danh_muc=" + Ma_danh_muc + ", Ten_san_pham=" + Ten_san_pham + ", Ngay_nhap=" + Ngay_nhap + ", Ngay_ban=" + Ngay_ban + ", Han_sd=" + Han_sd + ", Mo_ta=" + Mo_ta + ", Gia_ban=" + Gia_ban ;
    }
     public String tonkho() {
        return "Ma_san_pham=" + Ma_san_pham + ", Ma_danh_muc=" + Ma_danh_muc + ", Ten_san_pham=" + Ten_san_pham + ", Ngay_nhap=" + Ngay_nhap +", Han_sd=" + Han_sd + ", Mo_ta=" + Mo_ta + ", Gia_ban=" + Gia_ban ;
    }
}


trung [C1907L]

Ngày viết: 15:56 31/05/2020



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pkQuanLyBanHang;

import java.io.Serializable;
import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Category implements Serializable{
    String categoryName, categoryCode;

    public void input() {
        Scanner inp = new Scanner(System.in);
        System.out.println("Input category code");
        categoryCode = inp.nextLine();
        System.out.println("Input category name");
        categoryName = inp.nextLine();
    }

    @Override
    public String toString() {
        return "Category{" + "categoryName=" + categoryName + ", categoryCode=" + categoryCode + '}';
    }
    
    public void output() {
        System.out.println(this);
    }
    
    public Category() {
    }

    public String getCategoryName() {
        return categoryName;
    }

    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }

    public String getCategoryCode() {
        return categoryCode;
    }

    public void setCategoryCode(String categoryCode) {
        this.categoryCode = categoryCode;
    }
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pkQuanLyBanHang;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Product implements Serializable{
    String productName,categoryCode,productCode;
    Float price;
    Date importDate,sellDate,expiryDate;
    String description;
    
    public boolean isSold() {
        return (sellDate != null);
    }
    
    public boolean isExpire() {
        Date today = new Date();
        return (expiryDate.before(today));
    }
    
    public boolean isSoonExpire() {
        Date today = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(today);
        cal.add(Calendar.DATE, 7);
        Date todayPlus7 = cal.getTime();
        return (expiryDate.after(today) && expiryDate.before(todayPlus7));
    }

    public void input() {
        Scanner inp = new Scanner(System.in);
        while (true) {
            System.out.println("Input category code");
            if (isExistCategory(categoryCode = inp.nextLine())) break;
            System.out.println("Category does not exist, choose from the list below:");
            DataMgr.getInstance().getListCategory().forEach((cate) -> {
                System.out.println(cate.getCategoryCode());
            });
        }
        
        System.out.println("Input product code");
        productCode = inp.nextLine();
        System.out.println("Input product name");
        productName = inp.nextLine();
        System.out.println("Input price");
        price = Float.parseFloat(inp.nextLine());
        System.out.println("Input description");
        description = inp.nextLine();
        
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        while (true) {            
            try {
                System.out.println("Input import date");
                importDate = sdf.parse(inp.nextLine());
                break;
            } catch (ParseException ex) {
                System.out.println("Please input in this format (dd/mm/yyyy)");
            }
        }
        
        while (true) {            
            try {
                System.out.println("Input expiry date");
                String inpStr = inp.nextLine();
                if (!inpStr.equals("")){
                    expiryDate = sdf.parse(inpStr);
                }
                break;
            } catch (ParseException ex) {
                System.out.println("Please input in this format (dd/mm/yyyy)");
            }
        }
        
        while (true) {            
            try {
                System.out.println("Input sell date");
                String inpStr = inp.nextLine();
                if (!inpStr.equals("")){
                    sellDate = sdf.parse(inpStr);
                }
                break;
            } catch (ParseException ex) {
                System.out.println("Please input in this format (dd/mm/yyyy)");
            }
        }
    }

    @Override
    public String toString() {
        return "Product{" + "productName=" + productName + ", categoryCode=" + categoryCode + ", productCode=" + productCode + ", price=" + price + ", importDate=" + importDate + ", sellDate=" + sellDate + ", expiryDate=" + expiryDate + ", description=" + description + '}';
    }
    
    public void output() {
        System.out.println(this);
    }
    
    private boolean isExistCategory(String inpCate) {
        return DataMgr.getInstance().getListCategory().stream().
                anyMatch((category) -> (inpCate.
                        equalsIgnoreCase(category.getCategoryCode())));
    }
    
    public Product() {
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getCategoryCode() {
        return categoryCode;
    }

    public void setCategoryCode(String categoryCode) {
        this.categoryCode = categoryCode;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public Date getImportDate() {
        return importDate;
    }

    public void setImportDate(Date importDate) {
        this.importDate = importDate;
    }

    public Date getSellDate() {
        return sellDate;
    }

    public void setSellDate(Date sellDate) {
        this.sellDate = sellDate;
    }

    public Date getExpiryDate() {
        return expiryDate;
    }

    public void setExpiryDate(Date expiryDate) {
        this.expiryDate = expiryDate;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
    
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pkQuanLyBanHang;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 *
 * @author prdox
 */
public class DataMgr {
    List<Category> listCategory = null;
    List<Product> listProduct = null;
    private static DataMgr instance;

    public DataMgr() {
        listCategory = new ArrayList<>();
        listProduct = new ArrayList<>();
    }
    
    public static synchronized DataMgr getInstance() {
        if (instance == null) {
            instance = new DataMgr();
        }
        return instance;
    }

    public List<Product> getSoldProducts() {
        if (instance == null || instance.getListProduct() == null) return null;
        List<Product> soldProducts = new ArrayList<>();
        instance.getListProduct().stream().
                filter((product) -> product.isSold()).
                forEachOrdered((product) -> {
                    soldProducts.add(product);
                });
        return soldProducts;
    }
    
    public List<Product> getExpiryProducts() {
        if (instance == null || instance.getListProduct() == null) return null;
        List<Product> expiryProducts = new ArrayList<>();
        Date today = new Date();
        instance.getListProduct().stream().
                filter((product) -> (product.isExpire())).
                forEachOrdered((product) -> {
                    expiryProducts.add(product);
                });
        return expiryProducts;
    }
    
    public List<Product> getSoonExpiryProducts() {
        if (instance == null || instance.getListProduct() == null) return null;
        List<Product> soonExpiryProducts = new ArrayList<>();
        Date today = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(today);
        cal.add(Calendar.DATE, 7);
        Date todayPlus7 = cal.getTime();
        DataMgr.getInstance().getListProduct().stream().
            filter((product) -> (product.isSoonExpire())).
                forEachOrdered(soonExpiryProducts::add);
        return soonExpiryProducts;
    }
    
    public List<Product> getRemainsProducts() {
        if (instance == null || instance.getListProduct() == null) return null;
        List<Product> remains = new ArrayList<>();
        instance.getListProduct().stream().filter((prod) -> (!prod.
                isExpire() && !prod.isSold())).forEachOrdered((prod) -> {
            remains.add(prod);
        });
        return remains;
    }
    
    public List<Category> getListCategory() {
        return listCategory;
    }

    public List<Product> getListProduct() {
        return listProduct;
    }

    public void setListCategory(List<Category> listCategory) {
        this.listCategory = listCategory;
    }

    public void setListProduct(List<Product> listProduct) {
        this.listProduct = listProduct;
    }
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pkQuanLyBanHang;

import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author prdox
 */
interface MapMethod {

    void process();
}

public class Main {

    static Scanner inp = new Scanner(System.in);

    public static void main(String[] args) {
        int choice;
        do {
            try {
                showMenu();
                choice = Integer.parseInt(inp.nextLine());
                getMap()[choice - 1].process();
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.println("Invalid input ...");
                choice = 0; //reset choice
            }
        } while (choice != 10);
    }

    private static void showMenu() {
        System.out.println("1. Nhập thông tin danh mục");
        System.out.println("2. Nhập thông tin sản phẩm ");
        System.out.println("3. In ra danh sách các sản phẩm đã bán");
        System.out.println("4. In ra danh sách sản phầm còn tồn kho");
        System.out.println("5. In ra danh sách sản phẩm đã quá hạn sử dụng");
        System.out.println("6. In ra danh sách sản phẩm sắp hết hạn sử dụng");
        System.out.println("7. Tìm kiếm ");
        System.out.println("8. Luu -> file");
        System.out.println("9. Doc du lieu tu file");
        System.out.println("10. Quit");
    }

    private static MapMethod[] getMap() {
        MapMethod map[] = {
            Main::inputCategory,
            Main::inputProduct,
            Main::outputSoldProducts,
            Main::outputInstock,
            Main::outputExpiryProduct,
            Main::outputSoonExpiryProduct,
            Main::searchProduct,
            Main::outputToFile,
            Main::getDataFromFile,
            Main::quitProgram
        };
        return map;
    }

    private static void quitProgram() {
        System.out.println("Bye bye ...");
    }

    private static void inputCategory() {
        do {
            Category newCate = new Category();
            newCate.input();
            DataMgr.getInstance().getListCategory().add(newCate);
            System.out.println("Input new category (y/n) ?");
        } while (inp.nextLine().equalsIgnoreCase("y"));
    }

    private static void inputProduct() {
        if (DataMgr.getInstance().getListCategory() == null) {
            System.out.println("Please input category first");
            return;
        }

        do {
            Product newProd = new Product();
            newProd.input();
            DataMgr.getInstance().getListProduct().add(newProd);
            System.out.println("Input new product (y/n) ?");
        } while (inp.nextLine().equalsIgnoreCase("y"));
    }

    private static void outputSoldProducts() {
        if (DataMgr.getInstance().getSoldProducts() == null) {
            System.out.println("No product available");
            return;
        }

        System.out.println("List sold product : ");
        DataMgr.getInstance().getSoldProducts().forEach((prod) -> {
            prod.output();
        });
    }

    private static void outputInstock() {
        if (DataMgr.getInstance().getListProduct() == null) {
            System.out.println("No product available");
            return;
        }

        DataMgr.getInstance().getListProduct().stream().
                filter((product) -> (product.getSellDate() != null)).
                forEachOrdered((product) -> {
                    product.output();
                });
    }

    private static void outputExpiryProduct() {
        if (DataMgr.getInstance().getExpiryProducts() == null) {
            System.out.println("No product available");
            return;
        }

        System.out.println("List expiry product : ");
        DataMgr.getInstance().getExpiryProducts().forEach((prod) -> {
            prod.output();
        });
    }

    private static void outputSoonExpiryProduct() {
        if (DataMgr.getInstance().getSoonExpiryProducts() == null) {
            System.out.println("No product available");
            return;
        }

        System.out.println("List soon to expiry product : ");
        DataMgr.getInstance().getSoonExpiryProducts().forEach((prod) -> {
            prod.output();
        });
    }

    private static void searchProduct() {
        if (DataMgr.getInstance().getListProduct() == null) {
            System.out.println("No product available");
            return;
        }

        System.out.println("Input product name to search");
        String searchProd = inp.nextLine();
        int total = 0;
        for (Product prod : DataMgr.getInstance().getListProduct()) {
            if (prod.getProductName().equalsIgnoreCase(searchProd)) {
                total++;
                prod.output();
            }
        }
        System.out.println("Total: " + total);
    }

    private static void outputToFile() {
        saveList(DataMgr.getInstance().getListCategory(), "category.dat");
        saveList(DataMgr.getInstance().getSoldProducts(), "sell.dat");
        saveList(DataMgr.getInstance().getExpiryProducts(), "expire.dat");
        saveList(DataMgr.getInstance().getRemainsProducts(), "product.dat");
    }

    private static void getDataFromFile() {
        DataMgr.getInstance().setListCategory(readFile("category.dat"));
        List listProd = new ArrayList<>();
        listProd.addAll(readFile("sell.dat"));
        listProd.addAll(readFile("expire.dat"));
        listProd.addAll(readFile("product.dat"));
        DataMgr.getInstance().setListProduct(listProd);
    }

    private static List readFile(String fileName) {
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        List returnList = new ArrayList<>();
        try {
            fis = new FileInputStream(fileName);
            ois = new ObjectInputStream(fis);
            Object obj = null;
            while (true) {
                try {
                    returnList.add(ois.readObject());
                } catch (EOFException e) {
                    break;
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        return returnList;
    }

    private static void saveList(List list, String fileName) {
        FileOutputStream fos = null;
        ObjectOutputStream oos = null;
        try {
            fos = new FileOutputStream(fileName);
            oos = new ObjectOutputStream(fos);
            for (Object obj : list) {
                oos.writeObject(obj);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if (oos != null) {
                try {
                    oos.close();
                } catch (IOException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}


Phân Loại Bài Viết

Tài Liệu Tham Khảo

Đã sao chép!!!