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

yizhihongxing

下面我会给出一份详细的攻略,帮助你快速了解如何通过使用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日

相关文章

  • JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析

    JSON在Javascript中的使用是非常常见的操作,JSON是一种轻量级的数据格式,非常适合用于数据交互。在Javascript中,我们可以使用两种方式来解析JSON数据,一种是eval函数,另一种是JSON.parse方法。本篇文章将详细解析这两种方式的异同以及使用姿势。 eval函数 eval函数是Javascript中自带的函数,用于执行一段字符串…

    Java 2023年5月26日
    00
  • Java中数字相关的类有哪些?Nuber数字类和Math数学类详解

    前言 我们在解决实际问题时,会经常对数字、日期和系统设置进行处理,比如在我们的代码中,经常会遇到一些数字&数学问题、随机数问题、日期问题和系统设置问题等。 为了解决这些问题,Java给我们提供了多个处理相关问题的类,比如Number类、Math类、Random类、BigInteger类、BigDecimal类、Date类、System类等。 接下来我…

    Java 2023年5月5日
    00
  • Java编程实现统计数组中各元素出现次数的方法

    Java编程实现统计数组中各元素出现次数的方法 在Java中,统计数组中各元素出现次数是开发中常用的功能之一。这篇文章将带你了解Java编程实现统计数组中各元素出现次数的方法。 方法一:使用Map进行统计 步骤为: 定义一个Map,用于保存每个元素以及它出现的次数; 遍历数组,对于每一个元素,如果该元素已在Map中,则将对应的计数器加一,否则将该元素作为新的…

    Java 2023年5月26日
    00
  • springboot实现全局异常处理及自定义异常类

    一、背景简介 在SpringBoot的应用开发过程中,异常处理显得尤为关键。当系统运行出现意外情况时,能够及时捕获异常、快速定位问题和提供友好的提示信息,是系统健壮性和用户体验的保障。本文将介绍如何使用SpringBoot实现全局异常处理并自定义异常类,帮助开发人员快速高效地处理异常信息。 二、目标 实现全局异常处理,处理系统的所有异常,包括运行时异常和非运…

    Java 2023年5月27日
    00
  • 浅析SpringBoot中使用thymeleaf找不到.HTML文件的原因

    一、问题背景当我们在使用SpringBoot时,可能会出现找不到HTML文件的情况,这时候我们需要检查一下以下几个问题: 1.文件路径是否正确2.是否扫描到了对应的包3.是否使用了正确的模板引擎4.是否在配置文件中正确配置了模板引擎下面我将分别介绍每个问题,并给出相应的示例。 二、 文件路径是否正确首先,我们需要确保HTML文件在正确的位置。在SpringB…

    Java 2023年5月20日
    00
  • Mybatis批量修改的操作代码

    下面我将详细讲解Mybatis批量修改的操作代码的完整攻略。 什么是Mybatis批量修改操作 Mybatis批量修改操作是指在一次数据库连接的情况下,通过一条SQL语句同时修改多条数据的操作,相对于单条SQL语句修改单个数据,批量修改操作在实际应用中更加高效。 Mybatis批量修改操作的实现方式 Mybatis批量修改操作的实现方式有两种:第一种是基于f…

    Java 2023年5月19日
    00
  • Java中List.contains(Object object)方法使用

    Java中的List.contains(Object object)方法用于判断List容器中是否包含指定的对象。这个方法返回一个boolean类型,当包含指定对象时返回true,否则返回false。下面就是使用List.contains()方法的完整攻略: 方法签名 下面是List.contains(Object object)方法的定义签名(注意,该方法…

    Java 2023年5月26日
    00
  • Java NIO实现群聊系统

    Java NIO实现群聊系统攻略 1. 概述 Java NIO(New I/O)是Java 1.4版本引入的新的I/O模型,与之前的I/O模型(阻塞式I/O)不同,Java NIO使用了非阻塞I/O模型。在Java NIO中,所有的I/O操作都是异步的,即非阻塞的。 Java NIO实现群聊系统,可以使用Java NIO的SocketChannel和Sele…

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