<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<movies>
<movie>
<xh>1</xh>
<title>羞羞的铁拳</title>
<dy>李乐</dy>
<actor>马腾</actor>
<lx>喜剧</lx>
<price>60</price>
<time>13:36</time>
</movie>
<movie>
<lx>2</lx>
<title>lol</title>
<dy>gelun</dy>
<xh>kate</xh>
<price>madongmdongdondod25</price>
<time>13:00</time>
</movie>
<movie>
<xh>3</xh>
<title>lol</title>
<dy>卡特</dy>
<actor>动漫</actor>
<lx />
<price>45</price>
<time>13:45</time>
</movie>
</movies>
package com.entriy;
import java.io.Serializable;
public class film implements Serializable {
private String filename;//电影名
private String date;//观看时间
private String sno;//座位号
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public film(String filename, String date, String sno) {
super();
this.filename = filename;
this.date = date;
this.sno = sno;
}
public film() {
super();
}
}
package com.entry;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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.TransformerException;
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;
import org.xml.sax.SAXException;
import com.entry.film;
public class FilmText {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String con = "";
do {
System.out.println("==欢迎来到 幻影影院 ==");
System.out.println("1.员工入口\n2.管理员入口\n3.退出");
System.out.println("请选择:");
Scanner sca = new Scanner(System.in);
int num = sca.nextInt();
switch (num) {
case 1:
log();
yg();
break;
case 2:
admin();
gly();
break;
case 3:
System.out.println("退出系统成功!");
System.exit(0);
break;
}
System.out.println("输入0返回:");
con = sca.next();
} while (con.equals("0"));
}
// 员工入口
public static void yg() throws Exception {
Scanner sca = new Scanner(System.in);
System.out.println("1.查询电影\n2.购票");
int nums = sca.nextInt();
switch (nums) {
case 1:
cat();
break;
case 2:
gp();
break;
}
}
// 查看
public static void cat() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("src/login.xml");
// 获取所有节点
NodeList roots = doc.getChildNodes();
Node root = roots.item(0);// 获取根节点
// System.out.println(root.getNodeName());
NodeList movies = root.getChildNodes();
System.out.println("\t\t\t欢迎来到动感影城");
System.out.println("序号\t电影名称\t导演\t演员\t电影类型\t价格\t时间");
for (int i = 0; i < movies.getLength(); i++) {
Node movie = movies.item(i);
NodeList items = movie.getChildNodes();
for (int j = 0; j < items.getLength(); j++) {
Node item = items.item(j);
if (item.getNodeName().equals("xh")) {
System.out.print(item.getTextContent() + "\t");
}
if (item.getNodeName().equals("title")) {
System.out.print(item.getTextContent() + "\t");
}
if (item.getNodeName().equals("dy")) {
System.out.print(item.getTextContent() + "\t");
}
if (item.getNodeName().equals("actor")) {
System.out.print(item.getTextContent() + "\t");
}
if (item.getNodeName().equals("lx")) {
System.out.print(item.getTextContent() + "\t");
}
if (item.getNodeName().equals("price")) {
System.out.print(item.getTextContent() + "\t");
}
if (item.getNodeName().equals("time")) {
System.out.print(item.getTextContent() + "\t");
}
}
System.out.println();
}
}
// 购票
public static void gp() throws Exception {
Scanner sca = new Scanner(System.in);
init();
String con = "";
do {
cat();
System.out.println("下面为影院的座位结构图:");
System.out.println("\t\t\t屏幕");
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 7; j++) {
System.out.print(i + "-" + j + "\t");
}
System.out.println();
}
sell();
System.out.println("是否继续购票 y\\n ");
con = sca.next();
} while (con.equals("y"));
}
public static void init() throws Exception {
File file = new File("D:\\a\\t.txt");
if (!file.exists()) {
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream op = new ObjectOutputStream(fos);
List<film> list = new ArrayList<film>();
op.writeObject(list);
op.close();
}
}
public static void sell() throws Exception {
// 先判断 再购买
// 购买成功后还要把最新的信息序列化到文本
File file = new File("D:\\a\\t.txt");
Scanner sca = new Scanner(System.in);
System.out.println("请输入要观看的电影");
String name = sca.next();
System.out.println("请输入要观看的电影时间");
String date = sca.next();
System.out.println("请输入1.普通票2.学生票3.赠送票");
String price = sca.next();
System.out.println("请输入座位号 (几排)-(几号)");
String sno = sca.next();
film film1 = new film(name, date, sno);
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
List<film> list = (List<film>) ois.readObject();
ois.close();
boolean flag = false;
if (list.size() == 0) {
// 文本没内容
flag = false;
} else {
for (int j = 0; j < list.size(); j++) {
if (((list.get(j).getTitle()).equals(name)
&& (list.get(j).getTime()).equals(date) && (list.get(j)
.getSeat()).equals(sno))) {
flag = true;
System.out.println("此票已卖出,请重新选择");
sell();
break;
}
}
if (flag == false) {
System.out.println("购票成功");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream op = new ObjectOutputStream(fos);
list.add(film1);
op.writeObject(list);
System.out.println("list.size=" + list.size());
op.close();
}
}
}
// 管理员
public static void gly() throws Exception {
String con = "";
do {
Scanner sca = new Scanner(System.in);
System.out.println("1.删除\n2.添加\n3.修改");
int num = sca.nextInt();
switch (num) {
case 1:
delete();
break;
case 2:
add();
break;
case 3:
update();
break;
}
System.out.println("是否继续进行操作y\n ");
con = sca.next();
} while (con.equals("y"));
}
public static void delete() {
try {
// 1、得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2、从DOM工厂获得DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 3、解析XML文档,得到一个Document,即DOM树
Document doc = db.parse("src/login.xml");
Scanner sca = new Scanner(System.in);
System.out.println("输入要删除的节点序号");
String a = sca.next();
// 找到删除的节点
// 获取所有节点
NodeList roots = doc.getChildNodes();
Node root = roots.item(0);// 获取根节点
// System.out.println(root.getNodeName());
NodeList movies = root.getChildNodes();
for (int i = 0; i < movies.getLength(); i++) {
Node movie = movies.item(i);
NodeList items = movie.getChildNodes();
for (int j = 0; j < items.getLength(); j++) {
Node item = items.item(j);
if (item.getNodeName().equals("xh")) {
NodeList list = doc.getElementsByTagName("movie");
for (int u = 0; u < list.getLength(); u++) {
if (item.getTextContent().equals(a)) {
Element studentElement = (Element) list.item(u);
studentElement.getParentNode().removeChild(
studentElement);
}
// 删除
}
}
}
}
// 保存XML文件
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
// 设置编码类型
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult result = new StreamResult(new FileOutputStream(
"src/login.xml"));
// 把DOM树转换为XML文件
transformer.transform(domSource, result);
System.out.println("删除成功");
} catch (Exception e) {
e.printStackTrace();
}
}
// 添加
public static void add() {
try {
// 1、得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2、从DOM工厂获得DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 3、解析XML文档,得到一个Document,即DOM树
Document doc = db.parse("src/login.xml");
// 创建movie节点
cat();
Scanner input = new Scanner(System.in);
System.out.println("请输入序号:");
String a = input.next();
System.out.println("请输入名字:");
String b = input.next();
System.out.println("请输入电影的导演:");
String c = input.next();
System.out.println("请输入电影的演员:");
String d = input.next();
System.out.println("请输入电影的类型:");
String e = input.next();
System.out.println("请输入电影票的价格:");
String f = input.next();
System.out.println("请输入电影播放的时间:");
String g = input.next();
Element bookElement = doc.createElement("movie");
// bookElement.setAttribute("5");
// 创建title节点
Element titleElement = doc.createElement("xh");
titleElement.setTextContent(a);
// 添加父子关系
bookElement.appendChild(titleElement);
// 创建author节点
Element nameElement = doc.createElement("title");
nameElement.setTextContent(b);
// 添加父子关系
bookElement.appendChild(nameElement);
Element dyElement = doc.createElement("dy");
dyElement.setTextContent(c);
// 添加父子关系
bookElement.appendChild(dyElement);
Element actorElement = doc.createElement("actor");
dyElement.setTextContent(d);
// 添加父子关系
bookElement.appendChild(actorElement);
Element lxElement = doc.createElement("lx");
actorElement.setTextContent(e);
// 添加父子关系
bookElement.appendChild(lxElement);
// 创建price节点
Element priceElement = doc.createElement("price");
priceElement.setTextContent(f);
// 添加父子关系
bookElement.appendChild(priceElement);
Element timeElement = doc.createElement("time");
timeElement.setTextContent(g);
// 添加父子关系
bookElement.appendChild(timeElement);
// 找到根节点
Element booksElement = (Element) doc.getElementsByTagName("movies")
.item(0);
booksElement.appendChild(bookElement);
// 保存XML文件
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
// 设置编码类型
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
StreamResult result = new StreamResult(new FileOutputStream(
"src/login.xml"));
// 把DOM树转换为XML文件
transformer.transform(domSource, result);
System.out.println("添加成功");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void update() throws ParserConfigurationException,
SAXException, IOException, TransformerException {
// 1、得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2、从DOM工厂获得DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 3、解析XML文档,得到一个Document,即DOM树
Document doc = db.parse("src/login.xml");
Scanner sca = new Scanner(System.in);
System.out.println("输入要修改的节点序号");
String a = sca.next();
NodeList list = doc.getElementsByTagName("movie");
for (int i = 0; i < list.getLength(); i++) {
Element bookElement = (Element) list.item(i);
String scoreID = bookElement.getAttribute("xh");
System.out.println(scoreID);
if (scoreID.equals(a)) {
NodeList items = bookElement.getChildNodes();
for (int j = 0; j < items.getLength(); j++) {
Node node = items.item(j);
if (node.getNodeName().equals("price")) {
node.setTextContent("75");
}
}
}
}
// 保存XML文件
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
// 设置编码类型
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
StreamResult result = new StreamResult(new FileOutputStream(
"src/login.xml"));
// 把DOM树转换为XML文件
transformer.transform(domSource, result);
System.out.println("修改成功");
}
public static void log() throws Exception {
Scanner sca = new Scanner(System.in);
System.out.println("请输入员工账户:");
String str1 = sca.next();
System.out.println("请输入密码:");
String str2 = sca.next();
ArrayList<root> list = new ArrayList<root>();
// 1、得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2、从DOM工厂获得DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 3、解析XML文档,得到一个Document,即DOM树
Document doc = db.parse("src/pw.xml");
// 找到删除的节点
// 获取所有节点
NodeList roots = doc.getChildNodes();
Node root = roots.item(0);// 获取根节点
// System.out.println(root.getNodeName());
NodeList movies = root.getChildNodes();
for (int i = 0; i < movies.getLength(); i++) {
Node movie = movies.item(i);
NodeList items = movie.getChildNodes();
root r = new root();
for (int j = 0; j < items.getLength(); j++) {
Node item = items.item(j);
if (item.getNodeName().equals("name")) {
r.setName(item.getTextContent());
}
if (item.getNodeName().equals("role")) {
r.setRole(item.getTextContent());
}
if (item.getNodeName().equals("pwd")) {
r.setPwd(item.getTextContent());
}
}
if (r.getName() != null) {
list.add(r);
}
}
// for (int j = 0; j < list.size(); j++) {
// System.out.println(list.get(j).getName()+list.get(j).getRole()+list.get(j).getPwd());
// }
boolean flag = false;
for (int j = 0; j < list.size(); j++) {
if (list.get(j).getName().equals(str1)
&& (list.get(j).getPwd().equals(str2))) {
flag = true;
System.out.println("登录成功");
System.out.println("====================");
break;
}
}
if (flag == false) {
System.out.println("账号或密码不对,请重新输入");
log();
}
}
public static void admin() throws Exception {
Scanner sca = new Scanner(System.in);
System.out.println("请输入管理员账户:");
String a = sca.next();
System.out.println("请输入密码:");
String b = sca.next();
// 1、得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2、从DOM工厂获得DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 3、解析XML文档,得到一个Document,即DOM树
Document doc = db.parse("src/pw.xml");
// 找到删除的节点
// 获取所有节点
NodeList roots = doc.getChildNodes();
Node root = roots.item(0);// 获取根节点
// System.out.println(root.getNodeName());
NodeList movies = root.getChildNodes();
Boolean flag = false;// buzhenque
Boolean flag1 = false;
for (int i = 0; i < movies.getLength(); i++) {
Node movie = movies.item(i);
NodeList items = movie.getChildNodes();
for (int j = 0; j < items.getLength(); j++) {
Node item = items.item(j);
if (item.getNodeName().equals("name")) {
if (item.getTextContent().equals("admin")) {
if (a.equals(item.getTextContent())) {
flag = true;
System.out.println("管理员账户正确");
break;
}
}
}
//
if (item.getNodeName().equals("pwd")) {
if (item.getTextContent().equals("123")) {
if (b.equals(item.getTextContent())) {
flag1 = true;
break;
}
}
}
}
}
if (flag == false) {
System.out.println("账号不正确");
admin();
}
if (flag1 == false) {
System.out.println("密码不正确");
admin();
} else {
System.out.println("管理员密码正确");
}
}
}