JavaCore-OOP-4-图书管理系统(完善版V2)

本文介绍了一个简单的图书管理系统,重点在于增加了用户权限验证功能。管理员可以增删改图书和用户信息,普通用户则需要登录才能购买图书。

话说

上一篇博客的图书管理系统目前来看,勉强满意,但是还缺乏用户验证。这篇主要在原来基础上增加权限验证,增加后,单纯就功能而言,差强人意啦。

目标:
1、用户对图书进行增、删、改的时候,需要管理员权限;
2、购买图书会提示登录,没有账号提示注册;
3、只有管理员有权限对用户进行查、删、改操作。

这个管理员,当然就是小美我啦。
开发环境:Eclipse( Oxygen Release Milestone 7)

目录


一、整体效果图
二、Book类
三、User类
四、接口
五、测试类(核心)
六、总结


一、整体效果图

这里写图片描述

对图书及用户CUD操作做了权限验证。

这里写图片描述

管理员方可以操作;管理员忘记密码?哈哈,直接后台改代码咯~

这里写图片描述

用户购买图书,必须存在账号,未存在提示注册。

这里写图片描述

注册成功后,即可购买。当然用管理员账号什么都可以做啦。

这里写图片描述

修改、删除用户都类似,不在赘述。

二、Book类

这个跟之前一样。

package com.hmc.bookmanagement;
/**
*
*2017年11月26日
*User:Meice
*下午7:48:14
*/
public class Book {
    private int book_id;
    private String book_name;
    private double book_price;
    private String book_author;

    public Book() {}
    public Book(int book_id,String book_name,double book_price,String book_author) {
        this.book_id = book_id;
        this.book_name = book_name;
        this.book_price = book_price;
        this.book_author = book_author;
    }

    public void setBook_id(int book_id) {
        this.book_id = book_id;
    }
    public int getBook_id() {
        return book_id;
    }

    public void setBook_name(String book_name) {
        this.book_name = book_name;
    }
    public String getBook_name() {
        return book_name;
    }

    public void setBook_price(double book_price) {
        this.book_price = book_price;
    }
    public double getBook_price() {
        return book_price;
    }

    public void setBook_author(String book_author) {
        this.book_author = book_author;
    }
    public String getBook_author() {
        return book_author;
    }

    public String toString() {
        return "Book{"+book_id+"\t"+book_name+"\t"+book_price+"\t"+book_author+"}";
    }


}

三、User类

User类是新增的

package com.hmc.bookmanagement;
/**
*
*2017年11月27日
*User:Meice
*下午9:11:11
*/
public class User {
    private int user_id;
    private String username;
    private String password;
    public User() {}
    public User(int user_id,String username,String password) {
        this.user_id = user_id;
        this.username = username;
        this.password = password;
    }
    public int getUser_id() {
        return user_id;
    }
    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }
    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;
    }
    @Override
    public String toString() {
        return "User [user_id=" + user_id + ", username=" + username + ", password=" + password + "]";
    }




}

四、接口

接口跟之前一样:

package com.hmc.bookmanagement;
/**
*
*2017年11月26日
*User:Meice
*下午7:46:47
*/
public interface BookManagementI {
    public void showAllBook();
    public void addBook(Book book);
    public void delBook(String book_name);
    public void editBook(String book_name);
    public void buyBook();

}

五、测试类(核心)

BookManagementSystemImpl

这个变化很大,原来400来行代码,现在800来行,增加了权限验证及各种异常处理。当然CURD代码思路都是一样,如果用泛型还可以简化。不过这次就完善到这里。

package com.hmc.bookmanagement;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
import org.junit.Test;



/**
*
*2017年11月26日
*User:Meice
*下午7:54:26
*/
public class BookManagementSystemImpl implements BookManagementI {
    static BookManagementSystemImpl bms = new BookManagementSystemImpl();
    //用数组作为容器,存放书籍
    Book[] BookList = new Book[100];

    //定义购书车,存放购买清单
    Book[] buiedBooks = new Book[20];
    //定义数组,存放待删除信息
    User[] waitDelUserList = new User[20];
    //定义购买总金额totalPrice
    double totalPrice = 0;



    //定义数组,用于存放用户信息
    User[] UserList = new User[20];


    public BookManagementSystemImpl() {
        Book book1 = new Book(1, "《笑傲江湖》", 23.33, "金庸");
        Book book2 = new Book(2, "《红楼梦续集》", 33.455, "曹雪芹");
        Book book3 = new Book(3, "《悲惨世界》", 45.456, "雨果");
        Book book4 = new Book(4, "《战争与和平》", 67.899, "托尔斯泰");
        Book book5 = new Book(5, "《宝贝,宝贝》", 45.782, "周国平");

        BookList[0] = book1;
        BookList[1] = book2;
        BookList[2] = book3;
        BookList[3] = book4;
        BookList[4] = book5;
        //初始化管理员用户
        User user = new User(0, "Meice", "123");
        UserList[0] = user;
    }
    public static void main(String[] args) {

        do {
            bms.welcomeEnter();
            switch(bms.getChooseNumber()) {
            case 1:
                //TODO showAllBook()
                bms.showAllBook();
                break;
            case 2:
                //TODO addBook()
                //根据用户选择,是否使用管理员权限
                if(bms.isContinue("【用户管理员】方有权限执行【新增】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
                    //权限验证
                    if(bms.isAdmin(bms.getOneUser(""))) {
                        bms.addBook(bms.getOneBook());
                    }
                }
                break;
            case 3:
                //TODO delBook()
                if(bms.isContinue("【用户管理员】方有权限执行【删除】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
                    if(bms.isAdmin(bms.getOneUser(""))) {
                        bms.showAllBook();
                        bms.delBook(bms.getOneBookName("请输入【待删除】图书的【图书名称】:"));
                    }

                }
                break;
            case 4:
                //TODO editBook()
                if(bms.isContinue("【用户管理员】方有权限执行【编辑】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
                    if(bms.isAdmin(bms.getOneUser(""))) {
                        bms.showAllBook();
                        bms.editBook(bms.getOneBookName("请输入【待修改】图书的【图书名称】:"));
                    }
                }

                break;
            case 5:
                //TODO buyBook()
                //购买之前,提示用户登陆,如果是非老用户,提示注册:
                if(bms.isContinue("购买操作需要登录奥~已注册(y/n)?", "请输入【已存在】用户名:","")) {
                    //用户存在方可执行购买操作
                    if(bms.isOneUserExist(bms.getOneUser(""))) {
                        bms.showAllBook();
                        bms.buyBook();
                    }else {
                        System.out.println("此用户不存在,请重新选择其他操作:");
                    }
                }else {
                    //执行注册用户功能
                    bms.addUser(bms.getOneUser("请输入【注册】用户名:"));
                }

                break;
            case 6:
                //查看用户列表
                if(bms.isContinue("【用户管理员】方有权限执行【查看用户列表】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
                    if(bms.isAdmin(bms.getOneUser(""))) {
                        bms.showUsers();
                    }
                }
                break;

            case 7:
                //修改用户
                if(bms.isContinue("【用户管理员】方有权限执行【修改】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
                    //判断用户权限
                    if(bms.isAdmin(bms.getOneUser(""))) {
                        bms.showUsers();
                        bms.updateUser(bms.getUserIds("请输入【待修改用户】编号:"));
                    }
                }
                break;
            case 8:
                //删除用户
                if(bms.isContinue("【用户管理员】方有权限执行【删除】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
                    //判断用户权限
                    if(bms.isAdmin(bms.getOneUser(""))) {
                        bms.showUsers();
                        bms.delUser(bms.getUserIds("请输入【待删除用户】编号【多个请以英文逗号间隔】:"));
                    }
                }
                break;
            case 9:
                //TODO Exit
                System.out.println("谢谢惠顾!期待下次光临! *.* ");
                break;
            default:
                //TODO others
                System.out.println("此序号不存在,请重新选择:");
                break;
            }


        }while(bms.isContinue("是否继续(y/n)?","","谢谢惠顾!期待下次相逢 *.* "));
    }

    /**
     * 方法1:欢迎界面
     * welcomeEnter()
     */
    public void welcomeEnter() {
        System.out.println("****************************欢迎进入图书管理系统********************************");
        System.out.println("1.查看图书列表\n2.新增图书\n3.删除图书\n4.编辑图书\n5.购买图书");
        System.out.println("==后台用户管理==");
        System.out.println("6.查看用户列表\n7.修改用户\n8.删除用户\n9.退出");
        System.out.println("*************************************************************************");
    }


    /**
     * 方法2:返回选择序号
     * getChooseNumber()
     */
    public int getChooseNumber() {
        System.out.println("请输入选择的序号:");
        try {
            return new Scanner(System.in).nextInt();
        }catch(InputMismatchException e) {
            System.out.println("输入有误,请重新输入:");
            try {
                return new Scanner(System.in).nextInt();
            }catch(InputMismatchException e2) {
                System.out.println("多次输入有误,求助于管理员【小美】吧!");
                return 6;
            }

        }

    }

    /**
     * 方法3:显示图书列表
     */

    @Override
    @Test
    public void showAllBook() {
        System.out.println("****************************图书列表*************************************");
        if(bms.getBooksCount()==0) {
            System.out.println("图书已售罄,期待下次光临 *.* ");
        }else {
            System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者");
        }
        for(int i=0;i<BookList.length;i++) {
            if(BookList[i]!=null) {
                System.out.println(BookList[i].getBook_id()+"\t"+BookList[i].getBook_name()+"\t\t"+BookList[i].getBook_price()+"\t\t"+BookList[i].getBook_author());
            }
        }
        System.out.println("**********************************************************************");


    }

    /**
     * 方法4:是否继续
     * isContinue()
     */
    public boolean isContinue(String startInfo,String continueInfo,String notContinueInfo) {
        System.out.println(startInfo);
        String choice = new Scanner(System.in).next();
        if("y".equals(choice)|| "Y".equals(choice)) {
            System.out.println(continueInfo);
            return true;
        }else if("n".equals(choice)|| "N".equals(choice)) {
            System.out.println(notContinueInfo);
            return false;
        }else {
            System.out.println("输入有误,请重新输入:y/Y表示继续,n/N表示终止操作:");
            String choice2 = new Scanner(System.in).next();
            if("y".equals(choice2)|| "Y".equals(choice2)) {
                System.out.println(continueInfo);
                return true;
            }else if("n".equals(choice)|| "N".equals(choice)) {
                System.out.println(notContinueInfo);
                return false;
            }else {
                System.out.println("连续多次输入有误,求助于管理员【小美】吧!");
                return false;
            }
        }
    }


    /**
     * 方法5:新增图书
     */
    @Override
    public void addBook(Book book) {
        //输出新增图书
        System.out.println("****************************待新增图书信息**********************************");
        System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者");
        System.out.println(book.getBook_id()+"\t"+book.getBook_name()+"\t\t"+book.getBook_price()+"\t\t"+book.getBook_author());
        System.out.println("************************************************************************");
        //判断是否新增
        if(bms.isContinue("请核实新增图书信息,确认新增(y/n)?","恭喜您!新增成功! *.* ","未执行新增操作,请选择其他操作:")) {
            for(int i=0;i<BookList.length;i++) {
                if(BookList[i]!=null) {
                    if(i==bms.getBooksCount()-1) {
                        BookList[i+1] = book;
                        //System.out.println("恭喜您!新增成功! *.* ");
                        //没有break;就会数组越界101 或者所有null值全部添加同一本书
                        break;
                    }
                }
            }
        }else {
            //已经做了处理notContinueInfo
        }




    }

    /**
     * 方法6:获取书籍数量
     * getBooksCount()
     */
    public int getBooksCount() {
        int count =0;
        for(int i=0;i<BookList.length;i++) {
            if(BookList[i]!=null) {
                count ++;
            }
        }
        return count;
    }


    /**
     * 方法7:获得一本书
     * getOneBook()
     */
    public Book getOneBook() {
        System.out.println("请输入新增图书名称:");
        String book_name = new Scanner(System.in).next();
        System.out.println("请输入新增图书价格:");
        double book_price = new Scanner(System.in).nextDouble();
        System.out.println("请输入图书作者:");
        String book_author = new Scanner(System.in).next();
        Book book = new Book(bms.getBooksCount()+1, book_name, book_price, book_author);
        return book;
    }



    //测试书籍数量
    @Test
    public void test01() {
        System.out.println(getBooksCount());
    }


    /**
     * 方法8:删除图书
     * 
     */

    @Override
    public void delBook(String book_name) {
        //判断该书名是否存在
        if(bms.isBookNameExist(book_name)) {
            //输出待删除图书信息
            Book book = bms.returnOneBookByBookName(book_name);
            System.out.println("****************************待删除图书信息**********************************");
            System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者");
            System.out.println(book.getBook_id()+"\t"+book.getBook_name()+"\t\t"+book.getBook_price()+"\t\t"+book.getBook_author());
            System.out.println("***********************************************************************");

            //确认是否执行删除操作
            if(bms.isContinue("请核实删除信息,确认删除(y/n)?","恭喜!删除成功! *.* ", "未执行删除操作,请选择其他操作")) {
                //直接执行删除操作,判断是否存在交给另外的方法
                for(int i=0;i<BookList.length;i++) {
                    if(BookList[i]!=null) {
                        if(book_name.equals(BookList[i].getBook_name())) {
                            BookList[i] = null;
                            //System.out.println("恭喜您!删除成功!*.* ");
                            break;
                        }
                    }
                }
            }else {
                //已经处理
            }

        }else {
            System.out.println("此本书不存在,请重新输入...");

        }


    }

    /**
     * 方法9:判断book_name是否存在
     * isBookNameExist()
     */
    public boolean isBookNameExist(String book_name) {
        boolean flag = false;
        for(int i=0;i<BookList.length;i++) {
            if(BookList[i]!=null) {
                if(book_name.equals(BookList[i].getBook_name())) {
                    flag = true;
                    //避免flag在发生变化,已经证明存在了,就可以了
                    break;
                }
                else {
                    //System.out.println("此书不存在,请重新选择操作:"); 这里输出信息就不合适,会多次输出 目的只是判断是否存在
                    flag = false;
                }
            }
        }
        return flag;
    }

    /**
     * 方法10:根据书名返回一本书
     * returnOneBookByBookName() 
     */
    public Book returnOneBookByBookName(String book_name) {
        for(int i=0;i<BookList.length;i++) {
            if(BookList[i]!=null) {
                if(book_name.equals(BookList[i].getBook_name())) {
                    return BookList[i];
                }
            }
        }
        //因为这个方法是建立在一定有这本书的基础上,所以其他情况可以返回null
        return null;

    }

    /**
     * 方法11:获取一本书名
     * getOneBookName()
     */
    public String getOneBookName(String info) {
        //这里不要写死,灵活变化,删除提示输入要删除的图书名称;修改类似
        //System.out.println("请输入图书名称:");
        System.out.println(info);
        return new Scanner(System.in).next();
    }


    /**
     * 方法12:编辑图书
     */

    @Override
    public void editBook(String book_name) {
        //在书本存在的前提下执行操作
        if(bms.isBookNameExist(book_name)) {

            System.out.println("请输入修改后的价格:");
            double book_price = new Scanner(System.in).nextDouble();
            System.out.println("请输入修改后的作者:");
            String book_author = new Scanner(System.in).next();

            //输出图书信息
            System.out.println("****************************待修改图书信息**********************************");
            System.out.println("图书名称\t\t\t价格\t\t作者");
            System.out.println(book_name+"\t\t"+book_price+"\t\t"+book_author);
            System.out.println("***********************************************************************");

            //确认是否修改
            if(bms.isContinue("请核对修改信息,确认修改(y/n)?", "恭喜!修改成功!","未执行修改操作,请选择其他操作:")) {
                //执行修改操作
                for(int i=0;i<BookList.length;i++) {
                    if(BookList[i]!=null) {
                        if(book_name.equals(BookList[i].getBook_name())) {
                            BookList[i].setBook_price(book_price);
                            BookList[i].setBook_author(book_author);
                            //System.out.println("恭喜您!修改成功! *.* ");
                        }
                    }
                }
            }else {
                //已处理
            }


        }else {
            System.out.println("书本不存在,请选择其他操作:");
        }

    }


    /**
     * 方法13:购买图书
     */
    @Override
    public void buyBook() {
        //处理NumberFormatException
        try {
            System.out.println("请输入购买图书序号【购买多本请以英文逗号分隔】:");
            String strId = new Scanner(System.in).next();
            String[] strIds = strId.split(",");


            //在图书存在的前提下在把图书清空并且在输出购买清单
            if(isBookExitByBookIds(strId)) {
                //遍历判断id是否相等,如果相等,就设置为空
                for(int i=0;i<BookList.length;i++) {
                    if(BookList[i]!=null) {
                        for(int j=0;j<strIds.length;j++) {
                            if(BookList[i].getBook_id()==Integer.parseInt(strIds[j])) {
                                buiedBooks[i] = BookList[i];
                                totalPrice +=BookList[i].getBook_price();
                                BookList[i] = null;
                                //确保只输出一次
                                if(j==(strIds.length-1)) {
                                    System.out.println("恭喜您!购买成功! *.* ");
                                }

                                //这里一定要跳出内存循环,否则空指针
                                break;
                            }
                        }
                    }
                }


                //输出购买信息
                System.out.println("****************************购买图书清单**********************************");
                System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者\t总金额");
                for(int i=0;i<buiedBooks.length;i++) {
                    if(buiedBooks[i]!=null) {
                        System.out.println(buiedBooks[i].getBook_id()+"\t"+buiedBooks[i].getBook_name()+"\t\t"+buiedBooks[i].getBook_price()+"\t\t"+buiedBooks[i].getBook_author());
                    }
                }
                //格式化总金额
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println("\t\t\t\t\t\t\t"+df.format(totalPrice)+"元");
                System.out.println("***********************************************************************");
            }else {
                System.out.println("该图书不存在,请重新选择操作:");
            }


        }catch(NumberFormatException e) {
            System.out.println("输入有误,请重新操作:");
        }
    }


    /**
     * 方法14:根据图书Id判断图书是否存在
     * IsBookExistByBookIds()
     * 单本、多本都可以搞定!
     */
    public boolean isBookExitByBookIds(String strId) {
        boolean flag = false;
        String[] strIds = strId.split(",");
        for(int i=0;i<BookList.length;i++) {
            if(BookList[i]!=null) {
                for(int j=0;j<strIds.length;j++) {
                    if(BookList[i].getBook_id()==Integer.parseInt(strIds[j])) {
                        flag = true;
                        //中断循环
                        break;
                    }else {
                        //这里不要在做任何判断,这个很重要;否则又判断回去了,感谢Debug模式,不要太自信自己的判断
                        //flag = false;
                    }
                }
            }
        }
        //如果2id存在,1本不存在,也视为不存在处理;但是后台已经清空
        return flag;
    }




    //==============================================================================
    //以下新增用户权限验证功能
    /**
     * 方法15:验证管理员权限
     * isAdmin() 
     */
    public boolean isAdmin(User user) {
        if("Meice".equals(user.getUsername())&&"123".equals(user.getPassword())) {
            System.out.println("欢迎管理员【"+user.getUsername()+"】:");
            return true;
        }else {
            System.out.println("遗憾,您权限不足,请求助管理员【小美】童鞋吧!");
            return false;
        }
    }





    /**
     * 方法16:得到一个用户
     * getOneUser()
     * info类似:此操作需要管理员权限,请输入用户名:
     * 还可以类似:空串
     */
    public User getOneUser(String info) {
        System.out.println(info);
        String username = new Scanner(System.in).next();
        System.out.println("请输入用户密码:");
        String password = new Scanner(System.in).next();
        User user = new User(getUsersCount(), username, password);
        return user;

    }

    /**
     * 方法17:获取用户数量
     * getUsersCount()
     * 便于user_id自增
     */
    @Test
    public int getUsersCount() {
        int usersCount = 0;
        for(int i=0;i<UserList.length;i++) {
            if(UserList[i]!=null) {
                usersCount ++;
            }
        }
        return usersCount;
    }






    /**
     * 方法18:添加注册用户
     * 
     */
    public void addUser(User user) {
        //遍历数组,把数组添加进去
        for(int i=0;i<UserList.length;i++) {
            //第一个null值处理下
            if(getUsersCount()==0) {
                //输出注册用户信息
                System.out.println("********************待注册用户**************************");
                System.out.println("用户编号\t\t用户名\t\t用户密码");
                System.out.println(user.getUser_id()+"\t\t"+user.getUsername()+"\t\t"+user.getPassword());
                System.out.println("******************************************************");

                //让用户确认是否注册
                if(isContinue("请核对以上待注册信息,确认注册(y/n)?","恭喜您!热烈您成为图书管理系统【第一个用户】!!! *.*", "未执行新增操作,请选择其他操作:")) {
                    UserList[0]=user;
                    //System.out.println("恭喜您!热烈您成为图书管理系统【第一个用户】!!! *.* ");
                }else {
                    break;
                }

            }else {
                if(UserList[i]!=null) {
                    //输出注册用户信息
                    System.out.println("********************待注册用户**************************");
                    System.out.println("用户编号\t\t用户名\t\t用户密码");
                    System.out.println(user.getUser_id()+"\t\t"+user.getUsername()+"\t\t"+user.getPassword());
                    System.out.println("******************************************************");

                    //让用户确认是否注册
                    if(isContinue("请核对以上待注册信息,确认注册(y/n)?","恭喜您!注册成功! *.* ", "未执行注册操作,请选择其他操作:")) {
                        UserList[getUsersCount()] = user;
                    //  System.out.println("恭喜您!注册成功! *.* ");
                        //添加以后,马上终止,否则要么最后越界,要么Null值全部添加为了同一个用户
                        break;
                    }else {
                        break;
                    }

                }
            }
        }

    }

    /**
     * 方法19:判断用户是否存在
     * 单个用户
     * isOneUserExist()
     */
    public boolean isOneUserExist(User user) {
        for(int i=0;i<UserList.length;i++) {
            if(UserList[i]!=null) {
                if(user.getUsername().equals(UserList[i].getUsername()) &&user.getPassword().equals(UserList[i].getPassword()) ) {
                    return true;
                }
            }
        }
        return false;
    }


    /**
     * 方法20:查看用户列表
     * showUsers
     *后台查看,也需要权限验证
     */
    public void showUsers() {
        //如果有用户在显示,否则提示暂无用户”
        System.out.println("********************用户列表*****************************");
        if(getUsersCount()>0) {
            //遍历显示用户
            System.out.println("用户编号\t\t用户名\t\t用户密码");
            for(int i=0;i<UserList.length;i++) {
                if(UserList[i]!=null) {
                    System.out.println(UserList[i].getUser_id()+"\t\t"+UserList[i].getUsername()+"\t\t"+
                            UserList[i].getPassword());
                }
            }
        }else {
            System.out.println("暂无用户\n请先【增加】几个\"用户\"吧!");
        }
        System.out.println("******************************************************");

    }



    /**
     * 方法21:修改用户
     */
    public void updateUser(String user_id) {
        //逻辑类似删除用户 不过编辑是一次编辑一个
        //有用户的前提下执行操作
        if(getUsersCount()>=1) {

            //确保用户存在前提下执行
            if(isOneUserIdExist(user_id)) {
                //输出修改后的信息
                System.out.println("请输出修改后的用户名:");
                String username= new Scanner(System.in).next();
                System.out.println("请输入修改后的密码:");
                String password = new Scanner(System.in).next();
                System.out.println("********************待修改用户***************************");
                System.out.println("用户编号\t\t用户名\t\t用户密码");
                System.out.println(user_id+"\t\t"+username+"\t\t"+password);
                System.out.println("******************************************************");

                //根据用户选择,是否执行修改操作
                if(isContinue("请核对以上待修改信息,确认修改(y/n)?", "","未执行修改操作,请选择其他操作:")) {
                    for(int i=0;i<UserList.length;i++) {
                        if(UserList[i]!=null) {
                            if(UserList[i].getUser_id() == Integer.parseInt(user_id)) {
                                UserList[i].setUsername(username);
                                UserList[i].setPassword(password);
                                System.out.println("恭喜您!修改成功! *.* ");
                            }
                        }
                    }
                }else {

                }


            }else {
                System.out.println("用户不存在,请选择其他操作:");
            }
        }



    }

    /**
     * 方法22:判断单个用户是否存在
     * IsOneUserExist()
     */
    public boolean isOneUserIdExist(String user_id) {
        //处理NumberFormatException
        try {
            int user_id2 = Integer.parseInt(user_id);
            for(int i=0;i<UserList.length;i++) {
                if(UserList[i]!=null) {
                    if(UserList[i].getUser_id()==user_id2) {
                        return true;
                    }
                }
            }
        }catch(NumberFormatException e) {
            //System.out.println("输入格式有误,请重新选择操作:");
        }

        return false;
    }


    /**
     * 方法23:删除用户
     */

    public void delUser(String user_id) {
        String[] user_ids = user_id.split(",");
        //输出用户待删除信息
            //首先要有用户
            if(getUsersCount()>=1) {
                //其次user_id存在在输出待删除信息
                if(isOneUserIdExist(user_id)) {
                    System.out.println("********************待删除用户**************************");
                    System.out.println("用户编号\t\t用户名\t\t用户密码");
                    for(int i=0;i<UserList.length;i++) {
                        if(UserList[i]!=null) {
                            for(int j=0;j<user_ids.length;j++) {
                                if(UserList[i].getUser_id()==Integer.parseInt(user_ids[j])) {
                                    System.out.println(UserList[i].getUser_id()+"\t\t"+UserList[i].getUsername()+"\t\t"+UserList[i].getPassword());
                                }
                            }
                        }
                    }
                    System.out.println("******************************************************");


                    //用户确认是否执行删除操作
                    if(isContinue("请核对删除信息,确认删除(y/n)?","", "未执行删除操作,请选择其他操作:")) {
                        //执行删除操作
                        for(int i=0;i<UserList.length;i++) {
                            if(UserList[i]!=null) {
                                for(int j=0;j<user_ids.length;j++) {
                                    if(UserList[i].getUser_id()==Integer.parseInt(user_ids[j])) {
                                        //存进待删除列表
                                        waitDelUserList[i] = UserList[i];
                                        UserList[i] = null;
                                        //确保只输出一次
                                        if(j==user_ids.length-1) {
                                            System.out.println("恭喜您!删除成功! *.* ");
                                        }

                                        //跳出内存循环
                                        break;
                                    }
                                }
                            }
                        }
                    }else {
                        //不做处理
                    }

                }else {
                    System.out.println("用户不存在奥!请选择其他操作:");
                }

            }

    }

    /**
     * 方法24:获取用户输入user_id
     * getUserIds()
     * 用户输入单个字符或者连续输入多个(在删除的时候)都可以
     */
    public String getUserIds(String info) {
        //必须在有用户的前提下再执行:
        if(getUsersCount()>=1) {
            System.out.println(info);
            //处理NumberFormatException
            try {
                return new Scanner(System.in).next();
            }catch(NumberFormatException e) {
                System.out.println("输入格式有误:请重新输入用户编号:");
                try {
                    return new Scanner(System.in).next();
                }catch(NumberFormatException e2) {
                    System.out.println("连续多次输入有误,请重新选择:");
                    return "";
                }

            }

        }else {
            return "";
        }

    }


    /**
     * 问题:
     * 1.Exception in thread "main" java.util.InputMismatchException——try catch 多个;
     * 2.Exception in thread "main" java.lang.NumberFormatException:购买图书,出现中文逗号或者其他 ——try catch
     * 3.图书售罄提示
     * 4.根据多个Id,判断图书是否存在,还有bug,不准确
     * 5.如果管理员忘记密码,可以初始化一下(当然直接改代码就可以了)
     */

}

六、总结


1、在下不能只顾着自己发表博客,记录是好习惯,更重要的是应该多看看同类型的文章,快速借鉴学习主题差不多的文章的优点,这样成长才更快;

2、博客还是时断时续的,我希望博客不要停,这是我的一项有着战略意义的习惯;

3、我应该有更快、更高、更强的意志和决心,这个冬天真冷。上海的冬天真冷。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值