99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
激情涩播| 九九色视频| 天天日天天色| 狠狠插狠狠插| 思思热久久婷婷五月天| 欧洲永久精品| 91热在线| 欧美人人女女精品综合五月天| 99综合视频一体| 五月婷婷香蕉| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 婷婷一本和五月丁香| 亚洲成人AV电影网| 97爱艹婷婷开心丁香激情综合| 超碰不卡在线| 人人草人| 国产欧洲欧洲精品久久| 亚洲丁香五月| 五月婷六月丁| 天天综合天天玩夜夜玩天天玩夜夜玩| 久久视这里只有精品| 日韩精品在线观看9| 97精品自拍| 色天天综合成人网| 国产精品国产VA片国产| 97涩涩丁香五月天| 6月丁香婷婷激情| 26.uuu丁香五月婷婷| 岛囯综合激情网| 婷婷在线精品| 婷婷丁香成人| 色99在线| 激情文学综合婷婷五月天丁香花| 思思久久99热只有频精品66| 国产偷人爽久久久久久老妇APP| 激情图片婷婷| 九九这里都是精品| www.夜夜操| 亚洲综合另类| 欧美日韩成人在线观看| 91九色|疯狂|高潮|对白|| 六月丁香VA| 激情五月婷婷在线区| 九九综合久久| 色综合色色| 激情久久丁香| www.色综合| 丁香激情五月| 99这里只有| 五月天激情四射网站| 亚洲精品午夜国产va久久成人| av在线超清中文| 天天射综合网站| 五月天婷婷基地综合网| 成人看片网站| 婷婷色五月天综合网| 五月激情另类| 99热视精品| 天天舔天天| 婷婷丁香五月久久| 亚洲色99| 一起草AV| 色爽干| 九九热精品在线| 99久久久99久久91熟女| 五月桃花网综合| 91九九热| 日本色频| 婷婷五月激情在线| 六月丁香综合| 乱精品一区字幕二区| 99欧美| 婷婷五月丁香五月丁香| 婷婷五月天美女视频| 亚洲五月天婷婷综合| 色婷五月| 婷综合| 囯产精品久久欠久久久久久九大| 成人做爰A片免费看视频| EEUSS鲁片一区二区三区| 北京熟妇搡BBBB搡BBBB| 亚洲午夜Av| 综合九九中文字幕| 天天色情站| 深爱开心激情网| WWW.色婷婷.COM| 日日操天天操| 色婷婷成人做爰A片免费看网站 | 亚洲午夜在线视频| 人妻精品在线| 亚洲亚洲永久无码777777| 九九婷婷网五月天| 色综合五月天| 丁香五月婷婷欧美激情-中文天堂最新版在线观看 | 99精品视频网站| 九九人人精品| 亚洲久久天堂| 精品五月丁香| 99久.| 中国女人做爰A片| 亚洲岛国电影| 激情五月激情综合俺也去婷婷小说| 五月激情婷婷开心五月| 五月天婷婷爱| 人人操婷婷| 色欲丁香| 吾爱AV导航| 成人网址在线观看| 操一操干一干| 99玖玖精品| 色婷婷伊人| 丁香五月婷婷精品视频| 狠狠色综合网| 五月婷婷av| 五月婷婷激情综合拍| www999日韩精品| 无码99| 午夜日韩久久久网站| 五月人人丁香婷婷五月人人丁香| 开心五月激情网| 99热8在线| 97久久草草超级碰碰碰| 亚洲狠狠干| 79精品视频在线观看,| 99ri国产精品| 综合色激情| 色综合五月天| 丁香五月狠狠在线观看| 99综合| 九九99热久久精品66中文字幕| 婷婷丁香五月激情中文字幕版| 99精品久久久久| 97人妻超级碰碰碰碰碰| 天天撸夜夜爽| 婷婷五月天性色| 9er热在线精品视频| 色偷偷综合| 色综合久久之分久久| 国产免费一区二区在线A片视频| 99热黄| 另类五月婷婷| 婷婷五月花| 影音先锋色婷婷| 欧美Va日本Va| 国产精品日日躁夜夜躁| 九色PORNY9l原创自拍| 色欲久久久久久综合网综合网| 人人做天天爱| 玖玖综合玖玖| 99热这里只有精品1025| 99久久久| 日本天天操| 国产成人网址| 天天干天天做| 丁香丝袜五月| www激情网站| 婷婷六月啪啪| 五月天操逼网| 激情丁香五月天| 99无码视频| 久久精品99| 色呦呦免费观看| 丁香五月影视| 丁香五月综合在线| 日本A片一区| 91婷婷五月天嫩女| 日韩欧美颜射| 人妻丰满精品一区二区A片| 婷婷免费成人视频| 婷婷五月丁香综合桃花色网| 深夜男女福利刺激影院一区完整| 96人人操人人操人人| 激情五月天丁香| 思思热精品在线视频| 色噜噜狠狠色综合成人99| 丁香五月色五月| 成人精品人妻| 少妇真实被内射视频三四区| 亚洲久久激情| 思思视频这里是精品| 日本精品人妻无码77777| 天天拍久久| 免费观看2018www黄色操逼网站| 五月丁六月香| 综合久久婷婷五月丁香| 伊人九九九久| 99性爱视频| 天天操天天爽天天爱| 欲求不满的人妻| 影音先锋天天日| 五月天社区| 五月天啪啪| www色五月天| 2022人人操人人看| 女人被躁到高潮嗷嗷叫小| 亚洲最大五月天成人网| 热99国产精品| 亚洲蜜乳AV| 婷婷色婷婷| 26uuu亚洲欧美| 色欲久久久久久综合网综合网| 丁香五月色情| 丁香五月AV| 五月丁香婷婷激情在线视频| 在线观看亚洲视频影院| 天天射天天操天天干| 婷婷久久五月天| 五月综合激情久久| 淫视馆AV在线| 中文字幕第四色.999| 天天插天天爽| 婷婷五月AV| 人妻久久久久久久久久| 国际国外精品欧洲南美洲专区无码不卡| 色色色色色色色色色色色色色色,网站| 五月综合久久| 91丨九色丨丰满人妖| 婷婷综合成人五月天| 久久99大全| 性欧美大战久久久久久久83| 九九热AV| 综合五月草| www.婷婷com| 五月天.com| 女高怪谈在线观看| 日撸夜撸日操| 亚洲综合婷婷五月天| 99热偷拍| 九久9精品| 激情网色五月| 婷婷五月天av小说| 两性婷婷丁香五月| 婷婷色影音天| 婷婷丁香成人色综合| 激情伊人五月天| 亚洲精品激情| 五月丁香六月综合基地| 五月婷婷婷婷婷| 色婷婷五月天激情久久| 影音先锋xfplay资源男人网| 99热只有精品综合| 色婷婷香蕉| 五月丁香久久呀| 精品9l九九九九九77777| 亚洲精品一区中文字幕乱码| 在线观看国产高清视频免费网站 | 99热8在线| 亚洲激情综合| 免费无码毛片一区二区A片| 色色色色热| 性欧美日本| 五月天婷婷丁香导航| 5月婷婷五月天| 亚洲一区二区无码蜜乳av| 六月米奇色综合| 青青操avbb| 亚洲综人色综网| 色婷婷亚洲婷婷| 亚洲天堂啪啪| 丁香九月综合| 日本成人噜噜噜噜噜| 婷婷五月天.com| 五月婷婷久久激情 | 久久怕怕视频| 超碰在线精品| 开心深爱激情网| 丁香五月婷婷影院| 五月婷婷综合激情小说| 青青操成人福利| 五月丁香婷婷激情爱爱| 青青草色在线视频观看| 色综合播放| 青青草视频福利| 天天日夜夜爽。| 婷婷五月美女直播| 亚洲第一成人无码A片| 天天搞天天色综合| 国产精品久久久久久久久久免费| 六月丁香婷婷开心综合基地| 一级A片天天操夜夜操| 亚洲AAAA网| 桔色成人在线| 成人午夜无码视频| 久久人妻熟女一区二区| 久久久香港| 1024手机在线观看看片_日韩精品| 亚洲综合久| 亚洲色色色色色| 六月婷婷狠狠色在线观看| 99 这里只有精品| 丁香五月精品| 久久综合中文| 婷婷丁香日韩五月| 日韩人妻在线观看| 色噜综| 99在线免费视频| 久久机热/这里只有精品| 97色色色| 五月丁香九九| 日日干综合| 综合久久五月天| 日韩成人AV在线| 色婷婷电影网| 久久9久| 婷婷激情鹿城五月天| 99热这里只有免费精品| 无码色| 亚洲精品**不卡在线播he| 久久精品91视频| 丁香久色| 久久xx| 丁香婷婷五月激情四射网| 人妻aV在线| 亚洲色爽| 任你草| 日操夜操天天操不卡| 91精品婷婷国产综合久久| 丁香五月天激情综合网| 激情综合亚洲| 超碰在线国产| 丁香五月婷婷偷拍| 五月天丁香花婷婷| 色婷婷激情五月天在线观看| 午夜性做爰电影| 大香蕉人人人| 狠色色狠网| 99热这里只有精品青草| 久久国产高清| 国产裸舞表演WWWW| 精品一二三区久久AAA片| 大香线蕉伊人| 可以免费观看的av| 免费观看日韩成人av| 天天 青草 制服丝袜 在线| 婷婷色婷婷| 超碰日韩成人| 都市激情五月婷婷综合| 婷婷五月天基地| 最新日韩久热免费视频看看| 丁香五月婷婷色| 九九热视频在线观看| 婷婷五月丁香花综合| 五月婷婷视频ab| 午夜大香蕉| 欧美综合五月丁香六月婷| www,五月天激情| 日韩综合久久| 狠色色狠网| 国产熟妇的荡欲午夜视频| 色综合夜夜| 亚洲不卡欧洲| 亚洲无码yw| 五月天精品视频| 综合福利网| 免费的日逼视频| 婷婷五月色| 99热99色| www.色五月| 婷婷色五月丁香六月欧美啪| 欧美一级色| 日本色色网站| 综合AV在线| 伊人婷婷色| 五月丁香婷婷深深爱| 五月做爱| 亚州操操| 久久黄A片| 狠狠色丁香| 另类天堂| 538在线精品| 啪啪啪啪五月天| 婷婷五月影院| 色播丁香婷婷五月激情| 天天射色五月天| 岛国av网站| 久人操| 色色五月天丁香| 婷婷久久大香蕉| 亚洲精品午夜国产va久久成人| 99自拍视频在线| 五月开心久久| 亚洲第一视频 久久| AV片在线观看| 色婷婷免费观看| 婷婷九月| 91碰碰视频在线观看| 伊人网色婷婷五月天| 99热99干| 九九综合色综合| 婷婷色网站| 狠色综合网| 欧美大片免费播放器| 狠狠插狠狠| 亚洲超级碰| 99精品视频免费观看| 丁香五月aV| 一本九九色| 日本片日本片祼观看网站在线看中文版网页在线看 | 婷婷涩五月天综合| 婷婷丁香九月| 777精品久无码人妻蜜桃| 六月天丁婷婷| 丁香五月激情婷婷| 丁香亚洲色综合| 91人人网| 国产精品婷婷午夜在线观看| 九九热欧美| 五月天久久色| 99热九九热| 99久久精品网| 99色在线视频观看| 97久久五月丁香婷婷| 99热综合网| 精品五月天| 欧美一级色| 影音先锋五月婷婷| 99性爱视频| 久播影院免费观看电视剧大全最新网| 色色日韩网| 国产精品24r| 婷婷五月天综合在线| 五月情色天| 99超在线| 九九色热| 亚洲婷婷激情综合激情999精品| 99热这里只有精| www婷婷| 婷婷五月丁香综合激情小说| 五月天成人综合| 中文字幕操比影片| 亚洲无AV在线中文字幕| 9久久精品| 久久这里只| 婷婷五月激情基地| 五月天国产成人| 色色色区| 国内久久久精品99| 婷婷激情五月天激情小说| 日日操天天操| 国产亚洲色婷婷久久99精品91| 成人丁香| 夜夜谢天天干| 超碰1999| 丁香六月激情网C0W| 五月丁香日本片| 五月天三级久久| 丁香五月婷婷激情蜜桃| 久久密臀婷婷| 日本97在线看片| 91欧美| 亚洲高清在线| 久久性爱视频| 九月丁香亭亭| 色色色色五月天| 激情丁香五月| 97人人搞| 色婷婷狠狠爱| 久久一热| 婷婷久久久| 天天爽天天干| 97色色色| 麻豆AV一区二区三区| 一起草av| 潘金莲AAAAAAAAAA| wwww.色婷婷| 日韩无码亚欧无码| 777久久久| 色99无码| 黄色片精品| 久久91久久91色欲精品| 婷婷月综合| 超碰人人操在线| 久久网日本| 免费AV播放| 99re热精品在线视频| 久久综合爱| 99热大全在线观看| 九九爱看亚洲| 五月婷婷激情综合视频| 99热这里只有精品1| 五月的色婷婷高潮| 亚洲精品影视| 亚洲国产99| 色99色| 屁股翘好撅高迎合跪趴| 五月色婷丁香| 中文无码婷婷| 狠狠狠狠狠狠狠狠草| 伊人五月网| 精品五月天| 婷婷五月激情欧美| 国产精品a无线| 亚洲AV日韩在线观看| 久久六月综合| 日韩婷婷五月| 久久深爱激情网| 亚洲热热视频| 97香蕉碰碰人妻国产欧美| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 精品操逼一区二区| 大香蕉精品视频| 另类五月婷婷| 狠狠色综合精品视频在线| 91视频五月丁香| 99热这里只有精品5| 成人美女网| 5Www色5夜| 久婷婷婷| 狠狠操狠狠干综合| 天天干天干| 超级碰碰97在线| 伊人五月天97| 欧美丁香六月激情视频| 日韩操逼大片| 激情四射亚洲| 成人在线日韩| www天天色天天射| 狠狠搞狠狠操| 在线99精品| 99精品视频在线6| 五月丁香婷婷成人网| 五月天婷婷社区| 亭亭丁香97| 五月丁香六月婷婷,婷| 欧美xx激情视频在线观看| 婷婷丁香五月综合| 午夜九九九九九九九九九九九九九| 99热99思午夜精品| 婷婷在线免费| 六月丁香停| 影音先锋 91工厂| 大香蕉五月婷婷| 婷婷色网址| 秋霞黄色一级久久| 激情九月综合| 日本视频欧美观看免费| 成人九九视频| 丰满老熟妇BBBBB搡BBB| 人妻AV在线| 五月丁香网站| 国产在线视频1234| 丁香色情五月综合网站| 国产在线aaa片一区二区99| 亚州操操| 丁香激情五月| 亚洲一级AV在线免费播放| 久久 这里只有精品1| 99精品视频免费观看| 天天综合久久| 色婷婷六月天| 色涩影院六月丁香| 直接看的av| 影音先锋秋秋五月婷婷| 欧美va| 大香网伊人久久综合| 欧美影院婷婷| 超碰在线精品| 婷婷丁香激情综合色情| 五月婷婷激情久久| 亚欧州精品视频| 182TV大香蕉| 久久一级片| 深爱激情五月婷婷| 99热一本| 99国产精品久久久久久久久久久| 中文久久婷婷| 91凹凸在线| av在线免费网站| 96丁香六月婷婷蜜桃综合久久| ady狠狠入| 丁香六月婷婷综合在线| 九九色video| 五月丁香无码视频| 亚洲人成网站999综合| 五区毛片七区毛片| 日韩黄色AV无码| 噜啊噜在线| 91精品国产99久久久久久天美| www.9797国产| 综合欧美五月婷婷| 日韩黄在免| 婷婷五月色亚洲| 日本在线观看aaa 99| 日日.c| 超碰人人99| 五月丁香激情四射| 色色精品色| 色综合色综合网| 亚洲五月天综合| 色色色九九九五月婷婷| 婷婷婷婷婷婷婷婷| 天天操天天日天天爱| 色色色网站| 伊人网色婷婷五月天| 久艹伊| 色色色99| 色色色色色色综合| 99亚洲视频| 色婷婷影视| 伊人天天色| 色丁香五月婷婷综合久久| www.日韩国产| 亚洲成色综合网站免费观看| 婷婷九月丁香中文| 日本色色网| 亚洲 在线 性爱| 99ri国产精品| 99热只有| 色婷婷狠狠| 色玖玖| 久久丁香综合香蕉| 在线中文字幕视频| 好激情在线综合网| 婷婷在线播放av| 91碰碰视频在线观看| 色噜噜狠狠色综合网| www.sd-xiangsu.cpm| 日笨久久网| 色婷婷狠狠| 26uuu另类亚洲欧美日本一| 久久五月天视频| 荫道BBWBBB高潮潮喷| 狠狠操天天干| 91啪级电影| 久久3p| 日本视频不卡123区| 伊久久婷婷| 五月婷婷视频ab| 婷婷九月| 久Se视频在线观看| 亚洲啪啪自拍| 亚洲精品久久久久久久久久飞鱼| 玖玖爱伊人| 国产成人+亚洲+欧洲| 激情另类综合| 97在线碰| 久9精品| 国产免费性爱| 狠狠色丁香| 91久久| 婷婷射丁香| 99热久久最新地址| 狠狠做五月| 一二区成人电影| 色插人人| 人妻第九页| 99激情视频| 琪琪色五月天| 激情丁香五月| 天天草天天摸| 99免费视频网| 激情网五月婷婷| 婷婷丁香五月天在线视频| 九九九热精品| 色欲色天天香综合| 国产精品电影网| 9久久网| www91色网站| 五月天天丁香婷婷| 操B视频在线播放| 99精品成人无码A片观看金桔| 亚洲精品亚洲人成人网| 丁香九九九九| 婷婷五月丁香久久| 色狠狠色| 99这里只有精品|v| 色五月激情婷婷| 五月丁香啪啪啪综合网| 久久综合中文| 99精品视频免费观看| 丝袜大香蕉| 色综合色五月| 可以直接看的AV| 黄网在线免费观看| 中文av网站| 六月激情综合| 五月丁香在线| 日韩国产在线精品| 日本三级第一页| 久久免费少妇高潮99精品| 丁香五月之久操视频| 丁香五月天天久久综合小说| 99热99日天天干| 葵花AV在线| 大香蕉狠狠爱主页| 激情五月综合网最新| 大香蕉五月天婷婷| 国产va在线视频| 五月色天五月色| 丁香五月天啪啪激情综合网| 九九视频这里只有精品| 热五月婷婷| 四色五月婷婷| 91av传媒高清在线视频网| 4399无码视频二区| 啪啪夜久久| 国产精品电影| 六月婷婷狠狠做| 婷婷五月天狠狠搞干| 天堂综合久| 日日杆天天| 99热99艹在线观看| 激情五月天99色| 激情四射五月天| 黄色99网| 蜜臀99精品| www.婷婷五月| 婷婷色资源| 啪啪黄页网| 五月欧美色播| 色色色成人网| 久久五月丁香| 国产探花一片区| 婷婷天堂综合| 99成人免费视频| 婷婷五月天久久| 青草视频在线播放| 五月天丁香成人社| 色综合开心五月深爱五月| 人人操五月天| 国产露脸150部国语对白| www亚洲无码| 激情五月综合视频| 婷婷五月天天爽| 国产乱妇无乱码大黄AA片| 91岛国片| 大香蕉院线| 综合网色| 九九视频在线观看视频在线播放69| 黄网免费看| 天天精品视频在线观看视频| www.日日夜夜.com| 国产黄色av| 五月婷婷久久激情 | 97伊人综合婷婷| 狠狠香婷婷五月| 色婷婷综合影院| 色色五月婷婷狠狠| 九九视频免费| 欧美精品啪啪| 中文在线视频久9| ...婷婷国产成人亚洲日韩| 9l视频自拍9l九色9l成人| 婷婷99视频在线| 26UUU| 国产97色在线| 欧美三级视频下载| 五月天五月婷五月激情网| 这里只有精彩视频| 黄色成人网站在线播放| 六月婷婷中文字幕| 婷婷不卡基地| 天天操天天谢| 亚洲V国产V欧美V久久久久久| 丁香婷婷黄网站| 久久久久人妻精品| 五月丁香综合网| 97好吊操| 天天揷综合网| 六月丁香婷婷天堂| 99热99色| 五月天天天综合| 久久九九热视频| 丁香婷婷五月色成人网站| 伊人婷婷五月天| 日本99婷婷| 蜜乳中文字| www.91五月| 另类小说五月天综合网| 99热久久这里只有精品| 2025最新亚洲激情在线| 久久婷五月天| 精品久久婷婷五月天| 日韩视频99| 国产激情久久久| 婷婷色色五月天| 99视频精品| 日本一级黄色电影| 色5月婷婷| 色五月天婷婷| 九九精品片一| 粉嫩AV久久一区二区三区| 久久九九免费大视频| www色婷婷| 亚洲激情 久久| 亚洲V国产V欧美V久久久久久| 天天摸天天舔天天爽| 无码少妇高潮喷水A片免费| 天天天操天天天爰| 欧美午夜乱妇午夜福利| 亚洲九九99精品视频在线播放| 热91久| 丁香五月乱中文字幕| 久久伊人婷| 亚洲婷婷基地| 综合天天综合| 色五月激情五月| 五月丁香五月天现场视频| 玖玖九九9999在线观看视频精品| 婷婷亚洲五月| 人妻激情综合| 五月婷婷基地| 婷婷亚洲在线| 六月激情丁香一道本7777| 伊人婷婷综合| 丁香婷婷综合五月天| 大香蕉 婷婷| 色99在线| 五月天激情综合网站| 日本少妇裸体做爰高潮片| 丁香五月婷在线| 亚洲色色五月天| 久久久久久久人妻| 99视频热| 亚洲在线操| 在线理论片| 天天日综合| 99,色| 国产av天天插天天操天天爽| 久久久久久人妻| 久久这里只有精彩| 人人摸人人干| 色婷婷九月| 99亚洲大片精品永久在线观看| 99热一本久道| 丁香五月婷婷色| 精品成人a v无码内射| 操久久网| 五月丁香六月综合图| 武则天精品久久| 九九婷婷五月天影视| 大香AV| 国产精品涩涩涩视频网站| 色色色色色色色色网站| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 亚洲综合婷婷五月| 激情五月天的婷婷| 激情激情激情网| 久热AA| 91在线观看九区| 91久久久久久久| 人人爽欧美婷婷久久久五月丁香 | 99热久久这里只有精品| 91色吧网| 五月婷婷激情四月| 色欲人妻综合aaaaaaaa网| 性色综合网| 五月婷婷干干干| 丁香婷婷六月婷婷六月婷婷六月婷婷| 久久44| www.99视频| 国产免费一区二区三区三州老师F1F1.CC| 人人色性网| 超碰九九热| 激情五月九九九| 亚洲妇女熟BBW| 91男同| 婷婷色五月在线视频| 天天干天天日天天插| 婷婷五月花| 亚洲综合在线网站| 色级停停| 亚洲精品又粗又大又爽A片| 亚洲美女高潮久久久久久69| 激情色色色| 丁香五月激情婷婷| 欧美久久五月婷婷| 亚洲五月天色| 欧美丁香五月97色| 久久婷婷人人| 婷婷五月激情综合啪啪| 丁香,开心成人,久久| 亚洲色啪| 思思热这里只有精品| AV操逼网| 激情爱爱网站| 五月丁香六月激情| www.婷婷五月| 激情五月色播五月| 五月天五月天成人网亭亭成人色网站| 五月婷综合性中心| 六月丁香婷婷天堂| 情欲综合网| oumeisesewang| 综合激情五月丁香9999久久精| 丁香五月激情婷婷| 欧美99热| 99在线观看| 99九九精品| 99色综合| 久久永久网址| 九九99视频精品| tingtingjiqingwuyue| 亚洲婷婷丁香五月在线| 久婷婷五月丁香在线观看| 成人五月天综合网| 五月丁香六月婷婷啪啪综合| 婷婷成人网五月天| 亚洲天堂亚洲色色色| 丁香六月天AV| 婷婷五月天六月综合| 综合五月亭亭9| 色丁香婷婷美女视频网站| 26uu| 丁香成人视频| 日日噜噜夜夜狠狠久久丁香六月| 亚洲色五月婷婷| 亚洲午夜电影| 婷婷大香蕉| 婷婷五月色| 色五天综合| 九九九九中文字幕| 五月99久久| 综合色久| 成人网丁香五月| 婷婷五月激情在线视频| 丁香五月激情五月| 丁香五月色色| 99色在线| 婷婷成人av| 秋霞日本免费毛片A片| 婷婷中文在线| 四五月婷婷| 色色网站免费| 99热老司机| 高清一区二区三区日本久| 久久婷综| 五月婷啪啪| 99色啊| 婷婷丁香五月在线播放| 人妻九九九九| 黄桃AV无码免费一区二区三区| 婷婷影院A成人| 婷婷 丁香 久久| 99亚色色色| 激情婷婷五月基地| 色婷| 狠狠插.com| 色婷婷777狠狠| 四色 爱 婷婷 精品 亚洲 五月天| 精品三区影院| 色综合色五月| 五月丁香六月激情| 人人操AV| 五月激情丁香| 99欧美| 亚州欧美黄色电影| 91九色国产| 婷婷五月色亚洲| 97中文在线| 五月天婷婷乱| 99热网址| 97色五月婷婷在线| 久99视频在线观看| 狠狠插狠狠| 五月丁香狠狠爱| 大香人妻| 天天做天天爱天天日| 婷婷久久色| 国产精品18久久久| 久久大香蕉同僚| 九九九九九九九热| 亚洲激情婷婷| 99热99草97| 国熟女视频| 成人短视频在线| 五月婷狠狠| 五月天婷亚洲综合在线嫩草网| 狠狠色五月天| 淫视馆av三区| 欧美美女国产日韩一区二区久 | 凹凸探花电影| 婷婷成人综合| 99碰碰中文| 婷婷狠狠五月综合| 色播五月天激情| 国产激情在线| 日本色色色| 9色91视频| 五月天国产成人| 久热黄色| 日韩AV一区二区三区| 色五月丁香婷婷综合| 26uuu精品一区二区| 色吊丝永久访问网址| 人妻精品久久久久久| 99热精品在线在线| 九九久久99| 99在线免费视频| 91九色成人原创视频| 就爱射中文字幕资源网| 国产成人精品123区免费视频| 在线看片av| 婷婷在线综合| 久久婷婷综合国产| 天天色视频| 婷婷性爱综合| 夜夜操天天干| 免费看片在线观看| 九九色热视频| 亚洲第一成人AV| 成人狠狠成人狠狠成人狠狠成人狠狠| 大香蕉久久| 亚洲性天天| 夜夜操狠狠操| 婷婷综合另类小说| 六月婷婷中文字幕| 日本片日本片祼观看网站在线看中文版网页在线看| 久久538| 大香蕉欧美在线| 六月婷婷中文字幕| 停停五月色宗合| 激情第四色| 色吧婷婷| 婷婷久久五月| 天天做天天要天天爱| 这里只有精品1| 婷婷丁五月| 色婷婷av在线观看| ...婷婷国产成人亚洲日韩| 强壮的公次次弄得我高潮A片日本 | 思思热在线视频观看精品| 九九热精品在线| 五月婷婷成人w| 久cao香蕉影院| 狠狠插日日干撸| 激情五月色播五月| 密视AV综合在线| 日本天天操| 成人婷99最新| 婷婷中文字幕| 六月色五月天天婷婷| 久久丁香网| 99re热在线视频观看| 91爱操| 九九伊人网| 五月婷婷自拍视频| 精品亚洲日韩99欧美片| 婷婷五月丁香综合激情| sesesesezonghe| Blackedraw视频一区二区| 另类五月激情| 亚洲AV综合网| 久久99国产综合精品免费| 97韩国久久电影院| 五月丁香毛片| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 欧美色婷婷| 五月婷婷免费视频| 东北黄色一级| 色99网站| SS丁香五月婷婷| 99狠狠操一| 久久久中文| 人妻无码精品一区| 久久婷婷亚洲| 亚洲六月色| 香蕉视频91| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 99热狠狠操| 任你草| 思思热精品在线视频| 九久9精品| 激情色五月天| 色色吧综合| 久热只有这里精品| 中文精品在| 国产一二区爆乳_1国产日韩一区二区三-成人AV| 五月婷婷激情综合视频| 4399成人黄A片| 182tv992tv人之初午夜免费观看| 亚洲免费99| 99久久精品网| 东京热免费视频| 有码一区二区三区| 九九婷婷网五月天| 日韩爱操视频| 99热这里只有精品国产免费| 五月色激情综合网| 丁香五月天啪啪| 色停停五月,在线观看| site:wpjngj.com| 99热费观看| 九月丁香婷婷基地| 天天插综合| 99久视频| 婷婷丁香五另类网站| 天堂中文国产| 色99xx| 亚洲国产精品二二三三区| 婷婷激情九月| 激情综合网五月激情| 在线五月色播| www.五月婷婷久久.com| 91成人看| 国产69久久久欧美黑人A片| 久操人妻| 五月激情在线| 丁香五月激情无码视频| 色9色| 大香蕉啪啪啪| 久热黄色| 久久一级片| 99欧美精品99日本精品| 97色婷婷| 日日天天干| 婷婷色网站| 久久性爱视频| 五月婷婷真爱激情网| 开心激情站婷婷五月天| 狠狠色婷婷7| 五月婷俺去也| 激情五月天色网站| 五月天婷婷伊人| 69精品人妻不卡视频| 婷婷色色欧美综合网| 国产欧美熟妇另类久久久| 婷婷成人五月天| 99热最新| 91丨九色丨熟女高潮| 91九色欧美| 五月婷婷九九热| 色五月AV| 激情五月婷婷五月| 丁香五月成人社区| 久久这里只有欧美| 日韩乱玛久久| 色色丁香激情五月| 婷婷五月天在线观看第二页| 六月丁香激情婷婷| 五月婷婷久久网| 能看的AV网站| 在线观看玖玖资源免费观看| 襙逼网| 青青草日本亚洲| 这里只有精品视频一区| 伍月婷婷六月丁香| 久久婷婷五月天激情唯美| 极品五月天| 天堂草在线看www| 久久这里有精品| 91肏| 激情五月天在线视频| 久久综合五月| 在线只有精品| 国产乱子轮XXX农村| 丁香六月婷婷色XXXX| 最新国产AV| 欧美在线视频9| 丁香五月欧美色综合| 精品激情| 综合五月丁香久久| 激情综合网,婷婷| 五月天激情婷婷小说| 天天久| 五月丁香久人妻中文| 激情六月综合| 日韩丰满少妇无码内射| 99天堂在线观看免费视频| 成人一区在线观看| 色婷婷av在线| 欧美va视频不用播放器的va视频网| 日韩欧美四五区| 啪啪六月婷婷| 久久婷婷网站| 久久538| 亚洲乱码日产精品BD| 婷婷色五月大香蕉在线| 噜噜五月天综合| 97操碰视频| 婷婷五月 丁香六月| 性99网站| 六月丁香啪啪啪| 婷婷五月天av| 日本wwww在线| 日本精品99网站| 日本婷婷丁香五月| 天天婷婷| 婷婷五月天电影网| 中文字幕在线视频播放| 啪啪黄页网| 无码毛片992367| 亚洲这里只有精品| 99热综合网| 日本道久久91| 色10月婷婷视频| 乱色色色| 欧美色婷婷| 99色在线观看视频者| 最新久久网址| 婷婷综合五月色播| 日韩精品999| 色网五月婷婷| 免费亚洲婷婷中文字幕| 九九色99| 九月丁香| 九九成年视频| 婷婷六月激情小说网| 色婷婷社区| 亚洲欧美婷婷五月色综合| 婷婷中文字暮| 婷婷久久国产视频| 亚洲激情综| 色九九中文字幕| 五月丁香啪啪| 天天摸天天舔天天天天爽| 激情五月综合| 久久婷婷色综合| 亚洲欧州色情在线观看| 天天干天天日天天操| 色九九一二| 开心久久爱五月天| 91热99| 玖玖热99| 开心五月色婷| 亚洲激情五月| 99久久www| 毛片毛片毛片毛片| 欧美三级A做爰在线观看| 成人版视频在线观看| A久网| 色狠狠色噜噜AV天堂五区| 五月丁香婷中文| 天天干天天插| 婷婷五月丁香国产| 天天干狠狠操| 26uuu| 操操天堂| 99热只有这里有精品| 婷婷五月丁香五月基地| 亚洲色色图片| XX色综合| 最新久久网址| 中文字幕成人影视| www.久久99精品| 国产精品色一哟哟| 色婷婷成人做爰A片免费看网站 | 久久婷婷亚洲| 1024婷婷综合久久五月天| 五月丁香人妻| 国产av第一专区| 亚洲婷婷激情888精品久| 欧洲第一无人区观看| 国产色丁香| 很很干天天干| 五月大香蕉| 99久久99久久综合| 99热这里都是精品| www.黄色片-久久成人国产精品在线播放-999AV| 丁香五月激情啪啪啪啪| 婷婷四色五月| 91无码色色| 开心五月婷婷激情网| AA片在线观看视频在线播放| 精品色情一区二区三区四区| 亚洲色99| WWW.夜夜操.com| 99视频内射三四| 综合xx网| 少妇水多A片太爽了| 高清无码一区二区三区四区| www.五月天| 美女激情婷婷| www.com久久久久久久久久久久久久久久久| 先锋资源 996| 超碰在线免费观看3 9|