学生管理系统--java版本

学生管理系统包括了两部分,一部分是登录页面,一部分是管理系统的内容

具体图示如下

 用的都是java的基础知识,适用于初学者或者巩固基础,没有很复杂的内容,

 

 管理系统

登录主页面
public static void startstudentststem() {
        ArrayList<student> list = new ArrayList<>();
        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(list);
                    break;
                case "2":
                    deleteStudent(list);
                    break;
                case "3":
                    updatesStudent(list);
                    break;
                case "4":
                    queryStudent(list);
                    break;
                case "5":
                    System.out.println("退出");
                    break loop;
                //或者System.exit(0);//停止虚拟机运行
                default:
                    System.out.println("没有这个选项");
            }//选择需要的操作

        }


    }

 用arraylist来储存学生的信息

增加信息
 //添加学生
    public static void addStudent(ArrayList<student> list) {
        //创建学生对象
        student stu = new student();

        //输入并且添加信息
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("请输入学生编号");
            String id = sc.next();

            //判断唯一性,不唯一重新输入
            if (contains(list, id)) {
                System.out.println("学生编号重复,请重新输入");
            } else {
                stu.setId(id);
                break;
            }
        }

        System.out.println("请输入学生姓名");
        stu.setName(sc.next());

        System.out.println("请输入学生年龄");
        stu.setAge(sc.nextInt());

        System.out.println("请输入学生家庭住址");
        stu.setAddress(sc.next());

        list.add(stu);
        System.out.println("添加成功");
    }
 删除信息
 public static void deleteStudent(ArrayList<student> list) {
       Scanner sc=new Scanner(System.in);
        System.out.println("请输入要删除的学生id");
        String id=sc.next();

        int num=rnum(list,id);
        if(num>=0){
            list.remove(num);
            System.out.println("id为"+id+"的同学删除成功");
        }
        else{
            System.out.println("删除失败");
        }

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

        //判断是否存在
        int num=rnum(list,id);

        //不存在返回主菜单
        if(num==-1){
            System.out.println("id不存在");
            return ;
        }

        //存在修改
        student stu=list.get(num);
        System.out.println("请输入要修改学生姓名");
        stu.setName(sc.next());

        System.out.println("请输入要修改学生年龄");
        stu.setAge(sc.nextInt());

        System.out.println("请输入要修改学生地址");
        stu.setAddress(sc.next());

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

    }

查询学生 
public static void queryStudent(ArrayList<student> list) {
        //查询为空的情况
        if (list.isEmpty()) {
            System.out.println("当前无学生信息,请添加后再查询");
            return;
        }

        //查询不为空的情况
        System.out.println("id\t姓名\t年龄\t家庭住址");

        for (student stu : list) {
            System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress());

        }
    }
判断id是否存在
 public static boolean contains(ArrayList<student> list, String id) {
        int k=rnum(list,id);
        return k>=0;
    }

 

返回id对应索引

public static int rnum(ArrayList<student> list,String id){
        //遍历
        //存在返回索引,否则返回-1
        for (int i = 0; i < list.size(); i++) {
            String sid=list.get(i).getId();
            if(sid.equals(id)){
                return i;
            }
        }
        return -1;
    }

登录页面

页面
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<User> list = new ArrayList<>();

        loop:
        while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作:1登录 2注册 3忘记密码  4退出 ");
            //输入操作
            String choose = sc.next();
            switch (choose) {
                case "1":
                    login(list);
                    break;
                case "2":
                    register(list);
                    break;
                case "3":
                    forgetPassword(list);
                    break;
                case "4":
                    System.out.println("谢谢使用,再见");
                    break loop;
                default:
                    System.out.println("操作不存在,请重新选择");
            }
        }

    }
登录

 

//登录
    private static void login(ArrayList<User> list) {
        Scanner sc=new Scanner(System.in);

        //输入用户名
        int cnt=3;
        while (true) {
            System.out.println("请输入用户名");
            String username = sc.next();

            //判断用户名是否注册
            boolean flg1 = contains(list, username);
            if (flg1) {
                System.out.println("当前用户" + username + "未注册,请先注册");
                continue;
            }

            //输入密码
            System.out.println("请输入密码");
            String password = sc.next();

            //输入验证码
            String rightcode = getCode();
            System.out.println("正确验证码是" + rightcode + ",请输入验证码");
            String code = sc.next();
            if (!code.equalsIgnoreCase(rightcode)) {
                System.out.println("验证码错误,请重新输入");
            }

            //验证账号密码是否正确
            //可以将零散的数据重新new一个对象
            User us = new User(username,password,null,null);
            boolean flg2=checkIf(us,list);
            if(flg2) {
                System.out.println("用户名密码正确,登录成功");
                //创建对象,调用学生管理系统
                StudentSystem stu=new StudentSystem();
                stu.startstudentststem();
                break;
            }
            else{
                System.out.println("用户名或者密码错误,还有"+(cnt)+"次机会");
                cnt--;
            }

            //判断是否还有机会
            if(cnt==0){
                System.out.println("登录失败,用户已经锁定");
                break;
            }
        }
    }
注册
private static void register(ArrayList<User> list) {
        Scanner sc = new Scanner(System.in);

        User us = new User();

        //设置用户名
        while (true) {
            //键盘录入用户名
            System.out.println("请输入用户名");
            String username = sc.next();

            //验证格式是否正确
            //长度在3-15之间,
            //组合为字母加数字,不能为纯数字
            boolean flg1 = checkusername(username);
            if (!flg1) {
                System.out.println("格式不正确,请重新输入");
                continue;
            }

            //验证用户名唯一
            boolean flg2 = contains(list, username);
            if (!flg2) {
                System.out.println("用户名不唯一,请重新输入");
                continue;
            }
            us.setUsername(username);
            break;
        }

        //设置密码
        //两次输入一致
        while (true) {
            System.out.println("请输入密码");
            String password1 = sc.next();
            System.out.println("请二次输入密码");
            String password2 = sc.next();

            if (password1.equals(password2)) {
                System.out.println("密码设置成功");
                us.setPassword(password1);
                break;
            } else {
                System.out.println("两次密码输入不同,请重新输入");
            }
        }

        //设置身份证号码
        //长度为18位
        //不能以0开头
        //前十七位必须为数字
        //最后一位可以是数字,也可以是大写X或者小写x
        while (true) {
            System.out.println("请输入身份证号码");
            String personid = sc.next();

            //验证格式是否正确
            boolean flg = checkpersonid(personid);
            if (!flg) {
                System.out.println("格式错误,请重新输入身份证号");
            } else {
                us.setPersonID(personid);
                break;
            }
        }

        //设置手机号码
        //长度为11位
        //不能以0开头
        //必须都是数字
        while (true) {
            System.out.println("请输入电话号码");
            String phonenumber = sc.next();
            //检查格式
            boolean flg = checkphonernumber(phonenumber);
            if (flg) {
                us.setPhoneNumber(phonenumber);
                break;
            } else {
                System.out.println("格式错误,请重新输入");
            }
        }

        list.add(us);
        System.out.println("注册成功");
        System.out.println("用户名\t密码\t身份证号\t手机号");
        System.out.println(us.getUsername() + "\t" + us.getPassword() + "\t" + us.getPersonID() + "\t" + us.getPhoneNumber());
    }
忘记密码
 private static void forgetPassword(ArrayList<User> list) {
        Scanner sc=new Scanner(System.in);

        //输入用户名
        String username= sc.next();

        //判断是否注册
        boolean flg1=contains(list,username);
        if(flg1){
            System.out.println("用户名"+username+"为注册");
            return ;
        }

        //输入身份证号
        System.out.println("请输入身份证号");
        String personid= sc.next();
        //输入手机号
        System.out.println("请输入手机号码");
        String phonenumber=sc.next();

        //判断手机号码,身份证号是否一致
        User us=new User(null,null,personid,phonenumber);
        int  flg2=getppindex(us,list);

        if(flg2 >=0){
            System.out.println("信息正确,请输入密码");
            String password=sc.next();

            //修改密码
            list.remove(flg2);
            User usu=new User(username,password,personid,phonenumber);
            list.add(usu);
            System.out.println("修改成功,新的密码为"+password);
        }
        else{
            System.out.println("信息不匹配,修改失败");
        }

    }
判断用户名是否存在
private static boolean contains(ArrayList<User> list, String username) {
        for (User user : list) {
            String un = user.getUsername();
            if (un.equals(username)) {
                return false;
            }
        }
        return true;
    }
验证用户名格式是否正确
 private static boolean checkusername(String username) {
        //长度在3-15之间,
        int len = username.length();
        if (len < 3 || len > 15) {
            return false;
        }

        //组合为字母加数字,不能为纯数字
        for (int i = 0; i < len; i++) {
            char c = username.charAt(i);
            //只能为字母或者数字
            if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'))) {
                return false;
            }
        }
验证身份证格式是否正确
  private static boolean checkpersonid(String personid) {
        //长度为18位
        int len = personid.length();
        if (len != 18) return false;

        //不能以0开头
        char num1 = personid.charAt(0);
        if (num1 == '0') return false;

        //前十七位都是数字
        for (int i = 1; i < 17; i++) {
            char c = personid.charAt(i);
            if (!(c >= '0' && c <= '9')) return false;
        }

        //最后一位可以是数字或者X,x
        char num18 = personid.charAt(0);
        if (!((num18 >= '0' && num18 <= '9') || num18 == 'X' || num18 == 'x')) return false;

        return true;
    }
验证手机号码格式是否正确
private static boolean checkphonernumber(String phonenumber) {
        //长度为11
        int len = phonenumber.length();
        if (len != 11) return false;

        //不能以0开头
        char num1 = phonenumber.charAt(0);
        if (num1 == '0') return false;

        //必须都是数字
        for (int i = 1; i < phonenumber.length(); i++) {
            char c = phonenumber.charAt(i);
            if (!(c >= '0' && c <= '9')) return false;
        }
        return true;
    }
生成验证码
private static String getCode() {
        ArrayList<Character> list=new ArrayList<>();
        for(int i=0;i<26;i++){
            list.add((char)('a'+i));
            list.add((char)('A'+i));
        }


        StringBuilder sb=new StringBuilder();

        Random r=new Random();
        //随机抽取四个字母
        for(int i=0;i<4;i++){
            int index=r.nextInt(list.size());
            sb.append(list.get(index));
        }

        //随机抽取一位数字
        int num=r.nextInt(10);//包头不包尾
        sb.append(num);

        //把他变为字符数组
        //随机选择字符数组的一位与最后一位交换位置
        char[] arr=sb.toString().toCharArray();
        int index=r.nextInt(sb.length());
        char c=arr[index];
        arr[index]=arr[4];
        arr[4]=c;

        return new String(arr);
    }
判断账号密码是否相同
private static boolean checkIf(User us,ArrayList<User> list){
        for(int i=0;i<list.size();i++){
            User sus=list.get(i);
            if(us.getUsername().equals(sus.getUsername())&&us.getPassword().equals(sus.getPassword())) return true;
        }
        return false;
    }
判断手机号码,身份证号是否一致,返回下标
 private static int getppindex(User us,ArrayList<User> list){
        for (int i = 0; i < list.size(); i++) {
            User usu=list.get(i);
            if(us.getPersonID().equals(usu.getPersonID())&&us.getPhoneNumber().equals(usu.getPhoneNumber())) return i;
        }
        return -1;
    }

总结概括

这里拿来总结一下用到的我学到的比较有用的知识点

零散数据的比较

可以把他们放入一个类中,然后进行比较

获取验证码的时候打乱数据

可以先将StringBuilder 转化为字符数字类型,随机生成一个位置与最后一个位置交换

character表示每一个字符串的地址

arrayList只能存储地址,如果要生成字符的集合,要用character

while循环内部变量作用域

作用域终止于while循环,变量在while外部不能使用

巩固了各种方法的使用
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值