电影订票管理系统8(含源码+sql+视频导入教程+文档)

本文介绍了电影订票管理系统8的设计与实现,包括后端采用Servlet和MVC架构,前端技术涉及jsp、CSS、JavaScript等,数据库选用MySQL。详细描述了用户管理和数据库操作的核心代码片段,展示了系统如何提供便捷的购票体验和电影院管理功能。
摘要由CSDN通过智能技术生成

👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频

1 、功能描述

  电影订票管理系统8拥有两种角色

管理员:用户管理、电影管理、场次管理、放映厅管理、评论管理、订单管理等

用户:登录注册、购票选座、评论、评分排序、订单管理

1.1 背景描述

  电影购票系统是一个基于网络的平台,旨在让用户能够方便快捷地选择和购买电影院的电影票。这一系统应运而生,主要是因为互联网技术的发展和人们对便利购票方式的需求。

随着互联网的普及和移动设备的普遍应用,人们渐渐习惯于使用手机或电脑完成日常活动,包括购物、订餐以及预订各种服务。因此,传统的电影票购买方式已经无法满足大众对便捷性和快捷性的需求。

电影购票系统通过提供在线选座、支付和取票等功能,使用户能够不再排队等候,而是通过几个简单的步骤就能轻松完成购票。此外,该系统还提供了电影信息、放映时间表、座位选择和价格比较等多种功能,让用户可以更好地了解并计划观影行程。

另外,对于电影院来说,电影购票系统也有助于提高客户满意度、提升销售效率,并且能够更好地管理座位资源和票务信息。

总的来说,电影购票系统的出现改变了传统的购票方式,为用户提供了更加便捷和高效的购票体验,同时也促进了电影院的数字化转型和业务发展。

2、项目技术

后端框架: Servlet

前端技术:jsp、css、JavaScript、JQuery

2.1 MVC

  MVC(Model-View-Controller)框架是一种用于构建Web应用程序的软件架构模式。它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据逻辑,包括数据库交互、数据处理和业务规则。视图负责用户界面的呈现,将数据以易于理解的形式展示给用户。控制器充当中间人,接收用户输入并调用相应的模型和视图来完成用户请求。MVC框架使代码分离,提高了应用程序的可维护性和扩展性。开发人员可以独立地修改模型、视图或控制器,而不会影响其他部分。这种分离也有助于多人合作开发项目。MVC框架还促进了前后端的分离,使前端工程师和后端工程师能够更好地协同工作,从而提高了开发效率。

2.2 mysql

  MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

3、开发环境

  • JAVA版本:JDK1.8(最佳)
  • IDE类型:IDEA、Eclipse都可运行
  • tomcat版本:Tomcat 7-10版本均可
  • 数据库类型:MySql(5.7、8.x版本都可)
  • maven项目:否
  • 硬件环境:Windows

4、功能截图+视频演示+文档目录

4.1 登录

登录

4.2 前端

首页

支付页面

电影详情

个人订单

选座页面

用户-购票页面1

管理员后台

管理员-电影管理

管理员-订单管理

管理员-放映场次管理

管理员-放映厅管理

管理员-评论管理

管理员-添加电影

管理员-影院管理

管理员-用户管理

4.4 文档目录

文档目录

5 、核心代码实现

5.1 配置代码

package com.movie.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcUtil {

	private static String url = "jdbc:mysql://localhost:3306/movie?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true";
	private static String username = "root";
	private static String password = "root";

	static {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, username, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null) {
					ps.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}

}

5.2 其它核心代码

package com.movie.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.alibaba.fastjson.JSON;
import com.movie.bean.User;
import com.movie.service.UserService;
import com.movie.util.SystemParamsUtils;

@WebServlet("/user")
public class UserServlet extends HttpServlet{
	
	private UserService userService;

	private static final long serialVersionUID = 1L;

	@Override
	public void init() throws ServletException {
		userService = new UserService();
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String method = req.getParameter("method");
		if("login".equals(method)){
			login(req,resp);
		}else if("logout".equals(method)){
			logout(req,resp);
		}else if("register".equals(method)){
			register(req,resp);
		}else if("updateUser".equals(method)){
			updateUser(req,resp);
		}else if("modifyUserPwd".equals(method)){
			modifyUserPwd(req,resp);
		}else if("findAllUser".equals(method)){
			findAllUser(req,resp);
		}else if("findUserInfosByName".equals(method)){
			findUserInfosByName(req,resp);
		}else{//如果是multipart/form-data类型的提交,证明参数有上传的头像
			try {
				uploadHeadImg(req,resp);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		// 重定向
		//resp.sendRedirect("product_list");
	}
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	public void login(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		String user_name = req.getParameter("user_name") == null?"":req.getParameter("user_name").toString();
		String user_pwd = req.getParameter("user_pwd") == null?"":req.getParameter("user_pwd").toString();
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
		User user = userService.login(user_name, user_pwd);
		if(user != null) {
			HttpSession session = req.getSession();
			session.setAttribute("user", user);
			if(user.getUser_role() == 0) {
				map.put("msg", "usersuccess");
				map.put("data", user);
			}else {
				map.put("msg", "adminsuccess");
				map.put("data", user);
			}
		}else{
			map.put("msg", "fail");
		}
		String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
	}
	
	public void logout(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		HttpSession session = req.getSession();
		session.removeAttribute("user");
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
		map.put("state", "success");
		String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
	}
	
	public void register(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		String user_name = req.getParameter("user_name") == null?"":req.getParameter("user_name").toString();
		String user_pwd = req.getParameter("user_pwd") == null?"":req.getParameter("user_pwd").toString();
		String user_email = req.getParameter("user_email") == null?"":req.getParameter("user_email").toString();
		User user = new User();
		user.setUser_name(user_name);
		user.setUser_pwd(user_pwd);
		user.setUser_email(user_email);
		user.setUser_role(0);
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
		String result = "";
		List<User> list = userService.findUserByName(user_name);
		if(list.size() > 0) {
			result = "fail";
		}else {
			Integer rs = userService.addUser(user);
			if(rs > 0) {
				result =  "success";
			}else {
				result =  "fail";
			}
		}
		
		map.put("state", result);
		String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
		
	}
	
	public void modifyUserPwd(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		HttpSession session = req.getSession();
		User user = (User)session.getAttribute("user");
		String oldPwd = req.getParameter("oldPwd") == null?"":req.getParameter("oldPwd").toString();
		String newPwd = req.getParameter("newPwd") == null?"":req.getParameter("newPwd").toString();

		String result = "";
		if(user.getUser_pwd().equals(oldPwd)) {
			user.setUser_pwd(newPwd);
			userService.updateUserInfo(user);
			session.removeAttribute("user");
			result =  "success";
		}else {
			result =  "fail";
		}
		
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
		map.put("state", result);
		String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
		
	}
	
	public void findUserInfosByName(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		String user_name = req.getParameter("user_name") == null?"":req.getParameter("user_name").toString();
		List<User> list = userService.findUserLikeName(user_name);
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
        map.put("msg", "");
        map.put("code", 0);
        map.put("count", list.size());
        map.put("data", list);
        String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
	}

	public void uploadHeadImg(HttpServletRequest req, HttpServletResponse resp) throws Exception {

		User user = new User();
		
		//创建一个解析器工厂
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //文件上传解析器
        ServletFileUpload upload = new ServletFileUpload(factory);
		
        //解析请求,将表单中每个输入项封装成一个FileItem对象
        List<FileItem> fileItems = upload.parseRequest(req);
        //所有表单非文件类型的集合
        Map<String,Object> param = new HashMap<String,Object>();  
        // 迭代表单数据
        for (FileItem fileItem : fileItems) {
            //判断输入的类型是 普通输入项 还是文件
            if (!fileItem.isFormField()) {
                //上传的是文件,获得文件上传字段中的文件名
                //注意IE或FireFox中获取的文件名是不一样的,IE中是绝对路径,FireFox中只是文件名
                String fileName = fileItem.getName();
                System.out.println(fileName);
                //Substring是字符串截取,返回值是一个截取后的字符串
                //lastIndexOf(".")是从右向左查,获取.之后的字符串
                String ext = fileName.substring(fileName.lastIndexOf("."));
                //UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法, UUID的唯一缺陷在于生成的结果串会比较长
                String name = UUID.randomUUID()+ext;
                //将FileItem对象中保存的主体内容保存到某个指定的文件中
    			String path = SystemParamsUtils.getSysConfig().get("address").toString()+ "/upload/head/" + name;
                File file = new File(path);
            
                String filePath = "/file/upload/head/" + name;
                user.setUser_headImg(filePath);
                fileItem.write(file);
            }else{
            	param.put(fileItem.getFieldName(), fileItem.getString("utf-8"));//如果你页面编码是utf-8的
            }
        }
        user.setUser_id(Long.valueOf(param.get("user_id").toString()));
		user.setUser_name(param.get("user_name") == null?"":param.get("user_name").toString());
		user.setUser_email(param.get("user_email") == null?"":param.get("user_email").toString());
        resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
        Integer rs = userService.updateUserInfo(user);
		if(rs > 0) {
			map.put("code", 0);
			map.put("msg", "");
			map.put("data",userService.findUserById(Long.valueOf(param.get("user_id").toString())));
		}else {
			map.put("code", 200);
			map.put("msg", "");
		}
		String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
        
	}
	
	public void findAllUser(HttpServletRequest req, HttpServletResponse resp) throws IOException{
		Integer page = req.getParameter("page") == null?1:Integer.valueOf(req.getParameter("page"));
		Integer limit = req.getParameter("limit") == null?1:Integer.valueOf(req.getParameter("limit"));
		String keyword = req.getParameter("keyword") == null?"":req.getParameter("keyword").toString();
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
        map.put("msg", "");
        map.put("code", 0);
        map.put("count", userService.findAllUserBySplitPageCount(keyword));
        map.put("data", userService.findAllUserBySplitPage(page, limit, keyword));
        String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
		
	}
	
	public void updateUser(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		String result = "";
		Long user_id = req.getParameter("user_id") == null?1:Long.valueOf(req.getParameter("user_id"));
		String user_name = req.getParameter("user_name") == null?"":req.getParameter("user_name").toString();
		String user_pwd = req.getParameter("user_pwd") == null?"":req.getParameter("user_pwd").toString();
		String user_email = req.getParameter("user_email") == null?"":req.getParameter("user_email").toString();

		User user = new User();
		user.setUser_id(user_id);
		user.setUser_name(user_name);
		user.setUser_pwd(user_pwd);
		user.setUser_email(user_email);
		Integer rs = userService.updateUserInfo(user);
		if(rs > 0) {
			result =  "success";
		}else {
			result =  "fail";
		}
		
		resp.setContentType("text/json; charset=utf-8");    // 设置response的编码及格式
        PrintWriter out = resp.getWriter();
        Map<String,Object> map = new HashMap<>();  
		map.put("state", result);
		String resJSON = JSON.toJSONString(map);
        out.print(resJSON); // 输出
	}
}

6 、获取方式

👇 大家点赞、收藏、关注、评论啦 👇🏻获取联系方式,后台回复关键词:电影👇🏻

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java王不二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值