java中实现电影售票类_java使用三层架构实现电影购票系统
使用三层架构实现电影购票系统,分用户和管理员,用户功能:展示电影,查找电影(模糊查询),查看电影详情,查找场次,购买影票,订制座位,退订影票等功能,界面美观漂亮,逻辑严谨,附加电影评论功能,订票超过五张打0.9折的打折功能。管理员功能:影院的增删改查,场次的增删改查,电影的增删改查,影票管理等。
管理员账号:admin 密码:admin
效果展示图:
登录界面:
用户主界面:
查看热门电影:
点击电影进入查看详情,可以看到该电影的所有评论,可以进行评论。
点击想看电影进入场次界面,可通过影院名查询场次,支持模糊查询。
选好场次进入订座购票界面,购买票并扣取相应钱数,显示余额
返回主页,查看我的影票,选择影票并查看我的评论 ,如未评论可进行评论,评论过可进行修改评论,可退订影票,退订成功钱会返还给用户。
再看查找电影功能,支持模糊查询,也可点击海报进入电影详情
咱们来展示下BaseDao的代码:
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BaseDao {
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/tickets";
// 加载驱动,只需加载一次
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 获得连接
public Connection getConn() {
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, "root", "123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
// 关闭所有
public void releaseAll(ResultSet rs, PreparedStatement pstmt, Connection conn) {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 增删改 封装
public boolean operUpdate(String sql, List params) {
Connection conn = null;
PreparedStatement pstmt = null;
int res = 0;
// 获得与数据库的连接对象
conn = getConn();
try {
pstmt = conn.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(i + 1, params.get(i));
}
}
// 增刪改的統一方法
res = pstmt.executeUpdate();
//返回的是sql在数据库中影响的行数
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
releaseAll(null, pstmt, conn);
}
return res > 0 ? true : false;
}
public List operQuery(String sql, List params, Class cls) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List list = new ArrayList();
conn = getConn();
try {
pstmt = conn.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(i + 1, params.get(i));
}
}
// 增刪改的統一方法
rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
T m = cls.newInstance();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
String col_name = rsmd.getColumnName(i + 1);
Object value = rs.getObject(col_name);
Field field;
field = cls.getDeclaredField(col_name);
field.setAccessible(true);
field.set(m, value);
}
list.add(m);
}
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
releaseAll(rs, pstmt, conn);
}
return list;
}
}
该项目界面美观,代码封装性良好,逻辑严密,仅供参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java中实现电影售票类_java使用三层架构实现电影购票系统相关推荐
- java中检查性异常类_Java异常处理、java语言推崇使用检查类型异常
异常处理是java语言的重要特性之一,<Three Rules for effective Exception Handling>一文中是这么解释的:它主要帮助我们在debug的过程中解决 ...
- java中的常用日期类_Java中的常用日期类说明
日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...
- Java中通过代理对类进行修改
JAVA中的静态代理.动态代理及JDK proxy和CGLIB.Javassist.ASM实践 简介 Java中对已经有的类进行修改,改变或调整其执行,这可以通过代理来实现.Java的class文件是 ...
- java中的starts_Java Math类静态double nextAfter(double starts,double direction)示例
java中的starts 数学类静态double nextAfter(双向启动,双向) (Math Class static double nextAfter(double starts , doub ...
- setyear java_如何在Java中创建不可变类
如果对象在构造后无法更改,则该对象是不可变的.不可变对象不会以任何方式暴露其他对象来修改其状态; 对象的字段仅在构造函数内初始化一次,并且永远不会再次更改. 在本文中,我们将定义在Java中创建不可变 ...
- Java中Date和Calender类的使用方法
查看文章 Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...
- java创建一个不可变对象_如何在Java中创建不可变类?
java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...
- 《Java并发编程的艺术》——Java中的并发工具类、线程池、Execute框架(笔记)
文章目录 八.Java中的并发工具类 8.1 等待多线程完成的CountDownLatch 8.2 同步屏障CyclicBarrier 8.2.1 CyclicBarrier简介 8.2.2 Cycl ...
- 《Java并发编程的艺术》读后笔记-Java中的并发工具类(第八章)
文章目录 <Java并发编程的艺术>读后笔记-Java中的并发工具类(第八章) 1.等待多线程完成的CountDownLatch 2.同步屏障CyclicBarrier 2.1 Cycli ...
最新文章
- 【Android游戏开发二十五】在Android上的使用《贝赛尔曲线》!
- Java语言 泛型 类型擦除
- yum 安装服务出现报错收集
- 592zn rom/apk 自动签名工具_ios超级签名服务器
- 【Cocos2d-x】源代码分析之 2d/ui/Widget
- 5.2.3 OS之I/O设备的分配与回收(DCT-COCT-CHCT-SDT)
- linux桌面显示温度,请问ubuntu下有没有什么桌面小控件现实显卡温度cpu使用率之类的...
- 关于交换机的VLAN技术你了解多少?
- “==”和“===”,难道不是多一个的区别吗?
- 方形物体绕中心旋转的扭力_转轴扭力测试方案
- squid安装和配置(centos6.5)
- eclipse adt开发android ndk没有NDK选项问题的解决方案
- RocketMQ 消息队列单机部署及使用
- 带着身体在香港肤浅行走(一)
- 计算机等级考试网络数据,全国计算机等级考试三级信息、网络、数据库上机编程题15道...
- mysql忘记密码如何重置密码
- 根据经纬度算距离 | SQL
- matlab besselh,关于用matlab求bessel函数零点
- handsontable 给单元格设置下拉 菜单
- 【生信笔记】python实现DNA反向互补序列的6种方法
热门文章
- “材料主义”会是鞋服行业新的增长驱动力吗?
- 双目视觉三维成像原理
- win10ltsb 安装应用商店 ----解决surface 安装了windows10ltsb以后不能用相机
- JSTL标签forEach
- 充分利用----英文
- QT图形视图框架---场景 advance()函数
- jsp验证用户名和密码
- 正则表达式中的/\\\\/四个反斜杠含义
- cmd 路径由C到D盘切换
- 微信小程序 ---- 【TypeError: Cannot read property ‘forceUpdate‘ of undefined】