第一个类
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();
}
}