package util;
import java.io.FileOutputStream;
import java.io.IOException;
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.NodeList;
import org.xml.sax.SAXException;
public class DomUtil {
public static Document getDocument(String fileAddress){
Document doc=null;
try {
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
doc=db.parse(fileAddress);
} catch (Exception e) {
e.printStackTrace();
}
if(doc!=null)
return doc;
else return null;
}
public static void saveDocument(Document doc,String fileAddress){
//保存
try{
TransformerFactory tf=TransformerFactory.newInstance();
Transformer t=tf.newTransformer();
DOMSource doms=new DOMSource(doc);//获得数据源
//设置字符编码类型
t.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult result =new StreamResult(new FileOutputStream(fileAddress));
t.transform(doms, result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package test;
import service.impl.Login;
public class Start {
public static void main(String[] args) { new Login().start();
}
}
package service;
public interface UserService {
public void menu();
//查看全部电影
public void getAll();
//通过电影名称查询电影
public void getByName();
//通过放映时间查询电影
public void getByItem();
//购买普通票
public void byTicket();
//购买学生折扣票
public void byDiscount();
//购买免费票优惠券
public void byFree();
}
package service;
public interface AdminService {
//菜单
public void menu();
//查看所有
public void getAll();
//添加电影
public void addFilm();
//删除电影
public void delFilm();
//更新电影
public void upFilm();
//售票查询
public void getTicket();
}
package service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import dao.impl.FilmDaoImpl;
import entity.Film;
import entity.Seat;
import service.UserService;
public class UserLogin implements UserService {
Scanner input=new Scanner(System.in);
List
listFilm=new ArrayList();
List listSeat=new ArrayList();
FilmDaoImpl fdi=new FilmDaoImpl();
public void menu() {
System.out.println("选择你的操作:1:查看所有电影;2:按电影名查询;3:按播放时间查询;" +
"4:购票;5:返回上一层;6:退出;");
int chose=input.nextInt();
switch(chose){
case 1:getAll() ;break;
case 2:getByName();break;
case 3:getByItem();break;
case 4:byTicket();break;
case 5:break;
case 6:System.exit(0);break;
default :break;
}
}
public void getAll() {
System.out.println("序号"+"\t"+"电影名称"+"\t"+"英文名称"+"\t"+"导演"+"\t"+"演员"
+"\t"+"影片类型"+"\t"+"票价"+"\t"+"播放时间");
listFilm=fdi.getAll();
for(Film film:listFilm){
System.out.println(film.getId()+"\t"+film.getName()+"\t"
+film.getPoster()+"\t"+film.getDirector()+"\t"
+film.getAcotr()+"\t"+film.getType()+"\t"
+film.getPrice()+"\t"+film.getItem());
}
listFilm.clear();
menu();
}
public void getByName() {
System.out.println("请输入要查询到电影:");
String name=input.next();
listFilm=fdi.getByName(name);
if (listFilm != null) {
System.out.println("序号"+"\t"+"电影名称"+"\t"+"英文名称"+"\t"+"导演"+"\t"+"演员"
+"\t"+"影片类型"+"\t"+"票价"+"\t"+"播放时间");
for (Film film : listFilm) {
System.out.println(film.getId() + "\t" + film.getName() + "\t"
+ film.getPoster() + "\t" + film.getDirector() + "\t"
+ film.getAcotr() + "\t" + film.getType() + "\t"
+ film.getPrice() + "\t" + film.getItem());
}
listFilm.clear();
menu();
}
else{
System.out.println("不存在该电影");
this.getByName();
}
}
public void getByItem() {
System.out.println("请输入时间段:");
String Item=input.next();
//listFilm=fdi.getByItem("15:00");
listFilm=fdi.getByItem(Item);
if (listFilm != null) {
System.out.println("序号"+"\t"+"电影名称"+"\t"+"英文名称"+"\t"+"导演"+"\t"+"演员"
+"\t"+"影片类型"+"\t"+"票价"+"\t"+"播放时间");
for (Film film : listFilm) {
System.out.println(film.getId() + "\t" + film.getName() + "\t"
+ film.getPoster() + "\t" + film.getDirector() + "\t"
+ film.getAcotr() + "\t" + film.getType() + "\t"
+ film.getPrice() + "\t" + film.getItem());
}
listFilm.clear();
}
else{
System.out.println("该时间段没有电影");
}
menu();
}
public void byTicket() {
System.out.println("请输入电影名:");
String name=input.next();
System.out.println("请输入播放时间:");
String item=input.next();
// 返回该电影的座位信息
//Seat seat = fdi.getSeates("中国功夫", "15:00");
Film film=new Film(name, item);
Seat seat = fdi.getSeates(film);
if (seat != null) {
String ticketType = null;
boolean flagTicketType=true;
while(flagTicketType){
System.out.println("请选择票的种类:1:普通票;2:学生票;3:免费票;");
int chose = input.nextInt();
switch (chose) {
case 1:
ticketType = "普通票";
flagTicketType=false;
break;
case 2:
ticketType = "学生票";
flagTicketType=false;
break;
case 3:
ticketType = "免费票";
flagTicketType=false;
break;
default:
System.out.println("输入错误选项!!!");
break;
}
}
printSeat(seat);//输出座位信息
boolean flagIndex=true;
String index=null;
while(flagIndex){
System.out.println("请选择座位:");
index = input.next();
if(seat.isSold(index)){//该座位已经卖出
System.out.println("该座位已经卖出!!!");
}
else{
flagIndex=false;
}
}
fdi.buyTicket(film, index, ticketType);
System.out.println("购票成功!!!");
menu();
}
else{
System.out.println("该电影不存在,或该电影没有此播放时间!!!");
this.byTicket();
}
}
@Override
public void byDiscount() {
// TODO Auto-generated method stub
}
@Override
public void byFree() {
// TODO Auto-generated method stub
}
//座位信息
public void printSeat(Seat seat){
System.out.println("************************屏幕************************");
for(int i=0;i<7;i++){
for(int j=0;j<7;j++){
System.out.print(seat.getSeats()[i][j]+"\t");
}
System.out.println();
}
}
}
package service.impl;
import java.util.Scanner;
import service.AdminService;
import entity.AdminUser;
public class Login {
Scanner input =new Scanner(System.in);
public void start(){
System.out.println("请选择登陆方式:1:管理员登录;2:普通用户登录;3:退出;");
int chose=input.nextInt();
switch(chose){
case 1:
/*AdminUser admin=new AdminUser();
System.out.println("请输入用户名:");
String name=input.next();
System.out.println("请输入密码:");
String pwd=input.next();
if(name.equals(admin.getUserName())&&pwd.equals(admin.getUesrPassword()))*/
new AdminLogin().menu();
//else System.out.println("用户名和密码不匹配!!!");
break;
case 2:
new UserLogin().menu();
break;
case 3:System.exit(0);break;
default :
System.out.println("输入错误的选择方式!!!");
this.start();
break;
}
this.start();
}
}
package service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import dao.impl.FilmDaoImpl;
import entity.Film;
import entity.Seat;
import service.AdminService;
public class AdminLogin implements AdminService{
Scanner input=new Scanner(System.in);
List list=new ArrayList();
FilmDaoImpl fdi=new FilmDaoImpl();
public void menu() {
System.out.println("选择你的操作:1:查看;2:添加;3:删除电影;" +
"4:修改电影;5:售票查询;6:返回上一层;7:退出;");
int chose=input.nextInt();
switch(chose){
case 1:getAll() ;break;
case 2:addFilm();break;
case 3:delFilm();break;
case 4:upFilm();break;
case 5:getTicket();break;
case 6:break;
case 7:System.exit(0);break;
default :
System.out.println("输入错误的选择方式!!!");
this.menu();
break;
}
}
public void getAll() {
int num=0;
System.out.println("序号"+"\t"+"电影名称"+"\t"+"英文名称"+"\t"+"导演"+"\t"+"演员"
+"\t"+"影片类型"+"\t"+"票价"+"\t"+"播放时间");
list=fdi.getAll();
//System.out.println(list.size());
for(Film film:list){
num++;
System.out.println(film.getId()+"\t"+film.getName()+"\t"
+film.getPoster()+"\t"+film.getDirector()+"\t"
+film.getAcotr()+"\t"+film.getType()+"\t"
+film.getPrice()+"\t"+film.getItem());
}
list.clear();
menu();
}
public void addFilm() {
System.out.println("请输入电影名称:");
String name=input.next();
System.out.println("请输入英文名称:");
String poster=input.next();
System.out.println("请输入导演:");
String director=input.next();
System.out.println("请输入演员:");
String acotr=input.next();
System.out.println("请输入影片类型:");
String type=input.next();
System.out.println("请输入票价:");
String price=input.next();
System.out.println("请输入播放时间:");
String item=input.next();
Film film=new Film(name, poster, director, acotr, type, price, item);
//Film film=new Film("东成西就", "e-w", "刘镇伟", "郑伊健", "喜剧", "150", "15:50");
fdi.addFilm(film);
System.out.println("添加成功!!!");
menu();
}
public void delFilm() {
System.out.println("请输入删除的电影名称:");
String name=input.next();
System.out.println("请输入播放时间(输入all,则全部删除):");
String item=input.next();
Film film=new Film(name, item);
boolean exist=fdi.delateFilm(film);
//boolean exist=fdi.delateFilm("非常完美",time);
if(exist){
System.out.println("删除成功!!!");
menu();
}
else{
System.out.println("该电影不存在,或该电影没有此播放时间!!!");
this.delFilm();
}
}
public void upFilm() {
System.out.println("请输入要修改的电影名称:");
String name=input.next();
System.out.println("请输入要修改的放映时间:");
String item=input.next();
System.out.println("请输入要修改的列表名称:");
String property=input.next();
System.out.println("请输入该列表修改后的值:");
String value=input.next();
//fdi.updateFilm("蜘蛛侠","14:00","播放时间","15:00");
//fdi.updateFilm("蜘蛛侠","14:00","影片类型","搞笑");
Film film=new Film(name, item);
int message=fdi.updateFilm(film,property,value);
switch(message){
case 0:System.out.println("更新成功!!!");menu();break;
case 1:System.out.println("不存在该电影;");this.upFilm();break;
case 2:System.out.println("不存在此电影的该播放时间;");this.upFilm();break;
case 3:System.out.println("不存在该属性列表;");this.upFilm();break;
}
}
public void getTicket(){
System.out.println("请输入电影名称:");
String name=input.next();
System.out.println("请输入电影播放时间:");
String item=input.next();
//Film film=new Film("中国功夫", "15:00");
Film film=new Film(name,item);
Seat seat=fdi.getTicket(film);
if (seat != null) {
printSeat(seat);
System.out.println("普通票:" + seat.getTicket().getOrdinaryNum());
System.out.println("学生票:" + seat.getTicket().getStudentNum());
System.out.println("免费票:" + seat.getTicket().getFreeNum());
menu();
}
else{
System.out.println("该电影不存在,或该电影没有此播放时间!!!");
this.getTicket();
}
}
//座位信息
public void printSeat(Seat seat){
System.out.println("***************屏幕*****************");
for(int i=0;i<7;i++){
for(int j=0;j<7;j++){
System.out.print(seat.getSeats()[i][j]+"\t");
}
System.out.println();
}
}
}
package entity;
public class Ticket {
private String type;
private int ordinaryNum=0;
private int studentNum=0;
private int freeNum=0;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
switch(type){
case "普通票":
ordinaryNum++;
break;
case "学生票":
studentNum++;
break;
case "免费票":
freeNum++;
break;
default:break;
}
}
public int getOrdinaryNum() {
return ordinaryNum;
}
public void setOrdinaryNum(int ordinaryNum) { this.ordinaryNum = ordinaryNum;
}
public int getStudentNum() {
return studentNum;
}
public void setStudentNum(int studentNum) {
this.studentNum = studentNum;
}
public int getFreeNum() {
return freeNum;
}
public void setFreeNum(int freeNum) {
this.freeNum = freeNum;
}
}
package entity;
public class Seat {
private String index;
private Ticket ticket;
private Film film;
private String[][] seats=new String [7][7];
public Seat(String index, Ticket ticket, Film film) { this.index = index;
this.ticket = ticket;
this.film = film;
}
public Seat(){
for(int i=0;i<7;i++){
for(int j=0;j<7;j++){
seats[i][j]=(i+1)+"-"+(j+1);
}
}
}
public String getIndex() {
return index;
}
public void setIndex(String index) {
String[] str=index.split("-");
setSeats(Integer.parseInt(str[0]),Integer.parseInt(str[1]));
}
public Ticket getTicket() {
return ticket;
}
public void setTicket(Ticket ticket) {
this.ticket = ticket;
}
public Film getFilm() {
return film;
}
public void setFilm(Film film) {
this.film = film;
}
private void setSeats(int x, int y) {
seats[x-1][y-1]="已售";
}
public String[][] getSeats() {
return seats;
}
public boolean isSold(String index){
String[] str=index.split("-");
int a=Integer.parseInt(str[0]);
int b=Integer.parseInt(str[1]);
if(!seats[a-1][b-1].equals(index)){
return true;
}
else
return false;
}
}
package entity;
public class Film {
private int id; //序号
private String Name; //电影名称
private String Poster; //英文名
private String Director; //导演
private String Acotr; //演员
private String Type; //电影类型
private String Price; //电影价格
//private String Schedule; //时刻表
private String Item; //放映时间
public Film(){
}
public Film(String name,String item){
Name = name;
Item = item;
}
public Film(int id, String name, String poster, String director, String acotr, String type, String price, String item) { this.id = id;
Name = name;
Poster = poster;
Director = director;
Acotr = acotr;
Type = type;
Price = price;
Item = item;
}
public Film(String name, String poster, String director,
String acotr, String type, String price, String item) { Name = name;
Poster = poster;
Director = director;
Acotr = acotr;
Type = type;
Price = price;
Item = item;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) { Name = name;
}
public String getPoster() {
return Poster;
}
public void setPoster(String poster) { Poster = poster;
}
public String getDirector() {
return Director;
}
public void setDirector(String director) { Director = director;
}
public String getAcotr() {
return Acotr;
}
public void setAcotr(String acotr) {
Acotr = acotr;
}
public String getType() {
return Type;
}
public void setType(String type) {
Type = type;
}
public String getPrice() {
return Price;
}
public void setPrice(String price) {
Price = price;
}
public String getItem() {
return Item;
public void setItem(String item) {
Item = item;
}
}
package entity;
public class AdminUser {
private String userName;
private String uesrPassword;
public AdminUser(){
this.userName="admin";
this.uesrPassword="admin";
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUesrPassword() {
return uesrPassword;
}
public void setUesrPassword(String uesrPassword) { this.uesrPassword = uesrPassword;
}
}
package dao;
import java.util.List;
import entity.Film;
import entity.Seat;
public interface FilmDao {
public List getAll();
* 用户操作
*/
public List getByName(String name);
public List getByItem(String time);
public void buyTicket(Film film,String index,String ticketType);
public Seat getSeates(Film film);
/*
* 管理员操作
*/
public void addFilm(Film film);
public boolean delateFilm(Film film);
public int updateFilm(Film film,String property,String value);
public List selectFilm();
public Seat getTicket(Film film);
}
package dao.impl;
import java.util.ArrayList;
import java.util.List;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import util.DomUtil;
import dao.FilmDao;
import entity.Film;
import entity.Seat;
import entity.Ticket;
public class FilmDaoImpl implements FilmDao{
List listFilm=new ArrayList();
List listSeat=new ArrayList();
String filmsAddress="src/films.xml";
String ticketsAddress="src/tickets.xml";
Document docFilms=DomUtil.getDocument(filmsAddress);
NodeList list=docFilms.getElementsByTagName("Movie");
Document docTickets=DomUtil.getDocument(ticketsAddress);
NodeList listTickets=docTickets.getElementsByTagName("Name");
public List getAll() {
int id=0;
for(int i=0;i getByName(String name) {
boolean exist=false;
int id=0;
for(int i=0;i getByItem(String time){
boolean exist=false;
int id=0;
for(int i=0;i selectFilm() {
return null;
}
public boolean isExist(Film film){
for (int i = 0; i < list.getLength(); i++) { // 遍历Movie节点
NodeList nameList = ((Element) list.item(i)).getElementsByTagName("Name");
Node nameNode = nameList.item(0);
String moveName = nameNode.getTextContent();
if (film.getName().equals(moveName)) { // 找到匹配的电影名称
boolean existItem = false;
NodeList itemList = ((Element) list.item(i)).getElementsByTagName("Item");
for (int j = 0; j < itemList.getLength(); j++) { // 遍历该电影的每个Item节点
if (itemList.item(j) instanceof Element) {
String textItem = itemList.item(j).getTextContent();
if (textItem.equals(film.getItem())) { // 找到该场次
existItem = true;
}
}
}
if (!existItem) {// 没找到该电影播放时间
return false;
}
return true;// 因为有唯一值,所以找到该电影后,不再往下寻找,直接返回true即可
}
}
return false;// 没有找到该电影
}
}
让子弹飞
fly
姜文
葛优
喜剧
100
- 00:00
- 13:00
非常完美
Sophies
金依萌
范冰冰
喜剧
75
- 10:00
- 13:00
集结号
horn
冯小刚
张涵予
战争
90
- 09:30
蜘蛛侠
Spider
山姆
托比
科幻
120
- 11:02
- 15:00
中国功夫
KungFu
周星驰
周星驰
动作
150
- 15:00
- 19:00
- 21:25
东成西就
e-w
刘镇伟
郑伊健
喜剧
150
- 15:50
11
11
11
11
11
11
- 11