简单的图书管理系统制作

简单的图书管理系统

这边自己在学了一段时间的Java之后尝试着做了一个简单的图书管理系统的项目
做个随笔记录一下,大概花了四五个小时左右吧

目标:

登录:

  • 普通用户

  • 管理员

注册:

  • 普通用户

  • 管理员

    普通用户:

  • 查看所有图书

  • 查询某本图书信息

  • 购 买图书

    管理员:

  • 添加图书

  • 删 除图书

  • 修 改图书

  • 根 据书籍名称查看图书信息

  • 查看所有图书
    代码文件压缩包链接:https://pan.baidu.com/s/1zCfqgt2abXgUlBQ_xLaHPg 提取码:1234

执行(Entry)

public class Entry {
    public static void main(String[] args) {
        View view = new View();
        view.printView();
    }
}

定义类(图书)(Book)

用来定义图书的基本属性,书名和价格(这里本来还添加了图书编号的,后来想根据编号修改和删减图书时发现自己完成不了,就先去除了)

public class Book {
    private String bookName;
    private String bookValue;

    public Book(String bookName, String bookValue) {
        this.bookName = bookName;
        this.bookValue = bookValue;
    }

    public String getBookName() {
        return bookName;
    }

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

    public String getBookValue() {
        return bookValue;
    }

    public void setBookValue(String bookValue) {
        this.bookValue = bookValue;
    }

    @Override
    public String toString() {
        return "图书信息{ " +
                "图书名称 = 《" + bookName +
                "》 图书价格 =" + bookValue +
                "}";
    }
}

定义类(账号)(User)

定义用户和管理员账号的基本属性,账号和密码

public class User {
    private String userName;
    private String userPassward;

    public User(String userName, String userPassward) {
        this.userName = userName;
        this.userPassward = userPassward;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassward() {
        return userPassward;
    }

    public void setUserPassward(String userPassward) {
        this.userPassward = userPassward;
    }
}

主界面显示(View)

用于程序的主界面显示功能,同时实现其它功能的接入

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

public class View {
        Scanner scanner = new Scanner(System.in);
        ArrayList<Book> list = new ArrayList<Book>();
        KeyBoard keyBoard = new KeyBoard();
        public void printView(){
            while (true){
                System.out.println("------图书管理系统登录------");
                System.out.println("|     1.用户账号登录       |");
                System.out.println("|    2.管理员账号登录      |");
                System.out.println("|       3.注册账号        |");
                System.out.println("|      4.退出本系统       |");
                System.out.println("--------------------------");
                int i = scanner.nextInt();
                switch (i){
                    case 1:
                        userLogin();
                        break;
                    case 2:
                        managerLogin();
                        break;
                    case 3:
                        register();
                        break;
                    case 4:
                        System.out.println("退出成功!");
                        return;
                    default:
                        System.out.println("输入非法,请重新输入!");
                        break;
                }
            }
        }
        public void register(){
            keyBoard.register();
        }                                        /////为了减少这边的代码,使其看起来不是那么的臃肿,选择创建类封装方法进行调用
        public void userLogin(){
            keyBoard.userLogin();
        }
        public void managerLogin(){
            keyBoard.managerLogin();
        }

}

账户选项界面(inView)

因为最开始想着主界面那边会放一堆东西,就想着分开放界面,所以这边没有把登录的界面和主界面放在一起

import java.util.Scanner;

public class inView {
    Scanner scanner = new Scanner(System.in);
    bookList bookList = new bookList();
    public void userView(){
        while (true){
            System.out.println("------图书管理系统------");
            System.out.println("|    1.查看所有图书    |");
            System.out.println("|    2.查询图书信息    |");
            System.out.println("|     3.购买图书      |");
            System.out.println("|     4.退出登录      |");
            System.out.println("----------------------");
            int i = scanner.nextInt();
            switch (i){
                case 1:
                    bookList.lookAll();
                    break;
                case 2:
                    bookList.lookBook();
                    break;
                case 3:
                    bookList.buyBook();
                    break;
                case 4:
                    System.out.println("退出登录成功!");
                    return;
                default:
                    System.out.println("输入非法,请重新输入!");
                    break;
            }
        }
    }
    public void managerView(){
        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("-----------------------");
            int i = scanner.nextInt();
            switch (i){
                case 1:
                    bookList.addBook();
                    break;
                case 2:
                    bookList.deleteBook();
                    break;
                case 3:
                    bookList.reviseBook();
                    break;
                case 4:
                    bookList.lookBook();
                    break;
                case 5:
                    bookList.lookAll();
                    break;
                case 6:
                        System.out.println("退出登录成功!");
                    return;
                default:
                    System.out.println("输入非法,请重新输入!");
                    break;

            }
        }
    }
}

账号创建输入(keyBoard)

这里创建用户输入选择管理员和普通用户时用了0和1进行判断,然后创建了两个List数组(后面发现可以在一个数组里然后判断特殊值,但没做修改)分别存放普通用户和管理员的账号,同样的,后面账号的调用也会分开调用

import java.util.Scanner;

public class KeyBoard {

    Scanner scanner = new Scanner(System.in);
    UserDao userDao = new UserDao();
    public void register(){
        System.out.println("请输入您要注册的账号");
        String  userName = scanner.next();
        System.out.println("请输入您要注册的密码");
        String userPassward = scanner.next();
        System.out.println("如果您要注册管理员账号,请输入预设码,否则输入0");
        int code = scanner.nextInt();
        if (code == 0){
/////////////////////////////////////////  //用户                        从这里开始用户和管理员的调用就开=开始分开,各自占有一个数组
            userDao.userRegister(userName,userPassward);
        }else if (code == 1){
///////////////////////////////////////// //管理员
            userDao.managerRegister(userName,userPassward);            //这里调用了不同的方法
        }else{
            System.out.println("输入错误请重新注册");
        }
    }
    public void userLogin(){          //////////////用户登录
        System.out.println("请输入您的账号");
        String loginName = scanner.next();
        System.out.println("请输入您的密码");
        String loginPassward = scanner.next();
        userDao.userLogin(loginName,loginPassward);
    }
    public void managerLogin(){       /////////////管理员登录
        System.out.println("请输入您的账号");
        String loginName = scanner.next();
        System.out.println("请输入您的密码");
        String loginPassward = scanner.next();
        userDao.managerLogin(loginName,loginPassward);
    }
}

账号创建及登录方法(userDao)

这里就是一些简单的登录判断等内容

import java.util.ArrayList;
import java.util.List;

public class UserDao {
    List<User> userList;
    List<User> managerList;
    boolean flag =true;
    inView inView = new inView();
    public UserDao(){
        userList = new ArrayList<User>();
        managerList = new ArrayList<User>();
    }
    public void userRegister(String name,String pwd){
        User user = new User(name,pwd);
        if (userList.size() == 0){
            userList.add(user);
            System.out.println("账号注册成功,请继续登录");
        }
        else {
            for (User user1 : userList){
                if (user1.getUserName().equals(name)){
                    flag = false;
                    System.out.println("该用户账号已存在,请重新输入");
                }
                else {
                    userList.add(user);
                    System.out.println("账号注册成功,请继续登录");
                }
            }
        }
    }
    public void managerRegister(String name,String pwd){
        User user = new User(name,pwd);
        if (managerList.size() == 0){
            managerList.add(user);
            System.out.println("管理员账号注册成功,请继续登录");
        }
        else {
            for (User user1 : managerList){
                if(user1.getUserName().equals(name)){
                    flag = false;
                    System.out.println("该管理员账号已存在,请重新输入");
                }
                else {
                    managerList.add(user);
                    System.out.println("账号注册成功,请继续登录");
                }
            }
        }
    }

    ////////////////////////用户登录//////////////////////
    public void userLogin(String name,String pwd){
        flag = true;
        if (userList.size() == 0){
            System.out.println("账号不存在,请重新输入");
        }
        else {
        for (User user : userList) {
            if (user.getUserName().equals(name)) {
                if (user.getUserName().equals(name) && user.getUserPassward().equals(pwd)) {
                    System.out.println("用户登录成功");
                    inView.userView();
                } else if (!user.getUserName().equals(name) || !user.getUserPassward().equals(pwd)) {
                    System.out.println("用户名或密码输入错误,请重新登录!");
                    return;
                } else {
                    System.out.println("Error!!!");
                }
            }
        }
        if (flag){
            System.out.println("账号不存在,请重新输入");
            }
        }
    }

    //////////////////////管理员登录/////////////////////
    public void managerLogin(String name,String pwd) {
        flag =true;
        if (managerList.size() == 0) {
            System.out.println("账号不存在,请重新输入");
        }
        else {
            for (User user : managerList) {
                if (user.getUserName().equals(name)){
                    flag = false;
                if (user.getUserName().equals(name) && user.getUserPassward().equals(pwd)) {
                    System.out.println("管理员登录成功");
                    inView.managerView();
                } else if (!user.getUserName().equals(name) || !user.getUserPassward().equals(pwd)) {
                    System.out.println("用户名或密码错误,请重新登录!");
                } else {
                    System.out.println("Error!!!");
                    }
                }
            }
            if (flag){
                System.out.println("账号不存在,请重新输入");
            }
        }
    }
}

图书操作方法(bookList)

在写这一部分代码时犯了一个错误:在循环体里进行判断,就产生了诸如输出重复的废话语句和达不到预期的情况发生。后面利用了flag进行解决。

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

public class bookList {
    Scanner scanner = new Scanner(System.in);
    List<Book> list = new ArrayList<Book>();
    /////////////////////////添加
    boolean flag = true;
    public void addBook(){
        System.out.println("请输入要添加的图书名称");
        String addName = scanner.next();
        flag = true;             //如果不重新赋值true就会出现进不去添加语句的情况,会一直显示该书籍已经存在
        if (list.size() == 0){
            System.out.println("请输入该图书的定价");
            String addValue = scanner.next();
            Book book1 = new Book(addName,addValue);
            list.add(book1);
            System.out.println("书籍 《" + addName +"》 添加成功!");
        }else {
            for (Book book:list) {
            if (book.getBookName().equals(addName)){
                flag = false;
                break;
            }
        }
        if (flag){
            System.out.println("请输入该图书的定价");
            String addValue = scanner.next();
            Book book1 = new Book(addName,addValue);
            list.add(book1);
            System.out.println("书籍 《" + addName +"》 添加成功!");
        }else {
            System.out.println("这本书已经存在库存中");
        }
        }
    }

    ////////////////////////////删除

    public void deleteBook(){
        System.out.println("请输入要删除的图书");
        String name = scanner.next();
        flag = true;
        if(list.size() == 0){
            System.out.println("库存为空,请尝试添加图书后再进行操作!");
        }else {
            for (Book book : list) {
                if (book.getBookName().equals(name)) {
                    list.remove(book);
                    flag = false;
                    break;
                }
            }
            if (!flag){
                System.out.println("已成功从列表中移除 《" + name + "》");
            }else {
                System.out.println("未查找到对应图书");
            }
        }
    }
    ///////////////////////////////////////修改
    public void reviseBook(){
        System.out.println("请输入要修改的图书名称");
        String reviseName = scanner.next();
        flag = true;
        if (list.size() == 0){
            System.out.println("库存为空,请尝试添加图书后再进行操作!");
        }
        else {
        for (Book book1 : list){
            if (book1.getBookName().equals(reviseName)){
                flag = false;
                System.out.println("请输入修改后的图书名称");
                String revisedName = scanner.next();
                System.out.println("请输入修改后的价格");
                String recisedValue = scanner.next();
                Book book = new Book(revisedName,recisedValue);
                list.set(list.indexOf(book1),book);
                System.out.println("已成功将 《"+reviseName+ "》 替换为 《" + revisedName +"》");
                break;
                }
            }
        if (flag){
            System.out.println("未查找到对应图书");
            }
        }
    }

    ////////////////////////////////////查看

    public void lookBook(){
        System.out.println("请输入要查看的图书名称");
        String lookBookName = scanner.next();
        flag = true;
        if(list.size() == 0){
            System.out.println("库存为空,请先联系管理员后再进行操作");
        }else {
            for (Book book : list) {
                if (book.getBookName().equals(lookBookName)) {
                    flag = false;
                    System.out.println(book);
                    break;
                }
            }
            if (flag){
                System.out.println("未查找到对应图书");
            }
        }
    }
    ///////////////////////////////查看所有
    public void lookAll(){
        if (list.size() ==0){
            System.out.println("库存为空,请先联系管理员后再进行操作");
        }else {
        for (Book l : list){
            System.out.println(l);
            }
        }
    }
    ///////////////////////////////购买
    public void buyBook(){
        System.out.println("请输入您要购买的图书名称");
        String buyBook = scanner.next();
        flag = true;
        if (list.size() == 0){
            System.out.println("库存为空,请先联系管理员后再进行操作");
        }else  {
            for (Book book : list){
            if (book.getBookName().equals(buyBook)){
                flag =false;
                System.out.println("《" + buyBook + "》 的价格为" +book.getBookValue());
                System.out.println("确认购买请输入Y,取消购买请输入N");
                String input = scanner.next();
                if(input.equals("Y")){
                    System.out.println("购买成功!");
                    break;
                }else if(input.equals("N")){
                    System.out.println("取消购买成功!");
                    break;
                }else {
                    System.out.println("输入错误,请重新返回购买!");
                    break;
                    }
                }
            }
            if (flag){
                System.out.println("这本书正在赶来的路上,请先选择其它的书吧");
            }
        }
    }
}

后续自己如果想起来了且有更好的编写方法时会继续写一次全新的图书管理系统

2020.12.6

posted @ 2020-12-08 18:33  简于乐。  阅读(624)  评论(0)    收藏  举报