学生管理系统,怎么说呢,还是没做完,有几个问题需要解决一下。
主要问题集中在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+"\n"); System.out.print("目标姓名:"+name+"\n"); System.out.print("数学成绩:"+math+"\n"); System.out.print("语文成绩:"+chinese+"\n"); System.out.print("英语成绩:"+english+"\n"); System.out.print("生物成绩:"+bio+"\n"); System.out.print("总分:"+fullscore+"\n"); } }; 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+"\n"); 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+"个学生的信息:\n"); 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("录入完成\n"); 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("请输入此学生的信息:\n"); 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("录入完成\n"); input11.close(); } }; public class Classnext { public static void main(String[] args) { int sel,doki; System.out.print("欢迎来到学生成绩管理系统,请选择您想要的操作:\n"); namelist ti=new namelist(); for(int pooi=0;pooi==0;){ Scanner input1=new Scanner(System.in); System.out.print("1 创建\n"); System.out.print("2 添加\n"); System.out.print("3 汇总\n"); System.out.print("4 排序\n"); System.out.print("5 查询\n"); System.out.print("6 显示\n"); System.out.print("7 退出\n"); sel=input1.nextInt(); if(sel==1) { System.out.print("请问想要输入几位学生的名单呢?\n"); 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("已录入学生的平均成绩(总分)如下\n"); student p=ti.headNode; for(;p.next!=null;p=p.next) /*遍历全部结点*/ { k=k+p.fullscore; c++; } System.out.print(k/c+"\n"); } 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("排序完成!\n"); } else if(sel==5) { String poi; int ll=0; System.out.print("请问您想用什么方式查询信息?\n"); System.out.print("1 学号\n"); System.out.print("2 姓名\n"); doki=input1.nextInt(); student p=ti.headNode; switch(doki) { case 1: System.out.print("请输入待查询学号\n"); poi=input1.next(); for(;p.next!=null;p=p.next) { if(p.code==poi) { p.showme(); ll++; } } System.out.print("检索完成,共检索到以上"+ll+"条符合条件的对象\n"); break; case 2: System.out.print("请输入待查询姓名\n"); poi=input1.next(); for(;p.next!=null;p=p.next) { if(p.name==poi) { p.showme(); ll++; } } System.out.print("检索完成,共检索到以上"+ll+"条符合条件的对象\n"); } } else if(sel==6) { System.out.print("正在按照学号 姓名 数学 语文 英语 生物 总分的格式输出名单\n"); ti.showall(); } else if(sel==7) { System.out.print("正在准备退出……\n"); System.out.print("感谢您的使用\n"); pooi=2; } System.out.print("您的操作已经完成\n"); input1.close(); } } }
运行时会如下报错:
可以看到是可以录入但循环之后Scanner就会报错
输出名单在getsize()方法处报错。其他的问题都大同小异。
另外,虽然我认为不能有什么人关心咱的身体状况,但如果真的有人看了前两天的随笔能有那么一点点担心的话,我就在此感谢了