当前位置:   article > 正文

Awt+Swing+Mysql实现超市商品交易管理系统(含全部代码)_商品销售管理系统数据库系统代码

商品销售管理系统数据库系统代码

目录

 成果展示

数据库表格准备

 绘制窗体以及组件

主窗体

登录面板

上架商品面板

下架商品面板

操作商品面板

数据面板(展示表格)

关键技术与思路

与数据库建立连接

对数据库数据进行增删改

查询数据

 验证状态

切换面板与点击触发事件

全部代码


功能介绍:

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包

 绘制窗体以及组件

主窗体

  1. setTitle("超市管理系统");
  2. JMenu jm1=new JMenu("商品信息");
  3. JMenu jm2=new JMenu("商品管理");
  4. JMenuItem jmi1=new JMenu("进货商品信息");
  5. JMenuItem jmi2=new JMenu("商品交易信息");
  6. JMenuItem jmi3=new JMenu("上架商品");
  7. JMenuItem jmi4=new JMenu("下架商品");
  8. jm1.add(jmi1);
  9. jm1.add(jmi2);
  10. jm2.add(jmi3);
  11. jm2.add(jmi4);
  12. JMenuBar jmb=new JMenuBar();
  13. jmb.add(jm1);
  14. jmb.add(jm2);
  15. setJMenuBar(jmb);
  16. setBounds(300,200,400,300);
  17. setLayout(null);

登录面板

  1. JLabel l=new JLabel("超市管理系统");
  2. JLabel l1=new JLabel("账号:");
  3. JLabel l2=new JLabel("密码:");
  4. jtf=new JTextField(20);
  5. jwf=new JPasswordField(20);
  6. jwf.setEchoChar('*');
  7. b=new JButton("登录");
  8. l.setBounds(130,20,150,50);
  9. l.setForeground(Color.red);
  10. l.setFont(new Font("宋体",Font.BOLD,23));
  11. l1.setBounds(120,75,100,40);
  12. l2.setBounds(120,110,100,40);
  13. jtf.setBounds(180,75,100,30);
  14. jwf.setBounds(180,110,100,30);
  15. b.setBounds(170,170,70,40);
  16. add(l);
  17. add(l1);
  18. add(l2);
  19. add(jtf);
  20. add(jwf);
  21. add(b);
  22. setLayout(null);

上架商品面板

  1. JLabel l1=new JLabel("商品名称:");
  2. JLabel l2=new JLabel("进 价:");
  3. JLabel l3=new JLabel("售 价:");
  4. JLabel l4=new JLabel("是否打折:");
  5. JTextField jtf1=new JTextField(20);
  6. JTextField jtf2=new JTextField(20);
  7. JTextField jtf3=new JTextField(20);
  8. JRadioButton jrb1=new JRadioButton("是");
  9. JRadioButton jrb2=new JRadioButton("否");
  10. jrb2.setSelected(true);
  11. JButton b=new JButton("确认");
  12. ButtonGroup bg=new ButtonGroup();
  13. bg.add(jrb1);
  14. bg.add(jrb2);
  15. l1.setBounds(20,20,70,30);
  16. l2.setBounds(20,70,70,30);
  17. l3.setBounds(20,120,70,30);
  18. l4.setBounds(20,170,70,30);
  19. jtf1.setBounds(90,25,90,20);
  20. jtf2.setBounds(90,75,90,20);
  21. jtf3.setBounds(90,125,90,20);
  22. jrb1.setBounds(90,175,70,20);
  23. jrb2.setBounds(140,175,70,20);
  24. b.setBounds(200,75,70,30);
  25. add(l1);
  26. add(l2);
  27. add(l3);
  28. add(l4);
  29. add(jtf1);
  30. add(jtf2);
  31. add(jtf3);
  32. add(jrb1);
  33. add(jrb2);
  34. add(b);
  35. setLayout(null);

下架商品面板

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

操作商品面板

  1. JLabel l1=new JLabel("选择进售货");
  2. String []str1={"进货","销售"};
  3. JComboBox jcb1=new JComboBox(str1);
  4. JLabel l2=new JLabel("选择商品");
  5. JComboBox jcb2=new JComboBox(new JDBC().str2);
  6. JLabel l3=new JLabel("选择件数");
  7. JTextField jtf=new JTextField(20);
  8. JButton b=new JButton("确认");
  9. l1.setBounds(20,20,70,30);
  10. jcb1.setBounds(120,20,100,30);
  11. l2.setBounds(20,80,70,30);
  12. jcb2.setBounds(120,80,100,30);
  13. l3.setBounds(20,150,70,30);
  14. jtf.setBounds(120,150,100,30);
  15. b.setBounds(260,80,70,30);
  16. add(l1);
  17. add(l2);
  18. add(l3);
  19. add(jcb1);
  20. add(jcb2);
  21. add(jtf);
  22. add(b);
  23. setLayout(null);

数据面板(展示表格)

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

关键技术与思路

与数据库建立连接

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

示例代码:

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.SQLException;
  4. public class TestJDBC {
  5. public static void main(String[] args) {
  6. try {
  7. Class.forName("com.mysql.jdbc.Driver");
  8. // 建立与数据库的Connection连接
  9. // 这里需要提供:
  10. // 数据库所处于的ip:127.0.0.1 (本机)
  11. // 数据库的端口号: 3306 (mysql专用端口号)
  12. // 数据库名称 how2java
  13. // 编码方式 UTF-8
  14. // 账号 root
  15. // 密码 admin
  16. Connection c = DriverManager
  17. .getConnection(
  18. "jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
  19. "root", "admin");
  20. System.out.println("连接成功,获取连接对象: " + c);
  21. } catch (ClassNotFoundException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. } catch (SQLException e) {
  25. // TODO Auto-generated catch block
  26. e.printStackTrace();
  27. }
  28. }
  29. }

对数据库数据进行增删改

示例代码

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. public class TestJDBC {
  6. public static void main(String[] args) {
  7. try {
  8. Class.forName("com.mysql.jdbc.Driver");
  9. } catch (ClassNotFoundException e) {
  10. e.printStackTrace();
  11. }
  12. try (
  13. Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
  14. "root", "admin");
  15. Statement s = c.createStatement();
  16. )
  17. {
  18. String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";//增
  19. //String sql = "delete from hero where id = 5";删
  20. // String sql = "update hero set name = 'name 5' where id = 3";改
  21. s.execute(sql);
  22. } catch (SQLException e) {
  23. // TODO Auto-generated catch block
  24. e.printStackTrace();
  25. }
  26. }
  27. }

查询数据

示例代码

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. public class TestJDBC {
  7. public static void main(String[] args) {
  8. try {
  9. Class.forName("com.mysql.jdbc.Driver");
  10. } catch (ClassNotFoundException e) {
  11. e.printStackTrace();
  12. }
  13. try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
  14. "root", "admin"); Statement s = c.createStatement();) {
  15. String sql = "select * from hero";
  16. // 执行查询语句,并把结果集返回给ResultSet
  17. ResultSet rs = s.executeQuery(sql);
  18. while (rs.next()) {
  19. int id = rs.getInt("id");// 可以使用字段名
  20. String name = rs.getString(2);// 也可以使用字段的顺序
  21. float hp = rs.getFloat("hp");
  22. int damage = rs.getInt(4);
  23. System.out.printf("%d\t%s\t%f\t%d%n", id, name, hp, damage);
  24. }
  25. // 不一定要在这里关闭ReultSet,因为Statement关闭的时候,会自动关闭ResultSet
  26. // rs.close();
  27. } catch (SQLException e) {
  28. // TODO Auto-generated catch block
  29. e.printStackTrace();
  30. }
  31. }
  32. }

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

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

 验证状态

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

需定义全局变量

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

切换面板与点击触发事件

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

详细步骤:

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

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

示例代码

  1. jmi1.addItemListener(e -> {//进货商品信息
  2. if (status){
  3. setContentPane(cp);
  4. revalidate();
  5. }
  6. });

全部代码

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

1.创建如下工程以及类

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

 2.复制以下各类代码

  1. import java.sql.*;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. public class Admin {
  7. public Map<String,String> map=new HashMap<>();
  8. public List<operator> list=new ArrayList<>();
  9. public Admin(){
  10. try {
  11. Class.forName("com.mysql.jdbc.Driver");
  12. try (
  13. Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
  14. "root", "root")) {
  15. PreparedStatement ps = c.prepareStatement("select *from operator");
  16. ResultSet res= ps.executeQuery();//获取的结果
  17. res.last();
  18. int row=res.getRow();
  19. res.beforeFirst();
  20. res.next();
  21. for (int i=0;i<row;i++){
  22. int id=Integer.parseInt(res.getString("id"));
  23. String name=res.getString("name");
  24. String password=res.getString("pwd");
  25. String sum=res.getString("sum");
  26. map.put(name,password);
  27. list.add(new operator(id,name,password,sum));
  28. res.next();
  29. }
  30. }
  31. } catch (ClassNotFoundException | SQLException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. }
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class commodityPanel extends JPanel {
  4. public commodityPanel(){
  5. JDBC jdbc=new JDBC();
  6. String []name={"id","商品名","进价","售价","是否打折"};
  7. JTable jt=new JTable(jdbc.str1,name);
  8. jt.setPreferredScrollableViewportSize(new Dimension(350,200));
  9. JScrollPane jsp=new JScrollPane(jt);
  10. add(jsp,BorderLayout.CENTER);
  11. }
  12. }
  1. import javax.swing.*;
  2. import java.util.Objects;
  3. public class Frame extends JFrame {
  4. boolean status=false;
  5. String Iname;
  6. Admin admin=new Admin();
  7. public Frame(){
  8. setTitle("超市管理系统");
  9. JMenu jm1=new JMenu("商品信息");
  10. JMenu jm2=new JMenu("商品管理");
  11. JMenuItem jmi1=new JMenu("进货商品信息");
  12. JMenuItem jmi2=new JMenu("商品交易信息");
  13. JMenuItem jmi3=new JMenu("上架商品");
  14. JMenuItem jmi4=new JMenu("下架商品");
  15. JMenuItem jmi5=new JMenu("交易商品");
  16. jm1.add(jmi1);
  17. jm1.add(jmi2);
  18. jm2.add(jmi3);
  19. jm2.add(jmi4);
  20. jm2.add(jmi5);
  21. JMenuBar jmb=new JMenuBar();
  22. jmb.add(jm1);
  23. jmb.add(jm2);
  24. setJMenuBar(jmb);
  25. setBounds(300,200,400,300);
  26. setLayout(null);
  27. Login_panel jl=new Login_panel();
  28. commodityPanel cp=new commodityPanel();
  29. setContentPane(jl);
  30. jmi1.addItemListener(e -> {//进货商品信息
  31. if (status){
  32. setContentPane(cp);
  33. revalidate();
  34. }
  35. });
  36. jmi2.addItemListener(e -> {//商品交易详情
  37. if (status){
  38. setContentPane(new Transaction_panel());
  39. revalidate();
  40. pack();
  41. }
  42. });
  43. jmi3.addItemListener(e -> {
  44. if (status){
  45. setContentPane(new Put_panel());
  46. revalidate();
  47. }
  48. });
  49. jmi4.addItemListener(e -> {
  50. if (status){
  51. setContentPane(new Off_panel());
  52. revalidate();
  53. }
  54. });
  55. jmi5.addItemListener(e -> {
  56. if (status){
  57. setContentPane(new Operation_panel(Iname));
  58. revalidate();
  59. }
  60. });
  61. jl.b.addActionListener(e -> {//售货员登录
  62. if (Objects.equals(admin.map.get(jl.jtf.getText()), jl.jwf.getText()) &&admin.map.containsKey(jl.jtf.getText())) {
  63. status=true;
  64. Iname=jl.jtf.getText();
  65. setContentPane(new Operation_panel(jl.jtf.getText()));
  66. revalidate();
  67. JOptionPane.showMessageDialog(null,"登陆成功","提示",JOptionPane.WARNING_MESSAGE);
  68. }else JOptionPane.showMessageDialog(null,"账号或密码错误","警告",JOptionPane.ERROR_MESSAGE);
  69. });
  70. setVisible(true);
  71. }
  72. }
  1. import java.sql.*;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. public class JDBC {
  5. public String[][]str1;
  6. public String[]str2;
  7. public Map<String,String> jin=new HashMap<>();
  8. public Map<String,String> shou=new HashMap<>();
  9. public JDBC(){
  10. try {
  11. Class.forName("com.mysql.jdbc.Driver");
  12. try (
  13. Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
  14. "root", "root")) {
  15. PreparedStatement ps = c.prepareStatement("select *from store");
  16. ResultSet res= ps.executeQuery();//获取的结果
  17. res.last();
  18. int row=res.getRow();
  19. res.beforeFirst();
  20. str1=new String[row][5];
  21. str2=new String[row];
  22. res.next();
  23. for (int i=0;i<row;i++){
  24. str1[i][0]=res.getString("id");
  25. str1[i][1]=res.getString("commodityname");
  26. str2[i]=str1[i][1];
  27. str1[i][2]=res.getString("Unit_Price");
  28. jin.put(str1[i][1],str1[i][2]);
  29. str1[i][3]=res.getString("price");
  30. shou.put(str1[i][1],str1[i][3]);
  31. str1[i][4]=res.getString("Discount");
  32. res.next();
  33. }
  34. }
  35. } catch (ClassNotFoundException | SQLException e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. }
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class Login_panel extends JPanel {
  4. public JButton b;
  5. public JTextField jtf;
  6. public JPasswordField jwf;
  7. public Login_panel(){
  8. JLabel l=new JLabel("超市管理系统");
  9. JLabel l1=new JLabel("账号:");
  10. JLabel l2=new JLabel("密码:");
  11. jtf=new JTextField(20);
  12. jwf=new JPasswordField(20);
  13. jwf.setEchoChar('*');
  14. b=new JButton("登录");
  15. l.setBounds(130,20,150,50);
  16. l.setForeground(Color.red);
  17. l.setFont(new Font("宋体",Font.BOLD,23));
  18. l1.setBounds(120,75,100,40);
  19. l2.setBounds(120,110,100,40);
  20. jtf.setBounds(180,75,100,30);
  21. jwf.setBounds(180,110,100,30);
  22. b.setBounds(170,170,70,40);
  23. add(l);
  24. add(l1);
  25. add(l2);
  26. add(jtf);
  27. add(jwf);
  28. add(b);
  29. setLayout(null);
  30. }
  31. }
  1. import javax.swing.*;
  2. public class Off_panel extends JPanel {
  3. JDBC jdbc=new JDBC();
  4. public Off_panel(){
  5. JLabel l=new JLabel("选择需要下架的商品:");
  6. JComboBox jcb=new JComboBox(jdbc.str2);
  7. JButton b=new JButton("确定");
  8. l.setBounds(100,70,130,30);
  9. jcb.setBounds(250,70,70,30);
  10. b.setBounds(150,120,70,40);
  11. add(l);
  12. add(jcb);
  13. add(b);
  14. b.addActionListener(e -> {
  15. String name= (String) jcb.getSelectedItem();
  16. String url="delete from store where commodityname = '"+name+"'";
  17. new Transaction(url);
  18. JOptionPane.showMessageDialog(null,"已下架","提示",JOptionPane.INFORMATION_MESSAGE);
  19. });
  20. }
  21. }
  1. import javax.swing.*;
  2. import java.math.BigDecimal;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.Objects;
  6. public class Operation_panel extends JPanel {
  7. Admin admin=new Admin();
  8. JDBC jdbc=new JDBC();
  9. public String username;
  10. public Operation_panel(String username){
  11. this.username=username;
  12. JLabel l1=new JLabel("选择进售货");
  13. String []str1={"进货","销售"};
  14. JComboBox jcb1=new JComboBox(str1);
  15. JLabel l2=new JLabel("选择商品");
  16. JComboBox jcb2=new JComboBox(new JDBC().str2);
  17. JLabel l3=new JLabel("选择件数");
  18. JTextField jtf=new JTextField(20);
  19. JButton b=new JButton("确认");
  20. l1.setBounds(20,20,70,30);
  21. jcb1.setBounds(120,20,100,30);
  22. l2.setBounds(20,80,70,30);
  23. jcb2.setBounds(120,80,100,30);
  24. l3.setBounds(20,150,70,30);
  25. jtf.setBounds(120,150,100,30);
  26. b.setBounds(260,80,70,30);
  27. b.addActionListener(e -> {
  28. Date date=new Date();
  29. SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd HH-mm");
  30. String str= sdf.format(date);
  31. String str2=jtf.getText();//个数
  32. String str3= (String) jcb1.getSelectedItem();//进货/售货
  33. String str4= (String) jcb2.getSelectedItem();//商品名
  34. String sum="1";
  35. for (int i=0;i<admin.list.size();i++){
  36. if (Objects.equals(admin.list.get(i).name, username))sum=String.valueOf(admin.list.get(i).sum);
  37. }
  38. String jj=jdbc.jin.get(str4);
  39. String sj=jdbc.shou.get(str4);
  40. BigDecimal bd1=new BigDecimal(str2).multiply(new BigDecimal(jj));
  41. BigDecimal bd2=new BigDecimal(str2).multiply(new BigDecimal(sj));
  42. if (str3.equals("进货")){
  43. sum=(String.valueOf(new BigDecimal(sum).subtract(bd1)));
  44. }else {
  45. sum=String.valueOf(new BigDecimal(sum).add(bd2));
  46. }
  47. String url1="insert into shell values (null, '"+str+"','" +str2+"','"+str3+"','" +str4+"')";
  48. System.out.println(username);
  49. String url2="update operator set sum = '"+sum+"' where name= '"+username+"'";
  50. System.out.println(url2);
  51. new Transaction(url1);
  52. new Transaction(url2);
  53. });
  54. add(l1);
  55. add(l2);
  56. add(l3);
  57. add(jcb1);
  58. add(jcb2);
  59. add(jtf);
  60. add(b);
  61. setLayout(null);
  62. }
  63. }
  1. public class operator {
  2. int id;
  3. String name;
  4. String password;
  5. String sum;
  6. public operator(int id,String name,String password,String sum){
  7. this.id=id;
  8. this.name=name;
  9. this.password=password;
  10. this.sum=sum;
  11. }
  12. }
  1. import javax.swing.*;
  2. public class Put_panel extends JPanel {
  3. public Put_panel(){
  4. JLabel l1=new JLabel("商品名称:");
  5. JLabel l2=new JLabel("进 价:");
  6. JLabel l3=new JLabel("售 价:");
  7. JLabel l4=new JLabel("是否打折:");
  8. JTextField jtf1=new JTextField(20);
  9. JTextField jtf2=new JTextField(20);
  10. JTextField jtf3=new JTextField(20);
  11. JRadioButton jrb1=new JRadioButton("是");
  12. JRadioButton jrb2=new JRadioButton("否");
  13. jrb2.setSelected(true);
  14. JButton b=new JButton("确认");
  15. ButtonGroup bg=new ButtonGroup();
  16. bg.add(jrb1);
  17. bg.add(jrb2);
  18. l1.setBounds(20,20,70,30);
  19. l2.setBounds(20,70,70,30);
  20. l3.setBounds(20,120,70,30);
  21. l4.setBounds(20,170,70,30);
  22. jtf1.setBounds(90,25,90,20);
  23. jtf2.setBounds(90,75,90,20);
  24. jtf3.setBounds(90,125,90,20);
  25. jrb1.setBounds(90,175,70,20);
  26. jrb2.setBounds(140,175,70,20);
  27. b.setBounds(200,75,70,30);
  28. add(l1);
  29. add(l2);
  30. add(l3);
  31. add(l4);
  32. add(jtf1);
  33. add(jtf2);
  34. add(jtf3);
  35. add(jrb1);
  36. add(jrb2);
  37. add(b);
  38. setLayout(null);
  39. b.addActionListener(e -> {
  40. String name=jtf1.getText();
  41. String Jprice=jtf2.getText();
  42. String Sprice=jtf3.getText();
  43. String bool;
  44. if(jrb1.isSelected())bool="是";
  45. else bool="否";
  46. String url="insert into store values (null, '"+name+"', '"+Jprice+"', '"+Sprice+"' ,'"+bool+"')";
  47. new Transaction(url);
  48. });
  49. }
  50. }
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. public class Transaction {
  6. public Transaction(String sql){
  7. try {
  8. Class.forName("com.mysql.jdbc.Driver");
  9. } catch (ClassNotFoundException e) {
  10. e.printStackTrace();
  11. }
  12. try (
  13. Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
  14. "root", "root");
  15. Statement s = c.createStatement()
  16. )
  17. {
  18. s.execute(sql);
  19. } catch (SQLException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. }
  23. }
  24. }
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.sql.*;
  4. public class Transaction_panel extends JPanel {
  5. public Transaction_panel(){//销售面板
  6. try {
  7. Class.forName("com.mysql.jdbc.Driver");
  8. try (
  9. Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?characterEncoding=UTF-8",
  10. "root", "root")) {
  11. PreparedStatement ps = c.prepareStatement("select *from shell");
  12. ResultSet res= ps.executeQuery();//获取的结果
  13. res.last();
  14. int row=res.getRow();
  15. res.beforeFirst();
  16. String[][] str=new String[row][5];
  17. res.next();
  18. for (int i=0;i<row;i++){
  19. str[i][0]=res.getString("id");
  20. str[i][1]=res.getString("date");
  21. str[i][2]=res.getString("count");
  22. str[i][3]=res.getString("Pname");
  23. str[i][4]=res.getString("Oname");
  24. res.next();
  25. }
  26. String []name={"编号","交易时间","交易数量","进货/售货","商品名称"};
  27. JTable jt=new JTable(str,name);
  28. jt.setPreferredScrollableViewportSize(new Dimension(350,200));
  29. JScrollPane jsp=new JScrollPane(jt);
  30. add(jsp,BorderLayout.CENTER);
  31. }
  32. } catch (ClassNotFoundException | SQLException e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. }
  1. public class Main {
  2. public static void main(String[] args) {
  3. new Frame();
  4. }
  5. }

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表

  1. CREATE TABLE shell (
  2. id int(11) AUTO_INCREMENT,
  3. date varchar(30) ,
  4. count varchar(30) ,
  5. Pname varchar(30) ,
  6. Oname varchar(30) ,
  7. PRIMARY KEY (id)
  8. ) DEFAULT CHARSET=utf8;

store表
 

  1. CREATE TABLE store (
  2. id int(11) AUTO_INCREMENT,
  3. commodityname varchar(30) ,
  4. Unit_Price varchar(30) ,
  5. price varchar(30) ,
  6. Discount varchar(30) ,
  7. PRIMARY KEY (id)
  8. ) DEFAULT CHARSET=utf8;

operator表
 

  1. CREATE TABLE operator (
  2. id int(11) AUTO_INCREMENT,
  3. name varchar(30) ,
  4. pwd varchar(30) ,
  5. sum varchar(30) ,
  6. PRIMARY KEY (id)
  7. ) DEFAULT CHARSET=utf8;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/118674?site
推荐阅读
相关标签
  

闽ICP备14008679号