Awt+Swing+Mysql实现超市商品交易管理系统(含全部代码)

2023-10-26

目录

 成果展示

数据库表格准备

 绘制窗体以及组件

主窗体

登录面板

上架商品面板

下架商品面板

操作商品面板

数据面板(展示表格)

关键技术与思路

与数据库建立连接

对数据库数据进行增删改

查询数据

 验证状态

切换面板与点击触发事件

全部代码


功能介绍:

1.登录不同管理员账号

2.查看商品信息

3.查看每一单商品的交易信息

4.上架新商品

5.下架旧商品

6.售卖商品或进货商品

 成果展示

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

数据库表格准备

1.商品信息表格:

表头有商品名,进价,售价,是否打折。。。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

2.商品交易详情:

表头有交易时间,交易数量,进/售货,商品名

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 3.操作员信息表格

表头有账号,密码,交易额

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

mysql创建表友情链接

mysql 建表语句 及完整案例_大蛇王的博客-CSDN博客_mysql建表语句

 idea导入mysql驱动包方法友情链接Intellij IDEA 添加jar包的三种方式_inzaghihalo的博客-CSDN博客_idea导入jar包

 绘制窗体以及组件

主窗体

        setTitle("超市管理系统");
        JMenu jm1=new JMenu("商品信息");
        JMenu jm2=new JMenu("商品管理");
        JMenuItem jmi1=new JMenu("进货商品信息");
        JMenuItem jmi2=new JMenu("商品交易信息");
        JMenuItem jmi3=new JMenu("上架商品");
        JMenuItem jmi4=new JMenu("下架商品");
        jm1.add(jmi1);
        jm1.add(jmi2);
        jm2.add(jmi3);
        jm2.add(jmi4);
        JMenuBar jmb=new JMenuBar();
        jmb.add(jm1);
        jmb.add(jm2);
        setJMenuBar(jmb);
        setBounds(300,200,400,300);
        setLayout(null);

登录面板

        JLabel l=new JLabel("超市管理系统");
        JLabel l1=new JLabel("账号:");
        JLabel l2=new JLabel("密码:");
        jtf=new JTextField(20);
        jwf=new JPasswordField(20);
        jwf.setEchoChar('*');
        b=new JButton("登录");
        l.setBounds(130,20,150,50);
        l.setForeground(Color.red);
        l.setFont(new Font("宋体",Font.BOLD,23));
        l1.setBounds(120,75,100,40);
        l2.setBounds(120,110,100,40);
        jtf.setBounds(180,75,100,30);
        jwf.setBounds(180,110,100,30);
        b.setBounds(170,170,70,40);
        add(l);
        add(l1);
        add(l2);
        add(jtf);
        add(jwf);
        add(b);
        setLayout(null);

上架商品面板

 JLabel l1=new JLabel("商品名称:");
        JLabel l2=new JLabel("进   价:");
        JLabel l3=new JLabel("售   价:");
        JLabel l4=new JLabel("是否打折:");
        JTextField jtf1=new JTextField(20);
        JTextField jtf2=new JTextField(20);
        JTextField jtf3=new JTextField(20);
        JRadioButton jrb1=new JRadioButton("是");
        JRadioButton jrb2=new JRadioButton("否");
        jrb2.setSelected(true);
        JButton b=new JButton("确认");
        ButtonGroup bg=new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);
        l1.setBounds(20,20,70,30);
        l2.setBounds(20,70,70,30);
        l3.setBounds(20,120,70,30);
        l4.setBounds(20,170,70,30);
        jtf1.setBounds(90,25,90,20);
        jtf2.setBounds(90,75,90,20);
        jtf3.setBounds(90,125,90,20);
        jrb1.setBounds(90,175,70,20);
        jrb2.setBounds(140,175,70,20);
        b.setBounds(200,75,70,30);
        add(l1);
        add(l2);
        add(l3);
        add(l4);
        add(jtf1);
        add(jtf2);
        add(jtf3);
        add(jrb1);
        add(jrb2);
        add(b);
        setLayout(null);

下架商品面板

        JLabel l=new JLabel("选择需要下架的商品:");
        JComboBox jcb=new JComboBox(jdbc.str2);
        JButton b=new JButton("确定");
        l.setBounds(100,70,130,30);
        jcb.setBounds(250,70,70,30);
        b.setBounds(150,120,70,40);
        add(l);
        add(jcb);
        add(b);

操作商品面板

        JLabel l1=new JLabel("选择进售货");
        String []str1={"进货","销售"};
        JComboBox jcb1=new JComboBox(str1);
        JLabel l2=new JLabel("选择商品");
        JComboBox jcb2=new JComboBox(new JDBC().str2);
        JLabel l3=new JLabel("选择件数");
        JTextField jtf=new JTextField(20);
        JButton b=new JButton("确认");
        l1.setBounds(20,20,70,30);
        jcb1.setBounds(120,20,100,30);
        l2.setBounds(20,80,70,30);
        jcb2.setBounds(120,80,100,30);
        l3.setBounds(20,150,70,30);
        jtf.setBounds(120,150,100,30);
        b.setBounds(260,80,70,30);
        add(l1);
        add(l2);
        add(l3);
        add(jcb1);
        add(jcb2);
        add(jtf);
        add(b);
        setLayout(null);

数据面板(展示表格)

                JTable jt=new JTable(str,name);
                jt.setPreferredScrollableViewportSize(new Dimension(350,200));
                JScrollPane jsp=new JScrollPane(jt);
                add(jsp,BorderLayout.CENTER);

关键技术与思路

与数据库建立连接

通过Class.forName("com.mysql.jdbc.Driver");
初始化驱动类com.mysql.jdbc.Driver
就在 mysql-connector-java-5.0.8-bin.jar中

示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
public class TestJDBC {
    public static void main(String[] args) {
 
        try {
            Class.forName("com.mysql.jdbc.Driver");
 
            // 建立与数据库的Connection连接
            // 这里需要提供:
            // 数据库所处于的ip:127.0.0.1 (本机)
            // 数据库的端口号: 3306 (mysql专用端口号)
            // 数据库名称 how2java
            // 编码方式 UTF-8
            // 账号 root
            // 密码 admin
 
            Connection c = DriverManager
                    .getConnection(
                            "jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
                            "root", "admin");
 
            System.out.println("连接成功,获取连接对象: " + c);
 
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
    }
}

对数据库数据进行增删改

示例代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
  
public class TestJDBC {
    public static void main(String[] args) {
  
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
  
        try (
            Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
                "root", "admin");
            Statement s = c.createStatement();              
        )
        {
            String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";//增
//String sql = "delete from hero where id = 5";删
// String sql = "update hero set name = 'name 5' where id = 3";改
            s.execute(sql);
              
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

查询数据

示例代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJDBC {
	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
				"root", "admin"); Statement s = c.createStatement();) {

			String sql = "select * from hero";

			// 执行查询语句,并把结果集返回给ResultSet
			ResultSet rs = s.executeQuery(sql);
			while (rs.next()) {
				int id = rs.getInt("id");// 可以使用字段名
				String name = rs.getString(2);// 也可以使用字段的顺序
				float hp = rs.getFloat("hp");
				int damage = rs.getInt(4);
				System.out.printf("%d\t%s\t%f\t%d%n", id, name, hp, damage);
			}
			// 不一定要在这里关闭ReultSet,因为Statement关闭的时候,会自动关闭ResultSet
			// rs.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

关于采集数据及建立表格友情链接

java的JTable表格的制作,读取数据库表中数据放到JTable表格中_上官绝岚的博客-CSDN博客

 验证状态

对于在窗体中要进行的操作我们要验证是否已经登录,对于没有登录的状态不能访问打开其他面板。并且要记录下来是哪个账号在登录。

需定义全局变量

    boolean status=false;//默认是未登录
    String Iname;

切换面板与点击触发事件

我们需要展示不同的面板在同一个窗体里,于是需要切换面板。

详细步骤:

java实现面板之间的切换_无忧#的博客-CSDN博客

在面板中有很多按钮,我们点击按钮或菜单栏来执行一次事件

示例代码

        jmi1.addItemListener(e -> {//进货商品信息
            if (status){
                setContentPane(cp);
                revalidate();
            }
        });

全部代码

确保数据库中已经建立各个表格,已导入驱动包。

1.创建如下工程以及类

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 2.复制以下各类代码

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Admin {
    public Map<String,String> map=new HashMap<>();
    public List<operator> list=new ArrayList<>();
    public Admin(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            try (
                    Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
                            "root", "root")) {
                PreparedStatement ps = c.prepareStatement("select *from operator");
                ResultSet res= ps.executeQuery();//获取的结果
                res.last();
                int row=res.getRow();
                res.beforeFirst();
                res.next();
                for (int i=0;i<row;i++){
                    int id=Integer.parseInt(res.getString("id"));
                    String name=res.getString("name");
                    String password=res.getString("pwd");
                    String sum=res.getString("sum");
                    map.put(name,password);
                    list.add(new operator(id,name,password,sum));
                    res.next();
                }
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}
import javax.swing.*;
import java.awt.*;

public class commodityPanel extends JPanel {
    public commodityPanel(){
       JDBC jdbc=new JDBC();
        String []name={"id","商品名","进价","售价","是否打折"};
        JTable jt=new JTable(jdbc.str1,name);
        jt.setPreferredScrollableViewportSize(new Dimension(350,200));
        JScrollPane jsp=new JScrollPane(jt);
        add(jsp,BorderLayout.CENTER);
    }

}
import javax.swing.*;
import java.util.Objects;

public class Frame extends JFrame {
    boolean status=false;
    String Iname;
    Admin admin=new Admin();
    public Frame(){
        setTitle("超市管理系统");
        JMenu jm1=new JMenu("商品信息");
        JMenu jm2=new JMenu("商品管理");
        JMenuItem jmi1=new JMenu("进货商品信息");
        JMenuItem jmi2=new JMenu("商品交易信息");
        JMenuItem jmi3=new JMenu("上架商品");
        JMenuItem jmi4=new JMenu("下架商品");
        JMenuItem jmi5=new JMenu("交易商品");
        jm1.add(jmi1);
        jm1.add(jmi2);
        jm2.add(jmi3);
        jm2.add(jmi4);
        jm2.add(jmi5);
        JMenuBar jmb=new JMenuBar();
        jmb.add(jm1);
        jmb.add(jm2);
        setJMenuBar(jmb);
        setBounds(300,200,400,300);
        setLayout(null);
        Login_panel jl=new Login_panel();
        commodityPanel cp=new commodityPanel();
        setContentPane(jl);
        jmi1.addItemListener(e -> {//进货商品信息
            if (status){
                setContentPane(cp);
                revalidate();
            }
        });
        jmi2.addItemListener(e -> {//商品交易详情
            if (status){
                setContentPane(new Transaction_panel());
                revalidate();
                pack();
            }
        });
        jmi3.addItemListener(e -> {
            if (status){
                setContentPane(new Put_panel());
                revalidate();
            }
        });
        jmi4.addItemListener(e -> {
            if (status){
                setContentPane(new Off_panel());
                revalidate();
            }
        });
        jmi5.addItemListener(e -> {
            if (status){
                setContentPane(new Operation_panel(Iname));
                revalidate();
            }
        });
        jl.b.addActionListener(e -> {//售货员登录
                if (Objects.equals(admin.map.get(jl.jtf.getText()), jl.jwf.getText()) &&admin.map.containsKey(jl.jtf.getText())) {
                    status=true;
                    Iname=jl.jtf.getText();
                    setContentPane(new Operation_panel(jl.jtf.getText()));
                    revalidate();
                    JOptionPane.showMessageDialog(null,"登陆成功","提示",JOptionPane.WARNING_MESSAGE);
                }else JOptionPane.showMessageDialog(null,"账号或密码错误","警告",JOptionPane.ERROR_MESSAGE);
        });
        setVisible(true);
    }
}
import java.sql.*;
import java.util.HashMap;
import java.util.Map;

public class JDBC {
    public  String[][]str1;
    public  String[]str2;
    public Map<String,String> jin=new HashMap<>();
    public Map<String,String> shou=new HashMap<>();
    public  JDBC(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            try (
                    Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
                    "root", "root")) {
                PreparedStatement ps = c.prepareStatement("select *from store");
                ResultSet res= ps.executeQuery();//获取的结果
                res.last();
                int row=res.getRow();
                res.beforeFirst();
                str1=new String[row][5];
                str2=new String[row];
                res.next();
                for (int i=0;i<row;i++){
                    str1[i][0]=res.getString("id");
                    str1[i][1]=res.getString("commodityname");
                    str2[i]=str1[i][1];
                    str1[i][2]=res.getString("Unit_Price");
                    jin.put(str1[i][1],str1[i][2]);
                    str1[i][3]=res.getString("price");
                    shou.put(str1[i][1],str1[i][3]);
                    str1[i][4]=res.getString("Discount");
                    res.next();
                }
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}
import javax.swing.*;
import java.awt.*;

public class Login_panel extends JPanel {
    public JButton b;
    public JTextField jtf;
    public JPasswordField jwf;
    public Login_panel(){
        JLabel l=new JLabel("超市管理系统");
        JLabel l1=new JLabel("账号:");
        JLabel l2=new JLabel("密码:");
        jtf=new JTextField(20);
        jwf=new JPasswordField(20);
        jwf.setEchoChar('*');
        b=new JButton("登录");
        l.setBounds(130,20,150,50);
        l.setForeground(Color.red);
        l.setFont(new Font("宋体",Font.BOLD,23));
        l1.setBounds(120,75,100,40);
        l2.setBounds(120,110,100,40);
        jtf.setBounds(180,75,100,30);
        jwf.setBounds(180,110,100,30);
        b.setBounds(170,170,70,40);
        add(l);
        add(l1);
        add(l2);
        add(jtf);
        add(jwf);
        add(b);
        setLayout(null);
    }
}
import javax.swing.*;

public class Off_panel extends JPanel {
    JDBC jdbc=new JDBC();
    public Off_panel(){
        JLabel l=new JLabel("选择需要下架的商品:");
        JComboBox jcb=new JComboBox(jdbc.str2);
        JButton b=new JButton("确定");
        l.setBounds(100,70,130,30);
        jcb.setBounds(250,70,70,30);
        b.setBounds(150,120,70,40);
        add(l);
        add(jcb);
        add(b);
        b.addActionListener(e -> {
            String name= (String) jcb.getSelectedItem();
            String url="delete from store where commodityname = '"+name+"'";
            new Transaction(url);
            JOptionPane.showMessageDialog(null,"已下架","提示",JOptionPane.INFORMATION_MESSAGE);
        });
    }
}
import javax.swing.*;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
public class Operation_panel extends JPanel {
    Admin admin=new Admin();
    JDBC jdbc=new JDBC();
    public String username;
    public Operation_panel(String username){
        this.username=username;
        JLabel l1=new JLabel("选择进售货");
        String []str1={"进货","销售"};
        JComboBox jcb1=new JComboBox(str1);
        JLabel l2=new JLabel("选择商品");
        JComboBox jcb2=new JComboBox(new JDBC().str2);
        JLabel l3=new JLabel("选择件数");
        JTextField jtf=new JTextField(20);
        JButton b=new JButton("确认");
        l1.setBounds(20,20,70,30);
        jcb1.setBounds(120,20,100,30);
        l2.setBounds(20,80,70,30);
        jcb2.setBounds(120,80,100,30);
        l3.setBounds(20,150,70,30);
        jtf.setBounds(120,150,100,30);
        b.setBounds(260,80,70,30);
        b.addActionListener(e -> {
            Date date=new Date();
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd HH-mm");
            String str= sdf.format(date);
            String str2=jtf.getText();//个数
            String str3= (String) jcb1.getSelectedItem();//进货/售货
            String str4= (String) jcb2.getSelectedItem();//商品名
            String sum="1";
            for (int i=0;i<admin.list.size();i++){
                if (Objects.equals(admin.list.get(i).name, username))sum=String.valueOf(admin.list.get(i).sum);
            }
            String jj=jdbc.jin.get(str4);
            String sj=jdbc.shou.get(str4);
            BigDecimal bd1=new BigDecimal(str2).multiply(new BigDecimal(jj));
            BigDecimal bd2=new BigDecimal(str2).multiply(new BigDecimal(sj));
            if (str3.equals("进货")){
                sum=(String.valueOf(new BigDecimal(sum).subtract(bd1)));
            }else {
                sum=String.valueOf(new BigDecimal(sum).add(bd2));
            }
            String url1="insert into shell values (null, '"+str+"','" +str2+"','"+str3+"','" +str4+"')";
            System.out.println(username);
            String url2="update operator set sum = '"+sum+"' where  name= '"+username+"'";
            System.out.println(url2);
            new Transaction(url1);
            new Transaction(url2);
        });
        add(l1);
        add(l2);
        add(l3);
        add(jcb1);
        add(jcb2);
        add(jtf);
        add(b);
        setLayout(null);
    }
}
public class operator {
    int id;
    String name;
    String password;
    String sum;
    public operator(int id,String name,String password,String sum){
        this.id=id;
        this.name=name;
        this.password=password;
        this.sum=sum;
    }
}
import javax.swing.*;

public class Put_panel extends JPanel {
    public Put_panel(){
        JLabel l1=new JLabel("商品名称:");
        JLabel l2=new JLabel("进   价:");
        JLabel l3=new JLabel("售   价:");
        JLabel l4=new JLabel("是否打折:");
        JTextField jtf1=new JTextField(20);
        JTextField jtf2=new JTextField(20);
        JTextField jtf3=new JTextField(20);
        JRadioButton jrb1=new JRadioButton("是");
        JRadioButton jrb2=new JRadioButton("否");
        jrb2.setSelected(true);
        JButton b=new JButton("确认");
        ButtonGroup bg=new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);
        l1.setBounds(20,20,70,30);
        l2.setBounds(20,70,70,30);
        l3.setBounds(20,120,70,30);
        l4.setBounds(20,170,70,30);
        jtf1.setBounds(90,25,90,20);
        jtf2.setBounds(90,75,90,20);
        jtf3.setBounds(90,125,90,20);
        jrb1.setBounds(90,175,70,20);
        jrb2.setBounds(140,175,70,20);
        b.setBounds(200,75,70,30);
        add(l1);
        add(l2);
        add(l3);
        add(l4);
        add(jtf1);
        add(jtf2);
        add(jtf3);
        add(jrb1);
        add(jrb2);
        add(b);
        setLayout(null);
        b.addActionListener(e -> {
            String name=jtf1.getText();
            String Jprice=jtf2.getText();
            String Sprice=jtf3.getText();
            String bool;
            if(jrb1.isSelected())bool="是";
            else bool="否";
            String url="insert into store values (null, '"+name+"', '"+Jprice+"', '"+Sprice+"' ,'"+bool+"')";
            new Transaction(url);
        });
    }
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Transaction {
    public  Transaction(String sql){
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try (
                Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
                        "root", "root");
                Statement s = c.createStatement()
        )
        {
            s.execute(sql);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
import javax.swing.*;
import java.awt.*;
import java.sql.*;

public class Transaction_panel extends JPanel {
    public Transaction_panel(){//销售面板
        try {
            Class.forName("com.mysql.jdbc.Driver");
            try (
                    Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
                            "root", "root")) {
                PreparedStatement ps = c.prepareStatement("select *from shell");
                ResultSet res= ps.executeQuery();//获取的结果
                res.last();
                int row=res.getRow();
                res.beforeFirst();
                String[][] str=new String[row][5];
                res.next();
                for (int i=0;i<row;i++){
                    str[i][0]=res.getString("id");
                    str[i][1]=res.getString("date");
                    str[i][2]=res.getString("count");
                    str[i][3]=res.getString("Pname");
                    str[i][4]=res.getString("Oname");
                    res.next();
                }
                String []name={"编号","交易时间","交易数量","进货/售货","商品名称"};
                JTable jt=new JTable(str,name);
                jt.setPreferredScrollableViewportSize(new Dimension(350,200));
                JScrollPane jsp=new JScrollPane(jt);
                add(jsp,BorderLayout.CENTER);
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}
public class Main {
    public static void main(String[] args) {
        new Frame();
    }
}

3.运行Main类

如有问题请留言交流,谢谢

反馈

有朋友反应可能会出现一些错误(并非代码本身)

1.如果你的数据库驱动包版本较高,将

"com.mysql.jdbc.Driver"

改为

"com.mysql.cj.jdbc.Driver"

2.如果访问数据库出现ResuleSet type is TYPE_FORWARD_ONLY错误

将PreparedStatement ps = c.prepareStatement("select *from store");等

改为

PreparedStatement ps = c.prepareStatement("select *from store",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

如果还有什么错误,请大家联系我。

+Q2482071182,备注csdn

数据库代码:

shell表

CREATE TABLE shell (
  id int(11) AUTO_INCREMENT,
  date varchar(30) ,
  count varchar(30) ,
 Pname varchar(30) ,
 Oname varchar(30) ,
  PRIMARY KEY (id)
)  DEFAULT CHARSET=utf8;

store表
 

CREATE TABLE store (
  id int(11) AUTO_INCREMENT,
  commodityname varchar(30) ,
  Unit_Price varchar(30) ,
 price varchar(30) ,
 Discount varchar(30) ,
  PRIMARY KEY (id)
)  DEFAULT CHARSET=utf8;

operator表
 

CREATE TABLE operator (
  id int(11) AUTO_INCREMENT,
  name varchar(30) ,
  pwd varchar(30) ,
 sum varchar(30) ,
  PRIMARY KEY (id)
)  DEFAULT CHARSET=utf8;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Awt+Swing+Mysql实现超市商品交易管理系统(含全部代码) 的相关文章

随机推荐

  • python选择文件夹,并自动发送这个文件夹下的所有文件(以附件的形式)至指定邮箱(通过163邮箱)

    工作中需要将自动生成的表格发送给办公邮箱继续处理 结合遍历文件夹和自动发邮件 做出了可以选择文件夹 并自动发送这个文件夹下的所有文件 以附件的形式 至指定邮箱 import smtplib from email mime multipart
  • jdk8新特性-方法引用

    1 作用 什么是方法引用 方法引用是jdk8推出的一个新特性 在一定的条件下可以替换lambda表达式 可以理解为方法引用实际上还是一个lambda表达式 lambda表达式用法可参见 https blog csdn net xiao yu
  • Centos7 使用yum命令安装软件失败,报错"Couldn't open file /media/cdrom/repodata/repomd.xml"

    今天使用CentOS7安装docker的时候 安装失败 报错 yum install docker 已加载插件 fastestmirror langpacks file media cdrom repodata repomd xml Err
  • java记录操作日志(对象修改细节)

    背景 由于业务涉及收入敏感信息 需记录数据变更前的内容和变更后的内容 但是不能为完成任务而硬编码 要适用于不同bean 针对这种情况 本文使用泛型 反射和基于AOP的自定义注解技术来完成 对对象属性的描述通过自定义注解来完成 读取里面的属性
  • 使用Cytoscape画PPI网络图

    打开Cytoscape软件 根据菜单导入string interactions tsv文件 File gt Import gt Network from File 会弹出下图对话框 在对话框中设置如下 选中string interactio
  • Spring Cloud 2020.0.0 正式发布,对开发者来说意味着什么?

    作者 YourBatman 在线教育领域资深架构师 Spring Framework 开源贡献者 冷冷 云集架构师 开源项目 pig 负责人 Spring Cloud Alibaba Committer 来源 阿里巴巴云原生公众号 北京时间
  • 生成模型的2022年——人工智能AIGC顶级论文回顾

    2022年是生成模型奇幻发展的一年 Stable Diffusion 创造了超现实主义的艺术 ChatGPT 回答了生命意义的问题 Make a Video 从文本生成了栩栩如生的马儿 DreamFusion 生成了不可思议的三维模型 多个
  • java不是纯面向对象的语言,太原java培训班:Java到底是不是一种纯面向对象语言?(二)...

    参考译文 Java官方描述 参考翻译 以上都说明 在JVM内部 其实原始类型就是对象 当你打开 Javadoc 对 Class 类的定义中 通过 CTRL F 查找关键字 primitive 将会发现证据在表面 在JVM里 它把基本类型当作
  • RMAN备份数据库_使用RMAN备份数据库文件

    1 使用RMAN备份整个数据库 可以在数据库挂载或打开时执行整个数据库备份 使用BACKUP DATABASE命令从RMAN提示符中执行整个数据库的备份 你可能想从整个数据库备份中排除特定的表空间 可以通过执行CONFIGURE EXCLU
  • Python url转换成a标签

    tornado中自带的工具可以实现 from tornado escape import linkify linkify https www google com Out 8 a href https www google com http
  • vscode的配置文件setting.json的UI界面或者json形式

    快速打开 使用快捷键 Ctrl Shift P 然后搜索setting 首选项 打开设置 json 这个打开的是settings json文件 首选项 打开默认设置 json 这个打开的是defaultSettings json文件 首选项
  • 解放双手!用 Python 控制你的鼠标和键盘

    在工作中难免遇到需要在电脑上做一些重复的点击或者提交表单等操作 如果能通过 Python 预先写好相关的操作指令 让它帮你操作 然后你自己去刷网页打游戏 岂不是很爽 很多人学习python 不知道从何学起 很多人学习python 掌握了基本
  • Java 数字补零

    一共六位数字 不足数字前补零 int num 123 String lkm String format 0 6 d num
  • centos7 安装VNC Server

    linux系统给给开发者带来性能的便利 但是失去了window系统的界面化管理的便利 下面介绍怎么通过在linux系统上实现界面化操作 CENTOS为例 本文详细讲解在centos下安装VNC 服务并用 VNC viewer 连接 VNC
  • ChatGPT变笨了,好在还有自知之明

    大家好 我是老章 好久没有写文章了 顺便向大家汇报一下最近在忙的事情 多数无疾而终 1 开发了一个IMG2Latex工具 截图一个公式 自动把latex代码塞进剪贴板 2 开发了一个播客转文字稿 文字稿摘要工具 3 为ExcaliDraw添
  • 利用ENVI对LANDSAT系列数据进行预处理步骤

    数据来源 地理空间数据云 首先 利用envi打开 File gt Open 下载好的Landsat数据中的MTL txt文件 进行辐射定标 在工具栏Toolbox中搜索 Radiometric Correction gt Radiometr
  • linux发行版之间的联系和区别

    什么是Linux发行版 Linux的发行版说简单点就是不同的厂商根据个自不同的理念 针对不同使用方向 个人桌面 服务器等 将Linux内核进行不同侧重点的优化与图形界面的设计 并对常用的应用软件做一个打包 进行发行的系统 称之为发行版 大部
  • CRM 2013 安装前系统和数据库的基础配置

    Win Serer 2012 域控安装参考 http smallc blog 51cto com 926344 1034868 其中最重要的几步 创建域控 ActiveDirectory域服务 加域 创建IIS Web服务器 IIS SQL
  • RSA算法计算

    RSA算法简单计算 5个公式 n p q n p 1 q 1 求 n e d mod n 1 求e d其中之一 c m e mod n 加密 m c d mod n 解密 字符说明 p q为两个素数 n为p q乘积 为欧拉函数 n 为小于或
  • Awt+Swing+Mysql实现超市商品交易管理系统(含全部代码)

    目录 成果展示 数据库表格准备 绘制窗体以及组件 主窗体 登录面板 上架商品面板 下架商品面板 操作商品面板 数据面板 展示表格 关键技术与思路 与数据库建立连接 对数据库数据进行增删改 查询数据 验证状态 切换面板与点击触发事件 全部代码