首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Swing 學生管理系統:從零構建桌面應用完整實現

     編輯:Java 相關知識

本文通過一個完整的 Java Swing 學生管理系統演示,涵蓋 GUI 佈局、事件監聽、數據存儲、查詢排序等核心桌面應用開發技能,適合 Java 初學者鞏固面向對象與事件驅動編程思想。

一、 系統功能設計

  • 信息錄入:姓名、成績輸入驗證,支持確認添加/撤銷操作
  • 信息查詢:按姓名精確匹配,顯示對應成績
  • 成績排序:降序排列,同步更新顯示區域
  • 數據清空:一鍵重置排序顯示區

二、 界面架構(JTabbedPane 三分頁)

JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP);
tab.add(p1, "成績錄入");
tab.add(p2, "成績查詢");
tab.add(p3, "成績排序");
  • 錄入頁:輸入框、提示標籤、添加/撤銷按鈕、記錄列表區
  • 查詢頁:查詢輸入框、確認按鈕、結果顯示框
  • 排序頁:排序結果區、排序/清空按鈕

三、 核心數據結構

private String[] name = new String[100];
private String[] grade = new String[100];
private int countNum = 0; // 當前記錄數

採用定長數組模擬列表存儲,簡化邏輯,適合教學演示。生產環境建議使用 ArrayList<Student>。

四、 事件監聽器模式實現

內部類 Listener implements ActionListener 統一處理所有按鈕事件:

public void actionPerformed(ActionEvent e) {
    if (e.getSource() == b1) { /* 添加邏輯 */ }
    else if (e.getSource() == b2) { /* 撤銷邏輯 */ }
    else if (e.getSource() == sBut) { /* 查詢邏輯 */ }
    else if (e.getSource() == sortBut) { /* 排序邏輯 */ }
    else if (e.getSource() == clearBut) { /* 清空邏輯 */ }
}

五、 關鍵業務邏輯

1. 添加/撤銷(數組邊界控制)

// 添加
if (textName.getText().isEmpty() || textGrade.getText().isEmpty()) {
    showLabel.setText("添加失敗(姓名、成績不能為空)!");
} else {
    name[countNum] = textName.getText();
    grade[countNum] = textGrade.getText();
    countNum++;
    refreshDisplay();
}

// 撤銷
if (countNum > 0) {
    countNum--;
    refreshDisplay();
}

2. 查詢(線性搜索)

for (int i = 0; i < countNum; i++) {
    if (name[i].equals(searchName)) {
        resultText.setText("姓名:" + name[i] + ", 成績" + grade[i]);
        return;
    }
}
resultText.setText("未找到該學生!");

3. 排序(冒泡排序降序)

for (int i = 0; i < countNum; i++) {
    for (int j = i + 1; j < countNum; j++) {
        if (Integer.parseInt(grade[i]) < Integer.parseInt(grade[j])) {
            swap(name, i, j);
            swap(grade, i, j);
        }
    }
}
refreshDisplay(true); // 更新排序頁顯示區

六、 運行效果與擴展方向

程序啟動後顯示主窗口,三分頁切換流暢,數據操作即時反饋。可擴展方向:

  • 數據持久化:JDBC 連接 MySQL/SQLite
  • 表格組件:JTable 替換 TextArea,支持列排序/編輯
  • 導入導出:CSV/Excel 文件交互
  • 多線程:長時間操作放入 SwingWorker 避免界面凍結

這個小系統雖簡單,但完整踐行了「模型-視圖-控制器」分離思想,是通往 Java 桌面開發大門的敲門磚。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved