Java實現專案電影購票系統(swing介面)
阿新 • • 發佈:2019-01-03
使用三層架構實現電影購票系統,分使用者和管理員,使用者功能:展示電影,查詢電影(模糊查詢),檢視電影詳情,查詢場次,購買影票,訂製座位,退訂影票等功能,介面美觀漂亮,邏輯嚴謹,附加電影評論功能,訂票超過五張打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<Object> 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 <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)); } } // 增刪改的統一方法 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; } }
該專案介面美觀,程式碼封裝性良好,邏輯嚴密,僅供參考。如有疑問可加我qq:943420328
若發現bug,請大佬指正。