电影院购票管理系统

2024-05-12 06:44

本文主要是介绍电影院购票管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 电影院购票管理系统
    • 一、项目演示
    • 二、项目介绍
    • 三、部分功能截图
    • 四、部分代码展示
    • 五、底部获取项目源码(9.9¥带走)

电影院购票管理系统

一、项目演示

电影院售票管理系统

二、项目介绍

基于springboot+vue的前后端分离电影院购票管理系统
(1)用户功能

登录、退出、注册、修改个人信息、上映|即将上映|热播影片浏览、搜索、上映|即将上映|热播榜单浏览、选座购票、订单查看

(2)管理员功能

影院信息管理、影片管理:电影信息、电影类型、影厅管理:影厅信息、场次信息管理、订单管理、用户管理

2、项目技术
语言:java
前端技术:Vue、Element-Plus
后端技术:SpringBoot、Mybatis-Plus
数据库:MySQL

三、部分功能截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、部分代码展示

package com.movie.web.controller.system;import com.movie.common.exception.DataNotFoundException;
import com.movie.common.response.ResponseResult;
import com.movie.common.utils.ApplicationContextUtils;
import com.movie.system.domin.SysBill;
import com.movie.system.domin.SysMovie;
import com.movie.system.domin.SysSession;
import com.movie.system.domin.vo.SysBillVo;
import com.movie.system.service.impl.SysBillServiceImpl;
import com.movie.system.service.impl.SysMovieServiceImpl;
import com.movie.system.service.impl.SysSessionServiceImpl;
import com.movie.web.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import java.util.List;
import java.util.Random;@RestController
public class SysBillController extends BaseController {@Autowiredprivate SysBillServiceImpl sysBillService;@Autowiredprivate SysSessionServiceImpl sysSessionService;@Autowiredprivate SysMovieServiceImpl sysMovieService;@GetMapping("/sysBill")public ResponseResult findAllBills(SysBill sysBill) {startPage();// 取消所有超时订单并释放占座资源ApplicationContextUtils.getBean("cancelTimeoutBill");List<SysBill> data = sysBillService.findAllBills(sysBill);return getResult(data);}@GetMapping("/sysBill/{id}")public ResponseResult findBillById(@PathVariable Long id) {return getResult(sysBillService.findBillById(id));}@PostMapping("/sysBill")public ResponseResult addBill(@Validated @RequestBody SysBillVo sysBillVo) {// 获取当前场次信息SysSession curSession = sysSessionService.findOneSession(sysBillVo.getSysBill().getSessionId());if (curSession == null) {throw new DataNotFoundException("添加订单的场次没找到");}System.out.println(curSession.getSessionSeats());curSession.setSessionSeats(sysBillVo.getSessionSeats());int addSallNums = sysBillVo.getSysBill().getSeats().split(",").length;curSession.setSallNums(curSession.getSallNums() + addSallNums);// 更新场次座位信息sysSessionService.updateSession(curSession);Random random = new Random();int temp = random.nextInt(6);Object obj = sysBillService.addBill(sysBillVo.getSysBill());if (obj instanceof Integer) {return getResult((Integer) obj);}return getResult(obj);}@PutMapping("/sysBill")public ResponseResult pay(@RequestBody SysBill sysBill) {int rows = sysBillService.updateBill(sysBill);if (rows > 0 && sysBill.getPayState()) {//更新场次的座位状态SysSession curSession = sysSessionService.findOneSession(sysBill.getSessionId());if (curSession == null) {throw new DataNotFoundException("支付订单的场次没找到");}//更新电影票房SysMovie curMovie = sysMovieService.findOneMovie(curSession.getMovieId());if (curMovie == null) {throw new DataNotFoundException("支付订单的电影没找到");}//订单的座位数int seatNum = sysBill.getSeats().split(",").length;double price = curSession.getSessionPrice();curMovie.setMovieBoxOffice(curMovie.getMovieBoxOffice() + seatNum * price);sysMovieService.updateMovie(curMovie);}return getResult(rows);}@PutMapping("/sysBill/cancel")public ResponseResult cancel(@RequestBody SysBillVo sysBillVo) {// 订单取消,更新订单状态int rows = sysBillService.updateBill(sysBillVo.getSysBill());if (rows > 0 && sysBillVo.getSysBill().getCancelState()) {// 订单取消座位不再占用,更新场次的座位状态SysSession curSession = sysSessionService.findOneSession(sysBillVo.getSysBill().getSessionId());// 取消的订单座位数int cancelSallNums = sysBillVo.getSysBill().getSeats().split(",").length;curSession.setSallNums(curSession.getSallNums() - cancelSallNums);if (curSession == null) {throw new DataNotFoundException("添加订单的场次没找到");}curSession.setSessionSeats(sysBillVo.getSessionSeats());sysSessionService.updateSession(curSession);}return getResult(rows);}@DeleteMapping("/sysBill/{ids}")public ResponseResult deleteBill(@PathVariable Long[] ids) {return getResult(sysBillService.deleteBill(ids));}}
package com.movie.web.controller.system;import com.movie.common.response.ResponseResult;
import com.movie.system.domin.SysCinema;
import com.movie.system.domin.SysSession;
import com.movie.system.service.impl.SysCinemaServiceImpl;
import com.movie.system.service.impl.SysSessionServiceImpl;
import com.movie.web.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.List;@RestController
public class SysCinemaController extends BaseController {@Autowiredprivate SysCinemaServiceImpl sysCinemaService;@Autowiredprivate SysSessionServiceImpl sysSessionService;@GetMapping("/sysCinema")public ResponseResult findCinema() {return getResult(sysCinemaService.findCinema());}@PutMapping("/sysCinema/update")public ResponseResult updateCinema(@Validated @RequestBody SysCinema sysCinema) {return getResult(sysCinemaService.updateCinema(sysCinema));}@GetMapping(value = {"/sysCinema/find/{cinemaId}/{movieId}", "/sysCinema/find/{cinemaId}"})public ResponseResult findCinemaById(@PathVariable Long cinemaId, @PathVariable(required = false) Long movieId) {SysCinema cinema = sysCinemaService.findCinemaById(cinemaId);if (movieId == null || movieId == 0) {movieId = cinema.getSysMovieList().size() > 0 ? cinema.getSysMovieList().get(0).getMovieId() : 0;}List<SysSession> sessions = null;if (movieId != null && movieId != 0) {sessions = sysSessionService.findSessionByMovieId(movieId);}HashMap<String, Object> response = new HashMap<>();response.put("cinema", cinema);response.put("sessions", sessions);return getResult(response);}}
package com.movie.common.controller;import com.movie.common.file.FileUploadUtils;
import com.movie.common.response.ResponseResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.FileNotFoundException;
import java.io.IOException;/*** 封装图片上传请求*/
@Slf4j
@RestController
@RequestMapping("/upload")
public class FileUploadController {@PostMapping("/user")public ResponseResult uploadUser(@RequestParam("file") MultipartFile file) throws IOException {FileUploadUtils.setDefaultBaseDir(FileUploadUtils.userPath);String filename = FileUploadUtils.upload(file);log.debug("上传文件名 : " + filename);return ResponseResult.success((Object) filename);}@PostMapping("/movie")public ResponseResult uploadMovie(@RequestParam("file") MultipartFile file) throws IOException {FileUploadUtils.setDefaultBaseDir(FileUploadUtils.moviePath);String filename = FileUploadUtils.upload(file);log.debug("上传文件名 : " + filename);return ResponseResult.success((Object) filename);}@PostMapping("/cinema")public ResponseResult uploadCinema(@RequestParam("file") MultipartFile file) throws IOException {FileUploadUtils.setDefaultBaseDir(FileUploadUtils.cinemaPath);String filename = FileUploadUtils.upload(file);log.debug("上传文件名 : " + filename);return ResponseResult.success((Object) filename);}@PostMapping("/actor")public ResponseResult uploadActor(@RequestParam("file") MultipartFile file) throws IOException {FileUploadUtils.setDefaultBaseDir(FileUploadUtils.actorPath);String filename = FileUploadUtils.upload(file);log.debug("上传文件名 : " + filename);return ResponseResult.success((Object) filename);}@RequestMapping("/delete")public ResponseResult deletePicture(String filePath) {try {String path = ResourceUtils.getURL("classpath:").getPath().substring(1) + "static" + filePath;log.debug("删除文件路径为:" + path);boolean flag = FileUploadUtils.deleteFile(path);log.debug(flag ? "删除成功" : "删除失败");} catch (FileNotFoundException e) {System.out.println("删除文件不存在");} finally {return ResponseResult.success();}}}
package com.movie.common.file;import com.movie.common.exception.FileNameLengthLimitExceededException;
import com.movie.common.exception.FileSizeLimitExceededException;
import com.movie.common.exception.InvalidExtensionException;
import com.movie.common.utils.StringUtil;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.util.ClassUtils;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.UUID;/*** 文件上传工具类*/
public class FileUploadUtils {/*** 默认大小 50M*/public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;/*** 默认的文件名最大长度 100*/public static final int DEFAULT_FILE_NAME_LENGTH = 100;/*** 默认存储图片目录*/private static final String parentPath = ClassUtils.getDefaultClassLoader().getResource("static/images").getPath();public static final String actorPath = "/actor";public static final String cinemaPath = "/cinema";public static final String moviePath = "/movie";public static final String userPath = "/user";/*** 默认上传的地址*/private static String defaultBaseDir = userPath;public static void setDefaultBaseDir(String defaultBaseDir) {FileUploadUtils.defaultBaseDir = defaultBaseDir;}public static String getDefaultBaseDir() {return defaultBaseDir;}public static String getParentPath() {return parentPath;}/*** 以默认配置进行文件上传** @param file 上传的文件* @return 文件名称* @throws Exception*/public static final String upload(MultipartFile file) throws IOException {try {return upload(getParentPath() + getDefaultBaseDir(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);} catch (Exception e) {throw new IOException(e.getMessage(), e);}}/*** 文件上传** @param baseDir          相对应用的基目录* @param file             上传的文件* @param allowedExtension 上传文件类型* @return 返回上传成功的文件名* @throws FileSizeLimitExceededException       如果超出最大大小* @throws FileNameLengthLimitExceededException 文件名太长* @throws IOException                          比如读写文件出错时* @throws InvalidExtensionException            文件校验异常*/public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,InvalidExtensionException {int fileNamelength = file.getOriginalFilename().length();if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) {throw new FileNameLengthLimitExceededException("文件名称长度不能超过" + FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);}assertAllowed(file, allowedExtension);String fileName = extractFilename(file);File desc = getAbsoluteFile(baseDir, fileName);System.err.println("baseDir"+": "+baseDir);file.transferTo(desc);String pathFileName = getPathFileName(baseDir, fileName);System.err.println("pathFileName"+": "+baseDir);return pathFileName;}/*** 编码文件名 如 : images/user/2021/3/4/***.png*/public static final String extractFilename(MultipartFile file) {String fileName = file.getOriginalFilename();String extension = getExtension(file);fileName = DateFormatUtils.format(new Date(), "yyyy/MM/dd") + "/" + UUID.randomUUID().toString().replaceAll("-", "") + "." + extension;System.err.println("fileName"+": "+fileName);return fileName;}/*** 判断文件名是否存在 不存在创建一个* @param uploadDir* @param fileName* @return* @throws IOException*/private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {File desc = new File(uploadDir + File.separator + fileName);if (!desc.getParentFile().exists()) {desc.getParentFile().mkdirs();}if (!desc.exists()) {desc.createNewFile();}return desc;}private static final String getPathFileName(String uploadDir, String fileName) throws IOException {int dirLastIndex = parentPath.length() + 1;String currentDir = StringUtils.substring(uploadDir, dirLastIndex);String pathFileName = "/images/" + currentDir + "/" + fileName;return pathFileName;}/*** 文件大小校验** @param file 上传的文件* @return* @throws FileSizeLimitExceededException 如果超出最大大小* @throws InvalidExtensionException*/public static final void assertAllowed(MultipartFile file, String[] allowedExtension)throws FileSizeLimitExceededException, InvalidExtensionException {long size = file.getSize();if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE) {throw new FileSizeLimitExceededException("文件大小不能超过" + DEFAULT_MAX_SIZE / 1024 / 1024 + "MB");}String fileName = file.getOriginalFilename();String extension = getExtension(file);if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension)) {if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) {throw new InvalidExtensionException("图片格式不支持" + extension + "格式");}}}/*** 判断MIME类型是否是允许的MIME类型** @param extension* @param allowedExtension* @return*/public static final boolean isAllowedExtension(String extension, String[] allowedExtension) {for (String str : allowedExtension) {if (str.equalsIgnoreCase(extension)) {return true;}}return false;}/*** 获取文件名的后缀** @param file 表单文件* @return 后缀名*/public static final String getExtension(MultipartFile file) {String extension = FilenameUtils.getExtension(file.getOriginalFilename());if (!StringUtil.isNotEmpty(extension)) {extension = MimeTypeUtils.getExtension(file.getContentType());}return extension;}/*** 删除文件** @param filePath 文件* @return*/public static boolean deleteFile(String filePath) {boolean flag = false;File file = new File(filePath);// 路径为文件且不为空则进行删除if (file.isFile() && file.exists()) {file.delete();flag = true;}return flag;}}

五、底部获取项目源码(9.9¥带走)

有问题,或者需要协助调试运行项目的也可以

这篇关于电影院购票管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981884

相关文章

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景   当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,不接受信息改革带来的信息技术的企业随时面临被淘汰,被取代的风险。所以当今,各个行业领域,不管是传统的教育行业

图书管理系统系统分享

分享一个图书管理系统,Java、SpringBoot、Vue和MySQL开发的图书馆管理系统 gitee项目地址:https://gitee.com/yuanmomoya/open-source-project/tree/master/books-management-system GitHub项目地址:https://github.com/yuanmomoya/open-source-pro

基于springboot+vue+uniapp的“共享书角”图书借还管理系统小程序

开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 后台登录界面 管理员功能界面 出借者管理 图书信息管理 图书归还管理 出租收入管理

2025届计算机毕业设计:如何构建Java SpringBoot+Vue个人健康档案管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录

基于JSP的实验室管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:JSP技术 + Spring Boot框架 工具:IDEA/Eclipse、Navicat、Tomcat 系统展示 首页 用户个人中心 实验室管理 设备报备管理 摘要 随着社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机