免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Java Swing+MySQL學生選課系統(tǒng):JDBC事務與數(shù)據(jù)庫設計實戰(zhàn)

Java Swing+MySQL學生選課系統(tǒng):JDBC事務與數(shù)據(jù)庫設計實戰(zhàn) 簡介基于Java Swing與MySQL實現(xiàn)的學生選課管理系統(tǒng)課程設計資源面向Java初學與課程設計人群提供一套可直接運行、復用的完整項目方案。系統(tǒng)囊括系統(tǒng)管理、數(shù)據(jù)管理、數(shù)據(jù)查詢?nèi)蠛诵哪K覆蓋用戶登錄與密碼設置、學生/課程/選課信息的新增刪除修改、以及多維查詢等典型功能運行于Eclipse/IDEA、JDK8、MySQL5.7以上環(huán)境功能鏈路完整適合理解Swing界面開發(fā)與MySQL數(shù)據(jù)庫交互。資源包共3個文件總大小3.34MB包含項目源碼壓縮包、數(shù)據(jù)庫初始化SQL腳本及一份課程設計實訓報告docx按“源碼—數(shù)據(jù)—報告”組織結構清晰便于對照使用。已有268人學習下載讀者可借助完整源碼快速部署調(diào)試參考報告梳理論文框架與設計思路高效完成課程作業(yè)或畢業(yè)設計。1. 學生選課管理系統(tǒng)Java Swing 與 MySQL 的典型落地組合如果你在學?;蚺嘤枡C構待過大概率見過這種場景教務老師還在用 Excel 維護幾百人的選課名單學生要發(fā)郵件或者跑到辦公室才能改選一次課。這套基于 Java Swing MySQL 的學生選課管理系統(tǒng)目標就是把“課程信息維護、學生選課、退課、成績錄入、統(tǒng)計查詢”這幾件高頻事收斂到一個桌面程序里。它是 Java 課程設計里最經(jīng)典的題目之一難點不在業(yè)務邏輯而在你把 Swing 界面事件、JDBC 事務、數(shù)據(jù)庫表關系這三樣東西縫在一起時是否足夠穩(wěn)。這套方案適合兩類人一是準備做畢業(yè)設計或課程設計的學生需要一份能跑通、能答辯、有實訓報告支撐的完整項目二是剛學完 Java SE想找一個“不依賴 Web 容器、雙擊就能跑”的桌面項目來鍛煉 JDBC 和 GUI 編程的開發(fā)者。它的價值在于選課系統(tǒng)天然包含一對多、多對多的表關系你能在一百來行 SQL 里把外鍵約束、級聯(lián)刪除、事務回滾這些概念全部實戰(zhàn)一遍比刷十道練習題都管用。我對這套組合的評價是技術棧雖然不算新但它穩(wěn)定、可控、容易調(diào)試作為一個練手和交付物都合適的項目依然是當下課程設計里最穩(wěn)妥的選擇之一。2. 技術選型為什么是 Swing MySQL桌面端 JDBC 項目的經(jīng)典組合2.1 Swing 和 JavaFX 的選擇穩(wěn)定優(yōu)先于新潮很多人在做桌面選課系統(tǒng)時會糾結用 Swing 還是 JavaFX我的經(jīng)驗是除非你有明確的動畫、圖表或富媒體需求不然 Swing 依然是課程設計里更安全的選擇。原因有三點第一Swing 是 JDK 自帶的 GUI 工具包不需要額外引入運行時和構建插件放在普通 JDK 環(huán)境里就能編譯運行第二Swing 的資料沉淀極多遇到 “JTable 刷新不生效”“JFrame 關閉后進程不退出”這類問題隨便搜一下就有現(xiàn)成答案第三Swing 的組件模型足夠完成選課系統(tǒng)里所有的需求包括表格展示課程列表、下拉框選擇院系、文本域錄入反饋意見。JavaFX 雖然界面更現(xiàn)代但它需要獨立 SDK、可能在 IDEA 里需要額外配置 VM 參數(shù)這對一個以“快速跑通、順利答辯”為目標的實訓項目來說是多余的復雜度。你交的是“學生選課管理系統(tǒng)”不是“交互動效展示平臺”Swing 的平庸恰恰是它的優(yōu)勢。我現(xiàn)在做這類桌面工具時一般先用 Swing 做原型如果后續(xù)確實需要更精致的界面再考慮遷移到 JavaFX 或者干脆改成 Web 版但那是后話了。2.2 MySQL 5.7 還是 8.0先看你手頭的環(huán)境數(shù)據(jù)庫方面這個項目用 MySQL 是標配。你需要先做一個決定用 MySQL 5.7 還是 8.0。我建議你在自己機器上裝哪個方便用哪個但要注意驅(qū)動版本。如果你用 8.0JDBC 驅(qū)動類名是com.mysql.cj.jdbc.DriverURL 需要加serverTimezoneAsia/Shanghai否則連數(shù)據(jù)庫時會報時區(qū)錯誤。如果你用 5.7驅(qū)動類名是com.mysql.jdbc.DriverURL 則不需要帶時區(qū)參數(shù)但兩者在代碼里混用會導致 ClassNotFoundException 或者奇怪的通信異常。另一個常見坑是 MySQL 8.0 的加密規(guī)則。如果你在連接時遇到 “Public Key Retrieval is not allowed” 的錯誤在 JDBC URL 后追加allowPublicKeyRetrievaltrueuseSSLfalse就能解決。這個參數(shù)不寫在驅(qū)動代碼里而是寫在連接字符串里。下面是一個兼容 MySQL 5.7 和 8.0 的 JDBC 配置模板我一般會寫在db.properties文件里方便以后修改jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/course_select?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrue jdbc.usernameroot jdbc.password123456這段配置里characterEncodingutf8是為了避免中文亂碼serverTimezoneAsia/Shanghai只對 MySQL 8.0 有效useSSLfalse是因為本地開發(fā)不需要加密連接能省去證書配置的麻煩。注意allowPublicKeyRetrievaltrue這個參數(shù)如果你用的驅(qū)動是 8.0 且 MySQL 用戶秘鑰是 caching_sha2_password不加這個會在第一次連接時報錯。2.3 IDEA 里的項目結構一個 Module 就夠別搞多 Module這個項目我建議用 IDEA 新建一個普通的 Java 項目不要用 Maven也不要用 Gradle除非你后續(xù)打算把項目轉成 Web 服務。原因還是在“可控”兩個字上不引入構建工具你只需要把 mysql-connector.jar 導入到項目的 lib 目錄然后在 Project Structure 里把它添加為 Library 即可。如果用 Maven雖然依賴管理方便但很多新手會在坐標版本、私服配置上浪費時間這些都不是選課系統(tǒng)本身的關注點。IDEA 里建議的項目結構是course-selection-system/ ├── src/ │ ├── com.course.ui/ # Swing 界面類 │ │ ├── LoginFrame.java │ │ ├── StudentFrame.java │ │ └── AdminFrame.java │ ├── com.course.dao/ # JDBC 數(shù)據(jù)訪問層 │ │ ├── StudentDao.java │ │ ├── CourseDao.java │ │ └── SelectionDao.java │ ├── com.course.model/ # 實體類 │ │ ├── Student.java │ │ ├── Course.java │ │ └── Selection.java │ ├── com.course.util/ # 工具類 │ │ ├── DBUtil.java │ │ └── TableModelUtil.java │ └── com.course.MainApp.java ├── lib/ │ └── mysql-connector-java-8.0.30.jar └── sql/ └── init.sql這里我把MainApp.java放到com.course包下作為程序入口只負責調(diào)用LoginFrame。不要把 main 方法寫在某個界面類里否則后續(xù)做單元測試和代碼審查都會別扭。另外我建議把init.sql放在項目根目錄下的sql文件夾中這樣實訓報告里可以直接引用建表語句答辯時也方便演示。3. 數(shù)據(jù)庫設計與初始化從三張表到兩個核心事務3.1 表結構設計學生表、課程表、選課表再多一張就是冗余選課系統(tǒng)的核心數(shù)據(jù)模型是三張表學生表student、課程表course、選課關系表selection。其中選課表是連接前兩張表的多對多關系表它只存student_id和course_id兩個外鍵以及選課時間、成績這兩個業(yè)務字段。為什么要單獨拆出來而不是在學生表里加一個course_ids字段因為關系型數(shù)據(jù)庫的設計原則是“一行只表達一個事實”你在學生表里塞一個逗號分隔的課程 ID 列表后續(xù)統(tǒng)計“每個課程選了多少人”的時候就只能靠字符串分割既慢又容易出錯這種反模式在面試里也是典型的扣分項。下面是初始化 SQL我在課程設計項目里慣用的寫法是這樣。注意我刻意用了ENGINEInnoDB和CHARSETutf8mb4并打開了外鍵約束-- 學生表 CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT 學號主鍵, student_no VARCHAR(20) NOT NULL UNIQUE COMMENT 學號唯一索引, name VARCHAR(30) NOT NULL COMMENT 學生姓名, password VARCHAR(64) DEFAULT 123456 COMMENT 登錄密碼默認123456, major VARCHAR(50) COMMENT 專業(yè), class_name VARCHAR(50) COMMENT 班級, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT學生表; -- 課程表 CREATE TABLE course ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT 課程主鍵, course_no VARCHAR(20) NOT NULL UNIQUE COMMENT 課程編號, name VARCHAR(50) NOT NULL COMMENT 課程名稱, teacher VARCHAR(30) COMMENT 授課教師, credit DECIMAL(3,1) DEFAULT 2.0 COMMENT 學分, max_students INT DEFAULT 50 COMMENT 選課人數(shù)上限, selected_count INT DEFAULT 0 COMMENT 已選人數(shù)可在應用層維護 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT課程表; -- 選課關系表 CREATE TABLE selection ( id INT PRIMARY KEY AUTO_INCREMENT, student_id INT NOT NULL, course_id INT NOT NULL, select_time DATETIME DEFAULT CURRENT_TIMESTAMP, score DECIMAL(5,2) COMMENT 成績教務錄入, UNIQUE KEY uk_student_course (student_id, course_id), CONSTRAINT fk_sel_student FOREIGN KEY (student_id) REFERENCES student(id) ON DELETE CASCADE, CONSTRAINT fk_sel_course FOREIGN KEY (course_id) REFERENCES course(id) ON DELETE CASCADE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT選課關系表;這里說明幾個設計決策第一student_no用UNIQUE而不是直接做主鍵是為了讓主鍵id在后續(xù)關聯(lián)時保持穩(wěn)定學號即使被教務處調(diào)整也不影響已有選課關系第二course表里的selected_count字段是冗余設計主要是為了方便在課程列表界面直接展示已選人數(shù)不用每展示一行課程就COUNT(*)一次這個字段可以通過事務保證一致第三selection表上的UNIQUE KEY uk_student_course是防重復選課的關鍵應用層就算代碼有并發(fā)問題數(shù)據(jù)庫這一層也會攔住重復插入。3.2 初始化數(shù)據(jù)與事務演示把實訓報告的案例測出來建表之后建議你順手插入幾條演示數(shù)據(jù)方便后面測試登錄和選課功能。這個數(shù)據(jù)集不要太大一兩百個學生、二三十門課足夠。插入時注意學生密碼我用的是123456真實環(huán)境里應該加密存儲但作為課程設計演示明文密碼在實訓報告里更容易講清楚認證流程。下面這段 SQL 用于插入 5 個學生和 5 門課程并且預置一條選課記錄用來驗證登錄后的界面能正確顯示“我已選的課程”INSERT INTO student (student_no, name, major, class_name) VALUES (2023001, 張三, 計算機科學與技術, 計科2301), (2023002, 李四, 軟件工程, 軟工2302), (2023003, 王五, 數(shù)據(jù)科學, 數(shù)據(jù)2301), (2023004, 趙六, 計算機科學與技術, 計科2302), (2023005, 錢七, 網(wǎng)絡工程, 網(wǎng)工2301); INSERT INTO course (course_no, name, teacher, credit, max_students, selected_count) VALUES (C001, Java程序設計, 陳老師, 3.0, 50, 0), (C002, 數(shù)據(jù)庫原理, 劉老師, 3.5, 40, 1), (C003, 操作系統(tǒng), 李老師, 3.0, 45, 0), (C004, 計算機網(wǎng)絡, 王老師, 2.5, 35, 0), (C005, 軟件工程, 趙老師, 2.0, 60, 0); -- 預置一條選課記錄張三選了數(shù)據(jù)庫原理 INSERT INTO selection (student_id, course_id) VALUES (1, 2);注意這里選課記錄插入后course表里C002的selected_count也應該同步更新為 1。這個同步動作在真實代碼里應該在同一個事務里完成。SQL 文件里如果你手動跑這兩條語句需要記得把selected_count一起UPDATE掉否則界面上的已選人數(shù)不準確很容易在演示的時候被老師挑出毛病。4. 用 JDBC 寫一個永不串號的學生端選課邏輯從連接池到事務4.1 數(shù)據(jù)庫連接工具類別把連接參數(shù)散落在各處寫 Swing 界面時最容易出現(xiàn)的情況是每個按鈕事件里都直接寫DriverManager.getConnection(url, user, password)結果換一臺電腦跑項目時要全局搜索替換數(shù)據(jù)庫密碼。這種做法在課程設計里不算致命但會讓你的代碼在實訓報告里顯得很業(yè)余。我建議你寫一個DBUtil工具類把連接管理工作收口package com.course.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { private static final String URL jdbc:mysql://localhost:3306/course_select?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrue; private static final String USER root; private static final String PASSWORD 123456; static { try { Class.forName(com.mysql.cj.jdbc.Driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } public static void close(Connection conn, java.sql.Statement stmt, java.sql.ResultSet rs) { try { if (rs ! null) rs.close(); } catch (SQLException ignored) {} try { if (stmt ! null) stmt.close(); } catch (SQLException ignored) {} try { if (conn ! null) conn.close(); } catch (SQLException ignored) {} } }這個工具類里Class.forName是在注冊 JDBC 驅(qū)動MySQL 8.0 的驅(qū)動在 SPI 機制下可以省略這行但寫上它能讓驅(qū)動加載過程更明確排查問題時也少一個變量。close方法里我把ResultSet、Statement、Connection的關系理清楚關閉順序必須從里到外否則你可能會在日志里看到連接泄漏。這里我沒有引入連接池因為 Swing 桌面應用是單用戶模式并發(fā)量極低每次操作新建連接、用完即關就夠了。如果后續(xù)你把它改造成多用戶并發(fā)訪問再考慮換成 HikariCP但現(xiàn)在不要過度設計。4.2 核心選課事務先查容量再插入最后更新計數(shù)下面是選課功能里最關鍵的一段代碼。我把它寫在SelectionDao.selectCourse(int studentId, int courseId)方法里這個方法要承擔兩個職責一是檢查課程是否已滿、學生是否已選過二是完成插入選課記錄并更新課程已選人數(shù)。整個過程必須在一個事務里執(zhí)行否則在“檢查容量”和“插入記錄”之間如果其他線程也執(zhí)行了同樣操作就可能導致超選。package com.course.dao; import com.course.util.DBUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class SelectionDao { public boolean selectCourse(int studentId, int courseId) { String checkCourseSql SELECT max_students, selected_count FROM course WHERE id ? FOR UPDATE; String checkSelectedSql SELECT id FROM selection WHERE student_id ? AND course_id ?; String insertSql INSERT INTO selection (student_id, course_id) VALUES (?, ?); String updateCountSql UPDATE course SET selected_count selected_count 1 WHERE id ?; Connection conn null; PreparedStatement checkCourseStmt null; PreparedStatement checkSelectedStmt null; PreparedStatement insertStmt null; PreparedStatement updateCountStmt null; ResultSet rs null; try { conn DBUtil.getConnection(); // 開啟事務關閉自動提交 conn.setAutoCommit(false); // 第一步鎖定課程行防止并發(fā)超選 checkCourseStmt conn.prepareStatement(checkCourseSql); checkCourseStmt.setInt(1, courseId); rs checkCourseStmt.executeQuery(); if (!rs.next()) { conn.rollback(); return false; // 課程不存在 } int maxStudents rs.getInt(max_students); int selectedCount rs.getInt(selected_count); if (selectedCount maxStudents) { conn.rollback(); return false; // 課程已滿 } // 第二步檢查是否重復選課 checkSelectedStmt conn.prepareStatement(checkSelectedSql); checkSelectedStmt.setInt(1, studentId); checkSelectedStmt.setInt(2, courseId); rs checkSelectedStmt.executeQuery(); if (rs.next()) { conn.rollback(); return false; // 已經(jīng)選過這門課 } // 第三步插入選課記錄 insertStmt conn.prepareStatement(insertSql); insertStmt.setInt(1, studentId); insertStmt.setInt(2, courseId); insertStmt.executeUpdate(); // 第四步更新課程已選人數(shù) updateCountStmt conn.prepareStatement(updateCountSql); updateCountStmt.setInt(1, courseId); updateCountStmt.executeUpdate(); // 全部成功提交事務 conn.commit(); return true; } catch (SQLException e) { if (conn ! null) { try { conn.rollback(); } catch (SQLException ignored) {} } e.printStackTrace(); return false; } finally { DBUtil.close(conn, insertStmt, rs); } } }這段代碼的邏輯說明如下。第一步里FOR UPDATE是關鍵它會在事務期間鎖住course表里那一行其他事務要更新同一行時必須等當前事務提交或回滾。第二步的重復檢查能攔截大部分重復插入但由于應用層可能并發(fā)執(zhí)行數(shù)據(jù)庫層的外鍵約束和UNIQUE索引仍然是最后的兜底防線。事務的提交或回滾都放在try-catch里任何一個步驟失敗都會把所有改動回滾避免出現(xiàn)“選課記錄插入成功但課程已選人數(shù)沒更新”的數(shù)據(jù)不一致。這里有個參數(shù)值得你注意setAutoCommit(false)必須在getConnection()之后、第一條 SQL 執(zhí)行之前調(diào)用如果放在finally里再改回去就沒有意義了。另外這個事務里rs變量在第一步和第二步之間重復使用我每次執(zhí)行完查詢后就繼續(xù)復用同一個ResultSet其實這是有風險的因為同一個Statement上復用ResultSet會關閉前一個結果集。好在這里第一步的rs在第二步執(zhí)行前已經(jīng)用完了所以沒有踩坑但更規(guī)范的寫法是為每一步查詢單獨準備Statement和ResultSet。這是我在實際開發(fā)中踩過的坑所以特別提醒你。4.3 Swing 事件線程按鈕點擊之后代碼跑在哪里Swing 是單線程模型所有界面更新必須在事件分發(fā)線程EDT上執(zhí)行。這里有個常見的做法是在按鈕的事件監(jiān)聽器里直接調(diào)用SelectionDao.selectCourse()然后根據(jù)返回值彈出JOptionPane提示框并刷新表格模型。這個做法對于課程設計來說沒有問題因為本地數(shù)據(jù)庫查詢很快你不會感受到界面卡頓。但如果你把項目擴展到網(wǎng)絡數(shù)據(jù)庫或者數(shù)據(jù)量變大就需要在SwingWorker里執(zhí)行 JDBC 操作避免 EDT 被數(shù)據(jù)庫 IO 阻塞導致界面無響應。下面這段代碼是選課按鈕的典型實現(xiàn)我把刷新表格數(shù)據(jù)的邏輯一起寫進去btnSelectCourse.addActionListener(e - { int selectedRow courseTable.getSelectedRow(); if (selectedRow 0) { JOptionPane.showMessageDialog(this, 請先在表格中選擇一門課程); return; } // 從表格模型取課程 ID注意這里是 model 的索引不是 view 的索引 int courseId (int) courseTableModel.getValueAt(selectedRow, 0); boolean success new SelectionDao().selectCourse(currentStudentId, courseId); if (success) { JOptionPane.showMessageDialog(this, 選課成功); loadMyCourses(); // 刷新“我的課程”表格 loadAllCourses(); // 刷新全部課程表格更新已選人數(shù) } else { JOptionPane.showMessageDialog(this, 選課失敗課程已滿或已選過該課程); } });這里有一個培訓時經(jīng)常被忽略的細節(jié)JTable的getSelectedRow()返回的是視圖模型view的行索引而表格數(shù)據(jù)我們存放在DefaultTableModel中兩者在表格經(jīng)過排序或篩選后可能不一致。如果課程表格只是順序展示沒有排序功能那么 view 索引和 model 索引是一致的但如果你加了TableRowSorter排序就必須用table.convertRowIndexToModel(selectedRow)轉換。我在做這個系統(tǒng)時加過排序功能結果選課選錯了課程所以在這提醒你拿到選中行以后第一件事就是做索引轉換否則容易給學生選錯課。5. 避坑與排查實訓報告里最容易翻車的 5 個細節(jié)5.1 中文亂碼不是數(shù)據(jù)庫的鍋是連接參數(shù)沒帶對現(xiàn)象登錄界面顯示中文正常但課程列表里所有中文都變成“”。原因數(shù)據(jù)庫表已經(jīng)是utf8mb4但 JDBC 連接字符串里沒有characterEncodingutf8導致客戶端和服務器之間的字符集不一致。解決在db.properties或DBUtil里把 URL 改成jdbc:mysql://localhost:3306/course_select?useUnicodetruecharacterEncodingutf8同時確認 IDEA 里項目的文件編碼是 UTF-8不要用 GBK。另外如果你發(fā)現(xiàn)INSERT語句傳中文參數(shù)亂碼檢查PreparedStatement的參數(shù)是否在 setString 之前就經(jīng)過了正確編碼一般加連接參數(shù)后這個問題會一并消失。5.2 mysql-connector 版本與 MySQL 服務器版本不匹配現(xiàn)象程序能編譯但運行到Class.forName(com.mysql.jdbc.Driver)時報 ClassNotFoundException或者連接時報Communications link failure。原因MySQL 8.0 的驅(qū)動類名改了你用 5.1.x 驅(qū)動連 8.0 服務器會失敗。解決確認你的 lib 目錄下 jar 包版本。如果是 8.x驅(qū)動類名是com.mysql.cj.jdbc.Driver并且 URL 里要帶serverTimezone。我一般直接在 MySQL 官網(wǎng)下載mysql-connector-j-8.0.30.jar然后導入 IDEA 的 Project Structure Libraries。這個坑在實訓報告里值得寫一段因為它是 Java 連接數(shù)據(jù)庫最典型的升級兼容問題。5.3 重復選課成功應用層檢查被繞過現(xiàn)象連續(xù)快速點擊“選課”按鈕兩次數(shù)據(jù)庫里出現(xiàn)兩條一樣的選課記錄。原因并發(fā)時兩個線程都通過了checkSelectedSql的檢查然后先后執(zhí)行了插入。解決不要只依賴應用層判斷數(shù)據(jù)庫里的UNIQUE KEY uk_student_course (student_id, course_id)是最后防線。當插入第二條時MySQL 會拋出DuplicateKeyException你的catch (SQLException e)會捕獲它并回滾。為了讓實訓報告更好看我建議你在這個 catch 里判斷e.getErrorCode() 1062然后提示“您已選過這門課”而不是顯示“選課失敗”這種模糊文案。5.4 Swing 界面卡死JDBC 操作阻塞了事件分發(fā)線程現(xiàn)象點擊“加載全部課程”按鈕后窗口變成白屏光標轉圈幾秒鐘后才恢復。原因MainApp直接調(diào)用 DAO 查詢數(shù)據(jù)庫執(zhí)行時間較長時阻塞了 EDT。解決最簡單的做法是在查詢方法里加一個Thread.sleep(100)模擬慢查詢?nèi)缓蟾挠肧wingWorkerVoid, Void在后臺線程執(zhí)行查詢在done()方法里更新表格模型。不過對于本地 MySQL 和幾千條數(shù)據(jù)不這樣做也感覺不出來。我的建議是實訓報告里可以寫這個方案但代碼里不必過度設計只要答辯時能解釋清楚 EDT 模型就行。5.5 關閉主窗口后 Java 進程不退出現(xiàn)象點窗口右上角關閉按鈕界面消失了但 IDEA 里程序還在運行進度條一直是綠色。原因沒有設置setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)默認是HIDE_ON_CLOSE窗口隱藏了但 JVM 還在跑。解決在JFrame構造函數(shù)里加this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);。這算是最基礎的 Swing 常識但幾乎每屆都有學生在這上面踩坑因為光標點在窗口右上角時根本沒意識到只是隱藏。也有同學用DISPOSE_ON_CLOSE配合System.exit(0)效果一樣但EXIT_ON_CLOSE是最直接的。6. 把項目做成能答辯的樣子從報表導出到體檢清單項目到了收尾階段除了選課、退課這些核心功能外教務管理員通常需要把選課名單導出來存檔。一個實用的技巧是直接在 Swing 界面里用JFileChooser選擇保存路徑然后用FileWriter把ResultSet的內(nèi)容寫成 CSV 文件。這個功能不需要引入第三方庫二十行代碼就能完成而且容易在答辯時演示。我只保留一個建議——先寫表頭再寫數(shù)據(jù)行用英文逗號分隔中文內(nèi)容加雙引號這樣用 Excel 打開時不容易亂。下面是一個簡易的導出實現(xiàn)private void exportSelectionToCsv() { JFileChooser chooser new JFileChooser(.); chooser.setDialogTitle(導出選課名單); int result chooser.showSaveDialog(this); if (result ! JFileChooser.APPROVE_OPTION) { return; } File file chooser.getSelectedFile(); if (!file.getName().endsWith(.csv)) { file new File(file.getAbsolutePath() .csv); } String sql SELECT s.student_no, s.name, s.major, c.name AS course_name, sc.select_time FROM selection sc JOIN student s ON sc.student_id s.id JOIN course c ON sc.course_id c.id ORDER BY c.id, s.student_no; try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql); ResultSet rs ps.executeQuery(); BufferedWriter writer new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), UTF-8))) { writer.write(學號,姓名,專業(yè),課程名稱,選課時間\n); while (rs.next()) { writer.write(String.format(\%s\,\%s\,\%s\,\%s\,\%s\\n, rs.getString(student_no), rs.getString(name), rs.getString(major), rs.getString(course_name), rs.getString(select_time))); } JOptionPane.showMessageDialog(this, 導出成功 file.getAbsolutePath()); } catch (Exception ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(this, 導出失敗 ex.getMessage()); } }這里用try-with-resources把連接、語句、結果集和文件流都收口是 Java 7 以后的推薦寫法即使有異常也會自動關閉資源。輸出到 CSV 文件時用了OutputStreamWriter指定 UTF-8 編碼防止 Excel 打開亂碼。注意String.format里的占位符順序要和writer.write的拼接保持一致一般我在開發(fā)時如果導出的表格列很多會先在一張紙上畫出表頭順序再寫代碼這樣不容易出錯。答辯演示時除了導出功能我還會在實訓報告里附上一份“項目運行環(huán)境清單”包括 JDK 版本推薦 8 或 11、MySQL 版本5.7 或 8.0、IDEA 版本2019.3 及以上均可、mysql-connector-java-8.0.30.jar 以及數(shù)據(jù)庫初始化腳本。這個清單看起來不起眼但評委老師最常問的就是“你換一臺電腦能跑起來嗎”你把這幾個版本信息寫清楚能省掉不少追問。另外我習慣給項目根目錄配一個 README.txt里面寫清楚三步啟動流程先用 MySQL 執(zhí)行sql/init.sql再在 IDEA 導入項目最后修改DBUtil.java里的數(shù)據(jù)庫密碼為本地密碼。這樣哪怕過了一個月再回來看這個項目也能快速接手。最后說一個我自己的教訓我在早期做這類課程設計時總是忍不住往項目里堆功能比如加一個“公告板”模塊加一個“課程評價”模塊結果數(shù)據(jù)庫表越來越多代碼越來越亂最后連自己都理不清外鍵關系。后來我?guī)W生做項目時都會先讓他們把核心流程走順——學生登錄、選課、退課、管理員審核、統(tǒng)計報表一個功能只能有一個界面、一個 DAO 方法以及一段事務邏輯做完這些之后其余的可選功能都只是錦上添花。Selbst當老師問起“你的項目有什么亮點”時你不必說“界面特別好看”你可以說“我的選課事務能保證數(shù)據(jù)一致”這個說服力強得多。希望這些經(jīng)驗和代碼片段能幫到你祝你的選課管理系統(tǒng)一次通過答辯。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天干天天射综合网| 丁香五月在线伊人| 色婷婷五月综合| 99在线观看| 久久久中文| 婷婷五月色亚洲| 狠狠干综合网| 欧美五月婷婷综合| 99网| 99色热视频| 五月噜噜噜色综合| 成人婷婷| 中文字幕欧美日韩VA免费视频| 婷婷五月天亚洲精品| 五月婷婷很很色| 天天爽天天爽| 97韩国久久电影院| 婷婷五月天深爱| 51XX嘿嘿午夜无码| 嫩BBB槡BBBB搡BBBB| 色婷婷狠狠久久综合五月| 99婷婷五月天激情| 第九色区AV在线| 日本久久婷| 丁香六月av| 日本乱论99| 久久精品一区二区三区四区| 久久婷婷五月综合| 91九色丨国产丨爆乳| 五月天成人在线| 国产一级片| 丁香五月天堂网AV| 欧美日韩色色| 大香蕉 婷婷| 99热欧美| 色墦五月丁香| 久久9视频| 婷婷五月天电影区小说区| 九九99在线免费在线观看视频| 婷婷久久爱| 99re思思热久久| 五月天亚洲色| 丁香五月天啪啪| 99热骚货| 99色一| 人人色性网| 9久热| 亚洲操逼片| 亚洲av成人在线| 99超碰人人| 9视频在线成人网站| 色天堂在线| 欧美综合在线五月天色婷婷| 99秘 在线| 五月婷婷六月丁香激情深爱| 无码九九| 思思色综合网站| 久久久人妻久久久| 丁香五月激情天AV无码| 99热这里精| 婷婷五月天亚洲综合网| 久久精品系列| www五月| 丁香色婷婷| 日韩AV免费电影在线播放| 99这里只有精品视频免费| 色婷婷色九月| 五月丁色AV| 激情五月天开心网丁香无码| 狠狠干综合网| 天天狠天天叉| 久久这里只有精品视频15 | 成人 在线观看国产| 五月Huangsewang| 色色色五月天婷婷| 激情婷婷五月| 在线A色| 97色婷婷五月天| 久久ab| 狠狠爱激情网| 色综合99无码 | 丁香六月婷婷综合欧美| 99久久激情视频| 国产69久久久欧美黑人A片| 九九精品大香蕉| 伊人影院久久网| 97精品在线| 色VA| 五月丁香啪啪综合| 五月婷婷久久爱| 九九人人自拍| 久久久久99精品成人片| 思思re99视频在线观看| 久操人| 少妇高潮一区二区三区99欧美| 五月婷高清视频| 激情五月天激情五月天| 欧美噜一噜| 色五月婷婷天天操夜夜操| 丁香五月天堂网| 色播五月婷婷| 热99在线精品| 99久久玖玖| 五月天色综合| 99热9999| 欧美精产国品一二三区| 国产小网站| 久久99热这里只有| 婷婷久草| 色色色在线| 五月综合777| 日本激情91| 国产精品久久久久久久久久免费| 成人在线网址| 伊人网碰碰| 亚洲电影在线观看| 婷婷色播六月无码| 九九热精品| www:99热视频| 日韩色五月| WWW.桔色成人.COM| 婷婷五月天激情偷拍| 九九99热| 日本婷久久| 色久五月天| 天天操夜夜操| 日本精品人妻无码77777| 偷拍99在线视频观看| 五月六月婷婷激情网| 色婷婷五月天久久| 久久婷婷东京热大香樵| 婷婷五月天在线观看免费 | 午夜婷婷久久| 中文在线成人| 五月色婷婷影院| 99热在线观看精品免费| 中文字幕综合色| 99热欧| 五月天色色网站| 久久五月情| 五月天激情综合10p| a久久| 九九热九九| 丁香狠狠色婷婷| 97sese婷婷| va婷婷| 九九色婷婷五月天| 停停五月天激情网 | 男人的天堂av俄罗斯热| 色色AV色色色东莞| 六月婷婷综合久久| 五月综合久久| 思思视频这里是精品| 日韩成人无码人妻| 梁铮版蜘蛛女在线观看| 日本人人超碰| 色情五月综合婷婷| 99久久综合网| 国外亚洲成AV人片在线观看| 呦呦视频无码播放| 久久人操-久草婷婷-成人AV| 五月丁香 啪啪| 五月婷婷成人| 色五月婷婷 成人| 美女激情综合| 深爱激情四射| 婷婷影院欧美| 色日本五月天| 色欲五月丁香| 丰满老熟妇BBBBB搡BBB| 五月综合婷婷久久在线| 欧美日韩成人在线网| 久久激情五月婷婷| 五月天婷婷久久| 五月天亭亭俺也| 亚洲一个色| 99久久久久| 一區四區歐美日韓| 一婬一伦一区二区三区| 97人人超| 丁香五月激情婷婷婷婷在线观看| 噜噜噜噜婷婷五月天| 玖玖热视频| 久久久er热| 色五月婷婷7777| 婷婷综合激情| 成人小说 五月天 婷婷| 五月天婷婷色色网| 中字幕视频在线永久在线观看免费| 综合五月亭亭9| 激情都市另类| 丁香五月婷婷啪啪| 色开心五月婷婷丁香HD| 五月婷婷久久综合| 五月综合六月婷婷| 91婷婷丁香五月天免费视频网站| 超碰人人妻| 中文在线成人| 久噜久噜| 五月激情丁香久久综合网| 激情5月婷婷| 91人操人人人操人| 婷婷噜噜| 天天色伊人| 看逼中文字幕| 五月婷婷很很色| 婷婷丁香五月综合| 亚洲综合狠狠艹| 成人五月天丁香婷| 色婷婷影音| 天天狠狠夜夜狠狠2023| 免费亚洲婷婷| 欧美狠狠地| 婷婷丁香五月亚洲欧美| 99热亚洲精品| 婷婷伊人五月丁香天堂网| 婷婷激情小说| 五月丁香啪啪综合| 色色色色热| 日日干综合| 任你爽精品免费视频6| 日韩艹比| 99热这里| 色色色综合网| 亚洲小视频免费播放| 色婷婷香蕉在线| 成人视频一区| 五月婷婷狠狠干| 丁香婷婷综合激情五月色| 91久热| 久久蜜臀婷婷| 婷婷激情啪啪| 99啪在线视频| 综合久久久婷| 4399伦理午夜| 中文字幕综合| 欧美日韩123| 91VIP在线观看| 免费看欧美成人A片无码| 97精品综合| 天堂五月婷婷| 五月色色色| 开心婷婷五月| www.99婷婷| 婷婷亚洲欧美丁香五月| 亚洲综合99| 色婷婷裸体色性在线| 99热这里只有精品69| 亚洲国产婷婷色五月| 久草狼人| 色色丁香婷婷综合| 久久激情五月| 青青草a在线| 久久98| 天天射美女| 婷婷婷久久久| 色色综合成人网| 久久久人妻久久久| 开心深爱五月天| 久久这里这里有精品免费视频| 九月影院義母在线播放| 日日干日日色| 丁香六月亚洲综合| 开心五月激情网| 五月婷婷综合丁香视频| 东京热伊人| 色五月网址| 天天狠狠夜夜狠狠2023| 欧美五月停| 色五月婷婷777| 97干在线视频精品店| ztEJj| 伊人影院久久网| 国内久久久精品99| 丁香五月婷婷六月婷婷| 天天成人丁香美女AV| 丁香激激情网| 人妻激情在线| 白人荫道BBWBBB大荫道| 五月天大香蕉AV| 99热99极品观看| 丁香五月天堂网| 深情六月婷婷综合久久| 五月天激情无码| 天天干一干| 激情五月天婷婷| www五月| 五月天sesese| 香蕉久久国产AV一区二区| 久久色五月| 激情都市五月天| 色婷婷成人五月| 婷婷五月激情的图片| 婷婷五月丁香六月| 综合婷| AA丁香综合激情| www.五月天性.com| 激情五月丁香社区| av操B网站| 99日精品视频| 久久欧洲综合网| 婷婷五月天AV在线| 日韩av变天就操逼不卡区| 99re在线免费视频| 五月丁香婷婷激情在线| 熟女激情五月天| 亚洲最大成人综合网720P| www九月婷婷| 亚洲av成人在线| 99黄色| 色久九| 午夜伊人大香蕉| 色情五月天。| www,色色色网站| 久久性爱视频| 久久婷.com| 丁香五月久久综合| 久久婷五月| 日本9区视频| 五月丁香六月激情综合啪啪| 99热都是精品| 182TV大香蕉| 99精品视频在线| 影音先锋一区| 丁香五月婷婷综合精品素人| 夜夜操激情| 天天日天天色| 亚洲高清在线| 182TV大香蕉| 九九热视频精品999| 99热精品在线| 99热精品在线播放| 欧美97色| 久久五月天婷婷| 久久久久人妻精品| 又大又粗九一在线| 五月情综合| 丁香五月久久| 久久这里都是精品免费| 深爱五月婷婷| 亚洲艹网| 久久色情| 99热6这里只有精品6| 中文AV在线观看| 日本天堂网站99| 色五月天天| 天天爽天天操| 五月丁香婷婷综合在线| 婷婷五月天av| 五月丁香 久久久| 婷婷精品| 91艹人| 色综合天天综合成人网| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 99精品偷自拍| 婷婷丁香一月| 五月丁香婷婷狠狠操| 五月天伊人日日噜影片AV| 婷婷五月天丁香花| 五月丁香六月婷婷综合网| 婷婷色网| 激情丁香五月婷婷啪啪| 丁香五月婷婷综合91| 日日.c| 97色五月丁香婷婷| 五月婷婷激情网| 成人短视频免费| 婷婷久久18| 这里只有精品9| 丁香操逼| 婷婷欧美综合| 天天综合色丁香| 我爱大香蕉| 亚洲第一色网站| 国产人妻人伦精品一区二区| www.色擼擼.com| 99久久終合| 99热这里只有精| 99热1| 91碰碰| 影音先锋女人av鲁色资源网小说免费| 日韩黄色影院| 偷拍91九色| 精品久久99| 国产精品国产成人国产三级| 天天做天天摸| 操操操操操操婷婷五月天| 国外亚洲成AV人片在线观看| av色色国产| 亚州操操| 爱爱网址9| av狠狠操| 九九激情网| 亚洲欧洲中文日韩久久AV乱码| 久久思思精品| 人人草公开操| 色五月婷婷青娱乐| 天天做天天爱天天爽| 欧美婷| 久久3p| 九九99久久| 青青久在线视频免费观看| 婷婷五月丁香伊人| 精品国产va久久久久| 五月天天丁香婷婷| 五月婷在线观看| 久色网五月| 五月激情网站| 天天插操| 婷婷中文字幕| 97人人干人人操| 森林影视大全,最好看的2019年视频 | 99精品偷自拍| 丁香色婷婷| www.五月丁香av| 亚洲第一成人无码A片| 最近中文字幕大全免费版在线 | 久久九九@| 丁香五月六月婷婷自拍| 黄网在线免费观看| 丁香激情五月少妇| 色婷婷五月天av在线| 欧美精品99| 伊人9999| 六月色狠狠色| 丁香六月婷婷激情综合| 久久最新色| 操碰色一区就去操| 五月天激情四射| 五月婷婷导航| 日韩1区2区| 先锋男人99资源| 久久激情五月婷婷| 色色com| 日批在线看| 99婷婷| 日本视频欧美观看免费| 另类国产欧美视频| 91在线97视频| 婷婷香蕉精品| av网站不卡在线| 99在线精品观看99| 婷婷在线播放| 天天日天天操心| 日韩成人中文字幕| 欧美大香蕉视频| 婷婷丁香人妻天天爽| 99热国产在| 成人视频一区| 五月丁香| 精品在线| 五月香蕉婷婷| 噜噜噜精品欧美成人在线观看| 99久久99热| 伊人91| 99视频超级精品| 久久五月丁香婷婷| www.超碰| 99色最新在线视频| 六月色狠狠色| 丁香五月六月激情| 天天操屄网| 色婷婷五月天小说| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 日本人妻久久| 九色在线观看91av| 国产97色在线| 亚洲无码成人网| 就要去操亚洲成人精品五月天丁香婷婷| 六月丁香婷| 久久久中文| 精品久热| 欧美性爱特黄一级aaaassss| 日日操人人操| 桃色五月天| 操人久久| 成人短视频在线观看| 免费黄色片子| 欧美综合五月天婷婷tin| 97搞在线| 9l视频自拍9l九色9l成人| www.婷婷,com| 婷婷五月激情的图片| 色久在| 久久婷婷操| 激情五月综合网最新 | 激情婷婷丁香色五月| 日韩操| 99这里| 色五月色五天色情网| 99精品在线| 极品人妻VIDEOSSS人妻| 五月丁香中文婷婷中文| 婷婷五月成人| 欧洲第一久色| 色色色干| 北条麻妃九九九国产精品视频| 精品一区久热| jiZZdr| 久热无码| 久久九九re热| 婷婷五月天伊人在线| 无码婷婷五月天| 天天操综合网| 丰满老熟妇BBBBB搡BBB| 中文字幕av亚洲| 婷婷香香五月| 欧美婷婷五月天| 91啪啪| 免费碰碰视频久| 夜夜爱伊人| 五月色情网| 青青草轻轻操| 十二区无码| 97人人干| 天天做天天爱天天玩| 1024日韩| 婷婷久久五月天丁香| 深爱激情四射| 五月婷婷基地| 丁香六月青青草| 九九热视频首页/这里只有精品| 色婷婷精品| 丁香啪啪| 色色丁香五月天| 婷婷激情五月天在线| 六月婷婷中文字幕| 久久香蕉福利| 天堂草在线观看| 丁香五月综合| 99热大香蕉| 激情五月天伊人av| 一级片操逼视频| 国产人妻操逼| 色婷婷欧美| 99精品在线下载| 这里只有精品视频99| 碰超在线九色| 婷婷五月六月丁香综合| 日本欧美成人片AAAA| 久久久久亚洲AV成人无码电影| 五月综合精品| 桃色五月婷婷| www.久久66| 思思热在线观看| 丁香五月婷婷超碰在线| 91九色中文字幕女在线观看| 九九精品少妇| 色色色成人网| 亚洲在线成人| 亚洲精品激情| 超碰京东热av男人的天堂| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 日韩AC在线免费观看| 九九热视频网站| 人妻中文在线| www色色com| 成人一级片| 五月婷婷婷综合网| 亚欧州精品视频| 色婷婷五月影院| 色五月天成人| 4438成人电影| 俺也去综合| 69凹凸成人综合网| 久草热8精品视频在线观看| 美女精品一级不卡视频| 久久性爱视频| 日韩av在线免费观看| 狠狠操狠狠操| 91人人操| 99思思| 五月丁香大香蕉| 99视频只有精品| 天天草人人摸| caop视频| 人人摸人人搞| 成人av在线网站| 亚洲操逼网| 精品五月视频婷婷在线观看| 天天插天天射| 久热只有这里精品| 五月婷婷激情日本| 丁香婷婷五月| 精品福利911| 丁香六月婷婷激情| 九九精品综合| 开心深爱五月天| 九九色情网站| 丁香婷婷激情| 色七色九九| 九九婷婷激情综合网| 丁香五月六月婷婷殴美综合| 五月丁香婷草| 日本人妻伦在线中文字幕 | 综合久久十| 另类综合色| 色欲久久综合| 色色色com| 少妇搡BBBB搡BBB搡毛茸茸 | 五月天婷a在线| 新激情婷婷| 色色色五月婷| 激情五月天之五月婷婷| WWW99热| 九九色逼| 五月丁香 狠狠爱| 色呦呦美女| 六月丁香婷婷亚洲中文玖玖| 亚洲免费av观看| 噜噜在线| 狠狠干在线| 99国产er热视频| 超碰成人在线免费观看| 色婷婷激情| 天天爽天天日天天舔| 丁香五月婷婷黑人妻黄色电影院| 激情九月丁香婷婷| 亚洲热久久| 五月天婷婷丁香社区| 中文字幕在线观看视频www| 草草女人亚洲| 丁香五月激情综合| 亚洲视频色婷婷| ss五月天激情| 99九无网码| 五月婷婷 婷婷五月 一区二区 久久久| 五月天婷综合| 99热成人在线| 99热这只有| 日本美女上人| 九九中文字幕九| 少妇人妻偷人精品无码视频新浪| 五月久久婷婷丁香| 亚洲欧美一区二区三区四区爱爱动图| 色色99色色| 久久久91| 久久精品系列| 国产第99页| 久久久99精品免费观看| 色播五月天激情| 偷拍91九色| 99热这里只有是亚洲国产| 人人操Av| 婷婷伊人| 婷婷 伊人 久久| 这里只有精彩亚洲视频推荐| 亚洲一区先锋影音| WWW.五月天9999| 色三级色三级| 久久婷婷丁香| 任你日热视频| 丁香色影院| 亚洲正能量欧美| 无码人妻丰满熟妇奶水区码| www.激情| 精品人妻伦一二三区久久| 97香蕉碰碰人妻国产欧美| 久久人人妻| 五月婷婷婷婷网| 五月婷婷欲色| 久久这里只有精品1| 亚洲五月丁| 管管補管管紱| 很很干在线视频| 情五月亚洲婷婷| 99热在线里有精品| 99热久久最新地址| 青青草日本亚洲| 这里只有精品在线播放| 五月天激情网页| 99色1| 久久视频九九视频| 九九色热视频| 五月天六月色| 色婷婷六月天| 五月丁香婷婷综合| 一本大道嫩草AV无码专区| 欧美色五月| 无码激情AAAAA片-区区| 懂色av粉嫩av蜜臀av| 国产成人综合亚洲| 99热九九九九| 999久久久国产精品| 亚洲综合一区二区| 日本99视频| 五月婷婷深深爱爱| 四色五月婷婷| 狠狠色噜噜狠狠狠狠狠色综合久久| 色婷婷亚洲综合网站| 日韩AV中文字幕在线| 91视频五月丁香| 六月激情婷婷| 五月天自拍视频| 亚洲情欲| 五月丁香六月婷婷网| 国产精品第一国产精品| 九九久久色| 国产婷婷综合| .操區COm| 国产VA亚洲VA96| 久久五月激情综合| 色婷婷五月天| 青青草原爱爱网| 99操视频| 日本熟女内射| 日韩欧洲亚洲| 五月天网址在线刘玥| 色综合色婷色基地| 思思热久久阴99| 成人电影丁香六月天| 夜色综合网| 99久久婷婷国产综合精品草原| 五月伊人91| 激情人妻综合| 色婷婷五月天成人网| XX色综合| 国产JK精品白丝AV在线观看| 91操在线观看| 夜夜天天久久婷婷| 丁香五月在线自慰| wwwav大香蕉| 久久伦乱| 人人人操97| 日日综合网| 丁香色情五月综合激情| 成人va在线观看视频| 婷婷播5月| 五月丁香色婷婷| 婷婷丁香五月色偷偷| AV美美午夜| 日本视频99| 五月婷婷很很色| 国产激情综合五月久久| 色五月天成人| 人人看人人要| 级情九色| 色色色色色色色色色色色色色97| 99热综合在线观看| 日韩AV大全| 狠狠色丁香婷婷| 激情影院免费视频婷婷五月天| 碰97久久| 99热99思午夜精品| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 婷婷六月偷拍| 五月在在观看| 丁香五月天堂网| 五月丁香婷草| 婷婷综合在线| 久久婷婷五月综合色和| 99热这里只有精品13| 色播五月| 久久婷婷热| 超碰人人91| 一级七香蕉| 五月久久丁香| 伊人网色婷婷五月天| 99这里只有免费的小视频在线观看| 五月色婷婷影院| 五月丁香五月丁香五月丁香五月丁香91| 草婷婷在线| 欧美人与性动交CCOO| 久er免费视频| www.狠狠| 久热9| 91性高潮久久久久久久久| www.99热在线| 色婷婷综合影院| 奇米网大香蕉| 99热碰碰| 久久九九玖玖| 五月丁香性爱| av在线观看免费| 色五月色五天色情网| 午夜成人AV在线| WWW久久久| 337p大胆噜噜噜噜噜91Av| 99热综合网| 婷婷综合五月天| 91干| 婷色人人狠| 99在线精品视频| 激情合网婷婷| 无码字幕中文| 激情五月婷婷五月| 国产色网站| 激情九月婷婷| 五月天色播网| 黄桃AV无码免费一区二区三区| 五月丁香婷婷激情在线| 日本www免费九九| 开心婷婷五月中文字幕组| 亚洲国产成人AV在线| 婷婷五月天天天| 影视av久久久噜噜噜噜噜三级| 婷婷天堂综合| 99精品这里只有免费视频| 热思思九九| 色播五月婷婷五月| 五月婷婷色综图片| 亚洲无码99| 青草热视频这里只有精品| 91人人人人人人人| 久久久ww| 中文字幕+乱码+中文字幕在线观看| 国产又爽又猛又粗的视频A片| 丁香婷婷久久综合在线| 欧美婷婷精品激| 91啪啪视频| 久久五月天激情视频| 葵花AV在线| 亚洲操逼片| 天天色综合色| 久久一品区| 色偷偷五月天| 六月婷婷久久大全| 日韩综合久久| 中字幕视频在线永久在线观看免费| 丁香六月婷婷一区二区三区| 亚洲99综合| 人妻丰满精品一区二区A片| 《蜘蛛女》梁铮1995| 超碰成人电影| 雪千夏麻豆| 大香蕉久| 人人人舔人人人操人人人摸人人人97 | 五月丁香综合网| 激情网婷婷婷| 日本va欧美va欧美va精品| 激情6月| 99久久婷婷国产综合| 久久久精久人妻| 男人天堂99| 久久九九激情五月天 | 这里只有精品偷拍| 99久久高清视频| 91久久久久久久| 天天日夜夜曹| 五月情婷婷五月| 九九干视频| 男人大jjc女人免费视频| 成人在线精品| www.成人婷婷综合| 99这里精品| 久久婷婷五月天激情四射| 曰韩五月丁香色婷婷无码| 欧美在线视频99| 五月丁花六月丁香综合| 婷婷六月丁香激情综合| 91碰| 婷婷激情五月视频| 久久婷婷超碰| 五月天婷婷色| 五月婷婷婷婷| 日本视频99| 欧美xx激情视频在线观看| 天天日夜夜草进麻麻的子宫| 啪啪综合网| 婷婷久久内射| 色97啪啪| 婷婷丁香五月社区亚洲| 蜜臀AV在线观看| 99精色| 玖玖无码中文| 丁香婷婷九月| 五月天婷婷久久视频| 开心五月婷婷在线| 五月婷婷综合色啪| 狠狠做六月爱婷婷综合aⅴ| 99热亚洲精品| a在线免费v| 狠狠综合久久综合| 国产精品成人网址| 亚洲无码 图片区| 午夜69成人做爰视频| 久久婷婷五月| 五月天色图| 热久久91| 丁香五月色色| 九色视频91| 九九亚洲综合| 美女激情综合| www.婷婷亚洲基地| 情色五月天网站| 色五月激情综合| 色色色综合| 熟女网站久久| 久久久97| 婷婷丁香六月天| 综合网色| 中文字幕乱码亚洲精品一区| 免费看欧美成人A片无码| 成人综合网站| 日韩综合成人| 91a片爽| 97超碰在线观看免费| 色色色五月天激情资源| 久久久精品99| 91网站黄| 欧美性爱五月天| 欧美五月丁香在线| 五月天婷婷爱丁香中文字幕| 天天日,夜夜爽| 久热播这里只有精品| 五月天精品视频| 另类小说五月天| 五月婷婷99热| 久久久久人妻精品| 欧美槡BBBB槡BBB少妇| 欧美成人在线观看| 激情婷婷五月综合| 亚洲性视频| 激情九月婷婷| 久久香蕉婷婷五月天| 婷婷六月色播| 五夜丁香| 东京热免费视频| 五月停视频天堂| 九月婷婷综合网| 色吧五月| 天天成人综合视频| 九九在线精品| 五月天色影院| 男人大jjc女人免费视频| 亚洲成人无码免费| 国产成人+综合亚洲+天堂| 日日干综合| 激情五月天综合| 成人网站在线观看视频| 伊人无码高清| 日都一级A片| 五月婷婷激情综合在线| 色五月天在线| 国产 亚洲 在线| 免费观看全黄做爰的视频| 婷婷五月乱交换| 婷婷亚洲日本| 婷婷五月天色| 思思热在线| 婷婷丁香六月天激情四射网| YJLZZJLZZ亚洲乱熟无码| 五月丁香天堂网婷婷| 欧洲色色| 国产精品第一国产精品| 99热线观看9| 国产寻花在线| 99热主页日本| 91九色偷拍| 国产成人综合网| 婷婷五月图片小说网| 婷婷色五月天在线| 黄色AAAA韩国guochansanji| 日本久久99| www五月天com| 黄桃AV无码免费一区二区三区| 亚洲免费视频网站| 天色综合网站| 亚洲欧美成人在线| 丁香婷婷综合喷| 热99热| 一起草Av| 另类图片五月激情| 久久五月天激情视频| 9|无码久久久久久| 99草在线免费观看视频| 欧美成性色| 最新久久网址| 大香蕉啪啪啪啪啪啪| 五月丁香激情综合网官网| 碰碰91| 伊人久久综合| 国产精品久久7777777精品无码| 99热这里只有精| 久久总和99| 操骚货在线| 亚州成人综合在线| 人人干天天操五月丁香| 99视频在线精品免费观看2| 婷婷五月丁香色综合| 天天色综合综合| 日韩精品AV一区二区三区| 大香蕉综合在线| 久久思思热| 9久热在线视频| 99热精这里只有精品| 激情综合婷婷| 五月婷婷综合网| 粉嫩av蜜桃av蜜臀av| 成人啪啪色婷婷久| 99综合色| 在线成人国产| 开心婷婷五月中文字幕组| 国产无遮挡又黄又爽免费网站| 五月天婷婷激情网| 五月婷婷大香蕉| 伊人激情综合网| 天堂中文国产| 超碰在线观看9| 欧美日韩成人在线网站| 99久热精品在线| 久久婷婷五月天蜜桃| 婷婷酒色网| 日本激情综合| 天天久久婷婷| 99无吗| 人碰91| 婷婷色片| 超碰成人在线观看| 五月丁香色情| 欧韩性爱| 色婷婷亚洲婷婷| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 好叼操在线观看| 99愛国产| 一本九九色| 人妻久久人妻久久第一区| 艹天天射| 外国碰视频网站97| 亚洲综合九九| 亚洲综合激情五月久久| 天堂婷婷五月在线| 性色做爰片在线观看WW| 天天色色婷婷| 五月天综合色| 国产成人AV在线播放| 91人人网| 激情五月综合亚洲另类| 五月天自拍网| 一本婷婷丁香久久| 五月天开心婷婷激情网站| 97极品在线| 五月丁香影院| 欧美精品久久久久久视频观看| 亚洲无AV在线中文字幕| VfJxEwPH| 五月天婷婷綜合院| 激情图片五月天| 99 这里只有精品| 欧美日韩国产成人在线| 噜噜操操| 激情小说五月丁香在线视频观看视频| 色狠狠色噜噜AV天堂五区| 五月婷婷六月开心| 久久久性爱视频| 丁香五月影院| 五月婷婷久草在线视频综合| 色噜噜五月天| 色五月激情综合网| 99热久草| 欧美大香蕉视频| 99热在线观看| 亚洲综合热| 99在线观看| 丁香五月花影院| 另类图片五月天| 人人爱干人人爱草| 超级碰碰碰久久网站视频| 五月丁香无码| 婷婷五月天激情综合| 五月丁香综合网| 婷婷五月色播放| 丁香五月开心五月激情| 亚洲av综合网| 嫩模草| www色色色com| 啪啪亚洲综合| 婷婷偷拍网| 亚洲AV电影美洲AV电影| 丁香六月激情| 99精品热| 婷婷五月天色网久| 综激情网| 思思热99er| 丁香五月在线播放| 99亚洲视频| 激情五月无码| 激情六月丁香| 99情色五月天| 婷婷色网| 99色网站| 亚洲第一精品网站| 久久6这里只有精品| 黄网在线观看免费| 99久操视频| 久久亚洲婷婷| 国产精品电影网| 日韩精品无码99| 五月婷婷中字在线| 五月婷婷丁香大陆免费| 婷婷五月天国产性感美女演员久久久久| 99这里只有精品|v| 久久这里只有精品热在99| 婷婷五月丁香五月天| 婷婷性爱| 亚洲小电影在线观看黄999| 免费碰碰视频久| 五月丁香综合网| 99日本精品视频热| 丁香婷婷社区| 久久视频这里99| www婷婷色情网| 99热永久在线观看| 久久久99久久| 久久久jd| 婷婷综合另类| 亚洲色模骚货| 亚州激情在线视频| 91干| 久久久久亚洲AV无码网影音先锋| 国产女生爱爱AA| 九九无码AV| 国产熟妇的荡欲午夜视频| 色色色色热| 九九RE视频在线精品| 色色五月婷婷久久| 99这里有精品视频| 99操逼| 噜噜色com| 九九免费精品| 热99精品视频| 日韩精品无码99| 久久在线人妻| 五月天狠狠干| 婷婷激情五月天小说| 91操操操| 亚洲综合视频一下| 我爱宗和色| www.伊人天堂偷偷婷婷| 夜夜www| 丁香五月婷婷亚洲另类| 丁香五月天激情综合网| 五月丁香色狠狠干大屄| 丁香婷婷五色月| 亚洲综合在线丁香五月| 人人操人av| 亚洲色情网站| 中文av网| 欧美久久网| 九色PORNY9l原创自拍| 久久综合九九| 超碰碰碰碰| 97在线观看| a级毛片一区二区免费视频| 国产av第一专区| 9热久久| www一起操| AV在线中文| 天天综合情| 婷婷五月AA五月在线| 日日撸天天干| 色亚洲欧洲| WWW,五月| 青青草五月天| 少妇出轨做爰高潮A片| 99热最新国内| 伊人色五月| 香蕉久久国产AV一区二区| 九九热这里有精品23| 99精品爱| 成年人丁香五月| 色九区| 99热国品| 91亚洲免费片| 超碰人人艹| 激情婷婷丁香色五月综合| 久久色五月天综合网| 久久精彩免费视频| 五月花激情| 青青草伊人婷婷| 色一情一乱一乱一区9| 国产精品大香蕉| 国产探花AV在线| 婷婷五月天美女21p| 深爱激情五月网| 亚洲天堂婷婷| 五月丁香综合啪啪| 狠狠干狠狠干| 婷婷五月日本| 久久综合影院 | 激情宗合 激情宗合| 无码激情| 婷婷香五月综合激情| 黄色成人网站在线播放| 99色综合| 天堂网色色| 亚洲色色在线| 五日激情综合| 五月丁香色婷婷| 五月婷婷狠狠久久| 天天看片日日夜夜| 丁香婷婷五月天在线视频| 五月天激情国产综合婷婷婷| AV在线不卡网站| 热九九在线| 深爱激情六月天| 综合激情五月丁香| 婷婷中文网站| 99综合婷婷五月| 91九色无码日韩| 伊人网色婷婷五月天| 婷婷色网站| 五月天激情视频网站| 九九热精品| 九九超碰人人| 五月婷婷丁香大陆免费| www.色五月.com| 国内久久婷婷| 色色色视频免费无码 | 日本无码专区| 天天爽在线视频| 激情小说婷婷| 色狠狠色综合久久久绯色aⅴ影视| 9久国产精品| 色亚洲欧洲| 亚洲亚洲人成综合网络| 九九99九九99偷拍视频免费看| 5月丁香六月婷婷| 九九色热| 日日噜噜夜夜狠狠久久丁香六月| 九九在线这里只有精品视频| 大香蕉手机视频| 五月天丁香网站| 激情五月婷婷五月| 色五月 婷婷, 大香蕉| 丁香五月六月久久综合 | 五月丁香基地| 国产精品涩涩涩视频网站| 操人91| 久碰婷婷视频| 久操人| 五月天激情AV| 亚洲无AV在线中文字幕| 人人草公开操| 亚洲综合九九| 1024操逼视频| 噜噜狠狠色综无码久久合欧美| 亚洲精品**不卡在线播he| 蜜乳.comcom| 久久久精品人妻| 丁香成人五月天| 婷婷99中文字幕| 成人在线日韩欧美| 五月婷婷五月天在线| 丁香五月激情综合久久| 婷婷激情欧美| www,黄色在线,con| 亚洲 在线 性爱| 日韩一区二区A片免费观看| 久久激情综合| 少妇人妻人伦A片| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 激情五月婷婷| 丁香六月婷婷综合麻豆| 97精品人人A片免费看| 亚洲天天免费| 欧美内射AAAAAAXXXXX| 色色丁香五月婷婷| 国产AV影片| 激情五月丁香激情综合网 | www.91有码.com| 成人αV视频免费观看| 色婷婷丁香五月天激情综合网| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 婷婷色五月情| 婷婷WWW久久|