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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 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疫情线上考试系统


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
14天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
49 3
|
14天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
77 1
|
3天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
27 0
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
124 6
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
20天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
80 4