窗口售票系统1.0版本

本窗口售票系统实现了三个售票窗口的随机售票,实现随机到某一个窗口买票,总票余量都会减少,即三个窗口共享同一个票余量。若票余量小于一次性购票量,则提示报错;若车票售罄,则代码结束运行。

代码实现:

java 复制代码
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Random;

public class Main {
    //首先设置总票量
    public static int totalTickets = 100;
    public static void main(String[] args) {
        List<TicketOffice> list = new ArrayList<>();
        TicketOffice t1 = new TicketOffice("SC01", "1号负责人", "1号位");
        TicketOffice t2 = new TicketOffice("SC02", "2号负责人", "2号位");
        TicketOffice t3 = new TicketOffice("SC03", "3号负责人", "3号位");

        list.add(t1);
        list.add(t2);
        list.add(t3);

        Scanner sc = new Scanner(System.in);

        while (totalTickets > 0) {
            System.out.println("请输入你要购票的数量:");
            int num = sc.nextInt();

            // 检查输入的车票数量是否有效
            if (num <= 0) {
                System.out.println("请输入有效的车票数量!");
                continue;
            }

            // 随机选择一个售票窗口
            Random random = new Random();
            int randomIndex = random.nextInt(list.size());
            TicketOffice selectedOffice = list.get(randomIndex);

            try {
                selectedOffice.saleTicket(num);
                //totalTickets -= num; // 更新剩余车票总数
                System.out.println("成功从 "+selectedOffice.getOfficeId()+" 窗口售出 "+num+" 张车票。剩余车票:"+totalTickets);
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }

        System.out.println("所有车票已售罄!");
        sc.close();
    }
}



class TicketOffice {
    private String officeId;
    private String administor;
    private String address;

    public TicketOffice() {}

    public TicketOffice(String officeId, String administor, String address) {
        this.officeId = officeId;
        this.administor = administor;
        this.address = address;
    }

    public void saleTicket(int ticketNum) throws Exception {
        if (Main.totalTickets >= ticketNum) {
            Main.totalTickets -= ticketNum;
            System.out.println("售出 " + ticketNum + " 张车票。");
        } else {
            throw new Exception("票余量不足!");
        }
    }

    public String getOfficeId() {
        return officeId;
    }
}

部分运行结果:

相关推荐
怀旧,几秒前
【数据结构】6. 时间与空间复杂度
java·数据结构·算法
大春儿的试验田40 分钟前
Parameter ‘XXX‘ not found. Available parameters are [list, param1]
java
我很好我还能学1 小时前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++
程序员JerrySUN1 小时前
[特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
java·linux·架构
2302_809798321 小时前
【JavaWeb】Docker项目部署
java·运维·后端·青少年编程·docker·容器
蓝婷儿1 小时前
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
开发语言·python·学习
渣渣盟2 小时前
基于Scala实现Flink的三种基本时间窗口操作
开发语言·flink·scala
网安INF2 小时前
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
java·web安全·网络安全·flink·漏洞
一叶知秋哈2 小时前
Java应用Flink CDC监听MySQL数据变动内容输出到控制台
java·mysql·flink
jackson凌2 小时前
【Java学习笔记】SringBuffer类(重点)
java·笔记·学习