一、登陆界面
可以让不同的用户进行登陆,总共有四种用户类型,分别为经理(可以对所有界面进行查看,修改),销售人员(可以对所有界面进行查看,但只能对销售界面进行操作),库存管理人员(可以对所有界面进行查看,但只能对库存界面进行操作),采购人员(可以对所有界面进行查看,但只能对进退货界面进行操作)。
二. 基本信息
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.sql.SQLException;
import java.util.ArrayList;
import com.shuangyulin.DBUtils.DB;
import com.shuangyulin.javabean.BuyInfo;
import com.shuangyulin.javabean.Employee;
/*关于商品进货信息操作的业务操作类*/
public class BuyInfoDAO {
/* errMessage保存业务处理的错误消息 */
private String errMessage;
private final int pageSize = 3; /* 设置每页显示的进货记录数量 */
private int recordCount = 0; /* 保存查询到的总的记录条数 */
private int totalPage = 0; /* 符合查询条件的总的页数 */
private int currentPage = 1; /* 当前要显示的页面 */
private String goodNo; /*查询商品编号的关键字*/
private String goodName; /*查询商品名称的关键字*/
private int goodClassId; /*查询的商品类别*/
private String startDate; /*查询的开始日期*/
private String endDate; /*查询的结束日期*/
private float totalPrice = 0.0f; /*符合条件的进货总价*/
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public int getGoodClassId() {
return goodClassId;
}
public void setGoodClassId(int goodClassId) {
this.goodClassId = goodClassId;
}
public String getGoodNo() {
return goodNo;
}
public void setGoodNo(String goodNo) {
this.goodNo = goodNo;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public float getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(float totalPrice) {
this.totalPrice = totalPrice;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public String getErrMessage() {
return errMessage;
}
public void setErrMessage(String errMessage) {
this.errMessage = errMessage;
}
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 boolean AddBuyInfo(BuyInfo buyInfo) {
try {
/* 首先验证管理员输入的商品编号在系统中是否存在 */
String sqlString = "select * from [goodInfo] where goodNo='"
+ buyInfo.getGoodNo() + "'";
DB db = new DB();
ResultSet rs = db.executeQuery(sqlString);
if (!rs.next()) {
this.errMessage = "该商品不存在!";
db.all_close();
return false;
}
/* 构造sql语句实现进货信息的加入操作 */
String insertString = "insert into [buyInfo] (goodNo,supplierName,price,number,totalPrice,buyDate,addTime) values ('";
insertString += buyInfo.getGoodNo() + "','";
insertString += buyInfo.getSupplierName() + "',";
insertString += buyInfo.getPrice() + ",";
insertString += buyInfo.getNumber() + ",";
insertString += buyInfo.getTotalPrice() + ",'";
insertString += buyInfo.getBuyDate() + "','";
insertString += buyInfo.getAddTime() + "')";
/* 增加对应商品的库存的sql */
String updateString = "update [goodStockInfo] set goodCount = goodCount + "
+ buyInfo.getNumber()
+ " where goodNo='"
+ buyInfo.getGoodNo()
+ "'";
String sqlStrings[] = new String[] { insertString, updateString };
boolean result = db.excuteSqlStrings(sqlStrings);
if (!result) {
this.errMessage = "登记商品进货信息时发生了错误!";
db.all_close();
return false;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
/*根据查询条件执行进货信息的查询*/
public ArrayList QueryBuyInfo() {
this.PrepareQuery(); /*首先根据查询条件计算总的记录数,总的页数,总的价格*/
ArrayList<BuyInfo> buyInfoList = new ArrayList<BuyInfo>();
String sqlString = "select * from [buyInfoView] where 1=1";
if(!goodNo.equals(""))
sqlString += " and goodNo like '%" +goodNo + "%'";
if(!goodName.equals(""))
sqlString += " and goodName like '%" + goodName + "%'";
if(0 != goodClassId)
sqlString += " and goodClassId=" + goodClassId;
if(!startDate.equals(""))
sqlString += " and buyDate>='" + startDate + "'";
if(!endDate.equals(""))
sqlString += " and buyDate<='" + endDate + "'";
/*调用数据层进行查询*/
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()) {
BuyInfo buyInfo = new BuyInfo();
buyInfo.setBuyId(rs.getInt("buyId"));
buyInfo.setGoodNo(rs.getString("goodNo"));
buyInfo.setSupplierName(rs.getString("supplierName"));
buyInfo.setPrice(rs.getFloat("price"));
buyInfo.setNumber(rs.getInt("number"));
buyInfo.setTotalPrice(rs.getFloat("totalPrice"));
buyInfo.setBuyDate(rs.getDate("buyDate"));
buyInfo.setAddTime(rs.getTimestamp("addTime"));
buyInfoList.add(buyInfo);
} else {
break;
}
}
db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return buyInfoList;
}
private void PrepareQuery() {
String sqlString = "select count(*) as recordCount,sum(totalPrice) as totalPrice from [buyInfoView] where 1=1";
if(!goodNo.equals(""))
sqlString += " and goodNo like '%" +goodNo + "%'";
if(!goodName.equals(""))
sqlString += " and goodName like '%" + goodName + "%'";
if(0 != goodClassId)
sqlString += " and goodClassId=" + goodClassId;
if(!startDate.equals(""))
sqlString += " and buyDate>='" + startDate + "'";
if(!endDate.equals(""))
sqlString += " and buyDate<='" + endDate + "'";
DB db = new DB();
try {
/*得到符合条件的总的记录数*/
ResultSet rs = db.executeQuery(sqlString);
if(rs.next()) {
recordCount = rs.getInt("recordCount");
totalPrice = rs.getFloat("totalPrice");
}
db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*根据总的记录数和每页显示的记录条数计算总的页数*/
this.totalPage = (this.recordCount + pageSize - 1) / this.pageSize;
}
public int getPageSize() {
return pageSize;
}
public String getGoodName() {
return goodName;
}
public void setGoodName(String goodName) {
this.goodName = goodName;
}
}