java实现简单的图书管理系统

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

一、项目分布

Book类: 定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的get、set方法
Library类: 写了登录函数(1、普通用户,2、管理员,3、退出系统),
Person类:定义的人的属性(姓名,性别,年龄)并且写了属性的get、set方法,定义了一些书。
operate接口:操作的接口,操作方法:查询/查阅,删除/借阅,增加/还书,显示书籍列表
Root类:继承了Person类,实现operate(查阅,删除,增加,显示书籍列表)接口
User类:继承了Person类,实现operate(查询,借阅,还书,显示书籍列表)接口
Main类:Main中的主函数开启整个项目。

模型图:

声明: 本项目只是一个简单的面向对象入门小项目,有一些基础理论需要掌握,比如对象,类,抽象类,接口,继承,实现,数组及数组的操作,for循环,while循环,switch语句,if语句。

二、代码展示

1.Book类

public class Book {
 private String name; //书名
 private String author; //作者
 public double price; //价格
 private String category; //分类
 private boolean state; //状态  true-未借出  false-已借出

 //通过构造函数给定书的属性
 public Book(String name,String author,double price,String category,boolean state){
  this.author = author;
  this.name = name;
  this.price = price;
  this.category = category;
  this.state = state;
 }

 public Book() {  //默认10本书
  this(10);
 }
 public Book(int i) {
  Person.books = new Book[i];
 }

 //属性的获取和设置
 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 double getPrice() {
  return price;
 }
 public void setPrice(double price) {
  this.price = price;
 }
 public String getCategory() {
  return category;
 }
 public void setCategory(String category) {
  this.category = category;
 }
 public boolean getState() {
  return state;
 }
 public void setState(boolean state) {
  this.state = state;
 }
}

2.Library类

import java.util.Scanner;

public class Library {
 Scanner sc = new Scanner(System.in);
 //登录函数:显示登录界面进行选择登录
 public void login() {
  int count = 0;
  Person p = null;
  while (count < 2) {
   System.out.println("===============jewel图书管理系统===============");
   System.out.println("欢迎讨论指正! qq505791225"+"\n");
   System.out.println("请登录:1.普通用户  2.管理员登录  3.退出系统");

   int n = sc.nextInt();
   //通过输入的值进行登录判断
   if (n == 3) {
    return;
   }
   switch (n) {
    case 1:
     System.out.println("请输入姓名:");
     String Uname = sc.next();
     System.out.println("请输入性别:");
     String Usex = sc.next();
     System.out.println("请输入年龄:");
     int Uage = sc.nextInt();

     p = new User(Uname,Usex,Uage); //构造普通用户对象

     System.out.println("登录成功!");
     System.out.println("当前普通用户:"+"姓名:" + p.getName() + " "+"性别:" + p.getSex() + " "+"年龄"+ p.getAge());
     //普通用户循环操作
     while (true) {
      System.out.println("请输入你的操作: 1.查询书籍 2.借阅书籍 3.归还书籍 4.显示书籍列表 5.退出");
      int i = sc.nextInt();
      if (i == 5) {
       System.out.println("您已成功退出!");
       break;
      }else {
       p.operate();  //调用普通用户的操作方法
      }
     }
     break;
    case 2:
     System.out.println("请输入管理员姓名:");
     String Rname = sc.next();
     System.out.println("请输入性别:");
     String Rsex = sc.next();
     System.out.println("请输入年龄:");
     int Rage = sc.nextInt();

     p = new Root(Rname,Rsex,Rage);//构造管理员对象

     System.out.println("登录成功!");
     System.out.println("当前管理员:"+"姓名:" + p.getName() + " "+"性别:" + p.getSex() + " "+"年龄" + p.getAge());
     while (true) {
      System.out.println("请输入你的操作: 1.整理书籍 2.查阅书籍 3.增加书籍 4.删除书籍 5.显示书籍列表 6.退出");
      int j = sc.nextInt();
      if (j == 6) {
       System.out.println("您已成功退出!");
       break;
      }else{
       p.operate();//调用管理员的操作方法
      }
     } break;
   }
  }
 }
}

3.Person类(抽象类)

abstract class Person {
 public String name;
 public String sex;
 public int age;
 /**
  *  默认定义10本书籍。(预留3本新书的buffer,用来添加书籍)
  */
 public static Book[] books = new Book[]{
   new Book("西游记", "吴承恩", 10, "名著", true),
   new Book("红楼梦", "曹雪芹", 20, "名著", true),
   new Book("三国演义", "罗贯中", 15, "名著", true),
   new Book("小茗同学", "小明", 5, "杂志", true),
   new Book("C与指针", "马老师", 35, "计算机", true),
   new Book("Java编程思想", "王老师", 55, "计算机", true),
   new Book("新世界", "陈宇", 15, "杂志", true),
   new Book("阿衰与大头妹", "阿衰", 5, "漫画", true),
   new Book("一个人就一个人", "刘同", 35, "小说", true),
   new Book("活着", "陈彤", 36, "小说", true),
   new Book(),
   new Book(),
   new Book(),
 };

 public Person(String name, String sex, int age) {
  this.age = age;
  this.name = name;
  this.sex = sex;
 }

 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 /**
  *  抽象类中的抽象方法
  */
 public abstract void operate();
}

4.operate接口

public interface operate{  //操作的接口
    void select(Book[] books); //查询,查阅
    void delete(Book[] books);//删除,借阅
    void add(Book[] books); //增加,还书
    void list(Book[] books); //显示书列表
}

5.Root类

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Root extends Person implements Operate {
 //继承了人的类,需要重写它的抽象方法operate,实现了operate接口,需要重写接口内的方法

 public Root(String name, String sex, int age) {
  //调用人基类的构造函数
  super(name, sex, age);
 }

 Scanner sc = new Scanner(System.in);

 /**
  * 管理员的操作
  */
 @Override
 public void operate() {
  System.out.print("请输入确认操作:");
  int i = sc.nextInt();
  switch (i) {
   case 1:
    //整理
    sort(books);
    break;
   case 2:
    //查
    select(books);
    break;
   case 3:
    //加
    add(books);
    break;
   case 4:
    //删
    delete(books);
    break;
   case 5:
    //列表
    list(books);
    break;
   default:
    System.out.println("输入有误!");
    break;

  }
 }

 /**
  *  compareable整理,重写compare to,如果数组中有空的,则会出现空指针异常,把不空的拷到另一个新的数组,然后实现
  * @param books
  */
 public void sort(Book[] books) {
  System.out.println("图书馆中的书按价格整理如下:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");
  Arrays.sort(books, new Comparator<Book>() {
   @Override
   public int compare(Book o1, Book o2) {
    return (int) (o1.getPrice() - o2.getPrice());
   }
  });
  //遍历数组打印书的列表
  for (int i = 0; i < books.length; i++) {
   if (books[i].price != 0) {
    System.out.println(
      "【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
        + "】——【" + books[i].getCategory() + "】——" + books[i].getState());
   }
  }
 }

 @Override
 public void select(Book[] books) {
  System.out.println("请输入书名进行查询:");
  String name = sc.next();
  if (name != null) {
   boolean flag = false;
   int bookNum = 0;
   for (int i = 0; i < books.length; i++) {
    if (books[i].getName() != null && name.equals(books[i].getName())) {
     flag = true;
     bookNum = i;
     break;
    }
   }
   if (!flag) {
    System.out.println("未查询到此书籍!");
   } else {
    System.out.println("书籍信息为:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");
    System.out.println(
      "【" + books[bookNum].getName() + "】—— 【" + books[bookNum].getAuthor() + "】——【" + books[bookNum]
        .getPrice() + "】——【" + books[bookNum].getCategory() + "】——" + books[bookNum]
        .getState());
   }
  }
 }

 @Override
 public void delete(Book[] books) {
  System.out.println("请输入要删除的书名:");
  String str = sc.next();
  if (str != null) {
   for (int i = 0; i < books.length; i++) {
    if (books[i].getName().equals(str)) {
     books[i] = null;
     System.out.println("删除成功!");
     break;
    }
   }
  }

 }

 @Override
 public void add(Book[] books) {
  System.out.println("请输入书名:");
  String name = sc.next();
  System.out.println("请输入作者:");
  String author = sc.next();
  System.out.println("请输入价格:");
  double price = sc.nextDouble();
  System.out.println("请输入分类:");
  String category = sc.next();

  boolean flag = false;
  for (int i = 0; i < books.length; i++) {
   if (books[i].getName() == null) {
    flag = true;
    books[i].setName(name);
    books[i].setAuthor(author);
    books[i].setPrice(price);
    books[i].setCategory(category);
    books[i].setState(true);
    System.out.println("添加成功");
    break;
   }
  }
  if (!flag) {
   System.out.println("【警告】数组预留buffer最多只能添加3本新书,没有位置放置新书了,如需添加多余3本,需要在‘Person'类中添加buffer!" + "\n");
  }

 }

 @Override
 public void list(Book[] books) {
  System.out.println("图书列表如下:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");  //打印Book数组
  for (int i = 0; i < books.length; i++) {
   if (books[i] != null) {
    if (books[i].price != 0) {
     System.out.println(
       "【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
         + "】——【" + books[i].getCategory() + "】——" + books[i].getState());

    }
   }
  }
 }
}

6.User类

import java.util.Scanner;

public class User extends Person implements Operate {   //user类继承了人的类,  实现operate接口

 public User(String name, String sex, int age) {
  //调用人基类的构造函数(派生类不继承基类的构造函数)
  super(name, sex, age);
 }

 Scanner sc = new Scanner(System.in);

 @Override
 public void operate() {  //普通用户的操作

  System.out.print("请输入确认操作:");
  int i = sc.nextInt();
  switch (i) {
   case 1:
    //查
    select(books);
    break;
   case 2:
    //借
    delete(books);
    break;
   case 3:
    //还
    add(books);
    break;
   case 4:
    //书列表
    list(books);
    break;
   default:
    System.out.println("输入有误!");
    break;
  }
 }

 @Override
 public void select(Book[] books) {
  System.out.println("请输入书名进行查询:");
  String name = sc.next();
  if (name != null) {
   boolean flag = false;
   int bookNum = 0;
   for (int i = 0; i < books.length; i++) {
    if (books[i].getName() != null && name.equals(books[i].getName())) {
     flag = true;
     bookNum = i;
     break;
    }
   }
   if (!flag) {
    System.out.println("未查询到此书籍!");
   } else {
    System.out.println("书籍信息为:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");
    System.out.println(
      "【" + books[bookNum].getName() + "】—— 【" + books[bookNum].getAuthor() + "】——【" + books[bookNum]
        .getPrice() + "】——【" + books[bookNum].getCategory() + "】——" + books[bookNum]
        .getState());
   }
  }
 }

 @Override
 public void delete(Book[] books) {
  System.out.println("请输入要借阅的书名:");
  String name = sc.next();
  if (name != null) {
   for (int i = 0; i < books.length - 1; i++) {
    if (books[i].getName().equals(name)) {
     //借走书时设置状态为false
     if (!books[i].getState()) {
      System.out.println("【" + name + "】" + "已经被借出!");
     } else {
      books[i].setState(false);
      System.out.println("借阅成功!");
     }
     break;
    }
   }
  }
 }

 @Override
 public void add(Book[] books) {

  System.out.println("请输入要还的书名:");
  String name = sc.next();

  if (name != null) {
   boolean flag = true;
   int i = 0;
   while (flag) {
    if (books[i].getName().equals(name)) {
     if (!books[i].getState()) {
      books[i].setState(true);
      System.out.println("还书成功!");
      flag = false;
     } else {
      System.out.println("该书籍已经被还回!");
      break;
     }
    }
    i++;
   }
  }
 }

 @Override
 public void list(Book[] books) {
  System.out.println("图书列表如下:" + "\n" + "【书名】—— 【作者】——【价格】——【分类】——状态");  //打印Book数组
  for (int i = 0; i < books.length; i++) {
   if (books[i] != null) {
    if (books[i].price != 0) {
     System.out.println(
       "【" + books[i].getName() + "】—— 【" + books[i].getAuthor() + "】——【" + books[i].getPrice()
         + "】——【" + books[i].getCategory() + "】——" + books[i].getState());

    }
   }
  }
 }
}

7.Main类

public class Main {
    public static void main(String[] args) {
        Library library = new Library(); //构造Library对象
        library.login(); //调用对象的登录方法。
    }
}

三、实现结果

1.登录界面

普通用户登录

2.普通用户:查询、借阅、归还 、显示列表


3.管理员登录,按图书价格整理书籍

4.管理员添加书籍

5.管理员删除书籍

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

(0)

相关推荐

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

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

  • java实现图书管理系统

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

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

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

  • java实现简单的图书管理系统

    本文实例为大家分享了java实现简单的图书管理系统的具体代码,供大家参考,具体内容如下 一.项目分布 Book类: 定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的get.set方法 Library类: 写了登录函数(1.普通用户,2.管理员,3.退出系统), Person类:定义的人的属性(姓名,性别,年龄)并且写了属性的get.set方法,定义了一些书. operate接口:操作的接口,操作方法:查询/查阅,删除/借阅,增加/还书,显示书籍列表 Root类:继承了Person

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

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

  • 基于java实现简单的银行管理系统

    页面代码之一: package org.vector.view; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.

  • JAVA大作业之图书管理系统实现全解

    目录 一.简介 二.系统的设计 1.Book包: 1.1.book类: 1.2.bookList类: 2.Operation包: 2.1.增加书籍: 2.2.删除书籍: 2.3.借阅书籍 2.4.归还书籍 2.5.显示书籍 2.6.查找书籍 2.7.整理书籍 2.8.退出系统 3.User包: 3.1.User 3.2.管理员 3.3.普通用户 4.程序的运行 三.结尾 一.简介 在学习了Java语法的类.接口.继承.多态.接口等基础语法后的一简单的项目练习. 具体功能为: 1.简单的根据姓名的

  • JAVA实战练习之图书管理系统实现流程

    目录 前言 项目说明: 项目功能如下: 项目分析: (-)用户管理模块 (二)基本信息维护模块 读者管理模块 前言 长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较烦琐.在借书时,读者首先将要借的书和借阅证交给工作人员,然后工作人员将每本书的信息卡片和读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息.在还书时,读者首先将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息.太过于繁琐了!所以,我们需求设计一个图书管理

  • Java开发实例之图书管理系统的实现

    目录 一.项目分布 二.代码展示 1.SQL语句 2.Book类 3.User类 4.用户分为两种 4.1NormalUser类 4.2Admin类 5.DBUtil类 6.BookDao类 7.UserDao类 8.operations包 8.1AddOperation类:增加书籍 8.2BorrowOperation类:借阅书籍 8.3DeleteOperation类:删除书籍 8.4DisplayOperation类:查看书籍列表 8.5ExitOperation类:退出系统 8.6Fin

  • Java顺序表实现图书管理系统

    本文实例为大家分享了Java顺序表实现图书管理系统的具体代码,供大家参考,具体内容如下 一.简介 实现此项目的目的是巩固并理解前面的知识点:类,抽象类,封装,继承,多态,接口等 二.核心需求 管理端   查阅书籍   增加书籍   删除书籍   打印书籍列表   退出系统 用户端   查询书籍   借阅书籍   归还书籍   打印书籍列表   退出系统 三.类的设计 1. 创建图书类 图书类中包含图书的名称,价格,类型,作者和是否被借出等信息,并生成构造方法,Getter()和Setter()方

  • java实现简单的图书借阅系统

    本文实例为大家分享了java实现简单图书借阅系统的具体代码,供大家参考,具体内容如下 直接看代码: package ttt; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet

  • C语言实现简单的图书管理系统

    本文实例为大家分享了C语言实现简单图书管理系统的具体代码,供大家参考,具体内容如下 代码: /* 课程设计项目名称:图书查询系统 作者:施瑞文 时间:2018.3.4 */ #include<stdio.h> #include<string.h> #include<windows.h> #include<conio.h> #include<stdlib.h> #define N sizeof(struct BOOK) struct BOOK //

  • Python实现简单的图书管理系统

    本文实例为大家分享了Python实现图书管理系统的具体代码,供大家参考,具体内容如下 题目要求: 利用Python写一个简易的图书管理系统 需求: 图书管理系统 1.查询图书2.增加图书3.借阅图书4.归还图书5.退出系统 代码如下: class Book(object):     def __init__(self, name, author, status, bookindex):         self.name = name         self.author = author  

随机推荐