学生管理系统(Java实现)

一个小小的练习,仅供参考,没有那么高大上,小白在线。

 学生管理系统升级版实现

1.需求

2.分析

3.代码实现

4.输出结果

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

三、代码实现

定义用户类

package day_12;

public class user {
    private String userName;
    private String password;
    private String userId;
    private String phoneNumber;

    public user() {
    }

    public user(String userName, String password, String userId, String phoneNumber) {
        this.userName = userName;
        this.password = password;
        this.userId = userId;
        this.phoneNumber = phoneNumber;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

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

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

定义学生类

package day_12;

public class student {
    private String name;
    private String id;
    private String address;
    private int age;
    private String major;

    public student() {
    }

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

    public String getName() {
        return name;
    }

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

    public String getId() {
        return id;
    }

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

    public String getAddress() {
        return address;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }
}

再Text类中定义Main方法进行代码实现

package day_12;

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

public class TextStudent {
    public static void main(String[] args) {
        ArrayList<user> list = new ArrayList<>();
        while (true) {
            System.out.println("----------欢迎来到学生管理系统----------");
            System.out.println("请选择你的操作:1.登录,2.注册,3.忘记密码,4.退出");
            System.out.println("------------------------------------");
            Scanner input = new Scanner(System.in);
            String choose = input.next();
            switch (choose) {
                case "1" -> denRu(list);
                case "2" -> zhuCe(list);
                case "3" -> forgetPassword(list);
                case "4" -> {
                    System.out.println("谢谢使用!!");
                    System.exit(0);
                }
                default -> System.out.println("没有这个选项,请重新输入你的选项!!");
            }
        }
    }

    public static void denRu(ArrayList<user> list) {
        if (list.size() == 0) {
            System.out.println("请先注册再登录!!");
            return;
        }
        int count = 3;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String userName = input.next();
        boolean flag1 = false;
        boolean flag2 = false;
        while (true) {
            System.out.println("请输入密码:");
            String password = input.next();
            System.out.println("请输入验证码:");
            String Code = Code();
            System.out.println(Code);
            String code = input.next();
            for (int i = 0; i < list.size(); i++) {
                user u = list.get(i);
                if (u.getUserName().equals(userName)) {
                    flag2 = true;
                    if (!u.getPassword().equals(password)) {
                        count--;
                        if (count > 0) {
                            System.out.println("密码错误,请重新输入密码!!");
                        }
                        flag1 = true;
                        break;
                    } else {
                        if (!Code.equals(code)) {
                            while (true) {
                                System.out.println("验证码不正确,请重新输入验证码!!");
                                Code = Code();
                                System.out.println(Code);
                                code = input.next();
                                if (!Code.equals(code)) {
                                    continue;
                                } else {
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            if (count == 0) {
                System.out.println("请重新登录!!");
                return;
            }
            if (flag1) {
                System.out.println("你还剩下" + count + "次机会输入密码");
                continue;
            }
            if (!flag2) {
                System.out.println("用户名不存在,请注册后再登录!!");
                return;
            }
            break;
        }
        System.out.println("登陆成功!!");
        Student();
    }

    public static void zhuCe(ArrayList<user> list) {
        Scanner input = new Scanner(System.in);
        user u = new user();
        while (true) {
            System.out.println("请输入用户名:(用户名在3-15位之间的数字加字母组合)");
            String userName = input.next();
            if (!checkUserName(userName)) {
                System.out.println("你输入的用户名格式不正确,请重新输入!!");
                continue;
            }
            u.setUserName(userName);
            if (contains(list, userName) >= 0) {
                System.out.println("该用户名已存在,请重新输入!!");
                continue;
            } else {
                list.add(u);
                break;
            }
        }
        while (true) {
            System.out.println("请输入你的密码:");
            String password1 = input.next();
            System.out.println("请确认你的密码:");
            String password2 = input.next();
            if (password1.equals(password2)) {
                u.setPassword(password1);
                break;
            } else {
                System.out.println("你输入的密码不一样,请重新输入!!");
                continue;
            }
        }
        while (true) {
            System.out.println("请输入你的身份证号码:");
            String userId = input.next();
            if (check(userId)) {
                System.out.println("身份证号合法");
                u.setUserId(userId);
                break;
            } else {
                System.out.println("身份证不合法,请重新输入!!");
            }
        }
        while (true) {
            System.out.println("请输入你的手机号码:");
            String phoneNumber = input.next();
            if (!checkPhoneNumber(phoneNumber)) {
                System.out.println("你输入的手机号码不合法,请重新输入!!");
                continue;
            }
            u.setPhoneNumber(phoneNumber);
            System.out.println("手机号合法,恭喜你账号" + u.getUserName() + "注册成功!!");
            break;
        }
    }


    public static void forgetPassword(ArrayList<user> list) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = input.next();
        boolean flag = true;
        for (int i = 0; i < list.size(); i++) {
            user u = list.get(i);
            if (u.getUserName().equals(username)) {
                flag = false;
                System.out.println("请输入你的身份证号码:");
                String userId = input.next();
                System.out.println("请输入你的手机号码:");
                String phoneNumber = input.next();
                if (u.getPhoneNumber().equals(phoneNumber) && u.getUserId().equals(userId)) {
                    System.out.println("请输入新密码:");
                    String newPassword = input.next();
                    u.setPassword(newPassword);
                } else {
                    System.out.println("账号信息不匹配,修改密码失败!!");
                }
            }
        }
        if (flag) {
            System.out.println("该账号未注册!!");
            return;
        }
        System.out.println("修改密码成功!!");
    }

    private static boolean checkUserName(String username) {
        if (!(username.length() >= 3 && username.length() <= 15)) {
            return false;
        }
        for (int i = 0; i < username.length(); i++) {
            char c = username.charAt(i);
            if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'))) {
                return false;
            }
        }
        int count = 0;
        for (int i = 0; i < username.length(); i++) {
            char c = username.charAt(i);
            if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
                count++;
                break;
            }
        }
        return count > 0;
    }

    public static int contains(ArrayList<user> list, String userName) {
        for (int i = 0; i < list.size(); i++) {
            user u = list.get(i);
            if (u.getUserName().equals(userName)) {
                return i;
            }
        }
        return -1;
    }

    public static boolean check(String str) {
        if (str == null) {
            return false;
        }
        char[] arr = str.toCharArray();
        if (arr.length == 18) {
            for (int i = 1; i < arr.length - 1; i++) {
                if (!(arr[i] >= '0' && arr[i] <= '9')) {
                    return false;
                }
            }
            if (!(arr[0] > '0' && arr[0] <= '9')) {
                return false;
            }
            if (!(arr[arr.length - 1] >= '0' && arr[arr.length - 1] <= '9')) {
                if (arr[arr.length - 1] == 'X' || arr[arr.length - 1] == 'x') {
                    return true;
                }
                return false;
            }
        } else {
            return false;
        }
        return true;
    }

    public static boolean checkPhoneNumber(String phoneNumber) {
        if (phoneNumber == null) {
            return false;
        }
        if (phoneNumber.length() == 11) {
            char[] arr = phoneNumber.toCharArray();
            if (!(arr[0] > '0' && arr[0] <= '9')) {
                return false;
            }
            for (int i = 1; i < arr.length; i++) {
                if (!(arr[i] >= '0' && arr[i] <= '9')) {
                    return false;
                }
            }
        } else {
            return false;
        }
        return true;
    }

    public static String Code() {
        char[] ch = new char[52];
        for (int i = 0; i < ch.length; i++) {
            if (i < 26) {
                ch[i] = (char) (i + 65);
            } else {
                ch[i] = (char) (i + 97 - 26);
            }
        }
        Random r = new Random();
        int index;
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < 5; i++) {
            index = r.nextInt(ch.length);
            str.append(ch[index]);
        }
        String newStr = str.toString();
        char[] arr = newStr.toCharArray();
        int num = r.nextInt(48, 57);
        int arrIndex = r.nextInt(arr.length);
        arr[arrIndex] = (char) num;
        String result = new String(arr);
        return result;
    }

    public static void Student() {
        ArrayList<student> newList = new ArrayList<>();
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.println("----------欢迎使用学生管理系统----------");
            System.out.println("请输入你的选项: 1.添加学生信息 2.删除学生信息 3.修改学生信息 4.查询学生信息 5.返回 6.退出");
            System.out.println("------------------------------------");
            String choose = input.next();
            switch (choose) {
                case "1" -> addStudent(newList);
                case "2" -> deleteStudent(newList);
                case "3" -> updateStudent(newList);
                case "4" -> showStudent(newList);
                case "5" -> {
                    return;
                }
                case "6" -> {
                    System.out.println("谢谢使用!!");
                    System.exit(0);
                }
            }
        }
    }

    public static void showStudent(ArrayList<student> newList) {
        if (newList.size() == 0) {
            System.out.println("无学生信息!!");
            return;
        }
        for (int i = 0; i < newList.size(); i++) {
            student stu = newList.get(i);
            System.out.println("\t\t姓名\t\t\t" + "学号\t\t\t" + "家庭住址\t\t\t" + "年龄\t\t\t" + "专业");
            System.out.println("\t\t" + stu.getName() + "\t\t" + stu.getId() + "\t\t" + stu.getAddress() + "\t\t"
                    + stu.getAge() + "\t\t" + stu.getMajor());
        }
    }

    public static void updateStudent(ArrayList<student> newList) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你要修改学生信息的学生学号:");
        String id = input.next();
        boolean flag = false;
        for (int i = 0; i < newList.size(); i++) {
            student stu = newList.get(i);
            if (stu.getId().equals(id)) {
                flag = true;
                System.out.println("请输入学生姓名:");
                String newName = input.next();
                stu.setName(newName);
                System.out.println("请输入学生的家庭住址:");
                String newAddress = input.next();
                stu.setAddress(newAddress);
                System.out.println("请输入学生的年龄:");
                int newAge = input.nextInt();
                stu.setAge(newAge);
                System.out.println("请输入学生的专业:");
                String newMajor = input.next();
                stu.setMajor(newMajor);
                newList.set(i, stu);
                System.out.println("学生信息修改成功!!");
            }
        }
        if (!flag) {
            System.out.println("学生信息不存在!!");
            return;
        }
    }

    public static void deleteStudent(ArrayList<student> newList) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你要删除学生的学号:");
        String id = input.next();
        boolean flag = false;
        for (int i = 0; i < newList.size(); i++) {
            student stu = newList.get(i);
            if (stu.getId().equals(id)) {
                flag = true;
                newList.remove(i--);
                System.out.println("学生信息删除成功!!");
            }
        }
        if (!flag) {
            System.out.println("学号不存在,删除失败!!");
            return;
        }
    }

    public static void addStudent(ArrayList<student> newList) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入学生的姓名:");
        String stuName = input.next();
        String stuId = null;
        while (true) {
            System.out.println("请输入学生的学号:");
            stuId = input.next();
            if (!checkStuId(newList, stuId)) {
                System.out.println("该学号已存在,请重新输入学的学号!!");
                continue;
            }
            break;
        }
        System.out.println("请输入学生的家庭住址:");
        String stuAddress = input.next();
        System.out.println("请输入学生的年龄:");
        int stuAge = input.nextInt();
        System.out.println("请输入学生的专业:");
        String stuMajor = input.next();
        student stu = new student(stuName, stuId, stuAddress, stuAge, stuMajor);
        newList.add(stu);
        System.out.println("学生信息添加成功!!");
    }

    public static boolean checkStuId(ArrayList<student> newList, String id) {
        for (int i = 0; i < newList.size(); i++) {
            student stu = newList.get(i);
            if (stu.getId().equals(id)) {
                return false;
            }
        }
        return true;
    }
}

四、输出结果

 

 

五、小结

*作为java小白,这对于我们来说还是有一定难度的,这让我了解到哪些纯软件的东西写起来需要进过很长时间的沉淀和调试的过程

*代码中的几个用来判断的方法需要注意的是,方法的返回值类型特别是验证码的生成,需要用到随机数

*再Main方法中也有很多需要注意的点,比如用户的id是否已存在,如果不存在需要先进行注册,当程序运行到不是自己想要的结果时,需要及时的进行调试

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
安卓学生管理系统 学生管理系统需求分析报告 ——移动互联网开发一班第七小组一:需求背景学生信息管理系统是具有统计,管理学生和老师各种在校相关信息,方便学校对于学生信息的统一管理的系统。 随着高校的扩招,需要处理的学生信息日趋加大,不仅花费大量的教师资源,处理的效率还十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它解决了学生管理数据信息量大,修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息,成为管理高校中必不可少的管理工具。二:需求概述(1)目标学生信息管理系统的目标是为方便学校教务处系统的管理学生信息并学校和学生间提供一个信息共享的平台(2)需求学生管理系统的管理用户国分为三大类,分别是管理员登录功能,教师登录功能以及学生登录功能需求分析*管理员对功能的需求管理员权限最大,可以对学生的班级,课程,情况进行统一的管理,细分如下:超级管理员可增加,修改,删除普通管理员有关学生信息的浏览,,学生信息的添加修改和删除学校基本课程的浏览,学校基本课程的添加修改和删除学生课程的浏览与统计,可按成绩范围对成绩进行统计学生选课信息的管理,包括查询,修改与删除*学生对功能的需求学生利用此系统进行与自己有关的信息查询与输入,细分如下:浏览个人基本信息修改登录密码浏览课程信息浏览在校期间的奖惩情况浏览个人学分信息利用个人账户进行查询选修课程基本信息与选修课程的选择和退出浏览个人选课情况*教师对功能的需求教师对所带班级学生的信息查询与修改,细分如下:教师可利用此系统查询所带班级的基本信息查询所带班级的学生在校期间的奖惩录入与修改所带班级学生的成绩信息查询所带班级学生的成绩信息查询班级学生的选课情况功能模块(一)学生用户功能主要包括以下部分:(1)注册 (2)登录 (3)修改密码 (4)查询个人信息 (5)选课(退课) (6)查询成绩具体功能介绍如下:(1)注册实现功能:创建一条学生记录,由学生自己填写个人信息并保存,实现统一管理个人信息内容:学号,姓名,性别,出生年月,籍贯,民族,学院,班级,宿舍号,个人联系电话,父母联系电话,家庭住址(2)用户登录 实现功能:用户注册后可直接登录,使用查询信息,选课,退课等功能(3)修改密码 实现功能:输入旧密码,输入两次新密码,如旧密码正确且两次新密码一致则用新密码覆盖旧密码,否则重新输入旧密码或者两次新密码不一致重新输入新密码(4)查询个人信息实现功能:在此显示学生的个人信息内容:学号,姓名,性别,出生年月 籍贯 民族 学院 班级 宿舍 联系电话(只可查询不可修改)(5)查询成绩 实现功能:显示入学以来所修课程的所有成绩和学分等信息(6)选课(退课) 实现功能:在学校规定时间内为学生提供网上选课及退课功能以及查看个人选课信息 约束:1.只能选择人数未满的课程及未修的课程 2.只能退已选课程(二)教师学生用户功能主要包括以下部分:(1)注册 (2)登录(3)查看个人信息(4)查看全校学生信息(5)录入成绩 (6)修改密码具体功能介绍如下:注册实现功能:常见一条教师记录,由老师自己填写并保存,实现统一管理个人信息内容:教师编号 姓名 性别 出生年月 籍贯 民族 学院 联系电话用户登录实现功能:用户注册后可直接登录用于查看个人信息 查看学生信息 以及实现录入学生成绩等功能(3)修改密码实现功能:输入旧密码,输入两次新密码,如旧密码正确且两次新密码一致则用新密码覆盖旧密码,否则重新输入旧密码或者两次新密码不一致重新输入新密码(4)查询个人信息实现功能:显示教师的个人信息显查询内容:教师编号 姓名 性别 出生年月 籍贯 民族 学院 联系方式(5)查看学生成绩信息实现功能:查询所有学生的课程成绩信息查询流程:选择学生所属院系—>专业—>班级—>学年(6)录入成绩实现功能:教师录入所带班级学生成绩信息(三)管理员用户功能主要包括以下部分:(1)登录学生/教师端信息管理 (2)登录课程信息管理 (3)宿舍信息管理具体功能介绍如下:登录实现功能:管理员身份验证,学生信息管理 教师信息管理 宿舍信息管理学生/教师信息管理实现功能:对在校学生/教师的信息的增删改查等功能实现流程:学生:选择个人信息或成绩信息,输入相应学号进行相应的查询与更新功能教师:输入教师编号查询教师信息并进行相应的操作课程信息管理实现功能:创建课程信息 包括课程编号 课程名称 学时 学分 等相应字段宿舍信息管理实现功能:对学生住宿情况进行统筹管理数据库设计创建学院数据库创建表创建院系信息表 字段有 院系编号 院系名称 院系人数 院系简介 创建专业信息表 字段有 专业编号 专业名称 专业人数 所属院系 院系简介创建辅导
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值