当前位置:网站首页>迷你图书馆系统(对象+数组)
迷你图书馆系统(对象+数组)
2022-08-11 07:33:00 【千寻~~】
迷你图书馆管理系统,主要实现以下操作:
1、新增图书
2、查看图书
3、删除图书
4、借出图书
5、归还图书
6、退出系统
完整代码:
BooksInfo类:实体类
public class BooksInfo {
private String name; // 图书名称
private int state; // 借阅状态,0:可借阅 ;1:已借出
private int date; // 借出天数
private int count; // 借出次数
public BooksInfo() {
super();
}
public BooksInfo(String name, int state, int date, int count) {
super();
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;
}
}
MyBookMgr类:
import java.util.*;
public class MyBookMgr {
public static BooksInfo[] books = new BooksInfo[6];
public static Scanner input = new Scanner(System.in);
static {
books[0] = new BooksInfo("罗马假日", 1 ,1 ,15); // 初始化第一本本图书
books[1] = new BooksInfo("白雪公主", 0 ,0 ,12); // 初始化第二本本图书
books[2] = new BooksInfo("葫芦兄弟", 0 ,0 ,30); // 初始化第三本本图书
}
public static void main(String[] args) {
int num = -1;
// 循环操作
out:
do {
// 显示主菜单
menu();
System.out.println("请选择:");
int choose = input.nextInt();
switch (choose) {
case 1:
// 新增图书
addBook();
break;
case 2:
// 查看图书
viewBook();
break;
case 3:
// 删除图书
deleteBook();
break;
case 4:
// 借出图书
lendBook();
break;
case 5:
// 归还图书
returnBook();
break;
case 6:
// 退出
break out;
default:
break out;
}
//提示用户输入0返回继续执行
System.out.println("输入0返回:");
num = input.nextInt();
}while(num == 0);
//输入非0则退出
System.out.println("谢谢使用,欢迎下次光临!");
}
public static void menu() {
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() {
// 新增图书
System.out.println("-->新增图书\n");
System.out.println("请输入图书名称:");
String bookName = input.next();
// 判断添加书是否成功
boolean flag = false;
// 循环查找图书馆里的可存放书的地方
for (int i = 0; i < books.length; i++) {
// 判断某个位置是否能存放书
if (books[i] == null) {
BooksInfo book = new BooksInfo();
book.setName(bookName);
books[i] = book;
System.out.println("新增《" + bookName + "》成功!");
flag = true;
break;
}
}
if (!flag) {
System.out.println("抱歉,新增《" + bookName + "》失败!货架已满!");
}
System.out.println("*****************************************");
}
public static void viewBook() {
// 查看图书
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].getName() + "\t" + dateStr + "\t" + books[i].getCount() + "次");
}
}
System.out.println("*****************************************");
}
public static void deleteBook() {
// 删除图书
System.out.println("-->删除图书\n");
System.out.println("请输入要删除图书的名称:");
String delete = input.next();
boolean flag3 = false;
int index = -1; // 记录要删除图书的位置
for (int i = 0; i < books.length; i++) {
// 删除的图书存在、状态处于可借阅状态
if (books[i] != null && delete.equals(books[i].getName()) && books[i].getState() == 0) {
flag3 = true;
index = i;
System.out.println("图书删除成功!");
break;
} else if (books[i] != 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 - 1; j++) {
books[j] = books[j + 1];
}
//把数组最后一位置空
books[books.length - 1] = null;
}
if (!flag3) {
System.out.println("没有找到匹配信息!");
}
System.out.println("*****************************************");
}
public static void lendBook() {
// 借出图书
System.out.println("-->借出图书\n");
System.out.print("请输入图书名称:");
String lend = input.next(); // 要借出的图书名称
for (int i = 0; i < books.length; i++) {
if (books[i] == null) { // 无匹配
System.out.println("没有找到匹配信息!");
break;
} else if (lend.equals(books[i].getName()) && books[i].getState() == 0) { // 找到匹配可借
books[i].setState(1); // 将此图书置于借出状态
System.out.print("请输入借出日期:");
int date = input.nextInt();
books[i].setDate(date);
while (books[i].getDate() < 1 || books[i].getDate() > 31) { // 当输入借出的日期不满足1-31时
System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
date = input.nextInt();
books[i].setDate(date);
}
System.out.println("借出《" + lend + "》成功!");
books[i].setCount(books[i].getCount() + 1);;
break;
} else if (lend.equals(books[i].getName()) && books[i].getState() == 1) { // 找到匹配已被借出
System.out.println("《" + lend + "》已被借出!");
break;
}
}
System.out.println("*****************************************");
}
public static void returnBook() {
// 归还图书
System.out.println("-->归还图书\n");
int charge = 0; // 租金
System.out.print("请输入归还图书名称:");
String want = input.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() == 1) {// 找到匹配
books[i].setState(0); // 将借阅状态修改为可借阅
System.out.print("请输入归还日期:");
int redate = input.nextInt();
while (redate < books[i].getDate() || redate > 31) { // 归还日期不能小于借出日期,也不能大于31
if (redate < books[i].getDate()) {
System.out.println("归还日期不能小于借出日期,请重新输入:");
} else {
System.out.println("一个月只有31天,请重新输入:");
}
redate = input.nextInt();
}
charge = redate - books[i].getDate();
System.out.println("\n归还《" + want + "》成功!");
System.out.println("借出日期为:" + books[i].getDate() + "日");
System.out.println("归还日期为:" + redate + "日");
System.out.println("应付租金(元):" + charge);
books[i].setDate(0);
break;
} else if (want.equals(books[i].getName()) && books[i].getState() == 0) {// 找到匹配但没有借出
System.out.println("该图书没有被借出!无法进行归还操作。");
break;
}
}
System.out.println("*****************************************");
}
}
实现结果:





边栏推荐
- 1002 写出这个数 (20 分)
- 2021-08-11 for循环结合多线程异步查询并收集结果
- 1091 N-自守数 (15 分)
- CIKM 2022 AnalytiCup Competition: Federal Heterogeneous Task Learning
- 4.1-支持向量机
- 【C语言】每日一题,求水仙花数,求变种水仙花数
- 记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.
- 1106 2019 Sequence (15 points)
- Activity的四种启动模式
- 我的创作纪念日丨感恩这365天来有你相伴,不忘初心,各自精彩
猜你喜欢
随机推荐
redis operation
Pico neo3在Unity中的交互操作
1071 小赌怡情 (15 分)
【415. 字符串相加】
关于#sql#的问题:怎么将下面的数据按逗号分隔成多行,以列的形式展示出来
TF通过feature与label生成(特征,标签)集合,tf.data.Dataset.from_tensor_slices
【Pytorch】nn.ReLU(inplace=True)
1.1-回归
Two state forms of Service
matrix multiplication in tf
【C语言】每日一题,求水仙花数,求变种水仙花数
Test cases are hard?Just have a hand
1096 big beautiful numbers (15 points)
Keep track of your monthly income and expenses through bookkeeping
tf.reduce_mean()与tf.reduce_sum()
tf.reduce_mean() and tf.reduce_sum()
1096 大美数 (15 分)
There may be fields that cannot be serialized in the abnormal object of cdc and sqlserver. Is there anyone who can understand it? Help me to answer
3.1-分类-概率生成模型
The growth path of a 40W test engineer with an annual salary, which stage are you in?









