窗口售票系统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;
    }
}

部分运行结果:

相关推荐
用户8307196840822 小时前
Spring Boot WebClient性能比RestTemplate高?看完秒懂!
java·spring boot
Assby4 小时前
从洋葱模型看Java与Go的设计哲学:为什么它们如此不同?
java·后端·架构
belhomme5 小时前
(面试题)Netty 线程模型
java·面试·netty
NE_STOP9 小时前
MyBatis-plus进阶之映射与条件构造器
java
Seven9712 小时前
NIO的零拷贝如何实现高效数据传输?
java
架构师沉默1 天前
别又牛逼了!AI 写 Java 代码真的行吗?
java·后端·架构
后端AI实验室1 天前
我把一个生产Bug的排查过程,交给AI处理——20分钟后我关掉了它
java·ai
凉年技术1 天前
Java 实现企业微信扫码登录
java·企业微信
狂奔小菜鸡1 天前
Day41 | Java中的锁分类
java·后端·java ee