IMG-LOGO
Trang Chủ Java Advanced Examination & Test >> Quản lý bán hàng + java console
×

Lý Thuyết

01. exception + debug + package - lập trình Java Nâng Cao 02. Tìm hiểu collections, Sets, Maps và Generic - lập trình java nâng cao 03. Hướng dẫn đọc ghi file FileInputStream, FileOutputStream, ObjectInputStream trong java - lập trình java nâng cao BT01. chua bai tap ObjectOutputStream & ObjectInputStream - lập trình java nâng cao 04. Tìm hiểu Thread - Phân 1 - lập trình java nâng cao 05. Tìm hiểu Thread trong Java - Phần 2 - lập trình java nâng cao 06. Tìm hiểu Thread trong java - Phần 3- lập trình java nâng cao BT02. Chữa bài tập Thread - Lập trình Java 07. Đông bộ thread + wait notify + synchronized + Lập trình Java - lập trình java nâng cao 08. Giải thích synchronized + Lap trinh Java nang cao BT03. Chữa bài tập hiển thị đồng bộ Thông tin tên & địa chỉ trên 2 thread khác nhau - java- lập trình java nâng cao BT04. chữa bài tập quản lý bán vé máy bay - java nâng cao 09. Kết nối MySQL trong java swing JDBC trong java - lập trình java nâng cao 10. Kết nối CSDL bằng java swing phần 2 - lập trình java nâng cao 11. Design Pattern lập trình java nâng cao - lập trình java nâng cao BT05. Bài tập quản lý sở thú - Phần 1 - lập trình java nâng cao BT06. Bài tập quản lý sở thú - Phần 2 - lập trình java nâng cao BT07. Hướng dẫn chữa bài tập JDBC - quản lý sinh viên - lập trình java nâng cao BT08. Quản lý sản phẩm + 2 bảng danh mục & sản phẩm + Lập trình java nâng cao BT09. Ứng dụng quản lý sinh viên - nhập dữ liệu từ file json - java nâng cao 12. Chuyển đổi json sang object java (sử dụng thư viện gson) - lập trình java nâng cao BT10. Lập trình java nâng cao - chữa bài tập tổng quát 181

Bài Tập

Java Advanced- BT18 Quản lý thông tin sinh & lưu file (ObjectOutputStream & ObjectInputStream) Java Advanced- Bài tập ôn luyện String, StringBuilder, StringBuffer Java Advanced- Chương trình quản lý sinh viên bằng HashMap File - Quản lý thông tin sinh viên Bài tập nén File & giải nén File & Liệt kê files trong 1 thư mục - winrar - winzip Bài tập quản lý sách & lưu thông tin trên Files Thread thực hiện in ngẫu nhiên các số nguyên và ký tự MultiThread - Sinh số ngẫu nhiên và hiển thị bình phương số ngẫu nhiên & Synchronized trong Java MultiThread - Synchronized trong Java - Đồng bộ 3 threads - Sinh số ngẫu nhiên, bình phương, và chia hết Tao tác dữ liệu lên Shared Object sử dụng MultiThreading trong java Sử dụng MultiThreading sinh ký tự a-zA-Z trong java Bài tập quản lý sinh viên bằng Java Swing + File Bài Tập Quản Lý Sinh Viên - CSDL - Java Swing Tạo tài liệu XML/JSON - quản lý lớp học Viết chương trình phân tích tài liệu XML thông tin cá nhân bằng Java Quản lý thông tin cá nhân Profile bằng java - import + export XML File Tạo JSON file & đọc nội dung JSON file thông tin cá nhân bằng Java Tìm mảng a2 kết hợp mảng a1 tạo mảng a là các phân tử liên tiếp nhau 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 Bài tập - Viết 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

Examination & Test

Examination & Test >> Quản lý bán hàng + java console Examination & Test >> Quản lý bán hàng + java swing Examination & Test + Quản lý sinh viên + kiểm tra 60 phút Quản lý sinh viên + XML + JSON + MySQL bằng Java Mini Project - Phân tích dự án + Phát triển phần mềm ATM Quản lý sách bằng Java - Lập trình Java [Share Code] Tìm hiểu về Generic & FileInputStream & FileOutputStream - Lập trình java nâng cao. [Examination] XML/JSON - T2008A




Examination & Test >> Quản lý bán hàng + java console

by GokiSoft.com - 13:59 14/04/2021 12,034 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.

Theo dõi cập nhật nội dung học trên Youtube & Facebook


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

Danh Sách Bài Học

Đã sao chép!!!