学生管理系统 简单 文件输入输出流

package Demo;
//能基本实现学生信息的增删改查,并含有以下功能:

1、将数组存储改为文本文件存取方式。


2、数据查询功能可以按照记录的顺序号查询。


3、修改学生信息可以增加指定学生记录的某项内容。


          1、修改姓名;2、修改年龄;3、修改性别;4、修改成绩;提示输入学生学号,再输入相关的修改内容。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;

public class StudentMangager1 {
    static int n=0;
    static Student[] a1=null;
    public static void main(String[]args) throws IOException
    {    
        n=4;
        a1=new Student[n];
        a1[0]=new  Student("20153307","wzw",18,true,100);
        a1[1]=new  Student("20153306","wz",18,true,99);
        a1[2]=new  Student("20153304","w",19,true,95);
        a1[3]=new  Student("20153303","wzwh",19,true,50);
        
        try{
            PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
            write(a1,out);
            out.close();
            BufferedReader in=new BufferedReader(new FileReader("newFile.txt"));
            Student[] a2=read(in);
            in.close();
            for(Student e:a2)
                System.out.println(e);
        }
        catch(IOException exception)
        {
            exception.printStackTrace();
        }
        char ch='y';
        while(ch=='y')
        {
            
            System.out.println("***************************************************************");
            System.out.println("		石家庄铁道大学软件工程系学生信息管理系统 ");
            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("				6、 退出:");
            Scanner scan=new Scanner(System.in);
            int sc5=scan.nextInt();
            switch(sc5)
            {
            case 1:
            {
                showStudent();
                break;
            }
            case 2:
            {
                System.out.println("请输入需要添加的学生信息");
                String sc=scan.next();
                String sc1=scan.next();
                int sc2=scan.nextInt();
                boolean sc3=scan.nextBoolean();
                double sc4=scan.nextDouble();
                
                addStudent(sc,sc1,sc2,sc3,sc4);
                break;
            }
            case 3:
            {
                System.out.println("请输入需要删除的的学生的学号");
                String sc=scan.next();
                deleteStudent(sc);
                break;
            }
            case 4:
            {
                System.out.println("请输入需要修改的方式:1:全部修改,2修改指定内容");
                int sc6=scan.nextInt();
                if(sc6==1)
                {
                    System.out.println("请输入要修改的学生信息");
                    String sc=scan.next();
                    String sc1=scan.next();
                    int sc2=scan.nextInt();
                    boolean sc3=scan.nextBoolean();
                    double sc4=scan.nextDouble();
                    updateStudent(sc,sc1,sc2,sc3,sc4);
                }
                else
                {
                    updateStudent();
                }
                break;
            }
            case 5:
            {
                System.out.println("请输入要查询的方式:1:按顺序号查询,2按学号查询");
                int sc=scan.nextInt();
                if(sc==1)
                {
                    System.out.println("请输入要查询的顺序号");
                    int sc2=scan.nextInt();
                    selectStudent1(sc2);
                }
                else
                {
                    System.out.println("请输入需要查询的学生的学号");
                    String sc1=scan.next();
                    selectStudent(sc1);
                }
                
                break;
            }
            case 6:
            {
                ch='x';
                break;
            }
            }
        }
    }
    
    public static void write(Student[] a,PrintWriter out)
    {
         
              // write number of employees
              out.println(a.length);

              for (Student e : a)
                 e.writeStudent(out);
           
    }
    public static Student[] read(BufferedReader in)throws IOException
    {
        int n=Integer.parseInt(in.readLine());
        for(int i=0;i<n;i++)
        {
            a1[i]=new Student();
            a1[i].readStudent(in);
        }
        return a1;
    }
    
    static void showStudent() throws IOException
    {
        BufferedReader in=new BufferedReader(new FileReader("newFile.txt"));
        Student[] a2=read(in);
        in.close();
        for(int i=0;i<n;i++)
        System.out.println(a1[i].getStunumber()+a1[i].getName()+a1[i].getAge()+a1[i].getSex()+a1[i].getScore());
        
    }
    static void addStudent(String nu,String n1,int s1,boolean b,double s) throws IOException
    {
        
        int m=0;
        for(int i=0;i<n;i++)
        {
            if(a1[i].getStunumber().equals(nu))
            {
                System.out.println("已存在这个人");
                m++;
            }
        }
        if(m==0)
        {
            Student[]a2=new Student[n+1];
            for(int i=0;i<n;i++)
            {
                a2[i]=a1[i];
            }
            n++;
            a1=new Student[n];
            a2[n-1]=new Student(nu,n1,s1,b,s);
            PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
            write(a2,out);
            out.close();
            System.out.println("添加成功");
        }
    }
    static void deleteStudent(String nu) throws IOException
    {

        int m=0,z=0;
        for(int i=0;i<n;i++)
        {
            if(a1[i].getStunumber().equals(nu))
            {
                z=i;
                m++;
                System.out.println("删除成功");
            }
        }
        if(m==0)
        {
            System.out.println("不存在这个人");
        }
        else{
            Student[]a2=new Student[n-1];
            for(int j=z;j<n-1;j++)
            {
                a1[j]=a1[j+1];
            }
            n--;
            for(int i1=0;i1<n;i1++)
            {
                a2[i1]=a1[i1];
            }
            a1=new Student[n];
            PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
            write(a2,out);
            out.close();
        }
    }
    static void updateStudent(String nu,String n1,int s1,boolean b,double s) throws IOException
    {
        int m=0,z = 0;
        for(int i=0;i<n;i++)
        {
            if(a1[i].getStunumber().equals(nu))
            {
                z=i;
                m++;
                
            }
        }
        if(m==0)
        {
            System.out.println("不存在这个人");
        }
        else{
            a1[z]=new Student(nu,n1,s1,b,s);
            System.out.println("修改成功");
            Student[] a2=new Student[n];
            for(int i1=0;i1<n;i1++)
            {
                a2[i1]=a1[i1];
            }
            a1=new Student[n];
            PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
            write(a2,out);
            out.close();
        }
    }
    static void updateStudent() throws IOException{
        System.out.println("请选择修改的类型:1、修改姓名;2、修改年龄;3、修改性别;4、修改成绩;");
        Scanner scan=new Scanner(System.in);
        int m=0,z=0;
        int sc=scan.nextInt();
        if(sc==1)
        {
            System.out.println("请先输入需要修改人的学号");
            String sc1=scan.next();
            for(int i=0;i<n;i++)
            {
                if(sc1.equals(a1[i].getStunumber()))
                {
                    m++;
                    z=i;
                }
            }
            if(m==0)
            {
                System.out.println("修改失败,不存在这个人");
            }
            else
            {
                System.out.println("请输入新的姓名");
                String sc2=scan.next();
                a1[z].setName(sc2);
                System.out.println("修改成功");
                Student []a2=new Student[n];
                for(int i=0;i<n;i++)
                {
                    a2[i]=a1[i];
                }
                a1=new Student[n];
                PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
                write(a2,out);
                out.close();
            }
        }
        else if(sc==2)
        {
            System.out.println("请先输入需要修改人的学号");
            String sc1=scan.next();
            for(int i=0;i<n;i++)
            {
                if(sc1.equals(a1[i].getStunumber()))
                {
                    m++;
                    z=i;
                }
            }
            if(m==0)
            {
                System.out.println("修改失败,不存在这个人");
            }
            else
            {
                System.out.println("请输入新的年龄");
                int sc2=scan.nextInt();
                a1[z].setAge(sc2);
                System.out.println("修改成功");
                Student []a2=new Student[n];
                for(int i=0;i<n;i++)
                {
                    a2[i]=a1[i];
                }
                a1=new Student[n];
                PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
                write(a2,out);
                out.close();
            }
        }
        else if(sc==3)
        {

            System.out.println("请先输入需要修改人的学号");
            String sc1=scan.next();
            for(int i=0;i<n;i++)
            {
                if(sc1.equals(a1[i].getStunumber()))
                {
                    m++;
                    z=i;
                }
            }
            if(m==0)
            {
                System.out.println("修改失败,不存在这个人");
            }
            else
            {
                System.out.println("请输入新的性别");
                Boolean sc2=scan.nextBoolean();
                a1[z].setSex(sc2);
                System.out.println("修改成功");
                Student []a2=new Student[n];
                for(int i=0;i<n;i++)
                {
                    a2[i]=a1[i];
                }
                a1=new Student[n];
                PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
                write(a2,out);
                out.close();
            }
        }
        else{

            System.out.println("请先输入需要修改人的学号");
            String sc1=scan.next();
            for(int i=0;i<n;i++)
            {
                if(sc1.equals(a1[i].getStunumber()))
                {
                    m++;
                    z=i;
                }
            }
            if(m==0)
            {
                System.out.println("修改失败,不存在这个人");
            }
            else
            {
                System.out.println("请输入新的成绩");
                double sc2=scan.nextDouble();
                a1[z].setScore(sc2);
                System.out.println("修改成功");
                Student []a2=new Student[n];
                for(int i=0;i<n;i++)
                {
                    a2[i]=a1[i];
                }
                a1=new Student[n];
                PrintWriter out =new PrintWriter(new FileWriter("newFile.txt"));
                write(a2,out);
                out.close();
            }
        }
    }
    static void selectStudent(String nu)
    {
        int m=0,z=0;
        for(int i=0;i<n;i++)
        {
            if(a1[i].getStunumber().equals(nu))
            {
                z=i;
                m++;
            }
        }
        if(m==0)
        {
            System.out.println("查询失败,不存在这个人");
        }
        else{

            System.out.println("查询成功");
            System.out.println(a1[z].getStunumber()+a1[z].getName()+a1[z].getAge()+a1[z].getSex()+a1[z].getScore());
        }
    }
    static void selectStudent1(int z){
        if(z>n-1)
        {
            System.out.println("查询失败,不存在这个人");
        }
        else{
            z=z-1;
            System.out.println(a1[z].getStunumber()+a1[z].getName()+a1[z].getAge()+a1[z].getSex()+a1[z].getScore());
        }
    }
}
class Student {
    public Student(){}
    public String toString()
    {
        return getClass().getName()
                +"[stunumber="+stunumber
                +",name="+name
                +",age="+age
                +",sex="+sex
                +",score="+score
                +"]";
    }
    private String stunumber;
    private String name;
    private int age;
    private boolean sex;
    private double score;
    void setStunumber(String t){
        stunumber = t;
    }
    public void writeStudent(PrintWriter out) {
        // TODO Auto-generated method stub
        out.println(stunumber+"|"+name+"|"+age+"|"+sex+"|"+score);
    }
    public void readStudent(BufferedReader in)throws IOException
    {
        String s=in.readLine();
        StringTokenizer t = new StringTokenizer(s, "|");
        stunumber=t.nextToken();
        name=t.nextToken();
        age=Integer.parseInt(t.nextToken());
        sex=Boolean.parseBoolean(t.nextToken());
        score=Double.parseDouble(t.nextToken());
    }
    String getStunumber(){
        return stunumber;
    }
    String getName(){
        return name;
    }
    int getAge(){
        return age;
    }
    double getScore(){
        return score;
    }
    boolean getSex(){
        return sex;
    }
    void setName(String t){
        name = t;
    }
    
    void setAge(int t){
        age = t;
    }
    
    void setSex(boolean t){
        sex = t;
    }
    
    void setScore(double t){
        score = t;
    }
    
    
    Student(String anumber,String aname,int aage,boolean asex,double ascore){
        stunumber = anumber;
        name = aname;
        age = aage;
        sex = asex;
        score = ascore;
    }
}