JAVA版学生信息管理+读取文件

第一个类

package ch13;

import java.util.Scanner;

public class Student {
	private String id;
	private String name;
	private int grade;

	public Student(String id, String name, int grade) {
		super();
		this.id = id;
		this.name = name;
		this.grade = grade;
	}

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	public String getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public int getGrade() {
		return grade;
	}

	public void setGrade(int grade) {
		this.grade = grade;
	}
	public void changeGrade() {
		Scanner cin = new Scanner(System.in);
		int grade=cin.nextInt();
		this.grade=grade;
	}
	public void showInformation() {
		System.out.println(id+" "+name+" "+grade);
	}

	public void input() {
		Scanner cin = new Scanner(System.in);
		id = cin.next();
		name = cin.next();
		grade = cin.nextInt();
	}
}

第二个类

package ch13;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Operate {
	private List<Student> list = new LinkedList<Student>();
	private Map<String, Integer> map = new HashMap<String, Integer>();

	public Operate() {
	}

	public void finals() {
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\StudentTest.txt"));
			for (Student stu : list) {
				StringBuilder sb = new StringBuilder();
				sb.append(stu.getId()).append(" ").append(stu.getName()).append(" ").append(stu.getGrade());
				bw.write(sb.toString());
				bw.newLine();
				bw.flush();
			}
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		map.clear();
	}

	public void begins() throws NumberFormatException, IOException {
		try {
			File f1 = new File("D:\\StudentTest.txt");
			if (!f1.exists())
				f1.createNewFile();
			int i = 0;
			BufferedReader br = new BufferedReader(new FileReader("D:\\StudentTest.txt"));
			String line;
			while ((line = br.readLine()) != null) {
				// 分割字符串,分割后的元素存储到数组中,以","为分界点
				String[] strArray = line.split(" ");
				Student stu = new Student();
				stu.setId(strArray[0]);
				stu.setName(strArray[1]);
				stu.setGrade(Integer.parseInt(strArray[2]));
				list.add(stu);
				map.put(strArray[0], i++);
			}
			// 释放资源
			br.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void add() {
		int i = list.size();// 注意了!
		System.out.println("请输入学生信息");
		Student s = new Student();
		s.input();
		list.add(s);
		map.put(s.getId(), i++);
	}

	public void delete() {
		System.out.println("请输入需要删除的学生学号");
		Scanner cin = new Scanner(System.in);
		String num = cin.next();
		System.out.println(map.get(num));
		int ss = map.get(num);
		list.remove(ss);
		// 这里一定要这样写
		/*
		 * remove()这个方法是一个重载方法,即remove(int position)和remove(object object),唯一的区别是参数类型。
		 * 仔细观察上面代码你会发现,其实i是Integer对象, 而由于Java系统中如果找不到准确的对象,会自动向上升级,而(int < Integer <
		 * Object), 所以在调用stringList.remove(i)时,其实使用的remove(object object),
		 * 而很明显stringList不存在Integer对象,自然会移除失败(0.0),Java也不会因此报错。 如果我们想使用remove(int
		 * position)方法,只能降低对象等级,即修改代码;
		 */
		map.remove(num);
		if (map.containsKey(num)) {
			System.out.println("删除不成功!");
		} else {
			System.out.println("删除成功!");
		}
	}

	public void change() {
		System.out.println("请输入需要修改的学生学号");
		Scanner cin = new Scanner(System.in);
		String num = cin.next();
		int ok = map.get(num);
		if (!map.containsKey(num)) {
			System.out.println("无此人");
		} else {
			list.get(ok).changeGrade();
			System.out.println("修改成功!");
		}
	}

	public void search() {
		System.out.println("请输入需要查询的学生学号");
		Scanner cin = new Scanner(System.in);
		String num = cin.next();
		if (!map.containsKey(num)) {
			System.out.println("无此人");
		}else {
			list.get(map.get(num)).showInformation();
		}
	}

	public void showAll() {
		for (Student stu : list) {
			stu.showInformation();
		}
	}

}

第三个类

package ch13;

import java.io.IOException;

public class Smain {
	public static void main(String[] args) throws NumberFormatException, IOException {
		Operate o = new Operate();
		// o.add();
		// o.add();
		// o.search();
		// o.showAll();
		// o.change();
		o.begins();
		o.showAll();
		// o.change();
		// o.showAll();
		// o.add();
		o.delete();
		o.search();
		// o.change();
		o.finals();

	}

}

 

 

 

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值