• 每日总结


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

    主要问题集中在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()方法处报错。其他的问题都大同小异。

  • 相关阅读:
    XJTUOJ13 (数论+FFT)
    ZOJ3956 ZJU2017校赛(dp)
    ZOJ3953 ZJU2017校赛(贪心)
    2014ACM/ICPC亚洲区西安站现场赛 F color(二项式反演)
    LOJ10129
    loj 10127最大数
    noip 选择客栈
    LOJ10121 与众不同
    CQOI 2006 简单题
    校门外的树
  • 原文地址:https://www.cnblogs.com/ldy2396/p/14160127.html
Copyright © 2020-2023  润新知