java实现图书馆管理系统

本文实例为大家分享了java实现图书馆管理系统的具体代码,供大家参考,具体内容如下

思路:所有包都在book_manage包里

利用面向对象的多态特性去除了很多if-else的判断,不同的子类在父类所对应的方法不同。

1.首先建立一个book包

包里面有2个类,一个是Book,这个类里面包含一本书的全部信息
另外一个类是BookList,这个类是用来管理每一个书,通过这个类来寻找每一本书。
private Book[] books = new Book[100];
Book数组里面存放所有的书。

2.再建立一个包Operation 这个类里面有一个OI接口,通过对接口里面的Work方法重写,来实现管理员身份和普通用户身份的不同操作。

3.最后建立一个User包,里面有三个类,User,Admin,NormalUser

Admin和NormalUser都继承自User.
User里秒你有一个数组
protected IO[] operation;
这个数组里面包含了用户或者管理员所具备的操作。
通过对数组的索引来确定具体需要调用的操作方法。

下面来看看代码吧:

book包

Book类

package book_manager.book;

public class Book {
 private String name;
 private String id;
 private String author;
 private int price;
 private String type;
 private boolean isBorrow;

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

 @Override //Object中内置的类,用来格式化打印book的信息
 public String toString() {
 return "Book{" +
  "name='" + name + '\'' +
  ", id='" + id + '\'' +
  ", author='" + author + '\'' +
  ", price=" + price +
  ", type='" + type + '\'' +
  ", isBorrow=" + isBorrow +
  '}';
 }

 public String getName(){
 return name;
 }

 public boolean isBorrow(){
 return isBorrow;
 }

 public void setBorrow(boolean bool){
 this.isBorrow=bool;
 }

 public String getId(){
 return id;
 }
}

BookList类

package book_manager.book;

import java.util.Arrays;

public class BookList {
  private Book[] books = new Book[100];
  private int size;
  public BookList(){
  books[0] = new Book("金瓶梅",
    "001", "兰陵笑笑生", 100,
    "古典名著", false);
  books[1] = new Book("水浒传",
    "002", "施耐庵", 100,
    "古典名著", false);
  books[2] = new Book("西游记",
    "003", "吴承恩", 100,
    "古典名著", false);
  size = 3;
 }

 public int getSize(){
   return size;
 }

 public void setBooks(int index,Book book){
   books[index]=book;
 }

 public void setSize(int size){
   this.size=size;
 }

 public Book getBook(int index){
   return books[index];
 }
}

Operation包:

ADD类

package book_manager.Operation;

import book_manager.book.*;

import java.util.Scanner;

public class ADD implements IO{

 @Override
 public void work(BookList bookList) {
  Scanner scanner = new Scanner(System.in);
  System.out.println("请输入书名");
  String name =scanner.next();
  System.out.println("请输入序号");
  String id = scanner.next();
  System.out.println("请输入作者");
  String author =scanner.next();
  System.out.println("请输入价格");
  int price = scanner.nextInt();
  System.out.println("请输入类型");
  String type = scanner.next();
  Book book = new Book(name, id,
    author, price, type, false);
  bookList.setBooks(bookList.getSize(),book);
  bookList.setSize(bookList.getSize()+1);
  System.out.println("添加成功");
 }
}

Borrow类

package book_manager.Operation;

import book_manager.book.Book;
import book_manager.book.BookList;

import java.util.Scanner;

public class Borrow implements IO{
 @Override
 public void work(BookList bookList) {
  int i=0;
  int flag=0;
  Scanner scan = new Scanner(System.in);

  System.out.println("请输入需要借阅的书名");
  String name = scan.next();
  for(;i<bookList.getSize();i++){
   if(name.equals(bookList.getBook(i).getName())){
    if(bookList.getBook(i).isBorrow()==false){
     System.out.println("借阅成功");
     flag=1;
     bookList.getBook(i).setBorrow(true);
    }

    }
   }
  if(flag==0){
   System.out.println("不好意思,借阅失败");
  }

 }
}

Delete类

package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Delete implements IO{

 public void work(BookList bookList){
  Scanner scanner = new Scanner(System.in);
  System.out.println("请输入想要删除的编号");
  String id = scanner.next();
  for(int i=0;i<bookList.getSize();i++){
   if(bookList.getBook(i).getId().equals(id)){
    bookList.setBooks(i,bookList.getBook(bookList.getSize()));
    bookList.setSize(bookList.getSize()-1);
    System.out.println("删除成功");
   }
   else{
    System.out.println("删除失败");
   }
  }
 }
}

Exit类

package book_manager.Operation;

import book_manager.book.BookList;

public class Exit implements IO{
 @Override
 public void work(BookList bookList) {
  System.out.println("退出成功");
  System.exit(0);
 }
}

Find类

package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Find implements IO{
 @Override
 public void work(BookList bookList) {
  int i=0;
  int count=0;
  Scanner scan = new Scanner(System.in);

  System.out.println("请输入需要查找的书名");
  String name = scan.next();
  for(;i<bookList.getSize();i++){
   if(name.equals(bookList.getBook(i).getName())){
    count++;
   }
  }
  if(count==0){
   System.out.println("不好意思,没有找到");
  }
  else{
   System.out.println("找到了,共计"+count+"本");
  }
 }
}

IO接口

package book_manager.Operation;

import book_manager.book.BookList;

public interface IO {
 abstract public void work(BookList bookList);
}

PrintAll类

package book_manager.Operation;

import book_manager.book.BookList;

public class PrintAll implements IO{
 @Override
 public void work(BookList bookList) {
  for(int i=0;i<bookList.getSize();i++){
   System.out.println(bookList.getBook(i));
  }
 }

}

Return类

package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Return implements IO{
 @Override
 public void work(BookList bookList) {
  int i=0;
  int flag=0;
  Scanner scan = new Scanner(System.in);

  System.out.println("请输入需要归还的ID");
  String id = scan.next();
  for(;i<bookList.getSize();i++){
   if(id.equals(bookList.getBook(i).getId())){
    if(bookList.getBook(i).isBorrow()==true){
     System.out.println("归还成功");
     bookList.getBook(i).setBorrow(false);
     flag=1;
    }
    else{
     System.out.println("归还失败");
    }
   }

  }
  if(flag==0){
   System.out.println("不好意思,没有此书");
  }

 }
}

user包:

User类

package book_manager.user;

import book_manager.Operation.*;
import book_manager.Operation.IO;
import book_manager.book.BookList;

abstract public class User {
 String name;
 protected IO[] operation;

 public User(String name){
  this.name=name;
 }

 abstract public int menu();//该方法被重写
 public void doOperation(int choice, BookList bookList) {
  operation[choice].work(bookList);
 }
}

Admin类

package book_manager.user;

import book_manager.Operation.*;

import java.util.Scanner;

public class Admin extends User{
 public Admin(String name){
  super(name);
  operation=new IO[]{
    new Exit(),
    new Find(),
    new ADD(),
    new Delete(),
    new PrintAll(),
  };

 }

 public int menu() {
  System.out.println("============");
  System.out.println("hello " + name);
  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 scanner = new Scanner(System.in);
  int choice = scanner.nextInt();
  return choice;
 }

}

NormalUser

package book_manager.user;

import book_manager.Operation.*;

import java.util.Scanner;

public class NormalUser extends User{
 public NormalUser(String name){
  super(name);
  operation=new IO[]{
    new Exit(),
    new Find(),
    new Borrow(),
    new Return(),
    new PrintAll()
  };
 }
 public int menu() {
  System.out.println("============");
  System.out.println("hello " + name);
  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 scanner = new Scanner(System.in);
  int choice = scanner.nextInt();
  // close 本质上是在关闭 System.in
  // 由于后面还需要用到 System.in, 此处不能盲目关闭.
  // scanner.close();
  return choice;
 }

}

最后还有一个Test类,里面放了main函数

package book_manager;

import book_manager.book.BookList;
import book_manager.user.Admin;
import book_manager.user.NormalUser;
import book_manager.user.User;

import java.util.Scanner;

public class Test {
 public static void main(String[] args) {
  BookList list = new BookList();
  User user = login();
  //通过不同的choice和身份调用不同的Operation方法
   while(true){
   int choice = user.menu();
   user.doOperation(choice, list);
  }
 }

 public static User login(){
  Scanner scanner = new Scanner(System.in);
  System.out.println("请输入你的姓名");
  String name = scanner.next();
  System.out.println("请输入你的身份");
  System.out.println("1.普通用户 2.管理员");
  int role= scanner.nextInt();
  if(role==1){
   return new NormalUser(name);
  }
  else{
   return new Admin(name);
  }

 }
}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 一个简陋的java图书管理系统

    本文代码为原创一个简陋的管理系统,只做功能的测试.并没有去完善所有应有的功能,只做了输入输出查找,仅供参考! 菜单部分: import java.util.Scanner; public class Menu { int Min = 1; int Max = 3; public void getMenu(){ System.out.println("1.显示/2.输入/3.查找"); } public void getFindMenu(){ System.out.println(&qu

  • 图书管理系统java代码实现

    本文实例为大家分享了java实现图书管理系统的具体代码,供大家参考,具体内容如下 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:    <图书管理系统--java>                          * 作    者:       刘江波                       * 完成日期:    2012     年  3    

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • java实现图书馆管理系统

    本文实例为大家分享了java实现图书馆管理系统的具体代码,供大家参考,具体内容如下 思路:所有包都在book_manage包里 利用面向对象的多态特性去除了很多if-else的判断,不同的子类在父类所对应的方法不同. 1.首先建立一个book包 包里面有2个类,一个是Book,这个类里面包含一本书的全部信息 另外一个类是BookList,这个类是用来管理每一个书,通过这个类来寻找每一本书. private Book[] books = new Book[100]; Book数组里面存放所有的书.

  • java控制台输出图书馆管理系统

    java控制台输出图书馆管理系统(只用java代码不用数据库和GUI,java入门的新手秒懂) 在个项目中,我只用数组保存数据,和只用for循环和if条件语句来完成,连数组工具类都没用,所以导致要用到很多的条件语句,虽然比较局限,但可以让新手快速体验一下做小项目的乐趣,也可以练练for和if这些语句,练练一下它们之间嵌套的逻辑关系等,因为时间有限所以没有去优化了,主要还是让新手们体验下做java项目的面向对象编程思想(OOP),给新手们体验一下做项目的乐趣,嘿嘿! 话不多说了,直接切入正题. 设

  • Java实现小型图书馆管理系统

    本文实例为大家分享了Java实现小型图书馆管理系统的具体代码,供大家参考,具体内容如下 以下为小型图书馆管理系统模式图: 模式总体概述: 其中IBorrower接口确定Borrower类标准,Library类为单例设计模式,即图书馆只有一个.Book类为Borrower类的内部类,libraryBook类为Library类的内部类.最后利用PlatForm类进一步的封装.对于类方法中的核心,主要是数组的"增删查改"操作,本项目中三次运用了这些操作,分别在Borrower.Library

  • java+mysql实现图书馆管理系统实战

    本文实例为大家分享了java+mysql实现图书馆管理系统的具体代码,供大家参考,具体内容如下 概述 基于Spring + Spring MVC + MyBatis的图书馆管理系统,使用Maven进行包管理.主要功能包括:图书查询.图书管理.图书编辑.读者管理.图书的借阅与归还以及借还日志记录等. 代码 @Controller public class LendController { @Autowired private LendService lendService; @Autowired

  • Java 实战项目锤炼之网上图书馆管理系统的实现流程

    一.项目简述 功能: 区分为管理员用户和普通用户,普通用户:用户登录,个 人信息修改,图书查询,用户借阅,用户归还,管理员用 户:图书馆里,归还管理,借阅信息查询,图书维护,分 类管理,读者管理等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP + Servlert + html+ css + JavaScript + JQuery

  • JAVA实现图书管理系统项目

    目录 前言 项目需求 设计前提 设计目标 设计结构图 功能解读 项目实现 基本对象的设置 通过IO流的写入写出 总结 前言 相信再每一个学生在学习编程的时候,应该都会写的一个小项目--图书管理系统.为什么这么说呢?因为我认为一个学校的氛围很大一部分可以从图书馆的氛围看出来,而图书管理系统这个不大不小的项目,学生接触的多,也算是比较熟悉,就不会有陌生感,能够练手,有有些难度,所以,今天,我的小小项目也来了. 项目需求 设计前提 掌握java基本语法 熟悉使用流程控制 理解面向对象思想 熟练封装,继

  • Java实现图书管理系统的示例代码

    目录 一.功能介绍 二.Main包 三.User包 1. User 2. AdminUser 3. NormalUser 四.book包 1. Book 2. BookList 五.operations包 1. IOperation接口 2. AddOperation 3. BorrowOperation 4. DelOperation 5. DisplayOperation 6. ExitOperation 7. FindOperation 8. ReturnOperation 一.功能介绍

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

  • java学生信息管理系统MVC架构详解

    本文实例为大家分享了java学生信息管理系统MVC架构,供大家参考,具体内容如下 一.项目结构 学生信息管理系统分三层进行实现.student.java主要提供数据,cotroller.java的功能是绑定试图和计算数据.Stuview.java用于单一的用来显示数据. 二.源码 1.1.Student 类 /* * @FileName: Student.class * @version:1.0 * @author:nazi * 描述:模型层 * */ import java.io.Serial

  • Java实现员工管理系统

    本文实例为大家分享了Java实现员工管理系统的具体代码,供大家参考,具体内容如下 本系统主要练习到的相关内容: 1. 流程控制语句 2. 类.对象 3. 封装.继承.多态 4. 方法的重载.重写 5. 访问修饰符 6. static 需求说明: 员工信息的基本情况 ---------普通员工---------– 属性:员工编号.员工姓名.员工职务.请假天数.基本工资 普通员工工资: 在基本工资的基础上增加10%的工作餐,50%的岗位补助,200元住房补助 基本工资+基本工资*0.1+基本工资*0

随机推荐