Java电影院购票系统实现方法

1. 简介

电影院购票系统是一个常见的系统需求,用户可以通过该系统选择电影、选择座位并购买电影票。本文将介绍如何使用Java来实现这个购票系统。

2. 流程图

根据系统需求,我们可以将电影院购票系统的流程细分为以下几个步骤:

st=>start: 开始
op1=>operation: 选择电影
op2=>operation: 选择座位
op3=>operation: 购买电影票
e=>end: 完成购票
st->op1->op2->op3->e

3. 代码实现

步骤1:选择电影

首先,用户需要从电影列表中选择一部电影。我们可以使用Java的控制台输入来实现这个步骤。以下是代码示例:

import java.util.Scanner;

public class MovieTicketSystem {
    public static void main(String[] args) {
        // 电影列表
        String[] movies = {"电影A", "电影B", "电影C"};

        // 输出电影列表供用户选择
        System.out.println("请选择一部电影:");
        for (int i = 0; i < movies.length; i++) {
            System.out.println((i + 1) + ". " + movies[i]);
        }

        // 获取用户选择的电影
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        String selectedMovie = movies[choice - 1];
        
        // 打印用户选择的电影
        System.out.println("您选择了:" + selectedMovie);
    }
}

代码解释:

  • 创建一个字符串数组movies来存储电影列表;
  • 使用for循环遍历电影列表,并使用System.out.println输出每个电影的序号和名称;
  • 使用Scanner类获取用户输入的选择,将其存储在choice变量中;
  • 根据用户选择的序号,从电影列表中获取对应的电影名称,并将其存储在selectedMovie变量中;
  • 最后,使用System.out.println输出用户选择的电影。

步骤2:选择座位

接下来,用户需要从座位图中选择一个可用的座位。我们可以使用二维数组来表示座位图,其中0表示空座位,1表示已被占用的座位。以下是代码示例:

import java.util.Scanner;

public class MovieTicketSystem {
    public static void main(String[] args) {
        // 电影列表
        String[] movies = {"电影A", "电影B", "电影C"};

        // 座位图
        int[][] seatMap = {
            {1, 0, 1, 0, 1},
            {0, 1, 1, 1, 0},
            {1, 1, 0, 1, 1}
        };

        // 输出座位图供用户选择
        System.out.println("请选择一个座位:");
        for (int i = 0; i < seatMap.length; i++) {
            for (int j = 0; j < seatMap[i].length; j++) {
                if (seatMap[i][j] == 0) {
                    System.out.print("O ");
                } else {
                    System.out.print("X ");
                }
            }
            System.out.println();
        }

        // 获取用户选择的座位
        Scanner scanner = new Scanner(System.in);
        int row = scanner.nextInt();
        int column = scanner.nextInt();
        
        // 检查座位是否可用
        if (seatMap[row - 1][column - 1] == 1) {
            System.out.println("该座位已被占用,请重新选择!");
        } else {
            seatMap[row - 1][column - 1] = 1;
            System.out.println("您选择了第 " + row + " 行第 " + column + " 列的座位。");
        }
    }
}

代码解释:

  • 创建一个二维数组seatMap来表示座位图;
  • 使用嵌套的for循环遍历座位图,并使用System.out.print输出座位图,其中0表示空座位,1表示已被占用的座位;
  • 使用Scanner类获取用户输入的行号和列号,将其分别存储在row