java课程设计会员卡计费系统

前言:

  这是我上学期的java课程设计,因为这学期没有课程设计,就想着把我上学期做的分享出来造福一下选到这个课程设计题目的同学!归纳整理不易,若果有帮助到你请别吝啬点赞收藏哦~

本会员卡计费系统由JAVA的原生JDK中自带的的GUI库界面+jdbc连接mysql数据库完成。

一、题目

会员卡计费系统(限1~2人)

设计一个会员卡计费管理系统。

功能要求:

1. 新会员登记。(会弹出窗口收集将会员个人信息及此会员的会员卡信息进行录入。)

2. 会员信息修改。(点击修改后可选择会员进行会员信息修改)

3. 会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)

4. 会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费 给予9折优惠。

5. 会员退卡。(收回会员卡,并将余额退还,删除该会员信息。)

6. 用菜单进行管理

7. 统计功能。

能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。

能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。

二、总体设计

2.1主要功能

(1)新会员登记:提供窗口收集会员个人信息和会员卡信息,并录入系统。

(2)会员信息修改:管理员可选择会员进行信息修改操作。

(3)会员续费:管理员根据会员卡号查找会员信息,进行续费操作,并显示更新后的信息。

(4)会员消费结算:管理员根据会员卡号查找会员信息,进行费用结算,并显示更新后的信息。当累计消费满1000元时,自动升级为VIP会员。

(5)会员退卡:管理员收回会员卡,退还余额,并删除会员信息。

(6)用菜单进行管理:提供菜单供管理员选择功能操作。

(7)统计功能:按缴费总额和累计消费总额进行排序,显示所有会员的缴费总额和消费总额。

2.2 GUI界面设计

本会员卡计费系统使用了JAVA的原生JDK中的库设计的GUI界面图2.1会员卡计费系统的GUI设计流程,图中内容可以清晰明了的展现了本程序的GUI设计流程图,程序的功能也是依靠GUI界面对应的方法的事件处理来运行和实现功能的。

图2.2会员卡计费系统的GUI设计

三、主要功能界面

图3.1主界面默认排序

图3.2消费结算按会员号查询

图3.2输入消费金额

图3.3累计消费超一千的9折提示

图3.4会员结算成功

四、结论与心得

   在回顾本次的课程设计的会员卡计费系统的设计和编码时,我了创建主窗口、表格以及按钮的功能实现。通过这个设计,我学到了如何使用Swing库来创建图形用户界面,并通过与数据库的交互实现数据的查询、更新和插入等操作。

在设计过程中,我遇到了一些问题和困难,其中一个主要问题是如何正确地显示和管理表格数据。通过使用DefaultTableModel来存储数据,并将其应用于JTable组件,我成功地解决了这个问题,并能够在表格中显示和更新数据库中的会员数据。另一个困难是处理按钮的事件处理程序。我需要确保按钮的点击能够触发相应的操作,例如刷新列表、消费结算和排序等。通过为每个按钮添加ActionListener接口的实现,并在其actionPerformed方法中编写相应的代码,我能够实现这些功能,并使按钮与数据库操作相互关联。

在调试过程中,我遇到了一些常见的问题,例如空指针异常和数据格式转换错误。通过仔细检查代码逻辑并使用适当的异常处理机制,我能够追踪和解决这些问题,并确保程序的稳定性和正确性。

虽然设计和编码的大部分任务都得到了完成,但由于时间关系,可能还有一些改进和完善的想法没有来得及实现。例如,可以添加更多的验证和输入检查机制,以确保用户输入的数据符合预期的格式和范围。另外,可以考虑添加更多的功能,如会员信息的搜索和筛选等。

通过这个设计和编码的经验,我深刻理解了图形用户界面的开发和数据库交互的实现。我学到了如何将用户需求转化为代码,并通过不断的调试和优化来实现功能。同时,我也学会了如何处理常见的错误和异常情况,并通过不断的学习和实践提高自己的编程技巧。

未来,我希望能够继续完善和改进这个程序,添加更多的功能和特性,以满足用户的需求。我还计划进一步学习和探索其他的GUI开发框架和数据库技术,以扩大自己的技术栈,并提升软件开发的能力和水平。

五、代码

代码分为两个部分,第一个部分为java代码的六个类,和一个sql文件,存储mysql的数据库结构和生成的一部分样本数据。

Main.java

public class Main {
 
	public static void main(String[] args) {
		new MainJframe().setVisible(true);
	}
 
}

DbConnection.java

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;


public class DbConnection {
	//驱动类的类名
	private static final String DRIVERNAME="com.mysql.cj.jdbc.Driver";
	//连接数据的URL路径
	private static final String URL="jdbc:mysql://127.0.0.1:3306/memberdb?useSSL=true&serverTimezone=GMT";
	//数据库登录账号
	private static final String USER="root";
	//数据库登录密码
	private static final String PASSWORD="123456";
	//加载驱动
	static{
		try {
			Class.forName(DRIVERNAME);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
    //获取数据库连接
	public static Connection getConnection() {
	          try {
		return DriverManager.getConnection(URL,USER,PASSWORD);
	           } catch (SQLException e) {	
		e.printStackTrace();
	           }
			return null;
	}
	//查询
	public static ResultSet query(String sql) {
		System.out.println(sql);
		//获取连接
		Connection connection=getConnection();
		PreparedStatement psd;//java的sql预编译接口,用于执行数据库的mysql语句
		try {
			psd = connection.prepareStatement(sql);
			return psd.executeQuery();
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null,"执行语句出错\n"+e.toString());
			e.printStackTrace();
		}
		return null;
	}
	//操作数据
		public static int updataInfo(String sql) {
			System.out.println(sql);
			//获取连接
			Connection connection=getConnection();
			try {
				PreparedStatement psd=connection.prepareStatement(sql);
				return psd.executeUpdate();
			} catch (SQLException e) {
				JOptionPane.showMessageDialog(null,"执行语句出错\n"+e.toString());
				e.printStackTrace();//获取数据库的报错信息
			}
			return 0;
		}
	//关闭连接
	public  static  void colse(ResultSet rs,Statement stmt,Connection  conn) throws Exception{
	          try { if (rs != null){ rs.close(); }
                         	 if (stmt != null) { stmt.cancel(); }
		 if (conn != null) { conn.close(); }
	   } catch (Exception e) {
		   e.printStackTrace(); throw new Exception();
	   }
	}
}

MainJframe.java

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MainJframe extends JFrame {

    Select select = new Select(); // 创建Select对象,用于执行查询操作
    Updata updata = new Updata(); // 创建Updata对象,用于执行更新操作

    Object[] header = {"序号","手机","姓名","性别","会员日期","卡余额","累计消费","累计缴费"}; // 表格的表头
    String sql = "SELECT memberid,phone,name,sex,openDate,balance,Expense,Recharge FROM members;"; // 默认查询
    Object[][] data = select.getMebers(sql); // 从数据库中获取会员数据
    DefaultTableModel df = new DefaultTableModel(data, header); // 创建默认的表格模型,用于存储数据
    int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; // 垂直滚动条的显示策略
    int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; // 水平滚动条的显示策略

    public MainJframe() {
        super("会员卡管理系统");
        this.setBounds(0, 0, 600, 400);
        this.setLocationRelativeTo(null); // 让窗口在屏幕中间显示
        this.setResizable(false); // 让窗口大小不可改变
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 用户单击窗口的关闭按钮时程序执行的操作
        getContentPane().setLayout(null);

        JTable jTable = new JTable(df); // 创建表格,并使用默认的表格模型

         // 设置Nimbus风格
        try {
        UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Exception e) {
        e.printStackTrace();
        }
        // 设置列宽度
        jTable.getColumnModel().getColumn(0).setPreferredWidth(60); //设置列宽度为50像素
        jTable.getColumnModel().getColumn(1).setPreferredWidth(160); 
        jTable.getColumnModel().getColumn(2).setPreferredWidth(100); 
        jTable.getColumnModel().getColumn(3).setPreferredWidth(40); 
        jTable.getColumnModel().getColumn(4).setPreferredWidth(120); 
        jTable.getColumnModel().getColumn(5).setPreferredWidth(100); 
        jTable.getColumnModel().getColumn(6).setPreferredWidth(100); 
        jTable.getColumnModel().getColumn(7).setPreferredWidth(90);
        
        JScrollPane jsp = new JScrollPane(jTable, v, h); // 创建带有滚动条的面板,并将表格添加到面板中
        jsp.setBounds(10, 50, 574, 280); // 设置面板的位置和大小
        getContentPane().add(jsp); // 将面板添加到窗口中

        // 添加按钮
        JButton btnNewButton_1 = new JButton("刷新列表");
        JButton btnNewButton_2 = new JButton("消费结算");
        JButton btnNewButton_3 = new JButton("缴费总额排序");
        JButton btnNewButton_4 = new JButton("消费总额排序");

        // 查询按钮的位置和大小
        btnNewButton_1.setBounds(330, 15, 93, 23);
        getContentPane().add(btnNewButton_1);
        // 删除按钮的位置和大小
        btnNewButton_2.setBounds(450, 15, 93, 23);
        getContentPane().add(btnNewButton_2);
        // 缴费总额排序按钮
        btnNewButton_3.setBounds(30, 15, 120, 23);
        getContentPane().add(btnNewButton_3);
        //消费总额排序按钮
        btnNewButton_4.setBounds(180, 15, 120, 23);
        getContentPane().add(btnNewButton_4);
    
        // 按钮一   查询按钮的事件处理
        btnNewButton_1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String sql = "SELECT memberid,phone,name,sex,openDate,balance,Expense,Recharge FROM members;"; // 查询语句
                Object[][] data = select.getMebers(sql); // 从数据库中获取会员数据
                df.setDataVector(data, header); // 更新表格模型中的数据
            }
        });

       // 按钮二   会员消费结算按钮的事件处理
        btnNewButton_2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 输入会员号
                String memberId = JOptionPane.showInputDialog("请输入会员号:");
                // 根据会员号查询会员信息
                String selectSql = "SELECT * FROM members WHERE memberid = " + memberId;
                Object[][] memberData = select.getMebers(selectSql);
                 if (memberData.length == 0) {
                     JOptionPane.showMessageDialog(null, "未找到该会员的信息!");
                     return;
        }
        // 获取会员信息
          Object[] memberInfo = memberData[0];
            //先给判断一次累计消费是否金额大于1000元并给出提示
            if (Double.parseDouble(memberInfo[6].toString()) >= 1000) {
              JOptionPane.showMessageDialog(null, "累计消费金额大于1000元本次消费九折计算!");
            }         
        // 获取会员当前余额
        double currentBalance = Double.parseDouble(memberInfo[5].toString());
        // 获取本次消费金额
        String input = JOptionPane.showInputDialog("请输入本次消费金额:");
        double thisexpense = Double.parseDouble(input);
        // 判断是否满足累计消费满1000元的条件,并给予本次消费9折优惠
            if (Double.parseDouble(memberInfo[6].toString()) >= 1000) {
            thisexpense *= 0.9; // 本次消费thisexpense*0.9
            }
        // 更新会员消费总额和余额
        double updatedExpense = Double.parseDouble(memberInfo[6].toString()) + thisexpense;
        double updatedBalance = currentBalance - thisexpense;

        String updateSql = "UPDATE members SET balance = " + updatedBalance + ", Expense = " + updatedExpense +
            " WHERE memberid = " + memberId;
            int result = updata.addData(updateSql);
                if (result > 0) {
                JOptionPane.showMessageDialog(null, "会员消费结算成功!");
                // 获取更新后的会员信息
                 String updatedMemberSql = "SELECT * FROM members WHERE memberid = " + memberId;
                 Object[][] updatedMemberData = select.getMebers(updatedMemberSql);
                 // 更新表格模型中的数据
                 df.setDataVector(updatedMemberData, header);
            } else {
                 JOptionPane.showMessageDialog(null, "会员消费结算失败!");
            }
           }
        });
		// 按钮三     缴费总额排序按钮的事件处理
        btnNewButton_3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String sql = "SELECT memberid,phone,name,sex,openDate,balance,Expense,Recharge  FROM members ORDER BY Recharge DESC;"; // 查询语句
                Object[][] data = select.getMebers(sql); // 从数据库中获取会员数据
                df.setDataVector(data, header); // 更新表格模型中的数据
            }
        });
		// 按钮四    消费总额排序按钮的事件处理
        btnNewButton_4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String sql = "SELECT memberid,phone,name,sex,openDate,balance,Expense,Recharge  FROM members ORDER BY Expense DESC;"; // 查询语句
                Object[][] data = select.getMebers(sql); // 从数据库中获取会员数据
                df.setDataVector(data, header); // 更新表格模型中的数据
            }
        });

        // 创建菜单栏
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        // 创建菜单
        JMenu memberMenu = new JMenu("会员管理");
        menuBar.add(memberMenu);

        // 创建菜单
        JMenuItem registerItem = new JMenuItem("新会员登记");
        JMenuItem updateItem = new JMenuItem("会员信息修改");
        JMenuItem renewItem = new JMenuItem("会员卡充值");
        JMenuItem cancelItem = new JMenuItem("会员退卡");

        // 添加菜单
        memberMenu.add(registerItem);
        memberMenu.add(updateItem);
        memberMenu.add(renewItem);
        memberMenu.add(cancelItem);

        // 新会员登记事件处理
       registerItem.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
        // 提示用户输入新会员信息
        String name = JOptionPane.showInputDialog("请输入会员姓名:");
        String phone = JOptionPane.showInputDialog("请输入会员手机号:");
        String sex = JOptionPane.showInputDialog("请输入会员性别:");
        String openDate = JOptionPane.showInputDialog("请输入会员日期:");
        double balance = Double.parseDouble(JOptionPane.showInputDialog("请输入会员卡余额:"));
        double expense = Double.parseDouble(JOptionPane.showInputDialog("请输入累计消费金额:"));
        double recharge = Double.parseDouble(JOptionPane.showInputDialog("请输入累计缴费金额:"));

        // 将新会员信息插入数据库
        String insertSql = "INSERT INTO members (name, phone, sex, openDate, balance, Expense, Recharge) VALUES ('" +
                name + "', '" + phone + "', '" + sex + "', '" + openDate + "', " + balance + ", " + expense + ", " +
                recharge + ")";
        int result = updata.addData(insertSql);

        if (result > 0) {
            JOptionPane.showMessageDialog(null, "新会员登记成功!");

            // 刷新列表,显示更新后的会员信息
            String sql = "SELECT memberid, phone, name, sex, openDate, balance, Expense, Recharge FROM members;";
            Object[][] data = select.getMebers(sql);
            df.setDataVector(data, header);
        } else {
            JOptionPane.showMessageDialog(null, "新会员登记失败!");
              }
            }
         });

        // 会员信息修改事件处理
        updateItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
             // 输入会员号
              String memberId = JOptionPane.showInputDialog("请输入会员号:");

             // 根据会员号查询会员信息
             String selectSql = "SELECT * FROM members WHERE memberid = " + memberId;
             Object[][] memberData = select.getMebers(selectSql);
        if (memberData.length == 0) {
            JOptionPane.showMessageDialog(null, "未找到该会员的信息!");
            return;
        }

        // 获取会员信息
        Object[] memberInfo = memberData[0];
        // 提示用户输入要修改的信息
        String name = JOptionPane.showInputDialog("请输入修改后的会员姓名:", memberInfo[2]);
        String phone = JOptionPane.showInputDialog("请输入修改后的会员手机号:", memberInfo[1]);
        String sex = JOptionPane.showInputDialog("请输入修改后的会员性别:", memberInfo[3]);
        String openDate = JOptionPane.showInputDialog("请输入修改后的会员日期:", memberInfo[4]);

        // 更新会员信息
        String updateSql = "UPDATE members SET name = '" + name + "', phone = '" + phone + "', sex = '" + sex + "', " +
                "openDate = '" + openDate + "' WHERE memberid = " + memberId;
        int result = updata.addData(updateSql);
        if (result > 0) {
            JOptionPane.showMessageDialog(null, "会员信息修改成功!");

            // 刷新列表,显示更新后的会员信息
            String sql = "SELECT memberid, phone, name, sex, openDate, balance, Expense, Recharge FROM members;";
            Object[][] data = select.getMebers(sql);
            df.setDataVector(data, header);
        } else {
            JOptionPane.showMessageDialog(null, "会员信息修改失败!");
              }
            }
         });

       // 会员卡充值事件处理
       renewItem.addActionListener(new ActionListener() {
         @Override
            public void actionPerformed(ActionEvent e) {
            // 输入会员号
             String memberNumber = JOptionPane.showInputDialog("请输入会员号:");
            // 根据会员号查询会员信息
             String selectSql = "SELECT * FROM members WHERE memberid = " + memberNumber;
             Object[][] memberData = select.getMebers(selectSql);
                if (memberData.length == 0) {
                 JOptionPane.showMessageDialog(null, "未找到该会员的信息!");
                 return;
                }
            // 获取会员信息
              Object[] memberInfo = memberData[0];
            // 获取当前余额
             double currentBalance = Double.parseDouble(memberInfo[5].toString());
             double currentRecharge = Double.parseDouble(memberInfo[7].toString());
            // 输入充值金额
             String input = JOptionPane.showInputDialog("请输入充值金额:");
             double rechargeAmount = Double.parseDouble(input);
            // 计算充值后的余额和累计充值金额
             double updatedBalance = currentBalance + rechargeAmount;
             double updatedSqlRecharge =  currentRecharge + rechargeAmount;
             // 更新数据库中的余额信息
             String updateSql = "UPDATE members SET balance = " + updatedBalance + " WHERE memberid = " + memberNumber;
             int resultBalance = updata.addData(updateSql);
           //更新数据库中的累计充值金额
             String updateSqlRecharge = "UPDATE members SET Recharge = " + updatedSqlRecharge + " WHERE memberid = " + memberNumber;
             int resultRecharge = updata.addData(updateSqlRecharge);
                if (resultBalance > 0 && resultRecharge > 0) {
                  JOptionPane.showMessageDialog(null, "会员充值成功!");
                   // 获取更新后的会员信息
                  String updatedMemberSql = "SELECT * FROM members WHERE memberid = " + memberNumber;
                  Object[][] updatedMemberData = select.getMebers(updatedMemberSql);
                   // 更新表格模型中的数据
                   df.setDataVector(updatedMemberData, header);
                } else {
                 JOptionPane.showMessageDialog(null, "会员充值失败!");
                }
            }
        });

        // 会员退卡菜单项的事件处理
		cancelItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (jTable.getSelectedColumn() < 0) {
                    JOptionPane.showMessageDialog(null, "请选中要退卡会员!");
                } else {
                    int ok = JOptionPane.showConfirmDialog(null,"您确定要删除该会员信息并退卡吗?!","删除提示",0,1);
                    if(ok == JOptionPane.OK_OPTION){
                        int id = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
                        String sql = "delete from members where memberid=" + id;
                        int result = updata.addData(sql);
                        if (result > 0) {
                            JOptionPane.showMessageDialog(null, "退卡成功!");
                            JOptionPane.showMessageDialog(null, "记得点一下查询哦!");
                        } else {
                            JOptionPane.showMessageDialog(null, "删除失败!");
                        }
                    }
                }
            }
        });
     }

    public static void main(String[] args) {
        MainJframe frame = new MainJframe();
        frame.setVisible(true);
    }
}

Members.java

public class Members {
	int memberID;
	String phone;
	String name;
	String sex;
	String openDate;
	String balance;
	String Expense;
	String Recharge;
	
	public Members() {
		super();
	}
	public Members(int memberID, String phone, String name, String sex, String openDate, String balance, String Expense,String Recharge) {
		super();
		this.memberID = memberID;
		this.phone = phone;
		this.name = name;
		this.sex = sex;
		this.openDate = openDate;
		this.balance = balance;
		this.Expense = Expense;
		this.Recharge = Recharge;
	}
	public int getMemberID() {
		return memberID;
	}
	public void setMemberID(int memberID) {
		this.memberID = memberID;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getOpenDate() {
		return openDate;
	}
	public void setOpenDate(String openDate) {
		this.openDate = openDate;
	}
	public String getBalance() {
		return balance;
	}
	public void setBalance(String balance) {
		this.balance = balance;
	}
	public String getExpense() {
		return Expense;
	}
	public void setExpense(String Expense) {
		this.Expense = Expense;
	}
	public String getRecharge() {
		return Recharge;
	}
	public void setRecharge(String Recharge) {
		this.Recharge = Recharge;
	}
}

Select.java

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class Select {
    public Object[][] getMebers(String sql) {
        // 查询数据库并获取结果集
        ResultSet resultSet = DbConnection.query(sql);
        // 创建一个用于存储Members对象的ArrayList
        ArrayList<Members> list = new ArrayList<Members>();
        try {
            // 遍历结果集
            while (resultSet.next()) {
                // 创建一个Members对象
                Members m = new Members();
                // 从结果集中获取数据并设置到Members对象中
                m.setMemberID(resultSet.getInt(1));
                m.setPhone(resultSet.getString(2));
                m.setName(resultSet.getString(3));
                m.setSex(resultSet.getString(4));
                m.setOpenDate(resultSet.getString(5));
                m.setBalance(resultSet.getString(6));
                m.setExpense(resultSet.getString(7)); // 消费金额
                m.setRecharge(resultSet.getString(8)); // 累计充值金额
                // 将Members对象添加到ArrayList中
                list.add(m);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 创建一个二维数组,用于存储查询结果的数据
        Object[][] objects = new Object[list.size()][8];
        for (int i = 0; i < list.size(); i++) {
            // 从ArrayList中获取Members对象并将数据存储到二维数组中
            objects[i][0] = list.get(i).getMemberID();
            objects[i][1] = list.get(i).getPhone();
            objects[i][2] = list.get(i).getName();
            objects[i][3] = list.get(i).getSex();
            objects[i][4] = list.get(i).getOpenDate();
            objects[i][5] = list.get(i).getBalance();
            objects[i][6] = list.get(i).getExpense(); // 累计消费
            objects[i][7] = list.get(i).getRecharge(); // 累计充值
        }
        // 返回存储查询结果的二维数组
        return objects;
    }
}

Updata.java

public class Updata {
	//添加数据
	public int addData(String sql) {
		return DbConnection.updataInfo(sql);
	}
}

members.sql

/*
 Navicat Premium Data Transfer

 Source Server         : local_conn
 Source Server Type    : MySQL
 Source Server Version : 80034
 Source Host           : localhost:3306
 Source Schema         : memberdb

 Target Server Type    : MySQL
 Target Server Version : 80034
 File Encoding         : 65001

 Date: 27/12/2023 08:50:16
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for members
-- ----------------------------
DROP TABLE IF EXISTS `members`;
CREATE TABLE `members`  (
  `memberID` int NOT NULL AUTO_INCREMENT,
  `phone` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
  `name` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
  `sex` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  `openDate` date NULL DEFAULT NULL,
  `balance` decimal(6, 2) NULL DEFAULT NULL,
  `Expense` decimal(6, 2) NULL DEFAULT 0.00,
  `Recharge` decimal(6, 2) NULL DEFAULT 0.00,
  PRIMARY KEY (`memberID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 103 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of members
-- ----------------------------
INSERT INTO `members` VALUES (1, '13107086666', '康潇', '男', '2023-12-20', 4585.00, 1377.00, 6100.00);
INSERT INTO `members` VALUES (2, '187-0883-8770', '梁晓明', '男', '2019-08-19', 3717.85, 781.35, 5528.25);
INSERT INTO `members` VALUES (3, '755-0073-4977', '向璐', '女', '2018-07-16', 360.80, 264.08, 5800.01);
INSERT INTO `members` VALUES (4, '171-5546-0926', '钟宇宁', '男', '2020-09-22', 4374.45, 1124.24, 6527.80);
INSERT INTO `members` VALUES (5, '159-7654-5147', '梁秀英', '女', '2015-07-17', 1216.20, 1409.07, 3901.15);
INSERT INTO `members` VALUES (6, '133-5390-3934', '郑震南', '男', '2019-06-29', 459.04, 963.27, 387.95);
INSERT INTO `members` VALUES (7, '188-8298-2241', '薛睿', '男', '2020-04-05', 4411.41, 1011.57, 667.80);
INSERT INTO `members` VALUES (8, '155-1069-8168', '张安琪', '女', '2016-10-13', 4368.27, 503.44, 5047.16);
INSERT INTO `members` VALUES (9, '197-4374-5651', '孔詩涵', '女', '2021-07-30', 685.95, 686.07, 1174.47);
INSERT INTO `members` VALUES (10, '184-9053-5453', '汤安琪', '女', '2014-03-13', 721.32, 1395.93, 4599.49);
INSERT INTO `members` VALUES (11, '186-1682-1125', '廖震南', '男', '2021-09-07', 2759.17, 1753.01, 2726.29);
INSERT INTO `members` VALUES (12, '760-9133-1692', '蔡岚', '女', '2018-08-30', 977.44, 1161.11, 974.20);
INSERT INTO `members` VALUES (13, '21-104-9297', '蔡致远', '男', '2019-01-14', 2902.03, 1739.78, 5557.75);
INSERT INTO `members` VALUES (14, '28-1194-8293', '杨秀英', '女', '2013-09-26', 218.71, 445.95, 4414.95);
INSERT INTO `members` VALUES (15, '158-8071-5717', '汤晓明', '男', '2020-11-10', 3110.03, 241.27, 215.53);
INSERT INTO `members` VALUES (16, '755-908-0277', '马秀英', '女', '2023-04-18', 4009.66, 1424.48, 3279.13);
INSERT INTO `members` VALUES (17, '10-6885-7759', '于秀英', '女', '2017-10-18', 2745.05, 1534.08, 5382.63);
INSERT INTO `members` VALUES (18, '176-5435-9023', '冯致远', '男', '2013-11-16', 231.15, 318.93, 1061.16);
INSERT INTO `members` VALUES (19, '174-2086-0209', '孟詩涵', '女', '2018-07-08', 2568.47, 1920.45, 917.61);
INSERT INTO `members` VALUES (20, '133-0762-3725', '任云熙', '男', '2014-11-30', 682.83, 276.85, 3677.35);
INSERT INTO `members` VALUES (21, '149-4511-3603', '黄秀英', '女', '2016-08-02', 4804.08, 82.93, 1557.47);
INSERT INTO `members` VALUES (22, '193-8538-6664', '邵子韬', '男', '2020-03-16', 2785.13, 1789.18, 5524.92);
INSERT INTO `members` VALUES (23, '147-3028-1231', '黄杰宏', '男', '2015-04-07', 489.99, 1635.56, 3009.87);
INSERT INTO `members` VALUES (24, '769-400-0225', '陶安琪', '女', '2013-03-17', 427.60, 100.43, 3583.34);
INSERT INTO `members` VALUES (25, '21-315-2535', '蒋岚', '女', '2021-05-03', 1980.11, 1655.08, 6254.64);
INSERT INTO `members` VALUES (26, '21-3965-4407', '梁睿', '男', '2013-01-02', 4782.78, 317.40, 4830.11);
INSERT INTO `members` VALUES (27, '194-6817-0229', '王晓明', '男', '2016-05-19', 3694.96, 1467.03, 1044.34);
INSERT INTO `members` VALUES (28, '132-7004-8772', '李安琪', '女', '2014-06-15', 2164.04, 1436.08, 3153.60);
INSERT INTO `members` VALUES (29, '165-0591-8946', '汪秀英', '女', '2019-04-30', 1756.84, 74.91, 844.50);
INSERT INTO `members` VALUES (30, '139-2591-6391', '罗睿', '男', '2017-02-13', 934.66, 1262.35, 3001.98);
INSERT INTO `members` VALUES (31, '28-343-9092', '蔡璐', '女', '2017-03-20', 295.88, 461.32, 2038.93);
INSERT INTO `members` VALUES (32, '145-0679-1151', '向秀英', '女', '2017-02-01', 2864.24, 1903.91, 3573.72);
INSERT INTO `members` VALUES (33, '10-8303-3822', '江子韬', '男', '2019-09-19', 971.54, 256.67, 4758.72);
INSERT INTO `members` VALUES (34, '167-1033-0908', '卢嘉伦', '男', '2020-10-21', 2184.23, 522.95, 3981.31);
INSERT INTO `members` VALUES (35, '186-2737-4671', '雷睿', '男', '2022-12-24', 3788.98, 223.44, 2166.07);
INSERT INTO `members` VALUES (36, '162-2271-9166', '向致远', '男', '2015-09-11', 2538.21, 922.59, 3432.77);
INSERT INTO `members` VALUES (37, '769-626-2800', '姜嘉伦', '男', '2016-09-25', 4237.04, 1383.15, 2081.35);
INSERT INTO `members` VALUES (38, '177-7484-8849', '钟安琪', '女', '2016-07-05', 3337.86, 1162.21, 1437.84);
INSERT INTO `members` VALUES (39, '159-9957-5472', '邓宇宁', '男', '2022-10-17', 1086.57, 1187.78, 5899.46);
INSERT INTO `members` VALUES (40, '755-278-0625', '梁子韬', '男', '2019-07-17', 4283.26, 1756.76, 1256.27);
INSERT INTO `members` VALUES (41, '149-9773-1340', '袁云熙', '男', '2019-10-09', 4018.92, 1747.45, 2143.96);
INSERT INTO `members` VALUES (42, '164-7635-5090', '赵云熙', '男', '2019-08-10', 2262.81, 1834.34, 4000.80);
INSERT INTO `members` VALUES (43, '156-2194-1077', '沈宇宁', '男', '2014-11-22', 2315.27, 152.73, 3096.24);
INSERT INTO `members` VALUES (44, '769-5313-3624', '王子异', '男', '2017-02-16', 506.07, 36.48, 1895.09);
INSERT INTO `members` VALUES (45, '184-1807-7165', '汪睿', '男', '2022-10-06', 4365.07, 1206.39, 6934.48);
INSERT INTO `members` VALUES (46, '760-1059-8178', '尹杰宏', '男', '2022-11-10', 4390.39, 790.63, 1100.58);
INSERT INTO `members` VALUES (47, '134-3159-1739', '袁詩涵', '女', '2014-01-17', 1814.75, 1897.61, 5168.43);
INSERT INTO `members` VALUES (48, '130-6084-6890', '张安琪', '女', '2022-07-27', 4969.64, 1864.07, 4952.13);
INSERT INTO `members` VALUES (49, '28-658-0733', '孟璐', '女', '2014-08-12', 2369.48, 1597.17, 569.80);
INSERT INTO `members` VALUES (50, '20-723-3055', '孟震南', '男', '2015-09-15', 1046.98, 1630.14, 6153.76);
INSERT INTO `members` VALUES (51, '179-7719-5915', '朱安琪', '女', '2023-01-17', 313.30, 1545.79, 407.32);
INSERT INTO `members` VALUES (52, '172-7474-3367', '廖震南', '男', '2021-06-26', 924.80, 1446.66, 5558.38);
INSERT INTO `members` VALUES (53, '185-8051-5990', '钟震南', '男', '2015-04-14', 3088.60, 805.79, 1890.36);
INSERT INTO `members` VALUES (54, '192-1114-2127', '梁安琪', '女', '2013-06-20', 3496.94, 1168.34, 3128.26);
INSERT INTO `members` VALUES (55, '21-0727-0869', '范璐', '女', '2023-05-19', 3107.44, 580.83, 296.44);
INSERT INTO `members` VALUES (56, '157-7653-3231', '江杰宏', '男', '2020-02-26', 4312.14, 508.00, 239.60);
INSERT INTO `members` VALUES (57, '198-7486-7338', '常詩涵', '女', '2021-09-16', 1305.64, 1364.41, 4698.23);
INSERT INTO `members` VALUES (58, '131-4806-4964', '邵致远', '男', '2020-11-15', 4501.20, 1020.36, 1112.39);
INSERT INTO `members` VALUES (59, '28-1635-9554', '侯子异', '男', '2014-10-12', 2678.86, 1504.63, 2547.36);
INSERT INTO `members` VALUES (60, '174-3794-9173', '冯震南', '男', '2023-11-29', 3234.06, 821.49, 445.63);
INSERT INTO `members` VALUES (61, '28-3036-1724', '董子异', '男', '2016-01-15', 1820.49, 1565.40, 2489.67);
INSERT INTO `members` VALUES (62, '131-5174-6453', '汪璐', '女', '2018-11-15', 894.29, 434.50, 5543.95);
INSERT INTO `members` VALUES (63, '10-503-7182', '薛詩涵', '女', '2016-09-10', 1794.56, 1987.47, 4560.06);
INSERT INTO `members` VALUES (64, '28-065-7184', '方秀英', '女', '2018-02-10', 3703.92, 1403.19, 3707.25);
INSERT INTO `members` VALUES (65, '28-174-5307', '严晓明', '男', '2017-04-23', 2128.15, 388.46, 22.37);
INSERT INTO `members` VALUES (66, '140-2932-4219', '尹晓明', '男', '2023-11-24', 4582.14, 1095.13, 6892.47);
INSERT INTO `members` VALUES (67, '28-340-5625', '蒋晓明', '男', '2016-11-20', 2463.44, 1822.13, 676.26);
INSERT INTO `members` VALUES (68, '174-6387-5989', '江晓明', '男', '2015-08-04', 2619.60, 817.08, 1504.04);
INSERT INTO `members` VALUES (69, '134-7013-8429', '黎晓明', '男', '2018-05-25', 1124.78, 478.81, 2177.43);
INSERT INTO `members` VALUES (70, '20-8434-9550', '徐嘉伦', '男', '2015-06-08', 627.48, 744.06, 3960.07);
INSERT INTO `members` VALUES (71, '177-5845-3080', '苏詩涵', '女', '2017-10-18', 1632.92, 437.14, 2490.18);
INSERT INTO `members` VALUES (72, '168-0204-9610', '莫子韬', '男', '2021-10-15', 4726.20, 891.53, 2108.31);
INSERT INTO `members` VALUES (73, '136-7773-1313', '梁杰宏', '男', '2020-06-16', 783.65, 1835.48, 1588.53);
INSERT INTO `members` VALUES (74, '160-3249-5355', '卢安琪', '女', '2017-11-05', 2183.62, 1305.12, 4205.46);
INSERT INTO `members` VALUES (75, '760-7200-6867', '龚致远', '男', '2016-06-13', 2855.74, 383.27, 2248.78);
INSERT INTO `members` VALUES (76, '166-3425-9963', '熊嘉伦', '男', '2017-04-21', 1464.69, 1491.39, 5286.53);
INSERT INTO `members` VALUES (77, '197-6527-9905', '叶詩涵', '女', '2013-09-28', 2273.22, 1981.71, 4483.32);
INSERT INTO `members` VALUES (78, '755-276-6408', '宋杰宏', '男', '2022-05-13', 1126.17, 698.06, 2152.19);
INSERT INTO `members` VALUES (79, '189-9789-7232', '秦秀英', '女', '2021-10-01', 2578.83, 785.81, 1835.21);
INSERT INTO `members` VALUES (80, '146-2891-9497', '邵杰宏', '男', '2021-02-14', 1178.15, 657.80, 1846.28);
INSERT INTO `members` VALUES (81, '20-2323-6578', '金云熙', '男', '2022-07-18', 569.40, 1457.28, 5326.83);
INSERT INTO `members` VALUES (82, '755-348-8189', '尹杰宏', '男', '2018-03-04', 650.85, 966.19, 812.86);
INSERT INTO `members` VALUES (83, '20-518-8301', '任杰宏', '男', '2014-07-08', 3434.31, 1033.70, 788.02);
INSERT INTO `members` VALUES (84, '170-9569-6201', '黎詩涵', '女', '2020-04-16', 475.21, 1895.99, 5031.28);
INSERT INTO `members` VALUES (85, '760-2534-9598', '汪子异', '男', '2016-11-08', 638.36, 1848.66, 454.65);
INSERT INTO `members` VALUES (86, '176-8943-7405', '唐震南', '男', '2023-01-19', 1543.30, 1340.23, 4199.57);
INSERT INTO `members` VALUES (87, '194-7482-5047', '史子异', '男', '2023-11-09', 4246.36, 287.95, 3024.33);
INSERT INTO `members` VALUES (88, '169-6095-2270', '赵晓明', '男', '2020-11-08', 2661.50, 247.97, 5876.75);
INSERT INTO `members` VALUES (89, '28-740-5537', '石秀英', '女', '2022-07-13', 4952.98, 47.52, 2671.09);
INSERT INTO `members` VALUES (90, '132-3083-7537', '宋璐', '女', '2019-04-02', 4507.74, 525.14, 4905.74);
INSERT INTO `members` VALUES (91, '168-4829-6916', '刘詩涵', '女', '2018-08-15', 3739.51, 251.87, 6346.37);
INSERT INTO `members` VALUES (92, '20-794-1331', '赵安琪', '女', '2020-02-03', 4665.55, 900.11, 2631.28);
INSERT INTO `members` VALUES (93, '21-1928-7631', '戴子韬', '男', '2017-07-30', 486.66, 1341.76, 3923.84);
INSERT INTO `members` VALUES (94, '136-8167-2581', '蒋詩涵', '女', '2014-09-12', 2272.59, 378.16, 6351.24);
INSERT INTO `members` VALUES (95, '21-4228-2771', '马秀英', '女', '2016-12-31', 4353.69, 530.21, 3481.87);
INSERT INTO `members` VALUES (96, '191-0333-4058', '潘嘉伦', '男', '2019-08-17', 4004.03, 1493.18, 4989.61);
INSERT INTO `members` VALUES (97, '760-4830-3991', '尹云熙', '男', '2014-11-03', 3646.91, 1179.09, 2326.01);
INSERT INTO `members` VALUES (98, '21-677-8922', '郝睿', '男', '2019-08-16', 3195.83, 1819.72, 2091.50);
INSERT INTO `members` VALUES (99, '136-4943-5361', '段安琪', '女', '2019-03-05', 1273.36, 463.16, 6196.70);
INSERT INTO `members` VALUES (100, '10-814-5778', '萧詩涵', '女', '2017-10-04', 4122.08, 1583.92, 6197.00);
INSERT INTO `members` VALUES (101, '769-349-9611', '赵致远', '男', '2018-10-04', 1950.60, 1380.60, 5824.40);
INSERT INTO `members` VALUES (102, '13211311315', '黄老师', '男', '2023-12-22', 6100.00, 20.00, 120.00);

SET FOREIGN_KEY_CHECKS = 1;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值