小项目-学生管理系统

学生管理系统

需求:

​ 采取控制台的方式去书写学生管理系统。

分析:

初始菜单:
"-------------欢迎来到黑马学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"
学生类:

​ 属性:id、姓名、年龄、家庭住址

添加功能:

​ 键盘录入每一个学生信息并添加,需要满足以下要求:

  • id唯一

删除功能:

​ 键盘录入要删除的学生id,需要满足以下要求:

  • id存在删除

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

修改功能:

​ 键盘录入要修改的学生id,需要满足以下要求

  • id存在,继续录入其他信息

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

查询功能:

​ 打印所有的学生信息,需要满足以下要求

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

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

代码

学生类:

package project1;

public class Student {
    private String id;
    private String name;
    private int age;
    private String address;

    public Student() {
    }

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

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}


学生系统:

package project1;

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

public class StudentSystem {
    public static void system() {

        ArrayList<Student> students = new ArrayList<>();
        Student s1=new Student("heima001","张三",23,"南京");
        Student s2=new Student("heima002","李四",23,"合肥");
        Student s3=new Student("heima003","王五",23,"上海");
        Student s4=new Student("heima004","赵六",23,"北京");
        students.add(s1);
        students.add(s2);
        students.add(s3);
        students.add(s4);

//            heima001	张三		23		 南京
//            heima002	李四		24		 北京
//            heima003	王五		25		 广州
//            heima004	赵六	 	26		 深圳

        loop:while (true) {
            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("请输入您的选择:");

            Scanner sc = new Scanner(System.in);
            String choose = sc.next();

            switch (choose) {
                case "1"-> addStudent(students);
                case "2"-> deleteStudent(students);
                case "3"-> updateStudent(students);
                case "4"-> queryStudent(students);
                case "5"-> {
                    System.out.println("退出");
                    break loop;
                }

                default -> System.out.println("没有这个选项");
            }
        }

    }

    public static void addStudent(ArrayList<Student> list){
        System.out.println("添加学生");
        Scanner sc = new Scanner(System.in);

        String id;
        while(true){
            System.out.println("请输入你的id");
            id = sc.next();
            if(!contains(list,id)){
                break;
            }
            System.out.println("输入错误,请重新输入");
        }

        System.out.println("请输入你的名字");
        String name = sc.next();

        System.out.println("请输入你的年龄");
        int age = sc.nextInt();

        System.out.println("请输入你的地址");
        String address = sc.next();

        Student s=new Student(id,name,age,address);
        list.add(s);

        System.out.println("学生信息添加成功");
    }

    public static void deleteStudent(ArrayList<Student> list){
        System.out.println("删除学生");
        System.out.println("请输入删除学生的id");
        Scanner sc=new Scanner(System.in);
        String id=sc.next();

        //循环遍历,找到与输入id一样的id,并删除
        if(contains(list,id)){
           Student s=find(list,id);
           list.remove(s);
        }else{
            //没找到
            System.out.println("不存在,将返回主菜单");
            return;
        }

        System.out.println("删除成功");

    }

    public static void updateStudent(ArrayList<Student> list){
        System.out.println("修改学生");
        System.out.println("请输入修改学生的id");
        Scanner sc=new Scanner(System.in);
        String id=sc.next();

        if(contains(list,id)){
            Student s=find(list,id);

            System.out.println("请输入你的名字");
            String name = sc.next();

            System.out.println("请输入你的年龄");
            int age = sc.nextInt();

            System.out.println("请输入你的地址");
            String address = sc.next();

            assert s != null;
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
        }else{
            //没找到
            System.out.println("不存在,将返回主菜单");
            return;
        }

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

    public static void queryStudent(ArrayList<Student> list){
        System.out.println("查询学生");
        if(list.isEmpty()){
            System.out.println("当前无学生信息");
        }else{
            System.out.println("id          "+"姓名           "+"年龄          "+"家庭地址");
            for(Student student : list){
                System.out.println(student.getId()+"    "+
                        student.getName()+"          "+
                        student.getAge()+"             "+
                        student.getAddress());
            }
        }
    }

    //判断id是否存在
    public static boolean contains(ArrayList<Student> list, String id){
        for(Student student : list){
            if(student.getId().equals(id)){
                return true;
            }
        }
        return false;
    }

    //获取指定id的学生对象
    public static Student find(ArrayList<Student> list,String id){
        for(int i=0;i<list.size();i++){
            String stu_id=list.get(i).getId();
            if(stu_id.equals(id)){
                return list.get(i);
            }
        }
        return null;
    }


}

学生系统补充

需求:

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

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

分析:

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

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

注册功能:

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

​ 验证要求:

​ 用户名唯一

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

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

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

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

​ 验证要求:

​ 长度为10位

​ 不能以0为开头

​ 前9位,必须都是数字

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

​ 4,手机号验证。

​ 验证要求:

​ 长度为10位

​ 不能以0为开头

​ 必须都是数字

登录功能:

​ 1,键盘录入用户名

​ 2,键盘录入密码

​ 3,键盘录入验证码

验证要求:

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

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

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

忘记密码:

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

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

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

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

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

登陆界面代码:

package project1;

public class User {
    private String user_name;
    private String user_Password;
    private String uid;
    private String telephone;

    public User() {
    }

    public User(String user_name,String user_Password,  String uid, String telephone) {
        this.user_Password = user_Password;
        this.user_name = user_name;
        this.uid = uid;
        this.telephone = telephone;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_Password() {
        return user_Password;
    }

    public void setUser_Password(String user_Password) {
        this.user_Password = user_Password;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }
}
package project1;

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

public class App {
    public static void main(String[] args) {

        ArrayList<User> list = new ArrayList<>();
        User u = new User("11", "11", "11", "11");
        list.add(u);

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

            Scanner sc = new Scanner(System.in);
            String choose = sc.next();

            switch (choose) {
                case "1" -> sign_in(list);
                case "2" -> sign_up(list);
                case "3" -> forget_password(list);
                case "4" -> {
                    System.out.println("退出成功,谢谢使用");
                    break loop;
                }
                default -> {
                    System.out.println("没有这个选项");
                }
            }
        }


    }

    public static void sign_in(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);
        //验证码
        String code = "12345";

        System.out.println("请输入用户名");
        String name = sc.next();
        int i;
        for (i = 0; i < list.size(); i++) {
            String list_name = list.get(i).getUser_name();
            if (name.equals(list_name)) {
                break;
            }
        }

        //比完全部,发现用户没有注册
        if (i == list.size()) {
            System.out.println("用户未注册,请先注册");
            return;
        }

        //判段验证码是否正确
        while (true) {
            System.out.println("请输入验证码");
            if (!code.equals(sc.next())) {
                System.out.println("不正确,请重新输入");
            } else {
                break;
            }
        }

        //总共3次机会
        int flag = 3;
        while (flag > 0) {
            System.out.println("请输入密码");
            String password = sc.next();
            String password1 = list.get(i).getUser_Password();
            if (password.equals(password1)) {
                System.out.println("密码正确");
                break;
            } else {
                flag--;
                System.out.println("还有" + flag + "次机会");
            }
        }
        if (flag == 0) {
            System.out.println("机会用完");
            return;
        }

        System.out.println("登录成功");

        StudentSystem studentSystem = new StudentSystem();
        StudentSystem.system();
    }

    public static void sign_up(ArrayList<User> list) {

        System.out.println("注册");
        Scanner sc = new Scanner(System.in);

        //用户名验证
        System.out.println("请输入用户名");
        String username = sc.next();

        while (true) {
            boolean flag = checkName(username, list);
            if (flag) {
                System.out.println("请重新输入");
                username = sc.next();
            } else {
                break;
            }
        }

        //密码验证
        System.out.println("第一次输入密码");
        String password1 = sc.next();
        System.out.println("第二次输入密码");
        String password2 = sc.next();
        while (true) {
            if (!password1.equals(password2)) {
                System.out.println("密码不一致,请重新输入");
                System.out.println("第一次输入密码");
                password1 = sc.next();
                System.out.println("第二次输入密码");
                password2 = sc.next();
            } else {
                break;
            }
        }

        //身份证验证
        System.out.println("请输入身份证号");
        String uid = sc.next();
        while (true) {
            if (!checkUid(uid)) {
                System.out.println("请重新输入");
                uid = sc.next();
            } else {
                break;
            }
        }

        //手机号验证
        System.out.println("请输入手机号");
        String tel = sc.next();
        while (true) {
            if (!checktel(tel)) {
                System.out.println("请重新输入");
                tel = sc.next();
            } else {
                break;
            }
        }

        User u = new User(username, password1, uid, tel);
        System.out.println(u.getUser_name());
        list.add(u);

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

    public static boolean checktel(String tel) {
        if (tel.length() != 10) {
            return false;
        } else if (tel.charAt(0) == 0) {
            return false;
        }
        for (int i = 1; i < tel.length(); i++) {
            if (tel.charAt(i) < '0' || tel.charAt(i) > '9') {
                return false;
            }
        }
        return true;
    }

    public static void forget_password(ArrayList<User> list) {
        System.out.println("忘记密码");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String name = sc.next();
        int i;
        for (i = 0; i < list.size(); i++) {
            String list_name = list.get(i).getUser_name();
            if (name.equals(list_name)) {
                break;
            }
        }
        //比完全部,发现用户没有注册
        if (i == list.size()) {
            System.out.println("未注册");
            return;
        }

        while (true) {
            System.out.println("请输入身份证号");
            String uid = sc.next();
            System.out.println("请输入手机号码");
            String tel = sc.next();

            String oldUid = list.get(i).getUid();
            String oldTel = list.get(i).getTelephone();

            boolean flag = uid.equals(oldUid) && tel.equals(oldTel);
            if (flag) {
                System.out.println("输入密码,进行修改");
                break;
            } else {
                System.out.println("账号信息不匹配");
            }
        }

        String newPassword = sc.next();
        list.get(i).setUser_Password(newPassword);

    }


    public static boolean checkUid(String uid) {
        if (uid.length() != 10) {
            return false;
        } else if (uid.charAt(0) == 0) {
            return false;
        }
        for (int i = 0; i < uid.length() - 1; i++) {
            if (uid.charAt(i) < '0' || uid.charAt(i) > '9') {
                return false;
            }
        }

        char ch = uid.charAt(uid.length() - 1);
        if (ch < '0' || ch > '9') {
            if (ch != 'x' && ch != 'X') {
                return false;
            }
        }
        return true;
    }

    public static boolean checkName(String username, ArrayList<User> list) {
        for (User user : list) {
            String name = user.getUser_name();
            if (username.equals(name)) {
                System.out.println("用户名重复");
                return true;
            } else {
                break;
            }
        }
        if (username.length() < 3 || username.length() > 15) {
            System.out.println("用户名过长或过短");
            return true;
        } else if (checkLetterOrNumber(username)) {
            System.out.println("不能是字母加数字的组合或是纯数字");
            return true;
        }
        return false;
    }

    public static boolean checkLetterOrNumber(String str) {
        //统计数字字符出现的次数
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            //获取字符串中的每个字符
            char ch = str.charAt(i);

            //判断字符是否都在合理的范围中,不合理直接返回
            if (!check(ch)) {
                return true;
            }
            //出现一次数字字符,count+1
            if (ch >= '0' && ch <= '9') {
                count++;
            }
        }
        if (count == str.length()) {
            return true;
        }
        return false;
    }

    public static boolean check(char c) {
        if (c >= 'a' && c <= 'z') {
            return true;
        } else if (c >= 'A' && c <= 'Z') {
            return true;
        } else if (c >= '0' && c <= '9') {
            return true;
        } else {
            //都不在范围时返回false
            return false;
        }
    }

}

结果:

C:\Users\86153\.jdks\openjdk-22\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2024.1.2\lib\idea_rt.jar=64054:D:\IntelliJ IDEA 2024.1.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\javawenjian\java_promote\out\production\java_promote project1.App
欢迎来到学生管理系统
请选择操作1登录 2注册 3忘记密码
2
注册
请输入用户名
gaoxin
第一次输入密码
123456
第二次输入密码
123456
请输入身份证号
1234567890
请输入手机号
1234567890
gaoxin
注册完成
欢迎来到学生管理系统
请选择操作1登录 2注册 3忘记密码
3
忘记密码
请输入用户名
gaoxin
请输入身份证号
1234567890
请输入手机号码
123456
账号信息不匹配
请输入身份证号
1234567890
请输入手机号码
1234567890
输入密码,进行修改
123456789
欢迎来到学生管理系统
请选择操作1登录 2注册 3忘记密码
1
请输入用户名
gaoxin
请输入验证码
12345
请输入密码
123456789
密码正确
登录成功
-------------欢迎来到黑马学生管理系统----------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
4
查询学生
id          姓名           年龄          家庭地址
heima001    张三          23             南京
heima002    李四          23             合肥
heima003    王五          23             上海
heima004    赵六          23             北京
-------------欢迎来到黑马学生管理系统----------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
3
修改学生
请输入修改学生的id
heima001
请输入你的名字
张思
请输入你的年龄
22
请输入你的地址
上海
修改成功
-------------欢迎来到黑马学生管理系统----------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:
4
查询学生
id          姓名           年龄          家庭地址
heima001    张思          22             上海
heima002    李四          23             合肥
heima003    王五          23             上海
heima004    赵六          23             北京
-------------欢迎来到黑马学生管理系统----------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出
请输入您的选择:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值