题目要求:
文件夹中给出的源程序Main.java,StuList.java,Student.java,填补其中的空缺内容。
要求:
(1)StuList.java和Student.java在同一个包中。
(2)Main.java在无名包中。
其中,Main.java中的类使用到StuList.java和Student.java中的成员变量或者成员方法。
本实验中的源程序可以完成如下任务:
创建学生链表,从键盘上输入学生信息加入学生链表,添加学生信息,删除学生信息,显示学生信息,按照学生成绩排序等。
我写的代码:
Main:
import pzw.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
StuList list=new StuList(20); //学生链表可以容纳20个学生
System.out.println("要输入多少个学生的信息?");
int num=in.nextInt();
for(int i=0;i<num;i++)
{
System.out.println("请输入第"+(i+1)+"位学生的学号,姓名,数学、计算机成绩");
Student t=new Student(in.nextInt(),in.next(),in.nextDouble(),in.nextDouble());
list.addStu(t);
}
list.print();
list.addStu(new Student(1321,"liu",90,60));
list.addStu(new Student(1331,"guo",96,80));
list.addStu(new Student(1326,"niu",80,90));
list.removeStu(3);
list.print();
System.out.println("按数学成绩排序:");
list.sort(1);
list.print();
System.out.println("按计算机成绩排序:");
list.sort(2);
list.print();
in.close();
}
}
StuList类:
package pzw;
public class StuList
{
public Student []stu=new Student[30];
int i=0,j=0,k=0,l=0,m=0,t=0;
boolean yichu,kong;
public StuList(int a)
{
j=a;
}
private boolean isOverflow() //辅助方法,判断数组是否溢出
{
if(j<30)
{
yichu=false;
}
else
{
yichu=true;
}
return yichu;
}
public boolean isEmpty() //判断数组是否为空
{
if(stu==null)
{
kong=true;
}
else{
kong=false;
}
return kong;
}
public boolean addStu(Student x) //添加学生信息
{
if(isOverflow())
return false;
else
{
stu[k]=x;
k++;
return true;
}
}
public Student removeStu(int index) //删除指定位置的学生信息
{
int p;
if(isEmpty())
{
System.out.println("学生表空的~~~删除失败~~~~");
return null;
}
Student temp=stu[index-1];
for(p=index;p<j;p++)
{
stu[p]=stu[p+1];
}
return temp;
}
public void sort(int x) //按照成绩排序,参数1按数学排序,参数2按计算机排序
{
if(x==1)
{
for(i=0;i<j-1;i++)
{
for(m=0;m<j-1;m++)
{
if(stu[m].sx<stu[m+1].sx)
{
Student a;
a=stu[m];
stu[m]=stu[m+1];
stu[m+1]=a;
}
}
}
}
else if(x==2)
{
for(i=0;i<j-1;i++)
{
for(m=0;m<j-1;m++)
{
if(stu[m].jsj<stu[m+1].jsj)
{
Student a;
a=stu[m];
stu[m]=stu[m+1];
stu[m+1]=a;
}
}
}
}
}
public void print()
{
for(l=0;l<j;l++)
{
System.out.println(stu[l].xh+ stu[l].xm+ stu[l].sx+ stu[l].jsj);
}
}
}
Student:
package pzw;
public class Student {
int xh=0;
String xm=null;
double sx=0;
double jsj=0;
public Student(int a,String b,double c,double d)
{
xh=a;
xm=b;
sx=c;
jsj=d;
}
public int getxh()
{
return xh;
}
public String getxm()
{
return xm;
}
public double getsx()
{
return sx;
}
public double getjsj()
{
return jsj;
}
}
附题目给出的程序:
Student.java:
【包的声明】
public class Student
{
【成员变量的声明】
【构造方法】
【获取学号】
【设置学号】
【获取姓名】
【设置姓名】
【获取数学成绩】
【设置数学成绩】
【获取计算机成绩】
【设置计算机成绩】
【输出学生信息】
}
StuList.java:
【包的声明】
public class StuList
{
【学生信息声明】
private int length; //实际容量
【构造方法】
private boolean isOverflow() //辅助方法,判断数组是否溢出
{
【代码】
}
public boolean isEmpty() //判断数组是否为空
{
【代码】
}
public boolean addStu(Student x) //添加学生信息
{
if(isOverflow())
return false;
【代码】
return true;
}
public Student removeStu(int index) //删除指定位置的学生信息
{
if(isEmpty())
{
System.out.println("学生表空的~~~删除失败~~~~");
return null;
}
Student temp=stu[index-1];
【代码】
return temp;
}
public void sort(int x) //按照成绩排序,参数1按数学排序,参数2按计算机排序
{
if(x==1)
{
【代码】
}
else if(x==2)
{
【代码】
}
}
public void print()
{
【代码】
}
}
主函数:
【包的引用】
public class Main
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
StuList list=new StuList(20); //学生链表可以容纳20个学生
System.out.println("要输入多少个学生的信息?");
int num=in.nextInt();
for(int i=0;i<num;i++)
{
System.out.println("请输入第"+(i+1)+"位学生的学号,姓名,数学、计算机成绩");
Student t=new Student(in.nextInt(),in.next(),in.nextDouble(),in.nextDouble());
list.addStu(t);
}
list.print();
list.addStu(new Student(1321,"liu",90,60));
list.addStu(new Student(1331,"guo",96,80));
list.addStu(new Student(1326,"niu",80,90));
list.removeStu(3);
list.print();
System.out.println("按数学成绩排序:");
list.sort(1);
list.print();
System.out.println("按计算机成绩排序:");
list.sort(2);
list.print();
in.close();
}
}