当前位置:网站首页>迷你图书馆系统(对象+数组)
迷你图书馆系统(对象+数组)
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("*****************************************");
}
}
实现结果:
边栏推荐
- tf.reduce_mean()与tf.reduce_sum()
- About # SQL problem: how to set the following data by commas into multiple lines, in the form of column display
- 从何跟踪伦敦金最新行情走势?
- MindManager2022全新正式免费思维导图更新
- 场地预订系统,帮助场馆提高坪效
- 1.1-Regression
- 通过记账,了解当月收支情况
- go 操作MySQL之mysql包
- 测试用例很难?有手就行
- Square, multi-power, square root calculation in Tf
猜你喜欢
1002 Write the number (20 points)
1071 小赌怡情 (15 分)
Tensorflow中使用tf.argmax返回张量沿指定维度最大值的索引
通过记账,了解当月收支情况
1046 punches (15 points)
【Pytorch】nn.Linear,nn.Conv
TF中的条件语句;where()
Redis source code-String: Redis String command, Redis String storage principle, three encoding types of Redis string, Redis String SDS source code analysis, Redis String application scenarios
3.1-分类-概率生成模型
TF generates (feature, label) set through feature and label, tf.data.Dataset.from_tensor_slices
随机推荐
1.1-Regression
3.2-分类-Logistic回归
【Day_13 0509】▲跳石板
流式结构化数据计算语言的进化与新选择
Decrement operation in tf; tf.assign_sub()
tf.cast(), reduce_min(), reduce_max()
Tf中的平方,多次方,开方计算
囍楽cloud task source code
go 操作MySQL之mysql包
易观分析联合中小银行联盟发布海南数字经济指数,敬请期待!
【LeetCode每日一题】——682.棒球比赛
1003 我要通过 (20 分)
js判断图片是否存在
1081 Check Password (15 points)
1096 big beautiful numbers (15 points)
The most complete documentation on Excel's implementation of grouped summation
oracle19c不支持实时同步参数,请教一下大佬们有什么好的解决办法吗?
场地预订系统,帮助场馆提高坪效
1106 2019 Sequence (15 points)
2021-08-11 for循环结合多线程异步查询并收集结果