电影院购票

package java0801;


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Test {

	private static void start() throws Exception {
		chushi();
		
		// 把文件内容加载到内存中
		// 1、得到DOM解析器的工厂实例
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		// 2、从DOM工厂获得DOM解析器
		DocumentBuilder db = dbf.newDocumentBuilder();
		// 3、解析XML文档,得到一个Document,即DOM树
		Document doc = db.parse("movie.xml");
		
		//实例化Ticket  有序顺序输出
		List<Ticket> list=new ArrayList<Ticket>();

		System.out.println("序号" + "\t" + "电影名称" + "\t" + "英文名称" + "\t" + "导演"
				+ "\t" + "演员" + "\t" + "电影类型" + "\t" + "价格" + "\t" + "时间");
		// 找到删除的节点 如果id在外面,后面无法判断删除电影, 借鉴老师发的删除操作中的查找删除节点
		NodeList node = doc.getElementsByTagName("movie");
		for (int i = 0; i < node.getLength(); i++) {
			Element movieElement = (Element) node.item(i);
			String scoreID = movieElement.getAttribute("id");
			System.out.print(scoreID + "\t");
			// 获取movie的子节点(name,ename,author...)
			NodeList items = node.item(i).getChildNodes();
			//实例化Ticket
			Ticket ticket=new Ticket();
			
			// 遍历movie的子节点
			for (int j = 0; j < items.getLength(); j++) {
				// 获取节点
				Node item = items.item(j);

				if (item.getNodeName().equals("name")) {
					//
					ticket.setName(item.getTextContent());
					// 获得电影名字
					System.out.print(item.getTextContent() + "\t");
				}
				if (item.getNodeName().equals("ename")) {
					ticket.setEname(item.getTextContent());
					// 获得英文名字
					System.out.print(item.getTextContent() + "\t");
				}
				if (item.getNodeName().equals("author")) {
					ticket.setAuthor(item.getTextContent());
					// 获得导演名字
					System.out.print( item.getTextContent()+"\t");
				}
				if (item.getNodeName().equals("actor")) {
					ticket.setActor(item.getTextContent());
					// 获得演员名字
					System.out.print(item.getTextContent() + "\t");
				}
				if (item.getNodeName().equals("type")) {
					ticket.setType(item.getTextContent());
					// 获得电影类型
					System.out.print(item.getTextContent() + "\t");
				}
				if (item.getNodeName().equals("price")) {
					ticket.setPrice(item.getTextContent());
					// 获得导演名字
					System.out.print(item.getTextContent() + "\t");
				}
				if (item.getNodeName().equals("time")) {
					ticket.setTime(item.getTextContent());
					// 获得导演名字
					System.out.println(item.getTextContent());
				}
			}
			if (ticket.getName()!=null) {
				//把信息放到list里面,准备输出到文本中
			list.add(ticket);
			//System.out.println(list);  
			}
			
			/*File file=new File("d:\\film\\movie.txt");
			FileOutputStream fos=new FileOutputStream(file);
			ObjectOutputStream oos=new ObjectOutputStream(fos);
			oos.writeObject(list);*/
		}
		/*for (int j = 0; j < list.size(); j++) {
			System.out.println(list.get(j).getName()+list.get(j).getEname()+list.get(j).getAuthor()
					+list.get(j).getActor()+list.get(j).getType()
					+list.get(j).getPrice()+list.get(j).getTime());
		}*/
		
		// 座位
		System.out.println("下面为影院的座位结构图:");
		System.out.println("  \t\t  屏幕       ");
		for (int i = 1; i < 6; i++) {
			for (int j = 1; j < 8; j++) {
				System.out.print(i + "-" + j + "   ");
			}
			System.out.println();
		}

		//购票
		goupiao();
		// 返回菜单
		caidan();
		
	}
	private static ObjectOutputStream ObjectOutputStream(ObjectOutputStream oos) {
		// TODO Auto-generated method stub
		return null;
	}
	private static void goupiao() throws Exception {
				
				Scanner input = new Scanner(System.in);
				System.out.println("请输入电影名称");
				String name = input.next();
				
				System.out.println("请输入电影播放时间:以xx:xx的格式");
				String time = input.next();
				System.out.println("请输入您所要购买的票的类型:1.普通票   2.学生票   3.赠送票");
				int num = input.nextInt();
				System.out.println("请输入您所需要的座位号:以排-列的形式");
				String seetNo = input.next();
				
			
				//输入流  拿到内存中
				File file=new File("D:\\film\\movie.txt");
				FileInputStream fis=new FileInputStream(file);
				ObjectInputStream ois=new ObjectInputStream(fis);
				//把内存放到list中
				List<Ticket> list=(ArrayList<Ticket>) ois.readObject();
				ois.close();
				
				//开始判断购票信息
				boolean flag=false; 
				if (list.size()!=0) {
					for (int i = 0; i < list.size(); i++) {
						System.out.println(list.get(i).getName().equals(name)&&list.get(i).getSeetNo().equals(seetNo)&&
								list.get(i).getTime().equals(time));
						flag=true;
						break;
					}
				}
				if (flag==true) {
					System.out.println("此作为已售出,售票失败!!");
					
				}else {
					//可以购票
					ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File("D:\\film\\movie.txt")));
					//list.add(ticket);
					oos.writeObject(list);
					System.out.println("list.size(): "+list.size());
					oos.close();
				}
				System.out.println("list:  "+list);
				//播放时间
				
				//票价
			if (num==1) {
				for (int i = 0; i < list.size(); i++) {
					System.out.println("piaojia"+list.get(i).getPrice());
				}
			}
				
				
				
				
	}
	public static void main(String[] args) throws Exception {
		// 调用主函数
		start();
		
		goupiao();
	
	}

	private static void chushi() throws Exception {
		// TODO Auto-generated method stub
		File file=new File("d:\\film");
		if (!file.exists()) {
			file.mkdir();	
		}
		File file2=new File("d:\\film\\movie.txt");
		if (!file2.exists()) {
			file2.createNewFile();
		}
		FileOutputStream fos=new FileOutputStream(file2);
		ObjectOutputStream oos=new ObjectOutputStream(fos);
		
		List<Ticket> list= new ArrayList<Ticket>();
		oos.writeObject(list);
		oos.close();
	}
	private static void caidan() throws Exception {
		// TODO Auto-generated method stub
		System.out.println("输入数字0继续购票,其它任意数字键退出");
		Scanner input = new Scanner(System.in);
		int a = input.nextInt();
		if (a == 0) {
			start();
		}else {
			//退出
			System.out.println("退出成功!!!!!!!!!");
			System.exit(0);
		}
	}

}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值