Java实现一个学生成绩管理系统,要求存储学生信息并进行增删改查操作。

这是我刚学完Java封装继承的时候写的一个小案例,还不会使用集合,就用数组硬写了出来,但数组的缺点是不能改变数组的长度,虽然可以写个方法新建长度加一的数组然后把旧的数组装进去,但是真的好麻烦还没必要。如果想看用集合实现的代码可以到我的空间来看。

题目:设计一个名为Student 的类,包括属性有“学号”、“姓名”、以及 3 门课程“数学”、“英语”和“计算机”的成绩,包括的方法有计算 3 门课程的“总分”、“平均分”、“最高分”及“最低分”。

使用数组来实现对多个学生的管理。写一个控制台应用程序。

菜单如下:

1.添加学生

2.删除学生

3.查询学生

4.修改学生

5.打印学生

打印格式如下

学号 姓名 数学 英语 计算机

01 张三 56 65 77

02 李四 89 55 44

6.统计学生:

所有学生的“数学”、“英语”和“计算机”每门课程总的平均成绩、最高分、最低分。

打印格式:

学科 平均成绩 最高分 最低分

数学

英语

计算机

package com.qf.weektest;
import java.util.Scanner;
class Student{
    private String stuno;
    private String name;
    private float math;
    private float english;
    private float computer;
public float sum(float math,float english,float computer){
    return math+english+computer;
}
public float avg(Student stu[],String subject){//求学生数组的平均成绩
    if (subject.equals("数学")){
        float sum=0;
        for (int i = 0; i < stu.length; i++) {
            if (!stu[i].getName().equals("null")){
                sum=sum+stu[i].getMath();
            }
        }
        return sum;
    } else if (subject.equals("英语")) {
        float sum=0;
        for (int i = 0; i < stu.length; i++) {
            if (!stu[i].getName().equals("null")){
                sum=sum+stu[i].getEnglish();
            }
        }
        return sum;
    }else if(subject.equals("计算机")){
        float sum=0;
        for (int i = 0; i < stu.length; i++) {
            if (!stu[i].getName().equals("null")){
                sum=sum+stu[i].getComputer();
            }
        }
        return sum;
    }
    return 0.0f;

}
public float max(Student stu[],String subject){//求单科最大值
    if (subject.equals("数学")){
        float temp=stu[0].getMath();
        for (int i = 1; i < stu.length; i++) {
            if (!stu[i].getName().equals("null")&&temp<stu[i].getMath()){
                temp=stu[i].getMath();
            }
        }
        return temp;
    }else if (subject.equals("英语")){
        float temp=stu[0].getEnglish();
        for (int i = 1; i < stu.length; i++) {
            if (!stu[i].getName().equals("null")&&temp<stu[i].getEnglish()){
                temp=stu[i].getEnglish();
            }
        }
        return temp;
    }else if(subject.equals("计算机")){
        float temp=stu[0].getComputer();
        for (int i = 1; i < stu.length; i++) {
            if (!stu[i].getName().equals("null")&&temp<stu[i].getComputer()){
                temp=stu[i].getComputer();
            }
        }
        return temp;
    }
    return 0.0f;
}
    public float min(Student stu[],String subject){//求单科最小值
        if (subject.equals("数学")){
            float temp=stu[0].getMath();
            for (int i = 1; i < stu.length; i++) {
                if (!stu[i].getName().equals("null")&&temp>stu[i].getMath()){
                    temp=stu[i].getMath();
                }
            }
            return temp;
        }else if (subject.equals("英语")){
            float temp=stu[0].getEnglish();
            for (int i = 1; i < stu.length; i++) {
                if (!stu[i].getName().equals("null")&&temp>stu[i].getEnglish()){
                    temp=stu[i].getEnglish();
                }
            }
            return temp;
        }else if(subject.equals("计算机")){
            float temp=stu[0].getComputer();
            for (int i = 1; i < stu.length; i++) {
                if (!stu[i].getName().equals("null")&&temp>stu[i].getComputer()){
                    temp=stu[i].getComputer();
                }
            }
            return temp;
        }
        return 0.0f;
    }

    public String getStuno() {
        return stuno;
    }

    public void setStuno(String stuno) {
        this.stuno = stuno;
    }

    public String getName() {
        return name;
    }

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

    public float getMath() {
        return math;
    }

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

    public float getEnglish() {
        return english;
    }

    public void setEnglish(float english) {
        this.english = english;
    }
    public float getComputer() {
        return computer;
    }
    public void setComputer(float computer) {
        this.computer = computer;
    }
}
class StudentManager extends Student{
 public void storageStudent(Student stu[]){//初始化学生信息
     for (int i = 0; i < stu.length; i++) {
         stu[i]=new Student();
         Scanner sc=new Scanner(System.in);
         System.out.println("请输入第"+(i+1)+"个学生的信息:");
         System.out.print("姓名:");
         stu[i].setName(sc.next());
         if (stu[i].getName().equals("null")){
             stu[i].setStuno("null");
             stu[i].setComputer(0);
             stu[i].setEnglish(0);
             stu[i].setMath(0);
         }else {
             System.out.print("  学号:");
             stu[i].setStuno(sc.next());
             System.out.print("   数学:");
             stu[i].setMath(sc.nextFloat());
             System.out.print("   英语:");
             stu[i].setEnglish(sc.nextFloat());
             System.out.print("   计算机:");
             stu[i].setComputer(sc.nextFloat());
         }
         }
     }
public int checkStudent(Student stu[]){//从左往右检查学生数组是否有空余的位置,如果有就返回空余位置的下标,如果没有就返回-1
    for (int i = 0; i < stu.length; i++) {
        if (stu[i].getName().equals("null")){
            return i;
        }
    }
    return -1;
    }
    public int findStudent(Student stu[],String name){//根据姓名查找学生的姓名,如果有就返回相应的坐标,如果没有就返回-1,这个方法和后面的查询学生方法有些重复,但是我在修改学生,删除学生方法中需要用到查询,所以就直接重写了一个方法
        for (int i = 0; i < stu.length; i++) {
            if (stu[i].getName().equals(name)){
                return i;
            }
        }
        return -1;
    }
 public void addStudent(Student stu[]){//添加学生信息
     int index=checkStudent(stu);
     if (index>=0){
         Scanner sc=new Scanner(System.in);
         System.out.println("请添加学生信息");
         System.out.print("姓名: ");
         stu[index].setName(sc.next());
         System.out.print("学号: ");
         stu[index].setStuno(sc.next());
         System.out.print("数学成绩:");
         stu[index].setMath(sc.nextFloat());
         System.out.print("英语成绩:");
         stu[index].setEnglish(sc.nextFloat());
         System.out.print("计算机成绩:");
         stu[index].setComputer(sc.nextFloat());
         System.out.println("添加成功");
         }
     else {
         System.out.println("没有多余的位置了,添加失败");
     }
 }
 public void deleteStudent(Student stu[]){//删除学生
     Scanner sc=new Scanner(System.in);
     System.out.println("请输入要删除的学生姓名:");
     String name=sc.next();
     int index=findStudent(stu,name);
     if (index>=0){
         stu[index].setName("null");
         stu[index].setStuno("null");
         stu[index].setComputer(0);
         stu[index].setEnglish(0);
         stu[index].setMath(0);
         System.out.println("删除完毕");
     }else {
         System.out.println("没有这个学生,删除失败");
     }
 }
 public void searchStudent(Student stu[],String name){//查询学生
     int index=findStudent(stu,name);
     if (index>=0){
         System.out.println("存在这个学生");
     }else {
         System.out.println("不存在这个学生");
     }
 }
 public void reviseStudent(Student stu[],String name){//修改学生的学号,成绩
     int index=findStudent(stu,name);
     if (index>=0){
         Scanner sc=new Scanner(System.in);
         System.out.println("原来的学生姓名为:"+stu[index].getName());
         System.out.print("请输入要修改的学生姓名:");
         stu[index].setName(sc.next());
         System.out.println("原来的学生学号为:"+stu[index].getStuno());
         System.out.print("请输入要修改的学生学号:");
         stu[index].setStuno(sc.next());
         System.out.println("原来的学生数学成绩为:"+stu[index].getMath());
         System.out.print("请输入要修改的数学成绩:");
         stu[index].setMath(sc.nextFloat());
         System.out.println("原来的学生英语成绩为:"+stu[index].getEnglish());
         System.out.print("请输入要修改的英语成绩:");
         stu[index].setEnglish(sc.nextFloat());
         System.out.println("原来的学生计算机成绩为:"+stu[index].getComputer());
         System.out.print("请输入要修改的计算机成绩:");
         stu[index].setComputer(sc.nextFloat());
         System.out.println("修改成功");

     }else {
         System.out.println("不存在这个人");
     }
 }
 public void printStudent(Student stu[]){//打印学生信息
     System.out.println("学生所有信息如下:");
     for (int i = 0; i < stu.length; i++) {
         if (!stu[i].getName().equals("null")){
             System.out.print("学号:"+stu[i].getStuno()+"   姓名:"+stu[i].getName()+"   数学:"+stu[i].getMath()+"   英语:"+stu[i].getEnglish()+"   计算机:"+stu[i].getComputer());
             System.out.println();
         }
     }
 }
 public void statisticsStudent(Student stu[],String subject){//统计学生信息
     System.out.println(subject+"  "+avg(stu,subject)+"  "+max(stu,subject)+"  "+min(stu,subject));
 }
}
public class Demo12 {
    public static void main(String[] args) {
        Student stu[]=new Student[4];
        StudentManager stum=new StudentManager();
        stum.storageStudent(stu);

        loop:while (true){
            Scanner sc=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("7.退出操作");
            int chose=sc.nextInt();

            switch (chose){
                case 1:
                    stum.addStudent(stu);
                    break;
                case 2:
                    stum.deleteStudent(stu);
                    break;
                case 3:
                    System.out.println("请输入要查询的学生姓名:");
                    String name1=sc.next();
                    stum.searchStudent(stu,name1);
                    break;
                case 4:
                    System.out.println("请输入要修改的学生姓名:");
                    String name2=sc.next();
                    stum.reviseStudent(stu,name2);
                    break;
                case 5:
                    stum.printStudent(stu);
                    break;
                case 6:
                    System.out.println("学科    平均成绩   最高分   最低分");
                    stum.statisticsStudent(stu,"数学");
                    stum.statisticsStudent(stu,"英语");
                    stum.statisticsStudent(stu,"计算机");
                    break;
                case 7:
                    System.out.println("退出成功");
                    break loop;
                default:
                    break;
            }
        }
    }
}

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值