欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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婷色| 超碰九色| 六月婷婷七月丁香| a九九热www| 五月婷婷五月| 性色婷婷| 五月丁香六月婷婷激情视频在线观看免费 | 中文字幕日产A片在线看| 中文字幕色色色| 婷婷激情四射网| 狠狠干狠狠色| 婷婷色五月激情| 婷婷丁香色情五月天| 丝袜人妻| 碰碰人人漕| www.五月天| 99热99精品| 久久婷五月综合色| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | j久久性爱视频| 51精品国内探花| 亚洲a色| 五月婷婷亞洲中文| 丁香五月天精品| 91丨九色丨熟女|老版| 日日撸夜夜操| 桃色五月天| 亚洲最大五月六月丁香婷婷| 婷婷六月天亚州| 天天射夜夜爽| 超碰97免费在线| 五月激情视频| 色婷婷久久| 五月婷婷啪啪| 天天操天天插| 婷婷成人视频| 五月天婷婷久久| 婷婷五月丁香基| 婷婷色女| www.婷婷| 日本超碰在线| 91九九| 综合99久久天天综合| 婷婷五月综合色小姐小说| 六月色色| 久久99国产综合精品免费| 99热综合| 婷婷狠狠操| 欧美99视频| 久热视频这里只有精品| 久久偷拍综合五月天| 伊人婷婷激情| 激情九九综合网| 久久99热这里只有精品23| 性欧美日本| 亚洲在线播放| 性爱五月丁香| 五月丁香999| 久久免费丁香| 五月丁香久久| 激情婷婷综合| 色婷婷视频综合| 久色五月| 播五月,色五月,开心五月播放器| 激情视频综合| 婷婷五月天影院| 五月天激情亚洲| 色五月婷婷色| 三年高清大片免费观看国语| 欧美A片在线视频免费观看| 噼里啪啦完整版中文在线观看| av在线资源| 婷婷六月丁香五月| 狠狠精品干练久久久无码中文字幕| 伊人久久婷婷| 91久女| 亚洲人人艹| 人人操人人添人人摸97| 婷婷久久久| 99色在线视频观看| 丁香社区婷婷五月| 人妻激情在线| 狠狠操天天干| 九九美女视频| 怡红院 久久| 26uuu欧美日韩| 开心婷婷五月花| www,五月丁,com| 五月丁香婷婷俺| 日本色爽| 天天干天天插| 亚洲成人九九九| 日本 欧美在线| 欧美天天五月丁香免费观看| 26uuu亚洲| 日韩在线观看亚洲| 久久久国产精品黄毛片| 亚洲一区二区无遮挡A片| 色婷婷av在线| 激情丁香五月婷婷啪啪| 五月天激情四射| 婷婷五月天伊人| 精品夜夜澡人妻无码AV| www.seqingwuyuetian| 乱岳熟女50岁| www色综合亚洲92| 一区二区你懂的| 精品牛仔裤超碰| 婷婷五月亚洲激情| 激情性爱五月| 九九综合五月欧美| 丁香婷婷免费| 9+1视频网址| 亚洲视频在线网站| 亚洲精品色色| 99久.| 亚洲精品白浆高清久久久久久| 丁香色情五月综合激情| www.婷婷五月天啪啪| www.五月.com| 亚洲a片免费观看| AV堂狠狠干| 99这里有精品视频视频| 久久精品国产AV一区二区三区 | 亚洲AV免费在线| 色婷婷五月天小说| 成人免费黄色短视频| 日本婷婷在线| 人人摸人人澡人人| 久草五月婷| 天天免费成年人视频| 亚洲操B| 欧美69久成人做爰视频| 美女亚洲五月丁香| 五月天另类小说| 五月花激情网| 人人摸人人干| 日本久久99久久| 蜜臀九九九九| 96自拍视频九色在线观看| 国产免费AV网站| 色女伊人| 六月婷在线| 久久久激情| 久久精品综合色| 亚州性爱99| 免费精品99| 91狠狠综合久久| 五月天丁香成人| 激情五月天色色色| 九九成人视频| 狼人婷婷综合| 超碰AV在线| 在线资源av-超碰中文在线-成人AV | 操九色| 操逼电影免费看| 六月丁香五月婷婷首页| 国产精产国品一二三在观看 | 五月丁香久久综合| www.色五月| 级情九色| 色婷婷狠狠18禁| 五月丁香啪啪啪啪| 日韩无码成人电影| 五月天精品综合在线| 成人国产欧美大片一区| 操日挥操日日| 久久最新色| 人人爱摸视频| 99色在线观看| 91九色精品熟女内射| 婷婷丁香九月| 99热国产精品| 丁香婷婷丁香五月欧美人| 天天噜噜| 日日做天天操夜夜爽| 国产精品大香蕉| 激情婷婷在线中文字幕| 玖玖在线视频| 日本熟女内射| 久久刺激网| 亚洲精品国产setv| 91啪级电影| 久久五月天激情| 桔色成人在线| 久操人妻| 秋霞日本免费毛片A片| 天天操屄网| 激情五月天色播| 亚洲精品视频在线| AV性爱网| 日韩精品色| 久热在线中文字幕色999舞| 再次出发二| 日日夜夜干| 丁香 婷婷五月| www.99色| 欧美成综合在线观看| 丁香九月婷婷色| 五月婷婷啪啪啪啪| 丁香五月婷婷综合精品素人| 亚洲色色色色色色色色色| 丁香六月婷婷| 五月婷婷之六月丁香| 精品久久久91久久影视网| www.久久66| 91在线操逼视频| 综合激情深爱| 人人97碰| 日曰躁夜夜躁2026| 丰满人妻一区二区三区| 桃色Av色哟哟| 区欧美日韩成人| 天天操人人干| 视频综合网| 51精品国自产在线| 五月天婷婷AV| 五月婷婷中文网| 狼人伊人天堂| 五月丁香激情综合网| 国产五月丁香在线| 色综合av超碰| 五月婷色| 狠狠操性爱av| 熟女网站久久| 综合福利网| www.五月.com| 色情·com| 五月婷婷六月激情| 99在线热视频| 五月开心啪啪| 欧美25p| 91九九| 丁香伍月婷电影全集| 日婷婷久久开心| www.五月婷婷| 婷婷六月丁综合| 婷婷五月激情网| 丁香激情合作五月| 天天搡日日搡aaaaⅩ| 无码少妇高潮喷水A片免费| 精品国产va久久久| 热的国产,热的综合,热的有码| 色色丁香婷婷五月天| 色哟哟www| 91操色| 123日本不卡在线| 日本一级黄色电影| 97色色视频| 日本本土色网第一区| 激情婷婷综合网| 色婷婷av在线观看| 久久久97| 人人播| 色婷婷丁香五月观看| a色婷婷| 夜夜穞天天穞狠狠穞AV美女按摩| 午夜成人天堂久久无码日韩久久| 常久最新免费的色吊丝| 色五月丁香激情视频| 伊人久久婷| 婷婷丁香18| 亚洲综合激情五月久久| 色你久久| 色欲久久久久久综合网综合网| 亚洲色五月| 色五月激情网| 日日夜夜久| 99精品色色| 热99在线精品| 新激情五月天| www.9操| 国産精品| www.色综合.com| 另类五月激情| 精品人妻久久久久| 五月停停激情网| 色玖玖| 手机在线视频观看9| 99网| 香蕉久久av一区二区三区 | 日韩少妇内射免费播放| 8090在线影视少妇| 欧美电影在线观看| 九九热在线视频| 99久久久免费| 婷婷色综合| 视频一二区| 色五月女| 天天日夜夜爽| 九九婷婷综合| 97干97色| 夜夜爽天天爽| 丁香网站| 国产SUV精品一区二区883| 五月天婷婷色| 99久久网站| 激情五月婷婷五月| 色色综合网站| 日韩AV在线影片| 精品国产乱码久久久久夜深人妻| 青青久在线视频免费观看| jiZZdr| 激情五月丁香婷婷| 99这里只有精品| 另类激情综合| 国产亚洲精品久久久久苍井松| 噼里啪啦在线观看免费完整版视频| 五月婷婷中文| 人妻丰满精品一区二区A片| 这里有精品| 五月丁香六月激情综合| 狠狠色综合五月人人| 97色婷婷| 大伊香蕉精品视频在线| 精品AV无码超碰| 久久婷婷大香蕉| 国产性爱色| 激情四射婷婷色色色| 91好好热日本在线| 6月丁香婷婷| 五月五婷婷网| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 亚洲乱码日产精品BD在线观看| 中文字幕在线免费观看视频| 思思9久久| www.韩日视频| 激情五月综合网最新| 超碰在线观看99| 国产乱码久久| 欧洲亚洲激情五月天在线| 欧美成人精品一区二区| 五月天婷婷綜合院| 九九在线精品| 综合久久六月| 婷婷六月丁香激情| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 天天干狠狠| 欧美在线操| 亚洲综合成人网| 老妇六区| 生活片五区| 丁香五月天色综合| 久热这里只有精品99re| 婷婷久草| 久久3级片| 99热亚洲精品| 九九热这里只有精品一| 色婷婷丁香五月| 五月天六月色| 国产亚洲99久久精品熟女| 91精品久久久久久久久| 亚洲 激情 中文| 99热12| 色五月激情综合| 97人人操人人干| 懂色av粉嫩AV蜜臀AV| 国产婷婷综合在线免费视频| 婷婷在线操| 婷婷久久色| 另类图片五月天| 影音先锋男士资源网一区| 国产三级片91| 区区欧美你爱| 日本欧美成人片AAAA| 婷婷五月天丁香综合网| 久久色在线视频| 思思热AV| 中国丰满熟女A片免费观| 美国不卡视频| 日本激情五月| 丁香五月天视频| 丁香婷婷六月| 婷婷亚洲五月丁香综合在线| 亚洲综合九九| 玖玖爱导航| 久久久久亚洲A∨成人乱码电影| 色婷婷六月丁香综合欲精品| 激情五月婷婷| 99爱视频精品| 国产免费一区二区三区三州老师F1F1.CC| 欧洲色| 欧美天堂久久| 五月丁香啪啪综合| 婷婷丁香18| 色情综合网| 成人免费va| 亚洲精品久久久久AV无码| 国产97色在线 | 日韩| 久久婷婷五月丁香| 免费无码毛片一区二区A片| 91久久九色| 99热这里只有精品33| 超碰免费99| 亚洲色基地| 丁香五月亚洲综合| 国产午夜精品AV一区二区麻豆| 久久9视频欧美| 99国产这里只有精品| 九九热精品| 日韩操人| 超碰99在线观看| 综合玖玖偷拍| 少妇性按摩无码中文A片| 色色9 9| 最新激情五月天| 亚洲精品午夜国产va久久成人| 99久久精彩视频| 五月天色婷婷网| 丁香狠狠干| 久久综合网免费视频| 成人AV在线电影| 色五月婷婷操逼| 五月丁香性| www.com在线操视频免费观看| 丁香五月亚洲综合| 久久婷综| 亚洲亚洲亚洲AAAAAA| 色色亚洲| 五月丁香六月婷婷综合在线| 激情五月综合亚洲另类| 日本成人综合| 色999亚洲人成色| 在线中文AV| 成人欧美Va| 国产精品久久久久久久久久| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 亚洲妇女熟BBW| tingtingjiqingwuyue| 亚洲久久激情| 色婷婷4| 任你爽免费视频| 久久久久亚洲AV成人无码电影| 成人在线日韩欧美| 久久激情综合| 99色综合| 丁香五月婷在线观看| 亚洲一级 片内射网站在线观看| 五月丁香婷中文| AA片在线观看视频在线播放| 成 人 色 色| 91精品综合久久久久久五月天| 婷婷五月天成人网站| 97婷婷五月丁香| 99热这里只有精品中文字幕| 99热在线精品播放| 婷婷大香蕉| 婷婷五月天亚洲激情戏精品| 91精品视频男人的天堂| www五月天激情com| 婷婷性爱五月天丁香网| 丁香成人色情五月天| 成熟妇人A片免费看网站| 日本在线噜噜| 久久久久久99精品无码| AV性爱在线| 五月激情四射婷婷丁香| 婷婷婷婷婷婷婷婷婷婷丁香| 成人va在线播放| 久热 91| 九色七七| 婷婷5月开心6月| 91九九热| 婷婷六月丁| 678五月丁香亚洲综合| 五月刺激丁香月综合| 综合婷婷五月天| 国产精品久久99| 全部老头和老太XXXXX| 婷婷五月天综合色| 超碰93在线观看| 五月天色图| 丁香六月亚洲| 亚洲另类毛片| 中文字幕在线播放视频| 亚洲mm免费| 久色大| 五月婷婷亚洲天堂激情在线| 激情五月婷婷色色| 国产亚洲在线观看| 五月天久久婷婷| 婷婷五月天堂网| 久久免费高| 五月丁香欧美综合| 九九热视频免费| 婷婷爱爱蜜臀天天操| 欧美性猛交99久久久久99按摩 | 成人在线视频网| 天天操夜夜爽歪歪| 天天综合色丁香| 成人VAV视频在线观看| 五月婷婷之综合激情| 丁香婷婷激情五月| 丁香婷婷五月色成人网站| 精品夜夜澡人妻无码AV| 99无码视频| 99久高清视频| 久久久婷婷五月天| 色婷婷九月| 激情五月丁香在线观看直播| 婷婷五月花| 2013AV天堂| 色综合色| 日本人人xxx| 五月婷网| 天天综合网色欲香| 99re欧美精品| 九月婷婷久久久| 五月色丁香婷婷中文字幕| 婷婷五月丁香四射| 欧美成人AAA片一区国产精品| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 欧美日韩91| 中文字幕av网站| 强壮公让我夜夜高潮A片视频| 另类激情五月| 大婷婷色呦呦噜噜色呦呦噜噜| 99精品视频在线| 五月婷婷色| 婷婷色吧| 99热精品超碰| 插少妇综合网| 26uuu美女三级视频| 欧美色久| 另类激情四射| 欧美天天搞| 大香蕉丁香五月| 麻豆WWWCOM内射软件| 狠狠做深爱婷婷久久综合一区| 五月婷在线视频免费看| 99国产小视频| 婷婷五月精品中文字幕| 亭亭五月天黑人2014| 五月色情婷婷开心五月色情| 97干欧美| 日本综合色色| 婷婷五月天av| 亚洲精品亚洲人成人网| 97视频久久| 日本在线视频播放91| 亚洲AV成人无码电影| 91 久热| 激情综合网婷婷五夜| 成人无码精品1区2区3区免费看 | 91精品综合久久久久久五月丁香| 天天日日夜夜爽。| 婷婷五月天中文字幕| 内射激情在线| 五月天激情小说| 国产日韩av片| 狠狠爱五月婷婷| 69精品人人人人人人| 99热有精品在线观看| 色欲AVV| 99re资源在线视频导航| 91综合视频在线| 久久青青日本视频| 九九色色色| 9久国产精品| 色久九| 99久久婷婷| 婷婷在线观看五月天在线视频| 99综合网| 色狠狠伊人久久五月丁香| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 岛国av网| 另类小说激情五月天| 五月丁香六月色| 亚洲婷婷五月| 丁香五月激情五月| 七月丁香五月婷婷在线| 欧美97超碰| 婷婷丁香色性爱| 激情综合国产| 啪啪操超碰| 国产激情AV| 99热思思在线观看| 婷婷丁香五月亚洲免费| 色热久| 亚洲欧美婷婷五月色综合| 欧美人与性动交CCOO| 99久久喉9| 午夜成人在线免费视频| 啪啪啪综合网| 人妻熟妇六区| 丁香五月激情六月综合| 五月丁香六月婷婷无码| 五月婷婷激情综合网| 偷偷与邻居做爰完整视频| 久热re视频在线观看网站| 亚洲黄色操逼| 二色AV| 色色色777| 97在线/亚洲| 久久五月天大美女| 伍月婷丁香花全集| 五月网网站| 丁香五月在线观看| 一起草AV| 991自拍视频| 97视频久久| 99激情网| 狠狠色婷婷777| 九九RE视频在线精品| 欧美大片免费播放器| 丁香花五月天社区| 丁香五月精品视频| 国产精品人人妻人人爽| 九九Av| 天堂亚洲 在线| 色婷婷五月六月丁香综合视频| 99er久久| 五月天啪啪| 九九中文字幕九| 激情播丁香| 看全色黄大色大片| 爱iii做iiii日| 久久婷婷草| 秋霞学生妹一二级| 激情久久久久久久久久| 婷婷五月天VI| 欧美欧盟性爱网| 日日杆天天| 狠狠色丁香| 夜夜AVV| 思思久久精品视频| 欧美成人va| AA片在线观看视频在线播放| 爱射综合| 91超级碰在线| 超碰在线资源| 人人做天天爱| 免费看欧美成人A片无码| 色色激情网| 伊人啪啪网| 中文字幕乱码亚洲精品一区| 天天操天天日天天爱| 久久人妻精品| 人操91在线| 狠狠干青青草| 99国产精品久久久久久久久久久 | 久久蜜臀婷婷| 伊人丁香五月| 婷婷综合网站| 五月激情视频| 六月丁香av| 超碰精品国产首页| 成人丁香五月天| 1024成人免费看| 丁香伊人综合| 亚洲国产精品二二三三区| 金桔一区二区ab地址| 狠狠狠狠狠狠色| 亚洲99热| 亚洲综合色丁香五月天| 少妇水多A片太爽了| 激情四射五月天偷偷看婷婷| 99ri视频| 狼人婷婷综合| 播四月婷婷六月丁香| 国产毛片欧美毛片久久久| 就要爱综合| 丁香久久| 久久婷婷精品| 97干在线视频| 婷婷丁香高潮了| 这里精品| 五月丁香六月欧美综合网站| 99re久久| 99re这里只有| 丁香婷婷精品视频| 丁香五月婷婷基地| 色五月婷婷成人视频| 99热只有精品在线| 99视频精品视频| 亚洲va国产va天堂va综合va| 亚洲天堂久久| 色涩影院六月丁香| 99这里有精品| 91超级碰在线视频| 九九精品热| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 天天色官网| 99热99精品在线观看| 开心五月激情婷婷| 婷婷久久天堂网| 97色色色| 超碰成人免费| 九九热在线视频| 久久这里只有精品视频26| 色综合久久之分久久| 精品三区影院| www.9797国产| 久久久精品色| 千人斩操逼| 骚逼视频一区2区| 久久伊人五月天| 久久99免费视屏| 婷婷色五月久久| 91综合视频在线| 91干视频| 熟女重口味αV| 五月天婷婷色播综合在线| 第四色婷婷丁香五月| 免费看片在线观看| 久久97| 春色激情第四色| 欧美久久久久久久久中文字幕| 操日视频| 狠狠狠狠免费| 99资源在线| 五月丁香六月婷婷久久| 99热只有精品在线观看| 香蕉网久久| 色狠狠综合| 六月丁AV| 成人做爰A片免费看网站找不到了| 99精品亚洲| av性爱在线| 欧洲亚洲免费视频9| 亚洲亚洲人成综合网络| 亚洲热视频| 精a品a视a频| www.99操.com| 亚洲天天| 婷婷激情五月天激情| 97av在线视频| 五月婷婷综合在线视频| se99视频| 色婷婷成人五月| 五月丁香A片| www.九九婷婷| 国产人妻人伦精品一区二区| 免费观看的av| 亚洲中文乱字字幕线在永久| 中文字幕AV在线播放| 久久婷婷五月天大香蕉| 另类视频一区| 五月天婷婷无码视频| 蜜桃婷婷狠狠久久| 激情五月黄色| 99热爱爱干干日| 天天爱天天做天天舔| 国产亚洲成AV人片在线观黄桃| 色五月婷婷五月丁香五月| 九九热超碰| 一级七香蕉| 日日夜夜干| 久久久久久激情| 亚洲第一精品网站| 五月综合777| 五月丁香91| 久久香视频| www.五月天| 日本九九九九| 天天日天天插| 激情五月深爱婷婷| 狠狠擼综合| 99re66热这里只有精品| 狠狠色五月| 丁香五月停停av| 日本欧美成人片AAAA| 婷婷五月激情网| 丁香五月天综合| 丁香五月日啪| 人人色人人摸人人看| 久久天堂女人| 香蕉久久五月| 久久这里只有精品99| av操一操| 激情综合网 激情五月天| 亚洲色9| 99久热在线精品| 99久热精品在线| 婷婷综合国产| 色欲五月丁香| 久久婷婷五月综合色欧美| 色婷婷电影网| 亚洲操逼网| 99精色| VA色婷婷| 国产精品VA在线| 成人性爱无码| 丁香五月亚洲| 天天操屄网| 狠狠久久婷五月综合色| 天天草天天爱| 亚洲婷婷丁香五月亚洲| 无码天天操| 欧美日韩大黄| 激情合网婷婷| 伊人婷婷五月| 丁香婷婷五色月| 五月丁香激情综合啪| 五月丁香激情综合网| 内射综合网| 操久久网| 狠色综合网| 人人干天天舔| 五月婷伊人| 97婷婷丁香五月| 激情五月天免费视频| 天天情色五月天| 狠狠色激情在线| 欧美婷婷六月丁香综合色| 丁香五月天AV在线| 婷婷久久五月天亚洲欧美国产日韩在线观看| caop在线视频| 六月婷久久| 98永久精品| 国产ava| 五月丁香六月色婷婷综合五月天| 伍月婷婷免费视频| 五月丁香综合啪啪| 99思思在线视频| 激情的五月| 久久99美女精彩视频| 人人爱人人摸人人澡| 国产精品美女| 五月丁香在线| 五月丁香六月综合激情| 日本人妻伦在线中文字幕| 激情性爱五月天网页| 亚洲无码免费看| 久9久成人精品视频| 亚洲免费看片| 五月丁香自拍| 色9999日韩国产| 九九99免费视频| 久久99久久99精品免视看婷婷| 九九99精品| 97色婷婷| 激情婷婷五月亚洲| 色婷婷婷av| 婷婷涩五月天综合| 婷婷色综合av| 五月激情视频| www99精品亚| 五月丁香香蕉| 三级大香蕉网| 色情五月婷婷| 天天日,天天插| 婷婷五月天97干| 大香蕉狠狠爱主页| 激情综合青草| 婷婷丁香五月高清| 五月丁香婷婷色| 98国产精品综合一区二区三区| 9 大屁股在线视频精品| 91色逼| 日日操夜夜爽天天天| 婷婷五月丁香六月综合网| 淫视馆aV二区一区| 久久久91精品| 中文字幕在线播放视频| 婷婷五月色网| 日本久久精品| 伊人免费视频9| 亚洲国产成人在线| 日逼免费视频| 九九色大香蕉| 91九九九九| 97丁香婷婷| 大陆肏屄视频| 五月天婷婷久久| 停停五月色宗合| 激情黄色五月天| 99在线视频资源| 久久九久久| 亚洲欧洲另类| 99热这里都是精品| 久久精品国产AV一区二区三区 | 美欧成人视频| 777丁香六月青青草婷婷综合久月| 久久性爱视频| 婷婷丁香91综合| www.zbzhongsen.com| 亚洲日韩欧美综合VA| 日日爽夜夜爽| 大香蕉伊人99| 一级黄色尤物综合视频手机在线观看| 五月丁香| 精品人人操| 五月天婷婷久久视频| 精品欧美一区二区三区久久久| 九九偷拍网| 大香蕉久操| 久久久久这里只有精品| 亚洲超碰在线| 丁香婷婷六月天| 丁香六月婷婷综合欧美| 国产AV一区二区三区最新精品 | 操逼视频一区| 色婷婷狠狠18| 天天草女人| WWW色综合| 超碰大香蕉网| 精品99视频| 六月丁香社区| 五月丁香婷婷色啪| 五月六月激情婷婷| 九九色热| 99日韩| 91色逼| 99爱爱网| 狠狠草狠狠草| 日韩精品呦呦va| 五月丁香性爱| 久久婷丁香五月| 海外网站专业操老外| 丁香五月无码| 五月天啪啪网| 婷婷五月六月丁香综合| 国产成人AV不卡| 色欲五月天| 中文字幕日产A片在线看| 99热99成人| 五月丁香777| 婷婷五月综合在线| 99人人干| 成人视频一区| AV九九| 4399成人黄A片| 五月婷婷久久综合| 色婷丁香| 激情久久久| 99久久婷| www.久久| 九九这里只有精品在线视频| 女人天堂AV| 丁香亭亭久久| 欧美美女视频| 激情丰满熟妇五月| 五月成人丁香av91| 五月天俺去也| 日本一区二区三区精品视频| 九九99精品视频在线观看| 色综合色综合色综合| 亚洲五月丁| 久久99视频| 久久99热这里只有精品首| 亚洲不卡| 91chinese 在线| 久久伦乱| 玖玖国产视频一区| 色播丁香| 天堂婷婷丁香六月网| 刘玥精品一区| 色五月激情五月| 操逼视频一区| 99视频只有精品| 伊人丁香五月| 亞洲自怕| 婷婷综合成人| 99er日韩| 青草视频在线播放| 人人妻久久妻| 99在线视频资源| 26uuu国产| 天天舔天天| 五月婷婷综合激情小说| av狠狠操| 97操碰在线视频| 五月婷婷色五月| 欧美综合丁香网| 9在线9在线婷婷在线国产| 九九99热久久精品66中文字幕| www.五月婷婷久久.com| 五月天婷婷色| 色天天久婷婷| 狠狠色 综合色区| 亚洲综合激情五月久久| 色欲影香| 日本婷久久| 婷婷色色综合激情| 国产XXXX搡XXXXX搡麻豆| 岛国AV网| 色综合色色| 婷婷在线中文字幕| 婷婷五月丁香超碰| 久久这里在精品视频| 久9热在线免费观看| 成人在线不卡| 深爱丁香激情| 激情视频91| 成人无码髙潮喷水A片| 五月婷婷无码| 在线日韩视频| 婷婷天堂综合网| 五月天色色网站| 色色网站免费在线视频| 97人人妻人人艹| 久婷五月| 丁香五月另类小说在线阅读| 99视频在线观看地址| 99亚洲视频| 韩国婷婷丁香五月| 色v综合网| www.色多多婷| 一起草性爱不卡视频| 色综合天天天天做夜夜| 婷婷综合久久| 欧美色综合天天久久综合精品| 天天夜夜六月丁香五月婷婷老师| 激情婷婷在线| 久久久www| www.狠狠干| 激情婷婷丁香五月天| 春色激情| 久久久com| 日韩按摩二区| www.91色| 第1影院之五月婷婷| 色五月欧美| 99精品色色| 久久伦乱| 九九99视频精品| 九九av| 综合久久影院| 99无码黄色视频| 春色激情第四色| 午夜丁香| 五月丁香婷婷综合视频| 99re资源在线视频导航| AV九九| 97久久久| 五月丁香六月激情| 亚洲情a| 色色色精品无码区| 99日本黄站| 午夜日韩久久久网站| 97一区二区| 天天爽天天操| 日本99热| 99欧州偷拍视频| 人妻操在线看| 26uuu国产色| 综合色99| 性欧美日本| www.com亚洲网站在线免费| 久久久婷丁香五月| 中文中文在线| 丁香五月天社区| www.99热视频| 久久婷五月婷| 五月天婷婷无码视频| 免费播放片大片| 日本操B片| 9九九久久精品无码专区| 大地9中文在线观看免费高清| 99热网站| 深爱激情六月天| 综合色情网| 五月丁香久人妻中文| 夜夜撸日日操| 五月天播播中文字幕| 五月开心深爱激情网| 好好干av| WWW.桔色成人.COM| 操日本人妻视频| 26UUU欧美激情一区二区| 国产99精品免费视频| 久鲁鲁色网 | 影音先锋按摩| 日本色色图| 免费看成人747474九号视频在线观看| 九九热狼人| 99色视频| 极品人妻VIDEOSSS人妻| 欧美日韩99| 九月丁香| 少妇被下春药玩弄A片| 日本乱子人伦在线视频| 五月婷婷五月天| 丰满老熟妇BBBBB搡BBB| 欧美三级巜人妻互换| 三十熟女| 色综合综合综合| 国产精品成av人在线视午夜片| 色爱爱综合网| 2021日韩无码| 日本欧美国产| 亚洲免费看片| 影音先锋女人av鲁色资源网小说免费 | 久色激情| 被强行糟蹋的女人A片| 七月婷婷色香综合网| 欧美色必爱| 日韩不卡123| 91精品国产综合久久久不卡电影| 成人婷婷色综合| 日本三日本三级少妇三级66| 久久五月热| 欧美精品A片一区在线观看| 激情丁香九九五月综合网| 黄色片区子| 99re在线观看视频| 人人人va亚洲视频在线| 日韩人妻操逼视频| 国产成人VA| site:picc-up.com| 五月久久丁香| AV成人在线播放| 五月色影院| 99啪啪视频| 久久九网| 超碰在线超碰| www。狠狠干。com| 天天夜夜六月丁香五月婷婷老师| 精品免费99| 五月婷婷六月丁香玖玖玫瑰91| 人人摸人人摸| 任你草| 五月婷婷操操| 五月婷婷日本| 亚洲艹网| 激情小说五月欧美亚洲丁香| 色呦呦美女| 六月婷婷综合| 99精品网址| 婷婷色导航| 国产精品久久久久久五月天加勒比| 婷婷五月天在线一区| 五月丁香啪啪啪啪| 国产无遮挡又黄又爽免费网站| 久久婷婷五月综合色天| 亚洲精品99| 天堂草在线观看| 日韩人妻无码专区| 狠狠色狠狠色综合日日91| 亚洲性天天| 久久ab| 国产成人精品亚洲线观看| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 激情五月婷婷综合网| 国产白丝在线一区| 99在线视频精品| 超碰人人操| 96精品成人无码A片观看金桔| 亭亭玉月丁香| 人妻系列久久久久久久久久久 | 天天操天天操天天操| 亚洲性视频| 婷婷99狠狠躁天天久久久九九九| 伊人影院久久网| 五月丁香怕怕综合| 五月天婷婷丁香导航| 国产肥白大熟妇BBBB视频| 区区久久妻| 婷婷五月天在线视频网站| 天天干 夜夜爽| 中文超碰视在线| 成久综合视频| 天天日夜夜曹| 青青久在线视频免费观看| 99视频在线播放大全| 久9精品视频| 激情性五月天免费小说视频| 思思精品视频| 99热在线观看99| 丁香五月激情六月| 99自拍视频在线| 婷婷干六月综合旧址| 色七色九九| 99综合网| 天天日日夜夜| 中文字幕视频在线播放| 99精品小视频| 91九九| 丁香婷婷五月色成人网站| 夜夜做夜夜愛| 五月丁香网站| 五月天婷婷基地综合网| 五月丁香六月婷婷不卡免费无码| 激情五月婷婷五月| 青青草原亚洲久| 狠狠狠狠狠狠草| 99只有精品| 婷婷色丁香五月| 丁香激情五月天| 熟女少妇内射日韩亚洲| 丁香九月激情| www.成人婷婷综合| 免费看成人AA片无码视频吃奶| 超碰国产在线| 人人澡玖玖一| 婷婷五月色图| 色婷婷五月天综合网| 天天噜日日噜综合无码| 色婷婷丁香社综合| 久久99色色| 777米奇影视第四色| 激情网五夜婷婷| 这里只有精品免费视频| 国洲夜色亚热在线久久| 一区二区三区四区无码| 免费无码毛片一区二区A片| 欧美日韩成人在线| 99色视频| 五月五月婷婷| 国产色五月| 五月婷在线| 婷婷五月成年人| 99免费在线视频| 色婷婷手机在线| 99热国产这里只有精品| 激情五月丁香五月| 亚洲操b| 久热超碰91| 99re热在线观看| 久9久成人精品视频| 六月婷婷综合| 五月天婷婷网站| 狠狠狠夜夜夜| 99ER热精品视频| 久久激情视频| 涩涩涩.com| 97色碰| 五月天色综合服务平台| 在线观看视频1区| 丁香五月精品| 亚洲无码www| 97人人操人人干| 丁香午月AV中文字幕| 亚洲视频在线观看| 开心激情网五月| 丁香六月激情毛片| 亚洲欧美成人在线| 秋霞三级影视资源| 全部老头和老太XXXXX| 丁香六月激情综合啪啪| 激情图片99| 天天综合色| 九九这里只有精品在线视频| 粉嫩AV久久一区二区三区| 91dy.av| YW无码| 欧美婷婷丁香五月社区| 亚洲综合激| 黄色片久久| 婷婷色综合av| 99思思在线视频| Blackedraw视频一区二区| 99精品在线观看视频| 婷婷大香蕉| 熟女人妻一区二区三区免费看| 五月丁香在线综合| 91精品久久久久久77777| 婷婷五月花| 色婷婷婷婷| 99色激| 婷婷丁香中文字幕| 久婷婷色| 五月天自拍网| 激情性爱五月天网页| 超碰99资源站| 五月天成人在线视频丁香| 久久aaaaa| 激情五月天婷婷五月天| 婷婷五月丁香久久| 91操网| 国产午夜精品一区二区三区四区| 另类图片五月天| 久久奄也去色色网站| 欧美、日韩、中文、制服、人妻| wwwss在线观看|