商品管理系统(存储到数据库中)
简介
第一次博客 有错误可以私信我 谢谢大家的指正。
如果写的可以希望大家可以关注一下,会继续更新学习历程 一起学习进步。
源码在最后
项目要求
- 能根据项目需求设计合理的实体类
- 规范的编码
- 关闭程序后,录入的数据下次打开程序还存在
项目需求
- 商品添加(输入商品编码、名称、价格、数量)
- 商品列表展示
- 商品入库(输入商品编号,然后提示用户输入入库数量,进行入库)
- 商品出库(输入商品编号,提示用户输入出库数量,进行出库)
- 修改商品价格(提示用户输入编号,录入新价格)
- 删除商品(提示用户输入编号,确认是否删除)
准备工作
软件准备
-
有 数据库 ;IDEA
-
下载jar包 点此搜索下载
- mysql 的
- c3p0 连接池的
-
导入jar包
文件准备
- 创建包
-
DataSouce.properties 配置类信息文件
# 数据库配置信息 jdbc_url=jdbc:mysql://localhost:3306/tables jdbc_driver=com.mysql.cj.jdbc.Driver jdbc_user=123 jdbc_password=123
-
Env类 读取属性文件的组件类
import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * 读取属性文件加载类 */ public final class Env extends Properties { public static final String JDBC_URL; public static final String JDBC_DRIVER; public static final String JDBC_USER; public static final String JDBC_PASSWORD; public static Env env; /* 数据库属性文件的路径和名称 */ public static final String CONF_FILE="com\\sjtest\\conf\\DataSouce.properties"; static { if(env==null){ //当Env为空的时候赋值 env=new Env(); } //获取属性文件的文件流 InputStream input = env.getClass().getClassLoader().getResourceAsStream(CONF_FILE); try { env.load(input);//加载文件流 } catch (IOException e) { e.printStackTrace(); }finally { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } //赋值 JDBC_URL=env.getProperty("jdbc_url"); JDBC_DRIVER=env.getProperty("jdbc_driver"); JDBC_USER=env.getProperty("jdbc_user"); JDBC_PASSWORD=env.getProperty("jdbc_password"); } }
-
DataSourPool类 数据源管理组件类
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DataSourPool {
private static ComboPooledDataSource c3p0;
/**
* 创建 ComboPooledDataSource 数据源
*/
private static void createComboPooledDataSource(){
if(c3p0==null){
//如果c3p0是空的 赋值
c3p0=new ComboPooledDataSource();
}
/*
数据源相关属性
*/
try {
c3p0.setDriverClass(Env.JDBC_DRIVER);
c3p0.setUser(Env.JDBC_USER);
c3p0.setPassword(Env.JDBC_PASSWORD);
c3p0.setJdbcUrl(Env.JDBC_URL);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
}
/**
* 获取Connection 接口的方法
* @return
*/
public static Connection getConnection(){
Connection conn=null;
createComboPooledDataSource();//创建数据源
try {
conn=c3p0.getConnection();//有数据源获取打开一个连接
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return conn;
}
/*
方法重载
*/
/**
* 关闭方法
* @param conn
*/
public static void close(Connection conn) {
try {
if(conn!=null) {
conn.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
public static void close(Statement state) {
try {
if (state!=null) {
state.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
public static void close(ResultSet resu) {
try {
if (resu != null) {
resu.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
-
Goods类 商品的实体类
/** * 映射商品表 */ public class Goods { //商品编号 private String id; //商品名称 private String name; //商品价格 private int price; //商品数量 private int number; /* 定义有参 无参的构造器 */ public Goods() { } public Goods(String id, String name, int price, int number) { this.id = id; this.name = name; this.price = price; this.number = number; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } /* 重写toString方法 */ @Override public String toString() { return "Goods{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", price=" + price + ", number=" + number + '}'; } }
-
Util 类 工具类 注意
import com.sjtest.Exception.NoneException; import com.sjtest.pojo.Goods; import java.sql.Connection; import java