✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:乐趣国学的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Java——迷你图书管理器(对象+集合)
目录
⛳️ 项目需求
⛳️ 覆盖知识
⛳️ 开发思路
⛳️ 开发步骤
❤️ 1、数据初始化
❤️ 2、BookMethod类中定义各种方法
⛳️ 代码展示
❤️ 1、Book类
❤️ 2、BookMethod类
❤️ 3、 MyBookSystem类
⛳️ 项目需求
为某图书馆开发一个迷你图书管理系统,实现图书的管理,包括如下功能:
(1)新增图书
(2)查看图书
(3)删除图书
(4)借出图书
(5)归还图书
(6)退出图书系统
⛳️ 覆盖知识
程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、集合等
⛳️ 开发思路
(1)明确需求
(2)编码顺序
1)、数据初始化
2)、循环完成各种图书管理操作
3)、菜单切换
(3)测试
⛳️ 开发步骤
❤️ 1、数据初始化
(1)设计一个包含图书信息的类:Book类
(2)设计一个图书信息操作的方法类:BookMethod类
(3)设计一个图书管理系统测试类:MyBookSystem类
(4)在MyBookSystem类中初始化对象数组和相关数据
// 初始化Book集合 ArrayList<Book> books=new ArrayList<Book>(); // 初始化数据并添加到集合 Book book1=new Book("罗马假日", 1, 1, 15); Book book2=new Book("白雪公主", 0, 0, 12); Book book3=new Book("葫芦兄弟", 0, 0, 30); books.add(book1); books.add(book2); books.add(book3);
❤️ 2、BookMethod类中定义各种方法
欢迎使用迷你图书管理器方法
新增图书方法
查看图书方法
删除图书方法
借出图书方法
归还图书方法
退出图书方法
例子:
//欢迎使用迷你图书管理器方法 public static void useBookSystem() { // 输出欢迎菜单 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("-------------------------"); }
⛳️ 代码展示
❤️ 1、Book类
package cn.bdqn.demo05;
public class Book {
//定义属性
private String name;
private int state;
private int date;
private int count;
//添加无参构造
public Book() {
super();
}
//添加有参构造
public Book(String name, int state, int date, int count) {
super();
this.name = name;
this.state = state;
this.date = date;
this.count = count;
}
//添加get/set方法
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;
}
}
❤️ 2、BookMethod类
package cn.bdqn.demo01;
import java.util.ArrayList;
import java.util.Scanner;
public class BookMethod {
// 定义一个静态的Scanner
static Scanner inputsc = new Scanner(System.in);
// static String bookName;
// 欢迎使用迷你图书管理器方法
public static void useBookSystem() {
// 输出欢迎菜单
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("-------------------------");
}
// 新增图书方法
public static void addBook(ArrayList<Book> books) {
System.out.println("-->新增图书\n");
System.out.println("请输入图书名称:");
String bookName = inputsc.next();
// System.out.println(bookName);
Book book = new Book(bookName, 0, 0, 0);
books.add(book);
System.out.println("新增《" + bookName + "》成功!");
System.out.println("*****************************************");
}
// 查看图书方法
public static void lookBook(ArrayList<Book> books) {
System.out.println("-->查看图书\n");
System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
for (int i = 0; i < books.size(); i++) {
String BookState = (books.get(i).getState() == 0) ? "可借阅" : "已借出";
String dateStr = (books.get(i).getDate() == 0) ? "" : (books.get(i)
.getDate() + "日");
System.out.println((i + 1) + "\t" + BookState + "\t"
+ books.get(i).getName() + "\t" + dateStr + "\t"
+ books.get(i).getCount() + "次");
}
System.out.println("*****************************************");
}
// 删除图书方法
public static void delBook(ArrayList<Book> books) {
System.out.println("-->删除图书\n");
System.out.println("请输入要删除图书的名称:");
String delete = inputsc.next();
boolean flag3 = false;
int index = -1; // 记录要删除图书的位置
for (int i = 0; i < books.size(); i++) {
// 删除的图书存在、状态处于可借阅状态
if (books.get(i).getName() != null
&& delete.equals(books.get(i).getName())
&& books.get(i).getState() == 0) {
flag3 = true;
books.remove(i);
System.out.println("图书删除成功!");
break;
} else if (books.get(i).getName() != null
&& delete.equals(books.get(i).getName())
&& books.get(i).getState() == 1) {
flag3 = true;
System.out.println("该图书已被借出,目前无法删除!");
break;
}
}
if (!flag3) {
System.out.println("没有找到匹配信息!");
}
System.out.println("*****************************************");
}
// 借出图书方法
public static void lendBook(ArrayList<Book> books) {
System.out.println("-->借出图书\n");
System.out.print("请输入图书名称:");
String want = inputsc.next(); // 要借出的图书名称
if (books.size() == 0) {
System.out.println("没有找到匹配信息!");
} else {
for (int i = 0; i < books.size(); i++) {
if (want.equals(books.get(i).getName())
&& books.get(i).getState() == 0) { // 找到匹配可借
books.get(i).setState(1); // 将此图书置于借出状态
System.out.print("请输入借出日期:");
int inputscData = inputsc.nextInt();
books.get(i).setDate(inputscData);
while (books.get(i).getDate() < 1
|| books.get(i).getDate() > 31) { // 当输入借出的日期不满足1-31时
System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
inputscData = inputsc.nextInt();
books.get(i).setDate(inputscData);
}
System.out.println("借出《" + want + "》成功!");
books.get(i).setCount(books.get(i).getCount() + 1);
break;
} else if (want.equals(books.get(i).getName())
&& books.get(i).getState() == 1) { // 找到匹配已被借出
System.out.println("《" + want + "》已被借出!");
break;
}
}
}
System.out.println("*****************************************");
}
// 归还图书方法
public static void returnBook(ArrayList<Book> books) {
System.out.println("-->归还图书\n");
int charge = 0; // 租金
System.out.print("请输入归还图书名称:");
String want = inputsc.next();
if (books.size() == 0) {
System.out.println("没有找到匹配信息!");
} else {
for (int i = 0; i < books.size(); i++) {
if (want.equals(books.get(i).getName())
&& books.get(i).getDate() == 1) {// 找到匹配
books.get(i).setDate(0); // 将借阅状态修改为可借阅
System.out.print("请输入归还日期:");
int redate = inputsc.nextInt();
while (redate < books.get(i).getDate() || redate > 31) { // 归还日期不能小于借出日期,也不能大于31
if (redate < books.get(i).getDate()) {
System.out.println("归还日期不能小于借出日期,请重新输入:");
} else {
System.out.println("一个月只有31天,请重新输入:");
}
redate = inputsc.nextInt();
}
charge = redate - books.get(i).getDate();
System.out.println("\n归还《" + want + "》成功!");
System.out.println("借出日期为:" + books.get(i).getDate() + "日");
System.out.println("归还日期为:" + redate + "日");
System.out.println("应付租金(元):" + charge);
books.get(i).setDate(0);
break;
} else if (want.equals(books.get(i).getName())
&& books.get(i).getState() == 0) {// 找到匹配但没有借出
System.out.println("该图书没有被借出!无法进行归还操作。");
break;
}
}
}
System.out.println("*****************************************");
}
}
❤️ 3、 MyBookSystem类
package cn.bdqn.demo01;
import java.util.*;
/**
* 图书管理系统类MyBookMgr
*
* @author Administrator
*
*/
public class MyBookSystem {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 是否退出系统,false代表退出系统
boolean flag = true;
// 初始化Book集合
ArrayList<Book> books=new ArrayList<Book>();
// 初始化数据并添加到集合
Book book1=new Book("罗马假日", 1, 1, 15);
Book book2=new Book("白雪公主", 0, 0, 12);
Book book3=new Book("葫芦兄弟", 0, 0, 30);
books.add(book1);
books.add(book2);
books.add(book3);
int num = -1;
// 循环操作
do {
// 定义一个BookMethod操作类,将操作方法定义在BookMethod类中,然后调用
// 欢迎菜单方法
BookMethod.useBookSystem();
System.out.println("请选择:");
int choose = input.nextInt();
switch (choose) {
case 1:
// 新增图书
BookMethod.addBook(books);
break;
case 2:
// 查看图书
BookMethod.lookBook(books);
break;
case 3:
// 删除图书
BookMethod.delBook(books);
break;
case 4:
// 借出图书
BookMethod.lendBook(books);
break;
case 5:
// 归还图书
BookMethod.returnBook(books);
break;
case 6:
// 退出图书
flag = false;
break;
default:
flag = false;
break;
}
if (flag) {
System.out.println("输入0返回:");
num = input.nextInt();
} else {
break;
}
} while (num == 0);
System.out.println("谢谢使用!");
input.close();
}
}
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。