首页 > 编程语言 >Java超市收银系统(六、商品增加和修改)

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

时间:2024-08-13 20:55:47浏览次数:9  
标签:product Java String System 超市 收银 println pst out

引言

        当选择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博客

标签:product,Java,String,System,超市,收银,println,pst,out
From: https://blog.csdn.net/m0_74325713/article/details/141161762

相关文章

  • Java超市收银系统(五、收银统计)
    引言    收银统计功能,显示“请输入销售日期(yyyy-mm-dd):”,如果日期格式不正确,则显示“你输入的日期格式不正确,请重新输入”,输入正确后,查询统计当前日期所有的销售信息,输出显示格式如下:功能实现    首先,收银统计和前面介绍的Java超市收银系统(四、收银功能)-CS......
  • 基于springboot的电商购物在线商城系统-JAVA.VUE【全套源码论文】
     博主介绍:......
  • 【JavaEE初阶】文件内容的读写—数据流
    ......
  • vue使用JavaScript运算符
    第一:加法运算符{{变量+n}}<p>num参与运算{{num+12}}</p>letvm=newVue({el:"#app",data:{num:101,isOK:true,message:'你......
  • TIOBE 8月编程排行榜出炉!Python 正在追赶 Java 的 TIOBE 指数记录
    2024年8月的TIOBE编程语言排行榜出炉了!对于开发者而言,这份排行榜不仅仅是编程语言的简单排序,更是行业趋势的风向标。而今年,Python的表现格外引人注目,它正在一步步逼近Java的TIOBE指数记录。让我们一起看看这两大编程巨头在本月的激烈角逐吧。为什么Python在这几年的排行榜中节节......
  • 【JAVA_Mysql】JAVA连接Mysql基本步骤
    ......
  • Java中类与对象的学习下
    Java中类与对象的学习下对象的创建和使用创建对象语法:类名对象名=new类名()使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)//这是我们定义的Person类classPerson{**上一个代码块的内容;**}//具体使用publicclassPersonTest{publicstati......
  • 我们常用的地铁卡/银行卡,竟然运行着一个 Java 虚拟机
    我们日常使用NFC卡可以用来刷地铁,进出门禁,但是你有没有想过,当我们使用一个NFC的IC卡刷卡进入地铁的时候,此时系统是如何知道我这个卡上有多少充值余额的?这个薄薄的NFC卡到底有什么魔力,除了可以刷卡进地铁,还可以去银行取钱,进出小区门禁。今天我在看到一些物联网的知识时,......
  • 解密Java中介者模式:代码实例带你深入理解
    1.引言:中介者模式的重要性在软件设计的世界里,模块间的相互依赖往往会导致系统的复杂性和维护难度的增加。中介者模式(MediatorPattern)作为一种行为设计模式,它的出现就是为了解决这一问题。通过引入一个中介者对象,它能够协调各个模块之间的通信,从而实现模块间的解耦,提高系......
  • javase-day06
    aFile_FileDemo01packagecom.se.aFile;/***绝对路径与相对路径的说明:*1.当前工作空间是/home/user/michael/**需求1:访问/home/user/michael/file1.txt*相对路径:file1.txt*绝对路径:/home/user/michael/file1.txt**需求2:访问/home/user/mi......