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;}@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面向对象小项目之迷你图书管理系统相关推荐
- Java面向对象小项目 慕课网Java入门第二季答答租车系统
一.项目背景 编写一个控制台程序,要求实现如下功能: 1.展示所有可租车辆 2.选择车型,租车量 3.显示租车清单,包括:总载货量,总载客量,总金额等: 二.车的类别 客车:只能载客 货车:只能载货 ...
- java web 图书管理系统_图书管理系统,源代码 Java初级小项目
今天再给大家分享一个小项目:MiNi图书管理系统.用的是Java语言开发的,代码不多,大概260行左右吧,系统是实现图书的新增图书.删除图书.借阅图书.归还图书.查看图书等简单的功能(后附源代码)! ...
- Java小项目迷你图书管理系统
package 迷你图书管理系统;import java.util.Scanner;public class BookMgr {public static void main(String[] arg ...
- java小项目图书管理系统_Java小项目迷你图书管理系统
package迷你图书管理系统;importjava.util.Scanner;public classBookMgr {public static voidmain(String[] args) { ...
- JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能。
JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能. 代码有一丢丢小多,最后有图解,讲的不对的地方希望各位大佬指出,对您有帮助的话请点个小小的赞. 题目与 ...
- 程序逸的Java项目之旅-图书管理系统之数据库设计(1)
程序逸的Java项目之旅-图书管理系统之环境的搭建 1.前言 上篇博客我们介绍了一下环境的搭建,我相信很多小伙伴这点应该问题不大,可能就是idea破解和mysql数据库和redis数据库的安装吧,我其 ...
- 程序逸的Java项目之旅-图书管理系统之数据库设计(2-完)
紧接上篇博客>>>>>>程序逸的Java项目之旅-图书管理系统之数据库设计(1) 4.数据库表的创建 对于数据库表,我们可以通过cmd窗口进行创建,但那种方法有点麻 ...
- 程序逸的Java项目之旅-图书管理系统之验证码和用户数据的后台获取(1)
通过上篇博客>>>>>程序逸的Java项目之旅-图书管理系统之后端接口的快速实现,我们就可以快速搭建出基础的项目代码了,今天我们就先来实现一个验证码和后台获取管理员的账号 ...
- java基础小项目_java基础小项目练习之1----3天做出飞机大战
Shoot射击游戏第一天 一.关键问题(理论): 1.简述FlyingObject.Enemy.Award.Airplane.Bee.Bullet.Hero之间的继承与实现关系 2.简述Hero类构造 ...
最新文章
- [20190402]对比_mutex_wait_scheme不同模式cpu消耗.txt
- 在持续交付中加入自动化验收测试支持
- Leetcode 剑指 Offer 05. 替换空格 (每日一题 20210809)
- java 调度quartz,java quartz任务调度
- C语言 二级指针内存模型混合实战
- Linux下如何搭建Java环境
- 什么是一致性Hash算法?
- 20张图,带你搞懂高并发中的线程与线程池!
- [原创]按键小精灵通用去广告破解补丁
- 张家口zec挖矿软件哪里下载_电脑小白去哪里下载正规软件?
- SpringCloud--Eureka 注册中心原理及其搭建
- 【案例20】NC系统was部署后无法登录
- 系统模块化备援 服务器,无法登录到 CMM 以进行英特尔® 模块化服务器系统
- ajax发送请求的数据结构
- 获取企业微信授权code
- ios10之后的一些新特性
- iOS 面试策略之简历的准备到面试流程
- 微服务多网卡部署(eureka显示IP不为服务IP的地址)解决办法
- 系统集成项目管理工程师案例分析考点汇总(沟通/干系人、风险、合同等)
- 51单片机免冷启动下程序不用断电重启也能下载