欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java使用三層架構(gòu)實(shí)現(xiàn)電影購(gòu)票系統(tǒng)

 更新時(shí)間:2019年01月27日 09:57:47   作者:流云往事書(shū)  
這篇文章主要為大家詳細(xì)介紹了java使用三層架構(gòu)實(shí)現(xiàn)電影購(gòu)票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

使用三層架構(gòu)實(shí)現(xiàn)電影購(gòu)票系統(tǒng),分用戶(hù)和管理員,用戶(hù)功能:展示電影,查找電影(模糊查詢(xún)),查看電影詳情,查找場(chǎng)次,購(gòu)買(mǎi)影票,訂制座位,退訂影票等功能,界面美觀漂亮,邏輯嚴(yán)謹(jǐn),附加電影評(píng)論功能,訂票超過(guò)五張打0.9折的打折功能。管理員功能:影院的增刪改查,場(chǎng)次的增刪改查,電影的增刪改查,影票管理等。

管理員賬號(hào):admin  密碼:admin

下載地址:java實(shí)現(xiàn)電影購(gòu)票系統(tǒng)

效果展示圖:

登錄界面:

用戶(hù)主界面:

查看熱門(mén)電影:

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

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

選好場(chǎng)次進(jìn)入訂座購(gòu)票界面,購(gòu)買(mǎi)票并扣取相應(yīng)錢(qián)數(shù),顯示余額

返回主頁(yè),查看我的影票,選擇影票并查看我的評(píng)論 ,如未評(píng)論可進(jìn)行評(píng)論,評(píng)論過(guò)可進(jìn)行修改評(píng)論,可退訂影票,退訂成功錢(qián)會(huì)返還給用戶(hù)。

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

 咱們來(lái)展示下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ū)動(dòng),只需加載一次
 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ù)庫(kù)的連接對(duì)象
 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ù)庫(kù)中影響的行數(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)密,僅供參考。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot攔截器Interceptor的使用,你都了解嗎

    springboot攔截器Interceptor的使用,你都了解嗎

    springmvc 中的攔截器可以對(duì)請(qǐng)求進(jìn)行判別,在請(qǐng)求到達(dá)控制器之前,把非法的請(qǐng)求給攔截掉下面來(lái)說(shuō)一說(shuō), 它在springboot中的使用,感興趣的朋友一起看看吧
    2021-07-07
  • Spring Security 中如何讓上級(jí)擁有下級(jí)的所有權(quán)限(案例分析)

    Spring Security 中如何讓上級(jí)擁有下級(jí)的所有權(quán)限(案例分析)

    這篇文章主要介紹了Spring Security 中如何讓上級(jí)擁有下級(jí)的所有權(quán)限,本文通過(guò)案例分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 淺析java程序入口main()方法

    淺析java程序入口main()方法

    這篇文章主要介紹了淺析java程序入口main()方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 詳解Java實(shí)現(xiàn)多線(xiàn)程的三種方式

    詳解Java實(shí)現(xiàn)多線(xiàn)程的三種方式

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多線(xiàn)程的三種方式,感興趣的小伙伴們可以參考一下
    2016-03-03
  • springboot?接收LocalDateTime方式

    springboot?接收LocalDateTime方式

    這篇文章主要介紹了springboot?接收LocalDateTime方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 簡(jiǎn)單了解java類(lèi)型轉(zhuǎn)換常見(jiàn)的錯(cuò)誤

    簡(jiǎn)單了解java類(lèi)型轉(zhuǎn)換常見(jiàn)的錯(cuò)誤

    這篇文章主要介紹了簡(jiǎn)單了解java類(lèi)型轉(zhuǎn)換常見(jiàn)的錯(cuò)誤,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • IDEA設(shè)置允許一個(gè)類(lèi)并行的方法

    IDEA設(shè)置允許一個(gè)類(lèi)并行的方法

    這篇文章主要介紹了IDEA設(shè)置允許一個(gè)類(lèi)并行的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java?并發(fā)編程之ForkJoin框架

    Java?并發(fā)編程之ForkJoin框架

    這篇文章主要為大家介紹了Java?ForkJoin框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助,希望能夠給你帶來(lái)幫助
    2021-11-11
  • SpringSecurity+Redis+Jwt實(shí)現(xiàn)用戶(hù)認(rèn)證授權(quán)

    SpringSecurity+Redis+Jwt實(shí)現(xiàn)用戶(hù)認(rèn)證授權(quán)

    SpringSecurity是一個(gè)強(qiáng)大且靈活的身份驗(yàn)證和訪(fǎng)問(wèn)控制框架,本文主要介紹了SpringSecurity+Redis+Jwt實(shí)現(xiàn)用戶(hù)認(rèn)證授權(quán),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • java編程 中流對(duì)象選取規(guī)律詳解

    java編程 中流對(duì)象選取規(guī)律詳解

    下面小編就為大家?guī)?lái)一篇java編程 中流對(duì)象選取規(guī)律詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01

最新評(píng)論