java Swing+mysql+JDBC实现教务系统(源码+数据库+UML图+数据库分析)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 🍅程序员小王的博客:程序员小王的博客🍅 欢迎点赞 👍 收藏 ⭐留言 📝🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕🍅java自学的学习路线:java自学的学习路线

文章目录


一、前言

前几天有一名大一的学弟说他想实现简易教务系统,看到我原来开源了一个使用Struts2+mybatis+mysql实现的学生教务系统(地址如下:http://t.csdn.cn/qfU7F),但是他才大一没学过Struts2+mybatis,他想用java Swing+mysql+JDBC,当我听到使用swing时我都惊呆了,怎么还有学校教这个技术,但想到我读大一时也使用swing嘛,然后经过商量就帮他开发一个swing的教务系统,我自己也复习一下swing,不然我都不记得有这个技术了!并且也画了ER图,用例图,序列图,协作图等,还做了数据库设计文档和需求文档!



二、需求分析

1、引言

信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,但是还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存、要发展、要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。这对于正在迅速发展的各大高校而言,同样有着重要意义。


现如今高校为适应社会的需求以及自身办学的需要,扩建、扩招已在寻常不过。自然就会有更多的学生信息需要处理。如果只靠人力来完成,必然是一项非常繁琐、复杂的工作,而且还会出现很多意想不到的错误,这不仅会给教学及管理带来了很大的不便,也不益于学校全面快速发展的需要。


众所周知,作为高校日常教学中的主要管理工作之一的教务管理,它涉及到院校、专业、师生等诸多方面。特别是目前国家的教育体制也正处在不断改革、创新的阶段,教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出了适合中国特色的教学形式,国家教育部面向各级各类学校开展了全面学分制改革。同时,随着选课制的展开和深入,教务日常管理工作也日趋繁重、复杂,如何把教务工作信息化、模块化、便捷化便成为了现代高校发展的重点。所以总的来说,教务管理软件应实现教务信息的集中管理,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向发展,并为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的基础。在高校中,教务管理工作具有举足轻重的地位,教学质量直接取决十教务管理水平。现如今教务管理信息系统的开发与实施可谓日新月异。


在数字校园理论逐步应用的过程中,各高校一方面不断投资购建各种硬件、系统软件和网络,另一方面也不断开发实施了各类教学、科研、办公管理等应用系统,形成了一定规模的信息化建设体系。


教务管理系统是一个庞大而复杂的系统,它包括对学生信息的注册、修改,学生选课及课程管理和学生的四六级考试及计算机等级考试的管理;对教师课程的管理以及对选课学生评分的管理;和管理员对教师、各类考试的综合管理等主要的功能。教务管理系统运行的状况将直接影响到学校里的主要工作,一旦此系统出错,不仅学校的教学进度安排会受到一定程度的影响,而且还会危及到每一个在校学生的切身利益。所以设计一个功能相对完整、操作简单以及界面友好的教务管理系统变得非常重要。


为了提高教务管理的工作效率和服务质量,降低出错率,精简人力、物力的投入,各个高校均建立了自己的教务管理信息系统,为学校的动态管理和分析决策带来了极大的便利。现在的学校的教务管理也逐步从手工转到计算机自动化信息处理阶段。通过这个系统,用户可以方便的对教师信息以及学生信息和学生成绩资料进行添加、修改和删除操作,还可以对学生资料和成绩进行查询操作。除此之外,对用户的添加和删除操作也很方便。


教务管理系统是典型的信息管理系统(MIS),它能够实现整体规划教学资源(学生,教师,教室),评估教学质量,制定教学计划,检查教学进度,给学校的教务人员管理教务工作提供了极大的方便


2、使用技术及软件

image.png


3、用例图

教务管理信息系统由教学培养计划管理子系统、学籍管理子系统、排课及教学资源管理系统、教务信息发布传递提交系统和事务处理系统等组成。涉及人员友学生、教师、教务员等。

(1)系统用例图

(2)学生用例图

(3)教师用例图

(4)教务人员用例图


4、序列图

(1)学生登录序列图:

  • 学生登录序列图:

  • 学生选课序列图:

  • 学生查询成绩序列图:

  • 学生查询课程序列图:

(2)教师序列图

  • 教师登录成绩序列图:

  • 教师登录序列图:


  • 教务人员更新数据序列图:



5、协作图

(1)学生协作图

  • 学生登录协作图:


  • 学生查询成绩协作图:


  • 学生选课协作图:


(2)教师协作图

  • 教师录入成绩协作图:

  • 教师查询评估结果协作图:

6、类图

教务管理信息系统的总体类图如下:


7、状态图

教务管理信息系统的用户状态图:


8、ER图


三、Swing教务系统实现

1、系统介绍

教务管理是高校教学系统中重要的部分。本教务系统主要满足两类用户的要求,这两类用户分别是系统管理员、教师和学生,他们所具有的功能和权限是不同的。具体要求如下:


系统管理员:查看和修改自己个人信息(工号不能修改);可以对学生、教师、课程与授课信息的增加、删除、修改、查询。


教师:查看和修改自己个人信息(工号不能修改);按课程录入和查询成绩。


学生:查看和修改自己个人信息(学号不能修改);查询已选课程成绩及总学分;根据授课信息进行选课操作。


教工信息包括工号,姓名,性别,出生日期,电话,密码等(系统管理员属于教工)。


学生信息包括学号,姓名,性别,出生日期,电话,密码等。


课程信息包括课程号,课程名,学分等。


一名教师可以讲授若干门课程,一门课程只能被一名教师讲授。


一名学生可以选修若干门课,一门课程可以被若干名学生选修。



要求按照MVC模式设计并实现系统

MVC是一种将应用程序的逻辑层和表现层进行分离的方法。MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。


2.1模型(Model):模型是应用程序的主体部分。模型表示业务数据。通常来说,你的模型类将包含取出、插入、更新、删除你的数据库信息的功能。 ·


2.2视图(View):视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。


2.3控制器(Controller):控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。控制器是模型、视图以及其它任何处理请求所必须的资源之间的中介。


由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松耦合的构件。


2、教务系统源码+文档+uml地址

java Swing+mysql+JDBC实现教务系统我没有开源,制作不易,如果觉得不错请给我一个,三连、收藏、加关注,需要源码+mysql数据库+word需求文档+数据库表设计文档资料的同学可以去https://download.csdn.net/download/weixin_44385486/85567002这里下载相关资料,感谢对我支持,让我有了更多的创作动力,希望我的博客能帮助到你 !



3、运行结果和源码展示

(1)登录页面

登录可以老师,学生,系统管理员登录




启动部份源代码

public class Login extends JFrame {
  private final Action action = new SwingAction();
  private JTextField textField;
  private final ButtonGroup buttonGroup = new ButtonGroup();
  private JPasswordField passwordField;
  private JRadioButton rdbtnNewRadioButton = null;
  private JRadioButton rdbtnNewRadioButton_1 = null;
  private JRadioButton rdbtnNewRadioButton_2 = null;
  public Login() {
    setResizable(false);
    getContentPane().setBackground(SystemColor.menu);
    setSize(new Dimension(341, 410));
    setTitle("简易教务管理系统");
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);
    JMenu mnFile = new JMenu("菜单");
    mnFile.setFont(new Font("微软雅黑", Font.PLAIN, 16));
    menuBar.add(mnFile);
    JMenuItem mntmNewMenuItem = new JMenuItem("退出");
    mntmNewMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 16));
    mntmNewMenuItem.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.exit(0);
      }
    });
    mntmNewMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_STOP, 0));
    mnFile.add(mntmNewMenuItem);
    JMenu mnHelp = new JMenu("帮助");
    mnHelp.setFont(new Font("微软雅黑", Font.PLAIN, 16));
    menuBar.add(mnHelp);
    JMenuItem mntmNewMenuItem_1 = new JMenuItem("关于");
    mntmNewMenuItem_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
    mntmNewMenuItem_1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        mntmNewMenuItem_1actionPerformed(e);
      }
    });
    mnHelp.add(mntmNewMenuItem_1);
    JLabel lblNewLabel = new JLabel("New label");
    lblNewLabel.setIcon(new ImageIcon(Login.class.getResource("/images/login1.jpg")));
    JLabel lblNewLabel_1 = new JLabel("账号");
    JLabel lblNewLabel_2 = new JLabel("密码");
    textField = new JTextField();
    textField.setColumns(0);
    rdbtnNewRadioButton = new JRadioButton("学生");
    rdbtnNewRadioButton.setSelected(true);
    buttonGroup.add(rdbtnNewRadioButton);
    rdbtnNewRadioButton_1 = new JRadioButton("教师");
    buttonGroup.add(rdbtnNewRadioButton_1);
    rdbtnNewRadioButton_2 = new JRadioButton("教务人员");
    buttonGroup.add(rdbtnNewRadioButton_2);
    JButton btnNewButton = new JButton("登录");
    btnNewButton.setDoubleBuffered(true);
    btnNewButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        btnNewButtonactionPerformed(event);
      }
    });
    JButton btnNewButton_1 = new JButton("取消");
    btnNewButton_1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.exit(0);
      }
    });
  }


(2)系统管理员

系统管理员:查看和修改自己个人信息(工号不能修改);可以对学生、教师、课程与授课信息的增加、删除、修改、查询。


查看和修改自己个人信息


对成绩进行管理


可以对学生,老师进行管理


学生信息管理


老师信息管理


课程与授课信息的增加、删除、修改、查询。


添加课程


系统管理员系统部份实现源码

public ManagerAdmin() {
    setResizable(false);
    user = GlobalUser.LOGIN_USER;
    setSize(new Dimension(349, 447));
    setLocationRelativeTo(null);
    setTitle("教务人员信息管理");
    JLabel label = new JLabel("当前用户");
    JLabel lblNewLabel = new JLabel(user.getNickName());
    JLabel lblNewLabel_1 = new JLabel(user.getUserName());
    JLabel label_1 = new JLabel("账号");
    textField = new JTextField();
    textField.setColumns(10);
    JLabel label_2 = new JLabel("密码");
    textField_1 = new JTextField();
    textField_1.setColumns(10);
    JLabel label_3 = new JLabel("昵称");
    textField_2 = new JTextField();
    textField_2.setColumns(10);
    JLabel label_4 = new JLabel("权限");
    textField_3 = new JTextField();
    textField_3.setEnabled(false);
    textField_3.setText("教务人员");
    textField_3.setColumns(10);
    JButton button = new JButton("确定");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        buttonactionPerformed(e);
      }
    });
    JLabel label_5 = new JLabel("删除用户---------------------------------");
    JLabel label_6 = new JLabel("账号");
    textField_4 = new JTextField();
    textField_4.setColumns(10);
    JLabel label_7 = new JLabel("新建用户----------------------------------");
    JButton btnNewButton = new JButton("删除");
    btnNewButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        btnNewButtonactionPerformed(e);
      }
    });
  public void initTextFiled() {
    textField.setText("");
    textField_1.setText("");
    textField_2.setText("");
    textField_4.setText("");
  }

(4)教师

查看和修改自己个人信息(工号不能修改);按课程录入和查询成绩。

  • 个人信息




录入成绩



教师系统部份实现源码

(5)学生

学生:查看和修改自己个人信息(学号不能修改);查询已选课程成绩及总学分;根据授课信息进行选课操作。



查看和修改自己个人信息(学号不能修改)


修改密码


查询已选课程成绩及总学分


已经选修课程


学生系统部份实现源码

protected void button_3actionPerformed(ActionEvent e) {
    // 删除
    int stuId = Integer.parseInt(textField_10.getText());
    try {
      int n = JOptionPane.showConfirmDialog(null, "学号为:" + stuId, "提示", 0);
      if (n == 0) {
        DAOFactory.getStudentDAOInstance().doDelete(stuId);
        DAOFactory.getIUserDAOInstance().doDelete(stuId + "");
      }
    } catch (Exception e1) {
      e1.printStackTrace();
    }
    showAllMessage();
    textField_10.setText("");
  }

四、系统源码+数据库+文档

1、源码获取

java Swing+mysql+JDBC实现教务系统我没有开源,制作不易,如果觉得不错请给我一个,三连、收藏、加关注,需要源码+数据库+word/PDF需求文档资料的同学可以去下载相关资料,感谢对我支持,让我有了更多的创作动力,希望我的博客能帮助到你 !


点击以下链接获取源码+数据库+文档+数据库需求文档:实现教务系统(源码+数据库+Uml图文档)



2、联系

如果你也想开发一个java相关的项目,比如springboot,spring,springmvc,struts,springJPA,SpringCloud的项目,可以联系我哟!


3、往期已经开发的开源项目

SSM实战项目:人事管理系统(蓝色版)【附源代码】


SpringBoot+jsp实现水果商城系统(含源码+数据库+文档)


基于SSM+jsp+echarts的疫情地图系统系统(已经开源)


DBSwitch阉割版实现异构数据库表结构同步


SpringBoot+VUE+ MyBatis实现人事管理系统(已开源)


SpringBoot+Mybatis整合jsp项目之EMS


学生教务系统(java实现版)【附全部源码】


4、后续陆续开源的项目


ssm+vue实现依伴汉服网


ssm+jsp企业报销管理系统,


ssm+vue实现垃圾回收系统,


ssm+jsp物业管理系统,


ssm+jsp住院管理系统


ssm+jsp图书商城系统


ssm+jsp疫情线上考试系统


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
102 13
|
9月前
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
7月前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
308 94
|
4月前
|
人工智能 Java 关系型数据库
Java的时间处理与Mysql的时间查询
本文总结了Java中时间与日历的常用操作,包括时间的转换、格式化、日期加减及比较,并介绍了MySQL中按天、周、月、季度和年进行时间范围查询的方法,适用于日常开发中的时间处理需求。
|
7月前
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
151 4
|
8月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
325 17
|
9月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1024 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
103 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多