本帖最后由 小鲁哥哥 于 2017-8-25 11:05 编辑
【济南中心】JavaEE基础班新课程day11:综合练习
今天我们的主要内容有: 用我们学过的知识做一个学生信息管理系统 首先我们要准备一个学生类,相信大家都已经非常熟悉了吧。来,开始吧~! [Java] 纯文本查看 复制代码 package com.itheima;
/*
* 标准的学生类
*/
public class Student {
//学号
private String id;
//姓名
private String name;
//年龄
private String age;
//居住地
private String address;
public Student() {
}
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
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 String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
然后我们完成第一个开发任务: 键盘录入3个学生信息(学号,姓名,年龄,居住地)存入集合。然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行数据,自己定义分割标记)
代码分析: * A:定义学生类 * B:创建集合对象 * C:写方法实现键盘录入学生信息,并把学生对象作为元素添加到集合 * D:创建输出缓冲流对象 * E:遍历集合,得到每一个学生信息,并把学生信息按照一定的格式写入文本文件 * 举例:heima001,向问天,30,北京 * F:释放资源 [Java] 纯文本查看 复制代码 public class ArrayListToFileTest {
public static void main(String[] args) throws IOException {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//写方法实现键盘录入学生信息,并把学生对象作为元素添加到集合
addStudent(array);
addStudent(array);
addStudent(array);
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt"));
//遍历集合,得到每一个学生信息,并把学生信息按照一定的格式写入文本文件
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
//heima001,向问天,30,北京
StringBuilder sb = new StringBuilder();
sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
}
ok,我们已经成功的把学生信息加入了集合中,并且写入了文件里。下面我们开始往里面添加学生吧! [Java] 纯文本查看 复制代码 //添加学生
public static void addStudent(ArrayList<Student> array) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//为了让id能够被访问到,我们就把id定义在了循环的外面
String id;
//为了让代码能够回到这里,用循环
while(true) {
System.out.println("请输入学生学号:");
//String id = sc.nextLine();
id = sc.nextLine();
//判断学号有没有被人占用
//定义标记
boolean flag = false;
//遍历集合,得到每一个学生
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
//获取该学生的学号,和键盘录入的学号进行比较
if(s.getId().equals(id)) {
flag = true; //说明学号被占用了
break;
}
}
if(flag) {
System.out.println("你输入的学号已经被占用,请重新输入");
}else {
break; //结束循环
}
}
System.out.println("请输入学生姓名:");
String name = sc.nextLine();
System.out.println("请输入学生年龄:");
String age = sc.nextLine();
System.out.println("请输入学生居住地:");
String address = sc.nextLine();
//创建学生对象
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address);
//把学生对象作为元素添加到集合
array.add(s);
//给出提示
System.out.println("添加学生成功");
}
}
ok,我们把键盘录入的学生信息成功的写入了文件中,那么问题来了,怎么再从文件中读取我们的信息呢?我相信这个肯定难不倒聪明的你们! 首先,我们还是先分析一下代码步骤: * A:定义学生类 * B:创建输入缓冲流对象 * C:创建集合对象 * D:读取文件数据,并把数据按照一定的格式进行分割赋值给学生对象,然后把学生对象作为元素存储到集合 * heima001,向問天,30,北京 * E:释放资源 * F:遍历集合 分析完以后是不是代码已经呼之欲出了? [Java] 纯文本查看 复制代码 public class FileToArrayListTest {
public static void main(String[] args) throws IOException {
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("array.txt"));
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//读取文件数据,并把数据按照一定的格式进行分割赋值给学生对象,然后把学生对象作为元素存储到集合
String line;
while((line=br.readLine())!=null) {
//分割字符串
String[] strArray = line.split(",");
//创建学生对象并赋值
Student s = new Student();
s.setId(strArray[0]);
s.setName(strArray[1]);
s.setAge(strArray[2]);
s.setAddress(strArray[3]);
//把学生对象作为元素存储到集合
array.add(s);
}
//释放资源
br.close();
//遍历集合
System.out.println("学号\t\t姓名\t年龄\t居住地");
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
}
}
}
今天的代码量很大,不过既然我们基础知识够扎实,需要的就是多敲多练,所以今天的案例都要自己敲完。 接下来,我们还要完善这个案例,不过需要交给你们完成。
这里我给大家一旦提示:
学生管理系统IO版: A:在第九天学生管理系统案例的基础上,添加新需求 B:查看所有的学生的数据需要从students.txt(提供好的)中读取出来 C:增删改都需要先从students.txt中读出学生的数据然后再把改后的学生数据重新写回students.txt
大家加油吧!拯救我们人类就靠你们了!
|