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

🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅java自学的学习路线:java自学的学习路线

一、前言

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

二、需求分析

1、引言

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

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

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

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

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

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

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

2、使用技术及软件

分类名称语种
操作系统windows10简体中文
数据库平台MySQL Server 8.0+
java开发工具idea
项目名称《简易教务系统》
实现技术java Swing+mysql+JDBC等技术

3、用例图

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

(1)系统用例图

(2)学生用例图

(3)教师用例图

(4)教务人员用例图

4、序列图

(1)学生登录序列图:
  • 学生登录序列图:

  • 学生选课序列图:

  • 学生查询成绩序列图:

  • 学生查询课程序列图:

(2)教师序列图
  • 教师登录成绩序列图:

  • 教师登录序列图:

(3) 教务员序列图
  • 教务人员注册学生序列图:

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

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、往期已经开发的开源项目

4、后续陆续开源的项目

  • ssm+vue实现依伴汉服网

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

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

  • ssm+jsp物业管理系统,

  • ssm+jsp住院管理系统

  • ssm+jsp图书商城系统

  • ssm+jsp疫情线上考试系统

欢迎交流指正

📌
大家点赞、收藏、关注、评论啦 、有什么需要帮助可以微信交流!

感谢对我支持,让我有了更多的创作动力,希望我的博客能帮助到你 !

  • 12
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小王java

学习java的路上,加油!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值