目录

一、系统介绍

1.开发环境

2.技术选型

3.系统功能

4.数据库

5.工程截图

二、系统展示

1.注册系统

2.登录系统

3.用户-欢迎界面

4.用户-影片排行榜

5.用户-购票信息

6.用户-场次信息

7.用户-充值余额

8.用户-搜索电影

9.管理员-首页

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

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

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

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

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

三、部分代码

AdminMainView.java

MovieInfoView.java

operCinemaView.java

operHallView.java

四、其他

1.其他系统实现

1.JavaWeb系统系列实现

2.JavaSwing系统系列实现

2.获取源码

3.运行项目

4.备注

5.支持博主


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存储数据

一、系统介绍

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 TransferSource Server         : MySQLSource Server Type    : MySQLSource Server Version : 80013Source Host           : 127.0.0.1:3306Source Schema         : swing_movie_houseTarget Server Type    : MySQLTarget Server Version : 80013File Encoding         : 65001Date: 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 {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {operUserView ouv = new operUserView();fundesk.add(ouv);ouv.toFront();}});oper_Cinema.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {operCinemaView ocv = new operCinemaView();fundesk.add(ocv);ocv.toFront();}});oper_Hall.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {operHallView ohv = new operHallView();fundesk.add(ohv);ohv.toFront();}});oper_Session.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {operSessionView osv = new operSessionView();fundesk.add(osv);osv.toFront();}});oper_Movie.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {operMovieView omv = new operMovieView();fundesk.add(omv);omv.toFront();}});back.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {if (cb_query.getSelectedIndex() + 1 == 2) {tf_qname.setEnabled(true);} else {tf_qname.setEnabled(false);}}});btn_query.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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;}@Overridepublic int getRowCount() {return cinemaList.size();}@Overridepublic int getColumnCount() {return 3;}@Overridepublic String getColumnName(int columnIndex) {if (columnIndex == 0) {return "影院ID";} else if (columnIndex == 1) {return "影院名称";} else if (columnIndex == 2) {return "影院地址";} else {return "出错";}}@Overridepublic Class<?> getColumnClass(int columnIndex) {return String.class;}@Overridepublic boolean isCellEditable(int rowIndex, int columnIndex) {return false;}@Overridepublic 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 "出错";}}@Overridepublic void setValueAt(Object aValue, int rowIndex, int columnIndex) {// TODO Auto-generated method stub}@Overridepublic void addTableModelListener(TableModelListener l) {// TODO Auto-generated method stub}@Overridepublic 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;// 添加时输入的所属影院idprivate 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent e) {// 清除数据,防止累加if (hallList != null) {hallList.clear();}hallList = hallbiz.queryAllHall();refreshTable(hallList);}});btn_del.addActionListener(new ActionListener() {@Overridepublic 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() {@Overridepublic 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显示的行数@Overridepublic int getRowCount() {return hallList.size();}// JTable显示的列数@Overridepublic int getColumnCount() {return 4;}// JTable显示各行的名称@Overridepublic 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列的数据类型@Overridepublic Class<?> getColumnClass(int columnIndex) {return String.class;}// 单元格是否可编辑@Overridepublic boolean isCellEditable(int rowIndex, int columnIndex) {return false;}// 每行单元格显示的数据@Overridepublic 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 "出错";}}@Overridepublic void setValueAt(Object aValue, int rowIndex, int columnIndex) {// TODO Auto-generated method stub}@Overridepublic void addTableModelListener(TableModelListener l) {// TODO Auto-generated method stub}@Overridepublic 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存储数据

2.获取源码

点击以下链接获取源码,数据库文件在sql文件下面。

Java+Swing+Mysql电影购票系统-Java文档类资源-CSDN下载Java+Swing+Mysql电影购票系统,系统经多次测试,运行无误,大家放心下载。更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/helongqiang/23921261

3.运行项目

请点击以下链接,部署你的项目。

Eclipse如何导入JavaSwing项目超详细图文教程

Eclipse如何导入JavaSwing项目超详细视频教程

4.备注

如有侵权请联系我删除。

5.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!想要获取其他资源可关注左侧微信公众号获取!

Eclipse+Java+Swing+Mysql实现电影购票系统【建议收藏】相关推荐

  1. Eclipse+Java+Swing+Mysql实现医院挂号系统

    目录 一.系统介绍 1.运行环境 2.技术说明 3.系统功能 4.数据库 二.系统实现 1.登陆界面 2.错误登陆 3.病人登陆,挂号界面 4.科室过滤 5.医生过滤 6.挂号成功 7.医生界面-病人 ...

  2. Eclipse+Java+Swing+Mysql实现仓库管理系统

    目录 一.系统介绍 1.软件环境 2.系统功能 3.数据库 4.工程截图 二.系统展示 1.用户-登录页 2.用户-登录成功 3.用户-主页面 4.用户-用户管理-个人信息 5.用户-用户管理-修改密 ...

  3. Eclipse+Java+Swing+Mysql实现自助存取款机(ATM)系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 5.工程截图 二.系统展示 1.注册页面 2.登录页面 3.主页面 4.取款 5.存款 6.转账 7.余额查询 三.部分代码 ...

  4. 基于Eclipse+Java+Swing+Mysql图书信息管理系统

    基于Eclipse+Java+Swing+Mysql图书信息管理系统 一.系统介绍 二.功能展示 1.主页 2.新增图书信息 3.删除图书信息 三.数据库 四.其他系统实现 五.获取源码 一.系统介绍 ...

  5. 基于Eclipse+Java+Swing+Mysql实现酒店管理系统

    基于Eclipse+Java+Swing+Mysql实现酒店管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.首页 3.开房 4.退房 5.房间信息 6.顾客信息 三.数据库 四.其它 1.其他 ...

  6. 【Java+JSP+MySql】12306购票系统(三)JDBC

    文章目录 配置JDBC 列车信息类 用户信息类 操作数据库 配置JDBC 在编写Java程序前需要配置JDBC环境,有很多教程,需要安装一个驱动. 可以自己找来参考,也可以看看以下链接的参考: 如何在 ...

  7. 基于Java+Swing+Mysql人口普查登记系统

    基于Java+Swing+Mysql人口普查登记系统 一.系统介绍 二.功能展示 1.主页 2.新增人口信息 3.查询人口信息 三.数据库 四.其他系统实现 五.获取源码 一.系统介绍 该系统实现了查 ...

  8. 【Java+JSP+MySql】12306购票系统(五)购买车票

    文章目录 选择出行需求 选择车票 确认购买 购买成功页面 选择出行需求 在页面中可以选择出发城市.到达城市以及出发日期. 代码存放在needs.jsp文件中. <%@ page language ...

  9. 基于Java+Swing+mysql飞机票订票系统

    基于Java+Swing+mysql飞机票订票系统 一.系统介绍 二.功能展示 1.用户登陆 2.注册 3.综合查询(管理员) 4.航班录入(管理员) 4.查询航班 5.机票预定 6.机票退改管理 三 ...

最新文章

  1. Windows下安装MySQL 5.7.26 及注意事项
  2. 最新ZeuS僵尸网络敲响网银安全警钟
  3. django博客项目8:文章详情页
  4. Spring 核心容器类BeanDefinition
  5. Android之Android Studio--Gradle多渠道打包
  6. SpringBoot集成thymeleaf增删改查示例
  7. 《Effective Java》 第一讲:创建和销毁对象
  8. python的多线程应用前景_什么是线程(多线程),Python多线程的好处
  9. spring-boot actuator(监控)配置和使用
  10. 一次数据分析的全过程
  11. 机器学习基础(六十二)—— 白化
  12. 网络是怎样连接的笔记第5章 防火墙,缓存服务器
  13. 各个刷流量软件总结对比
  14. 8项引导技能在Scrum中的应用
  15. mysql 创建同义词_Oracle synonym 同义词创建与删除
  16. PowerVR SDK编译环境的搭建
  17. input标签只能输入数字
  18. python box2d模拟平抛运动_box2d 粗略的模拟水浮力
  19. 【基础知识】现在很火的app上的deeplink技术,到底是什么?
  20. 用计算机用u盘怎么切换,u盘上的东西换个电脑就不见了怎么办啊

热门文章

  1. C - Book Note
  2. 【JZOJ4727】挺进 题解
  3. 【知识点】贴片电阻电容命名和封装
  4. 清华大学计算机科学博导,冯建华(清华大学计算机科学与技术系教授)
  5. 什么是跨境电商ERP呢?
  6. 第一周CorelDRAW课总结
  7. 智慧校园行业存在的问题分析
  8. JZOJ 3914. 人品问题
  9. 言简意赅,盘点知识图谱在各领域的应用
  10. 一点可导和领域内可导能推出