/***************************

       WZ   ASUST   2016
       
           S T S
   和前一篇一样,上一篇新建了记事本但没有内容
   这里可以对比发现高级流 的问题
   file 第一点。
   关闭了buffer就不必关闭file了
****************************/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 

 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter; 
import java.io.FileReader; 


 
 
 class Student
{
 int id;

 int age;

  int score;

 String name;

public Student()
{

}

public Student(int id,  int age, int score,String name)
{
this.id = id;
this.age = age;
this.score = score;
this.name = name;
}

public int getId()
{
return id;
}

public void setId(int id)
{
this.id = id;
}

public int getAge()
{
return age;
}

public void setAge(int age)
{
this.age = age;
}

public int getScore()
{
return score;
}

public void setScore(int score)
{
this.score = score;
}

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

@Override
public String toString()
{
return "学号:" + id + " 姓名:" + name + " 年龄:" + age + " 成绩:" + score;
}
}

 
 class Manager
{
private List<Student> list;

public Manager(List<Student> list)
{
this.list = list;
}

public List<Student> getList()
{
return list;
}

public void setList(List<Student> list)
{
this.list = list;
}

 
public void add(Student s)
{
list.add(s);
}
 
public int search(int id)
{
for(Iterator<Student> iter = list.iterator(); iter.hasNext();)
{
Student s = iter.next();

if(s.getId() == id)
{
return s.getAge();
}
}
return -1;
}

//删除学生
public void remove(int id)
{
for(Iterator<Student> iter = list.iterator(); iter.hasNext();)
{
Student s = iter.next();

if(s.getId() == id)
{
list.remove(s);
}
}
}

 
public int allScore()
{
int score = 0;
int temp = 0;

for(Iterator<Student> iter = list.iterator(); iter.hasNext();)
{
Student s = iter.next();

temp = s.getScore();

score += temp;
}

return score;
}

//修改成绩
public void update(int id)
{
for(Iterator<Student> iter = list.iterator(); iter.hasNext();)
{
Student s = iter.next();

if(s.getId() == id)
{
s.setScore(s.getScore() + 10);
}
}
}
}


public class  wz{
	public static void main(String[] args) {
		List<Student> list = new ArrayList<Student>();

		Manager manager = new Manager(list);// 创建一个管理者

		Student s1 = new Student();// 无参构造方法创建的学生实例

		// 通过方法设置s1的属性
		s1.setId(201100);
		s1.setAge(20);
		s1.setScore(100);
		s1.setName("wzzx00");

		Student s2 = new Student(201101, 21, 98, "wzzx1");// 通过带参数的构造方法创建实例
		Student s3 = new Student(201102, 25, 95, "wzzx2");
		Student s4 = new Student(201103, 23, 80, "wzzx3");
		Student s5 = new Student(201104, 28, 78, "wzzx4");

		// 放到集合当中
		manager.getList().add(s1);// 添加学生
		manager.getList().add(s2);
		manager.getList().add(s3);
		manager.getList().add(s4);
		manager.getList().add(s5);

		// System.out.println(list);
		printf(list);

		System.out.println(manager.allScore());

		System.out.println(manager.search(201110));// 根据学生学号查询学生年龄

		manager.remove(201110);// 删除学生

		manager.update(201101);// 修改成绩

		boolean flag = false;
		FileWriter fw = null;
		BufferedWriter bw = null;

		try {
 //			fw = new FileWriter("javaout.txt", true);//no true fflush
fw = new FileWriter("javaout.txt");//  all is ok fflush 
			bw = new BufferedWriter(fw, 1-00);
			for (Student integer : list) {
			System.out.println("integer wzzx");
          bw.write(integer.id+" "+integer.name + " "+integer.age+" "+integer.score);//+\r  or \ n                             
            bw.newLine();
				System.out.println(integer);
			}

			flag = true;
		} catch (IOException e) {
			System.out.println("写入文件出错");
			flag = false;
		} finally {		
			if (bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	static void printf(List<Student> list) {
		System.out.println("wzzx overwride");

		int size = list.size();

		// Student [] arr = (Student[])list.toArray(new Student[size]);
		Student[] arr = list.toArray(new Student[size]); // ok
		for (int i = 0; i < size; i++) {
			System.out.println(arr[i]);
		}
		System.out.println(list);

	}

}