当前位置: 首页 > article >正文

Java项目练习——学生管理系统

1. 整体结构

代码实现了基本的学生管理系统功能,包括登录、注册、忘记密码、添加、删除、修改和查询学生信息。
使用了ArrayList来存储用户和学生信息。
使用了Scanner类来处理用户输入。

2. 主要功能模块

登录 (logIn):验证用户名和密码,支持验证码校验。
注册 (register):验证用户名、密码、身份证号和手机号。
忘记密码 (forgetPassword):通过用户名、身份证号和手机号验证后修改密码。
管理学生信息 (Manage):提供添加、删除、修改和查询学生信息的功能。

如果有问题,希望大家指正

Student_JavaBean

package student_Management_System;

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

    public Student_JavaBean() {
    }

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

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

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

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

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

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

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

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

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

User_JavaBean

package student_Management_System;
public class User_JavaBean {
    //属性:用户名、密码、身份证号码、手机号码
    private String username;
    private String password;
    private String idCard;
    private String phone;

    public User_JavaBean() {
    }

    public User_JavaBean(String username, String password, String idCard, String phone) {
        this.username = username;
        this.password = password;
        this.idCard = idCard;
        this.phone = phone;
    }

    /**
     * 获取
     * @return username
     */
    public String getUsername() {
        return username;
    }

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

    /**
     * 获取
     * @return password
     */
    public String getPassword() {
        return password;
    }

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

    /**
     * 获取
     * @return idCard
     */
    public String getIdCard() {
        return idCard;
    }

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

    /**
     * 获取
     * @return phone
     */
    public String getPhone() {
        return phone;
    }

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

主函数

package student_Management_System;

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

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

        ArrayList<Student_JavaBean>list=new ArrayList<>();
        ArrayList<User_JavaBean> user=new ArrayList<>();
        Scanner sc=new Scanner(System.in);
        while(true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");
            int choose_up = sc.nextInt();
            switch (choose_up) {
                case 1: {
                    logIn(user,list);
                    break;
                }
                case 2:
                    register(user);
                    searchUsername(user);
                    break;

                case 3:
                    //       1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
                    //      2,键盘录入身份证号码和手机号码
                    //	    3,判断当前用户的身份证号码和手机号码是否一致,
                    //			如果一致,则提示输入密码,进行修改。
                    //			如果不一致,则提示:账号信息不匹配,修改失败。
                    forgetPassword(user);
                    break;
                case 4:
                    return;
                default:
                    System.out.println("输入错误");
                    break;
            }
        }
    }
    public static void logIn(ArrayList<User_JavaBean>user,ArrayList<Student_JavaBean>list) {
        //用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
        //判断验证码是否正确,如不正确,重新输入
        //再判断用户名和密码是否正确,有3次机会
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入用户名");
            String username = sc.next();
            boolean flag = checkHava(user,username);
            if (flag) {
                int count = 2;
                while (count >= 0) {
                    System.out.println("请输入密码");
                    String password = sc.next();
                    int flag2 = (index(user, username));
                    if (flag2 >= 0) {
                        if (user.get(index(user, username)).getPassword().equals(password)) {
                            break;
                        }
                        System.out.println("密码错误还有" + count + "次机会");
                        if (count == 0) {
                            return;
                        }
                        count--;
                    }
                }
                break;
            }
            else {
                System.out.println("登录失败,用户名不存在,请按下其它数字键重新输入,按下0退出程序");
                int temp = sc.nextInt();
                if (temp == 0) {
                    return;
                }
            }
        }
        while (true) {
                System.out.println("请输入验证码");
                String newVerificationCode = verificationCode();
                System.out.println(newVerificationCode);
                String verificationCode = sc.next();
                if (verificationCode.equals(newVerificationCode)) {
                    break;
                }
            }
        System.out.println("登录成功");
            Manage(list);
    }
    public static void Manage(ArrayList<Student_JavaBean>list){
        Scanner sc=new Scanner(System.in);
        while (true) {
            int choose = menu(sc);
            switch (choose) {
                case 1:
                    add(list);
                    break;
                case 2:
                    delete(list);
                    break;
                case 3:
                    upData(list);
                    break;
                case 4:
                    search(list);
                    break;
                case 5:
                    System.out.println("退出");
                    return;
                default:
                    System.out.println("输入错误重新输入");
                    break;
            }
        }
    }
       public static void forgetPassword(ArrayList<User_JavaBean> user) {
       Scanner sc = new Scanner(System.in);
       while (true) {
           System.out.println("请输入用户名");
           String username = sc.next();
           int index = index(user, username);
           if (index == -1) {
               System.out.println("用户名不存在,请按下其它数字键重新输入,按下0退出程序");
               int temp = sc.nextInt();
               if (temp == 0) {
                   return;
               }
               continue;
           }

           while (true) {
               System.out.println("输入用户的身份证号");
               String IdCard = sc.next();
               if (user.get(index).getIdCard().equals(IdCard)) {
                   break;
               } else {
                   System.out.println("身份证号不匹配,请按下其它数字键重新输入,按下0退出程序");
                   int temp = sc.nextInt();
                   if (temp == 0) {
                       return;
                   }
               }
           }

           while (true) {
               System.out.println("请输入用户的手机号");
               String phone = sc.next();
               if (user.get(index).getPhone().equals(phone)) {
                   break;
               } else {
                   System.out.println("手机号不匹配,请按下其它数字键重新输入,按下0退出程序");
                   int temp = sc.nextInt();
                   if (temp == 0) {
                   return;
                   }
               }
           }
           System.out.println("请输入新密码");
           String newPassword = sc.next();
           user.get(index).setPassword(newPassword);
           System.out.println("修改成功");
           return;
       }
   }
    public static int index(ArrayList<User_JavaBean>user,String temp){
        for (int i = 0; i < user.size(); i++) {
            if(user.get(i).getUsername().equals(temp)){
                return i;
            }
        }
        return -1;
    }
    public static boolean checkHava(ArrayList<User_JavaBean>user,String username)
    {

        for (int i = 0; i < user.size(); i++) {
            if(user.get(i).getUsername().equals(username)){
                return true;
            }
        }
        System.out.println("用户未注册,请先注册");
        return false;
    }
    public static String verificationCode()
    {
        Random random=new Random();
        char[] zLen =new char[5];
        for (int i = 0; i < zLen.length-1; i++) {
            int flag=random.nextInt(2);
            if(flag==0) {
                zLen[i] = (char) (random.nextInt(25) + 65);
            }
            else{
                zLen[i] = (char) (random.nextInt(26) + 97);
            }
        }
        zLen[zLen.length-1]=(char)(random.nextInt(10)+'0');
        for (int i = 0; i < zLen.length; i++) {
            char temp=zLen[i];
            int j=random.nextInt(zLen.length);
            zLen[i]=zLen[j];
            zLen[j]=temp;
        }
        return new String(zLen);
    }
    public static void searchUsername(ArrayList<User_JavaBean>user){
        System.out.println("用户名     身份证号\t\t\t 密码\t  手机\t");
        for (int i = 0; i < user.size(); i++) {
            System.out.println(user.get(i).getUsername()+" "+user.get(i).getIdCard()+" "+user.get(i).getPassword()+"    "+user.get(i).getPhone());
        }
    }
    public static void register(ArrayList<User_JavaBean>user){
        //用户名长度必须在3~15位之间
        //只能是字母加数字的组合,但是不能是纯数字
        //	2,密码键盘输入两次,两次一致才可以进行注册。
        //	3,身份证号码需要验证。
        //		验证要求:
        //			长度为18位
        //			不能以0为开头
        //			前17位,必须都是数字
        //			最为一位可以是数字,也可以是大写X或小写x
        //	4,手机号验证。
        //		验证要求:
        //			长度为11位
        //			不能以0为开头
        //			必须都是数字
        Scanner sc=new Scanner(System.in);
        User_JavaBean uj=new User_JavaBean();
        while(true) {
            System.out.println("请输入用户名(3-15位之间,只能字母加数字,但不能是纯数字)");
            String username = sc.next();
            boolean flag = checkUsername(username);
            if (flag) {
                uj.setUsername(username);
                    break;
            } else {
            System.out.println("注册失败,用户名输入错误,请按下其它数字键重新输入,按下0退出程序");
            if(sc.nextInt()==0){
                return;
            }
            }
        }
        while(true){
            System.out.println("输入密码");
           String password=sc.next();
           if(checkPassword(password)){
               uj.setPassword(password);
               break;
           }
           else{
               System.out.println("两次密码输入不相同,请按下其它数字键重新输入,按下0退出程序");
               if(sc.nextInt()==0){
                   return;
               }
           }
        }
        while(true){
            System.out.println("输入身份证号");
            String inCard=sc.next();
            if(checkInCard(inCard)){
                uj.setIdCard(inCard);
                break;
            }
            else{
                System.out.println("身份证号输入格式错误,请按下其它数字键重新输入,按下0退出程序");
                if(sc.nextInt()==0){
                    return;
                }
            }
        }
        while(true){
            System.out.println("输入手机号");
            String phone=sc.next();
            if(checkPhone(phone))
            {
                uj.setPhone(phone);
                break;
            }
            else{
                System.out.println("手机号输入格式错误,请按下其它数字键重新输入,按下0退出程序");
                if(sc.nextInt()==0){
                    return;
                }
            }
        }
        user.add(uj);
        System.out.println("注册成功!");
    }
    public static boolean checkPassword(String password){
        Scanner sc=new Scanner(System.in);
        System.out.println("请再次输入密码");
        String newPassword=sc.next();
        if(password.equals(newPassword)){
            return true;
        }
        System.out.println("两次输入不相同");
        return false;
    }
    public static boolean checkPhone(String Phone){
        //4,手机号验证。
        //		验证要求:
        //			长度为11位
        //			不能以0为开头
        //			必须都是数字
        char first=Phone.charAt(0);
        char []temp=new char[Phone.length()];
        int count=0;
        if(Phone.length()==11)
        {
            if(first!='0')
            {
                for (int i = 0; i < Phone.length(); i++) {
                    temp[i]=Phone.charAt(i);
                    if(temp[i]>='0'&&temp[i]<='9')
                    {
                        count++;
                    }
                }
                return count == 11;
            }
        }
        return false;
    }
    public static boolean checkInCard(String inCard){
        //		验证要求:
        //			长度为18位
        //			不能以0为开头
        //			前17位,必须都是数字
        //			最为一位可以是数字,也可以是大写X或小写x
        if(inCard.length()==18)
        {
            char first=inCard.charAt(0);
            char []temp=new char[inCard.length()];
            char end=inCard.charAt(17);
            if(first!='0'){
                for (int i = 0; i < inCard.length()-1; i++) {
                    temp[i]=inCard.charAt(i);
                    if(temp[i]>='0'&&temp[i]<='9')
                    {
                        if(end>='0'&&end<='9'||end=='x'||end=='X'){
                            return true;
                        }
                    }
                }
            }
        }
        System.out.println("身份证输入有误");
        return false;
    }
    public static boolean checkUsername(String pwd)
    {
        Scanner sc=new Scanner(System.in);
        int len=pwd.length();
        if(len<3||len>15)
        {
            return false;
        }
        int count=0;
        for (int i = 0; i < pwd.length(); i++) {
            char c=pwd.charAt(i);
            if(!(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c >= '0' && c <= '9'))//判断是否是在允许的范围内
            {
                System.out.println("范围不正确");
            return false;
            }
        }
        for (int i = 0; i < pwd.length(); i++) {
            char c=pwd.charAt(i);//判断是否是纯数字
            if(c>='0'&&c<='9'){
                count++;
            }
            }
        if(count==pwd.length()){
            System.out.println("不能是纯数字");
            return false;
        }
        return true;
        }

    public static boolean checkId(ArrayList<Student_JavaBean>list,String id)
    {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getId().equals(id)){
                return true;
            }
        }
        return false;
    }
    public static void delete(ArrayList<Student_JavaBean>list)
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入需要删除的id");
        String id=sc.next();
        boolean flag=checkId(list,id);
        if(!flag){
            System.out.println("该id不存在");
            return;
        }
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getId().equals(id)){
                list.remove(i);
                break;
            }
        }
        System.out.println("删除成功");
    }
    public static void upData(ArrayList<Student_JavaBean>list) {
        Scanner sc = new Scanner(System.in);
        Student_JavaBean sj=new Student_JavaBean();
        System.out.println("请输入需要修改的id");
        String id = sc.next();
        boolean flag=checkId(list,id);
        if(!flag){
            System.out.println("不存在该id");
            return;
        }
        System.out.println("请输入修改类型:1.id 2.姓名 3.年龄 4.地址");
        int type=sc.nextInt();
        switch (type) {
            case 1: {
                for (int i = 0; i < list.size(); i++) {
                    if (list.get(i).getId().equals(id)) {
                        System.out.println("输入新的id");
                        String newId = sc.next();
                        sj.setId(newId);
                        list.get(i).setId(newId);
                        System.out.println("修改成功");
                        break;
                    }
                }
                break;
            }
            case 2: {
                for (int i = 0; i < list.size(); i++) {
                    if (list.get(i).getId().equals(id)) {
                        System.out.println("输入新的姓名");
                        String newName = sc.next();
                        sj.setName(newName);
                        list.get(i).setName(newName);
                        System.out.println("修改成功");
                        break;
                    }
                }
                break;
            }
            case 3: {
                for (int i = 0; i < list.size(); i++) {
                    if (list.get(i).getId().equals(id)) {
                        System.out.println("输入新的年龄");
                        int newAge = sc.nextInt();
                        sj.setAge(newAge);
                        list.get(i).setAge(newAge);
                        System.out.println("修改成功");
                        break;
                    }
                }
                break;
            }
            case 4:
            {
                for (int i = 0; i < list.size(); i++) {
                    if (list.get(i).getId().equals(id)) {
                        System.out.println("输入新的地址");
                        String newAddress = sc.next();
                        sj.setAddress(newAddress);
                        list.get(i).setAddress(newAddress);
                        System.out.println("修改成功");
                        break;
                    }
                }
                break;
            }
            default:
                System.out.println("输入有误");
                break;
        }
    }
    public static void search(ArrayList<Student_JavaBean> list)
    {
        if(list.size()==0)
        {
            System.out.println("当前无学生信息,请添加后再查询");
        }
        else{
            System.out.println("id\t\t姓名\t年龄\t地址\t");
        for (int i = 0; i < list.size(); i++) {
            Student_JavaBean su=list.get(i);
            System.out.println(su.getId()+"\t"+su.getName()+"\t"+su.getAge()+"\t"+su.getAddress()+"\t");
        }
        }
    }
    public static void add(ArrayList<Student_JavaBean>list){
        Student_JavaBean s=new Student_JavaBean();
        Scanner sc=new Scanner(System.in);

        System.out.println("输入id:");
        String id=sc.next();
        s.setId(id);
        boolean flag=checkId(list,id);
        if(flag){
            System.out.println("该id已存在");
            return;
        }

        System.out.println("输入姓名:");
        String name=sc.next();
        s.setName(name);

        System.out.println("输入年龄:");
        int age=sc.nextInt();
        s.setAge(age);

        System.out.println("输入地址:");
        String address=sc.next();
        s.setAddress(address);

        list.add(s);
        System.out.println("添加成功");
    }
    public static int menu(Scanner sc)
    {
        int choose;
        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.print("\"请输入您的选择:\"");
        choose=sc.nextInt();
        return choose;
    }

}


http://www.kler.cn/a/372845.html

相关文章:

  • (五)Web前端开发进阶2——AJAX
  • 目标检测:YOLOv11(Ultralytics)环境配置,适合0基础纯小白,超详细
  • 从0开始学python-day18-Python包和模块2
  • 【总目录】
  • 哈希表 算法专题
  • C语言之环形缓冲区概述及实现
  • MR30分布式IO:石化行业的智能化革新
  • IIC学习总结
  • CodeS:构建用于文本到 SQL 的开源语言模型
  • list类模拟实现
  • 从0学习React(7)
  • Maven(18)如何使用Maven打包项目?
  • 1通道10GSPS或2通道5G 14 bit数字化仪
  • 跟着小土堆学习pytorch(六)——神经网络的基本骨架(nn.model)
  • 命令如诗,步入Linux的晨曦:指令初学者的旅程(下)
  • 日期差值题目(也可能是最容易看懂的了)
  • UG NX二次开发(C#)-计算圆柱面与其他平面的夹角
  • 第十二课 Vue中的事件修饰符
  • ubuntu系统docker容器中的torch,使用宿主机的gpu
  • 如何将原本打开Edge呈现出的360浏览器,更换成原本的Edge页面或者百度等其他页面
  • JavaFX WebView + Vue初始化加载数据解决方案
  • 基于javaweb的流浪宠物管理系统的设计与实现源码(springboot)
  • 大数据-197 数据挖掘 机器学习理论 - scikit-learn 泛化能力 交叉验证
  • 视频设备一体化监控运维方案
  • openGauss开源数据库实战十四
  • Flink难点和高频考点:Flink的反压产生原因、排查思路、优化措施和监控方法