免费国产精品自在自线-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
返回資訊列表
综合色情网| 丁香五月色五月| 97超碰99热99| 成人国产欧美大片一区| 91九色国产| 精品国产人人爱人人| 182无码| 开心五月婷婷99| 久久亚洲天堂| 色婷婷精| 99久久九九视频| 久久六月天| 99热老网站| 大香伊人久色| 久久小视频| 五月丁香欧美综合| 天天在线久久综合| 天天爽爽日日做做| 久久99久久99精品免观看粉嫩| 成人电影一区| 8区视频在线| 五月激情另类| 五月天色播网| 亚洲超碰在线| 色综合九九| 九九99精品视品| 丁香五月激情婷婷| 丁香五月综合| 狠狠狠狠狠狠| 五月丁香婷婷激情澎湃四射| 五月婷婷丁香五月亚洲色| 正宗黄色毛片| www激情网站| 国产乱人偷精品人妻A片| 青青草原伊人网| 天天爱天天做天天爽| 黄网免费看| 99在线视频观看| 综合久久婷婷| 无码99| 99热在线观看精品| 天天操狠狠操| 久久黄色片| 亚洲婷婷五月草久| 五月丁香六月婷| 日本视频久久| 五月久久综合| 五月天婷婷Av| 97碰91| 日韩AV大全| 色五月丁香六月欧美综合| 九月婷婷综合八月丁香在线观看| 成人色五月天| 五月天狠狠干| 婷婷色在线视频| 五月亭亭综合五码| 欧美五月婷婷| 六月丁香色色| 色噜噜狠狠一区二区三区| 欧美日韩成人在线网| 五月丁香婷婷AV| WWW五月| 五月天激情开心网| 久草热在线视频| 久久金品黃色| 五月婷婷三级| 国产毛片欧美毛片久久久| 成人在线日韩| 日本黄色三级片内射| 天天干,夜夜爽| 五月婷婷无码| 久久综合66| 欧美综合激情| 午夜成人在线免费视频| 色婷婷基地| 九九香蕉网| 色色吧综合| 91色综合网| 综合狠久久| 免费观看全黄做爰的视频| 日韩丰满少妇无码内射| 日韩大片艹艹| 婷婷六月丁香在线| 亚洲小视频| 色情五月停停丁香| 玖玖热视频| 色色99| 欧美成人精品A片免费一区99| 在线看的免费网站| 婷婷色吧| 精品人妻久久久| 天天xxxxxx天天日| 另类视频一区| www.99色在线| 日日日日做夜夜夜夜无码| 日韩99色| 亚洲色婷婷| 色碰碰视频| 久久久五月天| 超碰色色综合| 激情五月狠狠| CHINESE熟女老女人HD视频| 99热99艹在线观看| 任你艹| www.日日夜夜| 九九婷婷网五月天| 1234操逼网| 婷婷国产欧美97| 玖热精品综合视频| 欧美色性色好| 婷婷六月激情综合| 亚洲无码成人网| 天天综合亚洲综合| 五月丁香啪啪啪| 久久9热综合| 丁香五月久久| 五月丁香激情婷婷| 91碰操| 性色欲情 网站| 狠狠色综合五月| 日本不卡中文字幕| 99啪99| 六月婷五月丁香| 日本九婷婷| 99精品视频在线观看| 婷婷五月无码| 激情网综合| 在线99热| 在线中文字幕视频| 亚洲六月色婷婷| 成人无码精品1区2区3区免费看| 五月婷婷综合影院| 夜夜躁爽日| 9色在线| 久久性刺激| 国产性色蜜乳| 欧美成人精品三区综合A片| A在线观看| 日韩黄色中文字幕| 极品 少妇 内射| 丁香五月久久| www.99热在线| 五月激情久久综合网| 五月天婷婷综合| 殴美日比视频| av成人在线播放| 国内自拍1区| 99热这里都是精品| 丁香五月天激情婷婷丁香六月| 婷婷五月丁香综合激情| 野外99热| 天天干天天拍| 99亚洲视频| 五月婷婷丁香狠狠撸久久| 538在线精品| 色99色| 婷婷在线综合| 五月婷婷六月色| 日韩丰满少妇无码内射| 黄色五月婷| 先锋男人99资源| 五月婷婷色色| 97在线精品视频| 久久久久久久人妻| 伊人久久大香线蕉AV最新午夜| 这里只有精品热| 九热...av| 丁香六月色| 91人妻视频| 欧美大肥婆大肥BBBBB| 久久婷婷伊人| 中文字幕成人| peg 2区三区四区的| 婷综合| 中文网婷婷字幕婷| 天天操天天曰| 婷婷久久内射| 久久久www| 韩国97天堂| 激情五月亚洲| jiuse91在线| 美英法精品无码免费视频| 免费观看全黄做爰的视频| 草美女在线观看视频在线播放| 婷婷在线播放av| 4438激情网| av无码电影| 天天综合色| 五月天婷婷久草丁香| 五月激情六月综合| 婷婷午夜激情| 国产人妻777人伦精品HD| 婷婷大美在线| 日本在线观看aaa 99| 婷婷五月深爱五月| 日本系列_4页_777FP| 天天日夜夜| 亚洲碰碰碰| 久久99热免费最新版| 色播五月综合网| 在线观看免费狠狠色丁香香综合| 婷婷五月天综合激情| 99操逼| 天天日人人| 少妇人妻人伦A片| 五月中旬婷婷丁香六| 噢美99| 亚洲小视频| 欧洲区自拍| 97亚洲婷婷| 日本精品99| 五月丁香六月天| 日本精品。999| 婷婷五月天VI| 久久久性爱视频| 激情六月婷婷| 色婷婷丁香女女| 国产欧美va| 五月婷婷欧美| 婷婷丁香精品视频在线观看| 久久婷婷五月天蜜桃| 欧洲S级在线观看| 26uuu精品一区二区| 欧美婷婷五月激情| www,超碰| 极品少妇XXXX精品少妇偷拍| 色五月丁香激情视频| 一本久久婷婷| 97热视频| 国产偷人妻精品一区| 超碰色婷婷| 婷婷在线播放| 色爱综合网| 婷婷五月天受日本法律保护| 日本视频久久| 日韩无码专区| 五月激情六月综合| 精品婷婷五月天| 国产色视频网站2| 99精品在线观看视频| 色婷婷丁香特级性爱视频| 六月色激情| 99操碰| 蜜桃五月天| 久99| 欧洲一区二区| 亚洲国产网址| 丁香五月花| 直接看的AV网站| 五月丁香综合影院| 又大又粗九一在线| 五月天丁香网| 97碰在线视频| 激情99| 五月婷丁香久久久| 99免费综合网| 亚洲AV中文在线| 91se视频| 欧美成人精品三区综合A片| 停停五月色宗合| 伊人丁香婷婷东京| 天天爱天天做天天舔| 丁香五月综合无码趴趴| 精品九九久久| 1024操逼| 狠狠CAO日日穞夜夜穞AV| 无码动漫av| 99这里只有精品在线观看| 久操人妻| 综合久久影院| www.99精品视频| 亚洲激情四射色| 9久久精品| AA久久| 性色99| 久思思久视频| 婷婷综合日本| 强壮的公次次弄得我高潮A片日本 | 婷婷五月天激情五月天深爱五月天| wWw色五月| 九色 在线| 爆乳熟女-区二区三区| 涩涩五月天| 色婷婷中文在线| 夜夜骑夜夜撸| 99亚洲精品视频| 欧美va欧美va差| 爱草视频在线| 亚洲99在线视频| 色日本丁香婷婷| 激情综合婷婷| 婷婷国产综合| 亚洲99激情| 双性美人被调教到喷水A片| 天天狠天天叉| 强伦轩人妻一区二区电影| 久久人人九| 色五月播五月| 色婷婷伊人| 99视频九九热| 日日夜夜婷婷| www.超碰| 操逼五月婷婷| 狠狠色综合无线观看| 婷婷丁香日韩五月| 97sese婷婷| 另类少妇人与禽zOZZ0性伦| 五月天亚洲综合网| 亚洲五月天婷婷| 夜夜夜夜夜骑撸| 丁香五月天AV| 99热免费精品| 色五月五月婷婷| 亚洲五月天激情| 天天拍天天操| 曰韩五月丁香色婷婷无码| 五月丁香花成人社区| 激情 久久 婷婷| 超碰妻人人| 免费日本aⅴ中文字幕| 碰人人97| 五月丁香六月综合基地| 国产色色在线| 婷婷五月天熟妇| 天天婷婷色六月| 99re这里只有| 久久综合五月| www.com久久久久久久久久久久久久久久久| av操B网站| 亚洲国产网站| 99久热这里只有精品视频删减版| 六月婷色六月| 久久婷.com| 九九热精品99| 色色亚洲| 色色色色区| 婷婷综合色图| 五月丁香六月婷婷a v| 六月丁香开心婷婷欧美| 亚洲av免费在线| 天天激情综合| 五月天激情小说欧美激情| 色吧婷婷| 亚洲成人在线在线| 欧洲精品爱爱| 丁香色情五月综合激情| 色。 婷婷婷| 操操操AV| 99久久久久| 精品热九九| 大香蕉婷婷五月| 98毛片| 思思精品热在线| 五月天综合久久| 国产成人精品一区二三区熟女在线 | 淫视馆aV二区一区| 日本三级第一页| 亚洲小电影在线观看黄999| 婷婷五月天最新综合你懂的| 99亚洲无码| 成人视屏在线观看| av一区免费看| 色色色在线免费视频| 久久久人妻系列| 丁香六月激情综合| 婷婷日韩| 噜噜噜噜噜在线| 五月婷婷视频啪啪美女| 色三级色三级| 超碰人人妻| site:hcxsz888.com| 日日操人人操| 色五月婷婷久久| 99热一本久道| 成人色色视频| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 天天插天天操| 狠狠精品干练久久久无码中文字幕| 99啪在线视频| 快色t v在线入口| 超碰国产在线| 67194中文字幕| 综合综合网| 色色com| 69色婷婷| 五月亭亭六月天| 欧美交换配乱吟粗大25P| 五月婷久久久| 久久99激情丁香婷婷小说网| 婷婷激情五月呦呦| 成人在线日韩欧美| 99色色热| 婷婷五月天色色| 久久中国毛毛片爱久久| 久99热| 国产亚洲99久久精品| 97碰碰在线观看视频| 99惹精品视频| 欧美成人AAA片一区国产精品| 日本在线视频www色| 丁香五月亚综合图片| 最新高清无码专区| 天天日人人| 久久久五月天| 国产97色在线| 人人97碰| 久草A片| 91色在线 | 日韩| 大香蕉久久伊人网| 五月天社区狠狠| 操操操97| 婷婷久久六月天| 亚洲午夜精品久久久久久人妖| 色色AV色色色东莞| 操婷婷久久| 五月丁香六月在线欧美| 综合久久影院| 久久色9| 欧美婷婷精品激情| 超碰cap| 色青青视频| 国产午夜成人AV在线播放| 在线va网站| 五月天另类激情在线| 五月天色色激情综合| 国产67194| 91九色国产| 91viP在线看| 中文字幕人妻在线| 丁香六月综合激情| 婷婷丁香午夜综合影视| 91紱請| 婷婷丁香五月欧美人| 国产偷人爽久久久久久老妇APP | 99操视频| 狠狠色丁香五月婷巨| 色色色色热| 色色色色色级无码| 亚洲成人AV高清字幕| 色综久久AV| 91chinese在线| 天天日狠狠| 99ER热精品视频| 丁香五月综合网亚洲综合欧美狠狠| 国模狼狼| 日本久久人| 天天色播| 精品无吗va视频免费观看| 91窝窝| 天天骑天天操| 中文无码婷婷| 狠狠精品干练久久久无码中文字幕 | 五月激情久久综合网| 97色碰| 日日日,com| 激情小说视频图片| 青草视频在线蜜臀| 婷婷五月精品中文| www.99久| 插插插色综合网| 天天婬色综合| 9|无码久久久久久| 日日日,com| 操逼五月婷婷| 五月婷婷丁香综合| 久色中文| 婷婷爱爱蜜臀天天操| 亚洲成人免费在线| 操人妻视频91| 五月婷婷高清| 免费观看2018www黄色操逼网站| 日本在线视频www色| 深爱五月综合网| 久久男人网婷婷| 99自拍视频网站| 亚洲AV激情五月综合网| 97碰碰电影| 丁香五月婷婷五月| 99久在线精品99re8热| 99久视频| 91丨人妻丨国产丨丝袜| 丁香六月婷婷| 综合激情五月婷婷| 就爱射中文字幕资源网| 成人看片网站| 婷婷色五月天色| 五六月丁香激情视频| 免费看片在线观看| 国产AV一区二区三区日韩| 五月婷婷开心五月| 狠狠色官网| 色婷婷五月天成人网| 国产毛片欧美毛片久久久| 亚洲六月婷婷| 六月丁香婷婷色69| 九九视频网| 看全色黄大色大片| 国产亚洲AV人片在线| 五月婷婷中文字幕| 情久久综合五月天| 麻豆123区| 狼友视频在线观看18| 性色九九| 国产精品久久久久久久久久免费| 色婷婷久久综合| 五月天激情啪啪| 成人久久天天x资源站| 日韩在线观看亚洲| 青青艹b| 国产小精品| 欧洲不卡视频| 色色色在线观看| 26uuu亚洲欧美| 蜘蛛女免费观看完整版高清电影 | 午夜激情五月天| 亚洲欧洲色色| 亚洲色婷婷| 五月婷婷婷| 日比视频91| 欧美经典片免费观看大全| 六月99天天婷婷激情综合| 婷婷五月花丁香| 五月婷婷影视| 天天操九九插| 五月天婷婷一起草| 亚洲激情另类| 久久曰曰| 黄色成人网站在线播放| 五月天婷婷激情| 丁香六月在线| 日本VA视频| 99视频精品全部免费观看| 五月天激日本色情在线| 深爱五月激情综合| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 天堂中文国产| 伊人玖玖精品| 婷婷五月电影院| 97色在线观看视频| www,色婷婷| 在线视频99| 久久婷婷五月天激情| 2005天天干天天1| 99在线看片| 激情婷婷在线| 亚洲热久| 久99久视频免费观看| 色月丁| 91在线日本| 色爱99| 色情丁香五月婷婷精品| 亚洲免费看片| 久月丁香爱婷婷综合| 99国产小视频免费观看| 秋霞电影理论| 新伍月婷婷| 玖玖精品视频| 日本久久性| 色婷婷丁香| 99九九在线视频| 色偷偷五月天| 亚洲第一黄网| 亚洲激情av| 青草青草视频2免费观看| 99超超碰| 色涩影院六月丁香| 色一情一乱一乱一区91Av| 亚洲婷婷丁香五月在线| 激情www.98com| 丁香五月天在线| 久久久久久久人妻| 五月丁香六月激情在线| 亚洲综合色婷| 狠狠色色综合| 五月丁香啪啪啪免费看| 啪啪激情网站| 99资源在线视频| 亚洲AV网址| 超碰人人在线| 免费日本aⅴ中文字幕 | 强伦轩人妻一区二区电影| 99热a片免| 久久这里只有精品8| 久久九精品| 丁香五月伊人| 1级欧美日韩| 91精品91久久久中77777久久玖玖九九 | 色吧五月婷婷| www夜夜| 激情婷婷| 免费观看全黄做爰的视频| 六月婷婷日| 婷婷天堂综合| 婷婷五月天激情五月天网站| 色情丁香五月婷婷精品| 成人中文网| 五月丁香激情综合啪啪| 色宗合,宗合网| 婷婷五点亚洲| 色色色五月婷婷| 九九热内射| 丁香五月激情综合婷综| 五月婷高清视频| 婷婷四色五月| 综合色播| www.五月.com| 九色视频91疯狂| 久久99最新| 操骚货在线| 欧美日韩91| 婷婷中文字幕网站| 999婷婷综合| 99激情视频热| 涩涩涩五月天| 日韩免费视频| 婷婷色网站| 岛国AV网站| 9久热| 色欲影香| 激情五月天婷婷丁香| 色婷婷五月影视| 色色色色色色网站| 婷婷成人基地| 99这里只有精品视频免费| 婷婷五月花西瓜| 五月丁香大香蕉| 日韩日比视频| 亚洲欧美一区二区三区爱爱动图| 九九碰九九爱97| 最新无码专区| 久热这里只有精品在线观看 | 色五月婷婷啪啪五月| 日韩无码色色| 激情六月丁香| 综合网激情| 久久综合五月天激情小说网站 | 色婷婷天堂| 红桃91人妻爽人妻爽| 激情99热| 色婷婷五月天偷拍| 欧美在线操| 亚洲综合五月| 狼人伊人干| 五月天综合区| 超碰狠狠操| 久久网站免费亚洲| 五月婷婷六月丁香| 五月天色软件| 亚洲激情电影五月天色婷婷丁香一起草| 色情五月综合婷婷| 婷色五月天| 婷婷六月色| 久久精品日| 99热成人在线| 激情婷婷在线| 免费五月婷婷网| 丁香五月婷婷啪啪视频| 六月天六月婷| 激情五月天久久| 五月丁香成人| 香蕉久久国产AV一区二区| Av狠狠色丁香婷| 99精品热| 天天搞夜夜六| 久久激情五月| 色五月天综合| 五月婷A V在线| 天天日天天操天天干| 国产肥白大熟妇BBBB视频| 天干干夜夜操| 婷婷99视频在线| 亚洲婷婷丁香五月视频| 久婷婷视平| 激情网综合| 91亚洲视频| 九九热在线99| 婷婷六月综合| 亚洲日日操| 久久五月天大美女| 欧美成人一区二区三区在线视频 | 91精品国产综合久久久不卡电影| 五月综合激情视频| 天天久久婷婷| 激情五月激情综合网| 熟女网站久久| 日日干日日色| JlZZJlZZ8JlZZ亚洲熟女| 欧美色色色色色色色| 六月婷婷AV| 99A级片| 丁香五月亚洲AV| 激情五月婷婷| 丁香婷婷少妇| 色9999综合久久| 啪啪操超碰| 婷婷成人综合| 九九综合九| 五月天开心激情综合网| 开心五月综合激情网| 色激情五月天| 99色最新在线视频网站| 欧美啪啪9| 婷婷五月色播| 日日操,天天操| 丁香 亚洲 久久| 综合激情婷婷| 天天摸天天爽| 久久五月婷婷视频| 五月丁香色婷婷| 婷婷日日天天| 激情丁香九九五月综合网| 九九色影院| 久久丁香五月婷婷| 狠狠色综合网站久久久久| 精品五月天| 久久婷婷五月天激情| 五月激情啪啪啪| 天天射综合网站| 天天拍天天操| 五月婷婷干| 欧美图片丁香五月天| 九九aV| 99久久综合| 婷婷丁香五月天婷婷| 久9综合| 四色永久成人网站| 色色cOm| 色五婷婷| 99操九九网| 大香蕉久操| 婷婷五月天偷拍| 日韩欧美颜射| 婷婷成人视频| 情欲综合网| 五月香蕉婷婷| 中文字幕婷婷9月天| 五月婷婷色综图片| 性生活久久朋友人妻| 色优久久| 第五婷婷伊人丁香| A片试看120分钟做受图片| 天天综合色丁香| 五月天艹天天| 久久婷婷成人视频| 色综合久久88色综合天天看| 9久久精品| 婷婷激情丁五月| 91丨九色丨大屁股| 婷婷五月色情| 97伦乱| 丁香五月色| 亚洲AV人人操| 天天精品视频免费观看| 亚洲六月婷| 五月天婷婷色在线视频免费观看 | 国产日批视频免费播放| 天堂爱啪啪| www,99热在线观看| 久久一级AV| 丁香五月天电影| 九月激情综合| 欧美综合激情五月丁香| 六月婷婷七月丁香| 十二区无码| 变态 另类 在线| 玖玖色综合| 亚洲激情av| 婷婷 伊人 久久| 色欲色香综合网| 色五月六月婷婷| 亚州激情在线视频| 久久网站免费亚洲| 五月丁香色色网| 91人人网| 超级碰人人操人人干| 68热超碰在线| 国产在线网| 狠狠狠狠狠狠狠狠| 这里只有久久精99| 国产精品香蕉| 思思热精品在线观看| 婷婷六月激情丁香| 久久这里只有国产精品视频| 天天在线久久综合 | 热久久999| 91久久精品国产91性色TV| 国产毛片精品一区二区色欲黄A片| 天天狠狠夜夜狠狠2023| 婷婷综合| 六月婷婷色| 五月天综合视频| 五月婷婷色五月| 婷婷综合激情| 一区二区成人电影| 久久99精品久久只有精品| 久久婷婷热| 九九综合色| 亚洲欧美婷婷五月色综合| 99这里只有精品|v| www色色com| 一本大道嫩草AV无码专区| 青青青在线视频国产| 成人综合网站| 丁香婷婷五月色综合| 超碰69天堂| 超碰丁香五月| 色五月自偷自拍婷婷婷婷| 精品九九网| 91丨九色丨熟女丰满| 亚洲第二AV| 亚洲啪| 亚韩精品视频1区| 97自拍视频网| 日韩精品成人在线| 丁香九月久久| 第四色五月激情网| 五月婷色| 黄色三级日本| 另类A片| 免费AV在线| 97热精品| 婷婷久久五月天中文字幕在线观看| 婷婷99狠狠躁天天躁中文| 中文字幕av在线| 五月色情婷婷开心五月天| 六月婷婷七月丁香| 天天操天天曰| 九九综合色| A片试看50分钟做受视频| 久草x色在线观看99 | 少妇大叫太大太粗太爽了A片| 久热一区| 久人操| 九九这里只有精品在线视频| 丁香五月天偷拍| 狠狠狠狠狠草| 亚洲欧美一区二区三区爱爱动图| 欧美99视频| 九九热免费视频| 超碰人人在线观看| 人人操97| 六月丁香网| 黄色AAAA韩国guochansanji| 色综合丁香婷婷| 五月婷婷色综图片| 欧美日本另类| 五月婷婷综合网| 大香蕉天堂色| 丁香六月婷婷激情综合| 亚洲人妻五月丁香婷婷| 婷婷欧美综合| 中文字幕黄色片| 日本A片一区| 久久丁香五月综合六月激情红杏视频 | 久久婷婷激情五月天一区二区| 天天人人综合| 婷婷五月综合激情免费| 欧美25p| 九九无毛| 综合激情开心五月| 这里只有精彩视频| 嫩BBB搡BBBB榛BBBB| 先锋资源婷婷| 五月丁香在线国产| 婷婷四色五月| AV片在线观看| 97亚洲色 torrent magnet| 五月丁香中文字幕| 亚洲激情久久| 天色色综合网| 婷婷五月天AV网| 日日综合网| 被强行糟蹋的女人A片| 91干在线| 日夜夜久久| 青青青在线视频国产| 欧美性久| 狠狠狠狠狠狠狠狠草| 亲子乱AV一区二区三区下载| 五月丁香六月停停停| 色五月丁香五月激情五月激情| 5月婷婷6月六月丁香| 99热这里有精品| 丁香婷婷五月激情| 天天狠狠干| 内射爽无广熟女亚洲| caop在线| 色婷婷久久综合久色综| 日本V在线观看不卡视频网站| 亚洲精品视频在线播放| 五月天 无码| 婷婷激情五月| www激情| 婷婷久久精品| 91九色PORNY中文啦| 日韩无码人妻一区二区三区综合| 日本片日本片祼观看网站在线看中文版网页在线看 | 亭亭色色五月天| 激情五月综合婷婷| 99精品久| 丁香五月av在线| 99在线观看视频| 日韩xx在线| 婷婷丁香五月综合激情小说| 99国产精品久久久久久久久久久 | 99久热| 亚洲成人网无码| 婷婷午夜丁香| WWW99视频| 99re这里| 热久久婷婷| 97丁香五月| 蜜臀AV在线观看| 色色操| 激情五月天小说网| 六月婷婷激情| 任你搞免费视频观看| 5月婷婷激情6月| 中文幕无线码中文字蜜桃| 久热9| 精品久热| 欧美性爱中文字幕| 五月丁香久久| 六月久久婷婷| 伊人久久大香网| 九九超日本| 无套内射极品大美女| 色婷婷综合在线| 99热这里精品| 久久综合五月情| 婷婷色五月噜噜| 99re8在这里只有精品| AV九九| 久热这里只有| 五月丁香婷成人网| 蜜桃成语时李时珍 免费| 一起草无码视频| 五夜婷婷| 国产VA播放| 人妻丰满精品一区二区A片| 天天爱天天做天天舔| 五月丁香激情深爱婷婷| 操草草草| 成人在线99| 综合久久五月天| 五月激情婷婷丁香| 99热最新| 99视频内射三四| 26UUU精品一区二区c〇m| 超碰成人影视| 操逼巨乳91| 五月伊人网| 综合网色| 夜夜撸天天日| av在线婷婷| 五月激情婷婷六月丁香| 99A片| 天天操综合网| 亚洲色婷婷| 99ree6| 国产欧洲欧洲精品久久| 91se在线视频| 欧美黑人巨大性生话| 99久久精品视频女神1| 东北黄色一级| 丁香五月天堂网| 国产精品大香蕉| 免费无码毛片一区二区A片| 五月综合色播播丁香婷婷| 琪琪色热色色| 色色色综合色| 99热精品一| 啪啪操超碰| 99色综合| 色五月激情| 9.1综合网| 色情综合网| 五月天综合激情网| 国产熟女一区二区三区五月婷| 丁香五月狠狠在线观看| 狠狠爱婷婷五月天| 婷婷亚洲色| 啪啪激情网站| 婷婷丁香宗合888| 久久久国产精品黄毛片| 五月婷婷伊人久久| 欧美日比视频| 色五月天电影| 可以观看的AV| 天天爽成人综合网站| 男女激情久久| 五月丁香婷婷啪啪| 99r这里只有精品在线观看| 国产91视频| 日本韩国视频在线观看社区免费的9| 亚艹艹| 9999三级片| 噼里啪啦完整版中文在线观看 | 五月色情婷婷开心五月色情| 婷婷丁香五月天之开心少妇| 色情五月丁香| 天天综合社区| 五月婷在线影院| 五月天网址在线刘玥| 成人视屏在线观看| 亚美欧色影院| 色综合天天网| 久久激情五月婷婷| 狼人狠狠操| 色婷婷五月亚洲| 日本99热| 99热99| 无遮羞AV| 天天插天天日| 操日视频| www.狠狠狠.com| 婷婷久久婷婷色五月| www.婷婷五月天| 亚洲在线操| 午夜做爱影院| 6080av| 天天狠天天狠| 久热91精品| 人妻在线网站| 7777国产盗摄农村女人| 色综合五月天| 色色色婷婷五月| www激情五月天| 夜夜天天天天天干天天爽| 手机在线日韩视频中文字幕| 久热9| 精品爆操| 天天xxxxxx天天日| 日本丁香五月婷婷| 久久九九视频网站| 99激情网| 亚洲成人超碰| 激情婷| 日韩一级淫乱片一区二区三区| 色综合天天| 97久久久| 五月丁香久久网| 色99视频| 日韩三级高清无码| 99色色最新视频| 精品九九在线观看| 婷婷五月色播网| 成人国产综合| 欧美天堂久久| www.97干视频| www热久久yy9| 天天日日| 性做久久久久久久免费看| 国产亚洲精品久久一区二区三区| 婷婷丁香五月在线播放| 亚洲bt丁香五月天婷婷激情小说| 五月伊人视频在线看| 精品无码色| 久久久久激情| 丁香久月| WWW·色色色·COM| 日韩高清久久| 极品嫩草| 婷婷五月色花丁香社区| 好大好粗嗯啊-一级黄色大片免费观看-成人AV| 日韩综合成人| 99九九这里有免费视频| 五月天丁香色色| 噢美99| 一级黄在线| 色吧婷婷五月亚洲| 99在线视频网址在线观看| 婷婷中文字幕| 激情五月综合网| 欧美搡BBBBB摔BBBBB| 99精品综合| 色色色欧美| 亚洲V国产V欧美V久久久久久| 色婷婷成人做爰A片免费看网站| 99国产精品久久久久久久久久久| 少妇真实被内射视频三四区| 99ri视频| 五月丁香婷婷免费视频| www.9797国产| 午夜一区| 九九色色| 五月婷婷爽爽爽| 久99| 婷婷五月花| 亚洲精品久久久无码| 开心五月婷婷| 一起草AV入口| 91成人看| 婷婷五月在线| 91亚洲视频| www.99精品在线| 99re热精品在线视频| 色婷婷久久综合| 五月婷在线观看| 九九热这里有精品23| 五月天婷婷青青草| 婷婷色色婷婷| 激情五月天影院| 五月成人网站| 大香蕉伊人久久| 中文字幕丰满孑伦无码专区| 激情综合五月丁香六月婷婷| 99久操| 99丁香五月婷| av中文网站| www..999热久| 97精品人人A片免费看| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 五月丁香啪| 日韩AV免费| 91狠狠色| 色婷婷五月网| 热久视频| 色五月综合| 五月天婷婷成人网| 91在线精品一区二区| 99视频在线观看视频| 五月色综合网欧美网| 婷婷五月噜噜| 97热视频| 狠狠噪| 色色五月激情| wuyuedingxiang99| 亚洲成人噜噜| 五月婷婷六月丁香在线| 久草免费福利视频| 色综合久网| 日本丁香久在线| www.夜夜夜| 欧美性爱中文字幕| 少妇被下春药玩弄A片| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 天天做天天爱天天爽| 无码人妻AV久久久一区二区三区| 热热色色五月天婷婷| 青青日韩| 丁香蜜臀黄色婷婷五月天| 天天操天天日天天爽| 9|无码久久久久久| 热久综合| 九九热这里只有精品首页| 五月草视频| 欧美大肥婆大肥BBBBB| www.99热在线| 艾小青av| 99热青青草| 日韩五月婷婷久久| 婷婷色播色五月五色五月天色妇| 六月婷婷五月天| 国产精品久久久久久妇女6080| 婷婷五月花.97| 99九九精品视频| 婷婷五月深爱五月| 久久免费精彩视频| 欧美超级视频97| 色婷婷裸体色性在线| 丰满少妇猛烈A片免费看观看| 色综合九九| 久久久色情| 五月丁香婷婷国产精品综合| 九九99免费视频| 成人午夜视频精品一区| 91精品国产91久久久久青草| 九九亚洲小视频| 五月丁香久| www.91AV.com| 久久九九综合| 日日干夜夜干| 影院久久久| 激情网开心网| 成人av免费观看| 99ri在线| 夜夜综合色| 超碰人妻公开在线| 久久五月天综合视频网站| 午夜激情综合| 伊人婷婷五月天av| 精品福利911| 99色热| www,五月天com| 婷婷五月天成人| 91人操人人人操人| 婷婷色成人| 在线播放 精品| 玖操97| 被强行糟蹋的女人A片| 99热最新地址在线| 色婷婷狠狠| 婷婷五月激情综合啪啪| 丁香五月天天高清在线| 中文字幕无线久必| 日韩无码人妻一区二区三区综合| 六月天婷婷| 五月天伊人av| 久色网| 久热这里只有精品在线观看 | 国产五月丁香在线| 欧美99| 激情五月天在线观看婷婷| 中文字幕在线免费观看视频| 外国碰视频网站97| 日本色99| 99精品一二三四视频| 人人爱人人摸人人澡| 丁香五月婷婷操逼| 79精品视频| 亚洲最大视频网站| 久久亚洲色导航| 精品色色| 99re思思在线视频| 国产AV一区二区三区日韩| 中文不卡一二三区| 无码成人AAAAA毛片AI换脸| 97色五月天| 色五月五月婷婷| 综合激情五月丁香9999久久精| 99啪啪视频| 99性视频| 五月色网| 五月色网| 1区2区视频| 在线观看免费狠狠色丁香香综合| 9九色首页| 少妇激情基地| 婷婷综合五月| 99re99热| 丁香激情五月| 秋霞影音91人妻久久| 天天操天天国产三级片处女学生妹| 噜噜色婷婷| 五月丁香六月停停停| 舔色婷婷| 丁香五月影院| 97碰| 日韩啪啪视频| wWw色五月| 丁香五月天视频| 色香五月天| 久久久色情| 97碰碰视频| 婷婷五月天国产精品| 色五月激情网| 亚洲人人操BD| 黄色片久久| 五月天综合在线观看| 久热99热| 五月天成人综合| 深爱五月综合网| www.色色色com| 五月天天久久香| 操91| 久热这里| 婷婷五月天激情在线| 五月丁香花成人社区| 天天爽天天日| 五月丁香六月在线欧美| 婷婷在线视频| 久久婷婷五月综合色丁香| 色狠狠色综合久久久绯色AⅤ影视| 深爱五月激情五月| 在线VA视频|