后端学习日记day9

大二电子信息工程小白一枚,想自学后端毕业去找工作,为了提高学习效率,想记录总结一下每天学习的内容,若有志同道合的小伙伴可以一起打卡,有大佬的话也希望能提一些建议,感谢!

4.27

可恶的调休!周日要补周一的课,不过能翘的都翘了,接着写我的小项目!今天算是完工了,写了一个学生信息管理系统,有登陆注册忘记密码这些基础功能,纯纯自己写的,优化的思路有问ai,debug了好久,刚开始写代码好粗心,印象比较深刻的错误有验证两个字符串是否相等的时候老是用==来,得用equals方法来才行,应用数据类型比较的时候比较的是地址值而不是数据值,还有nextline会接收换行符,所以如果前面有nextint之类的要在两者中间加一个nextline把换行符吸收掉。总而言之,这个小项目没什么思维上的难度,主要是是练练手,然后注意一些细节,积累一些经验,后续肯定还要改进,比如引进数据库之类的,我还挺想写出一个网页然后实现这个功能呢。

项目结构是这样的,app写的就是注册登录找回密码的功能,然后StudentSystem写的是学生信息管理的功能,user这个类是用来处理登陆的,里面存储了用户的账号密码电话号身份证,student这个类存储的是学生信息。

大概实现了一个这样的功能,一些异常处理的没有展现

以下是代码

App

package com.atguigu.StudentManager;

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


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

            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作:1.登录 2.注册 3.忘记密码 4.退出系统");

            int n = sc.nextInt();
            if(n==4){
                
                System.out.println("成功退出");
                sc.close();
                System.exit(0);
                return;
            }

            switch (n) {
                case 1:
                    if(login(list,sc)==true){
                        StudentSystem ss = new StudentSystem();
                        StudentSystem.main(args);
                    }
                    break;
                case 2:
                    register(list,sc);    
                    break;
                case 3:
                    forgetPassword(list,sc);
                    break;
                        
                default:
                    System.out.println("输入有误");
            }

            
            }

        }

        private static boolean login(ArrayList<User> list,Scanner sc){
           
            System.out.println("登录");

            System.out.println("请输入用户名");
            sc.nextLine();
            String username = sc.nextLine();

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

            
            for (User user : list) {
                if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
                    System.out.println("登录成功");
                    return true;
                }
            }
        
            System.out.println("用户名或密码错误");
            return false;
        
        }    
        private static void register(ArrayList<User> list,Scanner sc){
            
            User user = new User(null, null, null, null);
            System.out.println("注册");
            System.out.println("请输入用户名");
            sc.nextLine();
            String username = sc.nextLine();
            int len = username.length();

            while(true){
                if(len<3 || len>15){
                    System.err.println("用户名长度必须在3-15之间,请重新输入");
                    username = sc.nextLine();
                    len = username.length();

                }else{
                    if(checkifexist(username, list)){
                        System.out.println("用户名已存在,请重新输入");
                        continue;
                    }
                    else if(checkusername(username) && checknumber(username)){
                        user.setUsername(username);
                        break;
                    }else{
                        System.out.println("用户名的字符必须是大写或小写字母或者数字,请重新输入");
                        username = sc.nextLine();
                        len = username.length();
                        continue;
                    }
                }
            }

            // System.out.println("用户名符合条件,请输入密码(长度6-16位,必须包含字母和数字)");
            // String password = sc.nextLine();
            

            // System.out.println("请再次输入密码");
            // String passwordToComfirm = sc.nextLine();

            while(true){
                System.out.println("请输入密码(长度6-16位,必须包含字母和数字)");
                String password = sc.nextLine();
                if(password.length()<6 ||password.length()>16){
                    System.out.println("密码长度必须为6-16");
                    continue;
                }
            
                System.out.println("请再次输入密码");
                String passwordToComfirm = sc.nextLine();

                if(password.equals(passwordToComfirm)){
                    user.setPassword(password);
                    System.err.println("密码输入成功");
                    break;
                }else{
                    System.out.println("两次密码不一致,请再次输入密码");
                    password = sc.nextLine();
                    System.out.println("请再次输入密码");
                    passwordToComfirm = sc.nextLine();
                }
            }

            System.out.println("请输入身份证号码");
            String id = sc.nextLine();

            while(true){
                if(checkid(id)){
                    System.out.println("输入成功");
                    user.setIdcard(id);
                    break;
                }else{
                    System.out.println("身份证格式不正确,身份证长度必须为18,除了最后一位必须为数字,最后一位可以是x或X");
                    System.out.println("请重新输入");
                    id = sc.nextLine();
                }
            }

            System.out.println("请输入电话号码");
            String phoneNumber = sc.nextLine();

            while(true){
                if(checkPhoneNumber(phoneNumber)){
                    System.out.println("输入成功");
                    user.setPhoneNumber(phoneNumber);
                    break;
                }else{
                    System.out.println("电话号码格式不正确,电话号码长度必须为11,不能以0开头");
                    System.out.println("请重新输入");
                    id = sc.nextLine();
                }
            }

            list.add(user);


            
        
        }
        private static void forgetPassword(ArrayList<User> list,Scanner sc){
           
            System.out.println("找回密码");
            System.out.println("请输入用户名");
            String username = sc.nextLine();

            if(checkifexist(username, list)){

            }else{
                System.out.println("用户名未注册,请先注册");
                return;
            }

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

            int index = getIndex(list, username);
            User user = list.get(index);

            if(!(user.getIdcard().equalsIgnoreCase(idCard) && user.getPhoneNumber().equals(phoneNumber))){
                System.out.println("身份证号码或手机号码输入有误,不能修改密码");
                return;
            }

            String password;
        while (true) {
            System.out.println("请输入新的密码");
            password = sc.next();
            System.out.println("请再次输入新的密码");
            String againPassword = sc.next();
            if(password.equals(againPassword)){
                System.out.println("两次密码输入一致");
                break;
            }else{
                System.out.println("两次密码输入不一致,请重新输入");
                continue;
            }
        }

        //直接修改即可
        user.setPassword(password);
        System.out.println("密码修改成功");

 
        }        

        public static boolean contains(ArrayList<User> list,String phoneNumber){
            for (int i = 0; i < list.size(); i++) {
                User u = list.get(i);
                String username = u.getUsername();
                if(username.equals(phoneNumber)){
                    return true;
                }
                
            }

            return false;
        }

        public static int getIndex(ArrayList<User> list,String needFindUsername){
            for (int i = 0; i < list.size(); i++) {
                User u = list.get(i);
                String username = u.getUsername();
                if(username.equals(needFindUsername)){
                    return i;
                }
                
            }
            return -1;

        }

        public static boolean checkusername(String username){
            for (int i = 0; i < username.length(); i++) {
                char c = username.charAt(i);
                
                if(c>='a' && c<='z'){
                    continue;
                }else if(c>='A' && c<='Z'){
                    continue;
                }else if(c>='0' && c<='9'){
                    continue;
                }
                
                return false;

            }
            return true;
        }

        public static boolean checknumber(String username){

            for (int i = 0; i < username.length(); i++) {
                char c = username.charAt(i);
                if(c<'0' || c>'9'){
                    return true;
                }
                
            }
            return false;

        }

        public static boolean checkid(String phonenumber){
            if(phonenumber.length() == 18){
                for (int i = 0; i < phonenumber.length()-1; i++) {
                    char c = phonenumber.charAt(i);
                    if(c < '0' || c > '9') {
                        return false;
                    }
                }
                char lastchar = phonenumber.charAt(17);
                if(lastchar >='0' && lastchar <= '9'){
                    return true;
                }else if(lastchar =='x' ||lastchar == 'X'){
                    return true;
                }else{
                    return false;
                }


            }else{
                return false;
            }    
        }

        public static boolean checkPhoneNumber(String phonenumber){
            if(phonenumber.length() == 11){
                for (int i = 0; i < phonenumber.length(); i++) {
                    char c = phonenumber.charAt(i);
                    if(c < '0' || c > '9') {
                        return false;
                    }
                }
                char firstNumber = phonenumber.charAt(0);
                if(firstNumber =='0'){
                    return false;
                }else{
                    return true;
                }


            }else{
                return false;
            }   
        }

        public static boolean checkifexist(String username,ArrayList<User> list){

            for (int i = 0; i < list.size(); i++) {
                User user = list.get(i);
                String uname = user.getUsername();

                if(uname.equals(username)) {
                    
                    return true;
                }
                
            }
            return false;
        }
}

StudentSystem

package com.atguigu.StudentManager;

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.println("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            String choose = sc.next();
            switch (choose) {
                case "1" -> addStudent(list);
                case "2" -> deleteStudent(list);
                case "3" -> updateStudent(list);
                case "4" -> queryStudent(list);
                case "5" -> {
                    System.out.println("退出");
                    //break loop;
                    System.exit(0);//停止虚拟机运行
                }
                default -> System.out.println("没有这个选项");
            }
        }
    }

    //添加学生
    public static void addStudent(ArrayList<Student> list) {
        //利用空参构造先创建学生对象
        Student s = new Student(null, null, 0, null);

        Scanner sc = new Scanner(System.in);
        String id = null;
        while (true) {
            System.out.println("请输入学生的id");
            id = sc.next();
            boolean flag = contains(list, id);
            if(flag){
                //表示id已经存在,需要重新录入
                System.out.println("id已经存在,请重新录入");
            }else{
                //表示id不存在,表示可以使用
                s.setId(id);
                break;
            }
        }

        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 void deleteStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        String id = sc.next();
        //查询id在集合中的索引
        int index = getIndex(list, id);
        //对index进行判断
        //如果-1,就表示不存在,结束方法,回到初始菜单
        if(index >= 0){
            //如果大于等于0的,表示存在,直接删除
            list.remove(index);
            System.out.println("id为:" + id + "的学生删除成功");
        }else{
            System.out.println("id不存在,删除失败");
        }
    }

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

        int index = getIndex(list, id);

        if(index == -1){
            System.out.println("要修改的id" + id + "不存在,请重新输入");
            return;
        }

        //当代码执行到这里,表示什么?表示当前id是存在的。
        //获取要修改的学生对象
        Student stu = list.get(index);

        //输入其他的信息并修改
        System.out.println("请输入要修改的学生姓名");
        String newName = sc.next();
        stu.setName(newName);

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

        System.out.println("请输入要修改的学生家庭住址");
        String newAddress = sc.next();
        stu.setAddress(newAddress);

        System.out.println("学生信息修改成功");


    }


    //查询学生
    public static void queryStudent(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++) {
            Student stu = list.get(i);
            System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress());
        }
    }


    //判断id在集合中是否存在
    public static boolean contains(ArrayList<Student> list, String id) {
        //循环遍历集合得到里面的每一个学生对象
        /*for (int i = 0; i < list.size(); i++) {
            //拿到学生对象后,获取id并进行判断
            Student stu = list.get(i);
            String sid = stu.getId();
            if(sid.equals(id)){
                //存在,true
                return true;
            }
        }
        // 不存在false
        return false;*/
       return getIndex(list,id) >= 0;
    }

    //通过id获取索引的方法
    public static int getIndex(ArrayList<Student> list, String id){
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            //得到每一个学生对象
            Student stu = list.get(i);
            //得到每一个学生对象的id
            String sid = stu.getId();
            //拿着集合中的学生id跟要查询的id进行比较
            if(sid.equals(id)){
                //如果一样,那么就返回索引
                return i;
            }
        }
        //当循环结束之后还没有找到,就表示不存在,返回-1.
        return -1;
    }
}

User

package com.atguigu.StudentManager;

public class User {
    private String username;
    private String password;
    private String idcard;
    public String getIdcard() {
        return idcard;
    }

    public User(String username, String password, String idcard, String phoneNumber) {
        this.username = username;
        this.password = password;
        this.idcard = idcard;
        this.phoneNumber = phoneNumber;
    }

    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

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

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


}

Student

package com.atguigu.StudentManager;

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

    

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

    

}

然后上周五忘记写日记了,主要一天都是课然后晚上就是补充这个小项目,感觉没什么好写的,就没写了,今天的学习其实还没结束但是项目完结了想趁早总结一下,所以今天后面学习的内容就留到明天来总结啦,加油加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值