Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)

网友投稿 297 2022-09-03


Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)

目录一、系统介绍1.开发环境2.技术选型3.系统功能3.1.用户3.2.管理员4.数据库5.工程截图二、系统展示 1.注册系统2.登录系统3.用户-欢迎界面4.用户-影片排行榜5.用户-购票信息6.用户-场次信息8.用户-搜索电影9.管理员-首页10.管理员-对用户进行操作11.管理员-对影院进行操作12.管理员-对场厅进行操作13.管理员-对场次进行操作14.管理员-对电影进行操作三、部分代码AdminMainView.javaMovieInfoView.javaoperCinemaView.javaoperHallView.java

一、系统介绍

1.开发环境

开发工具:Eclipse2021

JDK版本:jdk1.8

mysql版本:8.0.13

2.技术选型

Java+Swing+Mysql

3.系统功能

注册系统,登录系统;

3.1.用户

1.欢迎页:修改用户姓名和密码;2.碟片排行榜:影片的详细信息;3.购票信息:已购买车票的信息;4.场次信息:电影场次的详细信息;5.充值:充值余额;6.搜索电影:搜索电影的详细信息;

3.2.管理员

1.对用户进行操作:用户信息的查询、删除;2.对影院进行操作:影院信息的查询、删除、增加;3.对场厅进行操作:场厅信息的查询、删除、增加;4.对场次进行操作:场次信息的查询、删除、增加;5.对电影进行操作:电影信息的查询、删除、增加;

4.数据库

/*

Navicat Premium Data Transfer

Source Server : MySQL

Source Server Type : MySQL

Source Server Version : 80013

Source Host : 127.0.0.1:3306

Source Schema : swing_movie_house

Target Server Type : MySQL

Target Server Version : 80013

File Encoding : 65001

Date: 21/09/2021 12:33:55

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for cinema

-- ----------------------------

DROP TABLE IF EXISTS `cinema`;

CREATE TABLE `cinema` (

`cinema_id` int(11) NOT NULL AUTO_INCREMENT,

`cname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

PRIMARY KEY (`cinema_id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of cinema

-- ----------------------------

INSERT INTO `cinema` VALUES (6, '光明影院', '湖北武汉');

INSERT INTO `cinema` VALUES (7, '大同影院', '湖南长沙');

-- ----------------------------

-- Table structure for comment

-- ----------------------------

DROP TABLE IF EXISTS `comment`;

CREATE TABLE `comment` (

`comment_id` int(11) NOT NULL AUTO_INCREMENT,

`user_id` int(11) NOT NULL,

`movie_id` int(11) NOT NULL,

`content` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`datetime` datetime(0) NULL DEFAULT NULL,

PRIMARY KEY (`comment_id`) USING BTREE,

INDEX `comment_ibfk_1`(`user_id`) USING BTREE,

INDEX `comment_ibfk_2`(`movie_id`) USING BTREE,

CONSTRAINT `comment_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE RESTRICT,

CONSTRAINT `comment_ibfk_2` FOREIGN KEY (`movie_id`) REFERENCES `movie` (`movie_id`) ON DELETE CASCADE ON UPDATE RESTRICT

) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of comment

-- ----------------------------

-- ----------------------------

-- Table structure for hall

-- ----------------------------

DROP TABLE IF EXISTS `hall`;

CREATE TABLE `hall` (

`hall_id` int(11) NOT NULL AUTO_INCREMENT,

`hname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`capacity` int(11) NULL DEFAULT NULL,

`cinema_id` int(11) NOT NULL,

PRIMARY KEY (`hall_id`) USING BTREE,

INDEX `hall_ibfk_1`(`cinema_id`) USING BTREE,

CONSTRAINT `hall_ibfk_1` FOREIGN KEY (`cinema_id`) REFERENCES `cinema` (`cinema_id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of hall

-- ----------------------------

INSERT INTO `hall` VALUES (12, '1厅', 50, 6);

-- ----------------------------

-- Table structure for movie

-- ----------------------------

DROP TABLE IF EXISTS `movie`;

CREATE TABLE `movie` (

`movie_id` int(11) NOT NULL AUTO_INCREMENT,

`mname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '电影类型',

`detail` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`duration` int(11) NULL DEFAULT NULL,

`img` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '保存图片名称',

PRIMARY KEY (`movie_id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of movie

-- ----------------------------

INSERT INTO `movie` VALUES (12, '八佰', '抗战', '八佰', 120, NULL);

INSERT INTO `movie` VALUES (13, '春秋', '历史', '春秋', 150, NULL);

INSERT INTO `movie` VALUES (15, '1', '1', '1', 1, NULL);

-- ----------------------------

-- Table structure for session

-- ----------------------------

DROP TABLE IF EXISTS `session`;

CREATE TABLE `session` (

`session_id` int(11) NOT NULL AUTO_INCREMENT,

`hall_id` int(11) NOT NULL,

`cinema_id` int(11) NOT NULL,

`movie_id` int(11) NOT NULL,

`starttime` varchar(11) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`price` double NULL DEFAULT NULL,

`remain` int(11) NULL DEFAULT NULL,

PRIMARY KEY (`session_id`) USING BTREE,

INDEX `hall_id`(`hall_id`) USING BTREE,

INDEX `cinema_id`(`cinema_id`) USING BTREE,

INDEX `movie_id`(`movie_id`) USING BTREE,

CONSTRAINT `session_ibfk_1` FOREIGN KEY (`hall_id`) REFERENCES `hall` (`hall_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,

CONSTRAINT `session_ibfk_2` FOREIGN KEY (`cinema_id`) REFERENCES `cinema` (`cinema_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,

CONSTRAINT `session_ibfk_3` FOREIGN KEY (`movie_id`) REFERENCES `movie` (`movie_id`) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of session

-- ----------------------------

INSERT INTO `session` VALUES (14, 12, 6, 12, '09:00:00', 50, 47);

-- ----------------------------

-- Table structure for ticket

-- ----------------------------

DROP TABLE IF EXISTS `ticket`;

CREATE TABLE `ticket` (

`ticket_id` int(11) NOT NULL AUTO_INCREMENT,

`user_id` int(11) NOT NULL,

`movie_id` int(11) NOT NULL,

`session_id` int(11) NOT NULL,

`seat` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

PRIMARY KEY (`ticket_id`) USING BTREE,

INDEX `ticket_ibfk_1`(`user_id`) USING BTREE,

INDEX `ticket_ibfk_2`(`movie_id`) USING BTREE,

INDEX `ticket_ibfk_3`(`session_id`) USING BTREE,

CONSTRAINT `ticket_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `ticket_ibfk_2` FOREIGN KEY (`movie_id`) REFERENCES `movie` (`movie_id`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `ticket_ibfk_3` FOREIGN KEY (`session_id`) REFERENCES `session` (`session_id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE = InnoDB AUTO_INCREMENT = 64 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of ticket

-- ----------------------------

INSERT INTO `ticket` VALUES (64, 1, 12, 14, '3');

-- ----------------------------

-- Table structure for user

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`user_id` int(11) NOT NULL AUTO_INCREMENT,

`uname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`passwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,

`type` int(11) NULL DEFAULT 0 COMMENT '0代表普通用户,1代表管理员',

`balance` double NULL DEFAULT NULL,

`level` int(11) NULL DEFAULT NULL,

PRIMARY KEY (`user_id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of user

-- ----------------------------

INSERT INTO `user` VALUES (1, 'user', 'user', 0, 161, 1);

INSERT INTO `user` VALUES (2, 'admin', 'admin', 1, 1, 1);

SET FOREIGN_KEY_CHECKS = 1;

5.工程截图

二、系统展示

1.注册系统

2.登录系统

3.用户-欢迎界面

4.用户-影片排行榜

5.用户-购票信息

6.用户-场次信息

7.用户-充值余额

8.用户-搜索电影

9.管理员-首页

10.管理员-对用户进行操作

11.管理员-对影院进行操作

12.管理员-对场厅进行操作

13.管理员-对场次进行操作

14.管理员-对电影进行操作

三、部分代码

AdminMainView.java

package view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.EventQueue;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.BorderFactory;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JDesktopPane;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import entity.User;

public class AdminMainView extends JFrame {

private JPanel main_panel = null;

private JPanel fun_panel = null;

private JDesktopPane fundesk = null;

private JButton oper_User = null;

private JButton oper_Cinema = null;

private JButton oper_Hall = null;

private JButton oper_Session = null;

private JButton oper_Movie = null;

private JButton back = null;

private JLabel lb_welcome = null;

private JLabel lb_image = null;

private User admin = null;

public AdminMainView() {

init();

RegisterListener();

}

public AdminMainView(User admin) {

this.admin = admin;

init();

RegisterListener();

}

private void init() {

main_panel = new JPanel(new BorderLayout());

fun_panel = new JPanel(new GridLayout(8, 1, 0, 18));

oper_User = new JButton("对用户进行操作");

oper_Cinema = new JButton("对影院进行操作");

oper_Hall = new JButton("对场厅进行操作");

oper_Session = new JButton("对场次进行操作");

oper_Movie = new JButton("对电影进行操作");

back = new JButton("返回");

fun_panel.add(new JLabel());

fun_panel.add(oper_User);

fun_panel.add(oper_Cinema);

fun_panel.add(oper_Hall);

fun_panel.add(oper_Session);

fun_panel.add(oper_Movie);

fun_panel.add(back);

fun_panel.add(new JLabel());

// 设置面板外观

fun_panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createRaisedBevelBorder(), "功能区"));

lb_welcome = new JLabel("欢 迎 " + admin.getUname() + " 进 入 管 理 员 功 能 界 面");

lb_welcome.setFont(new Font("楷体", Font.BOLD, 34));

lb_welcome.setForeground(Color.BLUE);

fundesk = new JDesktopPane();

ImageIcon img = new ImageIcon(ClassLoader.getSystemResource("image/beijjing3.jpg"));

lb_image = new JLabel(img);

lb_image.setBounds(10, 10, img.getIconWidth(), img.getIconHeight());

fundesk.add(lb_image, new Integer(Integer.MIN_VALUE));

main_panel.add(lb_welcome, BorderLayout.NORTH);

main_panel.add(fun_panel, BorderLayout.EAST);

main_panel.add(fundesk, BorderLayout.CENTER);

// 为了不让线程阻塞,来调用线程

// 放入队列当中

EventQueue.invokeLater(new Runnable() {

public void run() {

new Thread(new thread()).start();

}

});

this.setTitle("管理员功能界面");

this.getContentPane().add(main_panel);

this.setSize(880, 600);

this.setResizable(false);

this.setVisible(true);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

// 开启线程使得欢迎标签动起来

// 这是单线程

private class thread implements Runnable {

@Override

public void run() {

while (true) {// 死循环让其一直移动

for (int i = 900; i > -700; i--) {

// for(int i=-100;i<900;i++){

try {

Thread.sleep(10);// 让线程休眠100毫秒

} catch (InterruptedException e) {

e.printStackTrace();

}

lb_welcome.setLocation(i, 5);

}

}

}

}

private void RegisterListener() {

oper_User.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

operUserView ouv = new operUserView();

fundesk.add(ouv);

ouv.toFront();

}

});

oper_Cinema.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

operCinemaView ocv = new operCinemaView();

fundesk.add(ocv);

ocv.toFront();

}

});

oper_Hall.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

operHallView ohv = new operHallView();

fundesk.add(ohv);

ohv.toFront();

}

});

oper_Session.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

operSessionView osv = new operSessionView();

fundesk.add(osv);

osv.toFront();

}

});

oper_Movie.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

operMovieView omv = new operMovieView();

fundesk.add(omv);

omv.toFront();

}

});

back.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new Login();

AdminMainView.this.dispose();

}

});

}

}

MovieInfoView.java

package view;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.SimpleDateFormat;

import java.util.List;

import javax.swing.GroupLayout;

import javax.swing.GroupLayout.Alignment;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.jscrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.LayoutStyle.ComponentPlacement;

import javax.swing.border.EmptyBorder;

import javax.swing.table.DefaultTableModel;

import entity.Comment;

import entity.Movie;

import entity.User;

import service.CommentService;

import service.MovieService;

import service.UserService;

import serviceimpl.CommentServiceImpl;

import serviceimpl.MovieServiceImpl;

import serviceimpl.UserServiceImpl;

public class MovieInfoView extends JFrame {

private JPanel contentPane;

private JTable table;

JScrollPane scrollPane = null;

Movie movie = null;

User user = null;

MovieService ms = null;

CommentService cs = null;

UserService us = null;

public MovieInfoView(Movie movie, User user) {

this.movie = movie;

this.user = user;

ms = new MovieServiceImpl();

cs = new CommentServiceImpl();

us = new UserServiceImpl();

setTitle("用户选票界面");

setBounds(260, 130, 620, 600);

this.setLocationRelativeTo(null);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

JLabel lblNewLabel = new JLabel("New label");

lblNewLabel.setIcon(new ImageIcon("image/" + movie.getImg()));

JLabel label = new JLabel("正在热映");

JLabel lblNewLabel_1 = new JLabel("影片名:");

lblNewLabel_1.setFont(new Font("楷体", Font.BOLD, 18));

JLabel label_1 = new JLabel("类型:");

JLabel label_2 = new JLabel("时长:");

JLabel label_3 = new JLabel("电影详情:");

JLabel label_4 = new JLabel(movie.getMname());

label_4.setFont(new Font("楷体", Font.BOLD, 18));

JButton btnNewButton = new JButton("购买");

btnNewButton.setForeground(Color.BLUE);

btnNewButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new UserUi(user, 3);

movie.getMovie_id();

List movieByName = ms.getMovieByName(movie.getMname());

for (Movie movie2 : movieByName) {

System.out.println(movie2);

}

MovieInfoView.this.dispose();

}

});

JButton button = new JButton("取消");

button.setForeground(Color.RED);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

MovieInfoView.this.dispose();

}

});

scrollPane = new JScrollPane();

scrollPane.setEnabled(false);

scrollPane.setVisible(false);

JButton button_1 = new JButton("查看评论");

button_1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

scrollPane.setVisible(true);

showComment();

table.repaint();

}

});

button_1.setForeground(Color.MAGENTA);

JLabel lblNewLabel_2 = new JLabel("欢迎来到电影详情界面");

lblNewLabel_2.setFont(new Font("新宋体", Font.BOLD, 20));

lblNewLabel_2.setForeground(Color.BLACK);

JLabel label_5 = new JLabel(movie.getType());

JLabel label_6 = new JLabel(movie.getDuration() + "分钟");

JLabel label_7 = new JLabel(movie.getDetail());

GroupLayout gl_contentPane = new GroupLayout(contentPane);

gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING).addGroup(gl_contentPane

.createSequentialGroup()

.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)

.addGroup(gl_contentPane.createSequentialGroup().addGap(218)

.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)

.addGroup(gl_contentPane.createSequentialGroup().addComponent(label_3)

.addPreferredGap(ComponentPlacement.RELATED).addComponent(label_7,

GroupLayout.PREFERRED_SIZE, 70, GroupLayout.PREFERRED_SIZE))

.addGroup(gl_contentPane.createSequentialGroup().addComponent(lblNewLabel_1)

.addPreferredGap(ComponentPlacement.RELATED)

.addComponent(label_4, GroupLayout.PREFERRED_SIZE, 137,

GroupLayout.PREFERRED_SIZE))

.addGroup(gl_contentPane.createSequentialGroup()

.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)

.addComponent(label_2)

.addGroup(gl_contentPane.createSequentialGroup()

.addPreferredGap(ComponentPlacement.RELATED)

.addComponent(label_1)))

.addGap(4)

.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)

.addComponent(label_6, GroupLayout.PREFERRED_SIZE, 55,

GroupLayout.PREFERRED_SIZE)

.addComponent(label_5, GroupLayout.PREFERRED_SIZE, 82,

GroupLayout.PREFERRED_SIZE)))

.addGroup(gl_contentPane.createSequentialGroup().addComponent(btnNewButton)

.addGap(18)

.addComponent(button, GroupLayout.PREFERRED_SIZE, 71,

GroupLayout.PREFERRED_SIZE)

.addGap(18).addComponent(button_1))))

.addGroup(gl_contentPane.createSequentialGroup().addGap(36).addComponent(label))

.addGroup(gl_contentPane.createSequentialGroup().addGap(170).addComponent(lblNewLabel_2))

.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 200, GroupLayout.PREFERRED_SIZE)

.addGroup(gl_contentPane.createSequentialGroup().addGap(84).addComponent(scrollPane,

GroupLayout.PREFERRED_SIZE, 464, GroupLayout.PREFERRED_SIZE)))

.addContainerGap(46, Short.MAX_VALUE)));

gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING)

.addGroup(gl_contentPane.createSequentialGroup()

.addGroup(gl_contentPane

.createParallelGroup(Alignment.LEADING)

.addGroup(gl_contentPane.createSequentialGroup().addGap(46).addComponent(label)

.addPreferredGap(ComponentPlacement.UNRELATED)

.addComponent(lblNewLabel, GroupLayout.DEFAULT_SIZE, 277, Short.MAX_VALUE))

.addGroup(gl_contentPane.createSequentialGroup().addContainerGap()

.addComponent(lblNewLabel_2).addGap(58)

.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)

.addComponent(lblNewLabel_1).addComponent(label_4,

GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE))

.addPreferredGap(ComponentPlacement.RELATED, 53, Short.MAX_VALUE)

.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)

.addComponent(label_1).addComponent(label_5))

.addGap(18)

.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)

.addComponent(label_2).addComponent(label_6))

.addGap(18)

.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)

.addComponent(label_3).addComponent(label_7))

.addGap(125)

.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)

.addComponent(btnNewButton).addComponent(button)

.addComponent(button_1))))

.addGap(28)

.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 139, GroupLayout.PREFERRED_SIZE)));

showComment();

scrollPane.setViewportView(table);

contentPane.setLayout(gl_contentPane);

this.setVisible(true);

}

public void showComment() {

List commlist = cs.getAllCommentByMovieId(movie.getMovie_id());

int recordrow = 0;

if (commlist != null) {

recordrow = commlist.size();

}

String[][] rinfo = new String[recordrow][3];

SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm");

for (int i = 0; i < recordrow; i++) {

for (int j = 0; j < 3; j++) {

rinfo[i][j] = new String();

rinfo[i][0] = us.queryUserById(commlist.get(i).getUser_id()).getUname();

rinfo[i][1] = commlist.get(i).getContent();

rinfo[i][2] = sdf.format(commlist.get(i).getDatetime());

}

}

String[] tbheadnames = { "用户名", "评论内容", "评论时间" };

table = new JTable(rinfo, tbheadnames);

table.setBorder(null);

table.setRowHeight(20);

table.setEnabled(false);

table.getColumnModel().getColumn(0).setPreferredWidth(30);

table.getTableHeader().setFont(new Font("楷体", 1, 20));

table.getTableHeader().setBackground(Color.CYAN);

table.getTableHeader().setReorderingAllowed(false); // 不可交换顺序

table.getTableHeader().setResizingAllowed(true); // 不可拉动表格

scrollPane.add(table);

scrollPane.setBorder(null);

table.repaint();

}

}

operCinemaView.java

package view;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.util.ArrayList;

import java.util.List;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JInternalFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.event.TableModelListener;

import javax.swing.table.TableModel;

import entity.Cinema;

import service.CinemaService;

import serviceimpl.CinemaServiceImpl;

public class operCinemaView extends JInternalFrame {

private JPanel pl_main = null;

private JPanel pl_button = null;

private JPanel pl_text = null;

private JTable table = null;

private JButton btn_add = null;

private JButton btn_query = null;

private JButton btn_del = null;

private JComboBox cb_query = null;

private JButton btn_back = null;

private JLabel lb_name = null;

private JLabel lb_address = null;

private JTextField tf_qname = null;// 查询时输入的名称

private JTextField tf_name = null;// 添加输入的名称

private JTextField tf_address = null;

private CinemaService cinemabiz = null;

private List cinemaList = null;

private CinemaInfoTableModel infoTableModel = null;

// private List hallList = null;

// private List sessionList = null;

// private HallBiz hallbiz = null;

// private SessionBiz sessionbiz = null;

public operCinemaView() {

cinemabiz = new CinemaServiceImpl();

// hallbiz = new HallBizImpl();

// sessionbiz = new SessionBizImpl();

init();

RegisterListener();

}

private void init() {

pl_main = new JPanel(new BorderLayout());

pl_button = new JPanel(new GridLayout(8, 1, 0, 40));

pl_text = new JPanel(new GridLayout(1, 4));

cinemaList = new ArrayList();

table = new JTable();

refreshTable(cinemaList);

cb_query = new JComboBox(new String[] { "查询所有影院", "按名字查找影院" });

tf_qname = new JTextField(8);

tf_qname.setEnabled(false);

btn_query = new JButton("查询");

btn_add = new JButton("增添影院");

btn_del = new JButton("删除影院");

btn_del.setEnabled(false);

btn_back = new JButton("退出窗口");

lb_name = new JLabel("影院名称: ");

tf_name = new JTextField(8);

lb_address = new JLabel("影院地址: ");

tf_address = new JTextField(12);

pl_main.add(table.getTableHeader(), BorderLayout.PAGE_START);

pl_main.add(table);

pl_main.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(null, null), "查询信息"));

pl_button.add(new JLabel());

pl_button.add(cb_query);

pl_button.add(tf_qname);

pl_button.add(btn_query);

pl_button.add(btn_add);

pl_button.add(btn_del);

pl_button.add(new JLabel());

pl_button.add(btn_back);

pl_text.add(lb_name);

pl_text.add(tf_name);

pl_text.add(lb_address);

pl_text.add(tf_address);

this.add(pl_main, BorderLayout.CENTER);

this.add(pl_button, BorderLayout.EAST);

this.add(pl_text, BorderLayout.NORTH);

this.setVisible(true);

this.setTitle("影院操作界面");

this.setSize(700, 530);

this.setIconifiable(true);

this.setClosable(true);

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

private void RegisterListener() {

table.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

if (table.getSelectedRow() != -1) {

btn_del.setEnabled(true);

}

int row = table.getSelectedRow();

String name = table.getValueAt(row, 1).toString();

String address = table.getValueAt(row, 2).toString();

tf_name.setText(name);

tf_address.setText(address);

}

});

cb_query.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (cb_query.getSelectedIndex() + 1 == 2) {

tf_qname.setEnabled(true);

} else {

tf_qname.setEnabled(false);

}

}

});

btn_query.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (cb_query.getSelectedIndex() + 1 == 1) {

cinemaList = cinemabiz.queryAllCinema();

refreshTable(cinemaList);

} else {

String name = tf_qname.getText().trim();

cinemaList = cinemabiz.queryCinemaByName(name);

refreshTable(cinemaList);

}

}

});

btn_add.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String name = tf_name.getText().trim();

String address = tf_address.getText().trim();

if (name.equals("")) {

JOptionPane.showMessageDialog(operCinemaView.this, "影院名称不能为空!");

} else if (address.equals("")) {

JOptionPane.showMessageDialog(operCinemaView.this, "影院地址不能为空!");

} else {

int flag = JOptionPane.showConfirmDialog(operCinemaView.this, "确认是否添加?", "确认信息",

JOptionPane.YES_NO_OPTION);

if (flag == JOptionPane.YES_OPTION) {

Cinema cinema = new Cinema(name, address);

boolean res = cinemabiz.addCinema(cinema);

if (res) {

cinemaList = cinemabiz.queryAllCinema();

refreshTable(cinemaList);

JOptionPane.showMessageDialog(operCinemaView.this, "添加成功!");

} else {

JOptionPane.showMessageDialog(operCinemaView.this, "添加失败!");

}

}

}

}

});

btn_del.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int row = table.getSelectedRow();

int id = (Integer) table.getValueAt(row, 0);

int flag = JOptionPane.showConfirmDialog(operCinemaView.this, "确认是否删除此影院?", "确认信息",

JOptionPane.YES_NO_OPTION);

if (flag == JOptionPane.YES_OPTION) {

boolean res = cinemabiz.deleteCinemaById(id);

/*

* if(res) { //更新数据 hallList = hallbiz.queryAllHall(); int hid = 0; for(int i =

* 0; i < hallList.size(); i++) { if(id == hallList.get(i).getCid()) { hid =

* hallList.get(i).getId(); hallbiz.delHall(hid); } } sessionList =

* sessionbiz.queryAllSession(); for(int i = 0; i < sessionList.size(); i++) {

* if(hid == sessionList.get(i).getHid()) {

* sessionbiz.delSession(sessionList.get(i).getId()); } } }

*/

cinemaList = cinemabiz.queryAllCinema();

refreshTable(cinemaList);

}

}

});

btn_back.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

operCinemaView.this.dispose();

}

});

}

public class CinemaInfoTableModel implements TableModel {

public List cinemaList = null;

public CinemaInfoTableModel(List cinemaList) {

this.cinemaList = cinemaList;

}

@Override

public int getRowCount() {

return cinemaList.size();

}

@Override

public int getColumnCount() {

return 3;

}

@Override

public String getColumnName(int columnIndex) {

if (columnIndex == 0) {

return "影院ID";

} else if (columnIndex == 1) {

return "影院名称";

} else if (columnIndex == 2) {

return "影院地址";

} else {

return "出错";

}

}

@Override

public Class> getColumnClass(int columnIndex) {

return String.class;

}

@Override

public boolean isCellEditable(int rowIndex, int columnIndex) {

return false;

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

Cinema cinema = cinemaList.get(rowIndex);

if (columnIndex == 0) {

return cinema.getCinema_id();

} else if (columnIndex == 1) {

return cinema.getCname();

} else if (columnIndex == 2) {

return cinema.getAddress();

} else {

return "出错";

}

}

@Override

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

}

@Override

public void addTableModelListener(TableModelListener l) {

// TODO Auto-generated method stub

}

@Override

public void removeTableModelListener(TableModelListener l) {

// TODO Auto-generated method stub

}

}

private void refreshTable(List cinemaList) {

infoTableModel = new CinemaInfoTableModel(cinemaList);

table.setModel(infoTableModel);

table.setRowHeight(20);

}

}

operHallView.java

package view;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.util.ArrayList;

import java.util.List;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JInternalFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.event.TableModelListener;

import javax.swing.table.TableModel;

import entity.Cinema;

import entity.Hall;

import entity.Session;

import service.CinemaService;

import service.HallService;

import serviceimpl.CinemaServiceImpl;

import serviceimpl.HallServiceImpl;

import serviceimpl.SessionServiceImpl;

import util.Check;

public class operHallView extends JInternalFrame {

private JPanel pl_main = null;

private JPanel pl_button = null;

private JPanel pl_text = null;

private JTable table = null;

private JButton btn_add = null;

private JButton btn_del = null;

private JButton btn_query = null;

private JButton btn_back = null;

private JLabel lb_name = null;

private JLabel lb_cid = null;

private JLabel lb_capacity = null;

private JTextField tf_name = null;// 添加输入的名称

private JTextField tf_cid = null;// 添加时输入的所属影院id

private JTextField tf_capacity = null;// 添加输入的名称

private HallService hallbiz = null;

private CinemaService cinemabiz = null;

private SessionServiceImpl sessionbiz = null;

private List hallList = null;

private HallInfoTableModel infoTableModel = null;

public operHallView() {

hallbiz = new HallServiceImpl();

cinemabiz = new CinemaServiceImpl();// 查询出所有的影院与cid进行匹配,显示影院名称

sessionbiz = new SessionServiceImpl();

init();

RegisterListener();

}

private void init() {

pl_main = new JPanel(new BorderLayout());

pl_button = new JPanel(new GridLayout(6, 1, 0, 40));

pl_text = new JPanel(new GridLayout(1, 6));

hallList = new ArrayList();

table = new JTable();

// 绑定JTabel,呈现数据

refreshTable(hallList);

btn_query = new JButton("查询所有场厅");

btn_add = new JButton("增添场厅");

btn_del = new JButton("删除场厅");

btn_del.setEnabled(false);

btn_back = new JButton("退出窗口");

tf_name = new JTextField(8);

tf_cid = new JTextField(8);

tf_capacity = new JTextField(8);

lb_name = new JLabel("场厅名称");

lb_cid = new JLabel("所属影院id");

lb_capacity = new JLabel("场厅容量");

pl_main.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(null, null), "查询信息"));

pl_main.add(table.getTableHeader(), BorderLayout.PAGE_START);

pl_main.add(table);

this.add(pl_main, BorderLayout.CENTER);

pl_button.add(new JLabel());

pl_button.add(btn_query);

pl_button.add(btn_add);

pl_button.add(btn_del);

pl_button.add(new JLabel());

pl_button.add(btn_back);

this.add(pl_button, BorderLayout.EAST);

pl_text.add(lb_name);

pl_text.add(tf_name);

pl_text.add(lb_cid);

pl_text.add(tf_cid);

pl_text.add(lb_capacity);

pl_text.add(tf_capacity);

this.add(pl_text, BorderLayout.NORTH);

this.setVisible(true);

this.setTitle("场厅操作界面");

this.setSize(700, 530);

this.setIconifiable(true);

this.setClosable(true);

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

private void RegisterListener() {

table.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

// 加入选中一行,删除按钮变为可用

if (table.getSelectedRow() != -1) {

btn_del.setEnabled(true);

}

int row = table.getSelectedRow();

String name = table.getValueAt(row, 1).toString();

String cid = table.getValueAt(row, 2).toString(http://);

String capacity = table.getValueAt(row, 3).toString();

tf_name.setText(name);

tf_cid.setText(cid);

tf_capacity.setText(capacity);

}

});

btn_add.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String name = tf_name.getText().trim();

String cid = tf_cid.getText().trim();

String capacity = tf_capacity.getText().trim();

if (name.equals("")) {

JOptionPane.showMessageDialog(operHallView.this, "场厅名称不能为空!");

} else if (cid.equals("")) {

JOptionPane.showMessageDialog(operHallView.this, "所属影院id不能为空!");

} else if (capacity.equals("")) {

JOptionPane.showMessageDialog(operHallView.this, "场厅容量不能为空!");

} else if (!Check.isNumber(cid)) {

JOptionPane.showMessageDialog(operHallView.this, "所属影院id只能为数字!");

} else if (!Check.isNumber(capacity)) {

JOptionPane.showMessageDialog(operHallView.this, "场厅容量只能为数字!");

} else {

int flag = JOptionPane.showConfirmDialog(operHallView.this, "是否添加此场厅?", "确认信息",

JOptionPane.YES_NO_OPTION);

if (flag == JOptionPane.YES_OPTION) {

Hall hall = new Hall(name, new Integer(capacity), new Integer(cid));

boolean res = hallbiz.addHall(hall);

hallList = hallbiz.queryAllHall();

refreshTable(hallList);

if (res) {

JOptionPane.showMessageDialog(operHallView.this, "添加成功!");

} else {

JOptionPane.showMessageDialog(operHallView.this, "添加失败!");

}

}

}

}

});

btn_query.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// 清除数据,防止累加

if (hallList != null) {

hallList.clear();

}

hallList = hallbiz.queryAllHall();

refreshTable(hallList);

}

});

btn_del.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int row = table.getSelectedRow();

int id = (Integer) table.getValueAt(row, 0);

int flag = JOptionPane.showConfirmDialog(operHallView.this, "确认是否删除此场厅?", "确认信息",

JOptionPane.YES_NO_OPTION);

if (flag == JOptionPane.YES_OPTION) {

boolean res = hallbiz.delHall(id);

if (res) {

JOptionPane.showMessageDialog(operHallView.this, "删除成功!");

// 更新数据

List sessionList = new ArrayList();

sessionList = sessionbiz.queryAllSession();

// 删除某场厅后,对应的场次也进行删除

int sid = 0;

for (int i = 0; i < sessionList.size(); i++) {

if (id == sessionList.get(i).getHall_id()) {

sid = sessionList.get(i).getSession_id();

sessionbiz.delSession(sid);

}

}

hallList = hallbiz.queryAllHall();

refreshTable(hallList);// 更新显示数据

} else {

JOptionPane.showMessageDialog(operHallView.this, "删除失败!");

}

}

}

});

btn_back.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

operHallView.this.dispose();

}

});

}

private class HallInfoTableModel implements TableModel {

public List hallList = null;

public HallInfoTableModel(List hallList) {

this.hallList = hallList;

}

// JTable显示的行数

@Override

public int getRowCount() {

return hallList.size();

}

// JTable显示的列数

@Override

public int getColumnCount() {

return 4;

}

// JTable显示各行的名称

@Override

public String getColumnName(int columnIndex) {

if (columnIndex == 0) {

return "场厅ID";

} else if (columnIndex == 1) {

return "场厅名称";

} else if (columnIndex == 2) {

return "所属影院";

} else if (columnIndex == 3) {

return "场厅容量";

} else {

return "出错";

}

}

// JTable列的数据类型

@Override

public Class> getColumnClass(int columnIndex) {

return String.class;

}

// 单元格是否可编辑

@Override

public boolean isCellEditable(int rowIndex, int columnIndex) {

return false;

}

// 每行单元格显示的数据

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

Hall hall = hallList.get(rowIndex);

Cinema cinema = null;

if (columnIndex == 0) {

return hall.getHall_id();

} else if (columnIndex == 1) {

return hall.getHname();

} else if (columnIndex == 2) {

List cinemaList = cinemabiz.queryAllCinema();

for (int i = 0; i < cinemaList.size(); i++) {

if (hall.getCinema_id() == cinemaList.get(i).getCinema_id()) {

cinema = cinemaList.get(i);

break;

}

}

return cinema.getCname();

// return hall.getCid();

} else if (columnIndex == 3) {

return hall.getCapacity();

} else {

return "出错";

}

}

@Override

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

}

@Override

public void addTableModelListener(TableModelListener l) {

// TODO Auto-generated method stub

}

@Override

public void removeTableModelListener(TableModelListener l) {

// TODO Auto-generated method stub

}

}

private void refreshTable(List hallList) {

infoTableModel = new HallInfoTableModel(hallList);

table.setModel(infoTableModel);

table.setRowHeight(20);

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python Post img(python基础教程)
下一篇:Python web(flask)(python和java哪个更值得学)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~