JAVA面向对象小项目之迷你图书管理系统

系统概述

为某图书馆开发一个迷你图书管理系统,实现图书的管理,包括如下功能:

1.新增图书
2.查看图书

  • 删除图书
    4.借出图书
    5.归还图书
    6.退出图书系统

整体开发思路

  • 系统开发步骤

  • 明确需求

  • 设计Java类保存图书信息

  • 编码顺序

        1、数据初始化
        2、完成各种图书管理操作
        3、菜单切换
    
  • 测试

系统开发步骤

一、明确需求
二、设计Java类保存图书信息
三、编码顺序
1、数据初始化
2、完成各种图书管理操作
3、菜单切换
四、测试

开发步骤
一、图书类

具有图书名称、借阅状态、借阅日期、数量等属性

package cn.bdqn.demo02;

public class Book {
    public String name;
    public int state;
    public int date;
    public int count;

    public Book() {
    }

    public Book(String name, int state, int date, int count) {
        this.name = name;
        this.state = state;
        this.date = date;
        this.count = count;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getState() {
        return state;
    }

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

    public int getDate() {
        return date;
    }

    public void setDate(int date) {
        this.date = date;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    @Override
    public String toString() {//序号	状态	名称	借出日期	借出次数
        return  name +"\t" + date +"\t"+count;
    }
}
二、借阅管理类

1、所有图书数组:books Book[4]
2、程序整体流程搭建的start()方法
循环
分支
3、数据初始化方法init()
初始化三个图书对象 存放在books[]中
A:新增图书
将新增图书加入books[]中
B:查看图书
输出数组books[]所有图书信息
C:删除图书
借阅状态为可借阅的图书可删除
借阅状态为已借出的图书不可删除
D:借出图书
查询books中是否有该书,如有则借出并标记为以借出
E:归还图书:
查询books[]中是否有与要归还图书相匹配的信息,如有则归还并修改借阅状态
F:退出系统

package cn.bdqn.demo02;

import java.util.Scanner;

public class Borrow {
    Book[] books=new Book[4];
    Scanner sc = new Scanner(System.in);

   public void star()
   {
       boolean flag = true;
       int num = -1;
       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("-------------------------");

           System.out.println("请选择:");
           int choose = sc.nextInt();
           switch(choose){
               case 1://新增图书
                   addBook();
                   break;
               case 2:
                   check();
                   break;
               case 3:
                   delBook();
                   break;
               case 4:
                   borrowBook();
                   break;
               case 5:
                   returnBook();
                   break;
               case 6:
                   flag = false;
                   break;
               default:
                   flag = false;
                   break;
           }
           if (flag) {
               System.out.println("输入0返回:");
               num = sc.nextInt();
           } else {
               break;
           }


       }while(num==0);

   }

   public void init()
   {
       Book book1=new Book("罗马假日",1,1,15);
       Book book2=new Book("白雪公主",0,12,1);
       Book book3=new Book("葫芦兄弟",0,1,30);
       books[0]=book1;
       books[1]=book2;
       books[2]=book3;

   }
   public  void addBook()
   {
       System.out.println("-->新增图书\n");
       System.out.println("请输入图书名称:");
       String BookName = sc.next();

       // 判断添加书是否成功
       boolean flag2 = false;

       // 循环查找图书馆里的可存放书的地方
       for (int i = 0; i < books.length; i++) {
           // 判断某个位置是否能存放书
           if (books[i] == null) {
               Book newBook = new Book(BookName,0,0,0);
               books[i] = newBook;
               System.out.println("新增《" + BookName + "》成功!");
               flag2 = true;
               break;
           }
       }
       if (!flag2) {
           System.out.println("抱歉,新增《" + BookName + "》失败!货架已满!");
       }
       System.out.println("*****************************************");
   }
   public void check()
   {
       // 查看图书
       System.out.println("-->查看图书\n");
       System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
       for (int i = 0; i < books.length; i++) {
           if (books[i] != null) {
               // 三目运算符
               String BookState = (books[i].getState() == 0) ? "可借阅" : "已借出";
               String dateStr = (books[i].getDate() == 0) ? "" : (books[i].getDate() + "日");
               System.out.println((i+1)+"\t"+BookState+"\t"+books[i].toString());
           }
       }
       System.out.println("*****************************************");
   }
   public void delBook()
   {
       // 删除图书
       System.out.println("-->删除图书\n");
       System.out.println("请输入要删除图书的名称:");
       String delete = sc.next();
       boolean flag3 = false;
       int index = -1; // 记录要删除图书的位置
       for (int i = 0; i < books.length; i++) {
           // 删除的图书存在、状态处于可借阅状态
           if (books[i].getName() != null && delete.equals(books[i].getName() )&& books[i].getState() == 0) {
               flag3 = true;
               index = i;
               System.out.println("图书删除成功!");
               break;
           } else if (books[i].getName()  != null && delete.equals(books[i].getName()) && books[i].getState() == 1) {
               flag3 = true;
               System.out.println("该图书已被借出,目前无法删除!");
               break;
           }
       }
       // 根据记录下来的删除图书的位置进行删除工作
       if (index != -1) {
           for (int j = index; j < books.length; j++) {
               if (j != books.length - 1) {
                   books[j]=books[j+1];
               }
               books[books.length - 1] = null;

           }
       }
       if (!flag3) {
           System.out.println("没有找到匹配信息!");
       }
       System.out.println("*****************************************");
   }
   public void borrowBook()
   {
       System.out.println("-->借出图书\n");
       System.out.print("请输入图书名称:");
       String want = sc.next(); // 要借出的图书名称
       for (int i = 0; i < books.length; i++) {
           if (books[i] == null) { // 无匹配
               System.out.println("没有找到匹配信息!");
               break;
           } else if (want.equals(books[i].getName()) && books[i].getState() == 0) { // 找到匹配可借
               books[i].setState(1); // 将此图书置于借出状态
               System.out.print("请输入借出日期:");
               books[i].setDate(sc.nextInt());
               while (books[i].getDate() < 1 || books[i].getDate() > 31) { // 当输入借出的日期不满足1-31时
                   System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
                   books[i].setDate(sc.nextInt());
               }
               System.out.println("借出《" + want + "》成功!");
               int count=books[i].getCount();
               count++;
               books[i].setDate(count);
               break;
           } else if (want.equals(books[i].getName()) && books[i].getState() == 1) { // 找到匹配已被借出
               System.out.println("《" + want + "》已被借出!");
               break;
           }
       }
       System.out.println("*****************************************");
   }
   public void returnBook()
   {
       System.out.println("-->归还图书\n");
       int charge = 0; // 租金
       System.out.print("请输入归还图书名称:");
       String reBook = sc.next();
       for (int i = 0; i < books.length; i++) {
           if (books[i] == null) { // 无匹配
               System.out.println("没有找到匹配信息!");
               break;
           } else if (reBook.equals(books[i].getName()) && books[i].getState() == 1) {// 找到匹配
               books[i].setState(0); // 将借阅状态修改为可借阅
               System.out.print("请输入归还日期:");
               int redate = sc.nextInt();
               while (redate < books[i].getDate() || redate > 31) { // 归还日期不能小于借出日期,也不能大于31
                   if (redate < books[i].getDate()) {
                       System.out.println("归还日期不能小于借出日期,请重新输入:");
                   } else {
                       System.out.println("一个月只有31天,请重新输入:");
                   }
                   redate = sc.nextInt();
               }
               charge = redate - books[i].getDate();

               System.out.println("\n归还《" + reBook + "》成功!");
               System.out.println("借出日期为:" + books[i].getDate() + "日");
               System.out.println("归还日期为:" + redate + "日");
               System.out.println("应付租金(元):" + charge);
               books[i].setDate(0);
               break;
           } else if (reBook.equals(books[i].getName()) && books[i].getDate()== 0) {// 找到匹配但没有借出
               System.out.println("该图书没有被借出!无法进行归还操作。");
               break;
           }
       }
       System.out.println("*****************************************");

   }

}

三、测试类

创建borrow对象
调用初始化数据方法init()
调用star()方法

package cn.bdqn.demo02;

public class Test {
    public static void main(String[] args) {
        Borrow borrow=new Borrow();
        borrow.init();
        borrow.star();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值