Java学习笔记-黑马微项目

目录

1 飞机票

2 生成一个五位数验证码

3 数字加密

4 数字解密

5 抢红包

6 双色球系统

7 用户登录

8 金额转换

9 手机号屏蔽

10 罗马数字转换

11 调整字符串

12 初级学生管理系统(学生数据的管理)

13 学生管理系统(用户的相关操作)

14 学生管理系统合体

学生信息类

用户类


1 飞机票

代码实现:

import java.util.Scanner;
public class F1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入票价:  ");
        double jia = input.nextDouble();
        System.out.print("请输入月份:  ");
        int yue = input.nextInt();
        System.out.print("请输入你所坐飞机舱(经济舱或头等舱)  ");
        String can = input.next();
        methodjia(jia,yue,can);
    }
    private static void methodjia(double jia, int yue, String can) {
        if (yue>=5 && yue<=10){
            if (can.equals("经济舱")){
                jia=jia*0.85;
            }else if(can.equals("头等舱")) {
                jia = jia * 0.9;
            }else
                System.out.println("输入错误");
                return;
        } else if((yue>10 && yue<=12) || (yue<5 && yue>0)){
            if (can.equals("头等舱")){
                jia=jia*0.7;
            }else if(can.equals("经济舱")){
                jia=jia*0.65;}
            else
                System.out.println("输入错误");
                return;
        } else if(yue<0||yue>12){
        System.out.println("错误");
        return;}
        System.out.println(jia);
    }
}

2 生成一个五位数验证码

代码实现:

import java.util.Random;

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

        char []arr = new char[52];
        Random rand = new Random();
        for (int i = 0; i < 26; i++) {
            arr[i] = (char) (65+i);
        }
        for (int i = 0; i <26; i++) {
            arr[i+26] = (char) (97+i);
        }
        String s ="";
        for (int i = 0; i < 4; i++) {
            char k = arr[rand.nextInt(52)];
            s=s+k;
        }

        int i = rand.nextInt(10);
        s=s+i;
        System.out.println(s);

    }
}

3 数字加密

代码实现:

import java.util.Scanner;

public class Jm {
    public static void main(String[] args) {
        int num = new Scanner(System.in).nextInt();//输入一个数组

        jiami(intToArray3(num));//方法调用

    }
    private static void jiami(int[] arr) {//加密方法每个位数+5,每个位数对10取模,再倒序

        for (int i = 0; i < arr.length; i++) {
            arr[i]+=5;
        }
        for (int i = 0; i < arr.length; i++) {
            arr[i]%=10;
        }
        for (int i = 0,j = arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        int num = 0;
        for (int i = 0; i < arr.length; i++) {
            num= num*10+arr[i];
        }
        System.out.println(num);
    }
    private static int[] intToArray3(int num){
        int len = String.valueOf(num).length();//得到这个数的长度以便创建数组
        int[] resultArray = new int[len];//创建数组
        while (num != 0){//给数组一一赋值
            resultArray[len-1] = num % 10;
            num = num / 10;
            len--;
        }
        return resultArray;//返回位数组成的数组
    }
}

4 数字解密

import java.util.*;

public class Jiemi {
    public static void main(String[] args) {
        int num = new Scanner(System.in).nextInt();
        jie(int01(num));
    }
    private static void jie(int[] arr){
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]+10<15){
                arr[i] = arr[i]+10;
            }

        }
//        4  3  2  1  0  9 8 7 6 5
//        14 13 12 11 10 9 8 7 6 5
//        9  8   7  6 5  4 3 2 1 0
        for (int i = 0; i < arr.length; i++) {
            arr[i]-=5;
        }
        int shuchu = 0;
        for (int i = 0; i < arr.length; i++) {
            shuchu= shuchu*10+arr[i];
        }

        System.out.println(shuchu);


    }
    private static int[] int01(int num){
        int len = String.valueOf(num).length();
        int[] arr = new int[len];
        while  (num!=0){
            arr[len-1] = num%10;
            num/=10;
            len--;
        }
        return arr;
    }
}

5 抢红包

User类创建

public class User {
    private String name;
    private int money;

    public User(){

    }

    public User(String name,int money){
        this.name=name;
        this.money=money;
    }

    public void show(){
        System.out.println("Name:"+name+" Money:"+money);
    }

    public String getName() {
        return name;
    }

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

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }
}

​

Manage类

import java.util.ArrayList;

public class Manager extends User{

    public Manager(String name, int money) {
        super(name, money);
    }

    public Manager() {
        super();
    }
//需要一个集合用来存储发红包的个数以及各个金额
    public ArrayList<Integer> List(int totalmoney,int count){//发的钱
        ArrayList<Integer> list = new ArrayList<>();

        int leftmoney = super.getMoney();//群主总共的钱

        if(leftmoney < totalmoney) return list;//群主没那么多钱

        int averagemoney = totalmoney/count;//平均每个人
        int modemoney = totalmoney%count;//除不尽的余数加在list最后一个

        for(int i = 0 ; i < count-1 ; i++){
            list.add(averagemoney);
        }

        super.setMoney(leftmoney - totalmoney);//群主剩的钱

        list.add(modemoney+averagemoney);
        return list;//返回红包集合

    }
}

Member类

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

public class Member extends User{
    public Member() {
        super();
    }

    public Member(String name, int money) {
        super(name, money);
    }

    public void receive(ArrayList<Integer> list){

        int random = new Random().nextInt(list.size());//随即索引

        int num = list.remove(random);//将这个数去除,并且取出

        int money = super.getMoney()+num;//把钱加上

        super.setMoney(money);//更新前的金额

    }
}

调用

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

public class Using {
    public static void main(String[] args) {
        Member A= new Member("贤哥",0);
        Member B = new Member("超哥",0);
        Member C = new Member("小哥",0);
        Manager qun = new Manager("群主",10000);

        System.out.println("原来的钱");
        qun.show();
        A.show();
        B.show();
        C.show();
        System.out.println("================");

        System.out.println("你想发多少");
        int F = new Scanner(System.in).nextInt();

        ArrayList<Integer> list = qun.List(F,3);


        A.receive(list);
        B.receive(list);
        C.receive(list);

        qun.show();
        A.show();
        B.show();
        C.show();
    }
}

运行结果:

6 双色球系统

代码实现:

package itheima;

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

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

        int [] arr = creatarr();
        int [] arr1 = maicaipiao();
        jiage(find(arr,arr1),zuihouyige(arr,arr1));

    }
    private static void jiage(int num,int lannum){
        int hongnum = num-lannum;
        if (hongnum>=0 && lannum==1 &&hongnum<3){
            System.out.println("恭喜中奖5元");

        }else if ((hongnum==4&&lannum==0)||(hongnum==3 && lannum==1)){
            System.out.println("恭喜中奖10元");

        }else if ((hongnum==4&&lannum==1)||(hongnum==5 && lannum==0)){
            System.out.println("恭喜中奖200元");
        } else if(hongnum==5 && lannum==1){
            System.out.println("恭喜中奖3000元");
        }else if(hongnum==6 && lannum==0){
            System.out.println("恭喜中奖500 0000元");
        } else if (hongnum==6 && lannum==1) {
            System.out.println("恭喜中奖1000 0000元");
        }else
            System.out.println("一分钱没中");
    }

    private static int zuihouyige(int [] arr1,int [] arr2){
        int lannum=0;
        if (arr1[6]==arr2[6]){
            lannum=1;
        }
        return lannum;
    }
    private static int[] maicaipiao(){
        Scanner P = new Scanner(System.in);
        //int[] arr = new int[]{P.nextInt(),P.nextInt(),P.nextInt(),P.nextInt(),P.nextInt(),P.nextInt(),P.nextInt()};
        int[] arr = new int[7];
        for (int i = 0; i < 6;) {
            System.out.println("输入第"+(i+1)+"个数:");
            int num = P.nextInt();
            if (num >0 && num<34) {
                if (isPrime(arr,num)){
                    arr[i] = num;
                    i++;
                }else
                    System.out.println("已经存在");
            }else
                System.out.println("输入范围错误");
        }
        System.out.println("输入第7个数:");
        while(true){
            int num7= P.nextInt();
            if (num7>0 && num7<17) {
                    arr[6] = num7;
                    for (int i : arr) {
                        System.out.print(i+" ");
                    }
                    System.out.println(" ");
                    return arr;
            }else
                System.out.println("范围错误");
        }
    }
    private static int[] creatarr() {
        int[] arr = new int[7];//七色球
        Random rand = new Random();

        for (int i = 0; i < arr.length-1;) {
            int suinum = rand.nextInt(33)+1;//前六个数1-33

            if (isPrime(arr, suinum)) {
                arr[i] = suinum;
                i++;
            }
        }
        arr[arr.length-1] = rand.nextInt(16)+1;//第七个数1-16
        return arr;
    }
    private static boolean isPrime(int []arr,int n) {//是不是已经出现没有返回true
        for (int i : arr) {
            if (n==i){
                return false;
            }
        }return true;
    }
    private static int find(int[] arr1, int[] arr2) {//多少个相同的
        int i = 0, j = 0;
        int count = 0;

        while (i < arr1.length && j < arr2.length) {
            if (arr1[i] == arr2[j]) {
                count++;
                i++;  // 移动 arr1 的指针
                j++;  // 移动 arr2 的指针
            } else if (arr1[i] < arr2[j]) {
                i++;
            } else {
                j++;
            }
        }
        return count;
    }
}

7 用户登录

代码实现

用户名三次机会出错退出系统。

用户名正确进入系统输入密码,密码三次错误锁定用户。

import java.util.Scanner;

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

        String Username = "anxian";
        String UserPassword = "123456";
        Scanner sc = new Scanner(System.in);
        String username = null;
        int num = 0;
        while (num < 3) {
            System.out.println("输入你的用户名:");
            username = sc.nextLine();
            if (username.equals(Username)) {
                break;
            }else {
                num++;
                System.out.println("用户名错误,你还有"+(3-num)+"次机会");
            }
        }
        if (username.equals(Username)) {
            for (int i = 0; i < 3; i++) {
                System.out.println("输入你的密码:");
                String password = sc.nextLine();
                if (password.equals(UserPassword)) {
                    System.out.println("登陆成功");
                    break;
                } else {
                    System.out.println("信息错误还有" + (2 - i) + "次机会");
                    if (2-i == 0){
                        System.out.println("用户"+Username+"被锁定,请联系客服。");
                    }
                }
            }
        }
    }
}

8 金额转换

import java.util.Scanner;

public class abc {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n;
        while (true){
            System.out.println("enter a number");
            n = sc.nextInt();
            if ( n>0 && n<9999999 ){
                break;
            }else
                System.out.println("输入错误");
        }

        String str="";
        do {
            int g = n % 10;
            n = n / 10;
            str = daxie(g).concat(str);//变成大写
        } while (n != 0);

        int len = str.length();
        for (int i = 0; i < (7-len); i++) {//把前置零加上
            String s = "零";
            str = s.concat(str);
        }
//方法一
//        char []arr = str.toCharArray();//变成字符数组
//        String last = "";
//        last +=arr[0]+"百";
//        last+=arr[1]+"拾";
//        last+=arr[2]+"万";
//        last+=arr[3]+"千";
//        last+=arr[4]+"百";
//        last+=arr[5]+"拾";
//        last+=arr[6]+"元";
//        System.out.println(last);
        //方法二
        String []arrs = {"百","拾","万","千","百","拾","元"};
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            System.out.print(ch);
            System.out.print(arrs[i]);
        }
    }

    private static String daxie(int n){
        String []arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        return arr[n];
    }
}

9 手机号屏蔽

import java.util.Scanner;

public class abc {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String str1 = str.substring(0, 3);
        String str2 = str.substring(str.length()-4);
        System.out.println(str1+"****"+str2);
    }
}

10 罗马数字转换

 代码实现

import java.util.Scanner;

public class abc {
    public static void main(String[] args) {
        System.out.println("输入一个数字");
        Scanner sc = new Scanner(System.in);
        String str;
        while (true) {
            str = sc.next();
            boolean flag = Isintnum(str);
            if (flag) {
                break;
            }else
                System.out.println("请重新输入");
        }
        StringBuilder p = new StringBuilder();
        for (char c : str.toCharArray()) {
            int i = c - '0';
            p.append(Luoma(i));

        }
        System.out.println(p);


    }
    private static String Luoma(int num){
        String [] arr =  {"","I ","II ","III ","IV ","V ","VI ","VII ","VIII ","IX "};
        return arr[num];
    }
    private static boolean Isintnum(String str){
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) < '0' || str.charAt(i) > '9') {
                return false;
            }
        }
        return true;
    }
}

11 调整字符串

代码实现

import java.util.Scanner;

public class abc {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String next = sc.next();
        String next2 = sc.next();
        boolean flag = false;
        for (int i = 0; i < next.length(); i++) {
            next = xuanzhuan(next);

            if (next2.equals(next)) {
                System.out.println("YES");
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("NO");
        }

    }
    private static String xuanzhuan(String next){
        String s;
        s = next.charAt(0)+"";
        next = next.substring(1);
        next = next+s;
        return next;
    }
}

12 初级学生管理系统(学生数据的管理)

创建一个学生类

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;
    }


    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 StudentManage {
    public static void main(String[] args) {
        ArrayList<Student> students = 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(" ");
            System.out.print("输入你的需求: ");
            Scanner sc = new Scanner(System.in);
            int choice = sc.nextInt();
            switch (choice) {
                case 1: addstudent(students);break;
                case 2: delstudent(students);break;
                case 3: changestudent(students);break;
                case 4: squrestudent(students);break;
                case 5: {
                    System.out.println("已退出学生管理系统");
                    break loop;
                } default:
                    System.out.println("没有这个选项,请重新输入:");
            }
        }
    }
    private static void squrestudent(ArrayList<Student> students) {//查询遍历,(空学生表的判断)
        if (students.isEmpty()) {
            System.out.println("请添加后再查询");
        }else{
            System.out.println("id       姓名 年龄 住址");
            for (Student student : students) {
                System.out.println(student.getId() + " " + student.getName()
                        + " " + student.getAge() + " " + student.getAddress());
            }
        }
    }

    private static void changestudent(ArrayList<Student> students) {//更改学生表的成员,根据id信息更改
        if (students.isEmpty()) {
            System.out.println("请添加后再更改");
        }else{
            Scanner sc = new Scanner(System.in);
            System.out.println("输入id");
            String id = sc.next();
            if(!idtest(students, id)){
                System.out.println("id 匹配成功");
                System.out.println("输入姓名");
                String name = sc.next();
                System.out.println("输入年龄");
                int age = sc.nextInt();
                System.out.println("输入地址");
                String address = sc.next();
                for (Student student : students) {
                    if (student.getId().equals(id)) {
                        student.setId(id);
                        student.setName(name);
                        student.setAge(age);
                        student.setAddress(address);
                        System.out.println("更改成功");
                    }
                }
            }else
                System.out.println("无这个 id 信息,请重新选择你的需求");
        }
    }

    private static void delstudent(ArrayList<Student> students) {
        //删除学生表成员信息,要判断是否存在
        System.out.println("请输入id信息");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();

            for (int i = 0; i < students.size(); i++) {
                if (students.get(i).getId().equals(id)) {
                    students.remove(i);
                    System.out.println("删除成功");
                    break;
                }
                if ( i == students.size() - 1) {
                    System.out.println("无这个学生信息,请添加之后再进行操作");
                }
            }



    }

    private static void addstudent(ArrayList<Student> students) {//添加学生表成员信息

//        System.out.println("分别输入  id  姓名  年龄  住址");
//        Scanner sc = new Scanner(System.in);
//        Student student = new Student(sc.next(),sc.next(),sc.nextInt(),sc.next());//添加方法一
//        students.add(student);
        Student student = new Student();
        Scanner sc = new Scanner(System.in);//添加方法二
        System.out.println("输入id");

        while(true){
            String id = sc.next();
            if (idtest(students,id)) {
                student.setId(id);
                break;
            }else
                System.out.println("id已经存在 请重新输入");
        }

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


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

        System.out.println("输入住址");
        String address = sc.next();
        student.setAddress(address);

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

    }

    private static boolean idtest(ArrayList<Student> students,String id) { // 不存在返回true
        for (Student student : students) {
            if (student.getId().equals(id)) {
                return false;
            }
        }
        return true;
    }
}

13 学生管理系统(用户的相关操作)

三种需求

用户账号注册

用户账号登陆

用户忘记密码

代码实现

1 用户类

public class UserPro {
    private String USerName;
    private String Password;
    private String phoneNum;
    private String personId;
    public UserPro() {}

    public UserPro(String USerName, String Password, String phoneNum, String personId) {
        this.USerName = USerName;
        this.Password = Password;
        this.phoneNum = phoneNum;
        this.personId = personId;
    }

    public String getUSerName() {
        return USerName;
    }

    public void setUSerName(String USerName) {
        this.USerName = USerName;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

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

    public String getPersonId() {
        return personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }
}

2 登录的具体模块实现

import java.util.*;

public class StuProMax {
    public static void main(String[] args) {
        ArrayList<UserPro> userPros = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请输入你的需求: 1 ->登录 2-> 注册 3-> 找回密码 4-> 退出系统");
            int a = sc.nextInt();
            switch (a) {
                case 1:
                    dengLu(userPros);break;
                case 2:
                    zhuCe(userPros);break;
                case 3:
                    zhaoHui(userPros);break;
                case 4:
                    System.out.println("感谢使用");
                    System.exit(0);
                default:
                    System.out.println("没有这个选项");
            }
        }


    }

    private static void zhuCe(ArrayList<UserPro> userPros) {
        //新建对象
        UserPro P = new UserPro();

        //首先用户名输入
        Scanner sc = new Scanner(System.in);
        //用于判断用户名是否添加成功
        boolean yongHu = false;
        //给定三次机会创建
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入你要创建的用户名");
            String name = sc.next();
            //用户名的规范性问题
            //用于统计大小写数字个数
            int count = 0, count1 = 0, count2 = 0;
            //判断是否存在用户名(唯一性)
            boolean equals = false;
            for (UserPro userPro : userPros) {
                equals = userPro.getUSerName().equals(name);
            }
            if (!equals) {
                //长度问题
                if (name.length() >= 3 && name.length() <= 15) {
                    for (char c : name.toCharArray()) {
                        //需要为大小写加数字
                        if (c >= 'A' && c <= 'Z') {
                            count += 1;
                        } else if (c >= 'a' && c <= 'z') {
                            count1 += 1;
                        } else if (c >= '0' && c <= '9') {
                            count2 += 1;
                        } else {
                            System.out.println("非法符号,你还有"+(2-i)+"次机会");
                            break;
                        }
                    }
                } else
                    System.out.println("用户名长度错误,你还有"+(2-i)+"次机会");
            }
            if (count > 0 && count1 > 0 && count2 > 0) {
                P.setUSerName(name);
                System.out.println("用户名注册成功");
                yongHu = true;
                break;
            } else
                System.out.println("需要存在大写字母小写字母数字,你还有"+(2-i)+"次机会");
        }

        //密码输入
        //判断密码输入是否完成
        boolean passWordFirsts = false;
        loop:
        if (yongHu) {
            while (true) {
                //两次密码需要相同
                System.out.println("请输入密码:");
                String passWordFirst = sc.next();
                System.out.println("再次确认密码:");
                String passWordSecond = sc.next();
                if (passWordFirst.equals(passWordSecond) && passWordFirst.length() >= 6) {
                    P.setPassword(passWordFirst);
                    System.out.println("密码设置成功");
                    passWordFirsts = true;
                    break loop;
                } else
                    System.out.println("两次设置的密码不相同或者密码位数未达到六位,请重新输入");
            }
        }
        //身份证号的输入
        boolean personIds = false;
        loop:
        if (passWordFirsts){
            while (true){
                System.out.println("请输入你的身份证号");
                String personId = sc.next();

                if (personId.length()==18) {
                    if (personId.charAt(0) != '0'){
                        String personId2 = personId.substring(0,personId.length()-1);
                        int countNum = 0;
                        if ((personId.charAt(17) >= '0'&& personId.charAt(17) <= '9') || personId.charAt(17) =='x'
                                || personId.charAt(17) =='X'){
                                for (char c : personId2.toCharArray()) {
                                    if (c >= '0' && c <= '9') {
                                        countNum += 1;
                                        if (countNum == 17){
                                            P.setPersonId(personId);
                                            System.out.println("身份证验证成功");
                                            personIds = true;
                                            break loop;
                                        }
                                        }
                                    }
                                }else
                            System.out.println("最后一位数必须是数字或者x,X");

                    }else
                        System.out.println("首位数需要不为0");
                }else
                    System.out.println("长度错误");

            }
        }
        //手机号的输入
        boolean phoneNums = false;
        loop:
        if (personIds){
            while (true){
                System.out.println("请输入你的手机号:");
                String phoneNum = sc.next();

                int countNums = 0;
                if (phoneNum.length() == 11 && phoneNum.charAt(0) == '1') {
                    for (char c : phoneNum.toCharArray()) {
                        if (c >= '0' && c <= '9') {
                            countNums += 1;
                            if (countNums == 11){
                                P.setPhoneNum(phoneNum);
                                System.out.println("电话号码验证成功");
                                phoneNums = true;
                                break loop;
                            }
                        }
                    }
                }else
                    System.out.println("手机号位数输入错误,或者首位数字不为1");
            }
        }
        if (phoneNums){
            userPros.add(P);
            System.out.println("恭喜你注册成功");
        }else{
            System.out.println("注册失败");
            System.out.println();}
    }


    private static void zhaoHui (ArrayList<UserPro> userPros) {
        Scanner input = new Scanner(System.in);
        System.out.println("输入你的账户名");
        //判断账户名是否存在
        boolean yongHu = false;
        String yongHuName = input.next();
        for (UserPro i : userPros) {
            if (i.getUSerName().equals(yongHuName)) {
                yongHu = true;
                System.out.println("请输入你的手机号码");
                String phoneNum = input.next();
                if (phoneNum.equals(i.getPhoneNum())) {
                    System.out.println("请输入你的身份证号码");
                    String personID = input.next();
                    if (personID.equals(i.getPersonId())) {
                        while (true) {
                            //两次密码需要相同
                            System.out.println("请输入新密码:");
                            String passWordFirst = input.next();
                            System.out.println("再次确认密码:");
                            String passWordSecond = input.next();
                            if (passWordFirst.equals(passWordSecond) && passWordFirst.length() >= 6) {
                                i.setPassword(passWordFirst);
                                System.out.println("密码设置成功");
                                break;
                            } else
                                System.out.println("两次设置的密码不相同,或者密码位数未达到6位,请重新输入");
                        }
                    }else
                        System.out.println("身份证号码验证失败");

                }else
                    System.out.println("手机号码验证失败");
            }
            if (!yongHu) {
                System.out.println("账户未存在");
            }
        }
    }
    private static void dengLu(ArrayList<UserPro> userPros) {
        Scanner input = new Scanner(System.in);
        System.out.println("输入你的账户名");
        //判断账户名是否输入成功
        boolean yongHu = false;
        String userDeng = input.next();
        for (UserPro i: userPros){
            if (i.getUSerName().equals(userDeng)) {
                yongHu = true;
                System.out.println("账号输入正确");
                for (int j = 0; j < 3;) {
                    System.out.println("请输入你的密码:");
                    String userMiMa = input.next();
                    if (userMiMa.equals(i.getPassword())) {
                        j+=3;
                        System.out.println("密码正确");
                        for (int k = 0; k < 3;) {
                            System.out.println("这是一段验证码");
                            String yanZeng = yanZengMa();
                            System.out.println(yanZeng);
                            System.out.println("请输入验证码确认");
                            String next = input.next();
                            if (next.equals(yanZeng)) {
                                System.out.println("验证码输入正确,登陆成功");
                                k+=3;
                            }
                            else{
                                k++;
                                System.out.println("验证码输入错误你还有"+(3-k)+"次机会");}
                        }
                    } else {
                        j++;
                        System.out.println("密码错误你还有"+(3-j)+"次机会");}
                }
            }
        }
        if (!yongHu){
            System.out.println("用户尚未注册或者你的密码多次错误或者验证码多次出错,请重试");
        }
    }



    private static String yanZengMa(){
            //验证码生成程序
            char []arr = new char[52];
            Random rand = new Random();
            for (int i = 0; i < 26; i++) {
                arr[i] = (char) (65+i);
            }
            for (int i = 0; i <26; i++) {
                arr[i+26] = (char) (97+i);
            }
            StringBuilder s = new StringBuilder();
            for (int i = 0; i < 4; i++) {
                char k = arr[rand.nextInt(52)];
                s.append(k);
            }
            //4个大小写1个数字
            int i = rand.nextInt(10);
            s.append(i);
            return s.toString();
        }

}

14 学生管理系统合体

学生信息类

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;
    }


    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;
    }
}

用户类

public class UserPro {
    private String USerName;
    private String Password;
    private String phoneNum;
    private String personId;
    public UserPro() {}

    public UserPro(String USerName, String Password, String phoneNum, String personId) {
        this.USerName = USerName;
        this.Password = Password;
        this.phoneNum = phoneNum;
        this.personId = personId;
    }

    public String getUSerName() {
        return USerName;
    }

    public void setUSerName(String USerName) {
        this.USerName = USerName;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

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

    public String getPersonId() {
        return personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }
}

管理系统

import java.util.*;

public class StuProMax {
    public static void main(String[] args) {
        ArrayList<UserPro> userPros = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请输入你的需求: 1 ->登录 2-> 注册 3-> 找回密码 4-> 退出系统");
            int a = sc.nextInt();
            switch (a) {
                case 1:
                    dengLu(userPros);break;
                case 2:
                    zhuCe(userPros);break;
                case 3:
                    zhaoHui(userPros);break;
                case 4:
                    System.out.println("感谢使用");
                    System.exit(0);
                default:
                    System.out.println("没有这个选项");
            }
        }



    }

    private static void zhuCe(ArrayList<UserPro> userPros) {
        //新建对象
        UserPro P = new UserPro();

        //首先用户名输入
        Scanner sc = new Scanner(System.in);
        //用于判断用户名是否添加成功
        boolean yongHu = false;
        //给定三次机会创建
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入你要创建的用户名");
            String name = sc.next();
            //用户名的规范性问题
            //用于统计大小写数字个数
            int count = 0, count1 = 0, count2 = 0;
            //判断是否存在用户名(唯一性)
            boolean equals = false;
            for (UserPro userPro : userPros) {
                equals = userPro.getUSerName().equals(name);
            }
            if (!equals) {
                //长度问题
                if (name.length() >= 3 && name.length() <= 15) {
                    for (char c : name.toCharArray()) {
                        //需要为大小写加数字
                        if (c >= 'A' && c <= 'Z') {
                            count += 1;
                        } else if (c >= 'a' && c <= 'z') {
                            count1 += 1;
                        } else if (c >= '0' && c <= '9') {
                            count2 += 1;
                        } else {
                            System.out.println("非法符号,你还有"+(2-i)+"次机会");
                            break;
                        }
                    }
                } else
                    System.out.println("用户名长度错误,你还有"+(2-i)+"次机会");
            }
            if (count > 0 && count1 > 0 && count2 > 0) {
                P.setUSerName(name);
                System.out.println("用户名注册成功");
                yongHu = true;
                break;
            } else
                System.out.println("需要存在大写字母小写字母数字,你还有"+(2-i)+"次机会");
        }

        //密码输入
        //判断密码输入是否完成
        boolean passWordFirsts = false;
        loop:
        if (yongHu) {
            while (true) {
                //两次密码需要相同
                System.out.println("请输入密码:");
                String passWordFirst = sc.next();
                System.out.println("再次确认密码:");
                String passWordSecond = sc.next();
                if (passWordFirst.equals(passWordSecond) && passWordFirst.length() >= 6) {
                    P.setPassword(passWordFirst);
                    System.out.println("密码设置成功");
                    passWordFirsts = true;
                    break loop;
                } else
                    System.out.println("两次设置的密码不相同或者密码位数未达到六位,请重新输入");
            }
        }
        //身份证号的输入
        boolean personIds = false;
        loop:
        if (passWordFirsts){
            while (true){
                System.out.println("请输入你的身份证号");
                String personId = sc.next();

                if (personId.length()==18) {
                    if (personId.charAt(0) != '0'){
                        String personId2 = personId.substring(0,personId.length()-1);
                        int countNum = 0;
                        if ((personId.charAt(17) >= '0'&& personId.charAt(17) <= '9') || personId.charAt(17) =='x'
                                || personId.charAt(17) =='X'){
                                for (char c : personId2.toCharArray()) {
                                    if (c >= '0' && c <= '9') {
                                        countNum += 1;
                                        if (countNum == 17){
                                            P.setPersonId(personId);
                                            System.out.println("身份证验证成功");
                                            personIds = true;
                                            break loop;
                                        }
                                        }
                                    }
                                }else
                            System.out.println("最后一位数必须是数字或者x,X");

                    }else
                        System.out.println("首位数需要不为0");
                }else
                    System.out.println("长度错误");

            }
        }
        //手机号的输入
        boolean phoneNums = false;
        loop:
        if (personIds){
            while (true){
                System.out.println("请输入你的手机号:");
                String phoneNum = sc.next();

                int countNums = 0;
                if (phoneNum.length() == 11 && phoneNum.charAt(0) == '1') {
                    for (char c : phoneNum.toCharArray()) {
                        if (c >= '0' && c <= '9') {
                            countNums += 1;
                            if (countNums == 11){
                                P.setPhoneNum(phoneNum);
                                System.out.println("电话号码验证成功");
                                phoneNums = true;
                                break loop;
                            }
                        }
                    }
                }else
                    System.out.println("手机号位数输入错误,或者首位数字不为1");
            }
        }
        if (phoneNums){
            userPros.add(P);
            System.out.println("恭喜你注册成功");
        }else{
            System.out.println("注册失败");
            System.out.println();}
    }


    private static void zhaoHui (ArrayList<UserPro> userPros) {
        Scanner input = new Scanner(System.in);
        System.out.println("输入你的账户名");
        //判断账户名是否存在
        boolean yongHu = false;
        String yongHuName = input.next();
        for (UserPro i : userPros) {
            if (i.getUSerName().equals(yongHuName)) {
                yongHu = true;
                System.out.println("请输入你的手机号码");
                String phoneNum = input.next();
                if (phoneNum.equals(i.getPhoneNum())) {
                    System.out.println("请输入你的身份证号码");
                    String personID = input.next();
                    if (personID.equals(i.getPersonId())) {
                        while (true) {
                            //两次密码需要相同
                            System.out.println("请输入新密码:");
                            String passWordFirst = input.next();
                            System.out.println("再次确认密码:");
                            String passWordSecond = input.next();
                            if (passWordFirst.equals(passWordSecond) && passWordFirst.length() >= 6) {
                                i.setPassword(passWordFirst);
                                System.out.println("密码设置成功");
                                break;
                            } else
                                System.out.println("两次设置的密码不相同,或者密码位数未达到6位,请重新输入");
                        }
                    }else
                        System.out.println("身份证号码验证失败");

                }else
                    System.out.println("手机号码验证失败");
            }
            if (!yongHu) {
                System.out.println("账户未存在");
            }
        }
    }
    private static void dengLu(ArrayList<UserPro> userPros) {
        Scanner input = new Scanner(System.in);
        System.out.println("输入你的账户名");
        //判断账户名是否输入成功
        boolean yongHu = false;
        String userDeng = input.next();
        for (UserPro i: userPros){
            if (i.getUSerName().equals(userDeng)) {
                yongHu = true;
                System.out.println("账号输入正确");
                for (int j = 0; j < 3;) {
                    System.out.println("请输入你的密码:");
                    String userMiMa = input.next();
                    if (userMiMa.equals(i.getPassword())) {
                        j+=3;
                        System.out.println("密码正确");
                        for (int k = 0; k < 3;) {
                            System.out.println("这是一段验证码");
                            String yanZeng = yanZengMa();
                            System.out.println(yanZeng);
                            System.out.println("请输入验证码确认");
                            String next = input.next();
                            if (next.equals(yanZeng)) {
                                System.out.println("验证码输入正确,登陆成功");
                                k+=3;
                                ArrayList<Student> students = 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(" ");
                                    System.out.print("输入你的需求: ");
                                    Scanner sc = new Scanner(System.in);
                                    int choice = sc.nextInt();
                                    switch (choice) {
                                        case 1: addstudent(students);break;
                                        case 2: delstudent(students);break;
                                        case 3: changestudent(students);break;
                                        case 4: squrestudent(students);break;
                                        case 5: {
                                            System.out.println("已退出学生管理系统");
                                            break loop;
                                        } default:
                                            System.out.println("没有这个选项,请重新输入:");
                                    }
                                }
                            }
                            else{
                                k++;
                                System.out.println("验证码输入错误你还有"+(3-k)+"次机会");}
                        }
                    } else {
                        j++;
                        System.out.println("密码错误你还有"+(3-j)+"次机会");}
                }
            }
        }
        if (!yongHu){
            System.out.println("用户尚未注册或者你的密码多次错误或者验证码多次出错,请重试");
        }
    }



    private static String yanZengMa(){
            //验证码生成程序
            char []arr = new char[52];
            Random rand = new Random();
            for (int i = 0; i < 26; i++) {
                arr[i] = (char) (65+i);
            }
            for (int i = 0; i <26; i++) {
                arr[i+26] = (char) (97+i);
            }
            StringBuilder s = new StringBuilder();
            for (int i = 0; i < 4; i++) {
                char k = arr[rand.nextInt(52)];
                s.append(k);
            }
            //4个大小写1个数字
            int i = rand.nextInt(10);
            s.append(i);
            return s.toString();
        }
    private static void squrestudent(ArrayList<Student> students) {//查询遍历,(空学生表的判断)
        if (students.isEmpty()) {
            System.out.println("请添加后再查询");
        }else{
            System.out.println("id       姓名 年龄 住址");
            for (Student student : students) {
                System.out.println(student.getId() + " " + student.getName()
                        + " " + student.getAge() + " " + student.getAddress());
            }
        }
    }

    private static void changestudent(ArrayList<Student> students) {//更改学生表的成员,根据id信息更改
        if (students.isEmpty()) {
            System.out.println("请添加后再更改");
        }else{
            Scanner sc = new Scanner(System.in);
            System.out.println("输入id");
            String id = sc.next();
            if(!idtest(students, id)){
                System.out.println("id 匹配成功");
                System.out.println("输入姓名");
                String name = sc.next();
                System.out.println("输入年龄");
                int age = sc.nextInt();
                System.out.println("输入地址");
                String address = sc.next();
                for (Student student : students) {
                    if (student.getId().equals(id)) {
                        student.setId(id);
                        student.setName(name);
                        student.setAge(age);
                        student.setAddress(address);
                        System.out.println("更改成功");
                    }
                }
            }else
                System.out.println("无这个 id 信息,请重新选择你的需求");
        }
    }

    private static void delstudent(ArrayList<Student> students) {
        //删除学生表成员信息,要判断是否存在
        System.out.println("请输入id信息");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();

        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getId().equals(id)) {
                students.remove(i);
                System.out.println("删除成功");
                break;
            }
            if ( i == students.size() - 1) {
                System.out.println("无这个学生信息,请添加之后再进行操作");
            }
        }



    }

    private static void addstudent(ArrayList<Student> students) {//添加学生表成员信息

//        System.out.println("分别输入  id  姓名  年龄  住址");
//        Scanner sc = new Scanner(System.in);
//        Student student = new Student(sc.next(),sc.next(),sc.nextInt(),sc.next());//添加方法一
//        students.add(student);
        Student student = new Student();
        Scanner sc = new Scanner(System.in);//添加方法二
        System.out.println("输入id");

        while(true){
            String id = sc.next();
            if (idtest(students,id)) {
                student.setId(id);
                break;
            }else
                System.out.println("id已经存在 请重新输入");
        }

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


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

        System.out.println("输入住址");
        String address = sc.next();
        student.setAddress(address);

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

    }

    private static boolean idtest(ArrayList<Student> students,String id) { // 不存在返回true
        for (Student student : students) {
            if (student.getId().equals(id)) {
                return false;
            }
        }
        return true;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值