现在的位置: 首页 > 综合 > 正文

Console学生管理操作二(属性类 + 操作类)

2019年09月19日 ⁄ 综合 ⁄ 共 4123字 ⁄ 字号 评论关闭
属性类:
package information;

//存放学生的属性
public class Student {
	private int id;
	private String name;
	private int age;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}

操作类:

package operate;

import information.Student;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

//学生管理操作操作类,用于执行所有操作
public class Operate {
	private File file = new File("StudentDate");// 新建文件夹用于存储所有学生文件

	
	
	
	// 查看全部学生信息
	public List<Student> findAll() {
		// TODO Auto-generated method stub
		//创建一个集合,即查看全部学生信息变成直接遍历集合
		List<Student> list = new ArrayList<Student>();

		// 得到StudentDate下的所有文件
		File[] f = file.listFiles(new FileFilter() {
			// 过滤器得到StudentDate下所有后缀名为".st"的文件
			@Override
			public boolean accept(File pathname) {
				// TODO Auto-generated method stub
				return pathname.getName().endsWith(".st");
			}
		});
		for (File fs : f) {
			Student s = new Student();
			BufferedReader br = null;
			try {
				br = new BufferedReader(new FileReader(fs));
				s.setId(Integer.parseInt(br.readLine()));// Integer.parseInt是将字符串变成int
				s.setName(br.readLine());
				s.setAge(Integer.parseInt(br.readLine()));
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NumberFormatException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				if (br != null) {  //因为br初始化为null即流没开启,如果不等于null,才能关闭流
					try {
						br.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
			list.add(s);  //将id对应的Student对象添加到集合中,方便后边遍历
		}
		return list;

	}

	
	
	
	
	
	
	// 查看是否存在输入的id
	public boolean findById(int id) {
		File f = new File(file, id + ".st");
		return f.exists();//判断该id命名的文件是否存在
	}

	
	
	
	// 添加学生操作
	public boolean add(Student s) {
		if (findById(s.getId())) {
			return true;
		} else {
			BufferedWriter bw = null;
			try {
				File f = new File(file, s.getId() + ".st");		// 在StudentDate文件夹中创建一个文件
				FileWriter fw = new FileWriter(f);		// 向文件中写入信息
				bw = new BufferedWriter(fw);	// 包装流,提高效率
				bw.write(String.valueOf(s.getId()));	//因为id为int类型,所以需要转换成String类型才能写入
														//getId是得到输入的id然后写入到文件中(下面同理)
				bw.newLine();	//写入一个行分隔符,即另起一行
				bw.write(s.getName());
				bw.newLine();
				bw.write(String.valueOf(s.getAge()));
				bw.flush();		// 输出操作之后要进行刷新
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				if (bw != null) {
					try {
						bw.close();
						// fw.close(); //不需要,因为bw包装了fw,即bw关闭fw就关闭
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
		return false;
	}



	//查找某个学生信息
	public Student find(int id) {
		// TODO Auto-generated method stub
		Student s = new Student();
		if(findById(id)){  //调用findById(),查找是否存在该学生
			BufferedReader br = null;
			File f = new File(file,id+".st");   //用变量 f 定义该学生所对应文件
			try {
				br = new BufferedReader(new FileReader(f));
				s.setId(Integer.parseInt(br.readLine()));// Integer.parseInt是将字符串变成int
				s.setName(br.readLine());
				s.setAge(Integer.parseInt(br.readLine()));
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NumberFormatException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				if (br != null) {	//br
					try {
						br.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
			return s;
		}else{
			return null;
		}
		
		
		
	}



	
	//删除某个学生信息
	public boolean del(int id) {
		// TODO Auto-generated method stub
		if(findById(id)){
			File f = new File(file,id+".st");	//创建文件
			f.delete();
			return true;
		}else{
			return false;
		}
		
	}



	//修改某个学生信息
	public boolean update(Student s) {
		// TODO Auto-generated method stub
		BufferedWriter  bw = null;
		try {
			bw = new BufferedWriter(new FileWriter(new File(file,s.getId()+".st")));
			bw.write(String.valueOf(s.getId()));
			bw.newLine();
			bw.write(s.getName());
			bw.newLine();
			bw.write(String.valueOf(s.getAge()));
			bw.flush();
			return true;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}finally{
			if(bw!=null){
				try {
					bw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}
}

====================================================================

希望能与更多的java程序员共同学习

扣扣联系:2531977855

抱歉!评论已关闭.