Bootstrap

java[逾期检测]开发图书租借系统

图书管理系统 图书类Book 属性 书名 name 作者 author 出版社 publisher 定价 price 租借人 leaser 出租日期 rentDate 日租金 rent 租借天数 day 状态 state

不提供带参构造方法
​
提供成员方法show
​
提供getter/setter方法

测试类Demo 静态变量 控制台扫描器 图书数组 bookArray, 长度为5

静态代码块 static{} 初始化3个Book对象,  一个未逾期的一个已逾期的, 一个7日内逾期的, 一个未逾期的
                   存储到bookArray数组中用于测试35
​
主函数 - do-while 打印菜单, 并让用户选择
    1. 查看图书列表 display()
    2. 添加图书     addBook()
    3. 删除图书    deleteBook()
    4. 租借         rentOut()
    5. 归还         giveBack()
    6. 续租         relet()
         要求: 用户输入续租的天数, 然后更新对象中的天数
            测试的时候, 可以对一个已经过期的图书进行续租, 续租成功后, 再次查看已逾期时, 就不会出现了
    7. 查看7日内即将到期的 expireIn7Days()
         要求: 找出7日内即将到期的图书, 并打印出剩余天数
    8. 查看已逾期的   overdue()
         要求: 找出已经逾期的图书, 并打印出逾期天数
    9. 退出         
​
编写相应的静态函数实现上述功能

package Game04;

public class Book {
    //图书管理系统
    //  图书类Book
    //    属性
    //    书名 name
    //    作者 author
    //    出版社 publisher
    //    定价 price
    //    租借人 leaser
    //    出租日期 rentDate
    //    日租金 rent
    //    租借天数 day
    //    状态 state
    private String name;
    private String author;
    private String publisher;
    private Double price;
    private String leaser;
    private String rentDate;
    private Double rent;
    private Integer day;
    private Integer state;

    //不提供带参构造方法
    //
    //提供成员方法show
    //
    //提供getter/setter方法
    public Book() {
    }
    public  void show(){
        System.out.println("书名 name :" +this.name+
                "\n作者 author:" +this.author+
                "\n出版社 publisher:" +this.publisher+
                "\n定价 price:" +this.price+
                "\n租借人 leaser:" +this.leaser+
                "\n出租日期 rentDate:" +this.rentDate+
                "\n日租金 rent:" +this.rent+
                "\n租借天数 day:" +this.day+
                "\n状态 state:"+this.state);
    }

    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 String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    public Double getPrice() {
        return price;
    }

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

    public String getLeaser() {
        return leaser;
    }

    public void setLeaser(String leaser) {
        this.leaser = leaser;
    }

    public String getRentDate() {
        return rentDate;
    }

    public void setRentDate(String rentDate) {
        this.rentDate = rentDate;
    }

    public Double getRent() {
        return rent;
    }

    public void setRent(Double rent) {
        this.rent = rent;
    }

    public Integer getDay() {
        return day;
    }

    public void setDay(Integer day) {
        this.day = day;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }
}
 



package Game04;
import package11.DateUtil;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Demo {
    //静态变量
    //      控制台扫描器
    //      图书数组 bookArray, 长度为5
    static Scanner sc = new Scanner(System.in);
    static Book[] bookArray = new Book[5];

    //静态代码块 static{} 初始化3个Book对象,  一个未逾期的一个已逾期的, 一个7日内逾期的, 一个未逾期的
    //存储到bookArray数组中用于测试
    static {
        Book book1 = new Book();
        book1.setName("1");
        book1.setAuthor("1.1");
        book1.setPublisher("1.1.1");
        book1.setPrice(20.0);
        book1.setLeaser("zs");
        book1.setRentDate("2022-06-01 06:00:00");
        book1.setRent(21.0);
        book1.setDay(60);
        book1.setState(1);
        bookArray[0]=book1;

        Book book2 = new Book();
        book2.setName("2");
        book2.setAuthor("21");
        book2.setPublisher("2.1.1");
        book2.setPrice(30.0);
        book2.setLeaser("ls");
        book2.setRentDate("2022-06-01 06:00:00");
        book2.setRent(21.0);
        book2.setDay(35);
        book2.setState(1);
        bookArray[1]=book2;

        Book book3 = new Book();
        book3.setName("3");
        book3.setAuthor("31");
        book3.setPublisher("3.1.1");
        book3.setPrice(40.0);
        book3.setLeaser("ww");
        book3.setRentDate("2022-06-01 06:00:00");
        book3.setRent(21.0);
        book3.setDay(29);
        book3.setState(1);
        bookArray[2]=book3;
    }

    //主函数 - do-while 打印菜单, 并让用户选择
    //    1. 查看图书列表 display()
    //    2. 添加图书     addBook()
    //    3. 删除图书    deleteBook()
    //    4. 租借         rentOut()
    //    5. 归还         giveBack()
    //    6. 续租         relet()
    //         要求: 用户输入续租的天数, 然后更新对象中的天数
    //             测试的时候, 可以对一个已经过期的图书进行续租, 续租成功后, 再次查看已逾期时, 就不会出现了
    //    7. 查看7日内即将到期的 expireIn7Days()
    //         要求: 找出7日内即将到期的图书, 并打印出剩余天数
    //    8. 查看已逾期的    overdue()
    //         要求: 找出已经逾期的图书, 并打印出逾期天数
    //    9. 退出
    //
    //编写相应的静态函数实现上述功能
    public static void main(String[] args) {
        int choice = 0;
        do {
            System.out.println("******菜单*******");
            System.out.println("1.查看图书列表");
            System.out.println("2.添加图书");
            System.out.println("3.删除图书");
            System.out.println("4.租借");
            System.out.println("5.归还");
            System.out.println("6.续租");
            System.out.println("7.查看7天内即将到期的");
            System.out.println("8.查看已逾期的");
            System.out.println("9.退出");
            System.out.println("请输入编号~");
            choice = sc.nextInt();
            switch (choice) {
                case 1:
                    System.out.println("本图书馆提供以下图书的租借:");
                    display();
                    break;
                case 2:
                    System.out.println("添加图书!");
                    addBook();
                    break;
                case 3:
                    System.out.println("删除图书!");
                    deleteBook();
                    break;
                case 4:
                    System.out.println("欢迎进入图书出租系统");
                    rentOut();
                    break;
                case 5:
                    System.out.println("欢迎进入图书归还系统");
                    giveBack();
                    break;
                case 6:
                    System.out.println("欢迎进入图书续租系统");
                    relet();
                    break;
                case 7:
                    System.out.println("欢迎进入图书续租系统");
                    expireIn7Days();
                    break;
                case 8:
                    System.out.println("欢迎进入图书续租系统");
                    overdue();
                    break;

            }
        } while (choice != 9);
    }

    private static void overdue() {
        for (int i = 0; i < bookArray.length; i++) {
            if(bookArray[i]==null){
                break;
            }if (bookArray[i].getState()==0){
                continue;
            }
            Book book=bookArray[i];
            long now=new Date().getTime();
            long rentTime= DateUtil.StringToDate(book.getRentDate()).getTime();
            int rentDay=(int)((now-rentTime)/1000/60/60/24);
            if (rentDay>book.getDay()){
                System.out.println(book.getLeaser()+"租借"+book.getName()+"已逾期");
                System.out.println("逾期天数:"+(rentDay-book.getDay()));
            }
        }
    }

    private static void expireIn7Days() {
        for (int i = 0; i < bookArray.length; i++) {
            if(bookArray[i]==null){
                break;
            }if (bookArray[i].getState()==0){
                continue;
            }
            Book book=bookArray[i];
            long now=new Date().getTime();
            long rentTime= DateUtil.StringToDate(book.getRentDate()).getTime();
            int rentDay=(int)((now-rentTime)/1000/60/60/24);
            if ((book.getDay()-rentDay)<0){
                System.out.println("图书已逾期,请前往8查看逾期信息");
            }else if ((book.getDay()-rentDay)>7){
                System.out.println("图书剩余时间充足,请不必担心");
            }
            else {
                System.out.println(book.getLeaser()+"租借"+book.getName()+"将在7天内逾期");
                System.out.println("剩余天数:"+(book.getDay()-rentDay));
            }
        }
    }

    private static void relet() {
        display();
        System.out.println("请输入编号续租图书");
        int a = sc.nextInt()-1;
        if (a<0||a>bookArray.length+1||bookArray[a]==null||bookArray[a].getState()==0){
            System.out.println("输入编号违规或栏位没有图书或者图书未租借!");
        }else {
            System.out.println("请输入需要租借的天数");
            int x= sc.nextInt();
            bookArray[a].setDay(x+bookArray[a].getDay());
            System.out.println(bookArray[a].getLeaser()+"续租"+bookArray[a].getName()+"成功!");
        }
    }

    private static void giveBack() {
        display();
        System.out.println("请输入要归还的汽车:");
        int backid = sc.nextInt()-1;
        Book book=bookArray[backid];
        if (book==null){
            System.out.println("该图书不存在,请重新输入");
        }else if (book.getState()==0){
            System.out.println("该图书已归还,无需归还");
        }else {
            double pay=book.getDay()*book.getRent();
            System.out.println("您一共需要支付"+pay+"元");
            book.setLeaser(null);
            book.setRent(null);
            book.setRentDate(null);
            book.setDay(null);
            book.setState(0);
            System.out.println(book.getLeaser()+"归还"+book.getName()+"成功!");
        }
    }

    private static void rentOut() {
        for (int i = 0; i < bookArray.length; i++) {
            if (bookArray[i]==null){
                System.out.println((i + 1) + "号图书栏为空");
            }else if(bookArray[i].getState()==0){
                System.out.println((i+1)+"号图书信息");
                bookArray[i].show();
            }else {
                System.out.println((i+1)+"号图书栏位:该图书已出租");
            }
        }
        System.out.println("请输入你要租的图书栏位号:");
        int a=sc.nextInt()-1;
        Book book=bookArray[a];
        if (bookArray[a]==null){
            System.out.println("此栏位为空");
        }
        else if (book.getState()==0) {
            System.out.println("请输入租借人:");
            book.setLeaser(sc.next());
            book.setRentDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
            System.out.println("请输入日租金:");
            book.setRent(sc.nextDouble());
            System.out.println("请输入租借天数:");
            book.setDay(sc.nextInt());
            book.setState(1);
            System.out.println(book.getLeaser()+"租借"+book.getName()+"成功!");
        }else{
            System.out.println("该图书已被租出!");
        }

    }

    private static void deleteBook() {
        display();
        System.out.println("请输入编号删除图书");
        int a = sc.nextInt()-1;
        if (a<0||a>bookArray.length+1||bookArray[a]==null){
            System.out.println("此编号违规或者没有图书!");
        }else{
            bookArray[a] = null;
            System.out.println("删除成功!");
        }
    }

    private static void addBook() {
        if (bookArray[bookArray.length - 1] != null) {
            System.out.println("本月图书需求已满,请等待下个月!");
            return;
        }
        Book book=new Book();
        System.out.println("请输入图书名字:");
        book.setName(sc.next());
        System.out.println("请输入图书作者:");
        book.setAuthor(sc.next());
        System.out.println("请输入图书出版社:");
        book.setPublisher(sc.next());
        System.out.println("请输入图书定价:");
        book.setPrice(sc.nextDouble());
        book.setState(0);
        for (int i = 0; i < bookArray.length; i++) {
            if (bookArray[i] == null) {
                bookArray[i] = book;
                break;
            }
        }
        System.out.println("图书添加成功!");
    }

    private static void display() {
        for (int i = 0; i < bookArray.length; i++) {
            if (bookArray[i] == null) {
                System.out.println((i + 1) + "号图书栏为空");
            } else {
                System.out.println((i + 1) + "号图书栏:");
                bookArray[i].show();
            }

        }
    }
}
 

;