Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)

下面我会给出一份详细的攻略,帮助你快速了解如何通过使用Eclipse、Java、Swing和Mysql来实现电影购票系统。

准备工作

  • 安装 JDK 和 Eclipse
  • 下载该电影购票系统所需的Java类库和驱动程序mysql-connector-java-5.1.47-bin.jar,并在Eclipse的项目中添加这些类库
  • 搭建Mysql数据库

设计数据库

在Mysql中创建数据库,在该数据库中创建三张表格来存储所有电影、影院、和订单信息。三张表格的设计如下:

  • movies表:
属性名 类型 约束
id int primary key
name varchar(50) not null
director varchar(50) not null
actors varchar(100) not null
release_date date not null
rating decimal(3,1) not null
description varchar(500)
  • cinemas表:
属性名 类型 约束
id int primary key
name varchar(50) not null
address varchar(100) not null
phone varchar(20) not null
  • orders表:
属性名 类型 约束
id int primary key
movie_id int foreign key(movies.id)
cinema_id int foreign key(cinemas.id)
time datetime not null
user_name varchar(50)

代码实现

连接数据库

在程序入口Main.java中,通过如下代码来连接数据库:

Class.forName("com.mysql.jdbc.Driver"); // 加载Mysql驱动
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/movie_ticket_system", "root", ""); // 建立连接

查询电影和电影院信息

通过如下代码来查询所有电影和电影院信息:

// 查询所有电影信息
PreparedStatement moviesStmt = conn.prepareStatement("SELECT * FROM movies ORDER BY id");
ResultSet moviesRs = moviesStmt.executeQuery();
while (moviesRs.next()) {
    int id = moviesRs.getInt("id");
    String name = moviesRs.getString("name");
    String director = moviesRs.getString("director");
    String actors = moviesRs.getString("actors");
    Date release_date = moviesRs.getDate("release_date");
    BigDecimal rating = moviesRs.getBigDecimal("rating");
    String description = moviesRs.getString("description");
    // Add movie to moviesList
}

// 查询所有电影院信息
PreparedStatement cinemasStmt = conn.prepareStatement("SELECT * FROM cinemas ORDER BY id");
ResultSet cinemasRs = cinemasStmt.executeQuery();
while (cinemasRs.next()) {
    int id = cinemasRs.getInt("id");
    String name = cinemasRs.getString("name");
    String address = cinemasRs.getString("address");
    String phone = cinemasRs.getString("phone");
    // Add cinema to cinemasList
}

插入订单信息

将用户购买电影票的订单信息插入到orders表中,可使用类似如下代码实现:

PreparedStatement orderStmt = conn.prepareStatement("INSERT INTO orders (movie_id, cinema_id, time, user_name)" + " VALUES (?, ?, ?, ?)");
orderStmt.setInt(1, selectedMovieId);
orderStmt.setInt(2, selectedCinemaId);
orderStmt.setTimestamp(3, new java.sql.Timestamp(currentDate.getTime()));
orderStmt.setString(4, nameText.getText().trim());
orderStmt.executeUpdate();

示例说明

  • 示例1:如何添加/修改/删除电影

在程序入口中,通过Swing的GUI设计一个添加/修改/删除电影的界面。在addMovieButton、updateMovieButton、deleteMovieButton的ActionListener中,分别执行SQL语句实现添加、修改、删除电影操作。示例代码如下:

  • 添加电影
public void actionPerformed(ActionEvent e) {
    try {
        String name = nameField.getText();
        String director = directorField.getText();
        String actors = actorsField.getText();
        Date release_date = releaseDateChooser.getDate();
        BigDecimal rating = BigDecimal.valueOf(Double.parseDouble(ratingField.getText()));
        String description = descriptionField.getText();
        PreparedStatement stmt = conn.prepareStatement("INSERT INTO movies (name, director, actors, release_date, rating, description) VALUES (?, ?, ?, ?, ?, ?)");
        stmt.setString(1, name);
        stmt.setString(2, director);
        stmt.setString(3, actors);
        stmt.setDate(4, new java.sql.Date(release_date.getTime()));
        stmt.setBigDecimal(5, rating);
        stmt.setString(6, description);
        stmt.executeUpdate();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
  • 修改电影
public void actionPerformed(ActionEvent e) {
    try {
        String name = nameField.getText();
        String director = directorField.getText();
        String actors = actorsField.getText();
        Date release_date = releaseDateChooser.getDate();
        BigDecimal rating = BigDecimal.valueOf(Double.parseDouble(ratingField.getText()));
        String description = descriptionField.getText();
        PreparedStatement stmt = conn.prepareStatement("UPDATE movies SET name=?, director=?, actors=?, release_date=?, rating=?, description=? WHERE id=?");
        stmt.setString(1, name);
        stmt.setString(2, director);
        stmt.setString(3, actors);
        stmt.setDate(4, new java.sql.Date(release_date.getTime()));
        stmt.setBigDecimal(5, rating);
        stmt.setString(6, description);
        stmt.setInt(7, selectedMovie.getId());
        stmt.executeUpdate();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
  • 删除电影
public void actionPerformed(ActionEvent e) {
    try {
        PreparedStatement stmt = conn.prepareStatement("DELETE FROM movies WHERE id=?");
        stmt.setInt(1, selectedMovie.getId());
        stmt.executeUpdate();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
  • 示例2:如何添加电影院

在程序入口中,通过Swing的GUI设计一个添加电影院的界面。在addCinemaButton的ActionListener中,执行SQL语句实现添加电影院操作。示例代码如下:

public void actionPerformed(ActionEvent e) {
    try {
        String name = nameField.getText();
        String address = addressField.getText();
        String phone = phoneField.getText();
        PreparedStatement stmt = conn.prepareStatement("INSERT INTO cinemas (name, address, phone) VALUES (?, ?, ?)");
        stmt.setString(1, name);
        stmt.setString(2, address);
        stmt.setString(3, phone);
        stmt.executeUpdate();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

总结

在上述攻略中,我们通过Eclipse、Java、Swing和Mysql实现了一个电影购票系统,并探讨了如何连接数据库、查询电影和电影院信息以及插入订单信息。我们同时给出了两个示例说明,帮助读者更好地理解这个电影购票系统的实现过程。由此可见,使用Eclipse、Java、Swing和Mysql来实现类似的应用程序是一种非常有效和方便的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Java自动生成编号的方法步骤

    当我们在开发Java应用程序时,有时候需要生成一个自增的编号或者序列号,本文将介绍一种生成Java自增序列号的方法。 步骤一:创建序列号的表 我们需要创建一个用于存储自增序列号信息的数据表,包括两个字段,一个是主键字段用于唯一标识该序列,另一个是序列号字段用于表示下一个序列号。 以下是一个示例SQL语句,用于创建一个序列号的MySQL数据表: CREATE …

    Java 2023年5月20日
    00
  • Jsp+Servlet实现简单登录注册查询

    下面是详细的“Jsp+Servlet实现简单登录注册查询”的攻略: 一、前提要求:开发环境安装与配置 1. JDK和Tomcat环境安装 在开始之前,需要在电脑上安装JDK和Tomcat两个环境。 JDK下载安装地址:https://www.oracle.com/java/technologies/javase-downloads.html Tomcat下载…

    Java 2023年6月15日
    00
  • java IO流读取图片供前台显示代码分享

    下面是Java IO流读取图片供前台显示的完整攻略: 一、概述 在Java中,使用IO流读取图片供前台显示可以分为以下几个步骤: 使用Java IO流读取图片文件到内存中; 将读取到的图片字节流转换为Base64编码; 将Base64编码的图片数据返回给前台。 二、代码示例 以下是两条示例代码,可以供您参考: 使用FileInputStream和ByteAr…

    Java 2023年5月19日
    00
  • 使用jdk7的nio2操作文件拷贝和剪切示例

    我来给您讲解 “使用jdk7的nio2操作文件拷贝和剪切示例” 的完整攻略,具体包含了以下内容: 1. NIO2简介 Java NIO(New I/O)是一个在JDK 1.4中引入的新的IO API,位于java.nio包和java.nio.channels包中,这些新API提供了一系列支持快速IO操作的类和接口,可用于代替标准的Java IO API。 使…

    Java 2023年5月19日
    00
  • SpringBoot使用CommandLineRunner接口完成资源初始化方式

    下面是关于“SpringBoot使用CommandLineRunner接口完成资源初始化方式”的完整攻略: 简介 CommandLineRunner接口是Spring Boot中提供的一种在应用启动后自动执行代码的方式。通过实现该接口,我们可以在Spring Boot启动后自动完成某些资源的初始化操作,例如数据库的初始化、缓存的预热等。接下来我们就来详细讲解…

    Java 2023年5月19日
    00
  • IIS Tomcat共享80端口的解决方案

    介绍 IIS 是 Microsoft 的一款 Web 服务器,而 Tomcat 是 Apache 社区的一款 Web 服务器。在 Windows 使用 IIS(Internet Information Services)时,如果想要使用 Tomcat,可能需要将 Tomcat 启动在另一个端口上,而不是默认的 8080 端口。这不仅不方便,而且还需要将请求从…

    Java 2023年6月2日
    00
  • 使用jmx exporter采集kafka指标示例详解

    以下是关于使用jmx exporter采集kafka指标的完整攻略: 什么是 JMX Exporter? JMX Exporter 是一个自动化采集系统监控指标并将其解析为 Prometheus 指标格式的工具。它允许用户将 JMX 暴露出来的数据转换成 Prometheus 支持的文本格式。 使用 JMX Exporter 采集 Kafka 指标 以下是使…

    Java 2023年5月20日
    00
  • Idea配置Maven阿里云镜像加速的实现

    下面是Idea配置Maven阿里云镜像加速的实现完整攻略: 第一步:修改Maven的配置文件settings.xml Maven镜像配置文件是settings.xml,如果没有该文件,新建一个即可。该文件默认的位置在Maven的conf目录中(也就是安装Maven目录下的conf子目录)。在该文件中增加以下的配置信息: <mirrors> &lt…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部