这是本人Java入门时候的代码
注意:以下代码仅小白食用!
电影票购票系统是基于javaSE平台的本地化的管理系统。该系统基于MVC架构,数据层通过轻量级的数据库navicat实现;(界面显示通过Swing GUI绘制实现)界面显示通过控制台实现。中间业务逻辑层通过处理界面显示层的数据对数据库进行修改从而实现电影票购票的各项功能。
用户

点击进入

登陆进去

个人订单

用户信息修改

购票

选座

查看或者搜索电影信息

管理员

所有订单

用户管理

电影删除

电影添加

场次添加

场次删除

代码
登陆代码
//登陆界面
public class LoginUi extends JFrame implements ActionListener{
private JFrame jf = new JFrame(" 电影购票系统");
// private Container con = jf.getContentPane();
private JPanel contentPane;
private JTextField userName;
private JPasswordField userPass;
private JTextField code;
private JButton enroll = new JButton("注册");
private JButton login = new JButton("登录");
private JLabel code2 = new JLabel();
private JCheckBox choice1 = new JCheckBox("管理员");
private JCheckBox choice2 = new JCheckBox("用户");
private User u;
private final JLabel lblNewLabel_3 = new JLabel("请进行登录");
private ButtonGroup buttongroup = new ButtonGroup();
/**
* Launch the application.
*/
//= new JButton("注册");
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginUi frame = new LoginUi();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public LoginUi() {
setTitle("请先登录");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 880, 800);
contentPane = new JPanel();
// contentPane.setBackground(new Color(255, 255, 153));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewLabel = new JLabel("用户名");
lblNewLabel.setFont(new Font("方正舒体", Font.PLAIN, 30));
lblNewLabel.setBounds(10, 135, 91, 38);
contentPane.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("密码");
lblNewLabel_1.setFont(new Font("方正舒体", Font.PLAIN, 30));
lblNewLabel_1.setBounds(10, 200, 91, 49);
contentPane.add(lblNewLabel_1);
JLabel lblNewLabel_2 = new JLabel("验证码");
lblNewLabel_2.setFont(new Font("方正舒体", Font.PLAIN, 30));
lblNewLabel_2.setBounds(10, 279, 91, 49);
contentPane.add(lblNewLabel_2);
login.setFont(new Font("方正舒体", Font.PLAIN, 30));
login.setBounds(153, 560, 140, 70);
contentPane.add(login);
login.addActionListener(this);
enroll.setFont(new Font("方正舒体", Font.PLAIN, 30));
enroll.setBounds(450, 560, 140, 70);
contentPane.add(enroll);
enroll.addActionListener(this);
userName = new JTextField();
userName.setFont(new Font("方正舒体", Font.PLAIN, 35));
userName.setBounds(153, 134, 176, 39);
contentPane.add(userName);
userName.setColumns(10);
userPass = new JPasswordField();
userPass.setFont(new Font("方正舒体", Font.PLAIN, 35));
userPass.setColumns(10);
userPass.setBounds(153, 204, 176, 38);
contentPane.add(userPass);
code = new JTextField();
code.setFont(new Font("方正舒体", Font.PLAIN, 35));
code.setColumns(10);
code.setBounds(153, 283, 176, 31);
contentPane.add(code);
code2.setForeground(new Color(0, 0, 0));
code2.setFont(new Font("方正舒体", Font.PLAIN, 40));
code2.setBounds(382, 264, 214, 70);
code2.setText(code());
contentPane.add(code2);
choice1.setFont(new Font("方正舒体", Font.PLAIN, 30));
choice1.setBounds(6, 369, 124, 70);
contentPane.add(choice1);
// JCheckBox chckbxNewCheckBox_1 = new JCheckBox("用户");
choice2.setFont(new Font("方正舒体", Font.PLAIN, 30));
choice2.setBounds(189, 370, 124, 70);
choice2.setSelected(true);
contentPane.add(choice2);
buttongroup.add(choice1);
buttongroup.add(choice2);
// JRadioButton jrStu = new JRadioButton("用户");
// JRadioButton jrTea = new JRadioButton("管理");
// jrStu.setSelected(true)
lblNewLabel_3.setFont(new Font("方正舒体", Font.PLAIN, 50));
lblNewLabel_3.setBounds(335, 44, 278, 49);
contentPane.add(lblNewLabel_3);
// ImageIcon image=new ImageIcon("images/rc.jpg");
// JLabel label=new JLabel(image);//用图片构造一个JLabel标签
// label.setBounds(0, 50, 880, 800);
// contentPane.add(label);
ImageIcon image1=new ImageIcon("images/aaa.jpg");
JLabel label1=new JLabel(image1);//用图片构造一个JLabel标签
// label1.setBackground(new Color(255, 255, 255));
label1.setBounds(0, -27, 876, 780);
contentPane.add(label1);
}
private String code() {
int m = 0;
for (int i = 0; i < 4; i++) {
m *= 10;
m += (int) (Math.random() * 9 + 1);
}
return ((Integer) m).toString();
}
public void cleanUserInfo() {
this.userName.setText("");
this.userPass.setText("");
this.code.setText("");
}
public static void winMessage(String str) {// 提示窗口,有多个地方调用
JOptionPane.showMessageDialog(null, str, "提示",
JOptionPane.INFORMATION_MESSAGE);
}
public void actionPerformed(ActionEvent ac) {
// TODO Auto-generated method stub
if (ac.getSource() == this.login) {
String id = userName.getText();
String pswd = new String(userPass.getPassword());
if (id.equals("") || pswd.equals("")) {
LoginUi.winMessage("账号、密码不能为空!");
cleanUserInfo();
this.code2.setText(code());
} else {
String code1 = code.getText();
String code = code2.getText();
if (code1.equals(code)) {
int choice=0;
if (choice1.isSelected())
choice = 1;
else
choice = 0;
UserService userService = new UserServiceImpl();
User user = userService.login(new User(id, pswd, choice));
if (user == null) {
LoginUi.winMessage("用户名或密码不正确!登录失败!");
cleanUserInfo();
this.code2.setText(code());
} else {
user=userService.queryUser(user);
if (user.getuType()==0) {
new UserUi( user ,1);
} else if (user.getuType()==1) {
new AdminUi(user,1);
}
dispose();
LoginUi.winMessage("登录成功!");
}
} else {
LoginUi.winMessage("验证码不正确!");
cleanUserInfo();// 可以考虑不清空信息
this.code2.setText(code());
}
}
} else if (ac.getSource() == this.enroll) {
new RegisterUi();
dispose();// 点击按钮时,new一个frame,原先frame销毁
}
}
}
购票代码
public class BookingUi extends JFrame implements ActionListener{
private JPanel contentPane;
// private JButton btnNewButton = new JButton("支付");
private JButton btnNewButton_1 = new JButton("返回上一层");
private JButton reback = new JButton("退出登录");
private JComboBox comboBox = new JComboBox();
private UserService userservice = new UserServiceImpl();
private User u;
private Session se;
private Movie mo;
private Hall ha;
private List<Ticket> list;
private List<Integer> seatlist = new ArrayList<Integer>();
private final JTable table = new JTable();
private final JScrollPane scrollPane = new JScrollPane();
private final JButton btnNewButton_2 = new JButton("座位号");
private JButton btnNewButton_3 = new JButton("搜索");
private SessionService sessionservice=new SessionServiceImpl();
private TicketService ticketService = new TicketServiceImpl();
private MovieService movieservice=new MovieServiceImpl();
private List<Session> sessionlist;
private int row = -1;
private HallService hall = new HallServiceImpl();
private TextField lblRe = new TextField(20);
private StringBuffer sb = new StringBuffer();
private JButton btlist[];
private JLabel lblNewLabel_1 = new JLabel("选我吧!");
private JTextField textField;
/**
* Create the frame.
*/
public BookingUi(User u) {
this.u = u;
setTitle("购票");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 880, 800);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
sessionlist=sessionservice.queryAllSession(); //查询所有的场次
setContentPane(contentPane);
contentPane.setLayout(null);
btnNewButton_1.setBounds(593, 25, 120, 50);
contentPane.add(btnNewButton_1);
reback.setBounds(762, 21, 94, 59);
contentPane.add(reback);
JLabel lblNewLabel_3 = new JLabel("欢迎选票");
lblNewLabel_3.setForeground(new Color(255, 0, 255));
lblNewLabel_3.setFont(new Font("方正舒体", Font.BOLD | Font.ITALIC, 40));
lblNewLabel_3.setBounds(122, 21, 234, 54);
contentPane.add(lblNewLabel_3);
scrollPane.setBounds(10, 269, 851, 494);
contentPane.add(scrollPane);
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"\u5F71\u7247\u540D", "\u573A\u6B21\u7F16\u53F7", "\u5927\u5385\u7F16\u53F7", "\u7535\u5F71\u7F16\u53F7", "\u5F00\u59CB\u65F6\u95F4", "\u4EF7\u683C", "\u5269\u4F59\u5EA7\u4F4D"
}
)
{
/**
*
*/
private static final long serialVersionUID = 1L;
boolean[] columnEditables = new boolean[] {
false, false, false, false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
}
);
scrollPane.setViewportView(table);
fillsessiontable(sessionlist);//在table里添加数据
btnNewButton_2.setBounds(10, 136, 128, 51);
contentPane.add(btnNewButton_2);
JLabel lblNewLabel = new JLabel("电影名");
lblNewLabel.setFont(new Font("方正舒体", Font.PLAIN, 30));
lblNewLabel.setBounds(227, 136, 120, 51);
contentPane.add(lblNewLabel);
lblNewLabel_1.setForeground(new Color(0, 0, 255));
lblNewLabel_1.setFont(new Font("方正舒体", Font.BOLD | Font.ITALIC, 30));
lblNewLabel_1.setBounds(373, 136, 335, 51);
contentPane.add(lblNewLabel_1);
btnNewButton_1.addActionListener(this);
reback.addActionListener(this);
btnNewButton_2.addActionListener(this);
table.getTableHeader().setFont(new Font("楷体", 1, 20));
table.getTableHeader().setBackground(Color.orange);
table.getTableHeader().setReorderingAllowed(false); // 不可交换顺序
table.getTableHeader().setResizingAllowed(false);
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent me) {
sessiontablemousePressed(me);
}
private void sessiontablemousePressed(MouseEvent me) {
// TODO Auto-generated method stub
row = table.getSelectedRow();
System.out.println(row + "执行");
display();
}
});
ImageIcon image=new ImageIcon("images/bd.jpg");
JLabel lblNewLabel_4 = new JLabel(image);
lblNewLabel_4.setBounds(0, 0, 880, 800);
contentPane.add(lblNewLabel_4);
}
private void fillsessiontable(List<Session> sessionlist2) {
DefaultTableModel dtm=(DefaultTableModel) table.getModel();
dtm.setRowCount(0); // 设置成0行
Session session ;
int sessionRow=sessionlist2.size();
for(int i=0;i<sessionRow;i++) {
@SuppressWarnings("rawtypes")
Vector<Comparable> v=new Vector<Comparable>();
int MId = sessionlist2.get(i).getmId();
mo=movieservice.queryMovieById(MId);
v.add(mo.getmName());
v.add(sessionlist2.get(i).getsId());
v.add(sessionlist2.get(i).gethId());
v.add(sessionlist2.get(i).getmId());
v.add(sessionlist2.get(i).getBeginTime());
v.add(sessionlist2.get(i).getPrice());
v.add(sessionlist2.get(i).getRemain());
dtm.addRow(v);
// t++;
}
}
protected void buyActionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println(u.toString());
if (row == -1) {
JOptionPane.showMessageDialog(null, "请选择电影场次");
} else {
Hall h1 = hall.queryHallById(sessionlist.get(row).gethId());
new XuanZuo(u, sessionlist.get(row), h1);
dispose();
}
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("actionPerformed:"+e);
// TODO Auto-generated method stub
Object obj = e.getSource();
if(obj == btnNewButton_1)
{
new UserUi(u,1);
dispose();
}else if(e.getSource()==reback)
{
dispose();
new LoginUi();
}else if(obj == btnNewButton_2)
{
buyActionPerformed(e);
// dispose();
}
}
public void display() {
if (row != -1)
{
Movie mo = null;
int mId = (int) table.getModel().getValueAt(row, 3);
System.out.println(mId);
mo=movieservice.queryMovieById(mId);
System.out.print(mo.getmName());
lblNewLabel_1.setText(mo.getmName());
}
}
}
电影查看
package operateUi;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.table.DefaultTableModel;
import Ui.UserUi;
//import entity.Cinema;
import entity.Hall;
//import com.zyp.entity.Cinema;
//import com.zyp.entity.Hall;
import entity.Movie;
import entity.Session;
import entity.User;
//import impl.CinemaServiceImpl;
import impl.HallServiceImpl;
import impl.MovieServiceImpl;
import impl.SessionServiceImpl;
//import jiekou.CinemaService;
import jiekou.HallService;
import jiekou.MovieService;
import jiekou.SessionService;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.awt.Color;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
public class Filmchakan extends JFrame implements ActionListener{
private JPanel contentPane;
private JTable table;
private DefaultTableModel tableModel;
private List<Session> sessionlist;
private MovieService movie = new MovieServiceImpl();
private List<Movie> MMovielist;
private User user;
private JButton check_1 = new JButton("科幻电影");
private JButton check_2 = new JButton("爱情电影");
private JButton check_3 = new JButton("动作电影");
private JButton check_4 = new JButton("其他");
JButton btnNewButton_1 = new JButton("搜索");
private JTextField textField;
private int row = -1;
// private JLabel card3 = new JLabel();//科幻
/**
* Launch the application.
*/
// public static void main(String[] args) {
// EventQueue.invokeLater(new Runnable() {
// public void run() {
// try {
// Filmchakan frame = new Filmchakan();
// frame.setVisible(true);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// });
// }
/**
* Create the frame.
*/
public Filmchakan(User u) {
this.user = u;
setTitle("电影");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 880, 800);
contentPane = new JPanel();
contentPane.setBackground(new Color(240, 240, 240));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(0, 370, 866, 393);
contentPane.add(scrollPane);
JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane_1.setBounds(0, 148, 866, 182);
// scrollPane_1.setOpaque(false);
// scrollPane_1.getViewport().setOpaque(false);
contentPane.add(scrollPane_1);
JTextArea textArea = new JTextArea();
textArea.setForeground(new Color(0, 255, 255));
textArea.setFont(new Font("方正舒体", Font.BOLD | Font.ITALIC, 25));
textArea.setOpaque(false);
textArea.setLineWrap(true);
scrollPane_1.setViewportView(textArea);
scrollPane_1.setVisible(true);
scrollPane_1.setOpaque(false);
scrollPane_1.getViewport().setOpaque(false);
scrollPane_1.setBorder(null);
textArea.setEditable(false);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"电影编号", "影名", "语言", "地区", "海报地址","简介", "时长", "类型", "评分"
}
)
{
/**
*
*/
private static final long serialVersionUID = 1L;
boolean[] columnEditables = new boolean[] {
false, false, false, false,false,false,false,false,false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
scrollPane.setViewportView(table);
tableModel = (DefaultTableModel) table.getModel();
table.getTableHeader().setFont(new Font("楷体", 1, 15));
table.getTableHeader().setBackground(Color.GREEN);
table.getTableHeader().setReorderingAllowed(false); // 不可交换顺序
table.getTableHeader().setResizingAllowed(false);
table.setRowHeight(45);
table.setForeground(Color.BLACK); // 字体颜色
table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式
table.setSelectionForeground(Color.red); // 选中后字体颜色
table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景
table.setGridColor(Color.GRAY);
table.addMouseListener(new MouseAdapter() {
private int MId;
@Override
public void mousePressed(MouseEvent me) {
movietablemousePressed(me);
}
private void movietablemousePressed(MouseEvent me) {
// TODO Auto-generated method stub
row = table.getSelectedRow();
display();
}
private void display() {
// TODO Auto-generated method stub
if(row!=-1) {
Movie mo = null;
Integer mId = ((Integer)table.getValueAt(row, 0));
mo=movie.queryMovieById(mId);
textArea.setText(mo.getmDetail());
}
}
});
MMovielist=movie.queryAllMovie();
fillmovietable(MMovielist);
check_1.setFont(new Font("宋体", Font.PLAIN, 15));
check_1.setBounds(201, 100, 127, 45);
contentPane.add(check_1);
check_2.setFont(new Font("宋体", Font.PLAIN, 15));
check_2.setBounds(384, 100, 127, 45);
contentPane.add(check_2);
check_3.setFont(new Font("宋体", Font.PLAIN, 15));
check_3.setBounds(563, 100, 127, 45);
contentPane.add(check_3);
JButton btnNewButton = new JButton("返回");
btnNewButton.setBounds(758, 18, 108, 37);
contentPane.add(btnNewButton);
check_4.setFont(new Font("宋体", Font.PLAIN, 15));
check_4.setBounds(739, 100, 127, 45);
contentPane.add(check_4);
textField = new JTextField();
textField.setBounds(28, 18, 483, 37);
contentPane.add(textField);
textField.setColumns(10);
btnNewButton_1.setFont(new Font("方正舒体", Font.BOLD | Font.ITALIC, 25));
btnNewButton_1.setBounds(555, 17, 108, 38);
contentPane.add(btnNewButton_1);
ImageIcon image=new ImageIcon("images/hao.jpg");
JLabel label=new JLabel(image);//用图片构造一个JLabel标签
label.setBounds(0, -80, 866, 762);
contentPane.add(label);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
new UserUi(user,1);
}
});
List<Session> sesslist =new ArrayList<Session>();
check_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
serachactionPerformed1(e);
}
});
check_2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
serachactionPerformed2(e);
}
});
check_3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
serachactionPerformed3(e);
}
});
check_4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
serachactionPerformed4(e);
}
});
btnNewButton_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
serachactionPerformed5(e);
}
});
}
protected void serachactionPerformed1(ActionEvent e) {
// TODO Auto-generated method stub
List<Movie> movielist =new ArrayList<Movie>();
List<Movie> movielist1 = movie.queryMovieByType("科幻");
movielist.addAll(movielist1);
MMovielist = movielist;
fillmovietable(MMovielist);
}
protected void serachactionPerformed2(ActionEvent e) {
// TODO Auto-generated method stub
List<Movie> movielist =new ArrayList<Movie>();
List<Movie> movielist1 = movie.queryMovieByType("爱情");
movielist.addAll(movielist1);
MMovielist = movielist;
fillmovietable(MMovielist);
}
protected void serachactionPerformed3(ActionEvent e) {
// TODO Auto-generated method stub
List<Movie> movielist =new ArrayList<Movie>();
List<Movie> movielist1 = movie.queryMovieByType("动作");
movielist.addAll(movielist1);
MMovielist = movielist;
fillmovietable(MMovielist);
}
protected void serachactionPerformed4(ActionEvent e) {
// TODO Auto-generated method stub
List<Movie> movielist =new ArrayList<Movie>();
List<Movie> movielist1 = movie.queryMovieByType("其他");
movielist.addAll(movielist1);
MMovielist = movielist;
fillmovietable(MMovielist);
}
protected void serachactionPerformed5(ActionEvent e) {
// TODO Auto-generated method stub
List<Movie> movielist =new ArrayList<Movie>();
String mName=textField.getText();
List<Movie> movielist1 = movie.queryMovieBymovieName(mName);
movielist.addAll(movielist1);
MMovielist = movielist;
fillmovietable(MMovielist);
}
private void fillmovietable(List<Movie> movielist2) {
// TODO Auto-generated method stub
DefaultTableModel dtm=(DefaultTableModel) table.getModel();
dtm.setRowCount(0); // 设置成0行
int sessionRow=movielist2.size();
for(int i=0;i<sessionRow;i++) {
Vector<Object> v=new Vector<Object>();
v.add(movielist2.get(i).getmId());
v.add(movielist2.get(i).getmName());
v.add(movielist2.get(i).getMlanguage());
v.add(movielist2.get(i).getMlocality());
v.add(movielist2.get(i).getmPicaddress());
v.add(movielist2.get(i).getmDetail());
v.add(movielist2.get(i).getmDuration());
v.add(movielist2.get(i).getmType());
v.add(movielist2.get(i).getmGrade());
dtm.addRow(v);
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object obj = e.getSource();
}
}
选座
package operateUi;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import Ui.UserUi;
import entity.Hall;
import entity.Movie;
import entity.Session;
import entity.Ticket;
import entity.User;
import impl.SessionServiceImpl;
import impl.TicketServiceImpl;
import impl.UserServiceImpl;
import jiekou.SessionService;
import jiekou.TicketService;
import jiekou.UserService;
public class XuanZuo extends JFrame implements ActionListener {
private JPanel p1 = new JPanel();
private JPanel p2 = new JPanel();
private JPanel p3 = new JPanel();
private JButton btlist[];
private JButton reset = new JButton("重置");
private JButton jbuy = new JButton("购买");
private JButton returnuser = new JButton("返回主页");
private JButton returnlast = new JButton("返回上一层");
private TextField lblRe = new TextField(20);
private UserService userservice = new UserServiceImpl();
private SessionService sessionservice = new SessionServiceImpl();
private TicketService ticketService = new TicketServiceImpl();
private int num;
private User u;
private Session se;
private Movie mo;
private Hall ha;
private List<Ticket> list;
private List<Integer> seatlist = new ArrayList<Integer>();//整型数据
private StringBuffer sb = new StringBuffer();//字符串缓冲区
public XuanZuo(User u, Session se, Hall ha) {
this.u = u;
this.se = se;
// this.mo = mo;
this.ha = ha;
list = ticketService.queryAllTicketsId(se.getsId());
jbuy.setFont(new Font("楷体", Font.BOLD, 20));
returnuser.setFont(new Font("楷体", Font.BOLD, 20));
returnlast.setFont(new Font("楷体", Font.BOLD, 20));
reset.setFont(new Font("楷体", Font.BOLD, 20));
lblRe.setFont(new Font("楷体", Font.BOLD, 20));
this.setSize(1000, 1000);
num = ha.getCapacity();//获取某一个被选中的大厅的容量
int rows = (num + 9) / 10;//目的是生成足够的行数然后可以显示出座位选择的编号
btlist = new JButton[num];//生成座位按钮数组
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(p1, BorderLayout.CENTER);
this.getContentPane().add(p2, BorderLayout.SOUTH);
p1.setLayout(new GridLayout(rows, 10, 20, 10));
p2.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20));
p3.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20));
for (int i = 0; i < num; i++) {
btlist[i] = new JButton(i + 1 + "");//给按钮添加名字,及座位编号
btlist[i].setBackground(Color.WHITE);//给原始座位添加颜色
btlist[i].addActionListener(this);//注册监听器
p1.add(btlist[i]);
}
for (Ticket lis : list) {
for (int i = 0; i < num; i++) {
if (lis.getSeat() == (i + 1)) {//获取已有票的人选择的座位号
btlist[i].setBackground(Color.ORANGE);//将相应座位号设置为橙色
btlist[i].setEnabled(false);//设置按钮不可选状态
}
}
}
reset.addActionListener(this);
jbuy.addActionListener(this);
returnuser.addActionListener(this);
returnlast.addActionListener(this);
p3.add(returnuser);
p3.add(returnlast);
p2.add(reset);
p2.add(lblRe);
p2.add(jbuy);
p2.add(p3);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object obj = e.getSource();
for (int i = 0; i < num; i++) {
if (obj == btlist[i]) {
sb.append(i + 1 + " ");
btlist[i].setBackground(Color.ORANGE);//购票时将选择的座位号设置为橙色
seatlist.add(Integer.parseInt(btlist[i].getText()));
btlist[i].setEnabled(false);//设置不可选状态
lblRe.setText(sb + "");
}
}
if (obj == reset) {
sb.setLength(0);
if (seatlist.size() > 0) {//重选状态设置
for (Integer seat : seatlist) {
btlist[seat - 1].setEnabled(true);//按钮重新设置可选状态
btlist[seat - 1].setBackground(Color.WHITE);//按钮颜色重新设置为白色
lblRe.setText(sb + "");
}
seatlist.clear();
}
}
if (obj == returnuser) {
new UserUi(u, 1);
dispose();
}
if (obj == returnlast) {
new BookingUi(u);
dispose();
}
if (obj == jbuy) {//购票
double money;
Ticket t2;
if (seatlist.size() > 0) {//判断有没有选到座位
money = seatlist.size() * se.getPrice();
if(seatlist.size()>=5) {//如果买了五张票或者以上,会有九折优惠
money=money*0.9;
}
if (u.getBalance() - money >= 0) {//判断你有没有钱买
for (Integer seat : seatlist) {
t2 = new Ticket(u.getUid(), se.getsId(), seat);
ticketService.addTicket(t2);//买到了票就加进去
}
double remoney=u.getBalance() - money;
u.setBalance(u.getBalance() - money);//余额更新
if (userservice.updateUser(u)) {
se.setRemain(se.getRemain() - seatlist.size());
sessionservice.updateSession(se);//对场次状态更新,即座位号的更新
JOptionPane.showMessageDialog(null, "购买成功,余额:"+remoney);
new XuanZuo(u,se,ha);
dispose();
} else {
JOptionPane.showMessageDialog(null, "系统错误");
}
} else {
JOptionPane.showMessageDialog(null, "余额不足");
}
} else {
JOptionPane.showMessageDialog(null, "请选择座位");
}
}
}
}
如有需要可联系发全部源代码!
&spm=1001.2101.3001.5002&articleId=139481705&d=1&t=3&u=f6b846b705034252bc068a33dfbc06af)
882

被折叠的 条评论
为什么被折叠?



