学生管理系统:含注册登录操作

目录

一、分包概况:

二、USER包

1.AMain类:主函数所在

2.User类:构造账号属性

3.PasswordOperate包:用于登录,注册,修改密码,查看账号操作

(1)Login类:登录类

(2)Register类:注册类

(3)RevisePassword类:修改密码类

(4)ShowPassword类:查看密码类

4.Console包:放用户操作台和管理员操作台

(1)ConsoleAdministrators类 :管理员操作台

(2)ConsoleUser类:用户操作台

5.Face包:界面包,编辑各个界面

(1)FaceLogon类:登录界面

(2)FaceAdministrators类:管理员操作台界面

(3)FaceUser类:用户操作台界面:

三、OPERATE包

1.Add类:

2.Delete类:

3.Revise类:

4.Seek类:

5.Show类:

四、STUDENT包

五、运行结果


一、分包概况:

 

二、USER包

1.AMain类:主函数所在

package USERS;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.Face.*;
import USERS.PasswordOperate.*;

public class AMain {//主函数
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        ArrayList<User> list = new ArrayList<>();//储存账号密码的集合

        list.add(new User("康茹", "20021127"));
        list.add(new User("小白", "12345678"));
        //初始化账号密码,以便于待会的登录操作

        FaceLogon.menu();//打印登录界面,调用FaceLogon中的menu方法

        while (true) {
            System.out.println("请输入您的选择:");
            String num = in.next();
            switch (num) {
                case "1":
                    Register.register(list);//跳到注册页面
                    break;
                case "2":
                    Login.login(list);//跳到登录页面
                    break;
                case "3":
                    RevisePassword.revisePassword(list);//忘记密码,重置密码
                    break;
                case "4":
                    ShowPassword.showPassword(list);//查看账号信息
                    break;
                case "5":
                    System.out.println("感谢你的使用!");//退出操作
                    System.exit(0);
                default:
                    System.out.println("无此操作!");//无此操作
                    break;
            }
        }
    }
}

2.User类:构造账号属性

package USERS;

public class User {//构造账号的属性
    private String username;//用户名
    private String password;//密码

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
}

3.PasswordOperate包:用于登录,注册,修改密码,查看账号操作

(1)Login类:登录类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;//调用输入包

import USERS.User;
import USERS.Console.ConsoleAdministrators;
import USERS.Console.ConsoleUser;

public class Login {
    public static void login(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String username = in.next();

            // 判断用户名是否已经注册
            int index = getIndex(list, username);//调用getIndex方法遍历账号数组
            if (index == -1) {
                System.out.println("该用户名未注册!");
                return;
            }

            System.out.println("请输入密码:");
            String password = in.next();
            // 验证用户名和密码是否正确
            User user = new User(username, password);
            boolean flag = checkNameAndPwd(list, user);
            if (!flag) {
                if (i == 2) {
                    System.out.println("当前账号被锁定!");
                } else {
                    System.out.println("登录失败,用户名或密码错误,您还有" + (2 - i) + "次机会!");
                }
            } else {
                while (true) {
                    System.out.println("请输入你的身份:1.管理员 2.用户");
                    String id = in.next();
                    if (id.equals("1")) {
                        System.out.println("请输入管理员密钥:");
                        while (true) {
                            int key = in.nextInt();
                            if (key == 123456) {
                                ConsoleAdministrators.console();
                            } else {
                                System.out.println("密钥错误,请重新输入:");
                            }
                        }
                    } // 登录成功,跳转到控制台
                    else if (id.equals("2")) {
                        ConsoleUser.console();
                    } else {
                        System.out.println("输入错误,请重新输入:");
                    }
                }
            }
        }
    }

    // 验证用户名和密码
    public static boolean checkNameAndPwd(ArrayList<User> list, User userInfo) {
        for (int i = 0; i < list.size(); i++) {
            User user = list.get(i);
            if (user.getUsername().equals(userInfo.getUsername())
                    && user.getPassword().equals(userInfo.getPassword())) {
                return true;
            }
        }
        return false;
    }

    // 遍历数组,判断用户是否存在
    private static int getIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            boolean flag = list.get(i).getUsername().equals(username);
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

(2)Register类:注册类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.User;

public class Register {
    public static void register(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);

        // 键盘录入用户名
        String username;
        while (true) {
            System.out.println("请输入用户名:");
            username = in.next();
            boolean flag = contains(list, username);// 判断是否唯一
            if (flag) {
                System.out.println("用户名已存在,请重新输入:");
            } else {
                System.out.println("用户名:(" + username + ")可用");
                break;
            }
        }

        // 键盘录入密码
        String password;
        while (true) {
            System.out.println("请输入密码:");
            password = in.next();

            System.out.println("请确认密码:");
            String password2 = in.next();

            if (password.equals(password2)) {
                System.out.println("两次密码一致!");
                break;
            } else {
                System.out.println("两次密码输入不一致,请重新输入:");
            }
        }

        User user = new User(username, password);
        list.add(user);

        System.out.println("注册成功!");
    }

    // 判断用户名是否唯一
    private static boolean contains(ArrayList<User> list, String username) {
        return getIndex(list, username) >= 0;
    }

    // 遍历数组,判断用户是否存在
    private static int getIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            boolean flag = list.get(i).getUsername().equals(username);
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

(3)RevisePassword类:修改密码类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.User;

public class RevisePassword {
    public static void revisePassword(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);

        System.out.println("请输入用户名:");
        String username = in.next();

        int index = getIndex(list, username);

        if (index == -1) {
            System.out.println("当前用户名未被注册!");
            return;
        }

        User user = list.get(index);// 获取要修改的用户对象
        String password;
        while (true) {
            System.out.println("请输入新的密码:");
            password = in.next();

            System.out.println("请确认新的密码:");
            String password2 = in.next();

            if (password.equals(password2)) {
                break;
            } else {
                System.out.println("两次密码不一致,请重新输入!");
            }
        }

        user.setPassword(password);

        System.out.println("修改成功!");
    }

    // 获取用户对象对应的索引,判断用户是否存在
    private static int getIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            boolean flag = list.get(i).getUsername().equals(username);
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

(4)ShowPassword类:查看密码类

package USERS.PasswordOperate;

import java.util.ArrayList;
import java.util.Scanner;

import USERS.User;

public class ShowPassword {
    public static void showPassword(ArrayList<User> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("此功能为管理员权限,请输入管理员密码:");
        int password = in.nextInt();
        if (password == 123456) {
            System.out.println("密码正确!");
            for (int i = 0; i < list.size(); i++) {
                User user = list.get(i);
                System.out.println("账号:" + user.getUsername() + "     密码:" + user.getPassword());
            }
            return;
        } else {
            System.out.println("密码错误!");
            return;
        }
    }
}

4.Console包:放用户操作台和管理员操作台

(1)ConsoleAdministrators类 :管理员操作台

package USERS.Console;

import java.util.ArrayList;
import java.util.Scanner;//调用输入包

import OPERATE.*;

import STUDENT.Student;

import USERS.Face.*;

public class ConsoleAdministrators {//管理员控制台
    public static void console() {
        Scanner in = new Scanner(System.in);

        FaceAdministrators.menu();

        ArrayList<Student> list2 = new ArrayList<Student>();
        
        while (true) {
            System.out.println("请选择需要进行的操作:");
            int num = in.nextInt();
            switch (num) {
                case 1:
                    Add.addStudent(list2);// 增加操作,传入list动态数组
                    break;
                case 2:
                    Delete.deleteStudent(list2);// 删除操作,传入list动态数组
                    break;
                case 3:
                    Revise.reviseStudent(list2);// 修改操作,传入list动态数组
                    break;
                case 4:
                    Seek.findStudent(list2);// 查找操作,传入list动态数组
                    break;
                case 5:
                    Show.showStudent(list2);// 展示操作,传入list动态数组
                    break;
                case 6:
                    System.out.println("感谢你的使用!");
                    System.exit(0);
            }
            System.out.println("1.增加 2.删除 3.修改 4.查询 5.展示 6.退出");// 方便下一步知晓操作
        }
    }
}

(2)ConsoleUser类:用户操作台

package USERS.Console;

import java.util.ArrayList;
import java.util.Scanner;//调用输入包

import OPERATE.*;

import STUDENT.Student;

import USERS.Face.*;

public class ConsoleAdministrators {//管理员控制台
    public static void console() {
        Scanner in = new Scanner(System.in);

        FaceAdministrators.menu();

        ArrayList<Student> list2 = new ArrayList<Student>();
        
        while (true) {
            System.out.println("请选择需要进行的操作:");
            int num = in.nextInt();
            switch (num) {
                case 1:
                    Add.addStudent(list2);// 增加操作,传入list动态数组
                    break;
                case 2:
                    Delete.deleteStudent(list2);// 删除操作,传入list动态数组
                    break;
                case 3:
                    Revise.reviseStudent(list2);// 修改操作,传入list动态数组
                    break;
                case 4:
                    Seek.findStudent(list2);// 查找操作,传入list动态数组
                    break;
                case 5:
                    Show.showStudent(list2);// 展示操作,传入list动态数组
                    break;
                case 6:
                    System.out.println("感谢你的使用!");
                    System.exit(0);
            }
            System.out.println("1.增加 2.删除 3.修改 4.查询 5.展示 6.退出");// 方便下一步知晓操作
        }
    }
}

5.Face包:界面包,编辑各个界面

(1)FaceLogon类:登录界面

package USERS.Face;

public class FaceLogon {
    public static void menu() {
        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("-------------------------------------");
    }
}

(2)FaceAdministrators类:管理员操作台界面

package USERS.Face;

public class FaceAdministrators {
    public static void menu() {
        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.退出生成绩管理系统");
    }
}

(3)FaceUser类:用户操作台界面:

package USERS.Face;

public class FaceUser {
    public static void menu() {
        System.out.println("欢迎来到学生成绩管理系统!");
        System.out.println("****请选择所需要的操作****");
        System.out.println("******1.查询学生信息******");
        System.out.println("******2.退出生成绩管理系统");
    }
}

三、OPERATE包

1.Add类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Add {
    public static void addStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        
        System.out.println("请输入要添加的学生学号");
        String id = in.nextLine();
        
        System.out.println("请输入要添加的学生姓名");
        String name = in.nextLine();
        
        System.out.println("请输入要添加的学生成绩");
        double score = in.nextDouble();
        
        Student student = new Student(id, name, score);//采用有参构造赋值
        list.add(student);
        System.out.println("添加成功!");
    }
}

2.Delete类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Delete {
    public static void deleteStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入你要删除的学生学号");
        String id = in.next();
        for (int i = 0; i < list.size(); i++) {// 遍历动态数组
            if (list.get(i).getId().equals(id)) {
                list.remove(i);
            }
        }
        System.out.println("删除成功!");
    }
}

3.Revise类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Revise {
    public static void reviseStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入要修改学生学号");
        String id = in.next();
        System.out.println("请输入学生的新姓名");
        String name = in.next();
        System.out.println("请输入学生的新成绩");
        double score = in.nextDouble();
        Student student = new Student(id, name, score);
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                list.set(i, student);
                break;
            }
        }
        System.out.println("修改成功!");
    }
}

4.Seek类:

package OPERATE;

import java.util.ArrayList;
import java.util.Scanner;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Seek {
    public static void findStudent(ArrayList<Student> list) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入你要查找的学生学号");
        String id = in.next();
        for (int i = 0; i < list.size(); i++) {// 遍历动态数组
            if (list.get(i).getId().equals(id)) {
                System.out.println("查询成功!");
                System.out.println("该学生学号:" + list.get(i).getId() + "  该学生名字:" + list.get(i).getName() + "  该学生成绩:"
                        + list.get(i).getScore());
            }
        }
    }
}

5.Show类:

package OPERATE;

import java.util.ArrayList;

import STUDENT.Student;//导入STUDENT包中的Student文件

public class Show {
    public static void showStudent(ArrayList<Student> list) {
        System.out.println("查询成功!");
        for (int i = 0; i < list.size(); i++) {// 遍历动态数组
            System.out.println(
                    "学号:" + list.get(i).getId() + "  姓名:" + list.get(i).getName() + "  成绩" + list.get(i).getScore());
        }
        System.out.println("一共有 " + list.size() + " 个学生信息");
    }
}

四、STUDENT包

package STUDENT;

public class Student {
    String id;
    String name;
    double score;

    public Student() {
    }

    public Student(String id, String name, double score) {
        this.id = id;
        this.name = name;
        this.score = score;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

五、运行结果

/*
 * 运行结果
 * ----------欢迎来到登录界面-----------
 * 1. 用户注册 *
 * 2. 用户登录 *
 * 3. 忘记密码 *
 * 4. 查看账号信息 *
 * 5. 退出系统 *
 * -------------------------------------
 * 请输入您的选择:
 * 1
 * 请输入用户名:
 * 康茹
 * 用户名已存在,请重新输入:
 * 请输入用户名:
 * 张三
 * 用户名:(张三)可用
 * 请输入密码:
 * 123456
 * 请确认密码:
 * 123456
 * 两次密码一致!
 * 注册成功!
 * 请输入您的选择:
 * 1
 * 请输入用户名:
 * 张三
 * 用户名已存在,请重新输入:
 * 请输入用户名:
 * 李四
 * 用户名:(李四)可用
 * 请输入密码:
 * 123456
 * 请确认密码:
 * 123456
 * 两次密码一致!
 * 注册成功!
 * 请输入您的选择:
 * 4
 * 此功能为管理员权限,请输入管理员密码:
 * 123456
 * 密码正确!
 * 账号:康茹 密码:20021127
 * 账号:小白 密码:12345678
 * 账号:张三 密码:123456
 * 账号:李四 密码:123456
 * 请输入您的选择:
 * 2
 * 请输入用户名:
 * 康茹
 * 请输入密码:
 * 20021127
 * 请输入你的身份:1.管理员 2.用户
 * 1
 * 请输入管理员密钥:
 * 123456
 * 欢迎来到学生成绩管理系统!
 **** 请选择所需要的操作****
 ****** 1.添加学生信息******
 ****** 2.删除学生信息******
 ****** 3.修改学生信息******
 ****** 4.查询学生信息******
 ****** 5.显示学生信息******
 ****** 6.退出生成绩管理系统
 * 请选择需要进行的操作:
 * 1
 * 请输入要添加的学生学号
 * 2022400001
 * 请输入要添加的学生姓名
 * 康茹
 * 请输入要添加的学生成绩
 * 520
 * 添加成功!
 * 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
 * 请选择需要进行的操作:
 * 5
 * 查询成功!
 * 学号:2022400001 姓名:康茹 成绩520.0
 * 一共有 1 个学生信息
 * 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
 * 请选择需要进行的操作:
 * 4
 * 请输入你要查找的学生学号
 * 2022400001
 * 查询成功!
 * 该学生学号:2022400001 该学生名字:康茹 该学生成绩:520.0
 * 1.增加 2.删除 3.修改 4.查询 5.展示 6.退出
 * 请选择需要进行的操作:
 * 6
 * 感谢你的使用!
 */

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值