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中,不可变类是线程安全的,因为不需要同步机制就可以在多线程下使用。 创建不可变类需要遵循以下四个步骤: 将类声明为final,这将防止其他类继承它。 将所有的成员变量声明为私有的final,这将防止其他类修改它们。 不要提供任何修改成员变量的方法,例如setters()。 如果一个对…

    Java 2023年5月26日
    00
  • java解析dbf之通过javadbf包生成和读取dbf文件

    下面是“java解析dbf之通过javadbf包生成和读取dbf文件”的完整攻略,包含以下主要内容: javadbf包是什么,如何引入 生成dbf文件 读取dbf文件 1. javadbf包是什么,如何引入 javadbf包是用于处理dbf文件格式的Java库,它支持生成、读取和写入dbf文件。这个库的最新版本是2.0.0-beta,你可以在github上找…

    Java 2023年5月19日
    00
  • jsp页面数据分页模仿百度分页效果(实例讲解)

    下面我们将分为以下几个部分来讲解“jsp页面数据分页模仿百度分页效果(实例讲解)”的完整攻略: 理解jsp页面数据分页的基础知识:分页原理、分页实现方式等; 实现分页插件的具体步骤:插件的引入、页面结构的构建、js代码的编写等; 给出两个具体的示例,让大家更好地理解和掌握分页插件的使用流程。 希望通过这篇攻略,大家能够对jsp页面数据分页有更深入的了解和认识…

    Java 2023年6月15日
    00
  • JS+JSP checkBox 全选具体实现

    为实现JS+JSP CheckBox全选功能,可以按照以下步骤进行操作: 1.编写JSP文件在JSP文件中,需要在HTML中添加JS代码,使用了checkbox元素的onclick事件。同时,将checkbox的name属性设为相同的值,这样才能实现全选或者全不选的效果。 <%@ page language="java" conte…

    Java 2023年6月15日
    00
  • SpringSecurity登录使用JSON格式数据的方法

    下面是“Spring Security登录使用JSON格式数据的方法”详细攻略: 1. 问题分析 我们知道,Spring Security是Spring框架的一个重要组成部分,它用于处理系统中的用户身份认证和授权等问题。在实际开发过程中,我们经常需要使用JSON格式的数据来进行前后端通信,并且希望在登录时使用JSON格式的数据来进行用户身份认证。但是,在默认…

    Java 2023年5月20日
    00
  • 使用java.util.Timer实现任务调度

    使用 java.util.Timer 实现任务调度可以通过以下步骤完成: 1. 引入 Timer 和 TimerTask 类 在 Java 中,需要引入 java.util.Timer 和 java.util.TimerTask 类才能使用定时任务调度功能。 import java.util.Timer; import java.util.TimerTask…

    Java 2023年5月20日
    00
  • Spring Boot 使用 SSE 方式向前端推送数据详解

    Spring Boot 使用 SSE 方式向前端推送数据详解 概述 Server-Sent Events (SSE) 是一种基于 HTTP 协议的服务器推送技术,可以将服务器端的实时数据流推送给客户端,常用于构建实时通讯、监控等场景。Spring Boot 提供了很好的支持,可以方便地将 SSE 技术应用于开发中。 步骤 1. 添加依赖 在 pom.xml …

    Java 2023年6月3日
    00
  • javascript修改IMG标签的src问题

    如果需要修改HTML文档中的标签的src属性,可以使用JavaScript来实现该功能。以下是几种实现该功能的方法: 方法一:使用getElementById() // 获取img元素 var img = document.getElementById("example-img"); // 修改src属性 img.src = "…

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