(day6) 自学Java——学生管理系统

目录

1.学生管理系统 

 2.学生管理系统升级


1.学生管理系统 

loop:while(true){

        for(){

        break loop;//给while循环取名loop,break loop;可以跳出while循环

        }

}

或者使用System.exit(0);停止虚拟机运行,相当于让所有代码停止运行。

 

//学生类
public class Student {
    //id,name,age,address
    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;
    }
}

 

//功能代码
import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystem {
    public static void main(String[] args) {
        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.print("请输入您的选择:");
            Scanner sc=new Scanner(System.in);
            String choice=sc.next();
            switch (choice){
                case "1": addStu(list);
                    break;
                case "2":delStu(list);
                    break;
                case "3":changeStu(list);
                    break;
                case "4":searchStu(list);
                    break;
                case "5":{
                    System.out.println("退出");
                    break loop;
                }
                default:System.out.println("没有这个选项");
                    break;
            }
        }
    }
//添加学生
    public static void addStu(ArrayList<Student> list) {
        Scanner sc=new Scanner(System.in);
        Student stu=new Student();
        while (true) {
            System.out.print("请输入学生id:");
            String id=sc.next();
            boolean flag=checkOnly(list,id);
            if (flag){
                stu.setId(id);
                break;
            }else {
                System.out.println("id已存在,请重新输入");
            }
        }
        System.out.print("请输入学生姓名:");
        String name=sc.next();
        stu.setName(name);
        System.out.print("请输入学生年龄:");
        int age=sc.nextInt();
        stu.setAge(age);
        System.out.print("请输入学生地址:");
        String address=sc.next();
        stu.setAddress(address);
        list.add(stu);
        System.out.println("添加成功!!!");
    }
//删除学生
    public static void delStu(ArrayList<Student> list) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入学生id:");
        String id=sc.next();
        int index=getIndex(list,id);
        if (index>=0){
            list.remove(index);
            System.out.println("删除成功!!!");
        }else {
            System.out.println("id不存在,删除失败");
        }


    }
//修改学生
    public static void changeStu(ArrayList<Student> list) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入学生id:");
        String id=sc.next();
        int index=getIndex(list,id);
        if (index==-1){
            System.out.println("需要修改的"+id+"不存在,请重新输入");
            return;
        }
        Student stu=list.get(index);
        System.out.print("请输入姓名:");
        String newName=sc.next();
        stu.setName(newName);
        System.out.print("请输入年龄:");
        int ageNew=sc.nextInt();
        stu.setAge(ageNew);
        System.out.print("请输入地址:");
        String addressNew=sc.next();
        stu.setName(addressNew);
        System.out.println("修改成功!!!");
    }
//查询学生
    public static void searchStu(ArrayList<Student> list) {
        if (list.size()==0){
            System.out.println("当前无学生信息,请添加后再查询");
            return;
        }
        System.out.println("id\t姓名\t年龄\t家庭地址");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getId()+"\t"+list.get(i).getName()+"\t"+list.get(i).getAge()+"\t"+list.get(i).getAddress());
        }
    }
//判断id在集合中是否存在
    public static boolean checkOnly(ArrayList<Student> list,String id) {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getId().equals(id)){
                return false;
            }
        }
        return true;
    }
    //通过id获取索引
    public static int getIndex(ArrayList<Student> list,String id) {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getId().equals(id)){
                return i;
            }
        }
        //当循环结束之后还没有找到,就表示不存在,返回-1
        return -1;
    }
}

 2.学生管理系统升级

 

 

 

//用户类
package Test1;

public class User {
    private String username;
    private String password;
    private String identifyId;
    private String phoneNum;

    public User() {
    }

    public User(String username, String password, String identifyId, String phoneNum) {
        this.username = username;
        this.password = password;
        this.identifyId = identifyId;
        this.phoneNum = phoneNum;
    }

    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 getIdentifyId() {
        return identifyId;
    }

    public void setIdentifyId(String identifyId) {
        this.identifyId = identifyId;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }
}

 

//功能代码
package Test1;

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

public class App {
    public static void main(String[] args) {
//主界面
        ArrayList<User> list=new ArrayList<>();
            Scanner sc=new Scanner(System.in);
        loop:while (true) {
            System.out.println("-------欢迎来到学生管理系统-------");
            System.out.println("1.登录 2.注册 3.忘记密码 4.退出");
            System.out.print("请选择操作:");
            int choice=sc.nextInt();
            switch(choice){
                case 1:{login(list);break;}
                case 2:{register(list);break;}
                case 3:{forgetPass(list);break;}
                case 4:{
                    System.out.println("谢谢使用,再见");
                    break loop;
                }
                default:{
                    System.out.println("没有这个选项");
                    break;
                }
            }
        }
    }
//登录
    private static void login(ArrayList<User> list) {
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<3;i++) {
            System.out.print("请输入用户名:");
            String username=sc.next();
            boolean flag=userOnly(list,username);
            if(flag){
                System.out.println("用户"+username+"未注册,请先注册");
                return;
            }
            System.out.print("请输入密码:");
            String password=sc.next();

            while (true) {
                String rightCode=getCodeCheck();
                System.out.print("当前验证码为:"+rightCode);
                System.out.print("请输入验证码:");
                String code=sc.next();
                if (code.equalsIgnoreCase(rightCode)){
                    System.out.println("验证码正确");
                    break;
                }else{
                    System.out.println("验证码错误,请重新输入");
                    continue;
                }
            }
            //封装思想:可以把零散的数据,封装成一个对象。以后传递参数的时候,只要传递一个整体就可以了,不需要零散数据。
            User userInfo=new User(username,password,null,null);
            boolean result=checkUserPass(list,userInfo);
            if (result){
                System.out.println("登陆成功,可以开始使用学生管理系统了");
                break;
            }
            else {
                System.out.println("登录失败,用户名或密码错误");
                if (i==2){
                    System.out.println("当前账号"+username+"被锁定,请联系XXXX工作人员");
                    return;
                }else {
                    System.out.println("用户或密码有误,还剩下"+(2-i)+"次机会");
                }
            }
        }
    }
//注册
    private static void register(ArrayList<User> list){
        //1.用户名
        Scanner sc=new Scanner(System.in);
        User u=new User();
        while (true) {
            System.out.print("输入用户名:");
            String username=sc.next();
            boolean flag=checkName(username);
            if (flag){
                //格式满足,判断唯一性
                boolean flag1=userOnly(list,username);
                if (flag1){
                    u.setUsername(username);
                    System.out.println("username successful");
                    break;
                }else {
                    System.out.println("用户名已存在,请重新输入");
                }
            }else {
                System.out.println("用户格式不满足条件,需要重新输入");
            }
        }
        //2.密码
        while (true) {
            System.out.print("请输入密码:");
            String password=sc.next();
            System.out.print("确认密码:");
            String password1=sc.next();
            if(password.equals(password1)){
                u.setPassword(password);
                System.out.println("password successful");
                break;
            }
            else {
                System.out.println("两次密码不一致,请重新输入!");
            }
        }
        //3.身份证号码
        while (true) {
            System.out.print("请输入身份证号码:");
            String identifyId=sc.next();
            boolean flag2=identifyIdNum(identifyId);
            if (flag2){
                u.setIdentifyId(identifyId);
                System.out.println("identifyId successful!");
                break;
            }else {
                System.out.println("身份证号码错误,请重新输入");
            }
        }
        //4.手机号码
        while (true) {
            System.out.print("请输入手机号:");
            String phoneNum=sc.next();
            boolean flag3=checkPhoneNum(phoneNum);
            if (flag3){
                u.setPhoneNum(phoneNum);
                System.out.println("phoneNumber successful!");
                break;
            }else {
                System.out.println("电话号码错误,请重新输入");
            }
        }
        //属性放到用户中,然后将用户放到集合中
        list.add(u);
        printList(list);
    }
//忘记密码
    private static void forgetPass(ArrayList<User> list) {
        Scanner sc=new Scanner(System.in);
        while (true) {
            System.out.print("请输入用户名:");
            String username=sc.next();
            boolean flag=userOnly(list,username);
            if (flag){
                //用户名不存在
                System.out.println("当前用户不存在,请注册");
                return;
            }
            System.out.print("请输入身份证号码");
            String identifyNum=sc.next();
            System.out.print("请输入手机号码:");
            String phoneNum=sc.next();
            int index=checkIdentifyPhone(list,username,identifyNum,phoneNum );
            if (index==-1){
                System.out.println("验证未通过,请重新输入");
            }
            else {
                System.out.println("验证通过,请重新设置密码");
                System.out.print("请输入新密码:");
                String newPass=sc.next();
                System.out.println("请再次确认密码:");
                String newPass1=sc.next();
                if (newPass.equalsIgnoreCase(newPass1)){
                    list.get(index).setPassword(newPass);
                    System.out.println("修改密码成功");
                    break;
                }
            }
        }
    }
//用户名唯一
    private static boolean userOnly(ArrayList<User> list,String username) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getUsername().equals(username)){
                return false;
            }
        }
        return true;
    }
//检查用户名的格式
    private static boolean checkName(String username) {
        int len=username.length();
        int count=0;
        if (len<3||len>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')){
                        count++;
                        break;
                }
        }
        return count>0;
    }
//身份证格式判断
    private static boolean identifyIdNum(String identifyId) {
        if (identifyId.length()!=18){
            return false;
        }
        if (identifyId.charAt(0)=='0') {
            return false;
        }
        for (int i = 0; i < identifyId.length()-1; i++) {
            char word=identifyId.charAt(i);
            if (!(word>='0'&&word<='9')){
                return false;
            }
        }
        char endChar=identifyId.charAt(identifyId.length()-1);
        if ((endChar>='0'&&endChar<='9')||endChar=='x'||endChar=='X'){
            return true;
        }else {
            return false;
        }
    }
//手机号判断
    private static boolean checkPhoneNum(String phoneNum) {
        if (phoneNum.length()!=11){
            return false;
        }
        if (phoneNum.charAt(0)=='0'){
            return false;
        }
        for (int i = 0; i < phoneNum.length(); i++) {
            char c=phoneNum.charAt(i);
            if (!(c>='0'&&c<='9')){
                return false;
            }
        }
        return true;
    }
//打印集合
    private static void printList(ArrayList<User> list) {
        for (int i = 0; i < list.size(); i++) {
            System.out.println("用户名:"+list.get(i).getUsername()+" 密码:"+list.get(i).getPassword()+" 身份证号码:"+list.get(i).getIdentifyId()+" 电话号码:"+list.get(i).getPhoneNum());
        }
    }
//生成验证码
    private static String getCodeCheck() {
        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 randomIndex=r.nextInt(list.size());
            char result=list.get(randomIndex);
            sb.append(result);
        }
        int endNum=r.nextInt(10);
        sb.append(endNum);
        //打乱5位字符
        char[]arr=sb.toString().toCharArray();
        int index=r.nextInt(5);
        for (int i = 0; i < arr.length; i++) {
            char temp=arr[i];
            arr[i]=arr[index];
            arr[index]=temp;
        }
        return new String(arr);
    }
//校验用户名和密码
//遍历集合,判断用户是否存在,如果存在登录成功,不存在就登陆失败
    private static boolean checkUserPass(ArrayList<User>list,User userInfo){
        for (int i = 0; i < list.size(); i++) {
            User user=list.get(i);
            if(user.getUsername().equalsIgnoreCase(userInfo.getUsername())&&user.getPassword().equalsIgnoreCase(userInfo.getPassword())){
                return true;
            }
        }
        return false;
    }
//校验身份证号码和电话号码
    private static int checkIdentifyPhone(ArrayList<User> list,String username,String identify,String phoneNum) {
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getUsername().equalsIgnoreCase(username)){
                if(list.get(i).getIdentifyId().equalsIgnoreCase(identify)&&list.get(i).getPhoneNum().equalsIgnoreCase(phoneNum)){
                    return i;
                }
            }
        }
        return -1;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值