图书管理系统

                              图书管理

1)图书父类Books设计,它具有以下属性:书名、作者、ISBN号、价格、页数(10分)

1)构造方法、get方法、set方法

2)重写toString方法:打印图书的所有属性信息

3)重写equals函数:实现比较两本书的书名、作者是否相同,如果相同则返回true,否则返回false

2)纸质图书(继承于Books)(10分)

1)新增属性:重量、库存(值为1

2)构造方法(使用super)、get方法、set方法

3)重写toString方法:打印图书的所有属性信息

3)电子书(继承于Books)(10分)

1 新增属性:文件大小(以MB为单位)、文件格式(例如PDF, EPUB, MOBI)、下载次数count2分)

2)构造方法(不使用super)、get方法、set方法

3)重写getClass方法:返回书名

4)接口设计(10分)

1)图书管理接口,接口中有借书方法

2)纸质书与电子书分别实现借书接口(具有现实意义上的区别,考虑纸质书数量的限制)

5)参照(2)(3)与(4)的形式,再设计至少两个Books的子类与两个接口并实现。(如果难以设计Books的子类可以设计(2)或(3)的一些子类,并设计相应接口和实现接口功能)。(35分)

6)主控类设计(执行main方法的类)(25分)

1)创建一个Test类,在该类中创建每个Books子类的数组(包括(5)中的类),每个数组的长度为你学号后2位的值(小于5就取5),并用随机的书填满相应的数组。

2)利用equals函数查找书。

3)将查找到的书的信息进行修改,并打印修改前后信息对比。

4)调用(4)的接口和你在(5)中自定义的接口。

5)删除查找到的书。并在删除之后插入新的书。

package com.test.tsgl;

public class RunApp {
    public static void main(String[] args) {
        BookTest1 bookTest1 = new BookTest1();
        bookTest1.AppP();
    }
}

package com.test.tsgl;

import java.time.LocalDate;
import java.util.Date;

//(1)图书父类Books设计(30分)
//1)属性:书名、作者、ISBN号、出版日期、价格、页数(6分)
//2)构造器:Books(String title, String author, String ISBN,
//                Date publicationDate, double price, int pages)(6分)
//3)get方法、set方法(6分)
//4)重写toString方法:打印图书的所有属性信息(6分)
//5)重写equals函数:实现比较两本书的书名、作者是否相同,
// 如果相同则返回true,否则返回false(6分)
public class Books {
    String title;
    String author;
    String ISBN;
    LocalDate publicationDate;
    double price;
    int pages;

    public Books(String title, String author, String ISBN, LocalDate publicationDate, double price, int pages) {
        this.title = title;
        this.author = author;
        this.ISBN = ISBN;
        this.publicationDate = publicationDate;
        this.price = price;
        this.pages = pages;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getISBN() {
        return ISBN;
    }

    public void setISBN(String ISBN) {
        this.ISBN = ISBN;
    }

    public LocalDate getPublicationDate() {
        return publicationDate;
    }

    public void setPublicationDate(LocalDate publicationDate) {
        this.publicationDate = publicationDate;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }



    @Override
    public String toString() {
        return "Books{" +
                "title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", ISBN='" + ISBN + '\'' +
                ", publicationDate=" + publicationDate +
                ", price=" + price +
                ", pages=" + pages +
                '}';
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }
}
package com.test.tsgl;

import java.sql.Date;
import java.time.LocalDate;
import java.util.Scanner;

创建一个BookTest类,在该类中创建一个纸质书数组、一个电子书数组,每个数组的长度为5。
 分别对每个数组实现添加图书、删除图书、通过书名查询图书、借阅图书(10分
public class BookTest1 {
    //            创建纸质书数组
    PrintBook[] printBooks = new PrintBook[5];
    //        创建电子书数组
    EBook[] eBooks = new EBook[5];
    Boolean loop=true;
    String key;
    private int quantity=0;
    private int frequency;
//纸质书功能应用
    public void AppP(){
//        第1步菜单打印
        meau1();
//        第2步进行对两种书的选择
        do {
            Scanner scanner2 = new Scanner(System.in);
            System.out.print("请选择功能:");
            key = scanner2.next();
            switch (key){
                case "1":

//                    第2.1步对纸质书菜单选择(1.添加图书,2.删除图书,3.查询图书,4.借阅图书,5.退    出)
                    do {
                        meau2();
                        Scanner scanner3 = new Scanner(System.in);
                        System.out.print("选择功能:");
                        key = scanner2.next();
                        switch (key) {
                            case "1":
                                AddP(PrintP());
                                break;
                            case "2":
                                Scanner scanner = new Scanner(System.in);
                                System.out.print("请输入书名:");
                                String titleP = scanner.next();
                                DeletePbook(titleP);
                                break;
                            case "3":
                                Scanner scanner1 = new Scanner(System.in);
                                System.out.print("请输入书名:");
                                String titleP1 = scanner1.next();
                                QueryP(titleP1);
                                break;
                            case "4":
                                Scanner scanner5 = new Scanner(System.in);
                                System.out.print("请输入书名:");
                                String titlePR = scanner5.next();
                                BorrowingP(titlePR );
                                break;
                            case "5":
                                Quit();
                                break;
                            default:
                                System.out.print("输入有误,重新");
                                break;
                        }
                    }while (loop);
                    break;
                case "2":
//                    第2.2步对电子书菜单选择(1.添加图书,2.删除图书,3.查询图书,4.借阅图书,5.退    出)
                    do {
                        meau3();
                        Scanner scanner4 = new Scanner(System.in);
                        System.out.print("选择:");
                        key = scanner2.next();
                        switch (key){
                            case "1":
                                AddE(PrintE());
                                break;
                            case "2":
                                Scanner scanner = new Scanner(System.in);
                                System.out.print("请输入书名:");
                                String titleE = scanner.next();
                                DeletePbook(titleE);
                                break;
                            case "3":
                                Scanner scanner1 = new Scanner(System.in);
                                System.out.print("请输入书名:");
                                String titleE1 = scanner1.next();
                                QueryE(titleE1);
                                break;
                            case "4":
                                BorrowingE();
                                break;
                            case "5":
                                Quit();
                                break;
                            default:
                                System.out.print("输入有误,重新");
                                break;
                        }
                    }while (loop);
                    break;
                case "3":
                    Quit();
                    System.out.println("=======退出图书管理系统=======");
                    break;
                default:
                    System.out.print("输入有误,");
                    break;
            }
        }while (loop);
    }
//    电子书功能应用
    public void AppE(){

    }
//    菜单打印
    public void meau1(){
        System.out.println("=========图书管理系统=========");
        System.out.println("\t\t1.纸质书管理");
        System.out.println("\t\t2.电子书管理");
        System.out.println("\t\t3.退     出");
    }
//    纸质书菜单打印
    public void meau2(){
        System.out.println("=========纸质书管理=========");
        System.out.println("\t\t1.添加图书");
        System.out.println("\t\t2.删除图书");
        System.out.println("\t\t3.查询图书");
        System.out.println("\t\t4.借阅图书");
        System.out.println("\t\t5.退    出");
    }
//电子书打印
    public void meau3(){
        System.out.println("=========电子书管理=========");
        System.out.println("\t\t1.添加图书");
        System.out.println("\t\t2.删除图书");
        System.out.println("\t\t3.查询图书");
        System.out.println("\t\t4.借阅图书");
        System.out.println("\t\t5.退    出");
    }
//    退出功能
    public void Quit(){
        loop=false;
    }
//      纸质书添加图书
    public  void AddP(PrintBook book){
        for (int i = 0; i < printBooks.length ; i++) {
            if (printBooks[i]==null) {
                printBooks[i] = book;
                quantity++;
                System.out.println("纸质书添加成功!");
                break;
            }
        }
    }
//    纸质书输入提示词
    public PrintBook PrintP(){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入书名:");
        String title=scanner.next();
        System.out.print("请输入作者:");
        String author=scanner.next();
        System.out.print("请输入ISBN:");
        String ISBN=scanner.next();
        System.out.print("请输入发表时间年 月 日(用空格隔开):");
        int year=scanner.nextInt();
        System.out.print(" ");
        int month=scanner.nextInt();
        System.out.print(" ");
        int day=scanner.nextInt();
        LocalDate paperBookPublicationDate = LocalDate.of(year, month, day);
        System.out.print("请输入价格:");
        double price=scanner.nextDouble();
        System.out.print("请输入页数:");
        int pages=scanner.nextInt();
        System.out.print("请输入重量:");
        double weight=scanner.nextDouble();
        PrintBook printBook = new PrintBook(title, author, ISBN, paperBookPublicationDate , price, pages, weight);
        return printBook;
    }
//    电子书输入提示词
    public EBook PrintE(){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入书名:");
        String title=scanner.next();
        System.out.print("请输入作者:");
        String author=scanner.next();
        System.out.print("请输入ISBN:");
        String ISBN=scanner.next();
        System.out.print("请输入年 月 日(用空格隔开):");
        int year=scanner.nextInt();
        System.out.print(" ");
        int month=scanner.nextInt();
        System.out.print(" ");
        int day=scanner.nextInt();
        LocalDate paperBookPublicationDate = LocalDate.of(year, month, day);
        System.out.print("请输入价格:");
        double price=scanner.nextDouble();
        System.out.print("请输入页数:");
        int pages=scanner.nextInt();
        System.out.print("请输入文件大小(以MB为单位):");
        double fileSize=scanner.nextDouble();
        System.out.print("请输入文件格式(例如PDF, EPUB, MOBI):");
        String format=scanner.next();
        EBook eBook = new EBook(title, author, ISBN, paperBookPublicationDate, price, pages,fileSize,format );
        return eBook;
    }
//       电子书添加
    public  void AddE(EBook book) {
        for (int i = 0; i < eBooks.length; i++) {
            eBooks[i] = book;
            System.out.println("电子书添加成功!");
           break;
        }
    }
    //删除纸质书
    public void DeletePbook(String title) {

        for (int i = 0; i < printBooks.length; i++) {
            if (printBooks[i] != null && printBooks[i].getTitle().equals(title)) {
                printBooks[i] = null;
                System.out.println("纸质书删除成功");
               break;
            } else {
                System.out.println("没有找到");
               break;
            }
        }
    }
    //    电子书删除
    public void DeleteEbook(String title) {
        for (int i = 0; i < eBooks.length; i++) {
            if (eBooks[i] != null && eBooks[i].getTitle().equals(title)) {
                eBooks[i] = null;
                System.out.println("电子书删除成功");
                break;
            } else {
                System.out.println("没有找到");
                break;
            }
        }
    }
    //    纸质书查询
    public void QueryP(String title){
        for (int i = 0; i < printBooks.length; i++) {
            if (printBooks[i] != null && printBooks[i].getTitle().equals(title)) {
               printBooks[i].ToString();
               return;
            }
        }
        System.out.println("没有找到");
    }
    //    电子书查询
    public void QueryE(String title){
        for (int i = 0; i < eBooks.length; i++) {
            if (eBooks[i] != null && eBooks[i].getTitle().equals(title)) {
                eBooks[i].ToString();
                return;
            }
        }
        System.out.println("没有找到");
    }
    //    纸质书借阅
    public void BorrowingP(String title){
        for (int i = 0; i < printBooks.length ; i++) {
            if (printBooks[i] != null && printBooks[i].getTitle().equals(title)){
                PaperBook paperBook = new PaperBook(quantity);
                paperBook.borrowBooks();
                return;
            }
        }
        System.out.println("没有"+title+"无法借阅");

    }
//    电子书借阅
    public void  BorrowingE(){
        Enbook enbook = new Enbook(frequency);
        enbook.borrowBooks();
    }
}
package com.test.tsgl;

import java.time.LocalDate;
import java.util.Date;

//1)继承Books(2分)
//2)新增属性:文件大小(以MB为单位)、文件格式(例如PDF, EPUB, MOBI)、
// 下载次数count(访问权限均为private)(5分)
//3)构造器:PrintBook(String title, String author, String ISBN,
// Date publicationDate, double price, int pages, double weight, double fileSize, String format)(5分)
//4)get方法、set方法(4分)
//5)重写toString方法:打印图书的所有属性信息
public class EBook extends Books{
    public double fileSize;
    public String format;
    private int count;

    public EBook(String title, String author, String ISBN, LocalDate publicationDate, double price, int pages, double fileSize, String format) {
        super(title, author, ISBN, publicationDate, price, pages);
        this.fileSize = fileSize;
        this.format = format;
    }

    public double getFileSize() {
        return fileSize;
    }

    public void setFileSize(double fileSize) {
        this.fileSize = fileSize;
    }

    public String getFormat() {
        return format;
    }

    public void setFormat(String format) {
        this.format = format;
    }

//    public String toString(){
//        return "书名:\t"+super.title+"作者:\t"+super.author+"ISBN号:\t"+super.ISBN
//                +"出版日期:\t"+super.publicationDate+"价格:\t"+super.price+"页数:\t"+
//                super.pages+"重量:\t"++"库存:\t"+super.inventory;
//    }

    @Override
    public String toString() {
        return "EBook{" +
                "fileSize=" + fileSize +
                ", format='" + format + '\'' +
                ", count=" + count +
                ", title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", ISBN='" + ISBN + '\'' +
                ", publicationDate=" + publicationDate +
                ", price=" + price +
                ", pages=" + pages +
                '}';
    }
    public void ToString() {
        System.out.println("纸质书{题目='" + title + '\t' +
                ", 作者='" + author + '\t' +
                ", ISBN号='" + ISBN + '\t' +
                ", 发表时间=" + publicationDate +
                ", 价格=" + price +"元\t"+
                ", 页数=" + pages +"\t"+"文件大小(以MB为单位)=" + fileSize+"\t" +
                ", 文件格式=" + format +
                '}');
    }
}

package com.test.tsgl;
//(4)接口设计(10分)
//图书管理接口,接口中有借书方法(10分)
public interface BorrowBooks {
    void borrowBooks();
}
package com.test.tsgl;
//电子书实现借书接口:每次借书需将电子书借书次数加1,并输出“当前已下载多少次”。(5分)
public class Enbook implements BorrowBooks{
    private int frequency;

    public Enbook(int frequency) {
        this.frequency = frequency;
    }

    @Override
    public void borrowBooks() {
        frequency++;
        System.out.println("当前已下载次数:" + frequency);

    }
}

package com.test.tsgl;
//纸质书实现借书接口:判断当纸质书剩余数量为0时,输出“无库存,无法借阅!”(5分)
public class PaperBook implements BorrowBooks{
    private int quantity;

    public PaperBook(int quantity) {
        this.quantity = quantity;
    }

    @Override
    public void borrowBooks() {
        if (quantity>0){
            quantity--;
            System.out.println("借阅成功!");
        }else {
            System.out.println("无库存,无法借阅!");
        }
    }
}

package com.test.tsgl;

import java.time.LocalDate;
import java.util.Date;

//1)继承Books(2分)
//2)新增属性:重量(权限为private)、库存(值为1)(5分)
//3)构造器:PrintBook(String title, String author,
// String ISBN, Date publicationDate, double price, int pages, double weight)(5分)
//4)get方法、set方法(4分)
//5)重写toString方法:打印图书的所有属性信息(4分)
public class PrintBook extends Books {
 private double Weight;
 public int inventory=1;

    public PrintBook(String title, String author, String ISBN, LocalDate publicationDate, double price, int pages, double weight) {
        super(title, author, ISBN, publicationDate, price, pages);
        Weight = weight;
    }


    public double getWeight() {
        return Weight;
    }

    public void setWeight(double weight) {
        Weight = weight;
    }

    public int getInventory() {
        return inventory;
    }

    public void setInventory(int inventory) {
        this.inventory = inventory;
    }

    @Override
    public String toString() {
        return "PrintBook{" +
                "Weight=" + Weight +
                ", inventory=" + inventory +
                ", title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", ISBN='" + ISBN + '\'' +
                ", publicationDate=" + publicationDate +
                ", price=" + price +
                ", pages=" + pages +
                '}';
    }

    public void ToString() {
        System.out.println("纸质书{题目='" + title + '\t' +
                ", 作者='" + author + '\t' +
                ", ISBN号='" + ISBN + '\t' +
                ", 发表时间=" + publicationDate +
                ", 价格=" + price +"元\t"+
                ", 页数=" + pages +"\t"+"重量=" + Weight+"\t" +
                ", 库存=" + inventory +
                '}');
    }
}
  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值