「会员卡管理系统」 · Java Swing + MySQL JDBC开发

本文涉及的产品
RDS Agent(兼容Hermes Agent),2核4GB
RDS Agent Manager,2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 「会员卡管理系统」 · Java Swing + MySQL JDBC开发

一、语言和环境


1. 实现语言:Java。

2. 开发环境:MyEclipse+MySQL。


二、实现功能


使用 Java 技术开发一个会员卡管理系统,具体实现功能如下: 1. 程序启动显示主界面,点击查询按钮,显示所有会员卡信息,如图 1 所示


7.png

图 1 会员信息列表


2. 选中某行会员卡信息,点击删除按钮,提示是否删除,如图 2 所示


8.png

图 2 删除确认


3. 如果点击是按钮,则确认删除,如果点击否或取消,则取消删除操作。删除成功后    给出对应的提示信息,如图 3 所示。

20200921111934496.png


图 3 删除成功提示


三、数据库设计


1. 创建数据库(MemberDB

2. 创建会员卡信息表(members),结构如下:


9.png



四、具体要求及推荐实现步骤


1. 按以上数据库要求建库建表,并参考图 2 添加至少 、3 条测试数据


2. 搭建系统框架

(1)编写实体类。

(2)创建数据访问层,并编写 BaseDAO 和数据访问层代码。

(3)创建窗体。


3. 创建主窗体

(1)按照图 1,创建窗体 MainFrame,并添加相应的组件

(2)表格中的数据均来源于数据库,点击查询按钮显示所有数据。

(3)实现点击“删除”按钮,删除一条选中的会员卡记录。


五、注意事项


1. 将数据库导出成 sql 脚本文件

2. 将整个项目打包提交


六、评分标准


10.png


>>>实现代码:


数据库


SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for members
-- ----------------------------
DROP TABLE IF EXISTS `members`;
CREATE TABLE `members` (
  `memberID` int(11) NOT NULL AUTO_INCREMENT,
  `phone` varchar(32) NOT NULL,
  `name` varchar(32) NOT NULL,
  `sex` varchar(5) DEFAULT NULL,
  `openDate` date DEFAULT NULL,
  `balance` decimal(6,2) DEFAULT NULL,
  PRIMARY KEY (`memberID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of members
-- ----------------------------
INSERT INTO `members` VALUES ('1', '18214217246', '杨明金', '男', '2020-10-21', '200.00');
INSERT INTO `members` VALUES ('2', '18214217244', '李韬', '男', '2020-10-21', '500.00');


com.ynavc.Bean


member.java

package com.ynavc.Bean;
public class Members {
  int memberID;
  String phone;
  String name;
  String sex;
  String openDate;
  String balance;
  public Members() {
    super();
  }
  public Members(int memberID, String phone, String name, String sex, String openDate, String balance) {
    super();
    this.memberID = memberID;
    this.phone = phone;
    this.name = name;
    this.sex = sex;
    this.openDate = openDate;
    this.balance = balance;
  }
  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;
  }
}


com.ynavc.Controller

Select.java


package com.ynavc.Controller;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.ynavc.Bean.Members;
import com.ynavc.Dao.DbConnection;
public class Select {
  public Object[][] getMebers(String sql) {
    ResultSet resultSet = DbConnection.query(sql);
    ArrayList<Members> list=new ArrayList<Members>();
    try {
      while (resultSet.next()) {
        Members m=new 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));
        list.add(m);
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    Object[][] objects=new Object[list.size()][6];
    for(int i=0;i<list.size();i++) {
      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();
    }
    return objects;
  }
}


Updata.java

package com.ynavc.Controller;
import com.ynavc.Dao.DbConnection;
public class Updata {
  //添加数据
  public int addData(String sql) {
    return DbConnection.updataInfo(sql);
  }
}


com.ynavc.Dao

DbConnection.java


package com.ynavc.Dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import com.mysql.jdbc.Statement;
public class DbConnection {
  //驱动类的类名
  private static final String DRIVERNAME="com.mysql.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="root";
  //加载驱动
  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;
    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();
     }
  }
}

com.ynavc.Test

Main.java

package com.ynavc.Test;
import com.ynavc.Vive.MainJframe;
public class Main {
  public static void main(String[] args) {
    new MainJframe().setVisible(true);
  }
}


com.ynavc.Vive

MainJframe.java


package com.ynavc.Vive;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.DefaultTableModel;
import com.ynavc.Controller.Select;
import com.ynavc.Controller.Updata;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MainJframe extends JFrame {
  Select select = new Select();
  Updata updata = new Updata();
  Object[] header= {"序号","手机","姓名","性别","会员日期","卡余额"};
  String sql = "SELECT memberid,phone,name,sex,openDate,balance 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);
    JScrollPane jsp=new JScrollPane(jTable,v,h);
    jsp.setBounds(10, 60, 574, 301);
    getContentPane().add(jsp);
    JButton btnNewButton_1 = new JButton("查询");
    btnNewButton_1.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        String sql = "SELECT memberid,phone,name,sex,openDate,balance FROM members;";
        Object[][] data = select.getMebers(sql);
        df.setDataVector(data, header);
      }
    });
    btnNewButton_1.setBounds(301, 23, 93, 23);
    getContentPane().add(btnNewButton_1);
    JButton btnNewButton_2 = new JButton("删除");
    btnNewButton_2.setBounds(414, 23, 93, 23);
    getContentPane().add(btnNewButton_2);
    btnNewButton_2.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) {
    new MainJframe().setVisible(true);
  }
}



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
9月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
443 13
|
11月前
|
人工智能 Java 关系型数据库
Java的时间处理与Mysql的时间查询
本文总结了Java中时间与日历的常用操作,包括时间的转换、格式化、日期加减及比较,并介绍了MySQL中按天、周、月、季度和年进行时间范围查询的方法,适用于日常开发中的时间处理需求。
214 0
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
565 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
自然语言处理 Java 关系型数据库
Java mysql根据很长的富文本如何自动获取简介
通过使用Jsoup解析富文本并提取纯文本,然后根据需要生成简介,可以有效地处理和展示长文本内容。该方法简单高效,适用于各种应用场景。希望本文对您在Java中处理富文本并生成简介的需求提供实用的指导和帮助。
320 9
|
存储 IDE Java
漂亮不是梦!Java Swing美化攻略
Java Swing 是一个为 Java 设计的 GUI 工具包,提供文本框、按钮等组件。尽管其外观可定制,通过 Look and Feel(LAF)机制改变应用风格,如 Darcula 和 FlatLaf,但现已淡出主流视野,主要应用于 IDE 领域,如 IntelliJ IDEA 和 Eclipse。相比其他 GUI 框架,Swing 的发展前景有限。
852 1
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
991 26
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
650 1
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
504 2

推荐镜像

更多