Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 项目介绍

        2.0 用户登录功能

        3.0 用户管理功能

        4.0 影院管理功能

        5.0 电影管理功能

        6.0 影厅管理功能

        7.0 电影排片管理功能

        8.0 用户评论管理功能

        9.0 用户购票功能

        10.0 用户购票记录管理


        1.0 项目介绍

        开发工具:IDEA、VScode

        服务器:Tomcat, JDK 17

        项目构建:maven

        数据库:mysql 5.7

系统用户前台和管理后台两部分,项目采用前后端分离

        前端技术:vue +elementUI

        服务端技术:springboot+mybatis+redis+mysql

项目功能描述:

1)前台功能:

        1.登录、注册、退出系统、首页、搜索

        2.电影:正在热映、即将热映、经典影片

        3.影院:选座订票、下单支付

        4.榜单:TOP100榜

        5.个人中心:我的订单、基本信息

2)后台功能:

        1.登录、退出系统、首页

        2.影院管理

                (1)影院信息管理:添加、修改、删除、查询等功能

                (2)影院区域管理:添加、修改、删除等功能

        3.电影管理

                (1)电影信息管理:添加、修改、删除、查询、演员和影片分类等功能

                (2)电影评论管理:添加、删除等操作

                (5)电影类别管理:添加、修改、删除等功能

        4.影厅管理

                (1)影厅信息管理:添加、修改、删除、查询、安排座位等功能

                (2)影厅类别管理:添加、修改、删除等功能

        5.场次管理

                (1)场次信息管理:添加、修改、删除、查询、查看座位等功能

        6.用户管理

                (1)用户信息管理:添加、修改、删除、查询等功能

                (2)订单信息管理:查询、删除等功能

                (3)用户爱好管理:添加、修改、删除等功能

        7.权限管理

                (1)角色信息管理:添加、修改、删除、分配权限等功能

                (2)资源信息管理:添加、修改、删除等功能

        注意:不一定非要完全符合开发环境,有稍微的差别也是可以开发的。

        2.0 用户登录功能

        实现了登录校验,还有用户注册功能:

        用到了 Spring Security 框架来实现登录、校验、验证等功能。 

 

相关的部分源码:

@RestController
public class SysLoginController
{@Autowiredprivate SysLoginService loginService;@Autowiredprivate ISysMenuService menuService;@Autowiredprivate SysPermissionService permissionService;/*** 登录方法* * @param loginBody 登录信息* @return 结果*/@PostMapping("/login")public AjaxResult login(@RequestBody LoginBody loginBody){AjaxResult ajax = AjaxResult.success();// 生成令牌String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),loginBody.getUuid());ajax.put(Constants.TOKEN, token);return ajax;}/*** 获取用户信息* * @return 用户信息*/@GetMapping("getInfo")public AjaxResult getInfo(){SysUser user = SecurityUtils.getLoginUser().getUser();// 角色集合Set<String> roles = permissionService.getRolePermission(user);// 权限集合Set<String> permissions = permissionService.getMenuPermission(user);AjaxResult ajax = AjaxResult.success();ajax.put("user", user);ajax.put("roles", roles);ajax.put("permissions", permissions);return ajax;}/*** 获取路由信息* * @return 路由信息*/@GetMapping("getRouters")public AjaxResult getRouters(){Long userId = SecurityUtils.getUserId();List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);return AjaxResult.success(menuService.buildMenus(menus));}
}
    public String login(String username, String password, String code, String uuid){// 验证码校验validateCaptcha(username, code, uuid);// 登录前置校验loginPreCheck(username, password);// 用户验证Authentication authentication = null;try{UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);AuthenticationContextHolder.setContext(authenticationToken);// 该方法会去调用UserDetailsServiceImpl.loadUserByUsernameauthentication = authenticationManager.authenticate(authenticationToken);}catch (Exception e){if (e instanceof BadCredentialsException){AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));throw new UserPasswordNotMatchException();}else{AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));throw new ServiceException(e.getMessage());}}finally{AuthenticationContextHolder.clearContext();}AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));LoginUser loginUser = (LoginUser) authentication.getPrincipal();recordLoginInfo(loginUser.getUserId());// 生成tokenreturn tokenService.createToken(loginUser);}

        3.0 用户管理功能

         上传图片使用了第三方接口:x-File-Storage 框架。

 相关的部分源码:

        1)后端代码:

@RestController
@RequestMapping("/manage/user")
public class UserController extends BaseController
{@Autowiredprivate IUserService userService;@Autowiredprivate SysUserServiceImpl sysUserService;/*** 查询用户信息列表*//*@PreAuthorize("@ss.hasPermi('manage:user:list')")*/@GetMapping("/list")public TableDataInfo list(User user){List<User> list = userService.selectUserList(user);TableDataInfo rspData = new TableDataInfo();rspData.setCode(HttpStatus.SUCCESS);rspData.setMsg("查询成功");rspData.setRows(list);rspData.setTotal(new PageInfo(list).getTotal());return rspData;}/*** 导出用户信息列表*/@PreAuthorize("@ss.hasPermi('manage:user:export')")@Log(title = "用户信息", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, User user){List<User> list = userService.selectUserList(user);ExcelUtil<User> util = new ExcelUtil<User>(User.class);util.exportExcel(response, list, "用户信息数据");}/*** 获取用户信息详细信息*/@PreAuthorize("@ss.hasPermi('manage:user:query')")@GetMapping(value = "/{userId}")public AjaxResult getInfo(@PathVariable("userId") Long userId){return success(userService.selectUserByUserId(userId));}/*** 新增用户信息*/@PreAuthorize("@ss.hasPermi('manage:user:add')")@Log(title = "用户信息", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody User user){return toAjax(userService.insertUser(user));}/*** 修改用户信息*/@PreAuthorize("@ss.hasPermi('manage:user:edit')")@Log(title = "用户信息", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody User user){return toAjax(userService.updateUser(user));}/*** 删除用户信息*/@PreAuthorize("@ss.hasPermi('manage:user:remove')")@Log(title = "用户信息", businessType = BusinessType.DELETE)@DeleteMapping("/{userIds}")public AjaxResult remove(@PathVariable Long[] userIds){return toAjax(userService.deleteUserByUserIds(userIds));}/*** 查询全部用户信息列表*//*@PreAuthorize("@ss.hasPermi('manage:user:list')")*/@GetMapping("/allUserList")public TableDataInfo allUserList(User user){List<User> list = userService.addUserList(user);return getDataTable(list);}
}

         2)前端代码:

<template><div class="app-container"><el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"><el-form-item label="用户名" prop="userName"><el-inputv-model="queryParams.userName"placeholder="请输入用户名"clearable@keyup.enter="handleQuery"/></el-form-item><el-form-item label="手机号码" prop="phoneNumber"><el-inputv-model="queryParams.phoneNumber"placeholder="请输入手机号码"clearable@keyup.enter="handleQuery"/></el-form-item><el-form-item><el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button><el-button icon="Refresh" @click="resetQuery">重置</el-button></el-form-item></el-form><el-row :gutter="10" class="mb8"><el-col :span="1.5"><el-buttontype="primary"plainicon="Plus"@click="handleAdd"v-hasPermi="['manage:user:add']">新增</el-button></el-col><el-col :span="1.5"><el-buttontype="success"plainicon="Edit":disabled="single"@click="handleUpdate"v-hasPermi="['manage:user:edit']">修改</el-button></el-col><el-col :span="1.5"><el-buttontype="danger"plainicon="Delete":disabled="multiple"@click="handleDelete"v-hasPermi="['manage:user:remove']">删除</el-button></el-col><el-col :span="1.5"><el-buttontype="warning"plainicon="Download"@click="handleExport"v-hasPermi="['manage:user:export']">导出</el-button></el-col><right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar></el-row><el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"><el-table-column type="selection" width="55" align="center" /><el-table-column label="用户ID" width="80" align="center" prop="userId" /><el-table-column label="用户名" width="100" align="center" prop="userName" /><el-table-column label="头像" align="center" prop="avatar" ><template #default="scope"><image-preview :src="scope.row.avatar" class="avatar-image" width="20" height="20" /></template></el-table-column><el-table-column label="性别" align="center" prop="gender"><template #default="scope"><dict-tag :options="sys_user_sex" :value="scope.row.gender"/></template></el-table-column><el-table-column label="手机号码" align="center" prop="phoneNumber" /><el-table-column label="个人签名" align="center" prop="signature" /><el-table-column label="操作" align="center" class-name="small-padding fixed-width"><template #default="scope"><el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:user:edit']">修改</el-button><el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:user:remove']">删除</el-button></template></el-table-column></el-table><paginationv-show="total>0":total="total"v-model:page="queryParams.pageNum"v-model:limit="queryParams.pageSize"@pagination="getList"/><!-- 添加或修改用户信息对话框 --><el-dialog :title="title" v-model="open" width="500px" append-to-body><el-form ref="userRef" :model="form" :rules="rules" label-width="80px"><el-form-item label="用户名" prop="userName"><el-input v-model="form.userName" placeholder="请输入用户名" /></el-form-item><el-form-item label="头像" prop="avatar"><image-upload v-model="form.avatar"/></el-form-item><el-form-item label="手机" prop="phoneNumber"><el-input v-model="form.phoneNumber" placeholder="请输入手机号码" /></el-form-item><el-form-item label="密码" prop="password"><el-input v-model="form.password" type="password" placeholder="请输入用户密码" /></el-form-item><el-form-item label="性别" prop="gender"><el-select v-model="form.gender" placeholder="请选择性别"><el-optionv-for="dict in sys_user_sex":key="dict.value":label="dict.label":value="parseInt(dict.value)"></el-option></el-select></el-form-item><el-form-item label="出生日期" prop="birthDate"><el-date-picker clearablev-model="form.birthDate"type="date"value-format="YYYY-MM-DD"placeholder="请选择出生日期"></el-date-picker></el-form-item><el-form-item label="个人签名" prop="signature"><el-input v-model="form.signature" type="textarea" placeholder="请输入内容" /></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></template></el-dialog></div>
</template>

        4.0 影院管理功能

相关的部分源码:

        1)后端代码:

@RestController
@RequestMapping("/manage/cinema")
public class CinemaController extends BaseController
{@Autowiredprivate ICinemaService cinemaService;/*** 查询影院信息列表*/@PreAuthorize("@ss.hasPermi('manage:cinema:list')")@GetMapping("/list")public TableDataInfo list(Cinema cinema){startPage();List<Cinema> list = cinemaService.selectCinemaList(cinema);return getDataTable(list);}/*** 导出影院信息列表*/@PreAuthorize("@ss.hasPermi('manage:cinema:export')")@Log(title = "影院信息", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Cinema cinema){List<Cinema> list = cinemaService.selectCinemaList(cinema);ExcelUtil<Cinema> util = new ExcelUtil<Cinema>(Cinema.class);util.exportExcel(response, list, "影院信息数据");}/*** 获取影院信息详细信息*/@PreAuthorize("@ss.hasPermi('manage:cinema:query')")@GetMapping(value = "/{cinemaId}")public AjaxResult getInfo(@PathVariable("cinemaId") Long cinemaId){return success(cinemaService.selectCinemaByCinemaId(cinemaId));}/*** 新增影院信息*/@PreAuthorize("@ss.hasPermi('manage:cinema:add')")@Log(title = "影院信息", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Cinema cinema){return toAjax(cinemaService.insertCinema(cinema));}/*** 修改影院信息*/@PreAuthorize("@ss.hasPermi('manage:cinema:edit')")@Log(title = "影院信息", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Cinema cinema){return toAjax(cinemaService.updateCinema(cinema));}/*** 删除影院信息*/@PreAuthorize("@ss.hasPermi('manage:cinema:remove')")@Log(title = "影院信息", businessType = BusinessType.DELETE)@DeleteMapping("/{cinemaIds}")public AjaxResult remove(@PathVariable Long[] cinemaIds){return toAjax(cinemaService.deleteCinemaByCinemaIds(cinemaIds));}
}

        2)前端代码:

<template><div class="app-container"><el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"><el-form-item label="影院名" prop="cinemaName"><el-inputv-model="queryParams.cinemaName"placeholder="请输入影院名"clearable@keyup.enter="handleQuery"/></el-form-item><el-form-item label="详细地址" prop="address"><el-inputv-model="queryParams.address"placeholder="请输入详细地址"clearable@keyup.enter="handleQuery"/></el-form-item><el-form-item label="营业状态" prop="operatingStatus"><el-select v-model="queryParams.operatingStatus" placeholder="请选择营业状态" clearable><el-optionv-for="dict in operating_status":key="dict.value":label="dict.label":value="dict.value"/></el-select></el-form-item><el-form-item><el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button><el-button icon="Refresh" @click="resetQuery">重置</el-button></el-form-item></el-form><el-row :gutter="10" class="mb8"><el-col :span="1.5"><el-buttontype="primary"plainicon="Plus"@click="handleAdd"v-hasPermi="['manage:cinema:add']">新增</el-button></el-col><el-col :span="1.5"><el-buttontype="success"plainicon="Edit":disabled="single"@click="handleUpdate"v-hasPermi="['manage:cinema:edit']">修改</el-button></el-col><el-col :span="1.5"><el-buttontype="danger"plainicon="Delete":disabled="multiple"@click="handleDelete"v-hasPermi="['manage:cinema:remove']">删除</el-button></el-col><el-col :span="1.5"><el-buttontype="warning"plainicon="Download"@click="handleExport"v-hasPermi="['manage:cinema:export']">导出</el-button></el-col><right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar></el-row><el-table v-loading="loading" :data="cinemaList" @selection-change="handleSelectionChange"><el-table-column type="selection" width="55" align="center" /><el-table-column label="序号ID" align="center" type="index" width="80"/><el-table-column label="影院名" align="center" prop="cinemaName" /><el-table-column label="联系电话" align="center" prop="contactNumber" /><el-table-column label="详细地址" align="left" prop="address" show-overflow-tooltip="true"/><el-table-column label="营业状态" align="center" prop="operatingStatus"><template #default="scope"><dict-tag :options="operating_status" :value="scope.row.operatingStatus"/></template></el-table-column><el-table-column label="更新时间" align="center" prop="updateTime" width="180"><template #default="scope"><span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {i}:{h}:{m}') }}</span></template></el-table-column><el-table-column label="操作" align="center" class-name="small-padding fixed-width"><template #default="scope"><el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:cinema:edit']">修改</el-button><el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:cinema:remove']">删除</el-button></template></el-table-column></el-table><paginationv-show="total>0":total="total"v-model:page="queryParams.pageNum"v-model:limit="queryParams.pageSize"@pagination="getList"/><!-- 添加或修改影院信息对话框 --><el-dialog :title="title" v-model="open" width="500px" append-to-body><el-form ref="cinemaRef" :model="form" :rules="rules" label-width="80px"><el-form-item label="影院名" prop="cinemaName"><el-input v-model="form.cinemaName" placeholder="请输入影院名" /></el-form-item><el-form-item label="联系电话" prop="contactNumber"><el-input v-model="form.contactNumber" placeholder="请输入联系电话" /></el-form-item><el-form-item label="详细地址" prop="address"><el-input v-model="form.address" placeholder="请输入详细地址" /></el-form-item><el-form-item label="营业状态" prop="operatingStatus"><el-select v-model="form.operatingStatus" placeholder="请选择营业状态"><el-optionv-for="dict in operating_status":key="dict.value":label="dict.label":value="parseInt(dict.value)"></el-option></el-select></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></template></el-dialog></div>
</template>

        5.0 电影管理功能

相关部分源码:

    @Autowiredprivate IFilmService filmService;/*** 查询电影信息列表*/@PreAuthorize("@ss.hasPermi('manage:film:list')")@GetMapping("/list")public TableDataInfo list(Film film){startPage();List<Film> list = filmService.selectFilmList(film);return getDataTable(list);}/*** 导出电影信息列表*/@PreAuthorize("@ss.hasPermi('manage:film:export')")@Log(title = "电影信息", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Film film){List<Film> list = filmService.selectFilmList(film);ExcelUtil<Film> util = new ExcelUtil<Film>(Film.class);util.exportExcel(response, list, "电影信息数据");}

        6.0 影厅管理功能

相关源码:

    /*** 获取影厅信息详细信息*/@PreAuthorize("@ss.hasPermi('manage:hall:query')")@GetMapping(value = "/{hallId}")public AjaxResult getInfo(@PathVariable("hallId") Long hallId){return success(hallService.selectHallByHallId(hallId));}/*** 新增影厅信息*/@PreAuthorize("@ss.hasPermi('manage:hall:add')")@Log(title = "影厅信息", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Hall hall){return toAjax(hallService.insertHall(hall));}/*** 修改影厅信息*/@PreAuthorize("@ss.hasPermi('manage:hall:edit')")@Log(title = "影厅信息", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Hall hall){return toAjax(hallService.updateHall(hall));}

        7.0 电影排片管理功能

相关源码:

/*** 获取电影排片详细信息*/@PreAuthorize("@ss.hasPermi('manage:schedule:query')")@GetMapping(value = "/{scheduleId}")public AjaxResult getInfo(@PathVariable("scheduleId") Long scheduleId){return success(scheduleService.selectScheduleByScheduleId(scheduleId));}/*** 新增电影排片*/@PreAuthorize("@ss.hasPermi('manage:schedule:add')")@Log(title = "电影排片", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Schedule schedule){return toAjax(scheduleService.insertSchedule(schedule));}/*** 修改电影排片*/@PreAuthorize("@ss.hasPermi('manage:schedule:edit')")@Log(title = "电影排片", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Schedule schedule){return toAjax(scheduleService.updateSchedule(schedule));}

        

        8.0 用户评论管理功能

相关源码:

/*** 获取用户评价详细信息*/@PreAuthorize("@ss.hasPermi('manage:review:query')")@GetMapping(value = "/{reviewId}")public AjaxResult getInfo(@PathVariable("reviewId") Long reviewId){return success(reviewService.selectReviewByReviewId(reviewId));}/*** 新增用户评价*/@PreAuthorize("@ss.hasPermi('manage:review:add')")@Log(title = "用户评价", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody Review review){return toAjax(reviewService.insertReview(review));}/*** 修改用户评价*/@PreAuthorize("@ss.hasPermi('manage:review:edit')")@Log(title = "用户评价", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody Review review){return toAjax(reviewService.updateReview(review));}

        9.0 用户购票功能

相关源码:

        1)后端代码:

/*** 获取购票数据详细信息*/@PreAuthorize("@ss.hasPermi('manage:byTicket:query')")@GetMapping(value = "/{ticketId}")public AjaxResult getInfo(@PathVariable("ticketId") Long ticketId){return success(byTicketService.selectByTicketByTicketId(ticketId));}/*** 新增购票数据*/@PreAuthorize("@ss.hasPermi('manage:byTicket:add')")@Log(title = "购票数据", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody ByTicket byTicket){if (byTicket.getUserId() == null){byTicket.setUserId(getUserId());}return toAjax(byTicketService.insertByTicket(byTicket));}/*** 修改购票数据*/@PreAuthorize("@ss.hasPermi('manage:byTicket:edit')")@Log(title = "购票数据", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody ByTicket byTicket){return toAjax(byTicketService.updateByTicket(byTicket));}

        2)前端代码:

<template><div class="app-container background-image"><div class="movie-posters"><div v-for="movie in filmList" :key="movie.filmId" class="movie-poster" @click="handlePosterClick(movie.filmId)"><img :src="movie.posterImage" :alt="movie.filmName" /><div class="movie-title">{{ movie.filmName }}</div><div class="movie-info">主演:{{ movie.actors }}</div></div></div><el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"><!-- 现有的表单内容 --></el-form><!-- 添加或修改购票数据对话框 --><el-dialog :title="title" v-model="open" width="500px" append-to-body><el-form ref="byTicketRef" :model="form" :rules="rules" label-width="80px"><!-- 现有的表单内容 --><el-form-item label="电影" prop="filmId"><el-select v-model="form.filmId" placeholder="请选择电影" disabled><el-optionv-for="item in filmList":key="item.filmId":value="item.filmId":label="item.filmName"/></el-select></el-form-item><el-form-item label="影院" prop="cinemaId"><el-selectv-model="form.cinemaId" placeholder="请选择影院"><el-optionv-for="item in cinemaList":key="item.cinemaId":value="item.cinemaId":label="item.cinemaName"/></el-select></el-form-item><el-form-item label="影厅" prop="hallId"><el-select v-model="form.hallId" placeholder="请选择影厅"><el-optionv-for="item in hallList":key="item.hallId":value="item.hallId":label="item.hallName"/></el-select></el-form-item><el-form-item label="座位号" prop="seatNumber"><el-input-number min="1" max="20" v-model="myRow" placeholder="行排" /> &nbsp;<el-input-number min="1" max="20" v-model="myColumn" placeholder="竖排" /></el-form-item><el-form-item label="票数" prop="numberOfTickets"><el-input-number :min="1" :max="100" v-model="form.numberOfTickets" placeholder="输入票数" /></el-form-item><el-form-item label="预约时间" prop="purchaseTime"><el-date-picker clearablev-model="form.purchaseTime"type="date"value-format="YYYY-MM-DD"placeholder="请选择购买时间"></el-date-picker></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></template></el-dialog></div>
</template>

        10.0 用户购票记录管理

相关部分代码:

    //根据电影ID查询电影排片列表获取对应的电影院@GetMapping("/cinemaList/{filmId}")@PreAuthorize("@ss.hasPermi('manage:byTicket:list')")public AjaxResult cinemaList(@PathVariable("filmId") Long filmId){return success(byTicketService.cinemaSelectScheduleListByFilmId(filmId));}//根据电影ID查询电影排片列表获取对应的影厅@GetMapping("/hallList/{filmId}")@PreAuthorize("@ss.hasPermi('manage:byTicket:list')")public AjaxResult hallList(@PathVariable("filmId") Long filmId){return success(byTicketService.hallSelectScheduleListByFilmId(filmId));}

        若需要项目完整源码,可以在 CSDN 私信给我,我每天都有查看消息的,感谢大家支持,希望可以帮助到大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯嵌入式入门指南-ADC【6】

tips:可以不用开启过采样 adc读取函数 float adc_read(ADC_HandleTypeDef *hadc) {uint16_t adc_val;float adc_f;HAL_ADC_Start (hadc);adc_val HAL_ADC_GetValue(hadc);adc_f adc_val*3.3f/4096.0f;return adc_f; }setup()初始化 HAL_ADCEx_Calibration_Start(&hadc2 …

【头歌实训:递归实现斐波那契数列】

头歌实训&#xff1a;递归实现斐波那契数列 文章目录 任务描述相关知识递归相关知识递归举例何时使用递归定义是递归的数据结构是递归的问题的求解方法是递归的 编程要求测试说明源代码&#xff1a; 任务描述 本关任务&#xff1a;递归求解斐波那契数列。 相关知识 为了完成…

【CSP CCF记录】201803-2第13次认证 碰撞的小球

题目 样例输入1 3 10 5 4 6 8 样例输出1 7 9 9 样例输入2 10 22 30 14 12 16 6 10 2 8 20 18 4 样例输出2 6 6 8 2 4 0 4 12 10 2 思路 梳理题意&#xff0c;本题主要考虑三种情况&#xff1a; 1.小球正常运动 2.小球抵达线段两段 3.两个小球在线段某位置相撞 前两种情况很…

ML 系列:第 35 节 - 机器学习中的数据可视化

ML 系列&#xff1a;第 35 天 - 机器学习中的数据可视化 文章目录 一、说明二、数据可视化2.1 直方图2.2 箱线图2.3 散点图2.4 条形图2.5 线图2.6 热图 三、结尾 一、说明 描述性统计和数据可视化是理解和解释机器学习数据的基础。它们有助于总结和直观地呈现数据&#xff0c…

数字化转型背景下,高职院校计算机网络应用的革新策略

在当今信息化时代&#xff0c;计算机网络已经成为高职院校教育不可或缺的一部分&#xff0c;它不仅极大地丰富了教育资源&#xff0c;提高了交流的便捷性&#xff0c;还催生了多样化的教学模式。对于高职院校来说&#xff0c;加强计算机网络应用的建设不仅是顺应时代潮流的必然…

【C/C++】数据库链接入门教程:从零开始的详细指南!MySQL集成与操作

文章目录 环境配置&#xff1a;搭建开发环境的基础步骤2.1 安装MySQL数据库2.2 配置C/C开发环境2.3 下载并安装MySQL Connector/C 基础操作&#xff1a;实现C/C与MySQL的基本交互3.1 建立数据库连接3.2 执行SQL语句3.3 处理查询结果 进阶技巧&#xff1a;提升数据库操作效率与安…

什么是迁移学习?

一、基本概念 迁移学习&#xff08;Transfer Learning&#xff09;是一种机器学习方法&#xff0c;旨在将从一个任务中学到的/已有的知识应用到另一个相关任务中。与传统的机器学习方法不同&#xff0c;迁移学习不需要从头开始训练模型&#xff0c;而是利用(迁移)已有知识来加速…

D83【python 接口自动化学习】- pytest基础用法

day83 pytest测试用例执行顺序 学习日期&#xff1a;20241129 学习目标&#xff1a;http定义及实战 -- pytest测试用例执行顺序 学习笔记&#xff1a; 测试用例执行顺序 默认执行顺序使用pytest-ordering自定义顺序 pytestrequests练习 import requestsdef test_mobile()…

漫谈推理谬误——错误因果

相关文章 漫谈推理谬误——错误假设-CSDN博客文章浏览阅读736次&#xff0c;点赞22次&#xff0c;收藏3次。在日常生活中&#xff0c;我们会面临各种逻辑推理&#xff0c;有些看起来一目了然&#xff0c;有些非常的科学严谨&#xff0c;但也有很多似是而非&#xff0c;隐藏了陷…

如何看linux系统内核是aarch64 ,还是64-bit

要查看 Linux 系统内核是 aarch64 架构还是 64-bit 架构&#xff0c;可以通过以下几种方法来确认&#xff1a; 方法 1&#xff1a;使用 uname 命令 uname 命令用于显示系统信息。使用以下命令查看系统的架构&#xff1a; uname -m如果输出是 aarch64&#xff0c;说明你的系统…

Debezium Engine监听binlog实现缓存更新与业务解耦

飞书文档 解决缓存与数据源数据不一致的方案有很多, 各有优缺点; 1.0、旁路缓存策略, 直接同步更新 读取流程&#xff1a; 查询缓存。如果缓存命中&#xff0c;则直接返回结果。如果缓存未命中&#xff0c;则查询数据库。将数据库查询到的数据写入缓存&#xff0c;并设置一个…

使用命令行来刷写ELRS接收器的固件

1。使用ExpressLRS Configurator的自带编译好的python命令 "C:\Users\xxx\AppData\Local\Programs\ExpressLRS Configurator\dependencies\windows_amd64\python\python3.exe" \ "C:\Users\xxx\AppData\Roaming\ExpressLRS Configurator\firmwares\cloud\Expr…

深入理解 Docker 在 CI/CD 流程中的应用原理

Docker 和 CI/CD 是现代软件开发和运维中的两项重要技术。将 Docker 与 CI/CD 集成&#xff0c;可以提高软件交付速度、可靠性和可扩展性。本文将从 CI/CD 的基本概念出发&#xff0c;介绍 Docker 在 CI/CD 中的应用原理&#xff0c;展示其在各个环节中的工作流程&#xff0c;以…

输出1~n中能被3整除,且至少有一位数字是5的所有整数.:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 输出1~n中能被3整除&#xff0c;且至少有一位数字是5的所有整数. 输入描述: 输入一行&#xff0c;包含一个整数n。(1 < n < 100000) 输出描述: 输出所有满足条件的数&#xff0c;以换…

流量工程中的“LSP“,“RSVP“,“ISIS TE“,“OSPF TE“分别是什么?

在流量工程中&#xff0c;LSP&#xff08;Label Switched Path&#xff0c;标签交换路径&#xff09;、RSVP&#xff08;Resource Reservation Protocol&#xff0c;资源预留协议&#xff09;、IS-IS TE&#xff08;Intermediate System to Intermediate System Traffic Engine…

激光雷达定位与建图-最近邻问题2

一、问题引出 最近邻问题&#xff1a;假设有两个点云集合&#xff0c; χ 1 { x 1 , ⋯ x n } \chi _{1} \left \{ x_{1},\cdots x_{n} \right \} χ1​{x1​,⋯xn​} &#xff0c; χ 2 { x 1 , ⋯ x n } \chi _{2} \left \{ x_{1},\cdots x_{n} \right \} χ2​{x1​,⋯…

redis中的哨兵

redis中的哨兵 一、哨兵机制的概念二、redis哨兵的部署2.1 docker的安装2.2 编排redis主从节点2.3 配置哨兵节点 三、redis哨兵的选举机制3.1 redis-master宕机之后的情况3.2 重启redis-master后的情况 四、redis哨兵机制的原理4.1主观下线4.2客观下线4.3选举leader节点4.4选出…

如何在 IIS 上部署 .NET Core 应用程序 ?

在 Internet 信息服务 (IIS) 上部署 .NET Core 应用程序起初可能看起来令人生畏&#xff0c;但只要步骤正确&#xff0c;它就是一个简单的过程。本指南将引导您在 IIS 上部署 .NET Core 应用程序。 Step 1: 安装 .NET Core Hosting Bundle (1) 前往官方下载页面 .NET downloa…

蓝桥杯每日真题 - 第24天

题目&#xff1a;&#xff08;货物摆放&#xff09; 题目描述&#xff08;12届 C&C B组D题&#xff09; 解题思路&#xff1a; 这道题的核心是求因数以及枚举验证。具体步骤如下&#xff1a; 因数分解&#xff1a; 通过逐一尝试小于等于的数&#xff0c;找到 n 的所有因数…

【前端】Next.js 服务器端渲染(SSR)与客户端渲染(CSR)的最佳实践

关于Next.js 服务器端渲染&#xff08;SSR&#xff09;与客户端渲染&#xff08;CSR&#xff09;的实践内容方面&#xff0c;我们按下面几点进行阐述。 1. 原理 服务器端渲染 (SSR): 在服务器上生成完整的HTML页面&#xff0c;然后发送给客户端。这使得用户在首次访问时能够…