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);
}
}
}