使用三层架构实现电影购票系统,分用户和管理员,用户功能:展示电影,查找电影(模糊查询),查看电影详情,查找场次,购买影票,订制座位,退订影票等功能,界面美观漂亮,逻辑严谨,附加电影评论功能,订票超过五张打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使用三层架构实现电影购票系统相关推荐

  1. java中检查性异常类_Java异常处理、java语言推崇使用检查类型异常

    异常处理是java语言的重要特性之一,<Three Rules for effective Exception Handling>一文中是这么解释的:它主要帮助我们在debug的过程中解决 ...

  2. java中的常用日期类_Java中的常用日期类说明

    日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...

  3. Java中通过代理对类进行修改

    JAVA中的静态代理.动态代理及JDK proxy和CGLIB.Javassist.ASM实践 简介 Java中对已经有的类进行修改,改变或调整其执行,这可以通过代理来实现.Java的class文件是 ...

  4. java中的starts_Java Math类静态double nextAfter(double starts,double direction)示例

    java中的starts 数学类静态double nextAfter(双向启动,双向) (Math Class static double nextAfter(double starts , doub ...

  5. setyear java_如何在Java中创建不可变类

    如果对象在构造后无法更改,则该对象是不可变的.不可变对象不会以任何方式暴露其他对象来修改其状态; 对象的字段仅在构造函数内初始化一次,并且永远不会再次更改. 在本文中,我们将定义在Java中创建不可变 ...

  6. Java中Date和Calender类的使用方法

    查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

  7. java创建一个不可变对象_如何在Java中创建不可变类?

    java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...

  8. 《Java并发编程的艺术》——Java中的并发工具类、线程池、Execute框架(笔记)

    文章目录 八.Java中的并发工具类 8.1 等待多线程完成的CountDownLatch 8.2 同步屏障CyclicBarrier 8.2.1 CyclicBarrier简介 8.2.2 Cycl ...

  9. 《Java并发编程的艺术》读后笔记-Java中的并发工具类(第八章)

    文章目录 <Java并发编程的艺术>读后笔记-Java中的并发工具类(第八章) 1.等待多线程完成的CountDownLatch 2.同步屏障CyclicBarrier 2.1 Cycli ...

最新文章

  1. 【Android游戏开发二十五】在Android上的使用《贝赛尔曲线》!
  2. Java语言 泛型 类型擦除
  3. yum 安装服务出现报错收集
  4. 592zn rom/apk 自动签名工具_ios超级签名服务器
  5. 【Cocos2d-x】源代码分析之 2d/ui/Widget
  6. 5.2.3 OS之I/O设备的分配与回收(DCT-COCT-CHCT-SDT)
  7. linux桌面显示温度,请问ubuntu下有没有什么桌面小控件现实显卡温度cpu使用率之类的...
  8. 关于交换机的VLAN技术你了解多少?
  9. “==”和“===”,难道不是多一个的区别吗?
  10. 方形物体绕中心旋转的扭力_转轴扭力测试方案
  11. squid安装和配置(centos6.5)
  12. eclipse adt开发android ndk没有NDK选项问题的解决方案
  13. RocketMQ 消息队列单机部署及使用
  14. 带着身体在香港肤浅行走(一)
  15. 计算机等级考试网络数据,全国计算机等级考试三级信息、网络、数据库上机编程题15道...
  16. mysql忘记密码如何重置密码
  17. 根据经纬度算距离 | SQL
  18. matlab besselh,关于用matlab求bessel函数零点
  19. handsontable 给单元格设置下拉 菜单
  20. 【生信笔记】python实现DNA反向互补序列的6种方法

热门文章

  1. “材料主义”会是鞋服行业新的增长驱动力吗?
  2. 双目视觉三维成像原理
  3. win10ltsb 安装应用商店 ----解决surface 安装了windows10ltsb以后不能用相机
  4. JSTL标签forEach
  5. 充分利用----英文
  6. QT图形视图框架---场景 advance()函数
  7. jsp验证用户名和密码
  8. 正则表达式中的/\\\\/四个反斜杠含义
  9. cmd 路径由C到D盘切换
  10. 微信小程序 ---- 【TypeError: Cannot read property ‘forceUpdate‘ of undefined】