java使用三層架構(gòu)實(shí)現(xiàn)電影購票系統(tǒng)
使用三層架構(gòu)實(shí)現(xiàn)電影購票系統(tǒng),分用戶和管理員,用戶功能:展示電影,查找電影(模糊查詢),查看電影詳情,查找場次,購買影票,訂制座位,退訂影票等功能,界面美觀漂亮,邏輯嚴(yán)謹(jǐn),附加電影評論功能,訂票超過五張打0.9折的打折功能。管理員功能:影院的增刪改查,場次的增刪改查,電影的增刪改查,影票管理等。
管理員賬號:admin 密碼:admin
下載地址:java實(shí)現(xiàn)電影購票系統(tǒng)
效果展示圖:
登錄界面:

用戶主界面:

查看熱門電影:

點(diǎn)擊電影進(jìn)入查看詳情,可以看到該電影的所有評論,可以進(jìn)行評論。

點(diǎn)擊想看電影進(jìn)入場次界面,可通過影院名查詢場次,支持模糊查詢。

選好場次進(jìn)入訂座購票界面,購買票并扣取相應(yīng)錢數(shù),顯示余額

返回主頁,查看我的影票,選擇影票并查看我的評論 ,如未評論可進(jìn)行評論,評論過可進(jìn)行修改評論,可退訂影票,退訂成功錢會返還給用戶。

再看查找電影功能,支持模糊查詢,也可點(diǎn)擊海報(bào)進(jìn)入電影詳情

咱們來展示下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";
// 加載驅(qū)動,只需加載一次
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;
}
// 關(guān)閉所有
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<Object> params) {
Connection conn = null;
PreparedStatement pstmt = null;
int res = 0;
// 獲得與數(shù)據(jù)庫的連接對象
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));
}
}
// 增刪改的統(tǒng)一方法
res = pstmt.executeUpdate();
//返回的是sql在數(shù)據(jù)庫中影響的行數(shù)
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
releaseAll(null, pstmt, conn);
}
return res > 0 ? true : false;
}
public <T> List<T> operQuery(String sql, List<Object> params, Class<T> cls) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<T> list = new ArrayList<T>();
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));
}
}
// 增刪改的統(tǒng)一方法
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;
}
}
該項(xiàng)目界面美觀,代碼封裝性良好,邏輯嚴(yán)密,僅供參考。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot攔截器Interceptor的使用,你都了解嗎
springmvc 中的攔截器可以對請求進(jìn)行判別,在請求到達(dá)控制器之前,把非法的請求給攔截掉下面來說一說, 它在springboot中的使用,感興趣的朋友一起看看吧2021-07-07
Spring Security 中如何讓上級擁有下級的所有權(quán)限(案例分析)
這篇文章主要介紹了Spring Security 中如何讓上級擁有下級的所有權(quán)限,本文通過案例分析給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
SpringSecurity+Redis+Jwt實(shí)現(xiàn)用戶認(rèn)證授權(quán)
SpringSecurity是一個強(qiáng)大且靈活的身份驗(yàn)證和訪問控制框架,本文主要介紹了SpringSecurity+Redis+Jwt實(shí)現(xiàn)用戶認(rèn)證授權(quán),具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07

