Flask接口签名sign原理与实例代码浅析
362
2023-01-14
java使用三层架构实现电影购票系统
使用三层架构实现电影购票系统,分用户和管理员,用户功能:展示电影,查找电影(模糊查询),查看电影详情,查找场次,购买影票,订制座位,退订影票等功能,界面美观漂亮,逻辑严谨,附加电影评论功能,订票超过五张打0.9折的打折功能。管理员功能:影院的增删改查,场次的增删改查,电影的增删改查,影票管理等。
管理员账号:admin 密码:admin
下载地址:java实现电影购票系统
效果展示图:
登录界面:
用户主界面:
查看热门电影:
点击电影进入查看详情,可以看到该电影的所有评论,可以进行评论。
点击想看电影进入场次界面,可通过影院名查询场次,支持模糊查询。
选好场次进入订座购票界面,购买票并扣取相应钱数,显示余额
返回主页,查看我的影票,选择影票并查看我的评论 ,如未评论可进行评论,评论过可进行修改评论,可退订影票,退订成功钱会返还给用户。
再看查找电影功能,支持模糊查询,也可点击海报进入电影详情
咱们来展示下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
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 {
releaseAdmDXYll(null, pstmt, conn);
}
return res > 0 ? true : false;
}
public
ConnecdmDXYtion conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List
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;
}
}
该项目界面美观,代码封装性良好,逻辑严密,仅供参考。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~