每日总结

学生管理系统,怎么说呢,还是没做完,有几个问题需要解决一下。

主要问题集中在null的使用,和输入类(Scanner)的使用,都是各种报错,看来还是要再研究一下

话虽如此,鸽了2天的代码也不能说不给就不给,这是目前比较好的版本:

复制代码
package test5;

import java.util.Scanner;

class student 
{
    public String name="不明";
    public String code="不明";
    public double math=0,chinese=0,english=0,bio=0,fullscore=0;
    public student next=null;
    public student() {}
    public student(String a,String f,double b,double c,double d,double e){
            name=a;code=f;math=b;chinese=c;english=d;bio=e;
            fullscore=b+c+d+e;
            }
    public void showme()
        {
            System.out.print("目标学号:"+code+"
");
            System.out.print("目标姓名:"+name+"
");
            System.out.print("数学成绩:"+math+"
");
            System.out.print("语文成绩:"+chinese+"
");
            System.out.print("英语成绩:"+english+"
");
            System.out.print("生物成绩:"+bio+"
");
            System.out.print("总分:"+fullscore+"
");
        }
};
class namelist extends student
{
    public student headNode;
    public student position;
    public namelist(String a,String f,double b,double c,double d,double e)
        {
            headNode=new student(a,f,b,c,d,e);
            position=headNode;
            position.next=new student(a,f,b,c,d,e);
            position=position.next;
            position.next=null;
            position=headNode.next;
        }
    public namelist(){}
    public int getSize()
        {
            int count=0;
            student p=headNode;
            while (p.next!=null)
            {
                p=p.next;
                count++;
            }
            return count;
        }
    public void showall()
        {
            student p=headNode;
            for(int i=0;i<=getSize();i++)
             {
                System.out.print(p.code+" "+p.name+" "+p.math+" "+p.chinese+" "+p.english+" "+p.bio+" "+p.fullscore+"
");
                 p=p.next;
             }
        }
    public void setstudent(int n)
        {
            Scanner input=new Scanner(System.in);
            student p=headNode;
            String a,b;
            double c,d,e,f;
            for(int i=1;i<=n;i++)
            {
                System.out.print("请输入第"+i+"个学生的信息:
");
                System.out.print("学号:");
                a=input.next();
                System.out.print("姓名:");
                b=input.next();
                System.out.print("数学成绩:");
                c=input.nextInt();
                System.out.print("语文成绩:");
                d=input.nextInt();
                System.out.print("英语成绩:");
                e=input.nextInt();
                System.out.print("生物成绩:");
                f=input.nextInt();
                p=new student(b,a,c,d,e,f);
                p=p.next; 
            }
            System.out.print("录入完成
");
            input.close();
        }
    public boolean ssn(String n)
        {
            position=headNode.next;
            for(;position!=null;position=position.next)   /*遍历节点*/
            {
                if(position.name==n)
                {
                    return true;    /*返回值便于if等函数判定条件*/
                }
            }
            return false;
        }
    public boolean ssc(String n)
        {
            position=headNode.next;
            for(;position!=null;position=position.next)
            {
                if(position.code==n)
                {
                    return true;
                }
            }
            return false;
        }
    public void cuika()
        {
            Scanner input11=new Scanner(System.in);
            student p=headNode;
            String a,b;
            double d,e,f,c;
            System.out.print("请输入此学生的信息:
");
            System.out.print("学号:");
            a=input11.next();
            System.out.print("姓名:");
            b=input11.next();
            System.out.print("数学成绩:");
            c=input11.nextInt();
            System.out.print("语文成绩:");
            d=input11.nextInt();
            System.out.print("英语成绩:");
            e=input11.nextInt();
            System.out.print("生物成绩:");
            f=input11.nextInt();
            for(;p.next!=null;){p=p.next;} 
            p.next=new student(b,a,c,d,e,f);
            System.out.print("录入完成
");
            input11.close();
        }
};
public class Classnext {
    public static void main(String[] args) {
        int sel,doki;
        System.out.print("欢迎来到学生成绩管理系统,请选择您想要的操作:
");
        namelist ti=new namelist();
        for(int pooi=0;pooi==0;){
            Scanner input1=new Scanner(System.in);
            System.out.print("1 创建
");
            System.out.print("2 添加
");
            System.out.print("3 汇总
");
            System.out.print("4 排序
");
            System.out.print("5 查询
");
            System.out.print("6 显示
");
            System.out.print("7 退出
");
            sel=input1.nextInt();
        if(sel==1)
        {
            System.out.print("请问想要输入几位学生的名单呢?
");
            int c;
            c=input1.nextInt();
            ti.setstudent(c);

        }
        else if(sel==2)
        {
            ti.cuika();
        }
        else if(sel==3)
        {
            double k=0;
            int c=0;
            System.out.print("已录入学生的平均成绩(总分)如下
");
            student p=ti.headNode;
            for(;p.next!=null;p=p.next)    /*遍历全部结点*/
            {
                k=k+p.fullscore;
                c++;
            }
            System.out.print(k/c+"
");
        }
        else if(sel==4)
        {
            student o;
            student p=ti.headNode;
            for(int i=0;i<=ti.getSize();i++)
            {
                for(int c=0;c<=ti.getSize();c++)
                {
                    o=p.next;
                    if(p.fullscore<o.fullscore)
                    {
                         p.next=o.next;
                         o.next=p;        /*若o大于p,交换p和o的位置*/
                    }
                }
            }
            System.out.print("排序完成!
");
        }
        else if(sel==5)
        {
             String poi;
             int ll=0;
             System.out.print("请问您想用什么方式查询信息?
");
             System.out.print("1 学号
");
             System.out.print("2 姓名
");
             doki=input1.nextInt();
             student p=ti.headNode;
             switch(doki)
             {
                case 1:
                    System.out.print("请输入待查询学号
");
                    poi=input1.next();
                    for(;p.next!=null;p=p.next)
                    {
                        if(p.code==poi)
                        {
                            p.showme();
                            ll++;
                        }
                    }
                    System.out.print("检索完成,共检索到以上"+ll+"条符合条件的对象
");
                break;
                case 2:
                    System.out.print("请输入待查询姓名
");
                    poi=input1.next();
                    for(;p.next!=null;p=p.next)
                    {
                        if(p.name==poi)
                        {
                            p.showme();
                            ll++;
                        }
                    }
                    System.out.print("检索完成,共检索到以上"+ll+"条符合条件的对象
");
                   
             }
        }
        else if(sel==6)
        {
            System.out.print("正在按照学号 姓名 数学 语文 英语 生物 总分的格式输出名单
");
            ti.showall();
        }
        else if(sel==7)
        {
            System.out.print("正在准备退出……
");
            System.out.print("感谢您的使用
");
            pooi=2;
        }
        System.out.print("您的操作已经完成
");
        input1.close();
        }
    }
}
复制代码

运行时会如下报错:

 可以看到是可以录入但循环之后Scanner就会报错

 输出名单在getsize()方法处报错。其他的问题都大同小异。

原文地址:https://www.cnblogs.com/ldy2396/p/14160127.html