图书管理系统 图书类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();
}}
}
}