java 销售系统_JAVA学习作品之销售管理系统V1.0

package org.screen;

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import javax.swing.JComboBox;

import javax.swing.JOptionPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

public class OperationSqlData {

//定义数据库变量

private String url;

private String passname;

private String password;

private String driver;

private Statement st;

private Connection con;

private ResultSet rst;

public OperationSqlData() //构造数据库链接默认值

{

passname = "admin"; //SQL Server登陆账号

password = "init1234";//SQL Server登录password

driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //驱动载入

try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

JOptionPane.showMessageDialog(null, "数据库载入失败!");

e.printStackTrace();

}

try {

url = "jdbc:sqlserver://"+InetAddress.getLocalHost().getHostAddress()+";"+"DatabaseName=goodsData";//URL链接

} catch (UnknownHostException e) {

JOptionPane.showMessageDialog(null, "数据库载入失败!");

e.printStackTrace();

}

}

public OperationSqlData(String p_name, String p_word) //构造指定帐号密码数据库链接

{

passname = p_name;

password = p_word;

driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

JOptionPane.showMessageDialog(null, "数据库载入失败。");

e.printStackTrace();

}

try {

url = "jdbc:sqlserver://"+InetAddress.getLocalHost().getHostAddress()+";"+"DatabaseName=goodsData";

} catch (UnknownHostException e) {

JOptionPane.showMessageDialog(null, "数据库载入失败!");

e.printStackTrace();

}

}

public void getGoodsNameToCombox(JComboBox combox)

{

String sql = "SELECT distinct goods FROM stock where qty > 0";// 数据库取品名

// 连接数据库,运行查询语句

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(true);

st = con.createStatement();

rst = st.executeQuery(sql);

// 取出的结果增加combox的Item

while (rst.next()) {

combox.addItem(rst.getString("goods"));

}

// 关闭数据库连接

rst.close();

st.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "商品名数据载入异常。 ");

e.printStackTrace();

}

}

public String getUnitByGoodsName(String goods) {

String unit = null;

//从库存表抓取商品单位

String sql = "SELECT distinct unit FROM stock WHERE qty> 0 AND goods = ?

";

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(true);

PreparedStatement ps = con.prepareStatement(sql); //SQL预处理

ps.setString(1, goods); //SQL參数

ResultSet rt = ps.executeQuery(); //运行SQL

while(rt.next())

{

unit = rt.getString("unit"); //从运行结果中得到商品单位

}

// 关闭数据库连接

ps.close();

rt.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "商品单位数据载入异常!

");

e.printStackTrace();

}

return unit; //返回单位

}

public String getSalesPriceByGoodsName(String goods)

{

String sales_price = null;

//从定价表中抓取销售单位价格

String sql = "SELECT unitprice FROM Price WHERE goods = ?";

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(true);

PreparedStatement ps = con.prepareStatement(sql);// SQL预处理

ps.setString(1, goods);

ResultSet rt = ps.executeQuery();

while(rt.next())

{

sales_price = rt.getString("unitprice");

}

// 关闭数据库连接

ps.close();

rt.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "销售单位价格数据载入异常! ");

e.printStackTrace();

}

return sales_price;

}

public ArrayList getSalesRecordByDate(String date_begin, String date_end, Boolean sum_qty_totalprice)

{

ArrayList list = new ArrayList();

String sql = null;

if (sum_qty_totalprice)

{

sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(totalprice) AS s_totalprice FROM sales where date between ?

AND ? GROUP BY goods, unit";//抓取销售记录数据按商品名和单位汇总

}

else{

sql = "SELECT date, goods, qty, unit, unitprice, totalprice FROM sales where date between ? AND ? ORDER BY date DESC";//抓取销售记录数据按时间排序

}

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(true);

PreparedStatement ps = con.prepareStatement(sql);// SQL预处理

ps.setString(1, date_begin); //指定抓取销售记录起始时间

ps.setString(2, date_end); //指定抓取销售记录终止时间

ResultSet rt = ps.executeQuery();

Object[] obj = null;

if (sum_qty_totalprice)

{

while(rt.next())

{

obj = new Object[4];//Object数组增加arraylist

obj[0] = rt.getString("goods");

obj[1] = rt.getFloat("s_qty");

obj[2] = rt.getString("unit");

obj[3] = rt.getFloat("s_totalprice");

list.add(obj);

}

}

else{

while(rt.next())

{

obj = new Object[6];

obj[0] = rt.getString("date");

obj[1] = rt.getString("goods");

obj[2] = rt.getFloat("qty");

obj[3] = rt.getString("unit");

obj[4] = rt.getFloat("unitprice");

obj[5] = rt.getFloat("totalprice");

list.add(obj);

}

}

// 关闭数据库连接

ps.close();

rt.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "销售记录数据载入异常! ");

e.printStackTrace();

}

return list;

}

public float getStockCostByGoodsName(String goods)

{

float stock_cost = 0;

// 这里计算的是商品进货成本(qty>0)

String sql = "SELECT goods,SUM(qty) AS s_qty,SUM(amount) AS s_amount FROM stock WHERE goods = ? AND qty>0 GROUP by goods";

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(true);

PreparedStatement ps = con.prepareStatement(sql);// SQL预处理

ps.setString(1, goods);

ResultSet rt = ps.executeQuery();

while(rt.next())

{

float s_amount = rt.getFloat("s_amount");

float s_qty = rt.getFloat("s_qty");

stock_cost = s_amount/s_qty;

}

// 关闭数据库连接

ps.close();

rt.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "成本数据载入异常! ");

e.printStackTrace();

}

return stock_cost;

}

public ArrayList getStockRecordByDate(String date_begin, String date_end, int status, Boolean sum_amount_qty)

{

ArrayList list = new ArrayList();

String sql = null;

//sun_amount_qty是否根据商品名和单位加总库存数量和成本,

//status的值: -1计算报废库存。0计算总库存; 1计算进货库存

if (sum_amount_qty)

{

if (status == -1)

sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(amount) AS s_amount FROM stock where qty < 0 AND date between ?

AND ? GROUP by goods,unit";

else if (status == 1)

sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(amount) AS s_amount FROM stock where qty > 0 AND date between ? AND ? GROUP by goods,unit";

else if (status == 0)

sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(amount) AS s_amount FROM stock where date between ? AND ? GROUP by goods,unit";

}

else {

if(status == -1)

sql = "SELECT date, goods, qty, unit, amount FROM stock where qty < 0 AND date between ? AND ? ORDER BY date DESC";

else

sql = "SELECT date, goods, qty, unit, amount FROM stock where qty > 0 AND date between ? AND ? ORDER BY date DESC";

}

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(true);

PreparedStatement ps = con.prepareStatement(sql);// SQL预处理

ps.setString(1, date_begin);

ps.setString(2, date_end);

ResultSet rt = ps.executeQuery();

Object[] obj = null;

if (sum_amount_qty) //根据是否汇总处理输出结果

{

while(rt.next())

{

obj = new Object[4];

obj[0] = rt.getString("goods");

obj[1] = rt.getFloat("s_qty");

obj[2] = rt.getString("unit");

obj[3] = rt.getFloat("s_amount");

list.add(obj);

}

}

else {

while(rt.next())

{

obj = new Object[5];

obj[0] = rt.getString("date");

obj[1] = rt.getString("goods");

obj[2] = rt.getFloat("qty");

obj[3] = rt.getString("unit");

obj[4] = rt.getFloat("amount");

list.add(obj);

}

}

// 关闭数据库连接

ps.close();

rt.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "库存数据载入异常! ");

e.printStackTrace();

}

return list;

}

public void CommitSalesStockPricingToSql(DefaultTableModel model, JTable table) //传入用model定义的table

{

//这里先删除原有定价记录,再插入新纪录

String sql1 = "DELETE FROM price WHERE goods = ? ";

String sql2 = "INSERT INTO price (goods, unit, cost, unitprice) VALUES(?,?,?,?)";

try {

// 设置数据库链接,设置手动提交数据

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(false);

PreparedStatement ps1 = con.prepareStatement(sql1);// SQL预处理

PreparedStatement ps2 = con.prepareStatement(sql2);// SQL预处理

int line = table.getRowCount();

// 循环每一行,假设有值增加数据库批处理

for (int i = 0; i < line; i++) {

if(!(model.getValueAt(i, 5)==null)) //首先推断是否有输入值。再推断是否为空值,有值则删除

{

if (!(model.getValueAt(i, 5).toString().isEmpty()))

{

ps1.setString(1, (String) model.getValueAt(i, 0));

ps1.addBatch();

ps2.setString(1, (String) model.getValueAt(i, 0));

ps2.setString(2, (String) model.getValueAt(i, 3));

ps2.setString(3, model.getValueAt(i, 4).toString());

ps2.setString(4, model.getValueAt(i, 5).toString());

ps2.addBatch();

}

}

}

ps1.executeBatch();// 运行批处理。弹出对话消息。显示成功失败

con.commit();

//关闭数据库相关链接

ps1.close();

int[] rt = ps2.executeBatch();// 运行批处理,弹出对话消息,显示成功失败

con.commit();

if (rt.length > 0)

JOptionPane.showMessageDialog(null, "提交成功!");

ps2.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "提交失败! ");

try {

con.rollback();

} catch (SQLException e1) {

e1.printStackTrace();

}

e.printStackTrace();

}

}

public Integer StockIn(String name, String qty, String unit, String amount)

{

int ret = 0;

String sql = "INSERT INTO stock (goods, date, qty, unit, amount) VALUES (?

, ?, ?, ?

, ?

)"; // 定义SQL语句

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(true); // 设置数据自己主动提交数据库

PreparedStatement ps = con.prepareStatement(sql); // SQL预处理

ps.setString(1, name);// 动态參数运行SQL

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 创建指定格式的当前时间

ps.setString(2, df.format(new Date()));

ps.setString(3, qty);

ps.setString(4, unit);

ps.setString(5, amount);

ret = ps.executeUpdate(); // 运行SQL

ps.close(); //关闭数据库链接

con.close();

return ret;

} catch (SQLException e) {

e.printStackTrace();

return ret;

}

}

public void CommitSalesToSql(DefaultTableModel model, JTable table)

{

// 插入销售记录到数据库

String sql = "INSERT INTO sales (goods, date, qty, unit, unitprice, totalprice) VALUES (?, ?, ?, ?

, ?

, ?)";// 批量插入Jtable中数据

try {

// 设置数据库链接。设置手动提交数据

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(false);

PreparedStatement ps = con.prepareStatement(sql);// SQL预处理

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置指定格式的当前日期时间

String date = df.format(new Date());

float f4 = 0;

int line = table.getRowCount();

// 循环每一行。假设有值增加数据库批处理

for (int i = 0; i < line; i++) {

if ((String) model.getValueAt(i, 0) != null) {

ps.setString(1, (String) model.getValueAt(i, 0));

ps.setString(2, date);

float f1 = Float.parseFloat(model.getValueAt(i, 1).toString());

ps.setFloat(3, f1);

ps.setString(4, (String)model.getValueAt(i, 2));

float f2 = Float.parseFloat(model.getValueAt(i, 3).toString());

ps.setFloat(5, f2);

float f3 = Float.parseFloat(model.getValueAt(i, 4).toString());

ps.setFloat(6, f3);

ps.addBatch();

f4 = f3 + f4;

}

}

f4 = (float)(Math.round(f4*100))/100;

// 弹出选择对话框,计算总金额,提示是否提交

int answer = JOptionPane.showConfirmDialog(null, "总金额" + f4 + "元" + " " + "确认提交?", "提交信息",

JOptionPane.YES_NO_OPTION);

if (answer == 0) {

int rst[] = ps.executeBatch();// 运行批处理,弹出对话消息。显示成功失败

if (rst.length > 0) {

JOptionPane.showMessageDialog(null, "交易成功");

con.commit();

}

else if(rst.length == 0)

{

JOptionPane.showMessageDialog(null, "无数据");

}

}

//关闭数据库相关链接

ps.close();

con.close();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "交易失败");

try {

con.rollback();

con.close();

} catch (SQLException e1) {

e1.printStackTrace();

}

e.printStackTrace();

}

}

public Integer DeleteSqlDataByGoodsNameDate(String goods, String date, String business)

{

String sql = null;

int ret = 0;

if(business.equals("stock")||business.equals("stock_waste"))

sql = "DELETE FROM stock where goods = ?

AND date = ?

";

else if (business.equals("sales"))

sql = "DELETE FROM sales where goods = ?

AND date = ?";

// 连接数据库。运行查询语句

try {

con = DriverManager.getConnection(url, passname,password);

con.setAutoCommit(false); // 设置数据自己主动提交数据库

PreparedStatement ps = con.prepareStatement(sql); // SQL预处理

ps.setString(1, goods);

ps.setString(2, date);

ret = ps.executeUpdate(); // 运行SQL

con.commit();

ps.close(); //关闭数据库链接

con.close();

return ret;

} catch (SQLException e) {

try {

con.rollback();

} catch (SQLException e1) {

e1.printStackTrace();

}

e.printStackTrace();

return ret;

}

}

public void DeleteSqlDataByYear(String date_last)//清理数据库旧记录

{

String sql1 = "DELETE FROM stock where date < ?

";

String sql2 = "DELETE FROM sales where date < ?

";

int answer = JOptionPane.showConfirmDialog(null, "确认要删除"+date_last+"之前的数据? ", "提交信息",

JOptionPane.YES_NO_OPTION);

if (answer != 0) {

return;

}

// 连接数据库。运行查询语句

try {

con = DriverManager.getConnection(url, passname,password);

con.setAutoCommit(false); // 设置数据不自己主动提交数据库

PreparedStatement ps1 = con.prepareStatement(sql1); // SQL预处理

ps1.setString(1, date_last);

ps1.executeUpdate(); // 运行SQL

PreparedStatement ps2 = con.prepareStatement(sql2); // SQL预处理

ps2.setString(1, date_last);

ps2.executeUpdate(); // 运行SQL

con.commit();

ps1.close(); //关闭数据库链接

ps2.close();

con.close();

JOptionPane.showMessageDialog(null, "清除数据成功!

");

} catch (SQLException e) {

try {

con.rollback(); //失败回滚

} catch (SQLException e1) {

e1.printStackTrace();

}

JOptionPane.showMessageDialog(null, "清除数据失败");

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
销售管理系统使用说明书 主要功能 销售管理系统由基础信息、基础资料、业务管理、信息查询、辅助工具、系统设置、个人设置等模块组成,其规划功能模块如下: 基础信息 基础信息主要实现员工职务、单位类型、计量单位、支付方式、银行名称、企业资信、商品类别等功能。 基础资料 基础资料主要实现企业档案管理、商品资料管理等功能。 业务管理 业务管理主要实现订货业务、出货业务、退货业务等功能。 信息查询 信息查询主要实现订货业务查询、出货业务查询、退货业务查询、区域信息查询等功能。 辅助工具 辅助工具主要实现调用Word文档、调用Excel文档、调用计算器等功能。 系统设置 系统设置主要实现员工管理、员工权限管理、公司简介设置等功能。 个人设置 个人设置主要实现修改密码、修改个人信息等功能。 操作注意事项 用户在使用《销售管理系统》之前,应注意以下事项: (1)管理员用户名和密码为:mr、mrsoft。 业务流程 要想运行本系统,请按照以下流程操作: (1)在登录界面中单击“新用户注册”按钮,注册用户名和密码,然后由超级管理员进行分配权限。 (2)在登录界面中输入用户名和密码,进入系统,首先在“基础信息”中添加基本信息。 (3)在“基础资料”中添加商品信息,单击“详细信息”按钮,在商品详细信息页面中可以增加进货数量。 (4)在“业务管理”中可以执行出货及退货操作。 (5)在“信息查询”中可对出货信息、退货信息及区域信息进行查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值