图书管理系统(含登录,注册,找回密码)

创建登录类,属性包含用户名,密码,身份证号,手机号

public class toUser {
    private String userName;//用户名
    private String password;//密码
    private String userId;//身份证号
    private String userPhone;//手机号

    public toUser(String userName, String password, String userId, String userPhone) {
        this.userName = userName;
        this.password = password;
        this.userId = userId;
        this.userPhone = userPhone;
    }

    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 getUserPhone() {
        return userPhone;
    }

    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }

    public toUser() {
    }
}

创建图书类,包括:图书编号,图书名称,图书作者,价格属性

public class toBook {
    private int id;//图书编号
    private String bookName;//图书名称
    private String author;//图书作者
    private int price;//图书价格

    public toBook(int id, String bookName, String author, int price) {
        this.id = id;
        this.bookName = bookName;
        this.author = author;
        this.price = price;
    }

    public toBook() {
    }

    public int getId() {
        return id;
    }

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

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}

首界面系统包含:登录,注册,找回密码三个功能


/*
注册功能:

1,用户名需要满足以下要求:
验证要求:
     1.用户名唯一
	    用户名长度必须在3~15位之间 
		只能是字母加数字的组合,但是不能是纯数字
	2,密码键盘输入两次,两次一致才可以进行注册。

	3,身份证号码需要验证。

		验证要求:

			长度为18位

			不能以0为开头

			前17位,必须都是数字

			最为一位可以是数字,也可以是大写X或小写x

	4,手机号验证。

		验证要求:

			长度为11位

			不能以0为开头

			必须都是数字

登录功能:

	1,键盘录入用户名

	2,键盘录入密码

	3,键盘录入验证码

要求:

		用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册

		判断验证码是否正确,如不正确,重新输入

		再判断用户名和密码是否正确,有3次机会

忘记密码:

       1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册

	2,键盘录入身份证号码和手机号码

	3,判断当前用户的身份证号码和手机号码是否一致,

			如果一致,则提示输入密码,进行修改。

			如果不一致,则提示:账号信息不匹配,修改失败。

验证码规则:

	长度为5

	由4位大写或者小写字母和1位数字组成,同一个字母可重复
数字可以出现在任意位置

 */
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class App {
    private static final String LOGIN="1";
    private static final String REGISTER="2";
    private static final String RECOVER="3";
    //初始化数据,只调用一次
    static ArrayList<toUser> users=new ArrayList<>();
    static {
        toUser user1=new toUser("张三","54876","123456789037654876","12339836486");
        toUser user2=new toUser("李四","87859","823457846934687859","19933367539");
        users.add(user1);
        users.add(user2);
        //printUser(users);
    }
    public static void main(String[] args) {
        userMenu(users);
    }
    public static void userMenu(ArrayList<toUser>users){
        while(true){
            System.out.println("-----图书信息管理系统-----");
            System.out.println("请选择操作:");
            System.out.println("1.登录 2.注册 3.忘记密码");
            System.out.println("-----------------------");
            Scanner sc = new Scanner(System.in);
            String choice = sc.next();
            switch (choice) {
                case LOGIN->{
                    System.out.println("-----登录-----");
                    boolean flag=loginUser(users);
                    if(flag){
                        //调用图书管理系统
                        bookSystem bs=new bookSystem();
                        bs.startBooksSystem();

                        //bookMenu(books);
                        System.exit(0);

                    }
                }
                case REGISTER->{
                    System.out.println("-----注册-----");
                    enrollUser(users);
                }
                case RECOVER->{
                    System.out.println("-----找回密码-----");
                    retrieveUser(users);
                }
//                //后台测试
//                case "4"->{
//                    printUser(users);
//                }
                default->{
                    System.out.println("输入有误,请重新输入");
                }
            }
        }
    }
    //登录
    public static boolean loginUser(ArrayList<toUser>user){
        Scanner sc = new Scanner(System.in);
        //System.out.println("-----登录-----");
        for(int i=1;i<=3;) {
            System.out.print("用户名:");
            String username = sc.next();
            //判断用户是否注册
            boolean flag = IsExist(user, username);
            if (!flag) {
                System.out.println("用户名未注册,请先注册");
                return false;
            } else {
                System.out.print("密码:");
                String password = sc.next();
                while (true) {
                    String captcha = captcha();
                    System.out.println(captcha);
                    System.out.print("验证码:");
                    String check = sc.next();
                    if(check.equalsIgnoreCase(captcha)){
                        break;
                    }
                    else{
                        System.out.println("验证码错误,请重新输入");
                        continue;
                    }
                }
                if (!IsExist(user, username, password)) {
                    System.out.println("用户名或密码错误,请重新输入,你还有" + (3 - i) + "次机会");
                    i++;
                } else {
                    System.out.println("登录成功");
                    return true;
                }
            }
        }
        System.out.println("请点击找回密码");
        return false;
    }
    //注册
    public static void enrollUser(ArrayList<toUser>user)
    {
        Scanner sc = new Scanner(System.in);
        System.out.print("用户名: ");
        String username = sc.next();
        while(judgeName(user,username)){
            System.out.println("用户名已存在,请重新输入");
            System.out.print("用户名: ");
            username = sc.next();
        }
        System.out.print("密码: ");
        String password = sc.next();
        System.out.print("确认密码: ");
        String checkPass = sc.next();
        while(!(password.equals(checkPass))){
            System.out.println("两次密码不一致,请重新输入");
            System.out.print("密码: ");
            password = sc.next();
            System.out.println("1."+password);
            System.out.print("确认密码: ");
            checkPass = sc.next();
            System.out.println("2."+checkPass);
        }
        //输入身份证号
        String userId;
        while(true) {
            System.out.print("身份证: ");
            userId = sc.next();
            if(judgeId(userId)){
                break;
            }else{
                System.out.println("身份证号码输入有误,请重新输入");
                continue;
            }
        }
        //输入手机号
        String phone;
        while(true){
            System.out.print("手机号: ");
            phone=sc.next();
            if(judgePhone(phone)){
                break;
            }else{
                System.out.println("手机号码输入有误,请重新输入");
                continue;
            }
        }
        System.out.println("注册成功!");
        toUser newUser=new toUser(username,password,userId,phone);
        user.add(newUser);
    }
    //找回密码
    public static void retrieveUser(ArrayList<toUser>user){
        Scanner sc = new Scanner(System.in);
        System.out.print("用户名:");
        String userName = sc.next();
        if(!IsExist(user,userName)){
            System.out.println("未注册");
            return;
        }
        //输入身份证号
        String userId;
        while(true) {
            System.out.print("身份证: ");
            userId = sc.next();
            if(judgeId(userId)){
                break;
            }else{
                System.out.println("身份证号码输入有误,请重新输入");
                continue;
            }
        }
        //输入手机号
        String phone;
        while(true){
            System.out.print("手机号: ");
            phone=sc.next();
            if(judgePhone(phone)){
                break;
            }else{
                System.out.println("手机号码输入有误,请重新输入");
                continue;
            }
        }
        System.out.println("用户信息验证成功!");
        if(judgeIdPhone(user,userName,userId,phone)){
            System.out.print("请输入密码:");
            String passWord = sc.next();
            toUser oldUser=new toUser(userName,passWord,userId,phone);
            //System.out.println(search(user,userName));
            user.set(search(user,userName),oldUser);
            System.out.println("用户密码已修改");
        }else{
            System.out.println("信息有误,修改失败");
        }
    }
    //随机验证码
    public static String captcha(){
        char[] ch=new char[52];
        for(int i=0;i<(ch.length/2);i++){
            ch[i]=(char)('A'+i);
        }
        for(int i=(ch.length)/2,j=0;i<ch.length;i++,j++){
            ch[i]=(char)('a'+j);
        }
        Random ra=new Random();
        //建立StringBuilder,存入4个随机字母
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<4;i++){
            //获取随机索引值
            int index=ra.nextInt(ch.length);
            sb.append(ch[index]);
        }
        //获取随机数字
        int num=ra.nextInt(10);
        sb.append(num);
        String str=sb.toString();
        str=DisString(str);
        return str;
    }
    //打乱验证码
    public static String DisString(String str){
        char[] charArray = str.toCharArray();
        Random random=new Random();
        //获取随机数字的位置
        int index=random.nextInt(charArray.length);
        //插入数字
        char temp=charArray[index];
        charArray[index]=charArray[charArray.length-1];
        charArray[charArray.length-1]=temp;
        return new String(charArray);
    }
    //判断用户名
    public static boolean IsExist(ArrayList<toUser>users,String k){
        for (int i = 0; i < users.size(); i++) {
            if(users.get(i).getUserName().equalsIgnoreCase(k)){
                return true;
            }
        }
        return false;
    }
    //判断登录的用户名和密码
    public static boolean IsExist(ArrayList<toUser>users,String name,String passWord){
        for (int i = 0; i < users.size(); i++) {
            if(users.get(i).getUserName().equalsIgnoreCase(name)){
                if(users.get(i).getPassword().equals(passWord)){
                    return true;
                }
                return false;
            }
        }
        return false;
    }
    //打印所以用户的信息
//    public static void printUser(ArrayList<toUser>users){
//        for(int i=0;i<users.size();i++){
//            System.out.println(users.get(i).getUserName()+"  "+users.get(i).getPassword()+"  "+
//                    users.get(i).getUserId()+"   "+users.get(i).getUserPhone());
//        }
//    }
    //判断身份证号
    public static boolean judgeId(String id){
        char[] charArray = id.toCharArray();
        if(id.length()==18){
            if(charArray[0]!='0'&&judgeNumber(charArray)){
                return true;
            }
        }
        return false;
    }
    public static boolean judgeNumber(char[] charArray){
        int count=0;
        for(int i=0;i<charArray.length-1;i++){
            if(charArray[i]-'0'>=0||charArray[i]-'0'<=9){
                count++;
            }
        }
        if(charArray[charArray.length-1]=='x'||charArray[charArray.length-1]=='X'||
                charArray[charArray.length-1]-'0'>=0||charArray[charArray.length-1]-'0'<=9){
            count++;
        }
        if(count==18){
            return true;
        }else{
            return false;
        }
    }
    //判断电话号码
    public static boolean judgePhone(String phone){
        char[] charArray = phone.toCharArray();
        if(phone.length()==11){
            if(charArray[0]!='0'&&judgePhoneNumber(charArray)){
                return true;
            }
        }
        return false;
    }
    public static boolean judgePhoneNumber(char[] charArray){
        int count=0;
        for(int i=0;i<charArray.length;i++){
            if(charArray[i]-'0'>=0||charArray[i]-'0'<=9){
                count++;
            }
        }
        if(count==11){
            return true;
        }else{
            return false;
        }
    }
    //判断用户名
    public static boolean judgeName(ArrayList<toUser>users,String name){
        char[] charArray = name.toCharArray();
        if((charArray.length>=3||charArray.length<=15)&&judgeName(charArray)&&IsExist(users,name)){
            return true;
        }
        return false;
    }
    public static boolean judgeName(char[] charArray){
        int count=0;
        for(int i=0;i<charArray.length;i++){
            if(charArray[i]-'0'>=0||charArray[i]-'0'<=9){
                count++;
            }
        }
        if(count==charArray.length){
            return false;
        }else{
            return true;
        }
    }
    //判断身份证与手机号
    public static boolean judgeIdPhone(ArrayList<toUser>users,String name,String Id,String phone){
        for(int i=0;i<users.size();i++){
            if(users.get(i).getUserName().equalsIgnoreCase(name)){
                if(users.get(i).getUserId().equals(Id)&&users.get(i).getUserPhone().equals(phone)){
                    return true;
                }
                return false;
            }
        }
        return false;
    }
    //寻找用户的位置
    public static int search(ArrayList<toUser>users,String k){
        for(int i=0;i<users.size();i++){
            if(users.get(i).getUserName().equalsIgnoreCase(k)){
                return i;
            }
        }
        return -1;
    }
}

图书管理系统,功能有:添加,查询,删除,修改,打印,退出功能

import java.util.ArrayList;
import java.util.Scanner;
public class bookSystem {
    //定义不可修改指定常量
    private static final String ADD_BOOKS="1";
    private static final String SEARCH_BOOKS="2";
    private static final String DELETE_BOOKS="3";
    private static final String MOFITY_BOOKS="4";
    private static final String PRINT_BOOKS="5";
    private static final String EXIT="6";
    //初始化数据,只调用一次
    static ArrayList<toBook> books = new ArrayList<>();
    static {
        toBook book1 = new toBook(12, "yueliang", "wulang", 23);
        toBook book2 = new toBook(13, "太阳", "张三", 23);
        toBook book3 = new toBook(14, "月亮", "李四", 45);
        books.add(book1);
        books.add(book2);
        books.add(book3);
    }

    public static void startBooksSystem() {
        //ArrayList<toBook>books=new ArrayList<>();
        bookMenu(books);
    }

    public static void bookMenu(ArrayList<toBook> books) {
        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("6.退出系统");
            System.out.println("-----------------------------");
            Scanner sc = new Scanner(System.in);
            String choice = sc.next();
            switch (choice) {
                case ADD_BOOKS -> {
                    System.out.println("添加图书信息");
                    addBook(books);
                }
                case SEARCH_BOOKS -> {
                    System.out.println("查询图书信息");
                    System.out.println("输入要查询图书的名称");
                    String name = sc.next();
                    findBook(books, name);
                }
                case DELETE_BOOKS -> {
                    System.out.println("删除图书信息");
                    System.out.println("输入要删除图书的编号");
                    int id = sc.nextInt();
                    deleteBook(books, id);
                }
                case MOFITY_BOOKS -> {
                    System.out.println("修改图书信息");
                    System.out.println("输入要修改图书的编号");
                    int id = sc.nextInt();
                    reviseBook(books, id);
                }
                case PRINT_BOOKS -> {
                    System.out.println("打印所以图书信息");
                    printBook(books);
                }
                case EXIT -> {
                    System.out.println("感谢你使用图书信息系统");
                    System.exit(0);
                }
                default -> System.out.println("没有此功能");
            }
        }
    }

    public static void addBook(ArrayList<toBook> books) {
        //System.out.println("添加图书信息");
        Scanner sc = new Scanner(System.in);
        System.out.println("添加图书的数量");
        int number = sc.nextInt();
        for (int i = 1; i <= number; i++) {
            toBook book = new toBook();
            System.out.println("请输入图书编号");
            int id = sc.nextInt();
            boolean flag = IsExist(books, id);
            while (flag) {
                System.out.println("输出有误,请重新输入");
                id = sc.nextInt();
                flag = IsExist(books, id);
            }
            book.setId(id);
            System.out.println("请输入图书书名");
            String name = sc.next();
            book.setBookName(name);
            System.out.println("请输入图书作者");
            String author = sc.next();
            book.setAuthor(author);
            System.out.println("请输入图书价格");
            int price = sc.nextInt();
            book.setPrice(price);
            books.add(book);
        }
    }

    public static void deleteBook(ArrayList<toBook> books, int id) {
        //System.out.println("删除图书信息");
        for (int i = 0; i < books.size(); i++) {
            if (books.get(i).getId() == id) {
                books.remove(i);
                System.out.println("删除成功!");
                break;
            }
            if (i == books.size() - 1) {
                System.out.println("未找到此图书");
            }
        }
    }

    public static void findBook(ArrayList<toBook> books, String k) {
        //System.out.println("查询图书信息");
        for (int i = 0; i < books.size(); i++) {
            if (books.get(i).getBookName().equalsIgnoreCase(k)) {
                System.out.println("图书编号" + books.get(i).getId() + "图书名称" + books.get(i).getBookName() + "图书作者"
                        + books.get(i).getAuthor() + "图书价格" + books.get(i).getPrice());
                break;
            }
            if (i == books.size() - 1) {
                System.out.println("未找到此图书");
            }
        }
    }

    public static void reviseBook(ArrayList<toBook> books, int id) {
        //System.out.println("修改图书信息");
        for (int i = 0; i < books.size(); i++) {
            Scanner sc = new Scanner(System.in);
            if (books.get(i).getId() == id) {
                System.out.println("请输入修改后图书的名称");
                String name = sc.next();
                System.out.println("请输入修改后图书的作者");
                String author = sc.next();
                System.out.println("请输入修改后图书的价格");
                int price = sc.nextInt();
                toBook book = new toBook(id, name, author, price);
                books.set(i, book);
                System.out.println("图书信息修改成功!");
                break;
            }
            if (i == books.size() - 1) {
                System.out.println("未找到此图书");
            }
        }
    }

    public static void printBook(ArrayList<toBook> books) {
        //System.out.println(books.size());
        System.out.println("图书编号" + "  " + "图书名称" + "  " + "作者" + "  " + "价格");
        for (int i = 0; i < books.size(); i++) {
            System.out.println(books.get(i).getId() + "   " + books.get(i).getBookName() + "   "
                    + books.get(i).getAuthor() + "   " + books.get(i).getPrice());
        }
    }

    public static boolean IsExist(ArrayList<toBook> books, int index) {
        for (int i = 0; i < books.size(); i++) {
            if (books.get(i).getId() == index) {
                return true;
            }
        }
        return false;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值