A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 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

          大家加油吧!拯救我们人类就靠你们了!
         timg.jpg

5 个回复

倒序浏览
当当当当~
回复 使用道具 举报
嘿嘿嘿嘿~
回复 使用道具 举报
这是今年课改的基础班总纲?
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
shuaiqijie 发表于 2017-6-4 22:33
这是今年课改的基础班总纲?

对,这是摘取了新课的每天部分内容,实际学习内容比帖子里多一些
回复 使用道具 举报
有基础班的试题吗···,可不可以多来几份,全面一点的 考试怕过不了啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马