项目介绍
随着计算机技术的成熟,互联网的建立,如今,PC平台上有许多关于电影院订票选座方面的应用程序,但由于使用时间和地点上的限制,用户在使用上存在着种种不便,而开发一款基于微信小程序的电影院订票选座系统,能够有效地解决这个问题。
本电影院订票选座系统采用WXML 、WXS、JS小程序编写语言、微信开发者工具进行微信端开发,使用MYSQL数据库进行系统数据的储存,以微信为入口的,具有快捷、轻便的特点,不占内存,不用下载、安装,而且访问速度很快。系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了电影院订票选座的重要功能。
本基于微信小程序的电影院订票选座系统运行效果稳定,操作方便、快捷,界面友好,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的电影院订票选座平台。
开发环境
编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,微信开发者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net
系统实现
5.1用户功能模块的实现
5.1.1注册登录界面
没有账号的用户可进入注册界面进行注册操作,注册登录后可进入登录界面输入用户名和密码进行登录系统,用户注册登录界面展示如图5-1所示。
图5-1 注册登录界面图
5.1.2首页界面
用户登录后进入首页界面,在首页界面可查看电影信息推荐,首页界面展示如图5-2所示。
图5-2 首页界面图
5.1.3电影信息详情界面
用户可选择电影信息查看电影详情,并可进行收藏、预定操作,电影信息详情界面展示如图5-3所示。
图5-3 电影信息详情界面图
5.1.4电影资讯界面
用户在电影资讯界面可查看所有电影资讯信息,并可选择电影资讯查看详情,电影资讯界面展示如图5-4所示。
图5-4 电影资讯界面图
5.1.5在线客服界面
用户可进入在线客服界面发送消息,在线客服界面展示如图5-5所示。
图5-5 在线客服界面图
5.1.6我的订单界面
用户可管理个人已有订单信息,我的订单界面展示如图5-6所示。
图5-6 我的订单界面图
5.2管理员功能模块的实现
5.2.1管理员登录界面
管理员要想进入系统后台对系统进行管理,必须登录系统后台,管理员登录界面展示如图5-7所示。
图5-7 管理员登录界面图
5.2.2电影类型管理界面
管理员可增删改查电影类型信息,电影类型管理界面展示如图5-8所示。
图5-8 电影类型管理界面图
5.2.3放映厅管理界面
管理员可添加、修改和删除放映厅信息,放映厅管理界面展示如图5-9所示。
图5-9 放映厅管理界面图
5.2.4电影信息管理界面
管理员可增删改查电影信息,也可查看评论信息,电影信息管理界面展示如图5-10所示,添加电影信息界面展示如图5-11所示。
图5-10 电影信息管理界面图
图5-11 添加电影信息界面图
5.2.5用户管理界面
管理员在用户管理界面可查看所有用户信息,并可对其进行修改和删除操作,用户管理界面展示如图5-12所示。
图5-12 用户管理界面图
5.2.6订单管理界面
管理员可管理所有订单信息,订单管理界面展示如图5-13所示。
图5-13 订单管理界面图
核心代码
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.OrdersEntity;
import com.entity.view.OrdersView;
import com.service.OrdersService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 订单
* 后端接口
* @author
* @email
* @date
*/
@RestController
@RequestMapping("/orders")
public class OrdersController {
@Autowired
private OrdersService ordersService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,OrdersEntity orders,
HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
orders.setUserid((Long)request.getSession().getAttribute("userId"));
}
EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,OrdersEntity orders, HttpServletRequest request){
EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( OrdersEntity orders){
EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
ew.allEq(MPUtil.allEQMapPre( orders, "orders"));
return R.ok().put("data", ordersService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(OrdersEntity orders){
EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
ew.allEq(MPUtil.allEQMapPre( orders, "orders"));
OrdersView ordersView = ordersService.selectView(ew);
return R.ok("查询订单成功").put("data", ordersView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
OrdersEntity orders = ordersService.selectById(id);
return R.ok().put("data", orders);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
OrdersEntity orders = ordersService.selectById(id);
return R.ok().put("data", orders);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody OrdersEntity orders, HttpServletRequest request){
orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(orders);
orders.setUserid((Long)request.getSession().getAttribute("userId"));
ordersService.insert(orders);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody OrdersEntity orders, HttpServletRequest request){
orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(orders);
ordersService.insert(orders);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody OrdersEntity orders, HttpServletRequest request){
//ValidatorUtils.validateEntity(orders);
ordersService.updateById(orders);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
ordersService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<OrdersEntity> wrapper = new EntityWrapper<OrdersEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
}
int count = ordersService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
论文参考
目 录
1 绪 论 1
1.1课题研究背景 1
1.2设计原则 1
1.3研究内容 2
2系统关键技术 3
2.1微信小程序 3
2.2微信Web开发者工具 3
2.3微信小程序API接口 3
2.4 WXML 、WXS、JS小程序编写语言 4
2.5 MYSQL数据库 4
3系统分析 1
3.1可行性分析 1
3.1.1 技术可行性 1
3.1.2经济可行性 1
3.1.3操作可行性 1
3.1.4法律可行性 2
3.2系统性能分析 2
3.3 系统功能分析 2
3.3.1用户功能分析 2
3.3.2管理员功能分析 3
3.4用户体验需求分析 3
3.5系统流程分析 4
3.5.1注册流程 4
3.5.2登录流程 4
3.5.3添加信息流程 5
4系统设计 6
4.1系统设计要求 6
4.2系统开发流程设计 6
4.3系统结构设计 7
4.4数据库设计 7
4.4.1数据库E-R图设计 7
4.4.2数据库表设计 10
5 系统的实现 13
5.1用户功能模块的实现 13
5.1.1注册登录界面 13
5.1.2首页界面 13
5.1.3电影信息详情界面 14
5.1.4电影资讯界面 15
5.1.5在线客服界面 15
5.1.6我的订单界面 16
5.2管理员功能模块的实现 17
5.2.1管理员登录界面 17
5.2.2电影类型管理界面 17
5.2.3放映厅管理界面 17
5.2.4电影信息管理界面 18
5.2.5用户管理界面 19
5.2.6订单管理界面 19
6系统测试 21
6.1测试定义 21
6.2测试的方法 21
6.3测试方案 22
6.4测试结论 23
结 论 24
参考文献 25
谢 辞 26