学生管理系统

案例需求:

 针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下:

添加学生:通过键盘录入学生信息,添加到集合中

删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除

修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改

查看学生:将集合中的学生对象信息进行展示 退出系统:结束程序

实现步骤

  1. 定义学生类,包含以下成员变量

private String sid // 学生id

private String name // 学生姓名

private String age // 学生年龄

private String address // 学生所在地

2. 学生管理系统主界面的搭建步骤

循环完成功能结束后再次回到主界面

3. 学生管理系统的添加学生功能实现步骤

3.1 定义一个方法,接收ArrayList集合

3.2 方法内完成添加学生的功能

①键盘录入学生信息

②根据录入的信息创建学生对象

③将学生对象添加到集合中

④提示添加成功信息

3.3 在添加学生的选项里调用添加学生的方法

注意:id唯一

 4. 学生管理系统的查看学生功能实现步骤

4.1 定义一个方法,接收ArrayList集合

4.2 方法内遍历集合,将学生信息进行输出

4.3 在查看所有学生选项里调用查看学生方法

注意:如果没有学生信息,提示:当前无学生信息,请添加后再查询

如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)

 5. 学生管理系统的删除学生功能实现步骤

5.1 定义一个方法,接收ArrayList集合

5.2 方法中接收要删除学生的学号

5.3 遍历集合,获取每个学生对象

5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除

5.5 在删除学生选项里调用删除学生的方法

注意:id存在删除

id不存在,需要提示不存在,并回到初始菜单

6. 学生管理系统的修改学生功能实现步骤

6.1 定义一个方法,接收ArrayList集合

6.2 方法中接收要修改学生的学号

6.3 通过键盘录入学生对象所需 的信息,并创建对象

6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相 同,则使用新学生对象替换当前学生对象

6.5 在修改学生选项里调用修改学生的方法

注意:id存在,继续录入其他信息

id不存在,需要提示不存在,并回到初始菜单

7. 退出系统

注意:不准使用静态全局变量的写法

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

4

当前无学生信息,请添加后再查询

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

1

请输入学生的id

1001

请输入学生的姓名

李帅

请输入学生的年龄

18

请输入学生的家庭住址

湖北武汉

学生信息添加成功

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

1

请输入学生的id

1001

id已经存在,请重新录入

请输入学生的id

1002

请输入学生的姓名

史帅

请输入学生的年龄

18

请输入学生的家庭住址

湖北武汉

学生信息添加成功

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

2

请输入要删除的id

1003

id不存在,删除失败,请重新输入

请输入要删除的id

1002

id为:1002的学生删除成功

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

4

id 姓名 年龄 家庭住址

1001 李帅 18 湖北武汉

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

3

请输入要修改学生的id

1004

要修改的id1004不存在,请重新输入

请输入要修改学生的id

1001

请输入要修改的学生姓名

真帅

请输入要修改的学生年龄

18

请输入要修改的学生家庭住址

湖北武汉

学生信息修改成功

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

4

id 姓名 年龄 家庭住址

1001 真帅 18 湖北武汉

-----------------欢迎来到百里半学生管理系统-------------------

1:添加学生

2:删除学生

3:修改学生

4:查询学生

5:退出

请输入您的选择:

5

退出

需求:

为学生管理系统书写一个登录、注册、忘记密码的功能。

只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。

分析:

登录界面:

System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码");

用户类:

属性:用户名、密码、身份证号码、手机号码

注册功能:

1,用户名需要满足以下要求:

验证要求:

用户名唯一

用户名长度必须在3~15位之间

只能是字母加数字的组合,但是不能是纯数字

2,密码键盘输入两次,两次一致才可以进行注册。

3,身份证号码需要验证。

验证要求:

长度为18位

不能以0为开头

前17位,必须都是数字

最为一位可以是数字,也可以是大写X或小写x

4,手机号验证。

验证要求:

长度为11位

不能以0为开头

必须都是数字

登录功能:

1,键盘录入用户名

2,键盘录入密码

3,键盘录入验证码

验证要求:

用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册

判断验证码是否正确,如不正确,重新输入

再判断用户名和密码是否正确,有3次机会

忘记密码:

1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册

2,键盘录入身份证号码和手机号码

3,判断当前用户的身份证号码和手机号码是否一致,

如果一致,则提示输入密码,进行修改。

如果不一致,则提示:账号信息不匹配,修改失败。

验证码规则:

长度为5

由4位大写或者小写字母和1位数字组成,同一个字母可重复

数字可以出现在任意位置

比如:

aQa1K

public class Student {
    private String sid; // 学生id
    private String name; // 学生姓名
    private String age; // 学生年龄
    private String address; // 学生所在地

    public Student() {
    }

    public Student(String sid, String name, String age, String address) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    /**
     * 获取
     * @return sid
     */
    public String getSid() {
        return sid;
    }

    /**
     * 设置
     * @param sid
     */
    public void setSid(String sid) {
        this.sid = sid;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public String getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(String age) {
        this.age = age;
    }

    /**
     * 获取
     * @return address
     */
    public String getAddress() {
        return address;
    }

    /**
     * 设置
     * @param address
     */
    public void setAddress(String address) {
        this.address = address;
    }

    public String toString() {
        return "Student{sid = " + sid + ", name = " + name + ", age = " + age + ", address = " + address + "}";
    }
}




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

public class StudentTest {
    public static int count = 0;
    public static int acount = 0;
    public static  StringBuilder sb1 = new StringBuilder();
    public static ArrayList<Admin> list1 = new ArrayList<Admin>();
    public static ArrayList<Student> list = new ArrayList<Student>();
    static Scanner sc = new Scanner(System.in);
    public static int a;
    public static int choose(int c){
        while (!sc.hasNextInt()){
//            sc.nextLine();
            System.out.println("请输入整数");
            sc.nextLine();
        }
        while (true){
            a = sc.nextInt();
            if (a < 1 || a >c){
                System.out.println("请输入1-"+c+"的整数");
                sc.nextLine();
            }else
                return a;
        }
    }
    public static void add(){
        list.add(new Student());
        System.out.println("请输入学生id");
        list.get(count).setSid(sc.next());
        System.out.println("请输入学生姓名");
        list.get(count).setName(sc.next());
        System.out.println("请输入学生年龄");
        list.get(count).setAge(sc.next());
        System.out.println("请输入学生所在地");
        list.get(count).setAddress(sc.next());
        count++;
    }
    public static void show(){
        if (list.isEmpty()){
            System.out.println("库内无信息");
            return;
        }
        System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");

        for (int i = 0; i < list.size()-1; i++) {
            for(int j = 0; j < list.size() - 1 - i; j++){
                Student u1=list.get(j);
                Student u2=list.get(j+1);
                if(u1.getSid().compareTo(u2.getSid()) > 0){
                    list.set(j,u2);
                    list.set(j+1,u1);
                }
            }
        }
        // 遍历
        for (Student s : list) {
            System.out.println(s.getSid()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getAddress());
        }

    }
    public static void delete(){
        if (count == 0){
            System.out.println("库内无信息");
            return;
        }
        System.out.println("请输入要删除的学生id");
        list.remove(choose(count) - 1);
        System.out.println("删除成功");
        count--;
        show();
    }
    public static void edit(){
        show();
        if (list.isEmpty())
            return;
        System.out.println("请输入您需要修改的学生id");
        int a = choose(count);
        System.out.println("请输入学生id");
        list.get(a - 1).setSid(sc.next());
        System.out.println("请输入学生姓名");
        list.get(a - 1).setName(sc.next());
        System.out.println("请输入学生年龄");
        list.get(a - 1).setAge(sc.next());
        System.out.println("请输入学生所在地");
        list.get(a - 1).setAddress(sc.next());
        System.out.println("修改成功");
        show();
    }
    public static void menu() {
        while (true) {
            System.out.println("1:添加学生\n" + "2:删除学生\n" + "3:修改学生\n" + "4:查询学生\n" + "5:退出\n" + "请输入您的选择:");
            switch (choose(5)){
                case 5-> {
                    LogIn();
                }
                case 1->add();
                case 4->show();
                case 2->delete();
                case 3->edit();
            }
        }
    }
    public static StringBuilder verificationCode(){
        /*Random r = new Random();
        for (int i = 0; i < 5; i++) {
            int num = r.nextInt(62);
            String datas = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
            sb.append(datas.charAt(num));
        }

        return sb;*/
        Random r = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            int num = r.nextInt(52);
            String datas = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
            sb.append(datas.charAt(num));
        }
        int num = r.nextInt(10);
        sb.append(num);
//        System.out.println(sb);
        char[] arr = new char[5];
        for (int i = 0; i < 5; i++) {
            arr[i] = sb.charAt(i);
        }
        for (int i = 0; i < arr.length; i++) {
            int index = r.nextInt(arr.length);
            char temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            sb1.append(arr[i]);
        }
        return sb1;
    }
    public static void adminLogIn(){
        if (acount == 0){
            System.out.println("请注册");
            signIn();
        }
        for (int j = 0; j < 3; j++) {
            System.out.println("请输入用户名");
            String as1 = sc.next();
            System.out.println("请输入密码");
            String as2 = sc.next();

            System.out.println("请输入验证码");
            System.out.println(verificationCode());
            String ss = String.valueOf(sb1);
            String as3 = sc.next();
            for (int i = 0; i < list1.size(); i++) {
                if (as1.equals(list1.get(i).getUsername()) && as2.equals(list1.get(i).getPassword()) && as3.equalsIgnoreCase(ss)) {
                    System.out.println("登录成功");
                    menu();
                    return;
                }
            }
            System.out.println("请检查您的输入,还有"+(2 - j)+"次机会");
        }

    }
    public static void userNameDetermination(String us){
        int a = 0;
        int b = 0;
        int p = 0;
        for (int i = 0; i < list1.size(); i++) {
            if (us.equals(list1.get(i).getUsername())){
                b++;
            }
        }
        if (us.length() >= 3 && us.length() <= 15)
            for (int i = 0; i < us.length(); i++) {
                if ((us.charAt(i) >= 65 && us.charAt(i) <= 90 ) || (us.charAt(i) >= 97 && us.charAt(i) <= 122))
                    a = 1;
                if (us.charAt(i) >= 48 && us.charAt(i) <= 57)
                    p++;
            }
        if (b != 1){
            System.out.println("用户名已存在,请登录");
            adminLogIn();
        }else if (a == 1 && p != 0){
            System.out.println("录入成功");
        } else if (a == 0) {
            System.out.println("用户名长度必须在3~15位之间 \n" + "只能是字母加数字的组合,但是不能是纯数字");
            list1.get(acount).setUsername(sc.next());
            userNameDetermination(list1.get(acount).getUsername());
        }
    }
    public static void passwordAuthentication(String us){
        System.out.println("请确定密码");
        String ss = sc.next();
        if (!ss.equals(us)){
            System.out.println("输入前后不一致");
            list1.get(acount).setPassword(sc.next());
            passwordAuthentication(list1.get(acount).getPassword());
        }
    }
    public static void idVerification(String us){
        if (us.charAt(0) != '0' && us.length() == 18 && (us.charAt(17) == 'X' || (us.charAt(17) >= '0' && us.charAt(17) <= '9'))) {
            for (int i = 0; i < 17; i++) {
                if (us.charAt(i) > '9') {
                    System.out.println("输入错误重新输入");
                    list1.get(acount).setIdentityCardNumber(sc.next());
                    idVerification(list1.get(acount).getIdentityCardNumber());
                     }
                }
            System.out.println("录入成功");
        }else {
        System.out.println("输入错误重新输入");
        list1.get(acount).setIdentityCardNumber(sc.next());
        idVerification(list1.get(acount).getIdentityCardNumber());
        }
    }
    public static void mobilePhoneNumberVerification(String us) {
        if (us.charAt(0) != '0' && us.length() == 11) {
            for (int i = 0; i < 11; i++) {
                if (us.charAt(i) >= 48 && us.charAt(i) <= 57) {
                }
                else {
                    System.out.println("输入错误重新输入");
                    list1.get(acount).setMobilePhoneNumber(sc.next());
                    mobilePhoneNumberVerification(list1.get(acount).getMobilePhoneNumber());
                }
            }
            System.out.println("录入成功");
        }else {
        System.out.println("输入错误重新输入");
        list1.get(acount).setMobilePhoneNumber(sc.next());
        mobilePhoneNumberVerification(list1.get(acount).getMobilePhoneNumber());
        }
    }
    public static void signIn(){
        list1.add(new Admin());
        System.out.println("请输入用户名");
        list1.get(acount).setUsername(sc.next());
        userNameDetermination(list1.get(acount).getUsername());

        System.out.println("请输入密码");
        list1.get(acount).setPassword(sc.next());
        passwordAuthentication(list1.get(acount).getPassword());

        System.out.println("请输入身份证号码");
        list1.get(acount).setIdentityCardNumber(sc.next());
        idVerification(list1.get(acount).getIdentityCardNumber());

        System.out.println("请输入手机号");
        list1.get(acount).setMobilePhoneNumber(sc.next());
        mobilePhoneNumberVerification(list1.get(acount).getMobilePhoneNumber());
        acount++;
    }
    public static void forgotPassword(){
        System.out.println("请输入用户名");
        String s = sc.next();
        String ssfz;
        String ssjh;
        for (int i = 0; i < list1.size(); i++) {
            if (s.equals(list1.get(i).getUsername())){
                System.out.println("请输入身份证号码");
                ssfz = sc.next();
                System.out.println("请输入手机号");
                ssjh = sc.next();
                if ((ssfz.equals(list1.get(i).getIdentityCardNumber() )&&( ssjh.equals(list1.get(i).getMobilePhoneNumber())))){
                    System.out.println("密码为:"+list1.get(i).getPassword());
                    System.out.println("请修改密码");
                    list1.get(i).setPassword(sc.next());
                    passwordAuthentication(list1.get(i).getPassword());
                    adminLogIn();
                    return;
                }else
                    System.out.println("账号信息不匹配,修改失败。");
            }
        }
        System.out.println("未注册");
        signIn();

    }
    public static void LogIn(){
        System.out.println("请选择操作:\n1登录 \n2注册 \n3忘记密码");
        switch (choose(3)){
            case 1->adminLogIn();
            case 2->signIn();
            case 3->forgotPassword();

        }
    }
    public static void main(String[] args) {
        System.out.println("-----------------欢迎来到百里半学生管理系统-------------------");
        while (true){
            LogIn();
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值