Java超市收银系统(六、商品增加和修改)

引言

        当选择1时,从键盘依次录入商品信息,格式为“商品条形码,商品名称,单价,供应商”,如:“100002,笔记本电脑,3400,HP公司”,当输入的条形码在数据库中已经存在时,显示“条形码不能重复,请重新输入”,输入完毕后将该信息增加到数据库中,并显示“增加成功”,返回子菜单。输入时要对输入的各项做格式的校验,如果输入项的格式不正确,则给出提示信息“你输入的数据格式不正确,请重新输入”。

        当选择2时,显示“请输入查询的商品名称:”,查询完成显示以下格式:

        当选择3时,退出系统。

功能实现

主函数:        

        while(true):无限循环,程序会不断显示菜单,直到用户选择退出。

        System.out.println(...):输出菜单选项到控制台。

        Scanner scanner = new Scanner(System.in):读取用户输入。

        switch (choice):根据用户的选择调用不同的方法。

inputProduct 方法:

        Scanner scanner = new Scanner(System.in):读取用户输入的商品信息。

        String[] parts = input.split(",|,"):将输入的字符串按逗号或中文逗号分隔,得到商品的各个属性。

        if (parts.length != 4):检查输入是否符合预期的格式(4个部分)。

        price = Float.parseFloat(parts[2].trim()):将单价转换为浮点数,捕获转换错误。

        if (ProductDAO.queryByBarcode(barCode) != null):检查条形码是否已存在于数据库中。

        ProductDAO.insert(product):将商品信息插入数据库。

queryProduct 方法:

        Scanner scanner = new Scanner(System.in):读取用户输入的查询商品名称。

        List<Product> productList = ProductDAO.queryByName(query):从数据库中查询商品名称。

        if (productList.isEmpty()):检查是否找到了符合条件的商品记录。

        for (int i = 0; i < productList.size(); i++):遍历商品列表并输出商品信息。

结果展示

完整代码

dao—ProductDAO

package dao;

import util.DBUtil;
import vo.Product;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ProductDAO {
    public static Product queryByBarcode(String barcode) {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        Product product = null;
        try {
            con = DBUtil.getConnection();
            String sql = "SELECT * FROM t_shangping WHERE tiaoma = ?";
            pst = con.prepareStatement(sql);
            pst.setString(1, barcode);
            rs = pst.executeQuery();
            if (rs.next()) {
                product = new Product();
                product.setBarCode(rs.getString("tiaoma"));
                product.setProductName(rs.getString("mingcheng"));
                product.setPrice(rs.getFloat("danjia"));
                product.setSupply(rs.getString("gongyingshang"));
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            DBUtil.close(con, pst);
        }
        return product;
    }

    public static List<Product> queryByName(String name) {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        List<Product> productList = new ArrayList<>();
        try {
            con = DBUtil.getConnection();
            String sql = "SELECT * FROM t_shangping WHERE mingcheng LIKE ?";
            pst = con.prepareStatement(sql);
            pst.setString(1, "%" + name + "%");
            rs = pst.executeQuery();
            while (rs.next()) {
                Product product = new Product();
                product.setBarCode(rs.getString("tiaoma"));
                product.setProductName(rs.getString("mingcheng"));
                product.setPrice(rs.getFloat("danjia"));
                product.setSupply(rs.getString("gongyingshang"));
                productList.add(product);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            DBUtil.close(con, pst);
        }
        return productList;
    }
    public static boolean insert(Product product) {
        Connection con = null;
        PreparedStatement pst = null;
        boolean success = false;
        try {
            con = DBUtil.getConnection();
            String sql = "INSERT INTO t_shangping (tiaoma, mingcheng, danjia, gongyingshang) VALUES (?, ?, ?, ?)";
            pst = con.prepareStatement(sql);
            pst.setString(1, product.getBarCode());
            pst.setString(2, product.getProductName());
            pst.setFloat(3, product.getPrice());
            pst.setString(4, product.getSupply());
            int rowsAffected = pst.executeUpdate();
            if (rowsAffected > 0) {
                success = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(con, pst);
        }
        return success;
    }
}

vo—Product

package vo;

public class Product {
    private String barCode;
    private String productName;
    private float price;
    private String supply;

    public Product() {
    }

    public Product(String barCode, String productName, float price, String supply) {
        this.barCode = barCode;
        this.productName = productName;
        this.price = price;
        this.supply = supply;
    }

    public String getBarCode() {
        return barCode;
    }

    public void setBarCode(String barCode) {
        this.barCode = barCode;
    }

    public String getProductName() {
        return productName;
    }

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

    public float getPrice() {
        return price;
    }

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

    public String getSupply() {
        return supply;
    }

    public void setSupply(String supply) {
        this.supply = supply;
    }
}

ui—Driver

package ui;

import dao.ProductDAO;
import vo.Product;

import java.util.List;
import java.util.Scanner;

public class Driver {
    public static void main(String[] args) {
        while(true) {
            System.out.println("===****超市商品管理维护====");
            System.out.println("1、输入商品");
            System.out.println("2、查询商品");
            System.out.println("3、退出");
            System.out.println("请选择(1-3):");
            Scanner scanner = new Scanner(System.in);
            int choice = scanner.nextInt();

            switch (choice) {
                case 1:
                    inputProduct();
                    break;
                case 2:
                    queryProduct();
                    break;
                case 3:
                    System.out.println("退出系统");
                    System.exit(0);
                default:
                    System.out.println("错误");

            }
        }

    }

    private static void inputProduct() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入商品信息(格式:商品条形码,商品名称,单价,供应商):");
        String input = scanner.nextLine();

        // 检查输入的格式
        String[] parts = input.split(",|,");
        if (parts.length != 4) {
            System.out.println("你输入的数据格式不正确,请重新输入");
        }

        String barCode = parts[0].trim();
        String productName = parts[1].trim();
        float price;
        try {
            price = Float.parseFloat(parts[2].trim());
        } catch (NumberFormatException e) {
            System.out.println("单价格式不正确,请重新输入");
            return;
        }
        String supply = parts[3].trim();

        // 检查条形码是否已存在
        if (ProductDAO.queryByBarcode(barCode) != null) {
            System.out.println("条形码不能重复,请重新输入");
            return;
        }

        // 插入商品信息到数据库
        Product product = new Product(barCode, productName, price, supply);
        if (ProductDAO.insert(product)) {
            System.out.println("增加成功");
        } else {
            System.out.println("增加失败,请稍后重试");
        }
    }

    private static void queryProduct() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入查询的商品名称:");
        String query = scanner.nextLine();

        List<Product> productList = ProductDAO.queryByName(query);

        if (productList.isEmpty()) {
            System.out.println("未找到符合条件的商品记录");
        } else {
            System.out.println("满足条件的记录总共" + productList.size() + "条,信息如下:");
            System.out.println("序号\t条形码\t商品名称\t单价\t供应商");
            System.out.println("===\t====\t========\t===\t======");
            for (int i = 0; i < productList.size(); i++) {
                Product product = productList.get(i);
                System.out.println((i + 1) + "\t" + product.getBarCode() + "\t" + product.getProductName() + "\t" +
                        product.getPrice() + "\t" + product.getSupply());
            }
        }
        
    }
}

util—DBUtil和数据库mysql

参考前面发过的,可以直接使用。Java超市收银系统(五、收银统计)-CSDN博客Java超市收银系统(四、收银功能)-CSDN博客Java超市收银系统(五、收银统计)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值