Java面向对象课程设计:学生成绩管理系统

📅 2026/7/5 14:13:12
Java面向对象课程设计:学生成绩管理系统
一、项目简介本项目为Java面向对象课程设计由三人小组协作开发学生成绩管理系统。项目遵循多层分层架构思想基于MySQL实现数据持久化依托JDBC完成程序与数据库交互使用Swing搭建可视化GUI界面。项目全程采用Git协同开发严格遵循阿里Java开发规范。系统不仅完成学生信息、成绩管理、数据统计、条件查询、数据校验等全部基础功能还拓展模糊查询txt文本文档导出成绩汇总表的扩展功能。项目最终可打包为Jar独立运行无需依赖IDE环境功能完善、运行稳定完全满足课程设计考核要求。二、开发环境与技术栈开发环境开发工具Eclipse、Navicat、Git运行环境JDK11数据库MySQL 8.0核心技术核心基础JavaSE、JDBC数据库开发界面开发Swing图形界面、事件监听、JTable表格渲染架构设计Entity实体层、Util工具层、DAO数据访问层、Service业务层、View视图层分层架构开发规范阿里巴巴Java开发编码规范三、项目整体包结构四、项目需求分析基础功能需求管理员账号密码登录校验拦截非法登录并弹窗提示学生信息管理新增、删除、修改、学号姓名精准查询成绩管理学生各科目成绩录入、修改、删除实现学生与成绩数据绑定数据统计自动计算学生总分、班级单科平均分、班级总平均分支持班级成绩排序数据持久化所有数据持久化存储程序重启数据不丢失数据校验完善的数据校验机制拦截空值、分数越界、等错误数据拓展功能需求txt文本文档支持文本文件批量导入、导出学生成绩数据姓名学号模糊查询仅输入姓名学号部分可以查询到有关的全部成绩信息五、数据库设计本系统使用Navicat软件共设计四张核心数据表分别为管理员表、学生信息表、成绩表课程表。数据库采用主外键关联设计成绩表通过学生学号关联学生表实现多表联合查询保证数据关联性与完整性。表结构设计管理员表 (admin)username (用户名)password (密码)学生信息表 (student)sid (学号)sname (姓名)gender (性别)sclass(班级)birthday生日成绩表 (score)sid 学号cid课程号score (成绩)4.课程表coursecid课程号cname课程名称在这里插入图片描述cteacher课程教师六、团队详细分工七、核心功能演示视频学生成绩管理演示视频八、核心代码片段展示组长李思琦 核心代码 (Java)publicclassStudentService{privateStudentDaostudentDaonewStudentDao();// 自动生成唯一学号 STU8位随机字符publicStringgenerateSid(){StringrandomUUID.randomUUID().toString().substring(0,8).toUpperCase();returnSTUrandom;}// 新增学生自动生成学号校验唯一性完全不操作成绩数据publicStringaddStudent(Studentstudent){StringnewSidgenerateSid();student.setSid(newSid);StudentrepeatstudentDao.findById(newSid);if(repeat!null){return学号冲突新增失败;}introwstudentDao.addStudent(student);returnrow0?新增成功学生学号newSid:新增学生失败;}// 修改学生强制锁定学号前端无法修改sidpublicStringupdateStudent(Studentstudent){StudentoldStustudentDao.findById(student.getSid());if(oldStunull){return不存在该学生修改失败;}// 强制使用原学号防止篡改student.setSid(oldStu.getSid());introwstudentDao.update(student);returnrow0?学生信息修改成功:修改失败;}// 删除学生保留合法级联删除移除冗余ScoreDao依赖publicStringdeleteStudent(Stringsid){StudentstustudentDao.findById(sid);if(stunull){return学生不存在删除失败;}introwstudentDao.deleteById(sid);returnrow0?学生及对应成绩全部删除成功:删除失败;}// 根据学号查询单个学生publicStudentgetStudentBySid(Stringsid){returnstudentDao.findById(sid);}// 姓名模糊匹配查询学生列表publicListStudentsearchStudentByName(StringnameKey){returnstudentDao.findLikeName(nameKey);}// 查询全部学生publicListStudentgetAllStudent(){returnstudentDao.findAll();}// 对外提供获取全部非空的学生-课程-成绩有效数据publicListReportVOgetAllStuScore(){returnstudentDao.selectAllStuScoreInfo();}}组员叶颖 核心代码 (Java)//数据库交互设计publicclassDBUtil{//A本机连接IP固定写localhostprivatestaticfinalStringURLjdbc:mysql://localhost:3306/score_manage?useSSLfalseserverTimezoneAsia/Shanghai;privatestaticfinalStringUSERroot;//这里密码填A自己本地MySQL密码privatestaticfinalStringPWD123456;static{try{Class.forName(com.mysql.cj.jdbc.Driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}//获取连接方法publicstaticConnectiongetConn(){Connectionconnnull;try{connDriverManager.getConnection(URL,USER,PWD);conn.setAutoCommit(true);System.out.println(A本机数据库连接成功);}catch(SQLExceptione){e.printStackTrace();System.out.println(连接失败);}returnconn;}publicstaticvoidclose(Connectionconn,PreparedStatementpstmt,ResultSetrs){try{if(rs!null)rs.close();if(pstmt!null)pstmt.close();if(conn!null)conn.close();}catch(SQLExceptione){e.printStackTrace();}}publicstaticvoidclose(Connectionconn,PreparedStatementpstmt){close(conn,pstmt,null);}//测试入口publicstaticvoidmain(String[]args){getConn();}}组员于梓萱 核心代码 (Java)//登录界面设计publicclassLoginViewextendsJFrame{privatestaticfinallongserialVersionUID1L;privateJTextFieldusernameFieldnewJTextField(20);privateJPasswordFieldpasswordFieldnewJPasswordField(20);privateJButtonloginButtonnewJButton(登录);// 模拟存储用户账号密码实际项目可替换为数据库读取privatestaticfinalHashMapString,StringUSER_MAPnewHashMap();static{USER_MAP.put(admin,123456);// 可以在这里加更多测试账号}publicLoginView(){// 基础窗口设置setTitle(学生成绩管理系统 - 用户登录);setSize(450,300);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 登录面板布局JPanelpanelnewJPanel(newGridBagLayout());GridBagConstraintsgbcnewGridBagConstraints();gbc.insetsnewInsets(10,10,10,10);// 添加账号标签和输入框gbc.gridx0;gbc.gridy0;panel.add(newJLabel(用户名),gbc);gbc.gridx1;panel.add(usernameField,gbc);// 添加密码标签和输入框gbc.gridx0;gbc.gridy1;panel.add(newJLabel(密 码),gbc);gbc.gridx1;panel.add(passwordField,gbc);// 添加登录按钮gbc.gridx1;gbc.gridy2;panel.add(loginButton,gbc);add(panel);// 登录按钮点击事件已经加好了跳转代码loginButton.addActionListener(e-{StringusernameusernameField.getText().trim();StringpasswordnewString(passwordField.getPassword());// 账号验证if(USER_MAP.containsKey(username)USER_MAP.get(username).equals(password)){JOptionPane.showMessageDialog(this,登录成功);// 这里已经提前加好跳转主界面的代码了MainView.currentLoginUserusername;// 把当前登录的账号先存起来newMainView().setVisible(true);this.dispose();}else{JOptionPane.showMessageDialog(this,用户名或密码错误请重试);passwordField.setText();}});}publicstaticvoidmain(String[]args){// 启动登录界面SwingUtilities.invokeLater(()-{newLoginView().setVisible(true);});}}九、Git版本管理说明项目Git仓库地址(https://gitee.com/level-seven/score-management-system.git)团队采用分层协同开发模式底层数据库代码优先开发提交业务层拉取代码迭代开发最后界面层对接接口开发。全员独立分支开发定期合并主分支通过Git完成版本迭代、代码备份与冲突解决保证项目高效协作开发。十、项目部署运行步骤环境准备本地安装配置JDK、MySQL数据库环境数据库初始化使用Navicat执行项目SQL脚本完成数据库初始化配置修改修改数据库工具类中本地MySQL账号密码配置依赖导入将lib目录下所有依赖Jar包导入项目构建路径运行系统运行登录界面主程序输入管理员账号密码即可使用系统打包部署项目整体打包Jar文件可脱离IDE独立双击运行十一、项目亮点支持模糊查询一键导出带统计数据的成绩报表十二、项目总结与收获技术收获本次项目开发让我熟练掌握JDBC数据库开发全过程理解数据持久化底层原理能够独立完成数据库搭建、CRUD开发与资源优化。熟练掌握Swing桌面可视化开发熟悉GUI组件布局、事件监听与页面交互逻辑。深入理解多层分层架构的设计思想理清视图、业务、数据库三层的调用逻辑与解耦思路。同时掌握POI文件处理、批量数据生成、数据统计可视化等拓展技术极大提升了Java综合编码与问题排查能力。团队协作收获本次三人分工开发模式让我体会到模块化开发的优势分层开发有效降低项目难度、提升开发效率。熟练掌握Git多人协同开发技巧学会代码提交、合并、版本管理与冲突解决。在多层联调、接口对接、bug排查过程中提升了团队沟通、任务对接、协同攻坚的能力积累了完整的小型团队项目开发经验。