系统概述

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

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;}@Overridepublic 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) { // 归还日期不能小于借出日期,也不能大于31if (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();}
}

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

  1. Java面向对象小项目 慕课网Java入门第二季答答租车系统

    一.项目背景 编写一个控制台程序,要求实现如下功能: 1.展示所有可租车辆 2.选择车型,租车量 3.显示租车清单,包括:总载货量,总载客量,总金额等: 二.车的类别 客车:只能载客 货车:只能载货 ...

  2. java web 图书管理系统_图书管理系统,源代码 Java初级小项目

    今天再给大家分享一个小项目:MiNi图书管理系统.用的是Java语言开发的,代码不多,大概260行左右吧,系统是实现图书的新增图书.删除图书.借阅图书.归还图书.查看图书等简单的功能(后附源代码)! ...

  3. Java小项目迷你图书管理系统

    package 迷你图书管理系统;import java.util.Scanner;public class BookMgr {public static void main(String[] arg ...

  4. java小项目图书管理系统_Java小项目迷你图书管理系统

    package迷你图书管理系统;importjava.util.Scanner;public classBookMgr {public static voidmain(String[] args) { ...

  5. JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能。

    JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能. 代码有一丢丢小多,最后有图解,讲的不对的地方希望各位大佬指出,对您有帮助的话请点个小小的赞. 题目与 ...

  6. 程序逸的Java项目之旅-图书管理系统之数据库设计(1)

    程序逸的Java项目之旅-图书管理系统之环境的搭建 1.前言 上篇博客我们介绍了一下环境的搭建,我相信很多小伙伴这点应该问题不大,可能就是idea破解和mysql数据库和redis数据库的安装吧,我其 ...

  7. 程序逸的Java项目之旅-图书管理系统之数据库设计(2-完)

    紧接上篇博客>>>>>>程序逸的Java项目之旅-图书管理系统之数据库设计(1) 4.数据库表的创建 对于数据库表,我们可以通过cmd窗口进行创建,但那种方法有点麻 ...

  8. 程序逸的Java项目之旅-图书管理系统之验证码和用户数据的后台获取(1)

    通过上篇博客>>>>>程序逸的Java项目之旅-图书管理系统之后端接口的快速实现,我们就可以快速搭建出基础的项目代码了,今天我们就先来实现一个验证码和后台获取管理员的账号 ...

  9. java基础小项目_java基础小项目练习之1----3天做出飞机大战

    Shoot射击游戏第一天 一.关键问题(理论): 1.简述FlyingObject.Enemy.Award.Airplane.Bee.Bullet.Hero之间的继承与实现关系 2.简述Hero类构造 ...

最新文章

  1. [20190402]对比_mutex_wait_scheme不同模式cpu消耗.txt
  2. 在持续交付中加入自动化验收测试支持
  3. Leetcode 剑指 Offer 05. 替换空格 (每日一题 20210809)
  4. java 调度quartz,java quartz任务调度
  5. C语言 二级指针内存模型混合实战
  6. Linux下如何搭建Java环境
  7. 什么是一致性Hash算法?
  8. 20张图,带你搞懂高并发中的线程与线程池!
  9. [原创]按键小精灵通用去广告破解补丁
  10. 张家口zec挖矿软件哪里下载_电脑小白去哪里下载正规软件?
  11. SpringCloud--Eureka 注册中心原理及其搭建
  12. 【案例20】NC系统was部署后无法登录
  13. 系统模块化备援 服务器,无法登录到 CMM 以进行英特尔® 模块化服务器系统
  14. ajax发送请求的数据结构
  15. 获取企业微信授权code
  16. ios10之后的一些新特性
  17. iOS 面试策略之简历的准备到面试流程
  18. 微服务多网卡部署(eureka显示IP不为服务IP的地址)解决办法
  19. 系统集成项目管理工程师案例分析考点汇总(沟通/干系人、风险、合同等)
  20. 51单片机免冷启动下程序不用断电重启也能下载

热门文章

  1. 怎么实现EDIUS中倒影的制作
  2. 简单全景拼接代码修改
  3. HTML5amp;CSS3初学者指南
  4. 2021国内RPA融资年终盘点:15家厂商融资总额破34亿,估值近230亿
  5. 密集波分复用(DWDM)技术的优势
  6. 10-01 某政府和某中央企业网站被挂的木马升级了 第2版
  7. 回填用土好还是砂石料好_沙石料回填
  8. BZOJ 1503: [NOI2004]郁闷的出纳员 Treap
  9. windows任务栏卡死,重启也没用
  10. Unity插件-NGUI