java学生管理系统,使用文件存储数据。初始版

 1、student类,以字符形式储存数据。

public class student {
    String code;
    String name;
    String sex;
    String age;
    String scoreChinese;
    String scoreMath;
    String scoreEnglish;
}

2、 Main类,初始化对象,打开menu界面。

class Main {
    public static void main(String[] args) throws IOException {
        //建立学生管理系统
        Manage m1 = new Manage();
        m1.readFile();
        while (m1.flag) {
            m1.menu();
        }
        System.out.println("您已经退出系统");
    }
}

3、Judge类,对输入的数据格式进行判断。

class Judge {//判断学生数量

    static boolean judgeNum(String str) {
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] < 48 | ch[i] > 57)
                return false;
        }

        if (Integer.parseInt(str) < 0 | Integer.parseInt(str) > Manage.N - Manage.n)
            return false;
        return true;
    }

    static boolean judgeCode(String str) {
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] < 48 | ch[i] > 57) {
                return false;
            }
        }
        for (int i = 0; i < Manage.n; i++) {
            if (str.equals(Manage.getCode(i)))
                return false;
        }
        return true;
    }

    static boolean judgeAge(String str) {//判断年龄
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] < 48 | ch[i] > 57) {
                return false;
            }
        }
        if (Integer.parseInt(str) < 0 | Integer.parseInt(str) > 100)
            return false;
        return true;
    }

    static boolean judgeScore(String str) {//判断分数
        char[] ch = str.toCharArray();
        if (ch[0] == 46)
            return false;
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] != 46) {
                if (ch[i] < 48 | ch[i] > 57)
                    return false;
            }
        }
        return true;
    }

    static boolean judgeSex(String str) {//判断性别
        if (str.equals("F") | str.equals("f") | str.equals("M") | str.equals("m"))
            return true;
        return false;
    }
}

4、功能类,提供主要功能

void meau();菜单功能,用户可以选择一项进行操作。

void help();帮助菜单,为用户提供简单的使用方法。

void insert();插入学生信息,并将学生信息存入文档。

void modify();修改学生信息,并将学生信息存入文档。

void display();显示功能,显示当前已有学生的信息。

void del();删除功能,按照学号或者姓名可以删除,若姓名相等,则删 除学号靠前的学生信息。

void seek();查找功能。

void sort();排序工能,将学生对象排序,并按学号升序重新将信息写入文件。

void readFile();读档功能,读取已有学生的信息。

TIPS: 本人能力有限,对文件操作不够了解故在文件读取函数中采用了清空原有文件数据,简化操作,如需更改请更改void readFile();

class Manage {
    boolean flag = true;//运行开始或者结束标志变量
    static int N = 100;
    static student[] stu = new student[N];
    static int n = 0;
    int m = 0;
    Scanner sc = new Scanner(System.in);

    void menu() throws IOException {
        String num;
        System.out.println("*************************************************");
        System.out.println("             *    学生管理系统   *");
        System.out.println("             *    系统功能菜单   *");
        System.out.println("*************************************************");
        System.out.println("0.系统帮助及说明             1.刷新学生信息");
        System.out.println("2.查询学生信息               3.修改学生信息");
        System.out.println("4.增加学生信息               5.按学号删除信息");
        System.out.println("6.显示当前信息               7.保存当前学生信息");
        System.out.println("8.退出系统");
        System.out.println("*************************************************");
        System.out.println("请选择菜单编号:");
        num = sc.next();
        switch (num) {
            case "0":
                help();
                break;
            case "2":
                seek();
                break;
            case "3":
                modify();
                break;
            case "4":
                insert();
                break;
            case "5":
                del();
                break;
            case "6":
                display();
                break;
            case "8":
                flag = false;
                sc.close();
                break;
            default:
                System.out.println("请重新在 0--8 之间选择");
        }
    }

    void help() {
        System.out.println("0.欢迎进入系统帮助界面!");
        System.out.println("1.初次进入系统后,请选择增加学生信息;");
        System.out.println("2.按照菜单提示键入数字代号;");
        System.out.println("3.增加学生信息后,切记保存;");
        System.out.println("4.注意!本系统仅能对输入信息进行更改保存,打开系统会初始化原数据文件内容");
        System.out.println("5.谢谢您的使用!");
    }

    void insert() throws IOException {
        int j = n;
        System.out.print("请输入待增加学生数;");
        String str = sc.next();
        if (!Judge.judgeNum(str)) {
            System.out.println("输入数据有误请重新输入");
            return;
        }
        m = Integer.parseInt(str);
        for (int i = j; i < j + m; i++) {
            stu[i] = new student();
        }
        do { //输入学号判断
            System.out.println("请输入第" + (j - n + 1) + "个学生的学号");
            stu[j].code = sc.next();
            if (!Judge.judgeCode(stu[j].code)) {
                System.out.println("输入有误或者学号已存在,请重新输入该学生信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的姓名");
            stu[j].name = sc.next();
            System.out.println("请输入第" + (j - n + 1) + "个学生的年龄");
            stu[j].age = sc.next();
            if (!Judge.judgeAge(stu[j].age)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的性别,男生使用F/f,女生使用M/m");
            stu[j].sex = sc.next();
            if (!Judge.judgeSex(stu[j].sex)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的语文成绩");
            stu[j].scoreChinese = sc.next();
            if (!Judge.judgeScore(stu[j].scoreChinese)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的英语成绩");
            stu[j].scoreEnglish = sc.next();
            if (!Judge.judgeScore(stu[j].scoreEnglish)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的数学成绩");
            stu[j].scoreMath = sc.next();
            if (!Judge.judgeScore(stu[j].scoreMath)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            //将信息存入文档
            FileWriter fw = new FileWriter("student.txt", true);
            String strTemp = (stu[j].code + " " + stu[j].name + " "
                    + stu[j].age + " " + stu[j].sex + " " + stu[j].scoreChinese + " " +
                    stu[j].scoreEnglish + " " + stu[j].scoreMath + " \r\n");
            fw.write(strTemp);
            fw.close();
            j++;
        } while (j < n + m);
        n += m;
        System.out.println("信息添加成功!");
        sort();//按学号升序进行排列
    }

    void modify() throws IOException {
        boolean flag = true;
        System.out.print("请输入要修改的学生学号:");
        String str = sc.next();
        int t;//修改学生的学生下标数值
        //需要修改的学生字符数据
        for (int i = 0; i < n; i++) {
            if (stu[i].code.equals(str)) {
                if (stu[i].code.equals(str)) {//定义str储存修改前学生的信息
                    t = i;
                    String dataOldStudent = (stu[t].code + " " + stu[t].name + " "
                            + stu[t].age + " " + stu[t].sex + " " + stu[t].scoreChinese + " " +
                            stu[t].scoreEnglish + " " + stu[t].scoreMath + " \r\n");

                    flag = false;
                    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("---------------------------------");
                    while (true) {
                        System.out.println("请选择子菜单代号");
                        String item = sc.next();
                        switch (item) {
                            case "1":
                                System.out.println("请输入新的名字:");
                                stu[i].name = sc.next();
                                break;
                            case "2":
                                System.out.println("请输入新的年龄:");
                                stu[i].age = sc.next();
                                if (!Judge.judgeAge(stu[i].age)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "3":
                                System.out.println("请输入新的性别:");
                                stu[i].sex = sc.next();
                                break;
                            case "4":
                                System.out.println("请输入新的语文成绩:");
                                stu[i].scoreChinese = sc.next();
                                if (!Judge.judgeScore(stu[i].scoreChinese)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "5":
                                System.out.println("请输入新的英语成绩:");
                                stu[i].scoreEnglish = sc.next();
                                if (!Judge.judgeScore(stu[i].scoreEnglish)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "6":
                                System.out.println("请输入新的数学成绩:");
                                stu[i].scoreMath = sc.next();
                                if (!Judge.judgeScore(stu[i].scoreMath)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "7":
                                if (!flag) {
                                    String dataNewStudent = (stu[t].code + " " + stu[t].name + " "
                                            + stu[t].age + " " + stu[t].sex + " " + stu[t].scoreChinese + " " +
                                            stu[t].scoreEnglish + " " + stu[t].scoreMath + " ");
                                    File f = new File("Student.txt");
                                    long length = f.length();
                                    FileReader fr = new FileReader("Student.txt");
                                    char[] ch = new char[(int) length];
                                    fr.read(ch);
                                    fr.close();
                                    String str1 = new String(ch);
                                    str1 = str1.replace(dataOldStudent, dataNewStudent); //进行修改操作
                                    FileWriter fw = new FileWriter("student.txt");//将新字符串写进文件
                                    fw.write(str1);
                                    fw.close();
                                }
                                return;
                            default:
                                System.out.println("请在 1--7 之间选择");
                        }
                    }
                }
            }
        }
        if (flag)
            System.out.println("该学生不在系统中");
    }

    void display() {
        System.out.println("共有" + n + "位学生信息;");
        if (n != 0) {
            System.out.println("学生学号             学生姓名   年龄   性别    语文成绩   英语成绩   数学成绩 ");
            System.out.println("---------------------------------------------------------------------------------");
            for (int i = 0; i < n; i++) {
                System.out.println(stu[i].code + " \t\t\t\t\t" + stu[i].name + " \t\t\t"
                        + stu[i].age + " \t\t" + stu[i].sex + " \t\t" + stu[i].scoreChinese + " \t\t" +
                        stu[i].scoreEnglish + " \t\t" + stu[i].scoreMath);
            }
        }
    }

    void del() throws IOException {
        System.out.println("请输入要删除学生的学号:");
        String code = sc.next();
        boolean flag = false;
        for (int i = 0; i < n; i++) {
            if (stu[i].code.equals(code)) {
                flag = true;
                String dataStudent = (stu[i].code + " " + stu[i].name + " "
                        + stu[i].age + " " + stu[i].sex + " " + stu[i].scoreChinese + " " +
                        stu[i].scoreEnglish + " " + stu[i].scoreMath);
                if (i == n - 1) {//删除最后一个同学
                    stu[i] = null;
                    n -= 1;
                } else {//删除的不是最后一个同学
                    for (int j = 1; i < n; j++) {
                        stu[j] = stu[j + 1];
                    }
                    stu[n - 1] = null;
                    n -= 1;
                }
                File f = new File("student.txt");
                long length = f.length();
                FileReader fr = new FileReader("student.txt");
                char[] ch = new char[(int) length];
                fr.read(ch);
                fr.close();
                String str = new String(ch);
                str = str.replace(dataStudent, " ");//删除操作
                FileWriter fw = new FileWriter("student.txt");//写入新文件
                fw.write(str);
                fw.close();
            }
        }
        if (flag == false)
            System.out.println("该学号不存在!");
        if (flag == true)
            System.out.println("删除成功");
    }

    void seek() {//查找算法
        int i;
        String item, code, name;
        boolean flag = false;
        System.out.println("---------------------------------------------");
        System.out.println("1.按学号查询");
        System.out.println("2.按姓名查询");
        System.out.println("3.退出本菜单");
        System.out.println("---------------------------------------------");
        while (true) {
            System.out.println("请选择子菜单编号:");
            item = sc.next();
            flag = false;
            switch (item) {
                case "1":
                    System.out.println("请输入要查询的学生的学号:");
                    code = sc.next();
                    for (i = 0; i < n; i++)
                        if (stu[i].code.equals(code)) {
                            flag = true;
                            System.out.println("学生学号             学生姓名   年龄   性别    语文成绩   英语成绩   数学成绩 ");
                            System.out.println("---------------------------------------------------------------------------------");
                            System.out.println(stu[i].code + " \t\t\t\t\t" + stu[i].name + " \t\t"
                                    + stu[i].age + " \t\t" + stu[i].sex + " \t\t" + stu[i].scoreChinese + " \t\t" +
                                    stu[i].scoreEnglish + " \t\t" + stu[i].scoreMath);
                        }
                    if (false == flag)
                        System.out.println("该学号不存在!");
                    break;
                case "2":
                    System.out.println("请输入要查询的学生的姓名:");
                    name = sc.next();
                    for (i = 0; i < n; i++)
                        if (stu[i].name.equals(name)) {
                            flag = true;
                            System.out.println("学生学号             学生姓名   年龄   性别    语文成绩   英语成绩   数学成绩 ");
                            System.out.println("---------------------------------------------------------------------------------");
                            System.out.println(stu[i].code + " \t\t\t\t\t" + stu[i].name + " \t\t"
                                    + stu[i].age + " \t\t" + stu[i].sex + " \t\t" + stu[i].scoreChinese + " \t\t" +
                                    stu[i].scoreEnglish + " \t\t" + stu[i].scoreMath);
                        }
                    if (false == flag)
                        System.out.println("该姓名不存在!");
                    break;
                case "3":
                    return;
                default:
                    System.out.println("请在 1--3 之间选择");
            }
        }
    }

    static String getCode(int i) {//Judge类中使用
        return stu[i].code;
    }

    void sort() throws IOException {
        int[] code = new int[n];
        int temp;
        student stuTemp = new student();
        for (int i = 0; i < n; i++) {
            code[i] = Integer.parseInt(stu[i].code);
        }
        for (int i = 0; i < n - 1; i++) {//使用选择排序法对学生对象进行排序
            for (int j = i + 1; j < n; j++) {
                if (code[i] > code[j]) {
                    temp = code[i];
                    code[i] = code[j];
                    code[j] = temp;
                    stuTemp = stu[i];
                    stu[i] = stu[j];
                    stu[j] = stuTemp;
                }
            }
        }

        FileWriter fw = new FileWriter("student.txt");//按学号顺序将学生信息写入文件
        for (int i = 0; i < n; i++) {
            String strTemp = (stu[i].code + " " + stu[i].name + " "
                    + stu[i].age + " " + stu[i].sex + " " + stu[i].scoreChinese + " " +
                    stu[i].scoreEnglish + " " + stu[i].scoreMath + " \r\n");
            fw.write(strTemp);
        }
        fw.close();
    }

    void readFile() throws IOException {
        File f = new File("student.txt");
        try {
            if (!f.exists()) {
                f.createNewFile();
            }
            FileWriter fileWriter = new FileWriter(f);//打开文件清空文件原有内容
            fileWriter.write("");
            fileWriter.flush();
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        int length = (int) f.length();
        if (length == 0)
            return;
        FileReader fr = new FileReader("student.txt");
        char[] ch = new char[length];
        fr.read(ch);
        fr.close();
        String str = new String(ch);

        //将字符串分割成数组并初始化
        String regex1 = "\\s{2}";
        String regex2 = "\\p{Blank}";
        String[] strArray = str.split(regex1);
        n = strArray.length;
        for (int i = 0; i < n; i++) {
            stu[i] = new student();
        }
        //初始化对象
        for (int i = 0; i < strArray.length; i++) {
            String[] strArray2 = strArray[i].split(regex2);
            stu[i].code = strArray2[0];
            stu[i].name = strArray2[1];
            stu[i].age = strArray2[2];
            stu[i].sex = strArray2[3];
            stu[i].scoreChinese = strArray2[4];
            stu[i].scoreEnglish = strArray2[5];
            stu[i].scoreMath = strArray2[6];

        }
    }
}

源代码:

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class student {
    String code;
    String name;
    String sex;
    String age;
    String scoreChinese;
    String scoreMath;
    String scoreEnglish;
}

class Main {
    public static void main(String[] args) throws IOException {
        //建立学生管理系统
        Manage m1 = new Manage();
        m1.readFile();
        while (m1.flag) {
            m1.menu();
        }
        System.out.println("您已经退出系统");
    }
}

class Judge {//判断学生数量

    static boolean judgeNum(String str) {
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] < 48 | ch[i] > 57)
                return false;
        }

        if (Integer.parseInt(str) < 0 | Integer.parseInt(str) > Manage.N - Manage.n)
            return false;
        return true;
    }

    static boolean judgeCode(String str) {
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] < 48 | ch[i] > 57) {
                return false;
            }
        }
        for (int i = 0; i < Manage.n; i++) {
            if (str.equals(Manage.getCode(i)))
                return false;
        }
        return true;
    }

    static boolean judgeAge(String str) {//判断年龄
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] < 48 | ch[i] > 57) {
                return false;
            }
        }
        if (Integer.parseInt(str) < 0 | Integer.parseInt(str) > 100)
            return false;
        return true;
    }

    static boolean judgeScore(String str) {//判断分数
        char[] ch = str.toCharArray();
        if (ch[0] == 46)
            return false;
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] != 46) {
                if (ch[i] < 48 | ch[i] > 57)
                    return false;
            }
        }
        return true;
    }

    static boolean judgeSex(String str) {//判断性别
        if (str.equals("F") | str.equals("f") | str.equals("M") | str.equals("m"))
            return true;
        return false;
    }
}

class Manage {
    boolean flag = true;//运行开始或者结束标志变量
    static int N = 100;
    static student[] stu = new student[N];
    static int n = 0;
    int m = 0;
    Scanner sc = new Scanner(System.in);

    void menu() throws IOException {
        String num;
        System.out.println("*************************************************");
        System.out.println("             *    学生管理系统   *");
        System.out.println("             *    系统功能菜单   *");
        System.out.println("*************************************************");
        System.out.println("0.系统帮助及说明             1.刷新学生信息");
        System.out.println("2.查询学生信息               3.修改学生信息");
        System.out.println("4.增加学生信息               5.按学号删除信息");
        System.out.println("6.显示当前信息               7.保存当前学生信息");
        System.out.println("8.退出系统");
        System.out.println("*************************************************");
        System.out.println("请选择菜单编号:");
        num = sc.next();
        switch (num) {
            case "0":
                help();
                break;
            case "2":
                seek();
                break;
            case "3":
                modify();
                break;
            case "4":
                insert();
                break;
            case "5":
                del();
                break;
            case "6":
                display();
                break;
            case "8":
                flag = false;
                sc.close();
                break;
            default:
                System.out.println("请重新在 0--8 之间选择");
        }
    }

    void help() {
        System.out.println("0.欢迎进入系统帮助界面!");
        System.out.println("1.初次进入系统后,请选择增加学生信息;");
        System.out.println("2.按照菜单提示键入数字代号;");
        System.out.println("3.增加学生信息后,切记保存;");
        System.out.println("4.注意!本系统仅能对输入信息进行更改保存,打开系统会初始化原数据文件内容");
        System.out.println("5.谢谢您的使用!");
    }

    void insert() throws IOException {
        int j = n;
        System.out.print("请输入待增加学生数;");
        String str = sc.next();
        if (!Judge.judgeNum(str)) {
            System.out.println("输入数据有误请重新输入");
            return;
        }
        m = Integer.parseInt(str);
        for (int i = j; i < j + m; i++) {
            stu[i] = new student();
        }
        do { //输入学号判断
            System.out.println("请输入第" + (j - n + 1) + "个学生的学号");
            stu[j].code = sc.next();
            if (!Judge.judgeCode(stu[j].code)) {
                System.out.println("输入有误或者学号已存在,请重新输入该学生信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的姓名");
            stu[j].name = sc.next();
            System.out.println("请输入第" + (j - n + 1) + "个学生的年龄");
            stu[j].age = sc.next();
            if (!Judge.judgeAge(stu[j].age)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的性别,男生使用F/f,女生使用M/m");
            stu[j].sex = sc.next();
            if (!Judge.judgeSex(stu[j].sex)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的语文成绩");
            stu[j].scoreChinese = sc.next();
            if (!Judge.judgeScore(stu[j].scoreChinese)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的英语成绩");
            stu[j].scoreEnglish = sc.next();
            if (!Judge.judgeScore(stu[j].scoreEnglish)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            System.out.println("请输入第" + (j - n + 1) + "个学生的数学成绩");
            stu[j].scoreMath = sc.next();
            if (!Judge.judgeScore(stu[j].scoreMath)) {
                System.out.println("输入有误,请重新输入该学生的信息");
                continue;
            }
            //将信息存入文档
            FileWriter fw = new FileWriter("student.txt", true);
            String strTemp = (stu[j].code + " " + stu[j].name + " "
                    + stu[j].age + " " + stu[j].sex + " " + stu[j].scoreChinese + " " +
                    stu[j].scoreEnglish + " " + stu[j].scoreMath + " \r\n");
            fw.write(strTemp);
            fw.close();
            j++;
        } while (j < n + m);
        n += m;
        System.out.println("信息添加成功!");
        sort();//按学号升序进行排列
    }

    void modify() throws IOException {
        boolean flag = true;
        System.out.print("请输入要修改的学生学号:");
        String str = sc.next();
        int t;//修改学生的学生下标数值
        //需要修改的学生字符数据
        for (int i = 0; i < n; i++) {
            if (stu[i].code.equals(str)) {
                if (stu[i].code.equals(str)) {//定义str储存修改前学生的信息
                    t = i;
                    String dataOldStudent = (stu[t].code + " " + stu[t].name + " "
                            + stu[t].age + " " + stu[t].sex + " " + stu[t].scoreChinese + " " +
                            stu[t].scoreEnglish + " " + stu[t].scoreMath + " \r\n");

                    flag = false;
                    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("---------------------------------");
                    while (true) {
                        System.out.println("请选择子菜单代号");
                        String item = sc.next();
                        switch (item) {
                            case "1":
                                System.out.println("请输入新的名字:");
                                stu[i].name = sc.next();
                                break;
                            case "2":
                                System.out.println("请输入新的年龄:");
                                stu[i].age = sc.next();
                                if (!Judge.judgeAge(stu[i].age)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "3":
                                System.out.println("请输入新的性别:");
                                stu[i].sex = sc.next();
                                break;
                            case "4":
                                System.out.println("请输入新的语文成绩:");
                                stu[i].scoreChinese = sc.next();
                                if (!Judge.judgeScore(stu[i].scoreChinese)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "5":
                                System.out.println("请输入新的英语成绩:");
                                stu[i].scoreEnglish = sc.next();
                                if (!Judge.judgeScore(stu[i].scoreEnglish)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "6":
                                System.out.println("请输入新的数学成绩:");
                                stu[i].scoreMath = sc.next();
                                if (!Judge.judgeScore(stu[i].scoreMath)) {
                                    System.out.println("输入有误,请重新输入该学生的信息");
                                }
                                break;
                            case "7":
                                if (!flag) {
                                    String dataNewStudent = (stu[t].code + " " + stu[t].name + " "
                                            + stu[t].age + " " + stu[t].sex + " " + stu[t].scoreChinese + " " +
                                            stu[t].scoreEnglish + " " + stu[t].scoreMath + " ");
                                    File f = new File("Student.txt");
                                    long length = f.length();
                                    FileReader fr = new FileReader("Student.txt");
                                    char[] ch = new char[(int) length];
                                    fr.read(ch);
                                    fr.close();
                                    String str1 = new String(ch);
                                    str1 = str1.replace(dataOldStudent, dataNewStudent); //进行修改操作
                                    FileWriter fw = new FileWriter("student.txt");//将新字符串写进文件
                                    fw.write(str1);
                                    fw.close();
                                }
                                return;
                            default:
                                System.out.println("请在 1--7 之间选择");
                        }
                    }
                }
            }
        }
        if (flag)
            System.out.println("该学生不在系统中");
    }

    void display() {
        System.out.println("共有" + n + "位学生信息;");
        if (n != 0) {
            System.out.println("学生学号             学生姓名   年龄   性别    语文成绩   英语成绩   数学成绩 ");
            System.out.println("---------------------------------------------------------------------------------");
            for (int i = 0; i < n; i++) {
                System.out.println(stu[i].code + " \t\t\t\t\t" + stu[i].name + " \t\t\t"
                        + stu[i].age + " \t\t" + stu[i].sex + " \t\t" + stu[i].scoreChinese + " \t\t" +
                        stu[i].scoreEnglish + " \t\t" + stu[i].scoreMath);
            }
        }
    }

    void del() throws IOException {
        System.out.println("请输入要删除学生的学号:");
        String code = sc.next();
        boolean flag = false;
        for (int i = 0; i < n; i++) {
            if (stu[i].code.equals(code)) {
                flag = true;
                String dataStudent = (stu[i].code + " " + stu[i].name + " "
                        + stu[i].age + " " + stu[i].sex + " " + stu[i].scoreChinese + " " +
                        stu[i].scoreEnglish + " " + stu[i].scoreMath);
                if (i == n - 1) {//删除最后一个同学
                    stu[i] = null;
                    n -= 1;
                } else {//删除的不是最后一个同学
                    for (int j = 1; i < n; j++) {
                        stu[j] = stu[j + 1];
                    }
                    stu[n - 1] = null;
                    n -= 1;
                }
                File f = new File("student.txt");
                long length = f.length();
                FileReader fr = new FileReader("student.txt");
                char[] ch = new char[(int) length];
                fr.read(ch);
                fr.close();
                String str = new String(ch);
                str = str.replace(dataStudent, " ");//删除操作
                FileWriter fw = new FileWriter("student.txt");//写入新文件
                fw.write(str);
                fw.close();
            }
        }
        if (flag == false)
            System.out.println("该学号不存在!");
        if (flag == true)
            System.out.println("删除成功");
    }

    void seek() {//查找算法
        int i;
        String item, code, name;
        boolean flag = false;
        System.out.println("---------------------------------------------");
        System.out.println("1.按学号查询");
        System.out.println("2.按姓名查询");
        System.out.println("3.退出本菜单");
        System.out.println("---------------------------------------------");
        while (true) {
            System.out.println("请选择子菜单编号:");
            item = sc.next();
            flag = false;
            switch (item) {
                case "1":
                    System.out.println("请输入要查询的学生的学号:");
                    code = sc.next();
                    for (i = 0; i < n; i++)
                        if (stu[i].code.equals(code)) {
                            flag = true;
                            System.out.println("学生学号             学生姓名   年龄   性别    语文成绩   英语成绩   数学成绩 ");
                            System.out.println("---------------------------------------------------------------------------------");
                            System.out.println(stu[i].code + " \t\t\t\t\t" + stu[i].name + " \t\t"
                                    + stu[i].age + " \t\t" + stu[i].sex + " \t\t" + stu[i].scoreChinese + " \t\t" +
                                    stu[i].scoreEnglish + " \t\t" + stu[i].scoreMath);
                        }
                    if (false == flag)
                        System.out.println("该学号不存在!");
                    break;
                case "2":
                    System.out.println("请输入要查询的学生的姓名:");
                    name = sc.next();
                    for (i = 0; i < n; i++)
                        if (stu[i].name.equals(name)) {
                            flag = true;
                            System.out.println("学生学号             学生姓名   年龄   性别    语文成绩   英语成绩   数学成绩 ");
                            System.out.println("---------------------------------------------------------------------------------");
                            System.out.println(stu[i].code + " \t\t\t\t\t" + stu[i].name + " \t\t"
                                    + stu[i].age + " \t\t" + stu[i].sex + " \t\t" + stu[i].scoreChinese + " \t\t" +
                                    stu[i].scoreEnglish + " \t\t" + stu[i].scoreMath);
                        }
                    if (false == flag)
                        System.out.println("该姓名不存在!");
                    break;
                case "3":
                    return;
                default:
                    System.out.println("请在 1--3 之间选择");
            }
        }
    }

    static String getCode(int i) {//Judge类中使用
        return stu[i].code;
    }

    void sort() throws IOException {
        int[] code = new int[n];
        int temp;
        student stuTemp = new student();
        for (int i = 0; i < n; i++) {
            code[i] = Integer.parseInt(stu[i].code);
        }
        for (int i = 0; i < n - 1; i++) {//使用选择排序法对学生对象进行排序
            for (int j = i + 1; j < n; j++) {
                if (code[i] > code[j]) {
                    temp = code[i];
                    code[i] = code[j];
                    code[j] = temp;
                    stuTemp = stu[i];
                    stu[i] = stu[j];
                    stu[j] = stuTemp;
                }
            }
        }

        FileWriter fw = new FileWriter("student.txt");//按学号顺序将学生信息写入文件
        for (int i = 0; i < n; i++) {
            String strTemp = (stu[i].code + " " + stu[i].name + " "
                    + stu[i].age + " " + stu[i].sex + " " + stu[i].scoreChinese + " " +
                    stu[i].scoreEnglish + " " + stu[i].scoreMath + " \r\n");
            fw.write(strTemp);
        }
        fw.close();
    }

    void readFile() throws IOException {
        File f = new File("student.txt");
        try {
            if (!f.exists()) {
                f.createNewFile();
            }
            FileWriter fileWriter = new FileWriter(f);//打开文件清空文件原有内容
            fileWriter.write("");
            fileWriter.flush();
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        int length = (int) f.length();
        if (length == 0)
            return;
        FileReader fr = new FileReader("student.txt");
        char[] ch = new char[length];
        fr.read(ch);
        fr.close();
        String str = new String(ch);

        //将字符串分割成数组并初始化
        String regex1 = "\\s{2}";
        String regex2 = "\\p{Blank}";
        String[] strArray = str.split(regex1);
        n = strArray.length;
        for (int i = 0; i < n; i++) {
            stu[i] = new student();
        }
        //初始化对象
        for (int i = 0; i < strArray.length; i++) {
            String[] strArray2 = strArray[i].split(regex2);
            stu[i].code = strArray2[0];
            stu[i].name = strArray2[1];
            stu[i].age = strArray2[2];
            stu[i].sex = strArray2[3];
            stu[i].scoreChinese = strArray2[4];
            stu[i].scoreEnglish = strArray2[5];
            stu[i].scoreMath = strArray2[6];

        }
    }
}

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值