黑马程序员技术交流社区

标题: 简单学生管理系统,实现了学生的增删改查 [打印本页]

作者: 天涯丿过客    时间: 2017-3-25 18:03
标题: 简单学生管理系统,实现了学生的增删改查
简单学生管理系统,实现了学生的增删改查,使用了简单的IO流知识,黑马基础班的课程,进行了简单的改进.
[Java] 纯文本查看 复制代码
package com.itheima_01;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

/*
* /*
* 这是我的学生管理系统的主类
*
* 步骤如下:
* A:定义学生类
* B:学生管理系统的主界面的代码编写
* C:学生管理系统的查看所有学生的代码编写
* D:学生管理系统的添加学生的代码编写
* E:学生管理系统的删除学生的代码编写
* F:学生管理系统的修改学生的代码编写
*/
public class StudentManager {
        public static void main(String[] args) throws IOException {
                String fileName="student.txt";
               
                while(true){
                        //这是学生管理系统的主界面
                        System.out.println("--------欢迎来到学生管理系统--------");
                        System.out.println("1 查看所有学生");
                        System.out.println("2 添加学生");
                        System.out.println("3 删除学生");
                        System.out.println("4 修改学生");
                        System.out.println("5 退出");
                        System.out.println("请输入你的选择:");
                        //创建键盘录入对象
                        Scanner sc = new Scanner(System.in);
                        String choiceString = sc.nextLine();
                        //用switch语句实现选择
                        switch(choiceString) {
                        case "1":
                                //查看所有学生
                                findAllStudent(fileName);
                                break;
                        case "2":
                                //添加学生
                                addStudent(fileName);
                                break;
                        case "3":
                                //删除学生
                                deleteStudent(fileName);
                                break;
                        case "4":
                                //修改学生
                                updateStudent(fileName);
                                break;
                        case "5":
                        default:
                                System.out.println("谢谢你的使用");
                                System.exit(0); //JVM退出
                                break;
                        }

                }
        }
       
        //从文件读取数据到存储到集合
        public static void readData(String fileName, ArrayList<Student> array) throws IOException{
                //创建输入缓冲流对象
                BufferedReader br=new BufferedReader(new FileReader(fileName));
               
                String line;
                //获得每一行的字符串,赋值给line
                while((line=br.readLine())!=null){
                        //截取字符数组
                        String [] str=line.split(",");
                        //创建学生对象接收数据
                        Student s=new Student();
                        s.setId(str[0]);
                        s.setName(str[1]);
                        s.setAge(str[2]);
                        s.setAdress(str[3]);
                        //将获取到的数据存储到集合中
                        array.add(s);
                }
                br.close();
        }
       
        //把集合中的数据存储到文件中
        public static void writeData(String fileName, ArrayList<Student> array) throws IOException{
                //创建输出缓冲流对象
                BufferedWriter bw=new BufferedWriter(new FileWriter(fileName));
                //遍历集合,获取到数据
                for(int x=0;x<array.size();x++){
                        //将集合中的每一行数据赋值给学生对象
                        Student s=array.get(x);
                       
                        //创建StringBuilder对象用来拼接字符串
                        StringBuilder sb= new StringBuilder();
                        sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAdress());
                        //写入文件中
                        bw.write(sb.toString());
                        bw.newLine();
                        bw.flush();
                }
                        bw.close();
        }
       
        //查看所有学生的代码编写
        public static void findAllStudent(String fileName) throws IOException{
                //首先创建集合对象
                ArrayList<Student> array=new ArrayList<>();
                //获取到学生信息
                readData(fileName,array);
               
                //判断是否有数据
                if(array.size()==0){
                        System.out.println("当前没有学生信息,请重新您的选择");
                        return;
                }
                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\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAdress());
                }
               
               
        }
       
        //添加学生代码编码
        public static void addStudent(String fileName) throws IOException{
                //创建集合对象
                ArrayList<Student> array=new ArrayList<>();
                //从文件中读取数据
                readData(fileName, array);
                //创建键盘录入对象
                Scanner sc= new Scanner(System.in);
                //定义字符串类型的id,后面也需要使用,所以定义到循环外面
                String id;
                while(true){
                        System.out.println("请输入新的学生学号:");
                        id=sc.nextLine();
                        //定义布尔那类型的变量,用来判断
                        boolean flag=false;
                       
                        //判断学号是否存在
                        //遍历集合获取元素
                        for(int x=0;x<array.size();x++){
                                //定义学生对象,获取到每一个学生
                                Student s=array.get(x);
                                //判断这个输入的id在学生对象中是否存在
                                if(s.getId().equals(id)){
                                        flag=true;
                                        break;//跳出for循环
                                }
                        }
                        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.setAdress(address);
               
                //将学生对象存储到集合
                array.add(s);
                //将集合中的重新存储到文件中
                writeData(fileName, array);
                System.out.println("添加成功!");
        }
       
        //删除学生代码的编写
        public static void deleteStudent(String fileName) throws IOException{
                //首先定义一个集合
                ArrayList<Student> array=new ArrayList<>();
                //读取出学生信息
                readData(fileName, array);
               
                while(true){
                //创建键盘录入对象
                Scanner sc=new Scanner(System.in);
                System.out.println("请输入您要删除的学号:");
                String id=sc.nextLine();
                //定义一个索引
                        int index=-1;
                       
                        //遍历集合获取到元素
                        for(int x=0;x<array.size();x++){
                                Student s=array.get(x);
                                if(s.getId().equals(id)){
                                        index=x;
                                        break;
                                }
                        }
                        if(index==-1){
                                System.out.println("您所需要删除的学员信息不存在,请重新您的选择!");
                        }else{
                                array.remove(index);
                                //把集合中的文件重新写回到文件
                                writeData(fileName, array);
                                System.out.println("删除学生成功!");
                                break;
                        }
                       
        }
               
}
       
        //修改学生代码的编写
        public static void updateStudent(String fileName) throws IOException{
                //创建集合对象
                ArrayList<Student> array=new ArrayList<>();
                //读取文件
                readData(fileName, array);
                //定义索引
                int index=-1;
                //创建键盘输入对象
                Scanner sc=new Scanner(System.in);
                String id;
               
                while(true){
                System.out.println("请输入您要修改的学生ID:");
                        id=sc.nextLine();
                //遍历集合获取元素
                for(int x=0;x<array.size();x++){
                        Student s=array.get(x);
                        if(s.getId().equals(id)){
                                index=x;
                                break;
                        }       
                }
               
               
                if(index==-1){
                        System.out.println("您输入的不存在,请重新您的选择!");
                }else{
                        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.setAdress(address);
                       
                        //修改集合中的学生对象
                        array.set(index, s);
                        //将集合写入到文件中
                        writeData(fileName, array);
                        //给出提示
                        System.out.println("修改成功!");
                        break;
                }
        }
}

}





作者: 飞扬的代码    时间: 2017-3-25 18:06
牛逼牛逼

作者: 若梦蓝山悠长    时间: 2017-3-25 20:00
楼主辛苦了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2