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 17,600 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

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);
                }
            }
        }
    }
}


Tài Liệu Tham Khảo

Đã sao chép!!!