Java学习日记 2022.7.3


图书管理系统

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

不提供带参构造方法

提供成员方法show

提供getter/setter方法

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

静态代码块 static{} 初始化3个Book对象,  一个未逾期的一个已逾期的, 
		一个7日内逾期的, 一个未逾期的
                   存储到bookArray数组中用于测试

主函数 - do-while 打印菜单, 并让用户选择
	1. 查看图书列表 display()
	2. 添加图书     addBook()
	3. 删除图书    deleteBook()
	4. 租借         rentOut()
	5. 归还         giveBack()
	6. 续租         relet()
		 要求: 用户输入续租的天数, 然后更新对象中的天数
		 	测试的时候, 可以对一个已经过期的图书进行续租, 
			续租成功后, 再次查看已逾期时, 就不会出现了
	7. 查看7日内即将到期的 expireIn7Days()
		 要求: 找出7日内即将到期的图书, 并打印出剩余天数
	8. 查看已逾期的	overdue()
		 要求: 找出已经逾期的图书, 并打印出逾期天数
	9. 退出         

编写相应的静态函数实现上述功能

Book类

package BookSystem;

public class Book {
    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;

    public void show(){
        System.out.println("********************");
        System.out.print("书名:" + this.name);
        System.out.print("\t作者:" + this.author);
        System.out.print("\t出版社:" + this.publisher);
        System.out.print("\t定价:" + this.price);
        System.out.println("\t状态:" + (this.state == 0? "未租借" : "已租借"));
    }

    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;
    }
}

Demo类

package BookSystem;

import java.util.Date;
import java.util.Scanner;

public class Demo {
    static Scanner sc = new Scanner(System.in);
    static Book[] bookArray = new Book[5];
    static {
        Book book1 = new Book();
        book1.setName("老人与海");
        book1.setAuthor("欧内斯特·海明威");
        book1.setPublisher("中国友谊出版公司");
        book1.setPrice(39.80);
        book1.setLeaser("张三");
        book1.setRentDate("2022-6-24");
        book1.setRent(1.50);
        book1.setDay(10);
        book1.setState(1);
        bookArray[0] = book1;

        Book book2 = new Book();
        book2.setName("呐喊");
        book2.setAuthor("鲁迅");
        book2.setPublisher("人民文学出版社");
        book2.setPrice(20.00);
        book2.setLeaser("李四");
        book2.setRentDate("2022-6-15");
        book2.setRent(2.0);
        book2.setDay(10);
        book2.setState(1);
        bookArray[1] = book2;

        Book book3 = new Book();
        book3.setName("西厢记");
        book3.setAuthor("王实甫");
        book3.setPublisher("三秦出版社");
        book3.setPrice(49.60);
        book3.setLeaser("王五");
        book3.setRentDate("2022-7-1");
        book3.setRent(2.5);
        book3.setDay(15);
        book3.setState(1);
        bookArray[2] = book3;
    }

    public static void main(String[] args) {
        int choice;
        do {
            System.out.println("***********************************");
            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.查看七日内即将到期的图书**");
            System.out.println("***********8.查看已逾期的图书*********");
            System.out.println("***********9.退出叮当图书************");
            System.out.println("***********************************");
            System.out.println("请选择:");
            choice = sc.nextInt();
            switch (choice) {
                case 1:
                    display();
                    break;
                case 2:
                    addBook();
                    break;
                case 3:
                    deleteBook();
                    break;
                case 4:
                    rentOut();
                    break;
                case 5:
                    giveBack();
                    break;
                case 6:
                    relet();
                    break;
                case 7:
                    expireIn7Days();
                    break;
                case 8:
                    overdue();
                    break;
                case 9:
                    System.out.println("叮当图书已退出!");
                    break;
                default:
                    System.out.println("输入不合法!");
                    break;
            }
        } while (choice != 9);
    }

    private static void overdue() {
        System.out.println("*****欢迎进入查看逾期图书界面*****");
        for (int i = 0; i < bookArray.length; i++) {
            Book book = bookArray[i];
            if (book == null){
                break;
            }else{
                int rentDay = timeRemaining(book);
                if (rentDay > book.getDay()){
                    System.out.println((i + 1) + "号图书:");
                    book.show();
                    System.out.println("租借人:"  + book.getLeaser()
                            + "出租日期:" + book.getRentDate()
                            + "租借天数:" + book.getDay());
                }
            }
        }

    }

    private static int timeRemaining(Book book){
        Long now = new Date().getTime();
        Long rentTime = DateUtil.sting2date(book.getRentDate()).getTime();
        int rentDay = (int) ((now - rentTime)/1000/60/60/24);
        return rentDay;
    }

    private static void expireIn7Days() {
        System.out.println("*****欢迎进入查看即将到期图书界面*****");
        for (int i = 0; i < bookArray.length; i++) {
            Book book = bookArray[i];
            if (book == null){
                break;
            }else{
                int rentDay = timeRemaining(book);
                if (rentDay < book.getDay() && rentDay < 7 && rentDay >=0){
                    System.out.println((i + 1) + "号图书:");
                    book.show();
                    System.out.println("租借人:"  + book.getLeaser()
                            + "出租日期:" + book.getRentDate()
                            + "租借天数:" + book.getDay());
                }
            }
        }
    }

    private static void relet() {
        System.out.println("*********欢迎进入续租图书界面**********");
        display();
        System.out.println("请选择续租的图书:");
        int choice = sc.nextInt() - 1;
        Book book = bookArray[choice];
        if (book == null){
            System.out.println("该书籍为空,请正确选择");
        }else if (book.getState() == 0){
            System.out.println("该图书未被借出,无法续租");
        }else {
            System.out.println("租借人:"  + book.getLeaser()
                            + "出租日期:" + book.getRentDate()
                            + "租借天数:" + book.getDay());
            System.out.println("请输入需要续租的天数:");
            book.setDay(book.getDay() + sc.nextInt());
            bookArray[choice] = book;
            System.out.println("书名:" + book.getName()
                    + "作者" +  book.getAuthor() + "续租成功!");
        }
    }

    private static void giveBack() {
        System.out.println("*********欢迎进入归还图书界面**********");
        display();
        System.out.println("请选择需要归还的图书:");
        int choice = sc.nextInt() -1;
        Book book = bookArray[choice];
        if (book == null){
            System.out.println("该书籍为空,请正确选择");
        }else if (book.getState() == 0){
            System.out.println("该图书未被借出,无法归还");
        }else {
            System.out.println("请支付:" + book.getRent() * book.getDay() + "元");
            book.setState(0);
            System.out.println("书名:" + book.getName()
                    + "作者" +  book.getAuthor() + "归还成功!");
        }
    }

    private static void rentOut() {
        System.out.println("*********欢迎进入租借图书界面**********");
        display();
        System.out.println("请选择需要租借的图书:");
        int choice = sc.nextInt() -1;
        Book book = bookArray[choice];
        if (book == null){
            System.out.println("该书籍为空,请正确选择");
        }else if (book.getState() == 1){
            System.out.println("该图书已被借出,无法租借");
        }else {
            System.out.println("请输入租借人姓名:");
            book.setLeaser(sc.next());
            System.out.println("请输入出租日期:");
            book.setRentDate(sc.next());
            System.out.println("请输入租借天数:");
            book.setDay(sc.nextInt());
            book.setState(1);
            System.out.println("书名:" + book.getName()
                    + "作者" +  book.getAuthor() + "租借成功!");
        }
    }

    private static void deleteBook() {
        System.out.println("*********欢迎进入删除图书界面**********");
        display();
        System.out.println("请选择需要删除的图书:");
        int i;
        int choice = sc.nextInt()-1;
        Book book = bookArray[choice];
        if (book.getState() == 1){
            System.out.println("该图书尚未归还,无法删除");
        }else {
            System.out.println("书名:" + book.getName()
                    + "作者" +  book.getAuthor() + "删除成功!");
            for (i = choice; i < bookArray.length - 1 && bookArray[i] != null; i++) {
                bookArray[i] = bookArray[i+1];
            }
            bookArray[i -1] = null;
        }
    }

    private static void addBook() {
        System.out.println("*********欢迎进入添加图书界面**********");
        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());
        System.out.println("请输日租金:");
        book.setRent(sc.nextDouble());
        System.out.println("请输入状态(未出租为0,已出租为1):");
        book.setState(sc.nextInt());
        for (int i = 0; i < bookArray.length; i++) {
            if (bookArray[i] == null){
                bookArray[i] = book;
                System.out.println("书名:" + book.getName()
                        + "作者" +  book.getAuthor() + "入库成功!");
                break;
            }
        }
    }

    private static void display() {
        System.out.println("*********欢迎进入图书列表查看界面**********");
        for (int i = 0; i < bookArray.length; i++) {
            System.out.println((i + 1) + "号图书:");
            if (bookArray[i] == null){
                System.out.println("空");
            }else{
                bookArray[i].show();
            }
        }
    }


}

DateUtil类

package BookSystem;

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

public class DateUtil {
    private static final SimpleDateFormat SDF =
            new SimpleDateFormat("yyyy-MM-dd");

    public static String date2sting(Date date){
        return SDF.format(date);
    }

    public static Date sting2date(String dateStr){
        try {
            return SDF.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值