商品管理系统(控制台程序)
简言
本项目是此次系列项目的第一篇,目的在于练习基础的sql连接及项目内容的搭建,逐步达到构建商品管理系统网络应用。
1. 项目介绍
本项目包含三个基本功能,对于商品、销售员及购物活动的数据库操作,实现设计简单的登录验证功能。
商超购物管理系统具有商品管理、前台收银、商品库存等功能,java控制台显示界面,mysql数据库存储数据
项目需求
项目结构
本项目主要分为entity
层、dao
层、util
工具包、view
层及db
层
2. 数据库设计与数据库连接层编写
需要完成商品、售货员及交易活动库的设计,不要忘记主键与外键的索引关系。
设计数据表
商品表
主键为gid
- gid
INT
类型 商品编号,自动生成。 - gname
VARCHAR
类型 商品名称, 唯一约束 - gprice
INT
类型 商品价格 - gnum
INT类型 商品数量
售货员表
主键为sid
- sid
INT
型 售货员编号 自动生成 - spassword
VARCHAR
型 售货员密码 用于登录售货员系统 - sname
VARCHAR
型 营业员姓名,用于登录收银,唯一约束(unique)
商品销售表
主键为gsid
,设置gid
与sid
为外键 - gsid
INT
型 销售编号 自动生成 - gid
INT
型 商品编号 - sid
INT
型 售货员编号 - sdate
DATE
型 销售日期 - snum
INT
型 销售总量
数据库连接
通过mysql的连接驱动,连接数据库,小伙伴们需要注意自己的密码哦!
public final class DbConn {
public static Connection getconn(){
Connection connection = null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/shoppingms";
String user = "root";
String password = "******";
try{
Class.forName(driver);
connection = DriverManager.getConnection(url, user, password);
}catch (SQLException | ClassNotFoundException e){
e.printStackTrace();
}
return connection;
}
}
数据库关闭
将数据库事件回收后,关闭数据库连接.
public final class DbClose {
public static void addClose(PreparedStatement pstmt, Connection connection){
try{
if(pstmt != null){
pstmt.close();
}
}catch (SQLException e1){
e1.printStackTrace();
}
try{
if(connection != null){
connection.close();
}
}catch (SQLException e){
e.printStackTrace();
}
}
public static void queryClose(PreparedStatement pstmt, ResultSet rs, Connection connection){
try{
if(pstmt != null){
pstmt.close();
}
}catch (SQLException e1){
e1.printStackTrace();
}
try{
if(rs != null){
rs.close();
}
}catch (SQLException e1){
e1.printStackTrace();
}
try{
if(connection != null){
connection.close();
}
}catch (SQLException e){
e.printStackTrace();
}
}
}
这样我们就把关于数据库连接的操作封装在db层中,便于后续我们在其上封装关于数据表的增、删、改、查
等系列操作.
3. 实体类设计
本项目中实体层需要设计商品、销售员及销售活动实体类,封装其get、set
方法,进而将数据传输的数据格式规划为类对象.
goods实体类
public class Goods {
private int gid;
private String gname;
private double gprice;
private int gnum;
/**
* 添加商品信息
* @param gname, gprice, gnum
* **/
public Goods(String gname, double gprice, int gnum){
this.gname = gname;
this.gprice = gprice;
this.gnum = gnum;
}
/**
* 根据编号更改商品信息
*
* ***/
public Goods(int gid, String gname){
this.gid = gid;
this.gname = gname;
}
/**
* 展示所有商品
* @param gid, gname, gprice, gnum
* **/
public Goods(int gid, String gname, double gprice, int gnum){
this.gid = gid;
this.gprice = gprice;
this.gname = gname;
this.gnum = gnum;
}
/**
* 根据编号更改商品信息
* @param gid, gnum
* **/
public Goods(int gid, int gnum){
this.gid = gid;
this.gnum = gnum;
}
/**
* 根据编号更改商品信息
* @param gid, gprice
* **/
public Goods(int gid, double gprice){
this.gid = gid;
this.gprice = gprice;
}
public int getGid() {
return gid;
}
public void setGid(int gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public double getGprice() {
return gprice;
}
public void setGprice(float gprice) {
this.gprice = gprice;
}
public int getGnum() {
return gnum;
}
public void setGnum(int gnum) {
this.gnum = gnum;
}
}
Salesman实体类
public class Salemans {
private int sid;
private String sPassWord;
private String sName;
/**
* 验证用户登录
* @param sid, sPassWord
*
*
* **/
public Salemans(int sid, String sPassWord){
this.sid = sid;
this.sPassWord = sPassWord;
}
/**
* 查询用户
* 更改密码
* @param sid
* @param sName
* @param sPassWord
* **/
public Salemans(int sid, String sPassWord, String sName){
this.sid = sid;
this.sName = sName;
this.sPassWord = sPassWord;
}
/**
* 添加用户
*
* **/
public Salemans(String sName, String sPassWord){
this.sName = sName;
this.sPassWord = sPassWord;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getsPassWord() {
return sPassWord;
}
public void setsPassWord(String sPassWord) {
this.sPassWord = sPassWord;
}
public String getsName() {
return sName;
}
public void setsName(String sName) {
this.sName = sName;
}
}
gsales实体类
public class Gsale {
private int gid;
private int sid;
private int sNum;
private String gName;
private double gPrice;
private int gNum;
private int allSum;
/**
* 购物结算
* @param gid
* @param sid
* @param sNum
* **/
public Gsale(int gid, int sid, int sNum){
this.gid = gid;
this.sid = sid;
this.sNum = sNum;
}
/**
* 展示商品
*
* **/
public Gsale(String gName, double gPrice, int gNum, int allSum){
this.gName = gName;
this.gPrice = gPrice;
this.gNum = gNum;
this.allSum = allSum;
}
public int getGid() {
return gid;
}
public void setGid(int gid) {
this.gid = gid;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public int getsNum() {
return sNum;
}
public void setsNum(int sNum) {
this.sNum = sNum;
}
public String getgName() {
return gName;
}
public void setgName(String gName) {
this.gName = gName;
}
public double getgPrice() {
return gPrice;
}
public void setgPrice(double gPrice) {
this.gPrice = gPrice;
}
public int getgNum() {
return gNum;
}
public void setgNum(int gNum) {
this.gNum = gNum;
}
public int getAllSum() {
return allSum;
}
public void setAllSum(int allSum) {
this.allSum = allSum;
}
}
到此,本项目的实体层基本设计完成.