基于SSM的电影购票系统

150 篇文章 3 订阅

项目背景

随着消费水平的不断提高,人们的消费重心逐渐偏向于精神享受方面,去影院观看最新上映的电影也成为了一种潮流时尚,像蜘蛛网、百度糯米,万达电影等影院购票网站成为了另一个开发热点。本文对电影、影院管理、电影排片,用户选座购票业务进行了研究,使用SSM框架搭建开发环境和 MYSQL数据库,通过Navicat Premium软件连接并管理数据库;运用JSEE、SQL、Js,CSS语言和开源前端框架Amaze UI进行开发。系统实现了管理电影、影院、放映厅、放映记录、地区,影片类别信息的基本功能,以及前台用户注册登录、浏览影院、影片信息,选座购票功能。用户就不用去影院购买电影票,可以直接在网上进行选座购买,减少了传统影院的售票程序,避免了人工售票的繁琐工序,优化了用户体验。
关键字: 电影购票系统、SSM、MySQL、Js、CSS

功能设计

角色模块权限介绍
管理员

电影类别管理:可以进行修改相关电影类别
电影信息管理:可以进行修改相关电影信息内容
放映大厅管理:可以进行大厅增删查改信息
订单管理:可查看用户下单订单详情、、、、、、、

用户

登录后可以首页查看电影详情、热播推荐等页面下单购票、、、、、、

环境与技术

环境

Jdk1.8、Tomcat、MySQL、Eclipse(Idea)

技术

JSP、Spring、SpringMVC 、MyBatis 、html、css 、JavaScript 、JQuery 、Ajax 、maven等

功能截图

请添加图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

相关代码

数据库配置
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!--指定扫描包-->
    <context:component-scan base-package="com.mecol.film"/>
    <!--配置数据源-->

    <!--配置c3p0数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!--注入四个数据库原属性-->
        <property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/film?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=CTT"></property>
        <property name="user" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>
    <!--添加事务支持-->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--开启事务注解-->
    <tx:annotation-driven transaction-manager="txManager"/>
    <!--配置Mybatis工厂,同时指定数据源,并与Mybatis完美整合-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
    <!--mapper代理开发使用Spring自动扫描Mybatis接口并装配(@Mapper-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--mybatis-spring组件扫描器-->
        <property name="basePackage" value="com.mecol.film.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>


</beans>

控制层(Controller)

package com.mecol.film.controller;


import com.mecol.film.entity.Admin;
import com.mecol.film.entity.FilmCategory;
import com.mecol.film.entity.Play;
import com.mecol.film.entity.Ticket;
import com.mecol.film.pojo.DeleteAndUp;
import com.mecol.film.pojo.FilmPojo;
import com.mecol.film.pojo.PlayPojo;
import com.mecol.film.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;

@Controller
@RequestMapping("/root")
public class AdminController {

    @Autowired
    private FilmCategoryService filmCategoryService;
    @Autowired
    private FilmService filmService;
    @Autowired
    private AdminService adminService;
    @Autowired
    private PlayService playService;
    @Autowired
    private RoomService roomService;
    @Autowired
    private TicketService ticketService;


    //输入/root/admin 打开后台登陆首页



    @RequestMapping("/admin")
    public String admin(Model model, HttpServletRequest request){
        HttpSession session=request.getSession();
        Admin admin= (Admin) session.getAttribute("admin");
        model.addAttribute("admin",admin);
        return "admin/admin/admin";
    }
    @RequestMapping("/tuichu")
    @ResponseBody
    public String tui(HttpServletRequest request){
        HttpSession session=request.getSession();
        session.removeAttribute("admin");
        return "admin/login";
    }

    @RequestMapping("/home")
    public String home(){
        return "admin/admin/home";
    }

    @RequestMapping("/type")
    public String type(Integer page, Model model){
        model.addAttribute("type",filmCategoryService.list(page,null));
        return "admin/admin/type";
    }
    @RequestMapping(value = "/typedelete",method = RequestMethod.POST)
    @ResponseBody
    public Integer typedelete(FilmCategory filmCategory){
        filmCategory.setIsDelete(0);
        return filmCategoryService.update(filmCategory);
    }
    @RequestMapping("/isfilm")
    public String isfilm(Integer page,Model model){
        model.addAttribute("map",filmService.list(page,5));
        model.addAttribute("type",filmCategoryService.all());
        model.addAttribute("is",1);
        return "admin/admin/isfilm";
    }

    /**
     * 添加类型
     * @param filmCategory
     * @return
     */
    @RequestMapping("/add")
    @ResponseBody
    public Integer add(FilmCategory filmCategory){
        return filmCategoryService.add(filmCategory);
    }

    @RequestMapping("/typeupdate")
    @ResponseBody
    public Integer typeupdate(FilmCategory filmCategory){
        return filmCategoryService.update(filmCategory);
    }

    @RequestMapping("/addfilm")
    @ResponseBody
    public Integer addfilm(FilmPojo filmPojo, HttpServletRequest request){
        System.out.println(filmPojo);
        return filmService.add(filmPojo,request);
    }

    @RequestMapping("/xiajia")
    @ResponseBody
    public Integer xiajia(DeleteAndUp deleteAndUp){
        if (deleteAndUp.getMode().equals("下架")){
            return filmService.delete(deleteAndUp.getId());
        }else if (deleteAndUp.getMode().equals("上架")){
            return filmService.up(deleteAndUp.getId());
        }
        return 0;
    }

    @RequestMapping("/isdelete")
    public String isdelete(Integer page,Model model){
        model.addAttribute("map",filmService.isDelete(page,5));
        model.addAttribute("type",filmCategoryService.all());
        model.addAttribute("is",0);
        return "admin/admin/isfilm";
    }

    @RequestMapping("/room")
    public String room(Integer page,Model model){
        if (page==null){
            page=1;
        }
        model.addAttribute("is",1);
        model.addAttribute("film",filmService.listF());
        model.addAttribute("room",roomService.list());
        Map map=playService.list(page);
        model.addAttribute("map",map);
        return "admin/admin/room";
    }
    @RequestMapping("/deroom")
    public String deroom(Integer page,Model model){
        if (page==null){
            page=1;
        }
        model.addAttribute("is",0);
        model.addAttribute("film",filmService.listF());
        model.addAttribute("room",roomService.list());
        Map map=playService.delist(page);
        model.addAttribute("map",map);
        return "admin/admin/room";
    }

    @RequestMapping("/ticket")
    public String ticket(Integer page,Model model){
        if (page==null){
        page=1;
        }

        Map<String,Object> map=ticketService.getAllUserList(page);
        model.addAttribute("map",map);
        return "admin/admin/allTickets";
    }





    @RequestMapping("/ticketDel")
    @ResponseBody
    public Integer ticketDel(Ticket ticket){

      //  System.out.println(ticket.getTicketId());
        return ticketService.deleteById(ticket.getTicketId());
    }





    @RequestMapping("/play")
    @ResponseBody
    public Integer play(DeleteAndUp deleteAndUp){
        Play play=new Play();
        if (deleteAndUp.getMode().equals("下档")){
            play.setPlayId(deleteAndUp.getId());
            play.setIsDelete(0);
        }else if (deleteAndUp.getMode().equals("上映")){
            play.setPlayId(deleteAndUp.getId());
            play.setIsDelete(1);
        }
        return  playService.update(play);
    }
    @RequestMapping("/playAdd")
    @ResponseBody
    public Integer playAdd(PlayPojo play){
        System.out.println(play);
        return playService.add(play);
    }
}
业务层(Service)
package com.mecol.film.service;

import com.mecol.film.entity.Admin;

import java.io.UnsupportedEncodingException;

public interface AdminService {
    /**
     * 管理员登录
     * @param admin
     * @return
     */
    Admin login(Admin admin) throws UnsupportedEncodingException;
}
持久层(Mapper)
package com.mecol.film.mapper;

import com.mecol.film.entity.Admin;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface AdminMapper {

    /**
     * 管理员登录
     * @param admin
     * @return
     */
    Admin login(Admin admin);
    List<Admin> list();
    /**
     * 修改
     * @param admin
     * @return
     */
    int update(Admin admin);
}

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、项目简介本课程演示的是一套基于SSM实现的影院订票系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。课程包含: 1. 项目源码、项目文档、数据库脚本、软件工具等所有资料2. 带你从零开始部署运行本套系统3. 该项目附带的源码资料可作为毕设使用4. 提供技术答疑和远程协助指导二、技术实现 后台框架:Spring、SpringMVC、MyBatisUI界面:BootStrap、jQuery 、JSP数据库:MySQL 三、系统功能  系统分为前台订票和后台管理:1.前台订票    用户注册、用户登录、查看电影列表、分类查看    电影搜索、查看电影详情、发表电影评价    在线订票、在线支付、个人中心、查看订单2.后台管理    管理员管理:新增、查看列表、编辑、删除、查询    用户信息管理:查看列表、删除、查询    新闻公告管理:新增、查看列表、编辑、删除、查询    电影类型管理:新增、查看列表、编辑、删除、查询    城市信息管理:新增、查看列表、编辑、删除、查询    影院信息管理:新增、查看列表、编辑、删除、查询    电影信息管理:新增、查看列表、编辑、删除、查询    订单信息管理:查看列表、编辑、删除、查询    电影评价管理:查看列表、删除、查询  四、项目截图1)前台订票2)后台管理   更多Java毕设项目请关注【毕设系列课程】https://edu.csdn.net/lecturer/2104

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值