小工具知识网

当前位置: 首页 > 行业知识 > 图书管理系统(java) 代码展示和思路介绍 (9000字小长文)

行业知识

图书管理系统(java) 代码展示和思路介绍 (9000字小长文)

2026-10-26 14:47:17 来源:互联网转载

前言:

这是本人基于面向对象的思想,利用java写的,用于练习的图书管理系统,代码和框架存在借鉴,本人并无获取利益的考虑,旨在分享和记录知识

框架与思路

作为一个图书管理系统,我们可以将它分成这个几个对象

1.书

书可以分为书籍信息和书架,前者负责储存书的信息,后者如字面意思,负责向使用者展示有多少书籍

2.用户

用户分为管理员和普通用户,前者要进入,还需要设置密码

3.操作

管理员和用户需要有不同的操作权限吗,用于查阅,增加,显示,借书和还书等操作

具体框架如截图

框架图

这里有个习惯不要学,类名开头字母要大写哦

"书籍"包的代码

首先是book

package Book;public class book{    private String name;    private  String author;    private int price ;    private  String type;    private boolean isBorrowed;//是否已经被借出        @Override    public String toString() {        return "book{" +                "name='" + name + '\'' +                ", author='" + author + '\'' +                ", price=" + price +                ", type='" + type + '\'' +                ((isBorrowed==true?"已经被借出":"没有被借出"))+                '}';    }    public book(String name, String author, int price, String type) {        this.name = name;        this.author = author;        this.price = price;        this.type = type;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    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;    }    public String getType() {        return type;    }    public void setType(String type) {        this.type = type;    }    public boolean isBorrowed() {        return isBorrowed;    }    public void setBorrowed(boolean borrowed) {        isBorrowed = borrowed;    }}

代码作用:

负责建立书籍的相关信息,为了体现的专业点(封装),我用了private

值得一提的是

 ((isBorrowed==true?"已经被借出":"没有被借出"))+

这里运用的三目运算符,来体现书籍是否被借走

然后是书架

首先给各位看看代码的效果

boolean 默认是false,所以状态是没有被借出

说白了,book类也是一种数据类型,我们自然可以用数组来保存它,数组真的很有用

代码

package Book;import Book.book;public class booklist{      private   book [] books;      private    int usedsize;    public booklist()    {        this.books = new book[1000];        this.books[0]=new book("红楼梦","曹雪芹",20,"小说");        this.books[1]=new book("水浒传","施耐庵",20,"小说");        this.books[2]=new book("三国演义","罗贯中",21,"小说");        this.usedsize=3;    }    public int getUsedsize()     {        return usedsize;        // 获得数组大小    }    public void setUsedsize(int usedsize)    {        this.usedsize = usedsize;        //改变数组大小    }    public book getbook(int pos)    {        return books[pos];        // 负责展示书籍    }    public void setbook(int pos,book abook)    {        books[pos]=abook;        //放置书籍    }}

用户包——个人认为的难点

用户分为普通用户和管理员,那么他们肯定有两套界面,

如图所示

    public int menu ()    {        System.out.println("**********用户***********");        System.out.println("1.查找图书");        System.out.println("2.借阅图书");        System.out.println("3.归还图书");         System.out.println("4.显示图书");        System.out.println("0.退出系统");        System.out.println("*********************");        System.out.println("请输入你的操作:");        Scanner sc=new Scanner(System.in);        int choice=sc.nextInt();        return choice;    }
    public int menu ()    {            System.out.println("*********管理员************");            System.out.println("1.查找图书");            System.out.println("2.增加图书");            System.out.println("3.删除图书");            System.out.println("4.显示图书");            System.out.println("0.退出系统");            System.out.println("*********************");            System.out.println("请输入你的操作:");            Scanner sc = new Scanner(System.in);            int choice = sc.nextInt();            return choice;    }

我们需要一个父类

package User;import Book.booklist;import operation.WORK;public  abstract class Users{    protected String name;    protected WORK[] Work;    public Users(String name) {        this.name = name;    }    @Override    public String toString() {        return "Users{" +                "name='" + name + '\'' +                '}';    }    public abstract int menu ();    public  void  Doop(int choice, booklist Booklist)    {         Work[choice].work(Booklist);    }}

QE:为什么要数组?

AW:因为不同的操作类也是一种引用数据,可以存在数组里面,然后通过输入下标调用

 (说人话:调用WORK数组下标为choice的元素,实现其work方法)

在子类中重写

两个子类,代码分别如下

package User;import operation.*;import java.util.Scanner;public class Nomaluser extends Users{    public Nomaluser(String name)    {        super(name);        this.Work=new WORK[]{new Exitop(),new Findop(),new Borrowop(),new Returnop(),new Show()};    }    public int menu ()    {        System.out.println("**********用户***********");        System.out.println("1.查找图书");        System.out.println("2.借阅图书");        System.out.println("3.归还图书");         System.out.println("4.显示图书");        System.out.println("0.退出系统");        System.out.println("*********************");        System.out.println("请输入你的操作:");        Scanner sc=new Scanner(System.in);        int choice=sc.nextInt();        return choice;    }}
package User;import operation.*;import java.util.Scanner;public class Adminuser extends Users{    public Adminuser(String name)    {        super(name);        this.Work=new WORK[]{new Exitop(),new Findop(),new Addop(),new Deleteop(),new Show()};    }    public int menu ()    {            System.out.println("*********管理员************");            System.out.println("1.查找图书");            System.out.println("2.增加图书");            System.out.println("3.删除图书");            System.out.println("4.显示图书");            System.out.println("0.退出系统");            System.out.println("*********************");            System.out.println("请输入你的操作:");            Scanner sc = new Scanner(System.in);            int choice = sc.nextInt();            return choice;    }}

操作包

增加操作

package operation;import Book.book;import Book.booklist;import java.util.Scanner;public class Addop implements WORK{    @Override    public void work(booklist BOOKlist)    {        System.out.println("增加图书");        Scanner scanner=new Scanner(System.in);        System.out.println("请输入您要添加的图书的书名:");        String name = scanner.nextLine();        System.out.println("请输入您要添加的图书的作者名:");        String author = scanner.nextLine();        System.out.println("请输入您要添加的图书的类型:");        String type = scanner.nextLine();        System.out.println("请输入您要添加的图书的价格:");        int price = scanner.nextInt();        book Book =new book(name,author,price,type);        int size=BOOKlist.usedsize;          for(int i=0;i

上一篇:揭秘宗的正确读音及其深层含义,一网打尽,让你一次掌握!

下一篇:tolder英语怎么读?