引言
当选择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