Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码

这篇具有很好参考价值的文章主要介绍了Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天为大家分享一个java语言编写的学生成绩管理系统,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发,下载。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。

项目背景

学生成绩管理系统是学校日常信息管理的一个重要内容。随着学校考试次数越来越多,学生成绩管理的工作量也变得越来越大。如果能对学生成绩做系统的管理,就能更好更方便地快速查询或者修改学生的考试成绩,省去了文件管理的繁琐与麻烦,无疑将给学校的管理部门带来很大的方便。基于这个目的我们这次课程设计选择教师管理系统做为我们的题目。

项目目的

学生成绩管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及应用程序的开发两个方面.对于前者要求建立数据一致性和完整性强,数据安全性好的数据库.而对于后者则要求应用程序功能完备,易使用等特点。在学校如果以人工的方式对学生成绩进行管理,将耗费大量的人力、物力,而且容易出错,本系统以此作为开发的目标,用以提高学生成绩管理的效率。

主要模块

学生管理系统的分两种用户类型:学生和系统管理员。其中学生包括查询,和修改自己的信息,查看课程信息和自己的成绩等;系统管理员的操作包括课程的增删改、学生成绩的的增删改查和课程成绩统计等功能。

Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码

E-R图如下:

Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码

系统运行效果

Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码

用户登录成功后,跳转到主界面,主界面有4个主要功能:系统退出,课程管理,学生管理,学生成绩管理。系统管理员具有所有功能。学生只能查看和自己的信息和自己的成绩。学生可能查看课程信息和成绩信息,单不能进行修改。只有管理员才有权利进行修改。

Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码
Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码
Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码
Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码
Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码
Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码
Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码
Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码

查询学生成绩文章来源地址https://www.toymoban.com/news/detail-504765.html

Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码

关键代码

/*
 * 功能:这是管理员登陆成功后的界面,采用菜单管理制
 * */
package com.View;
import com.SqlConnection.SqlConn;
import com.Tools.*;//引入自定义的工具包(字体)

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ManageView extends JFrame implements ActionListener{
    //定义菜单需要要的组件
    JMenuBar jmb;
    JMenu jm1,jm2,jm3,jm4;
    JMenuItem jm1_1,jm2_2,jm2_3,jm2_4,jm2_5,jm2_6;
    JMenuItem jm3_1,jm3_2,jm3_3,jm3_4;
    JMenuItem jm4_1,jm4_2,jm4_3,jm4_4,jm4_5;
    //定义一个表格,用于显示学生信息
    JTable jtb;
    //定义一个滚动面板,用于存放表格
    JScrollPane jsp;
    
    //定义设置窗口初始位置的变量
    int width,height;
    
    //定义一个表格模型,用于更新表数据
    CourseModel tm;
    StudentModel pvm;
    
    ChengjiModel anpaim;
    //把菜单封装成一个函数
    public void menuInit()
    {
        jm1=new JMenu("系统");
        jm1.setFont(MyFont.f1);
        jm1_1=new JMenuItem("<-退出系统->");
        jm1_1.addActionListener(this);
        jm1_1.setFont(MyFont.f2);
        jm1.add(jm1_1);
        
        jm2=new JMenu("课程管理");
        jm2.setFont(MyFont.f1);
        
        jm2_2=new JMenuItem("<-添加记录->");
        jm2_2.addActionListener(this);
        jm2_2.setFont(MyFont.f2);
        jm2_3=new JMenuItem("<-修改记录->");
        jm2_3.addActionListener(this);
        jm2_3.setFont(MyFont.f2);
        jm2_4=new JMenuItem("<-删除记录->");
        jm2_4.addActionListener(this);
        jm2_4.setFont(MyFont.f2);
        jm2_5=new JMenuItem("<-显示记录->");
        jm2_5.addActionListener(this);
        jm2_5.setFont(MyFont.f2);
        jm2_6=new JMenuItem("<-关闭记录->");
        jm2_6.addActionListener(this);
        jm2_6.setFont(MyFont.f2);
        
        jm2.add(jm2_5);//把显示学生记录放在最前面
        
        jm2.add(jm2_2);
        jm2.add(jm2_3);
        jm2.add(jm2_4);
        jm2.add(jm2_6);
    
        
        jm3=new JMenu("学生管理");
        jm3.setFont(MyFont.f1);
        jm3_1=new JMenuItem("<-显示学生信息->");
        jm3_1.setFont(MyFont.f2);
        jm3_1.addActionListener(this);
        jm3_2=new JMenuItem("<-新增学生信息->");
        jm3_2.setFont(MyFont.f2);
        jm3_2.addActionListener(this);
        jm3_3=new JMenuItem("<-修改学生信息->");
        jm3_3.setFont(MyFont.f2);
        jm3_3.addActionListener(this);
        
        
        
        jm3_4=new JMenuItem("<-删除学生信息->");
        jm3_4.setFont(MyFont.f2);
        jm3_4.addActionListener(this);
        
        
        jm3.add(jm3_1);
        jm3.add(jm3_2);
        jm3.add(jm3_3);
        jm3.add(jm3_4);
        
        jm4=new JMenu("成绩管理");
        jm4.setFont(MyFont.f1);
        jm4_1=new JMenuItem("<-显示学生成绩->");
        jm4_1.setFont(MyFont.f2);
    
        jm4_1.addActionListener(this);
        jm4_2=new JMenuItem("<-新增学生成绩->");
        jm4_2.setFont(MyFont.f2);
        
        jm4_2.addActionListener(this);
        jm4_3=new JMenuItem("<-删除学生成绩->");
        jm4_3.setFont(MyFont.f2);
        
        jm4_3.addActionListener(this);
        
        
        
        jm4_4=new JMenuItem("<-修改学生成绩->");
        jm4_4.setFont(MyFont.f2);
        jm4_4.addActionListener(this);
        
        
        jm4_5=new JMenuItem("<-查询学生成绩->");
        jm4_5.setFont(MyFont.f2);
        jm4_5.addActionListener(this);
        
        
        jm4.add(jm4_1);
        jm4.add(jm4_2);
        jm4.add(jm4_3);
        jm4.add(jm4_4);
        jm4.add(jm4_5);
        if(MyFont.usertype.equalsIgnoreCase("学生")){
            jm2_2.setEnabled(false);
            jm2_3.setEnabled(false);
            jm2_4.setEnabled(false);
            jm3_2.setEnabled(false);
            //jm3_3.setEnabled(false);
            jm3_4.setEnabled(false);
            jm4_2.setEnabled(false);
            jm4_3.setEnabled(false);
            jm4_4.setEnabled(false);
        }
        
        
        //设置菜单条
        jmb=new JMenuBar();
        //把菜单添加到菜单条
        jmb.add(jm1);
        jmb.add(jm2);
        jmb.add(jm3);
        jmb.add(jm4);
        //把菜单条添加到窗体
        this.setJMenuBar(jmb);
        
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //ManageView manageview=new ManageView();
    }
    public ManageView(String usertype)
    {
        //调用菜单函数
        this.menuInit();
        
        //当登陆进入界面时,最初显示的界面
        jtb=new JTable();
        //在刚登陆进去的时候不让数据显示出来,如果即时显示,当数据量大时,影响速度,也不太符合常规 ,因此在这里不用更新数据模型
        jsp=new JScrollPane(jtb);
        this.add(jsp,"Center");
    
        //设置窗体属性
        this.setSize(600,400);
        this.setTitle("学生成绩管理系统-->"+usertype);
        //设置窗口的初始位置
        width=Toolkit.getDefaultToolkit().getScreenSize().width;
        height=Toolkit.getDefaultToolkit().getScreenSize().height;
        this.setLocation(width/2-280, height/2-250);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        
        
    }
     
    //***************事件响应********************//
    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        //退出系统
        if(arg0.getSource()==jm1_1)
        {
            Object[] options = {"确定","取消"}; 
            int respose=JOptionPane.showOptionDialog(this, "你确认要退出系统吗?","退出系统确认对话框",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[0]); 
            if(respose==0)
            {
                System.out.println("你按下了确认按钮!");
                System.exit(0);//退出系统
            }
            else if(respose==1)
            {
                System.out.println("你按下了取消按钮!");
                return;
            }
            
        }
        
       
        
        //***************添加记录******************//
        else if(arg0.getSource()==jm2_2)
        {
            System.out.println("添加被点击了");
            AddCourse addstu=new AddCourse(this, "添加课程信息", true);    
            if(addstu.falg()==1)
            {
                //更新当前窗口的学生信息,以便添加学生信息后就能看到新信息
                tm=new CourseModel(null);
                jtb.setModel(tm);
            }
            else
            {
                //不更新数据
            }
        
        }
        
       //*************************修改记录********************//
        else if(arg0.getSource()==jm2_3)
        {
            //先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
            int rowNo=jtb.getSelectedRow();
            if(rowNo==-1)
            {
                //没有选中,提示信息
                JOptionPane.showMessageDialog(this, "你没有选中一行!");
                return;
            }
            else 
            {
                //得到选择的那一行的学号
                //String stuId=(String)tm.getValueAt(rowNo, 0);//学号是字符串,因些得转型
                //需要把当前的这个数据模型和所选择的那一行的序号传过去
                UpdateCourse updateStu=new UpdateCourse(this, "修改课程信息", tm, rowNo, true);
                //更新当前窗口的学生信息,以便更新学生信息后就能看到新信息
                tm=new CourseModel(null);
                jtb.setModel(tm);                
            }
        }
        //*********************删除记录*******************//
        else if(arg0.getSource()==jm2_4)
        {
            System.out.println("你点击了删除按钮");
            //到得某一行,即选择的那一行
            int rowNo=jtb.getSelectedRow();
            //判断是否已经选择一行,如果没有选择,则弹出一个对话框,当等于-1时,表示没有选择
            if(rowNo==-1)
            {
                JOptionPane.showMessageDialog(this,"你没有选择一行!");
                return;
            }
            else
            {
                //得到选择的那一行的学号
                String id=(String)tm.getValueAt(rowNo, 0);//某一行的第0列就是学号,因为得到的学号是字符串,所以得转型
                System.out.println("id="+id);
                String sql="delete  from t_course where id='"+id+"'";
                Object[] options = {"确定","取消"}; 
                int respose=JOptionPane.showOptionDialog(this, "你确认要删除该课程吗?","删除信息确认对话框",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[0]); 
                if(respose==0)
                {
                    System.out.println("你按下了确认按钮!");
                    //连接数据库
                    SqlConn sqlconn=new SqlConn();
                    sqlconn.sqlDelete(sql);
                    //注意:********这在里必须调用关闭数据库连接的方法,在这里,如果没有关闭资源,则表模型无法更新成功,切记!!!!!
                    sqlconn.closeSqlConn();
                    tm=new CourseModel(null);
                    jtb.setModel(tm);
                }
                else if(respose==1)
                {
                    System.out.println("你按下了取消按钮!");
                    return;
                }
            
            }
            
        }
        //****************显示记录*******************//
        else if(arg0.getSource()==jm2_5)
        {
            tm=new CourseModel(null);
            jtb.setModel(tm);
            
            jtb.setVisible(true);
        }
        //*****************关闭记录*******************//
        else if(arg0.getSource()==jm2_6)
        {
            System.out.println("jm2_6,关闭记录被点击了!");
        
            jtb.setVisible(false);
        }
        
        
     //***********************************************************//
      //*****************这是老师管理**************//
        
        //*******显示所有学生********//
        else if(arg0.getSource()==jm3_1)
        {
            pvm=new StudentModel(null);
            jtb.setModel(pvm);
            //让表格显示学生信息
            jtb.setVisible(true);
        }
        //*********新增老师**********//
        else if(arg0.getSource()==jm3_2)
        {
            System.out.println("新增按钮被点击了");
        
            AddStudent addstu=new AddStudent(this, "添加老师信息", true);    
            if(addstu.falg()==1)
            {
                //更新当前窗口的学生信息,以便添加学生信息后就能看到新信息
                pvm=new StudentModel(null);
                jtb.setModel(pvm);
            }
            else
            {
                
            }
        }
        //**************修改数据***************//
        else if(arg0.getSource()==jm3_3)
        {
            System.out.println("修改老师数据数据被点击了");
            //先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
            int rowNo=jtb.getSelectedRow();
            if(rowNo==-1)
            {
                //没有选中,提示信息
                JOptionPane.showMessageDialog(this, "你没有选中一行!");
                return;
            }
            else 
            {
                //得到选择的那一行的学号
                //String stuId=(String)tm.getValueAt(rowNo, 0);//学号是字符串,因些得转型
                //需要把当前的这个数据模型和所选择的那一行的序号传过去
                UpdateStudent updateStu=new UpdateStudent(this, "修改老师信息", pvm, rowNo, true);
                //更新当前窗口的学生信息,以便更新学生信息后就能看到新信息
                pvm=new StudentModel(null);
                jtb.setModel(pvm);                
            }    
        }
          
        else if(arg0.getSource()==jm3_4){
            System.out.println("hello word");
            
            int rowNo=jtb.getSelectedRow();
            //判断是否已经选择一行,如果没有选择,则弹出一个对话框,当等于-1时,表示没有选择
            if(rowNo==-1)
            {
                JOptionPane.showMessageDialog(this,"你没有选择一行!");
                return;
            }
            else
            {
                //得到选择的那一行的学号
                String id=(String)pvm.getValueAt(rowNo, 0);
                System.out.println("id="+id);
                String sql="delete  from t_student where id='"+id+"'";
                Object[] options = {"确定","取消"}; 
                int respose=JOptionPane.showOptionDialog(this, "你确认要删除该成绩信息吗?","删除信息确认对话框",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[0]); 
                if(respose==0)
                {
                    System.out.println("你按下了确认按钮!");
                    //连接数据库
                    SqlConn sqlconn=new SqlConn();
                    sqlconn.sqlDelete(sql);
                    //注意:********这在里必须调用关闭数据库连接的方法,在这里,如果没有关闭资源,则表模型无法更新成功,切记!!!!!
                    sqlconn.closeSqlConn();
                    pvm=new StudentModel(null);
                    jtb.setModel(pvm);
                }
                else if(respose==1)
                {
                    System.out.println("你按下了取消按钮!");
                    return;
                }
            
            }
        }
        
        
        else if(arg0.getSource()==jm4_1){
            anpaim=new ChengjiModel(null);
            jtb.setModel(anpaim);
            //让表格显示学生信息
            jtb.setVisible(true);
        }
        
        else if(arg0.getSource()==jm4_2){
            System.out.println("testtest");
            
            AddChengji addstu=new AddChengji(this, "添加学生成绩信息", true);    
            if(addstu.falg()==1)
            {
                //更新当前窗口的学生信息,以便添加学生信息后就能看到新信息
                anpaim=new ChengjiModel(null);
                jtb.setModel(anpaim);
            }
            else
            {
                
            }
        }
        
        
        else if(arg0.getSource()==jm4_3){
            int rowNo=jtb.getSelectedRow();
            //判断是否已经选择一行,如果没有选择,则弹出一个对话框,当等于-1时,表示没有选择
            if(rowNo==-1)
            {
                JOptionPane.showMessageDialog(this,"你没有选择一行!");
                return;
            }
            else
            {
                //得到选择的那一行的学号
                String id=(String)anpaim.getValueAt(rowNo, 0);//某一行的第0列就是学号,因为得到的学号是字符串,所以得转型
                System.out.println("id="+id);
                String sql="delete  from t_chengji where id='"+id+"'";
                Object[] options = {"确定","取消"}; 
                int respose=JOptionPane.showOptionDialog(this, "你确认要删除该条成绩数据吗?","删除信息确认对话框",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[0]); 
                if(respose==0)
                {
                    System.out.println("你按下了确认按钮!");
                    //连接数据库
                    SqlConn sqlconn=new SqlConn();
                    sqlconn.sqlDelete(sql);
                    //注意:********这在里必须调用关闭数据库连接的方法,在这里,如果没有关闭资源,则表模型无法更新成功,切记!!!!!
                    sqlconn.closeSqlConn();
                    anpaim=new ChengjiModel(null);
                    jtb.setModel(anpaim);
                }
                else if(respose==1)
                {
                    System.out.println("你按下了取消按钮!");
                    return;
                }
            
            }
        }
        
      
        else if(arg0.getSource()==jm4_4)
        {
            System.out.println("修改学生成绩数据被点击了");
            //先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
            int rowNo=jtb.getSelectedRow();
            if(rowNo==-1)
            {
                //没有选中,提示信息
                JOptionPane.showMessageDialog(this, "你没有选中一行!");
                return;
            }
            else 
            {
                //得到选择的那一行的学号
                //String stuId=(String)tm.getValueAt(rowNo, 0);//学号是字符串,因些得转型
                //需要把当前的这个数据模型和所选择的那一行的序号传过去
                UpdateChengji updateStu=new UpdateChengji(this, "修改学生成绩信息", anpaim, rowNo, true);
                //更新当前窗口的学生信息,以便更新学生信息后就能看到新信息
            
                anpaim=new ChengjiModel(null);
                jtb.setModel(anpaim);
                //让表格显示学生信息
                jtb.setVisible(true);
            }    
        }
        
        
      
        else if(arg0.getSource()==jm4_5)
        {
            System.out.println("查询被点击了");
            ChengjiQuery sq=new ChengjiQuery(this, "学生成绩查询", true);
        }
        
    }

}

到了这里,关于Java 学生成绩管理系统 带详细设计报告 功能非常齐全 完整源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【期末课程设计】学生成绩管理系统

    因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c  2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h   前言: 学生成绩管理系统含教师登录入口和学生登录入口,可实现学生信息的添加,删

    2024年02月16日
    浏览(30)
  • C++课程设计——学生成绩管理系统

    今天清理电脑偶尔发现一个我刚学编程时用c++写的一份课程设计,使用到简单的链表,结构体,c++类与对象的知识——学生成绩管理系统。 ~~ 系统结构: 管理员模式 教师模式 学生模式 实现了对学生成绩及信息的增删改查以及排序。 效果图 主菜单 管理员模式菜单 源代码

    2024年02月16日
    浏览(29)
  • Java——学生成绩管理系统

    一、项目简介 学生管理系统是一种基于计算机技术实现的学生信息管理工具,能够方便地对学生信息进行录入、查询、修改和删除。该项目采用 Java 语言编写,使用 Spring MVC 框架和 MySQL 数据库,实现了以上所述的主要功能,该学生管理系统可以应用于学校、培训机构、教育

    2024年02月08日
    浏览(35)
  • JAVA学生成绩管理系统

    只写了最基本的增删改查,其中可能会有一些没考虑到的地方。结尾有完整代码 首先是main方法 然后是菜单和欢迎页面 1:添加学生信息 2:删除学生信息 3:修改学生信息 4:查询单个学生信息 5:列出所有学生信息 用到的其他方法: 完整发一下代码: 学生类: StudentSystem类

    2024年02月12日
    浏览(37)
  • C语言学生成绩信息管理系统(超详细版)

    主题:一个简易成绩管理系统 功能介绍: 1.以文本形式存储学生信息 2.对以存信息进行   1. 插入 2. 修改3. 删除  4.查询  5.成绩数字特征 目录 一:分析 二:查询  三:菜单 四:初始化函数 五:插入函数 六:修改函数 七:删除函数 八:数字特征 九:显示函数 要进行 插入

    2024年02月12日
    浏览(28)
  • java学生成绩管理信息系统

    学生成绩管理信息系统是一个基于Java Swing的桌面应用程序,旨在方便学校、老师和学生对学生成绩进行管理和查询。本文档将提供系统的详细说明,包括系统特性、使用方法和技术实现。 添加学生信息:录入学生基本信息,包括学号、姓名、班级等。 编辑学生信息:修改学

    2024年01月18日
    浏览(40)
  • 数据结构课程设计:学生成绩管理系统

    目  录 第一章   需求分析 第二章 概要设计 第三章 详细设计 第四章 测试报告 第五章 安装及使用 第六章 项目总结 第七章 源码 一.需求分析        学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好

    2024年02月02日
    浏览(53)
  • C语言课程设计-学生成绩管理系统

    需求分析: 1.设计题目:学生成绩管理系统 2.系统功能需求分析:实现对学生各科成绩总分及平均分的排序,和成绩的查找 概要设计 1. 功能模块图 详细设计 1. 流程图 测试结果 :列出所有功能的运行界面,并作文字说明。 1.录入成绩:录入3个人的学号和各科成绩 2.每门课程

    2024年02月11日
    浏览(36)
  • Java课设-学生成绩管理系统

    题目要求 : 代码: Student.java : StudentApplication.java : StudentManage.java : 运行主界面 :

    2024年02月11日
    浏览(35)
  • JSP设计一个简单的学生成绩管理系统

    XsCjZj.jsp      XsCjZj0.jsp XsCx.jsp     XsWh.jsp XsXq.jsp  XsXg.jsp   XsXg0.jsp XsSc.jsp   XsSc0.jsp  

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包