Java课程设计-学生成绩管理系统

摘 要

在计算机技术的应用和计算机网络技术的快速发展的今天,信息化的建设被 更多的教育单位所重视,一般来讲,通过使用优秀的计算机网络技术对学生的成绩进行管理,不仅工作效率提高了,对于人力资源的浪费也减少了,出于对学生成绩信息进行管理的教务管理人员们的需求的考虑,一套适用于对学生成绩进行管理的系统,它的开发显得尤为重要。 本系统依据这个具体情况,再经过多番调查研究,根据软件开发流程,经过了可行性分析、总体描述、系统设计、编码、调试和测试等步骤,设计并开发出了学生成绩管理系统。通过运用了系统结构图,系统流程图,以及程序流程图,将学生成绩管理系统从分析设计到实现运用的过程整体展现出来,对于读者理解本系统的整体设计和具体开发流程提供了很大的帮助。本系统主要实现对学生成绩信息的增加、删除、修改、查询等功能。具有界面简洁,操作简单,使用性强的特点,大大提高了管理效率,节省了人力,最重要的是,能够达到对学生信息全面详细的进行管理的目的。 

关键词  JAVA  学生成绩管理系统   eclipse

  概述

1.1 需求分析

21世纪以来,随着信息技术在全球范围内的兴起,以及互联网的迅速发展,使计算机渗透到国民经济和社会发展的各个领域和各个层次。由于我国高校的进一步扩招和对高校信息管理要求的进一一步 提高,原先的一些学生成绩管理系统的局限性已经显现出来了。在这样的背景下,为了加快校园的信息化建设,实现高校办公自动化也就显得越来越重要了。

   高校学生的信息量是非常庞大的,如何有效利用信息技术管理好学生信息,加快高校信息化进程,成为高校管理者所面临的新的课题。以前高校的成绩管理工作都是在手工的情况下完成的,效率低下、重复工作、数据不能共享、管理模糊,现在利用计算机来管理学生成绩更能体现查询快捷、保密性好、安全性高、存储量大、寿命长、成本低和效率高等优点,同时更有利于管理和操作。

1.2 系统目标

论文通过结合高校学生成绩管理的水平和现实状况,分析了现今学生成绩管理系统中所应用的几个环节,并针对每个环节作出了详细的阐述和探讨。根据实际情况确定了不同权限的用户管理:课程管理:成绩管理:班级管理等四大模块,介绍了系统开发用到的使用的相关计算机技术和Java编程语言,以及后台方法和使用,并对模块的功能进行了具体分析和详细设计。并通过综合剖析系统,从而得出结论:学生成绩管理系统在高校可以得到广泛的运用。

二 学生成绩管理系统需求分析

2.1 系统功能需求

2.11 录入功能:为教师提供对所有信息的录入功能。
2.12 查询功能:为教师提供查询的功能,可查询允许范围内的所有信息。2.13 维护功能:教师能够对输入信息进行修改删除。
2.14 退出功能:结束并关闭系统。

2.2 可行性分析

2.2.1经济可行性

由于本方案是单机作业,不具有网络资源共享,学生不方便直接进行信息的查询与修改,因此,适用范围小,发挥的作用小,只是使用计算机代替手工工作。此系统建成后,只能支持简单的输入查询修改信息的功能,但是可以省去人力,也可以带来一些经济效益,从经济上来说是可行的。

2.2.2技术可行性

本方案技术要求不高,系统的安全性可行性要求也不高,从技术上来说完全可行。

2.2.3系统运行可行性

本软件简单,易学易用,不需要对专业人员进行培训,因此系统具有运行可行性。

综上所述,此系统开发目标已明确,在技术和经济以及运行方面都是都可行的,故该系统的开发是完全可行的。

学生成绩管理系统总体设计

3.1 功能设计

系统所实现的功能强弱是衡量一个软件好坏的最直接也是最根本的标准。经过对系统的可行性分析、需求分析、数据分析以及数据库设计后,结合调研的情况,本系统分为教师登录、输入学号姓名班级,输入成绩,计算平均值,降序排列,退出登录,确定了本系统的功能模块

3.2实现特点

  系统能够方便实现教师对学生成绩的观察,统计,比较方便快捷。

详细设计

  • 成绩录入
  • 成绩修改

程序代码

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Student {
    private static Student[] s = new Student[100]; //录入学生上限
    int n = 0;
    private String name;
    private int num;
    private String classAge;
    private int math;
    private int english;
    private int programming;
    private int computer;

    //判断是否有录入学生信息
    public void judge() throws IOException {
        int i;
        char ch;
        String str;
        Scanner In = new Scanner(System.in);
        if (n == 0) {
            System.out.println("你还没有录入任何学生信息,是否录入(Y/N):");
            str = In.next();
            ch = str.charAt(0);
            while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
                System.out.println("输入有误,请重新输入:");
                str = In.next();
                ch = str.charAt(0);
            }
            if (ch == 'Y' || ch == 'y') {
                this.add();
            }
            if (ch == 'N' || ch == 'n') {
                this.menu();
            }
        }
    }

    //菜单
    public void menu() throws IOException //将异常抛出,调用这个方法去处理异常,如果main方法也将异常抛出,则交给Java虚拟机来处理,下同.
    {
        int a;
        Scanner in = new Scanner(System.in);
        System.out.println("*************学生信息管理系统*************");
        System.out.println("*****  1.录入学生信息   ******");
        System.out.println("*****  2.显示学生信息   ******");
        System.out.println("*****  3.修改学生信息   ******");
        System.out.println("*****  4.删除学生信息   ******");
        System.out.println("*****  5.求出平均值,按学号排序   ******");
        System.out.println("*****  6.求各组平均成绩   ******");
        System.out.println("*****  0.退出管理系统   ******");
        System.out.println("******************************************");
        System.out.print("请选择(0~6):");
        a = in.nextInt();
        while (a < 0 || a > 6) {
            System.out.print("输入无效,请重新输入:");
            a = in.nextInt();
        }
        switch (a) {
            case 1:
                this.add();
                break;
            case 2:
                this.show();
                break;
            case 3:
                this.modif();
                break;
            case 4:
                this.delete();
                break;
            case 5:
                this.avg();
                break;
            case 6:
                this.classAvg();
                break;
            case 0:
                System.out.println("成功退出系统!!!");
                System.exit(0);
                break;
        }
    }

    private void classAvg() throws IOException {
        if (n == 0) {
            System.out.println("请录入学生信息!");
            this.menu();
        }

        // 总分
        int computerSum = 0, englishSum = 0, programmingSum = 0, mathSum = 0;
        // 最高分
        int maxComputer = 0, maxEnglish = 0, maxProgramming = 0, maxMath = 0;
        for (int i = 0; i < n; i++) {
            Student stu = s[i];
            int c = stu.getComputer();
            int e = stu.getEnglish();
            int p = stu.getProgramming();
            int m = stu.getMath();

            // 计算最高分
            maxComputer = c > maxComputer ? c : maxComputer;
            maxEnglish = e > maxEnglish ? e : maxEnglish;
            maxProgramming = p > maxProgramming ? p : maxProgramming;
            maxMath = m > maxComputer ? m : maxMath;
           

            // 计算最低分
            int minComputer = 0, minEnglish = 0, minProgramming = 0, minMath = 0;
            for (int t= 0; t< n;t++) {
                Student stu1 = s[i];
                int a = stu1.getComputer();
                int b = stu1.getEnglish();
                int d = stu1.getProgramming();
                int n = stu1.getMath();
            minComputer = a < minComputer ? a : minComputer;
            minEnglish = b < minEnglish ? b : minEnglish;
            minProgramming = d < minProgramming ? d : minProgramming;
            minMath = n <minMath ? n : minMath;
       
        }
            // 计算总分
            computerSum += c;
            englishSum += e;
            programmingSum += p;
            mathSum += m;
        }

          
        System.out.println("平均成绩:" + computerSum / n);
		System.out.println("最高分:" + computerSum / n);
		System.out.println("最低分:" + computerSum / n);

        this.menu();
    }

    private void avg() throws IOException {
        if (n == 0) {
            System.out.println("请录入学生信息!");
            this.menu();
        }
        for (int i = 0; i < n; i++) {
            Student stu = s[i];
            int avg = (stu.getComputer() + stu.getEnglish() + stu.getProgramming() + stu.getMath()) / 4;
            System.out.println("姓名:" + stu.getName() + " 学号:" + stu.getNum() + " 平均成绩:" + avg);
        }
        this.menu();
    }

    //录入学生信息
    public void add() throws IOException {
        String str, str1, str2;
        int i, num1, t = 1;
        char ch, ch1;
        FileWriter fw = new FileWriter("D://JAVAWENJIAN/student.txt", true); //将学生信息录入指定的txt文件中

        fw.write("    录入的学生信息列表\r\n\r\n学号 姓名 班级 应用数学成绩 大学英语成绩 程序设计成绩 计算机应用基础成绩\r\n");
        Scanner In = new Scanner(System.in);
        while (t == 1) {
            System.out.println("请输入学生学号:");
            num1 = In.nextInt();

            //判断学号是否重复
            for (i = 0; i < n; i++) {
                while (s[i].getNum() == num1) {
                    System.out.println("已存在此学号,请重新输入");
                    System.out.print("请输入学号:");
                    num1 = In.nextInt();
                }
            }
            s[n].setNum(num1);
            fw.write(s[n].getNum()+ "   ");
            System.out.println();
            System.out.println("请输入学生姓名:");
            s[n].setName(In.next());
            fw.write(s[n].getName() + "   ");
            System.out.println();
            System.out.println("请输入学生班级:");
            s[n].setClassAge(In.next());
            fw.write(s[n].getClassAge() + "    ");
            System.out.println("请输入学生应用数学成绩:");
            s[n].setMath(In.nextInt());
            fw.write(s[n].getMath() + "    ");
            System.out.println("请输入学生大学英语成绩:");
            s[n].setEnglish ( In.nextInt());
            fw.write(s[n].getEnglish() + "     ");
            System.out.println("请输入学生程序设计成绩:");
            s[n].setProgramming(In.nextInt());
            fw.write(s[n].getProgramming() + "\r\n");
            System.out.println("请输入学生计算机应用基础成绩:");
            s[n].setComputer(In.nextInt());
            fw.write(s[n].getComputer() + "    ");
            ++n;
            System.out.println();
            System.out.println("是否继续添加(Y/N)");
            str = In.next();
            ch = str.charAt(0);
            while (ch != 'N' && ch != 'n' && ch != 'Y' && ch != 'y') {
                System.out.println("输入无效,请重新输入:");
                str = In.next();
                ch = str.charAt(0);
            }
            if (ch == 'N' || ch == 'n') {
                break;
            }
        }
        fw.close();
        System.out.println();
        System.out.print("是否返回系统主菜单(Y/N)");
        str1 = In.next();
        ch1 = str1.charAt(0);
        while (ch1 != 'Y' && ch1 != 'y' && ch1 != 'N' && ch1 != 'n') {
            System.out.println("输入无效,请重新输入:");
            str1 = In.next();
            ch1 = str1.charAt(0);
        }
        if (ch1 == 'Y' || ch1 == 'y') {
            this.menu();
        }
        if (ch1 == 'N' || ch1 == 'n') {
            System.out.println("");
            System.out.println("你已退出系统!!!");
            System.exit(0);
        }
    }

    //显示学生信息
    public void show() throws IOException {
        int i;
        this.judge();
        System.out.println("本次操作共录入" + n + "位学生!");
        System.out.println("你录入的学生信息如下:");
        System.out.println();
        System.out.println("学号\t姓名\t班级\t应用数学\t大学英语\t程序设计\t计算机应用基础");
        for (i = 0; i < n; i++) {
            System.out.println(s[i].getNum() + "  " + s[i].getName() + "  " + s[i].getClassAge() + "  " + s[i].getMath() + "  " + s[i].getEnglish() + "  " + s[i].getProgramming() + " " + s[i].getComputer());
        }
        System.out.println("系统返回主菜单!");
        this.menu();
    }

    //删除学生信息
    public void delete() throws IOException {
        this.judge();
        int j = 0, t = 0, k = 0, num1;
        char ch;
        String str;
        Scanner pin =
                new Scanner(System.in);
        System.out.println("请输入要删除的学号:");
        num1 = pin.nextInt();
        for (j = 0; j < n; j++) {
            if (s[j].getNum() == num1) {
                k = 1;
                t = j;
            }
        }
        if (k == 0) {
            System.out.println("对不起!你要删除的学号不存在!");
            System.out.println("系统将返回主菜单!");
            this.menu();
        }
        if (k == 1) {
            System.out.println("你要删除的学生信息如下:");//打印管理员要删除的学生信息
            System.out.println("学号\t姓名\t班级");//本功能暂时不备扩展性
            System.out.println(s[t].getNum() + "  " + s[t].getName() + "  " + s[t].getClassAge());
            System.out.println();
            System.out.println("你确定要删除(Y/N):");
            str = pin.next();
            ch = str.charAt(0);
            while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
                System.out.println("输入无效,请重新输入:");
                str = pin.next();
                ch = str.charAt(0);
            }
            if (ch == 'N' || ch == 'n') {
                System.out.println();
                System.out.println("系统返回主菜单!");
                this.menu();
            }
            if (ch == 'Y' || ch == 'y') {
                for (j = t; j < n - 1; j++) {
                    s[j] = s[j + 1];
                }
                n--;
                System.out.println("学生数据成功删除!");
                System.out.println("系统返回主菜单!");
                this.menu();
            }
        }
    }

    //查看学生信息
    public void look() throws IOException {
        FileReader fr = new FileReader("D://JAVAWENJIAN/student.txt"); //查看txt中的学生信息
        int a;
        while ((a = fr.read()) != -1) {
            System.out.print((char) a);
        }
        fr.close();
        System.out.println("系统返回主菜单!");
        System.out.println();
        this.menu();
    }


    //修改学生信息
    public void modif() throws IOException {
        this.judge();
        int j = 0, t = 0, k = 0, num2, num3, moi, c = 1;
        char ch;
        String str, str1, str2,str3,str4,str5,str6;
        Scanner pin = new Scanner(System.in);
        System.out.println("请输入要修改的学号:");
        num2 = pin.nextInt();
        for (j = 0; j < n; j++) {
            if (s[j].getNum() == num2) {
                k = 1;
                t = j;
            }
        }
        if (k == 0) {
            System.out.println("对不起!你要修改的学号不存在!");
            System.out.println("系统将返回主菜单!");
            this.menu();
        }
        if (k == 1) {
            //打印将要要删除的学生信息
            System.out.println("你要修改的学生信息如下:");
            System.out.println("学号\t姓名\t班级应用数学\t大学英语\t程序设计\t计算机应用基础");
            System.out.println(s[t].getNum() + "  " + s[t].getName() + "  " + s[t].getClassAge()+"   " + s[t].getMath() + "  " + s[t].getEnglish() + "  " + s[t].getProgramming() + " " + s[t].getComputer());
            System.out.println();
            System.out.println();
            System.out.println("你确定要修改(Y/N):");
            str = pin.next();
            ch = str.charAt(0);
            while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
                System.out.println("输入无效,请重新输入:");
                str = pin.next();
                ch = str.charAt(0);
            }
            if (ch == 'N' || ch == 'n') {
                System.out.println();
                System.out.println("系统返回主菜单!");
                this.menu();
            }
            while (c == 1) {
                if (ch == 'Y' || ch == 'y') {
                    System.out.println("****************************************");
                    System.out.println("*****   1.修改学号   *****");
                    System.out.println("*****   2.修改班级   *****");
                    System.out.println("*****   3.修改姓名   *****");
                    System.out.println("*****   4.修改应用数学成绩   *****");
                    System.out.println("*****   5.修改大学英语成绩   *****");
                    System.out.println("*****   6.修改程序设计成绩   *****");
                    System.out.println("*****   7.修改计算机应用基础成绩   *****");
                    System.out.println("****************************************");
                    System.out.println("请选择:");
                    moi = pin.nextInt();
                    switch (moi) {
                        case 1:
                            System.out.print("请输入新的学号:");
                            num3 = pin.nextInt();
                            s[t].n = num3;
                            break;
                        case 2:
                            System.out.print("请输入新的班级:");
                            str1 = pin.next();
                            s[t].setClassAge(str1);
                            break;
                        case 3:
                            System.out.print("请输入新的姓名:");
                            str2 = pin.next();
                            s[t].setName(str2);
                            break;
                        case 4:
                            System.out.print("请输入新的应用数学成绩:");
                            str3 = pin.next();
                            s[t].setName(str3);
                            break;
                        case 5:
                            System.out.print("请输入新的大学英语成绩:");
                            str4 = pin.next();
                            s[t].setName(str4);
                            break;
                        case 6:
                            System.out.print("请输入新的程序设计成绩:");
                            str5 = pin.next();
                            s[t].setName(str5);
                            break;
                        case 7:
                            System.out.print("请输入新的计算机应用基础成绩:");
                            str6 = pin.next();
                            s[t].setName(str6);
                            break;
                    }
                    System.out.println("数据已成功修改!");
                }
                System.out.print("是否继续修改(Y/N)");
                str = pin.next();
                ch = str.charAt(0);
                System.out.println();
                while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
                    System.out.print("输入无效,请重新输入:");
                    str = pin.next();
                    ch = str.charAt(0);
                }
                if (ch == 'N' || ch == 'n') {
                    break;
                }
            }
        }
        System.out.println();
        System.out.println("系统返回主菜单!");
        this.menu();
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getClassAge() {
        return classAge;
    }

    public void setClassAge(String classAge) {
        this.classAge = classAge;
    }

    public int getMath() {
        return math;
    }

    public void setMath(int math) {
        this.math = math;
    }

    public int getEnglish() {
        return english;
    }

    public void setEnglish(int english) {
        this.english = english;
    }

    public int getProgramming() {
        return programming;
    }

    public void setProgramming(int programming) {
        this.programming = programming;
    }

    public int getComputer() {
        return computer;
    }

    public void setComputer(int computer) {
        this.computer = computer;
    }

    public static void main(String[] args) throws IOException {
        Student stu = new Student();
        for (int i = 0; i < 100; i++) {
            s[i] = new Student();
        }
        stu.menu();
    }
        }

 

 

 

  • 8
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
该学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩。成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava版本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具体功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

X-MTing

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值