一、登陆界面
可以让不同的用户进行登陆,总共有四种用户类型,分别为经理(可以对所有界面进行查看,修改),销售人员(可以对所有界面进行查看,但只能对销售界面进行操作),库存管理人员(可以对所有界面进行查看,但只能对库存界面进行操作),采购人员(可以对所有界面进行查看,但只能对进退货界面进行操作)。
二. 基本信息
1. 供应商信息管理
2. 商品信息管理
3. 员工信息管理
三. 进退货信息管理
1、进货登记:进行商品进货登记
2、退货登记:商品退货登记,损坏或质量问题的货品退给供应商,因规格或其他问题的商品将退货回库存。
3、进货查询:可根据时间段,商品类别,供应商进行查询
4、退货查询:可根据时间段,商品类别,供应商进行查询
四 、销售管理
1、商品销售处理:可实现多种商品的销售,有销售日期,小票号以及销售人员的编号。
2、销售退货处理: 可依据小票号进行退货,并要有备注可表明退货原因,以及要有退货日期
3、销售查询:按商品名称查询,按销售人员查询,按销售日期查询
4、退货查询:按小票号查询,按商品名称查询,按销售人员查询,按退货日期查询
五. 信息统计查询
1. 商品销售统计排行:可以按时间段,单类商品销售量,多种商品销售量进行查询
2. 销售人员业绩排行:按销售出商品的总金额进行排行
3. 营业历程对比:按月份销售额或季度销售额进行图形或文字或表状(有一种类型的就可以了)的对比。
六、库存管理
1、库存查询:可按商品名进行查询,商品类别进行查询(可实现模糊查询)
2、库存盘点:进货金额和销售金额的对比
3、库存上溢,下限预警,以及库存报损(当库存少于或多于限定数量时就会显示相关文字进行提醒)
七、系统管理设置
1、用户信息管理(限制不同用户的权限)
2. 用户密码修改
package com.shuangyulin.dao;
import java.sql.ResultSet;
import java.util.ArrayList;
import com.shuangyulin.DBUtils.DB;
import com.shuangyulin.javabean.Good;
import com.shuangyulin.javabean.GoodClass;
/*关于商品信息处理的业务处理类*/
public class GoodDAO {
private String errMessage; /* 保存业务处理时发生的错误信息 */
private final int pageSize = 8; /* 设置每页显示的商品数量 */
private int recordCount = 0; /* 保存查询到的总的记录条数 */
private int totalPage = 0; /* 符合查询条件的总的页数 */
private int currentPage = 1; /* 当前要显示的页面 */
private String goodNo = ""; /* 查询商品编号关键字 */
private String goodName = ""; /* 查询商品名称关键字 */
private int goodClassId = 0; /* 查询的商品类别 */
public GoodDAO() {
this.errMessage = "";
}
public String getErrMessage() {
return errMessage;
}
/* 传入商品信息模型对象,进行商品信息的添加业务 */
public boolean AddGoodInfo(Good good) {
/* 验证商品编号输入不能为空 */
if (good.getGoodNo().equals("")) {
this.errMessage = "商品编号信息输入不能为空!";
return false;
}
/* 验证商品名称输入不能为空 */
if (good.getGoodName().equals("")) {
this.errMessage = "商品名称输入不能为空!";
return false;
}
/* 严整该商品名称在系统中是否已经存在 */
String sqlString = "select count(*) from [goodInfo] where goodNo='"
+ good.getGoodNo() + "'";
DB db = new DB();
try {
if (db.getRecordCount(sqlString) != 0) {
this.errMessage = "该商品编号已经存在了!";
db.all_close();
return false;
}
/* 如果所有验证通过就执行sql插入新商品信息 */
sqlString = "insert into [goodInfo] "
+ "(goodNo,goodClassId,goodName,goodUnit,goodModel,goodSpecs,"
+ "goodPrice,goodPlace,goodMemo,goodAddTime) values ('";
sqlString += good.getGoodNo() + "',";
sqlString += good.getGoodClassId() + ",'";
sqlString += good.getGoodName() + "','";
sqlString += good.getGoodUnit() + "','";
sqlString += good.getGoodModel() + "','";
sqlString += good.getGoodSpecs() + "',";
sqlString += good.getGoodPrice() + ",'";
sqlString += good.getGoodPlace() + "','";
sqlString += good.getGoodMemo() + "','";
sqlString += good.getGoodAddTime() + "')";
/* 然后增加该商品的库存量为0 */
String sqlString2 = "insert into [goodStockInfo] (goodNo,goodCount) values ('"
+ good.getGoodNo() + "',0)";
String[] sqlStrings = new String[] { sqlString, sqlString2 };
if (!db.excuteSqlStrings(sqlStrings)) {
this.errMessage = "添加商品信息发生了错误!";
return false;
}
return true;
} catch (Exception e) {
this.errMessage = "发生了数据错误!";
db.all_close();
e.printStackTrace();
return false;
}
}
/* 查询符合条件的商品信息 */
public ArrayList QueryGoodInfo() {
this.PrepareQuery(); /* 首先根据查询条件计算总的记录和总的页数 */
ArrayList<Good> goodList = new ArrayList<Good>(); /* 保存符合条件的某页记录的集合链表 */
String sqlString = "select * from [goodInfo] where 1=1";
if (goodNo != "")
sqlString += " and goodNo like '%" + goodNo + "%'";
if (goodName != "")
sqlString += " and goodName like '%" + goodName + "%'";
if (goodClassId != 0)
sqlString += " and goodClassId=" + goodClassId;
/* 调用数据层进行查询 */
DB db = new DB();
try {
ResultSet rs = db.executeQuery(sqlString);
if (this.currentPage < 1)
this.currentPage = 1;
if (this.currentPage > this.totalPage)
this.currentPage = this.totalPage;
/* 计算要移动多少记录数才可以到达要显示的页面 */
int moveRecordCount = this.pageSize * (this.currentPage - 1);
for (int i = 0; i < moveRecordCount; i++)
rs.next();
/* 移动rs记录指针到达目标页后就对目标页的每条记录进行处理 */
for (int i = 0; i < this.pageSize; i++) {
if (rs.next()) {
Good good = new Good();
good.setGoodNo(rs.getString("goodNo"));
good.setGoodClassId(rs.getInt("goodClassId"));
good.setGoodName(rs.getString("goodName"));
good.setGoodUnit(rs.getString("goodUnit"));
good.setGoodModel(rs.getString("goodModel"));
good.setGoodSpecs(rs.getString("goodSpecs"));
good.setGoodPrice(rs.getFloat("goodPrice"));
good.setGoodPlace(rs.getString("goodPlace"));
good.setGoodMemo(rs.getString("goodMemo"));
good.setGoodAddTime(rs.getTimestamp("goodAddTime"));
goodList.add(good);
} else {
break;
}
}
db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return goodList;
}
/* 得到符合某个查询条件的总的页数 */
public void PrepareQuery() {
String sqlString = "select count(*) from [goodInfo] where 1=1";
if (goodNo != "")
sqlString += " and goodNo like '%" + goodNo + "%'";
if (goodName != "")
sqlString += " and goodName like '%" + goodName + "%'";
if (goodClassId != 0)
sqlString += " and goodClassId=" + goodClassId;
DB db = new DB();
try {
/* 得到符合条件的总的记录数 */
recordCount = db.getRecordCount(sqlString);
db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/* 根据总的记录数和每页显示的记录条数计算总的页数 */
this.totalPage = (this.recordCount + pageSize - 1) / this.pageSize;
}
/* 根据商品编号得到某个商品的详细信息 */
public static Good GetGoodInfoByGoodNo(String goodNo) {
Good good = new Good();
String sql = "select * from [goodInfo] where goodNo='" + goodNo + "'";
DB db = new DB();
ResultSet rs;
try {
rs = db.executeQuery(sql);
if (rs.next()) {
/* 将数据库中的该商品信息保存在商品信息模型对象中 */
good.setGoodNo(rs.getString("goodNo"));
good.setGoodClassId(rs.getInt("goodClassId"));
good.setGoodName(rs.getString("goodName"));
good.setGoodUnit(rs.getString("goodUnit"));
good.setGoodModel(rs.getString("goodModel"));
good.setGoodSpecs(rs.getString("goodSpecs"));
good.setGoodPrice(rs.getFloat("goodPrice"));
good.setGoodPlace(rs.getString("goodPlace"));
good.setGoodMemo(rs.getString("goodMemo"));
good.setGoodAddTime(rs.getTimestamp("goodAddTime"));
}
} catch (Exception e) {
System.out.println("遍历商品类别信息时发生了错误!");
e.printStackTrace();
} finally {
db.all_close();
}
return good;
}
/* 更新商品信息 */
public static int UpdateGoodInfo(Good good) {
int result = 0;
String sql = "update [goodInfo] set goodClassId=";
sql += good.getGoodClassId() + ",goodName='";
sql += good.getGoodName() + "',goodUnit='";
sql += good.getGoodUnit() + "',goodModel='";
sql += good.getGoodModel() + "',goodSpecs='";
sql += good.getGoodSpecs() + "',goodPrice=";
sql += good.getGoodPrice() + ",goodPlace='";
sql += good.getGoodPlace() + "',goodMemo='";
sql += good.getGoodMemo() + "' where goodNo='" + good.getGoodNo() + "'";
DB db = new DB();
try {
result = db.executeUpdate(sql);
db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public static ArrayList<Good> QueryAllGoodInfo() {
ArrayList<Good> goodList = new ArrayList<Good>();
String sqlString = "select * from [goodInfo]";
/* 调用数据层进行查询 */
DB db = new DB();
try {
ResultSet rs = db.executeQuery(sqlString);
while (rs.next()) {
Good good = new Good();
good.setGoodNo(rs.getString("goodNo"));
good.setGoodClassId(rs.getInt("goodClassId"));
good.setGoodName(rs.getString("goodName"));
good.setGoodUnit(rs.getString("goodUnit"));
good.setGoodModel(rs.getString("goodModel"));
good.setGoodSpecs(rs.getString("goodSpecs"));
good.setGoodPrice(rs.getFloat("goodPrice"));
good.setGoodPlace(rs.getString("goodPlace"));
good.setGoodMemo(rs.getString("goodMemo"));
good.setGoodAddTime(rs.getTimestamp("goodAddTime"));
goodList.add(good);
}
db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return goodList;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getGoodClassId() {
return goodClassId;
}
public void setGoodClassId(int goodClassId) {
this.goodClassId = goodClassId;
}
public String getGoodName() {
return goodName;
}
public void setGoodName(String goodName) {
this.goodName = goodName;
}
public String getGoodNo() {
return goodNo;
}
public void setGoodNo(String goodNo) {
this.goodNo = goodNo;
}
public int getRecordCount() {
return recordCount;
}
public void setRecordCount(int recordCount) {
this.recordCount = recordCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPageSize() {
return pageSize;
}
}