用java写图书管理系统,java简单图书管理系统的代码

  用java写图书管理系统,java简单图书管理系统的代码

  00-1010 1.Book包2.user包3.operate包Java中最重要的语法之前已经基本介绍过了。本文将利用前面的内容写一个简单的图书管理系统,中间会展示一些代码来说明。源代码地址在这个project-Gitee.com,有:人练习。

  我们先来看看手术的效果。

  我们来分析一下:

  Java是通过对象之间的交互来解决事情的,所以我们来看看有哪些对象。

  首先,有两个明显的对象:用户和图书,所以创建两个包:图书和用户。

  从上图可以看出,不同的用户有相同的操作,也有不同的操作,所以你不妨把所有的操作放在一个包里,直接调用你需要的就行了。我把这个包命名为operate。

  00-1010首先包里要有一个Book类,里面记录了关于记录数量的各种信息,包括书名、作者、图书类型、价格、借阅情况等。我用private来修饰所有包中所有类的成员变量,只提供外部方法,后面就不赘述了。代码如下(只显示了部分代码):

  包书;公共类Book {私有字符串名称;私有字符串作者;私有字符串类型;私有int价格;私有布尔借;公共字符串getName(){ return name;} public void set name(String name){ this . name=name;}公共字符串getAuthor() {返回作者;} public void set author(String author){ this . author=author;}}}既然有书,就需要书架来存放,所以在图书包中定义一个名为BookShelf的类来存放图书,记录图书的数量。图书存储可以通过使用一组图书类来实现。

  公共课书架{私书[]书籍=新书[1000];private int计数;//记录书籍的数量}因为不能直接访问数组,所以在类中增加了一个获取数组下标的方法,而访问数组的方法一般都是对书籍进行操作,所以也修改了setBook方法。

  包书;公共课书架{私书[]书籍=新书[1000];private int计数;//记录图书数量public void set books (int pos,book book){ books[pos]=book;} public int getCount() {返回计数;} public void set count(int count){ this . count=count;} public bookshelf(){ books[0]=new book(呐喊,鲁迅,小说集,30);//默认开头有一本书。写不写。this . count=1;}//获取下标对应的book public book pos(int I){ return books[I];}}书包的初步代码在这里,继续下一个包

  00-1010包肯定会有两个类:NormalUser和administrator,但重点是如何实现图中不同的用户有不同的操作。

  我们先写登录方法,然后分析一下:

  public static void log in(){ system . out . println( Enter name:);Scanner scanner=新扫描仪(system . in);string name=scanner . nextline();System.out.println(输入您的身份:1。管理员2。普通用户’);int I=scanner . nextint();if(i==1) {

   //管理员 } else { //普通用户 } }方法根据不同的数字来判断是哪种用户,所以返回值应该是返回一个类,但这里有两个类,为解决这个问题,我们可以让NormalUser和AdminUser都继承同一个父类,方法只要返回父类即可

  父类代码如下:

  

public abstract class User { private String name; public User(String name) { this.name = name; } public abstract void menu(); //菜单抽象方法,子类实现}

子类代码:

 

  

public class AdminUser extends User{ public AdminUser(String name) { super(name); } @Override public void 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("选择操作"); }}public class NormalUser extends User{ public NormalUser(String name) { super(name); } @Override public void menu() { System.out.println("欢迎使用"); System.out.println("1.查找图书"); System.out.println("2.借阅图书"); System.out.println("3.归还图书"); System.out.println("0.退出系统"); System.out.println("选择操作"); }}

不同用户对应着不同的操作,但有相同的操作数,所以两个类需要有一个数组来存放各自的方法来防止出错,而且这个数组是要在用户选择之前就准备好,所以数组应该是在构造方法内,修改后的类如下:

 

  

public abstract class User { private String name; public IOperate[] ioperate; public void chooseOperate(int choice,BookShelf bookShelf) { ioperate[choice].work(bookShelf); } public User(String name) { this.name = name; } public abstract int menu();}public class AdminUser extends User{ public AdminUser(String name) { super(name); this.ioperate=new IOperate[] { new Exit(), new FindBook(), new AddBook(), new DelBook(), new DisplayBook(), }; } @Override 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("选择操作"); Scanner scanner=new Scanner(System.in); int choice=scanner.nextInt(); return choice; }}public class NormalUser extends User{ public NormalUser(String name) { super(name); this.ioperate=new IOperate[] { new Exit(), new FindBook(), new BorrowBook(), new ReturnBook(), }; } @Override public int menu() { System.out.println("欢迎使用"); System.out.println("1.查找图书"); System.out.println("2.借阅图书"); System.out.println("3.归还图书"); System.out.println("0.退出系统"); System.out.println("选择操作"); Scanner scanner=new Scanner(System.in); int choice=scanner.nextInt(); return choice; }}

 

  

3.operate包

图书的增删改查等操作其实都是在对Book数组来进行操作的,所以这些方法的参数都是BookShelf类,那么我们可以定义一个接口,接口内定义此方法,然后其它类实现此接口即可

 

  接口代码:

  

package operate;import book.BookShelf;public interface IOperate { public void work (BookShelf bookShelf);}

至于对书的操作,这里以增加书籍为例

 

  我们需要知道书的信息,然后要有一个Book类来接收,最后放到数组中

  按照这个逻辑,之前的Book类就需要修改:在Book类中添加一个构造方法以便接收书的信息,注意方法在数组中的位置要和你自己写的菜单中的位置对应

  

public Book(String name, String author, String type, int price) { this.name = name; this.author = author; this.type = type; this.price = price; }

增加书的方法代码:

 

  

public class AddBook implements IOperate { @Override public void work(BookShelf bookShelf) { System.out.println("请输入图书的名字:"); Scanner scanner = new Scanner(System.in); 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,type,price); int count=bookShelf.getCount(); bookShelf.setBooks(count,book); bookShelf.setCount(count+1); System.out.println("新增成功"); }}

注:

 

  1.由于引用变量默认是输出修改的地址,所以要打印书的内容的话需要在类Book中重写toString方法

  2.退出方法在退出前需遍历数组将其指向的对象都改为null方便回收,虽然程序结束后系统也会回收,但你要知道大型工程里面有些程序一旦跑起来后想要停下来不是那么容易的

  到这里这个图书管理系统基本完成,完

  到此这篇关于Java手写图书管理基本功能附代码的文章就介绍到这了,更多相关Java图书管理内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: