import java.io.*;
class Keyboard
{
static BufferedReader inputStream = new BufferedReader(new InputStreamReader(System.in));
public static int getInteget()
{
try
{
return (Integer.valueOf(inputStream.readLine().trim()).intValue());
}
catch (Exception e)
{
e.printStackTrace();
return 0;
}
}
public static String getString()
{
try
{
return (inputStream.readLine());
}
catch (IOException e)
{
return "0";
}
}
}
class Student
{
private String id;
private String name;
private int eng;
private int math;
private int comp;
private int sum;
//构造方法
public Student()
{}
public Student(String id,String name,int eng,int math,int comp,int sum)
{
this.id = id;
this.name = name;
this.eng = eng;
this.math = math;
this.comp = comp;
sum();
}
public Student(Student s)
{
this.id = s.id;
this.name = new String(s.name);
this.eng = s.eng;
this.math = s.math;
this.comp = s.comp;
sum();
}
public void setID(String id)
{
this.id = id;
}
public void setName(String name)
{
this.name = name;
}
public void setENG(int eng )
{
this.eng = eng;
sum();
}
public void setMath(int math)
{
this.math = math;
sum();
}
public void setComp(int comp)
{
this.comp = comp;
sum();
}
public String getID()
{
return id;
}
public String getName()
{
return name;
}
public int getEng()
{
return eng;
}
public int getMath()
{
return math;
}
public int getComp()
{
return comp;
}
public int getSum()
{
return sum;
}
void sum()
{
this.sum = eng + math + comp;
}
public String toString()
{
return getID() +"\t" +getName()+"\t"+getEng()+"\t"+getMath()+"\t"+getComp()+"\t"+getSum();
}
//比较两个Student对象是否相等
public boolean equals(Object obj)
{
if(this.getClass()!=obj.getClass())
return false;
Student b = (Student)obj;
return ((this.getID()).equals(b.getID()));
}
public int compare(Student A)
{
if( this.getSum() > A.getSum() )
return 1;
else if( this.getSum() == A.getSum() )
return 0;
else
return -1;
}
}
class StudentClass
{
private String name;
private int capacity = 40;
private Student[] students;
private int size;
public StudentClass(String name , int size)
{
this.name = name;
this.size = size;
students = new Student[capacity];
}
public String getName()
{
return name;
}
public int getCapacity()
{
return capacity;
}
public Student[] getStudents()
{
return students;
}
public int getSize()
{
return size;
}
public void setName(String name)
{
this.name = name;
}
public void setCapacity(int capacity)
{
this.capacity = capacity;
}
public void setSize(int size)
{
this.size = size;
}
public void setStudents(Student[] students)
{
for(int i = 0;i < size; i++)
{
this.students[i] = new Student(students[i]);
}
}
public String toString()
{
String s;
s = "班级:"+name+"\t"+"容量:"+capacity+"\t"+"实际人数:"+size+"\n\n";
s = s+ "学号"+"\t"+"姓名"+"\t"+"英语"+"\t"+"数学"+"\t"+"计算机"+"\t"+"总成绩\n";
for(int i = 0;i<size;i++)
{
s = s + students[i].getID()+"\t"+students[i].getName()+"\t"+students[i].getEng()+"\t"+students[i].getMath()+"\t"+students[i].getComp()+"\t"+students[i].getSum()+"\n";
}
return s;
}
}
public class StudentTest
{
public static void main(String[] args)
{
Student[] students;
StudentClass aClass = new StudentClass("软件0201",5);
students = new Student[5];
for(int i =0 ;i<5;i++)
{
students[i] = new Student(getAStudent(i+1));
}
aClass.setStudents(students);
System.out.println(aClass);
//将学生信息保存到文件stu.ser中
try
{
FileOutputStream fo = new FileOutputStream("stu.ser");
ObjectOutputStream so =new ObjectOutputStream(fo);
for(int i = 0; i<5;i++)
{
so.writeObject(students[i]);
}
so.close();
}
catch (Exception e)
{
System.out.println(e);
}
}
public static void sop(Object obj)
{
System.out.print(obj);
}
public static Student getAStudent(int i)
{
Student studenti;
sop("输入第"+i+"个学生的信息"+"\n");
sop("学号:"+"\n");
String id = Keyboard.getString();
sop("姓名:"+"\n");
String name = Keyboard.getString();
sop("英语成绩:"+"\n");
int eng = Keyboard.getInteget();
sop("数学成绩:"+"\n");
int math= Keyboard.getInteget();
sop("计算机成绩:"+"\n");
int comp= Keyboard.getInteget();
studenti = new Student(id,name,eng,math,comp, comp);
return studenti;
}
}