)
摘要本文记录了基于 Java Swing 和 SQL Server 的学生成绩管理系统开发全过程实现了用户登录注册、学生信息增删改查、成绩录入与查询、批量删除、成绩报表生成与导出等完整功能适合作为 Java 课程设计参考项目。正文一、项目背景技术栈选择前端界面Java Swing轻量桌面 GUI后端数据库SQL ServerJDBC 连接开发语言Java二、系统功能架构整个系统分为两大核心模块用户登录 / 注册模块实现账号验证、自动建表、默认管理员账号主功能模块学生信息管理添加、修改、删除、全选批量删除成绩管理成绩录入、自动覆盖重复数据成绩查询按学号 / 姓名查询学生成绩成绩报表自动统计、排序、导出 TXT 文件测试数据生成一键生成大量测试数据三、核心功能详解带关键代码1. 登录与注册模块实现了用户验证、注册、用户名唯一校验程序启动时自动创建用户表和默认管理员账号。// 登录验证核心代码 String sql SELECT * FROM Users WHERE Username? AND Password?; try (Connection conn DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); PreparedStatement pstmt conn.prepareStatement(sql)) { pstmt.setString(1, username); pstmt.setString(2, password); ResultSet rs pstmt.executeQuery(); if (rs.next()) { new MainUI(username).setVisible(true); dispose(); } }2. 全选 / 批量删除学生给学生管理表格添加了全选 / 取消按钮支持一次性删除多个学生并同步删除关联成绩避免数据冗余。// 全选/取消全选 selectAllBtn.addActionListener(e - { if (table.getSelectedRowCount() studentModel.getRowCount()) { table.clearSelection(); } else { table.selectAll(); } }); // 批量删除核心代码 int[] rows table.getSelectedRows(); for (int row : rows) { String no (String) studentModel.getValueAt(row, 0); update(conn, DELETE FROM Score WHERE StudentNo?, no); update(conn, DELETE FROM Student WHERE StudentNo?, no); }3. 成绩报表生成与导出重难点通过 SQL 行转列查询实现学生多科成绩汇总、按总分排序、班级平均分计算并支持导出为 TXT 文件存档。// 成绩统计SQL String sql SELECT s.StudentNo,s.Name, MAX(CASE WHEN Subject数学 THEN Score END) math, MAX(CASE WHEN SubjectJava THEN Score END) java, MAX(CASE WHEN Subject体育 THEN Score END) sport FROM Student s LEFT JOIN Score sc ON s.StudentNosc.StudentNo GROUP BY s.StudentNo,s.Name; // 导出TXT文件 try(PrintWriter wnew PrintWriter(成绩报表.txt)){ w.print(area.getText()); }四、数据库设计系统共设计 3 张核心表满足第三范式减少数据冗余Users 表存储登录用户信息Id、Username、PasswordStudent 表存储学生基础信息StudentNo、Name、Gender、BirthDateScore 表存储学生成绩StudentNo、Subject、Score五、界面展示登录界面是系统的入口采用简洁的 Swing 布局支持用户登录和注册程序启动时会自动创建用户表并初始化管理员账号系统主界面采用选项卡式设计分为 6 大功能模块操作清晰直观六、开发中遇到的问题与解决数据库连接失败一开始是端口配置错误后来通过 SQL Server 配置管理器启用 TCP/IP修改连接字符串解决。表格无法编辑JTable 默认单元格不可编辑需要重写isCellEditable方法实现可编辑状态。删除学生后成绩残留一开始只删除了学生表数据导致成绩表存在无效数据后来修改为同时删除关联成绩数据。七、项目总结与展望总结通过这个项目我熟练掌握了 Java Swing 界面开发、JDBC 数据库操作、SQL Server 表设计和文件 IO 流的使用也理解了模块化开发和异常处理的重要性。