学生管理系统---代码实现

学生管理系统---代码实现

database类

下面展示一些 内联代码片

public class DataBase {
    
    
    List<Students>studentsList=new ArrayList<>();
    List<Users>usersList=new ArrayList<>();
    public DataBase(){
    
    
        Users users=new Users("admin","123");
        usersList.add(users);
        studentsList.add(new Students("whj","1",99,99,99,99));
        studentsList.add(new Students("yr","2",66,66,66,66));
        studentsList.add(new Students("jhd","3",100,100,99,99));
        studentsList.add(new Students("yl","4",88,88,88,88));
    }

    public List<Students> getStudentsList() {
    
    
        return studentsList;
    }


    public List<Users> getUsersList() {
    
    
        return usersList;
    }

students类






```javascript
public class Students {
    
    
    private String name;
    private String number;
    private int grade1;
    private int grade2;
    private int grade3;
    private int grade4;

    public Students(String name, String number, int grade1, int grade2, int grade3, int grade4) {
    
    
        this.name = name;
        this.number = number;
        this.grade1 = grade1;
        this.grade2 = grade2;
        this.grade3 = grade3;
        this.grade4 = grade4;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public void setNumber(String number) {
    
    
        this.number = number;
    }

    public void setGrade1(int grade1) {
    
    
        this.grade1 = grade1;
    }

    public void setGrade2(int grade2) {
    
    
        this.grade2 = grade2;
    }

    public void setGrade3(int grade3) {
    
    
        this.grade3 = grade3;
    }

    public void setGrade4(int grade4) {
    
    
        this.grade4 = grade4;
    }

    public String getName() {
    
    
        return name;
    }

    public String getNumber() {
    
    
        return number;
    }

    public int getGrade1() {
    
    
        return grade1;
    }

    public int getGrade2() {
    
    
        return grade2;
    }

    public int getGrade3() {
    
    
        return grade3;
    }

    public int getGrade4() {
    
    
        return grade4;
    }
}

users类

public class Users {
    
    
    private String account;
    private  String code;

    public void setAccount(String account) {
    
    
        this.account = account;
    }

    public void setCode(String code) {
    
    
        this.code = code;
    }

    public Users(String account, String code) {
    
    
        this.account = account;
        this.code = code;
    }

    public String getAccount() {
    
    
        return account;
    }

    public String getCode() {
    
    
        return code;
    }
}

dao类

studentdao

public class StudentDao {
    
    
    private DataBase dataBase;

    public StudentDao(DataBase dataBase) {
    
    
        this.dataBase = dataBase;
    }

    //对全部学生信息打印
    public void print() {
    
    
        System.out.println("学生学号:\t" + "学生姓名\t" + "  科目一:\t" + "科目二:\t" + "科目三:\t" + "科目四:\t");
        for (Students students : dataBase.getStudentsList()) {
    
    
            System.out.println("\t"+students.getNumber() + "\t     " + students.getName() + "\t     " + students.getGrade1()
                    + "\t    " + students.getGrade2() + "\t    " + students.getGrade3() + "\t    " + students.getGrade4());
        }
    }

    //添加新的学生
    public void add() {
    
    
        String number;
        String name;
        int grade1;
        int grade2;
        int grade3;
        int grade4;
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入添加学生的学号:\n");
        number = scanner.next();
        System.out.println("输入添加学生的姓名:\n");
        name = scanner.next();
        System.out.println("输入添加学生的科目一:\n");
        grade1 = scanner.nextInt();
        System.out.println("输入添加学生的科目二:\n");
        grade2 = scanner.nextInt();
        System.out.println("输入添加学生的科目三:\n");
        grade3 = scanner.nextInt();
        System.out.println("输入添加学生的科目四:\n");
        grade4 = scanner.nextInt();
        Students students = new Students(name, number, grade1, grade2, grade3, grade4);
        List<Students> studentsList = dataBase.getStudentsList();
        studentsList.add(students);

    }

    //输入姓名或者学号来查询学生信息
    public void find() {
    
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("1.输入学号来查询信息\t输入名字来查询信息\n");
        int choice = scanner.nextInt();
        switch (choice) {
    
    
            case 1:
                findbynumber();
                break;
            case 2:
                findbyname();
                break;
        }
    }

    //通过输入学号来查询信息
    public void findbynumber() {
    
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入添加学生的学号:\n");
        String number = scanner.next();
        for (Students students : dataBase.getStudentsList()) {
    
    
            if (students.getNumber().equals(number)) {
    
    
                System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
                        + "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
                        + "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
            }
        }
    }

    ///通过输入姓名来查询信息
    public void findbyname() {
    
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入添加学生的姓名:\n");
        String name = scanner.next();
        for (Students students : dataBase.getStudentsList()) {
    
    
            if (students.getName().equals(name)) {
    
    
                System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
                        + "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
                        + "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4() + "\n");
            }
        }
    }

    public void findstudent() {
    
    
        System.out.println("输入1按照学号查询,输入2按照姓名查询\n");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        if (choice == 1) {
    
    
            findbynumber();
        } else if (choice == 2) {
    
    
            findbyname();
        }
    }

    //通过学号来修改科目成绩
    public void changegrade1() {
    
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入学号:");
        String number = scanner.next();
        Students students = null;
        for (Students a : dataBase.getStudentsList()) {
    
    
            if (a.getNumber().equals(number)) {
    
    
                students = a;
            }
        }
        if (students != null) {
    
    
            System.out.println("查找成功!");
            System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
                    + "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
                    + "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
            System.out.println("输入要修改的科目一的成绩:");
            int grade1 = scanner.nextInt();
            System.out.println("输入要修改的科目二的成绩:");
            int grade2 = scanner.nextInt();
            System.out.println("输入要修改的科目三的成绩:");
            int grade3 = scanner.nextInt();
            System.out.println("输入要修改的科目四的成绩:");
            int grade4 = scanner.nextInt();
            students.setGrade1(grade1);
            students.setGrade2(grade2);
            students.setGrade3(grade3);
            students.setGrade4(grade4);
            System.out.println("修改完成!");
            System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
                    + "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
                    + "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
        } else {
    
    
            System.out.println("未找到匹配的学生!");
        }
    }


    //通过名字来修改科目成绩
    public void changegrade2() {
    
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入学号:");
        String name = scanner.next();
        Students students = null;
        for (Students a : dataBase.getStudentsList()) {
    
    
            if (a.getName().equals(name)) {
    
    
                students = a;
            }
        }
        if (students != null) {
    
    
            System.out.println("查找成功!");
            System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
                    + "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
                    + "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
            System.out.println("输入要修改的科目一的成绩:");
            int grade1 = scanner.nextInt();
            System.out.println("输入要修改的科目二的成绩:");
            int grade2 = scanner.nextInt();
            System.out.println("输入要修改的科目三的成绩:");
            int grade3 = scanner.nextInt();
            System.out.println("输入要修改的科目四的成绩:");
            int grade4 = scanner.nextInt();
            students.setGrade1(grade1);
            students.setGrade2(grade2);
            students.setGrade3(grade3);
            students.setGrade4(grade4);
            System.out.println("修改完成!");
            System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
                    + "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
                    + "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
        } else {
    
    
            System.out.println("未找到学生信息!");
        }


    }

    //交换链表两个位置的数据
    public void swap(int i, int j) {
    
    
        List<Students> studentsList = dataBase.getStudentsList();
        Students studentsi = studentsList.get(i);
        Students studentsj = studentsList.get(j);
        studentsList.set(j, studentsi);
        studentsList.set(i, studentsj);

    }

    //双向冒泡排序
    public void bub() {
    
    
        int len = dataBase.getStudentsList().size()-1;
        int preindex = 1;
        int backindex = len;
        while (preindex < backindex) {
    
    
            preSort(len, preindex);
            preindex++;
            if (preindex >= backindex) break;
            backSort(len, backindex);
            backindex--;
        }

    }

    //从前向后排序
    public void preSort(int length, int preindex) {
    
    
        List<Students> studentsList = dataBase.getStudentsList();
        for (int i = preindex + 1; i <= length; i++) {
    
    
            int gradeIndex = studentsList.get(preindex).getGrade1() + studentsList.get(preindex).getGrade2() +
                    studentsList.get(preindex).getGrade3() + studentsList.get(preindex).getGrade4();
            int gradeI = studentsList.get(i).getGrade1() + studentsList.get(i).getGrade2()
                    + studentsList.get(i).getGrade3() + studentsList.get(i).getGrade4();
            if (gradeI > gradeIndex) {
    
    
                swap(i, preindex);
            }
        }
    }

    //从后往前排序
    public void backSort(int length, int backindex) {
    
    

        List<Students> studentsList = dataBase.getStudentsList();
        for (int i = backindex - 1; i > 0; i--) {
    
    
            int gradeIndex = studentsList.get(backindex).getGrade1() + studentsList.get(backindex).getGrade2() +
                    studentsList.get(backindex).getGrade3() + studentsList.get(backindex).getGrade4();
            int gradeI = studentsList.get(i).getGrade1() + studentsList.get(i).getGrade2()
                    + studentsList.get(i).getGrade3() + studentsList.get(i).getGrade4();
            if (gradeI < gradeIndex) {
    
    
                swap(i, backindex);
            }
        }
    }

    //快速排序
    public void shellSort() {
    
    
        List<Students> list = dataBase.getStudentsList();
        Students student = null;
        Students student1 = null;
        int j;
        for (int gap = list.size() / 2; gap > 0; gap /= 2) {
    
    
            for (int i = gap; i < list.size(); i++) {
    
    
                student = list.get(i);
                int tmp = student.getGrade1() + student.getGrade2() + student.getGrade3() + student.getGrade4();
                for (j = i; j >= gap && tmp > list.get(j - gap).getGrade1() + list.get(j - gap).getGrade2() + list.get(j - gap).getGrade3() + list.get(j - gap).getGrade4(); j -= gap) {
    
    
                    list.set(j, list.get(j - gap));
                }
                list.set(j, student);
            }
        }

    }

    //快速排序
    public void quickSort1(int left,int right) {
    
    

        List<Students>studentsList=dataBase.getStudentsList();
        if (left < right) {
    
    
            int i = left, j = right;
            Students student = studentsList.get(left);
            int x = student.getGrade1()+student.getGrade2()+student.getGrade3()+student.getGrade4();
            while (i < j) {
    
    
                while ((i < j) && (studentsList.get(j).getGrade1()+studentsList.get(j).getGrade2()+studentsList.get(j).getGrade3()+studentsList.get(j).getGrade4()< x)) {
    
    
                    j--;
                }
                if (i < j) {
    
    
                    studentsList.set(i, studentsList.get(j));
                    i++;
                }
                while ((i < j) && (studentsList.get(i).getGrade1()+ studentsList.get(i).getGrade2()+studentsList.get(i).getGrade3()+studentsList.get(i).getGrade4()> x)) {
    
    
                    i++;
                }
                if (i < j) {
    
    
                    studentsList.set(j, studentsList.get(i));
                    j--;
                }
            }
            studentsList.set(i, student);
            quickSort1( left, i - 1);
            quickSort1(i + 1, right);
        }

    }

    //堆排序
    public void heapSort(){
    
    
        List<Students> list=dataBase.getStudentsList();
        int len = list.size();

        buildMaxHeap(list, len);

        for (int i = len - 1; i > 0; i--) {
    
    
           swap(0,i);
            len--;
            heapify(list, 0, len);
        }

    }
    private void buildMaxHeap(List<Students> studentList, int len) {
    
    
        for (int i = (int) Math.floor(len / 2); i >= 0; i--) {
    
    
            heapify(studentList, i, len);
        }
    }
    private void heapify(List<Students> studentList, int i, int len) {
    
    
        int left = 2 * i + 1;
        int right = 2 * i + 2;
        int largest = i;

        if (left < len && studentList.get(left).getGrade1()+studentList.get(left).getGrade2()+studentList.get(left).getGrade3()+studentList.get(left).getGrade4()
                < studentList.get(largest).getGrade1()+studentList.get(largest).getGrade2()+studentList.get(largest).getGrade3()+studentList.get(largest).getGrade4()) {
    
    
            largest = left;
        }

        if (right < len && studentList.get(right).getGrade1()+ studentList.get(right).getGrade2()+ studentList.get(right).getGrade3()+ studentList.get(right).getGrade4()
                < studentList.get(largest).getGrade1()+studentList.get(largest).getGrade2()+studentList.get(largest).getGrade3()+studentList.get(largest).getGrade4()) {
    
    
            largest = right;
        }

        if (largest != i) {
    
    
            swap( i, largest);
            heapify(studentList, largest, len);
        }
    }

}

userdao

public class UserDao {
    
    
    private  DataBase dataBase;
   public  UserDao(DataBase dataBase){
    
    
        this.dataBase=dataBase;
    }
    //判断密码和账号是否正确(如果有用户名为输入的用户名,返回User类,否者返回为空)
    public Users Judge_account(String account){
    
    
        Users users =null;
        for(Users a:dataBase.getUsersList()){
    
    
            if(a.getAccount().equals(account))users=a;
        }
        return users;
    }
    //欢迎界面
    public void welcome(){
    
    
        Scanner scanner=new Scanner(System.in);
        String account;
        String code;
        System.out.println("---------------欢迎进入学生管理系统---------------");
        System.out.println("请输入账号:\n");
        account =scanner.next();
        System.out.println("请输入密码:\n");
        code=scanner.next();

         Users users=Judge_account(account);
        if(users!=null){
    
    
            if(users.getCode().equals(code)){
    
    
                System.out.println("登录成功!\n");
                System.out.println("-----------------------------------------");
            }
            else{
    
    
                System.out.println("密码错误,重新登录!\n");
                welcome();
            }
        }
        else{
    
    
            System.out.println("账号错误,重新登录!");
            welcome();
        }


    }

}

service类

public class StudentService {
    
    
    private StudentDao studentDao;
    private UserDao userDao;
    private DataBase dataBase;

    public StudentService(DataBase dataBase) {
    
    
        studentDao = new StudentDao(dataBase);
        userDao = new UserDao(dataBase);
        this.dataBase = dataBase;
    }
    public void login(){
    
    
        userDao.welcome();
        start();
    }

    public void start() {
    
    
        Scanner scanner = new Scanner(System.in);

        System.out.println("\t2.添加新学生\n");
        System.out.println("\t3.打印所有学生的信息\n");
        System.out.println("\t4.修改对应学生的四门课成绩\n");
        System.out.println("\t5.对学生的成绩由高到低排序\n");
        System.out.println("\t6.输入学号或者姓名来查询学生信息\n");
        int choice = scanner.nextInt();
        switch (choice) {
    
    

            case 2:
                addx();break;
            case 3:
               studentDao.print();
               start();
               break;
            case 4:
                changegradex();break;
            case 5:
                System.out.println("1.冒泡排序");
                System.out.println("2.希尔排序");
                System.out.println("3.快速排序");
                System.out.println("4.堆排序");
                System.out.println("输入0返回菜单");
                int a=scanner.nextInt();
                switch (a){
    
    
                    case 1:
                        bubx();

                        break;
                    case 2:

                       shellSortx();
                        break;
                    case 3:

                       quickSortx();
                        break;
                    case 4:

                     heapSortx();
                        break;
                    case 0:start();
                    break;
                }
                break;

            case 6:
                findstudentx();break;


        }
    }
    public void bubx(){
    
    
        studentDao.bub();
        studentDao.print();
        start();
    }
    public void shellSortx(){
    
    
        studentDao.shellSort();
        studentDao.print();
        start();
    }
    public void quickSortx(){
    
    
        studentDao.quickSort1(0,dataBase.getStudentsList().size()-1);
        studentDao.print();
        start();
    }
    public void heapSortx(){
    
    
        studentDao.heapSort();
        studentDao.print();
        start();
    }





    public void findstudentx(){
    
    
        studentDao.findstudent();
        System.out.println("输入0返回上一菜单,输入1继续查询\n");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        if(choice==1){
    
    
            findstudentx();
        }else if(choice==0){
    
    
            start();
        }
    }
    public void changegradex(){
    
    
    changegrade();
        System.out.println("输入0 返回上一菜单,输入1继续改变成绩!");
        Scanner scanner=new Scanner(System.in);
        int choice =scanner.nextInt();
        if(choice==1){
    
    
            changegrade();
        }
        if(choice==0){
    
    
            start();
        }
}
    public void changegrade(){
    
    
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入0返回上一菜单,输入1按照学号来修改成绩,输入2按照姓名来修改成绩:\n");
        int choice=scanner.nextInt();
        if(choice==1){
    
    
            studentDao.changegrade1();
        }else if(choice==2){
    
    
           studentDao.changegrade2();
        }else if(choice==0){
    
    
            start();
        }
        else{
    
    
            System.out.println("输入错误,");

        }
    }
//调用添加学生的函数,来
public void addx(){
    
    
    studentDao.add();
    Scanner scanner=new Scanner(System.in);
    System.out.println("输入0返回上级菜单,输入1继续添加!");
    int choice=scanner.nextInt();
    if(choice==1){
    
    
        addx();
    } else if(choice==0){
    
    
        start();
    }
}
}

猜你喜欢

转载自blog.csdn.net/qq_49180345/article/details/114327084