各位大虾,请大家给我指点指点:
我目前在做一个学生信息管理系统,功能有
增加、查询、修改、删除、排序、全部删除、作者信息、退出系统
由于是初学java目前做的这个项目还没有配置数据库,我想把所有学生的信息都存储在文件中,这样数据不会在增删改后下次打开后没有保存丢失了,就是想给他一个保存地。
请问各位,我该怎么做?
感激不尽

解决方案 »

  1.   

    是我的源程序,由于初步设计到存储问题,请多多指教
    package com.action;
    import java.util.*;
    import java.io.*;
    class Student
    {
    String stu_num;
    String stu_name;
    int stu_score;
    String stu_sex;
    }class Manager
    {
    Student[] st=new Student[20];

      //*****************************************************************************欢迎界面
    public  void wellcome()
    {
    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: 打印学生信息");
    System.out.println("                         7: 删除全部学生信息");
    System.out.println("                         8: 作者信息");
    System.out.println("                         9: 退出系统");
    System.out.println();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

    }   //***********************************************************************************
    public int count_stu()//统计学生的个数
    {
    int count=0;
    for(int i=0;i<20;i++)
    {
    if(st[i].stu_num!=null)

    count++; 
    }
    } return count;
    }
      //*********************************************************************************** public  void add_Student(String num,String name,String sex,int score) //1 初始化
    {  
    int count=count_stu();
    st[count].stu_num=num;
    st[count].stu_name=name;
    st[count].stu_sex=sex;
    st[count].stu_score=score;
    //System.out.println(st[count].stu_num+"      "+st[count].stu_name+"     "+st[count].stu_sex+"     "+st[count].stu_score);
    /*
    for (int i=0;i<count;i++ )
    {
    System.out.println(st[i].stu_num+"      "+st[i].stu_name+"     "+st[i].stu_sex+"     "+st[i].stu_score);
    }
    */
    }
      //*********************************************************************************


    public  void add_Student_Message() //1 增加学生信息
    {  
    boolean flag=true;
    String yadd;
    System.out.println("确认要添加学生信息吗?(y/n)");
    BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
    try
    {
    yadd=keyin.readLine();
    while (yadd.equals("y")||yadd.equals("n"))
    {
    if(yadd.equals("y"))
    {  
    try
    {
    System.out.println("请输入要添加学生的学号:");
    String num=keyin.readLine();
    int count=count_stu();
    //int n=Integer.parseInt(num);
    for(int i=0;i<count;i++)
    {
    if(!(st[i].stu_num.equals(num)))
    {
    flag=true;
    }
    else
    {
    flag=false;
    break;
    }
    }
    //System.out.println("flag为"+flag);
    if(flag==true)
    {
    System.out.println("请输入添加学生的姓名:");
    String name=keyin.readLine(); System.out.println("请输入添加学生的姓别:");
    String sex=keyin.readLine();

    System.out.println("请输入添加学生的成绩:");

    int score=Integer.parseInt(keyin.readLine());
    add_Student(num,name,sex,score);
    System.out.println("学号     姓名     姓别     成绩");
    System.out.println(st[count].stu_num+"      "+st[count].stu_name+"     "+st[count].stu_sex+"     "+st[count].stu_score);//增加一个学生后,i由count-1变成了count。
    System.out.println("学生信息添加成功!");
    } if(flag==false)
    {
    System.out.println("学号重复!");
    }

    }
    catch(NumberFormatException e)
    {
     e.printStackTrace();
     System.out.println("你输入的成绩格式不正确!");  
    }
    }
    else
    {
    System.out.println("不添加学生信息!");
    break;
    } System.out.println("确认还需要添加学生信息吗?(y/n)");
    yadd=keyin.readLine();
    }
     
    }

    catch(Exception e)
    {
     e.printStackTrace();
    }
    int count=count_stu();
    System.out.println("添加学生信息后,全部学生信息为:");
    for (int i=0;i<count;i++ )//打印所有学生信息
    {
    System.out.println(st[i].stu_num+"      "+st[i].stu_name+"     "+st[i].stu_sex+"     "+st[i].stu_score);
    }

    author_Message();
     
    }

    //************************************************************************************

    public void list_Student_Message() //2 查询学生信息
    {      
    boolean flag=true;
    String input;
    String in;
    System.out.println("确认要查询学生信息吗?(y/n)");

    BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
    try
    {
    input=keyin.readLine();
    while( input.equals("y")||input.equals("n"))
    {  
    if(input.equals("y"))
    {
    int count=count_stu();
    System.out.println("请输入学生学号:");
    in=keyin.readLine();

    for (int i=0;i<count;i++ )//判断输入的学号是否存在
    {  
    if(st[i].stu_num.equals(in))
    {
    flag=true;
    break;
    }
    else
    {
    flag=false;
    }
    }
    //System.out.println("flag为"+flag); if(flag==true)
    {
    int h=Integer.parseInt(in);
    System.out.println(h+"号学生信息为:");
    System.out.println(st[h-1].stu_num+"      "+st[h-1].stu_name+"     "+st[h-1].stu_sex+"     "+st[h-1].stu_score);
    }
    else if(flag==false)
    {
    System.out.println("输入学号不存在!");
    }      }
       else if(input.equals("n"))
       {
    System.out.println("不查询学生信息!");
    break;
       } System.out.println("确认还需要查询学生信息吗?(y/n)");
    input=keyin.readLine();
    }
    } catch(Exception e)
    {
     e.printStackTrace();
    } author_Message();
    }//***************************************************************************
    public void delete_Student_Message()//3 删除学生信息
    {      
    boolean flag=true;
    String input;
    String in;
    System.out.println("确认要删除学生信息吗?(y/n)");

    BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
    try
    {
    input=keyin.readLine();
    while( input.equals("y")||input.equals("n"))
    {  
    if(input.equals("y"))
    {
    System.out.println("请输入要删除学生的学号:");
    in=keyin.readLine();
    int count=count_stu();
    for (int i=0;i<count;i++ )//判断输入的学号是否存在
    {  
    if(st[i].stu_num.equals(in))
    {
    flag=true;
    break;
    }
    else
    {
    flag=false;
    }
    }
    if(flag==true)

    if(!(in.equals(st[count-1].stu_num)))
    {
    int c=Integer.parseInt(in);
    for (int i=c-1;i<count-1;i++ )
    {  
    st[i]=st[i+1];
    }
    count=count-1; } if(in.equals(st[count].stu_num))
    {
    st[count].stu_num=null;
    count=count-1;
    } System.out.println(in+"号学生信息删除成功"); }
    if(flag==false)
    {
    System.out.println("此学号的学生信息不存在!");
    } }
    else if(input.equals("n"))
    {
    System.out.println("不删除学生信息!");
    break;
    } System.out.println("确认还需要删除学生信息吗?(y/n)");
    input=keyin.readLine();
    } //删除学生信息后,打印全部学生信息
    int count=count_stu();
    System.out.println("删除学生信息后,打印全部学生信息:");
    for (int i=0;i<count-1;i++ )//打印所有学生信息
    {
    System.out.println(st[i].stu_num+"      "+st[i].stu_name+"     "+st[i].stu_sex+"     "+st[i].stu_score);
    }
    } catch(Exception e)
    {
    e.printStackTrace();
    }
    author_Message(); }//*************************************************************************** public void modify_Student_Message()//4 修改学生信息
    {
    boolean flag=true;
    int k=0;
    String input;
    System.out.println("确认要对学生信息进行修改吗?(y/n)");
    BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
    try
    {  
    input=keyin.readLine();
    while( input.equals("y")||input.equals("n"))

    if(input.equals("y"))
    {      
    int count=count_stu();
    System.out.println("请输入要修改学生信息的学号:");
    String number=keyin.readLine();
    for (int i=0;i<count;i++ )
    {  
    if((st[i].stu_num).equals(number))
    {
    flag=true;
    k=i;
    break;
    }
    else
    {
    flag=false;
    }
    }
    if(flag==true)
    {
    System.out.println("请输入该学生修改后的成绩");
    int sscore=Integer.parseInt(keyin.readLine());
    st[k].stu_score=sscore;
    System.out.println("学号     姓名     姓别     成绩");
    System.out.println(st[k].stu_num+"      "+st[k].stu_name+"     "+st[k].stu_sex+"     "+st[k].stu_score);




    }
    if(flag==false)
    {
    System.out.println("该学号学生信息不存在!");

    }
    }
    if(input.equals("n"))
    {
    System.out.println("不修改学生成绩!");break;
    } System.out.println("确认还需要修改学生信息吗?(y/n)");
    input=keyin.readLine();
    } //修改完成后打印全部学生信息,进行查看
    int count=count_stu();
    System.out.println("修改学生成绩后,打印全部学生信息:");
    for (int i=0;i<count;i++ )//打印所有学生信息
    {
    System.out.println(st[i].stu_num+"      "+st[i].stu_name+"     "+st[i].stu_sex+"     "+st[i].stu_score);
    }
    } catch(Exception e)
    {
     e.printStackTrace();

    }
    author_Message();
    }
      

  2.   

    //*************************************************************************** public void order_Student_Message()//5 对学生进行排序(按成绩进行排序)
    {
    String input;
    System.out.println("确认要对学生信息进行成绩排序吗?(y/n)");
    BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
    try
    {  
    input=keyin.readLine();
    if(input.equals("y"))
    {
    int count=count_stu();
    for(int time=0;time<count-1;time++)
    {
    for(int i=time+1;i<count;i++)
    {
    if(st[time].stu_score<st[i].stu_score)

    Student temp = new Student();
    temp=st[time];
    st[time]=st[i];
    st[i]=temp;
    }
    }
    } System.out.println("按成绩排序后的结果为:");
    for (int i=0;i<count;i++ )//打印所有学生信息
    {     
    System.out.println(st[i].stu_num+"      "+st[i].stu_name+"     "+st[i].stu_sex+"     "+st[i].stu_score);  
    } } if(input.equals("n"))
     {
    System.out.println("不排序!");
     } else if(!(input.equals("y"))&&!(input.equals("n")))
    {
    System.out.println("输入有误!");
     }
    }
    catch(Exception e)
    {
     e.printStackTrace();
    } author_Message(); } //***************************************************************************
    public void print_Student_Message()//6 打印学生信息
    {
    boolean flag=true;
    String input;
    System.out.println("确认要打印学生信息吗?(y/n)");
    BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
    try
    {
    input=keyin.readLine();
    if(input.equals("y"))
    {
    int count=count_stu();
    for(int i=0;i<count;i++)
    {
    System.out.println(st[i].stu_num+"      "+st[i].stu_name+"     "+st[i].stu_sex+"     "+st[i].stu_score);
    }
    /*
    if(flag==false)
    {
    System.out.println("学生信息已全部删除,无学生信息.");
    }
    */
    }
    if(input.equals("n"))
    {
    System.out.println("不打印!");
    } }
    catch(Exception e)
    {
    e.printStackTrace();
    } author_Message();

    }
    //*************************************************************************** public void delete_All_Student_Message() //7 全部删除学生信息
    {
    boolean flag=true;
    String input;
    System.out.println("请确认要全部删除学生信息吗? 请输入y/n");
    BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
    try
    {
    input=keyin.readLine();
    int count = count_stu();
    if(input.equals("y"))
    {
    for(int i=0;i<count;i++)
    {
    st[i].stu_num=null;
    } System.out.println("学生信息全部删除");
    for(int i=0;i<count;i++)//全部删除后打印学生信息
    {
    if(st[i].stu_num!=null)
    {
    System.out.println(st[i].stu_num+"      "+st[i].stu_name+"     "+st[i].stu_sex+"     "+st[i].stu_score);
    }
    else
    {
    flag=false;
    }
    } if(flag==false)
    {
    System.out.println("已无学生信息!");
    }

    }
    else
    System.out.println("不删除全部学生信息");
    } catch (Exception e)
    {
    e.printStackTrace();
    } author_Message();
    }
    //***************************************************************************
    public void author_Message() //8 作者信息
    {
    System.out.println();
    System.out.println(" ------------------author:chengyi----------------------------");
    System.out.println();
    }
    //***************************************************************************
    public void exit_System() //9 退出系统
    {
    Scanner sc = new Scanner(System.in);//接收从键盘输入的数字
    System.out.println("退出系统请输1,否则请输入0:");
    int i = sc.nextInt();
    if(i==1)
    {
    System.exit(1);
    }
    else
    {
    System.out.println("不退出系统!");
    }
    }
    }
    //***************************************************************************public class  StudentManager
    {
    public static void main(String[] args) 
    {
    //Student ch=new Student();
    int con=1;
    Manager mm=new Manager();
    for(int i=0;i<20;i++)
    {
    mm.st[i]=new Student();
    }
    //初始化一组数据
    mm.add_Student("1","yiyi","female",76);
    mm.add_Student("2","erer","male",91);
    mm.add_Student("3","sany","female",68);
    mm.add_Student("4","sisi","male",100);
    mm.add_Student("5","wuwu","female",88);
    mm.add_Student("6","liuliu","male",60);
    mm.add_Student("7","qiqi","female",79);
    mm.add_Student("8","baba","female",79);
    mm.add_Student("9","jiujiu","male",99); while(con==1)//设置死循环,只有唯一的退出条件
    {
    try
    {
    mm.wellcome();
    System.out.print("请输入数字1 ~ 9,进行您需要的操作:");

    Scanner sc = new Scanner(System.in);//接收从键盘输入的数字
    int i = sc.nextInt();//将输入的数字赋值给i

    switch (i)
    {
    case 1:
    System.out.println("添加学生信息");
    mm.add_Student_Message(); 
    break;
    //mm.add_Student();  break;

    case 2:
    mm.list_Student_Message();
    break; case 3:
    mm.delete_Student_Message();
    break; case 4:
    mm.modify_Student_Message();
    break; case 5:
    mm.order_Student_Message();
    break;

    case 6:
    mm.print_Student_Message();
    break; case 7:
    mm.delete_All_Student_Message();
    break;
    case 8:
    mm.author_Message();
    break; case 9:
    mm.exit_System();
    break;

    default:
    System.out.println("输入数字无效!");
    }

    }
    catch(Exception e)
    {
    e.printStackTrace();
    }

    }


    }}
      

  3.   

    可以将学生信息从文件中全部读到List或者Map中,然后对List或Map做增删改操作,再将List或Map重新写到txt文件中.
      

  4.   

    刚学java时,也用文件存储过学生信息,界面是用AWT+SWING,做的,如:怎么操作请按数字几之类的,现在想想真是太落伍了(不过对文件的操作熟悉了一些),这种操作方式,效率不怎么高。建议去学学数据库方面的东西吧,实现一个简单的增删改查不难。