一、系统介绍
1.开发环境
开发工具:Eclipse2021
JDK版本:jdk1.8
Mysql版本:8.0.13
2.技术选型
Java+Swing+Mysql
3.系统功能
注册系统,登录系统;
1.用户
1.欢迎页:修改用户姓名和密码;
2.碟片排行榜:影片的详细信息;
3.购票信息:已购买车票的信息;
4.场次信息:电影场次的详细信息;
5.充值:充值余额;
6.搜索电影:搜索电影的详细信息;
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<Movie> 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<Comment> 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<String> 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<Cinema> cinemaList = null; private CinemaInfoTableModel infoTableModel = null; // private List<Hall> hallList = null; // private List<Session> 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<Cinema>(); table = new JTable(); refreshTable(cinemaList); cb_query = new JComboBox<String>(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<Cinema> cinemaList = null; public CinemaInfoTableModel(List<Cinema> 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<Cinema> 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<Hall> 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<Hall>(); 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(); 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<Session> sessionList = new ArrayList<Session>(); 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<Hall> hallList = null; public HallInfoTableModel(List<Hall> 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<Cinema> 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<Hall> hallList) { infoTableModel = new HallInfoTableModel(hallList); table.setModel(infoTableModel); table.setRowHeight(20); } }
四、其他
1.其他系统实现
1.JavaWeb系统系列实现
Java+JSP实现学生图书管理系统
Java+JSP实现学生信息管理系统
Java+JSP实现用户信息管理系统
Java+Servlet+JSP实现航空订票系统
Java+Servlet+JSP实现新闻发布系统
Java+Servlet+JSP实现图书管理系统
Java+Servlet+JSP实现停车场管理系统
Java+Servlet+JSP实现学生信息管理系统
Java+Servlet+JSP实现学生选课管理系统
Java+Servlet+JSP实现学生成绩管理系统-1
Java+Servlet+JSP实现学生成绩管理系统-2
Java+Servlet+JSP实现宠物诊所管理系统
Java+SSM+JSP实现网上考试系统
Java+SSH+JSP实现在线考试系统
Java+SSH+JSP实现医院在线挂号系统
Java+Springboot+Mybatis+Bootstrap+Maven实现网上商城系统
2.JavaSwing系统系列实现
Java+Swing实现斗地主游戏
Java+Swing实现图书管理系统
Java+Swing实现医院管理系统
Java+Swing实现考试管理系统
Java+Swing实现仓库管理系统-1
Java+Swing实现仓库管理系统-2
Java+Swing实现自助取款机系统
Java+Swing实现通讯录管理系统
Java+Swing实现停车场管理系统
Java+Swing实现学生信息管理系统
Java+Swing实现学生宿舍管理系统
Java+Swing实现学生选课管理系统
Java+Swing实现学生成绩管理系统
Java+Swing实现学校教材管理系统
Java+Swing实现学校教务管理系统
Java+Swing实现企业人事管理系统
Java+Swing实现电子相册管理系统
Java+Swing实现超市管理系统-TXT存储数据
Java+Swing实现自助取款机系统-TXT存储数据
Java+Swing实现宠物商店管理系统-TXT存储数据
3.运行项目
请点击以下链接,部署你的项目。
Eclipse如何导入JavaSwing项目超详细图文教程
Eclipse如何导入JavaSwing项目超详细视频教程
4.备注
如有侵权请联系我删除。
5.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!