java实现图书管理系统

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

一、背景介绍

通过一段时间java编程的学习,需要一个比较综合的实例来进行编程的练习,是一个对前段时间所学内容进行总合提升的一个契机。选择了图书管理系统,会用到的javaSE知识有:变量、包、继承、类、接口、循环结构等。是一个很综合的典例。

二、核心需求

1.用户可以登录到系统上 分为 管理员、普通用户两种角色,这两种不同的角色根据自己的身份可以实现不同的操作。

普通用户

a)查阅某个书籍的信息
b)借阅书籍
c)   归还书籍
d)退出程序

管理员

a)查阅某个书籍的信息
b)增加书籍
c)   删除书籍
d)查看书籍列表
e)退出程序

程序框架结构图

三、代码以及详解

1.User类

package booksystem;

import booksystem.operation.IOperation;

abstract public class User {
 protected String name;//定义书名
 protected IOperation[] operations;//定义一个接口数组
 public abstract int menu();//是用户和管理员的父类,不进行实例化,所以定义为抽象方法

 public void doOperation(int choice,BookList bookList){
 IOperation operation=this.operations[choice-1];
 operation.work(bookList);
 }
}

User类是NormalUser类和Admin类的父类,由于不需要实例化,将menu()函数定义为了抽象函数。

2.NormalUser类

package booksystem;

import booksystem.operation.*;
import booksystem.operation.IOperation;

import java.util.Scanner;

public class NormalUser extends User {

 public NormalUser(String name) {
 this.name = name;
 this.operations = new IOperation[]
 {
 new FindOperation(),
 new BorrowOperation(),
 new ReturnOperation(),
 new ExitOperation(),
 };
 }
 @Override
 public int menu(){
 System.out.println("~~~~~~~~~~~~~~~~~~");
 System.out.println("Hello"+name+"Welcome to use booksyetem");
 System.out.println("1.查阅书籍信息");
 System.out.println("2.借阅书籍");
 System.out.println("3.归还书籍");
 System.out.println("4.退出系统");
 System.out.println("~~~~~~~~~~~~~~~~~~");
 System.out.println("请输入您的选择:");
 Scanner scanner=new Scanner(System.in);
 int choice=scanner.nextInt();
 return choice;//返回一个整型数
 }
}

NormalUser类针对与普通用户而编写,在代码中定义了一个接口数组,在其中添加了普通用户需要用到的查阅、借阅、归还、退出系统的四大功能,在menu()函数中也按照同样的顺序,menu()函数是重写父类的,所以为了提醒编译器,在函数头前加上了 @Override进行提示。

3.Admin类

package booksystem;

import booksystem.operation.*;

import java.util.Scanner;

public class Admin extends User {
 public Admin(String name){
 this.name=name;
 this.operations=new IOperation[]{
 new FindOperation(),
 new AddOperation(),
 new DelOperation(),
 new DisplayOperation(),
 new ExitOperation(),
 };
 }
 @Override
 public int menu(){
 System.out.println("~~~~~~~~~~~~~~~~~~");
 System.out.println("Hello"+name+"Welcome to use booksyetem");
 System.out.println("1.查阅书籍信息");
 System.out.println("2.新增书籍信息");
 System.out.println("3.删除书籍信息");
 System.out.println("4.退出系统");
 System.out.println("~~~~~~~~~~~~~~~~~~");
 System.out.println("请输入您的选择:");
 Scanner scanner=new Scanner(System.in);
 int choice=scanner.nextInt();
 return choice;
 }
}

Admin类编写的思路和NormalUser类的思路相同,区别在于用户界面的不同,对应要使用的功能也不同,分别是查阅、新增、删除和退出系统。

4.Book类

package booksystem;

public class Book {
 private String name;
 private String author;
 private double price;
 private String type;
 private boolean isBorrowed = false;

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

 @Override
 public String toString() {
 return "Book{" +
 "name=" + name + '\'' + ",author" + author + '\'' + ",price=" + price + ",type='"
 + '\'' + type + '\'' + ",isBorrow=" + isBorrowed + '}';
 }

 public String getName() {
 return name;
 }

 public boolean isBorrowed(){
 return isBorrowed;
 }

 public void setBorrowed(boolean borrowed){
 isBorrowed=borrowed;
 }

}

Book类针对书籍,定义了有关书的属性,作者、价格、名字、类别,重写了toString函数,以及对于书的几个常用的操作功能函数,getName,以及判读是否借出和定义书籍借出状态的函数。

5.BookList类

package booksystem;

public class BookList {
 private Book[] books=new Book[100];//定义一book数组
 private int size=0;

 public BookList(){
 books[0]=new Book("计算机网络教程","郝文源",125,"专业书籍");
 books[1]=new Book("盗墓笔记","南派三叔",150,"网络小说");
 books[2]=new Book("三体","刘慈欣",178,"科幻小说");
 size = 3;
 }//给book数组中初始化一些书
 public Book getBook(int index){
 return books[index];
 }
 public void setBook(int index,Book book)
 {
 books[index]=book;
 }
 public int getSize(){
 return size;
 }
 public void setSize(int size){
 this.size=size;
 }
}

BookList类中定义了一个book数组,并给数组中初始化了一些书,定义了常用的功能函数

6.Main类

package booksystem;

import java.util.Scanner;
public class Main {
 public static void main(String[] args){
 Object o=null;
 BookList booklist= new BookList();

 User user=login();//上转型,这里先调用了login()函数,返回一个Admin对象或NormalUser对象

 while(true){
 int choice=user.menu();
 user.doOperation(choice,booklist);
 }//在进行退出系统的功能时,会一直进行循环,menu()函数最终会返回一个整型数,对应选择操作中的一项
 }

public static User login() {
 System.out.println("请输入您的姓名");
 Scanner scanner = new Scanner(System.in);
 String name = scanner.next();
 System.out.println("请输入您的角色:1 管理员 0 普通用户");//根据不同的选择创建对应的对象
 int who = scanner.nextInt();
 if (who == 1) {
 return new Admin(name);
 }
 return new NormalUser(name);
}
}

主函数中主要实现了login()函数,根据登录系统用户的选择,决定不同的身份,返回两种对象中的一种,在while循环中,只要不进行exit功能,循环便会一直执行。

7.IOperation

package booksystem.operation;

import booksystem.BookList;

public interface IOperation {
 void work(BookList bookList);
}

9.AddOperation

package booksystem.operation;

import booksystem.Book;

import booksystem.BookList;

import java.util.Scanner;

public class AddOperation implements IOperation {
 @Override
 public void work(BookList bookList){
 Scanner scanner=new Scanner(System.in);
 System.out.println("新增书籍");
 System.out.println("请输入新书籍的名称");
 String name=scanner.next();
 System.out.println("请输入新书籍的作者");
 String author=scanner.next();
 System.out.println("请输入新书籍的价格");
 double price=scanner.nextDouble();
 System.out.println("请输入新书籍的类别");
 String type=scanner.next();
 Book newBook=new Book(name,author,price,type);
 int curSize=bookList.getSize();
 bookList.setBook(curSize,newBook);
 bookList.setSize(curSize+1);
 System.out.println("新增书籍成功");
 }
}

10.BorrowOperation

package booksystem.operation;

import booksystem.Book;

import booksystem.BookList;

import java.util.Scanner;

public class BorrowOperation implements IOperation{
 @Override
 public void work(BookList bookList)
 {
 Scanner scanner=new Scanner(System.in);
 System.out.println("借阅书籍");
 System.out.println("请输入要借阅的书籍的名称");
 String name=scanner.next();

 int i=0;
 for(;i<bookList.getSize();i++)
 {
 if(bookList.getBook(i).getName().equals(name)){
 break;
 }
 }
 if(i>=bookList.getSize()){
 System.out.println("未找到指定的书籍,无法借阅!");
 return;
 }
 Book currentBook=bookList.getBook(i);
 if(currentBook.isBorrowed()){
 System.out.println("该书籍已经被借出!");
 return;
 }
 bookList.getBook(i).setBorrowed(true);
 System.out.println("借书成功!");
 }

}

11.DelOperation

package booksystem.operation;

import booksystem.BookList;

import java.util.Scanner;

public class DelOperation implements IOperation{
 @Override
 public void work(BookList bookList)
 {
 Scanner scanner=new Scanner(System.in);
 System.out.println("删除书籍");
 System.out.println("请输入要删除的书籍的名称");
 String name=scanner.next();

 int i=0;
 for(;i<bookList.getSize();i++)
 {
 if(bookList.getBook(i).getName().equals(name)){
 break;
 }
 }
 if(i>=bookList.getSize()){
 System.out.println("您输入的书籍在+"+name+"在系统中没有找到!删除失败!");
 return;
 }
 if(i==bookList.getSize()-1)
 {
 bookList.setSize(bookList.getSize()-1);
 System.out.println("删除成功!");
 return;
 }
 bookList.setBook(i,bookList.getBook(bookList.getSize()-1));
 bookList.setSize(bookList.getSize()-1);
 System.out.println("删除成功!");
 }
}

13.ExitOperation

package booksystem.operation;

import booksystem.BookList;

public class ExitOperation implements IOperation{
 @Override
 public void work(BookList bookList)
 {
 System.out.println("退出程序");
 System.exit(0);
 }
}

14.FindOperation

package booksystem.operation;

import booksystem.BookList;

public class ExitOperation implements IOperation{
 @Override
 public void work(BookList bookList)
 {
 System.out.println("退出程序");
 System.exit(0);
 }
}

15.ReturnOperation

package booksystem.operation;

import booksystem.BookList;

import booksystem.Book;
import java.util.Scanner;

public class ReturnOperation implements IOperation{
@Override
 public void work(BookList bookList){
 Scanner scanner=new Scanner(System.in);
 System.out.println("归还书籍");
 System.out.println("请输入要还的书籍的名称");
 String name=scanner.next();
 int i=0;
 for(;i<bookList.getSize();i++)
 {
 Book book=bookList.getBook(i);
 if(book.getName().equals(i))
 {
 break;
 }
 }
 if(i>=bookList.getSize())
 {
 System.out.println("书籍没有找到,无法归还");
 return;
 }
 Book currentBook=bookList.getBook(i);
 if(!currentBook.isBorrowed())
 {
 System.out.println("这本书没有借出,无法归还");
 }
 currentBook.setBorrowed(false);
 System.out.println("归还书籍成功");
 return;
}
}

四、编程截图及测试图

包和类放置图

运行截图

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

(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+MySQL实现图书管理系统(完整代码)

    (完整代码+实训报告): 链接: https://pan.baidu.com/s/1E6BhEaHMa6Wch5yf6YAjOA 提取码: vnrx 觉着有用就点个赞哦~ 一,功能 管理员登录 图书借阅信息管理 图书信息管理 管理员更改密码 退出系统 二,工具 Eclipse Version: 2018-09 (4.9.0) MySQL Workbench 8.0 CE mysql-connector-java-8.0.13.jar 三.效果图: 登录界面: 主界面: 借阅书籍管理: 个人书库管

  • Java+MySQL 图书管理系统

    一,功能 管理员登录 图书借阅信息管理 图书信息管理 管理员更改密码 退出系统 二,工具 Eclipse Version: 2018-09 (4.9.0) MySQL Workbench 8.0 CE mysql-connector-java-8.0.13.jar 三.效果图: 登录界面: 主界面: 借阅书籍管理: 个人书库管理: 更改密码: 四.数据库设计 1)图书表 2)用户表 两个数据表间没有关联: 五.JAVA层次分析 (1)逻辑图 (2)包结构,采用MVC三层架构组织各个模块 六.主要

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

    今天博主再给大家分享一个小项目:MiNi图书管理系统.用的是Java语言开发的,代码不多,大概260行左右吧,系统是实现图书的新增图书.删除图书.借阅图书.归还图书.查看图书等简单的功能(后附源代码)! 首先展示一下运行界面效果图:运行代码后,会在控制台显示如下界面: 然后让用户选择,如果用户不小心或者误输入了错误的数,会再次让用户进行输入. 当用户输入2后,可以查看图书,会显示已有的图书:包括图书书名.借阅状态.借阅次数.借阅日期等信息. 当用户输入1后,可以新增图书,再次让用户输入新增的图书

  • Java异常之图书管理系统

    本文实例为大家分享了Java异常之图书管理系统的具体代码,供大家参考,具体内容如下 模拟借书系统,任务要求: 感觉自己的写出来的代码不够简洁,参考了其他的案例写了一个,效果如下: 结构: 运行异常1: 运行异常2: 运行异常3: 正常运行: 1.名称查询 2.序号查询: Book.java: package com.tony; /* * 图书租赁系统 */ public class Book { public String bookName; public int bookId; public

  • 图书管理系统java版

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

  • Java实战之基于I/O流设计的图书管理系统

    一.前言 当前,我还没有学到数据库相关的知识,想要完全通过Java来完成一个可以存储数据的图书馆管理系统就只能使用I/O流的知识,将内容都保存到文件中,再进行增删改查的操作,这就很考验我们的Java基础知识掌握能力. 二.项目介绍 Java基本语法的掌握 流程控制语句的熟练使用 面向对象思想的理解 能否熟练使用封装.继承.多态 接口.异常的熟悉 集合的使用 是否熟悉掌握I/O流相关操作 三.项目说明 传统的人工管理图书馆流程繁琐,我们需求设计一个图书馆管理系统来方便学生借书以及管理员管理书籍 系

  • java实现图书管理系统

    本文通过实例为大家分享了java实现图书管理系统的具体代码,供大家参考,具体内容如下 一.背景介绍 通过一段时间java编程的学习,需要一个比较综合的实例来进行编程的练习,是一个对前段时间所学内容进行总合提升的一个契机.选择了图书管理系统,会用到的javaSE知识有:变量.包.继承.类.接口.循环结构等.是一个很综合的典例. 二.核心需求 1.用户可以登录到系统上 分为 管理员.普通用户两种角色,这两种不同的角色根据自己的身份可以实现不同的操作. 普通用户 a)查阅某个书籍的信息 b)借阅书籍

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

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

  • Java 实战图书管理系统的实现流程

    一.项目简述 功能包括(管理员和学生角色): 管理员和学生登录,图书管理,图书添加删除修改,图书 借阅,图书归还,图书查看,学生管理,借还管理,读者 管理,密码管理,信息修改等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript

  • 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 springboot设计实现的图书管理系统(建议收藏)

    目录 前言 背景意义 数据库设计 功能截图 代码实现 前言 随着网络技术的发展.计算机应用水平广泛提高,原来系统的时效性.数据的正确性.操作的方便性上都存在不足,已影响到系统的正常使用.经过考察比较,决定自己对图书管理系统重新设计,使系统能利用软件开发技术的成果,方便图书的管理.图书管理系统是典型的信息管理系统.系统介绍了图书系统的开发过程,设计中遇到的问题及解决方法以及提高当前应用程序或系统开发进度和改善工作性能.利用其提供的各种面向对象的开发工具首先在短时间内建立系统应用原型然后对初始原型系

随机推荐