JAVA-DAY11(日期和时间--字符串和日期的转换。图书馆系统举例)


日期和时间

      时间戳

1.时间戳是一个Long类型的整数

2.格林尼治时间(GST)又称为世界标准时间,从1970年1月1日00:00到当前这一刻的毫秒数

     中央标准时间(CST),比GST晚8个小时

Date 日期类

SimpleDateFormat  日期格式转换类

构造方法的参数String pattern代表日期格式,可以这样写

格式符号日期单位
yyyy
MM
dd
HH时(24小时计时)
hh时(12小时计时)
mm
ss

"yyyy-MM-dd HH:mm:ss"

编写图书管理系统实现代码。里面有涉及日期和时间的程序

图书管理系统
  图书类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. 退出         

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

package Chapter10时间和日期;

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

public class DateUtil {
    //SDF是一个SimpleDateFormat类型的指针,是一个静态常量
    public static final SimpleDateFormat SDF=
            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public static String date2String(Date date){
        return SDF.format(date);
    }
    public static Date string2Date(String dateStr){
        //如果转换成功,转换的是
        try {
           return SDF.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
}
package Chapter11图书管理系统;

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("书名:"+this.name);
        System.out.println("作者:"+this.author);
        System.out.println("出版社:"+this.publisher);
        System.out.println("定价:"+this.price);
        System.out.println("租借人:"+this.leaser);
        System.out.println("出租日期:"+this.rentDate);
        System.out.println("日租金:"+this.rent);
        System.out.println("租借天数:"+this.day);
        System.out.println("状态:"+(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;
    }
}
package Chapter11图书管理系统;

import Chapter10时间和日期.DateUtil;

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(30.00);
        book1.setLeaser("杨俊");
        book1.setRentDate("2022-06-23 07:00:00");
        book1.setRent(1.0);
        book1.setDay(30);
        book1.setState(1);
        bookArray[0]=book1;

        Book book2=new Book();
        book2.setName("斗罗大陆");
        book2.setAuthor("唐三");
        book2.setPublisher("上海图书");
        book2.setPrice(40.00);
        book2.setLeaser("高雄");
        book2.setRentDate("2022-05-30 07:00:00");
        book2.setRent(2.0);
        book2.setDay(27);
        book2.setState(1);
        bookArray[1]=book2;

        Book book3=new Book();
        book3.setName("白皮书");
        book3.setAuthor("老师");
        book3.setPublisher("java出版社");
        book3.setPrice(20.00);
        book3.setLeaser("高");
        book3.setRentDate("2022-06-07 07:00:00");
        book3.setRent(3.0);
        book3.setDay(30);
        book3.setState(1);
        bookArray[2]=book3;
    }

    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("10.请选择");
            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:
                    expireln7Days();
                    break;
                case 8:
                    overdue();
                    break;
                case 9:
                    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.string2Date(book.getRentDate()).getTime();
            int rentDay=(int)((now-rentTime)/1000/60/60/24);
            if(rentDay>book.getDay()){
                System.out.println(book.getName()+"已逾期");
                System.out.println("租借人:"+book.getLeaser());
                System.out.println("逾期天数:"+(rentDay-book.getDay()));;
            }
        }
    }

    private static void expireln7Days() {
        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.string2Date(book.getRentDate()).getTime();
            int exp=(int)((now-rentTime)/1000/60/60/24);
            int a=book.getDay()-exp;
            if(a<=7&&a>0){
                System.out.println("租借人:"+book.getLeaser());
                System.out.println("书名:"+book.getName());
                System.out.println("剩余天数:"+a);
            }
        }
    }

    private static void relet() {
        System.out.println("欢迎进入图书续租业务");
        display();
        System.out.println("请输入续租图书编号");
        int index=sc.nextInt()-1;
        Book book=bookArray[index];
        System.out.println("请输入续租天数");
        book.setDay(sc.nextInt()+ book.getDay());
        System.out.println("续租成功");
    }

    private static void giveBack() {
        System.out.println("欢迎进入图书归还业务");
        display();
        System.out.println("请输入归还图书编号");
        int index=sc.nextInt()-1;
        Book book=bookArray[index];
        if(book==null){
            System.out.println("该图书不存在,请重新选择");
        }else if (book.getState()==0){
            System.out.println("该图书未出租,无需归还");
        }else {
            double pay=book.getRent()*book.getDay();
            System.out.println("你需要支付租金:"+pay+"元");
            book.setLeaser(null);
            book.setRent(null);
            book.setDay(null);
            book.setState(0);
            System.out.println("归还成功");
        }
    }

    private static void rentOut() {
        System.out.println("欢迎进入图书租借系统");
        display();
        System.out.println("请选择租借的图书编号:");
        int index=sc.nextInt()-1;
        Book book=bookArray[index];
        if(book==null){
            System.out.println("该书不存在,请重新选择");
        }else if(book.getState()!=0) {
            System.out.println("该书已经出租,请重新选择");
        }else {
            System.out.println("请输出租借人:");
            book.setName(sc.next());
            System.out.println("请输入日租金");
            book.setRent(sc.nextDouble());
            System.out.println("请输入租借天数");
            book.setDay(sc.nextInt());
            System.out.println(book.getName()+"租借成功");
            book.setState(1);
        }
    }

    private static void deleteBook() {
        System.out.println("欢迎进入图书删除业务");
        display();
        System.out.println("请输入需要删除的图书编号:");
        int index=sc.nextInt()-1;
        if(bookArray[index]!=null){
            bookArray[index]=null;
            System.out.println("删除成功");
        }else {
            System.out.println("没有该图书,删除失败");
        }
    }

    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.setState(sc.nextInt());
        for (int i = 0; i < bookArray.length; i++) {
            if(bookArray[i]==null){
                bookArray[i]=book;
                System.out.println(book.getName()+"添加成功");
                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();
            }
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值