java售票小程序

要求:
电影院有120个座位 12排 每排10个
1.把座位给构建出来
2.买票 选座 提示 该座位已被霸占 请重新选座
3.哪些座位被霸占
4.交互式可以选座 所有定票的信息
5.电影院想要查看当前这场电影的订票信息 把所有的排座信息输出到 记事本中去
实现的功能:
A.订票 请输入你的座位信息
B.查看所有订票的信息
C.输出订票的到文件 统计 当前这场电影 入座率 和 空座比率

package com.oracle.core;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class TicketSystem
{

	private Scanner scanner=new Scanner(System.in);
	private Map<String,Boolean> ticketMap=new LinkedHashMap<>();
	private SimpleDateFormat format=new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss");
	public static void main(String[] args)
	{
		new TicketSystem().welcome();
		
		
	}
//	代码块
//	false表示空座位,true表示有人预定
	{
		for(int i=1;i<=12;i++)
		{
			for(int j=1;j<=10;j++)
			{
				ticketMap.put(i+"-"+j, false);
			}
		}
	}
	
	/**
	 * 欢迎页面
	 */
	public void welcome()
	{
		while(true)
		{
		System.out.println("***************");
		System.out.println("***************");
		System.out.println("****京东票务网****");
		System.out.println("***************");
		System.out.println("***************");
        menu();
		}
	}
	/**
	 * 功能菜单
	 */
	public void menu()
	{
		System.out.println("1.查看座位");
		System.out.println("2.订电影票");
		System.out.println("3.导出座位信息");
		System.out.println("4.退出系统");

		int choose=scanner.nextInt();
		switch(choose)
		{
		case 1:
			views();
		    break;
		case 2:
			markOrder();
			break;
		case 3:
			try
			{
				export();
			}
			catch (FileNotFoundException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			break;
		case 4:
			System.exit(-1);
		default:
			System.out.println("您的输入有误,请重新输入");
		}

	}
	
	/**
	 * 查看票务信息
	 */
	public void views()
	{
		Set<Entry<String, Boolean>> entrySet = ticketMap.entrySet();
		Iterator<Entry<String, Boolean>> iterator = entrySet.iterator();
		int i=1;
		for(;iterator.hasNext();)
		{
			Entry<String, Boolean> seat = iterator.next();
			if(i%10==0)
			{
				System.out.println(seat.getKey()+"["+(seat.getValue()?"■":"□")+"]");
			    i++;
			}
			else
			{
				System.out.print(seat.getKey()+"["+(seat.getValue()?"■":"□")+"]"+"\t");
			    i++;
			}
		}
	}
	
	/**
	 * 订票业务
	 */
	public void markOrder()
	{
		System.out.println("请输入您要购买的座位号");
		System.out.println("规则如下:x-x 例如:1-2表示购买1排2座的位置 可以用,分割 表示买多张票" );
		String input = scanner.next();
		if(input.contains(","))
		{
			String[] split = input.split(",");
			for(int i=0;i<split.length;i++)
			{
				Boolean status = ticketMap.get(split[i]);
				if(!status)
				{
				ticketMap.put(split[i], true);
				}
				else
				{
					System.out.println("订票失败......"+split[i]+"已经被订,请重新选择");
				}
			}
		}
		else
		{
			Boolean status = ticketMap.get(input);
			if(!status)
			{
			ticketMap.put(input, true);
			}
			else
			{
				System.out.println("订票失败......"+input+"已经被订,请重新选择");
			}
		}
		
	}
	
	/**
	 * 导出业务
	 * @throws FileNotFoundException 
	 */
	public void export() throws FileNotFoundException
	{
		String now = format.format(new Date());
//		在指定的目录下创建文件
		File file=new File("D:\\export\\"+now+".txt");
		File parentFile = file.getParentFile();
		if(!parentFile.exists())
		{
			parentFile.mkdirs();
		}
		OutputStream out=new FileOutputStream(file);
		Set<Entry<String, Boolean>> entrySet = ticketMap.entrySet();
		Iterator<Entry<String, Boolean>> iterator = entrySet.iterator();
		int i=1;
		int sumTrue=0;
		String row="";
		while(iterator.hasNext())
		{
			Entry<String, Boolean> seat = iterator.next();
			if(i%10==0)
			{
				if(seat.getValue())
				{
					sumTrue++;
				}
				row+=seat.getKey()+"["+(seat.getValue()?"■":"□")+"]";
				try
				{
					out.write(row.getBytes());
					out.write("\r\n".getBytes());
					row="";
					i++;
				}
				catch (IOException e)
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
			else
			{
				if(seat.getValue())
				{
					sumTrue++;
				}
				row+=seat.getKey()+"["+(seat.getValue()?"■":"□")+"]";
				i++;
			}
		}
		String toggle="占座率="+(sumTrue+"/"+ticketMap.size());
		String nulltoggle="空座率="+(ticketMap.size()-sumTrue+"/"+ticketMap.size());
		try
		{
			out.write(toggle.getBytes());
			out.write("\t".getBytes());
			out.write(nulltoggle.getBytes());
			out.close();
			System.out.println("已经导出成功");
		}
		catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	
}

效果如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
导出的信息:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java售票程序是一种常见的软件应用,它可以实现售票、退票、查询等操作。以下是一个简单的Java售票程序实例: ``` import java.util.Scanner; public class TicketSystem { private static int totalTickets = 100; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请选择操作:1.售票 2.退票 3.查询余票 4.退出程序"); int operation = scanner.nextInt(); if (operation == 1) { System.out.println("请输入购买数量:"); int count = scanner.nextInt(); if (count > totalTickets) { System.out.println("余票不足,购买失败!"); } else { totalTickets -= count; System.out.println("购买成功,当前余票为:" + totalTickets); } } else if (operation == 2) { System.out.println("请输入退票数量:"); int count = scanner.nextInt(); if (count > (100 - totalTickets)) { System.out.println("退票数量不足,退票失败!"); } else { totalTickets += count; System.out.println("退票成功,当前余票为:" + totalTickets); } } else if (operation == 3) { System.out.println("当前余票为:" + totalTickets); } else if (operation == 4) { System.exit(0); } else { System.out.println("输入有误,请重新选择!"); } } } } ``` 这个Java售票程序实例是一个控制台程序,它提供了售票、退票、查询余票和退出程序等功能。用户可以通过输入数字来选择不同的操作,程序会根据用户的选择来执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值