目录
1、概述
2、功能描述
3、数据表
4、目录结构
5、最终效果
6、购票流程关键代码
1、概述
开发环境: jdk 、tomcat 、mysql
开发工具:idea 或eclipse、navicat
编程语言后端:java;框架和引用的包:JavaBean Servlet MVC、log4j.jar
编程语言前端:JSP、html 、javascript、jquery;
注:本项目未引用当前流行的ssm(Spring+SpringMVC+MyBatis)、Spring boot,在随后的项目中讲解
2、功能描述
通过在网上已有的电影票购买网站注册成会员来了解其具备的功能。
1.从用户角度来看:用户通过在线注册成为网站的用户,可以获得以下功能:查看订单,修改订单,修改密码,修改个人信息。另外,用户注册成功后,可以进入到网站的留言板块进行留言等。
2.从网站的角度看:
(1)网站应该包含影片搜索功能:按影片(模糊)查询。
(2)订单处理功能,确认订单方式
(3)管理员管理:查看用户信息,并根据用户信息和用户订单对影片进行发派。
(4)电影浏览
a).价格
b).电影名称
c).上映日期
d).导演姓名
e).主演姓名
(5)购买影票 用户登录后可以根据电影的相关介绍信息进行购买.
3、数据表
1 | admin 管理员表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | 编号 |
username | - | varchar | 用户名 |
password | - | varchar | 密码 |
creattime | - | datetime | 日期 |
logintimes | - | int | 登录次数 |
qx | - | varchar | 权限 |
2 | adminlog 操作日志表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | 编号 |
username | - | varchar | 用户名 |
password | - | varchar | 密码 |
logintime | - | datetime | 日期 |
loginip | - | varchar | IP |
3 | affiche 公告表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | 编号 |
title | - | varchar | 标题 |
content | - | varchar | 内容 |
addtime | - | datetime | 日期 |
adder | - | varchar | 发布人 |
4 | guestbook 留言板 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | 编号 |
nickname | - | varchar | 呢称 |
pic | - | varchar | 图片 |
| - | varchar | 邮件 |
| - | varchar | |
content | - | varchar | 内容 |
addtime | - | datetime | 日期 |
ip | - | varchar | IP |
replay | - | int | 回复 |
5 | member 会员表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | 编号 |
username | - | varchar | 用户名 |
password | - | varchar | 密码 |
type | - | varchar | 类型 |
regtime | - | datetime | 日期 |
6 | changci 场次表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | 编号 |
riqi | - | varchar | 日期 |
shijian | - | varchar | 时间 |
yingting_id | - | int | 影厅 |
dianying_id | - | int | 电影 |
7 | dianying 电影表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | - |
name | - | varchar | 名称 |
zhuyan | - | varchar | 主演 |
daoyan | - | varchar | 导演 |
shijian | - | varchar | 时间 |
pic | - | varchar | 图片 |
jianjie | - | varchar | 简介 |
jiage | - | varchar | 价格 |
8 | goupiao 购票信息表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | |
user_id | - | int | 会员ID |
changci_id | - | int | 场次ID |
zuowei | - | varchar | 座位 |
jiage | - | varchar | 价格 |
addtime | - | varchar | 添加日期 |
9 | yingting 影厅表 | ||
字段名称 | 自动增长 | 字段类型 | 说明 |
id | - | int | - |
name | - | varchar | 名称 |
zuowei | - | int | 座位数量 |
4、目录结构
5、最终效果
前台普通用户
后台管理员
6、购票流程关键代码
if(method.equals("ADDgoupiao")){String jine = (String) request.getSession().getAttribute("jine");String member = (String) request.getSession().getAttribute("member");String member_id = (String) request.getSession().getAttribute("member_id");String changci_id = request.getParameter("changci_id");String jiage = request.getParameter("jiage");String zuowei_num = request.getParameter("zuowei_num");String strDirPath = request.getSession().getServletContext().getRealPath("/");String check[] = request.getParameterValues("checkit");if(check == null){request.setAttribute("message", "请选择座位!");request.getRequestDispatcher("changciinfo.jsp?zuowei="+zuowei_num+"&jiage="+jiage+"&changci_id="+changci_id).forward(request, response);}else{int id2[]= new int[check.length];for(int i = 0;i<check.length;i++){int s = Integer.parseInt(check[i]); id2[i] = s;}int total_pirce = Integer.parseInt(jiage)*check.length;if(total_pirce>Float.parseFloat(jine)){request.setAttribute("message", "账户余额不足!");request.getRequestDispatcher("hy_cz.jsp").forward(request, response);} else {int flag = new GoupiaoBean().addGoupiao(id2,Integer.parseInt(member_id),Integer.parseInt(changci_id),jiage); if(flag == Constant.SUCCESS){String j = memberBean.getJine(member);session.removeAttribute("jine");session.setAttribute("jine", j);request.setAttribute("message", "购票成功!");request.getRequestDispatcher("hy_goupiao.jsp").forward(request, response);}else{request.setAttribute("message", "系统维护中,请稍后再试!");request.getRequestDispatcher("index.jsp").forward(request, response);}}}}