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技术汇总是一个比较综合的概念,包括JavaSE、JavaEE、JavaME等多个方向。如果想要掌握Java的全部技术,需要经过以下几个步骤: 第一步:掌握Java基础知识 JavaSE是Java语言的基础,包括基本语法、数据类型、面向对象编程、异常处理、多线程编程、IO流、反射、集合框架等核心知识点。掌握JavaSE是Java技术汇总的必要前提。 第…

    Java 2023年5月23日
    00
  • Java函数式编程(一):你好,Lambda表达式

    Java函数式编程(一):你好,Lambda表达式 函数式编程是什么? 函数式编程是一种编程范式,它强调将计算过程尽可能地写成若干个嵌套的函数调用,通过组合简单的函数形成较为复杂的计算。函数式编程的基本思想是将函数视为“一等公民”,即函数可以作为参数传递给其他函数,也可以作为返回值被其他函数返回。 为什么需要函数式编程? 函数式编程可以让我们写出更加简洁、可…

    Java 2023年5月26日
    00
  • Java如何打印完整的堆栈信息

    当Java程序遇到异常时,Java虚拟机会将堆栈信息打印到控制台中。但是,默认情况下,Java只会打印简略的堆栈信息,这对于开发中的调试并不方便。本文将会详细介绍如何打印完整的堆栈信息。 问题描述 通常情况下,Java虚拟机只会打印部分的堆栈信息,例如: Exception in thread "main" java.lang.NullP…

    Java 2023年5月26日
    00
  • 简单实现Java web服务器

    请先让我简单介绍一下Java web服务器是什么:Java web服务器是通过Java编写的用于处理HTTP请求的服务器。它可以处理静态内容和动态内容。与其他Web服务器不同,Java web服务器通常可以执行Java Servlets和JavaServer Pages(JSP)等代码,以生成动态内容。下面是Java web服务器实现的完整攻略: 1. 确定…

    Java 2023年5月18日
    00
  • Java实战小技巧之数组与list互转

    可以按照以下步骤将Java数组和List进行互相转换: 将数组转换为List 使用Arrays类的asList方法将数组转换为List java String[] array = {“a”, “b”, “c”}; List<String> list = Arrays.asList(array); 这里将String类型的数组转换为List类型的列…

    Java 2023年5月26日
    00
  • Java线程关闭的3种方法

    下面我会详细讲解Java线程关闭的3种方法。 1. 使用标志位关闭线程 原理 使用一个boolean类型的变量作为线程的标志位,当需要关闭线程时,将标志位设为false,在run方法中判断标志位,如果为false,则退出线程。 示例代码 public class StopThreadByFlag extends Thread { private volati…

    Java 2023年5月18日
    00
  • 深入讲解Java Maven配置

    下面是“深入讲解Java Maven配置”的完整攻略。 一、什么是Maven Apache Maven(简称Maven)是一个Java项目的管理和构建工具。它可以帮助开发人员自动化构建过程,生成具有标准目录结构的项目骨架以及管理项目依赖。使用Maven可以简化项目开发过程,节省时间和人力成本。 二、Maven的配置步骤 2.1 安装Maven 首先需要在官网…

    Java 2023年5月20日
    00
  • IDEA启动tomcat控制台中文乱码问题的解决方法(100%有效)

    那我们来详细讲解一下“IDEA启动tomcat控制台中文乱码问题的解决方法(100%有效)”的攻略。 问题描述 在使用IDEA启动Tomcat进行开发时,控制台显示的中文文字都是乱码,导致开发者无法正常查看调试过程,给开发带来了不必要的困扰。 原因分析 这个问题的根本原因在于控制台编码与系统编码不匹配。Tomcat在启动时会默认使用系统编码,在Windows…

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