学生管理系统,怎么说呢,还是没做完,有几个问题需要解决一下。
主要问题集中在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()方法处报错。其他的问题都大同小异。

浙公网安备 33010602011771号