通过对图书的增删改查操作 用数组实现

Manager类

package demo55;
import java.util.*;
public class Manager {
Scanner sc = new Scanner(System.in);
int size = 0; public void Menu(){
int num;
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("7.退出");
System.out.println("8.排行榜");
System.out.println("请选择");
num = sc.nextInt(); switch (num) {
case 1:
System.out.println("1.查看图书");
System.out.println("图书名称\t图书状态\t借出次数");
//init(); 这里不能放在这里不然size会自动增加 4、5、6
//查看图书(遍历数组)
for(int i= 0;i<size;i++){
String content ="";
if(books[i].status==0)
{
System.out.println("未借");
}else{
System.out.println("已借");
} System.out.println(books[i].Bookname+"\t"+books[i].lendCount+"\t"+books[i].status);
}
break;
case 2:
addBook();//构造方法
break;
case 3:
System.out.println("3.删除图书");
break;
case 4:
System.out.println("4.修改图书");
break;
case 5:
System.out.println("5.借书图书");
break;
case 6:
System.out.println("6.还书图书");
break;
case 7:
System.out.println("7.退出");
break;
case 8:
System.out.println("8.排行榜");
break; default: break;
}
method();//记得写入这个方法
} String answer = null;
public void method(){
System.out.println("是否继续(Y/N):");
answer= sc.next();
if(answer.equalsIgnoreCase("y")){
Menu();
}else{
System.out.println("欢迎下次使用!");
}
} Book[] books = new Book[50];//生成对象数组
public void init(){ //初始化三本书的方法
//第一本书
books[0]= new Book(); //创建book[0] 的一个对象
books[0].Bookname = "活着";
books[0].lendCount = 0;
books[0].status = 1;
size++; //第二本书
books[1]= new Book();
books[1].Bookname = "希望";
books[1].lendCount = 0;
books[1].status = 1;
size++; //第三本书
books[2]= new Book();
books[2].Bookname = "软件工程";
books[2].lendCount = 0;
books[2].status = 1;
size++;
} //2.添加图书操作
public void addBook(){
System.out.print("2.添加图书");
System.out.println("请输入你要添加的书名:");
String inputbookname = sc.next(); //创建新图书的一个对象
Book newBook = new Book();
newBook.Bookname = inputbookname; //把新创建的图书对象存入到数组中的位置,
//books[3]= new Book();这个方法定死了
for(int i=0;i<books.length;i++){
if(books[i]==null){
books[i]=newBook;
size++;
break;//如果没有加这个就会输出50本书
}
}
/*通过size来控制当前位置 books[size] = newBook;
size++;//size要改变,+1
*/
} //检索图书的存在
public int searchBook(String delBookName){
for(int i=0;i<size;i++){
if(books[i].Bookname.equals(delBookName)){
return i;
}
}
return -1;//没有找到书
}
public void delBook(){
System.out.println("请选择你需要删除的图书名字:");
String delBookName = sc.next(); //输入的 书去数组库中检索,检索到了,则返回当前此书的下标
int index = searchBook(delBookName);
if(index!=-1){
if(books[index].status==0){
//可以删除
books[index] = null;
System.out.println("恭喜,已成功删除图书!");
//每次删除一本新书,size-1
size--; //位置
while(books[index]!=null){
books[index] = books[index+1];
index++;
} //查看所有图书 }else{
//不可以删除
System.out.println("此书为已借出状态,不可删除!");
}
}else{
//此书不存在
System.out.println("你输入的删除图书不存在");
}
}
}

2017.12.14 Java实现-----图书管理系统的更多相关文章

  1. Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)

    Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...

  2. Java GUI 图书管理系统

    01 概述 一款功能强大的图书馆管理系统,功能齐全,小白/大学生项目实训,学习的不二之选. 02 技术 此系统使用 java awt 实现.java.awt是一个软件包,包含用于创建用户界面和绘制图形 ...

  3. 用java实现图书管理系统。

    图书管理系统. 一.项目设计到的知识 1.MVC设计模式思想(分包) >项目分包 >MVC简单介绍 2.GUI(图形化界面) 3.JDBC连接MySql数据库 4.I/O流 5.面向对象思 ...

  4. 2017.10.14 Java的流程控制语句switch&&随机点名器

    今日内容介绍 1.流程控制语句switch 2.数组 3.随机点名器案例 ###01switch语句解构     * A:switch语句解构       * a:switch只能针对某个表达式的值作 ...

  5. 2017.12.20 Java中的 IO/XML学习总结 File类详细

    IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...

  6. 2017.12.14 Mybatis物理分页插件PageHelper的使用(一)

    参考来自: http://www.360doc.com/content/15/0728/15/12642656_487954693.shtml https://www.cnblogs.com/digd ...

  7. 2017.12.9 Java中的排序---冒泡排序、快速排序、选择排序

    //冒泡排序 public class demo{ public static void main(String[] args) { int[] sum={2,9,10,1,5,88}; System ...

  8. 2017.12.25 Java中面向对象思想的深刻理解

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...

  9. 2017.12.24 Java序列化你不知道的事(二)

    1 序列化允许重构 序列化允许一定数量的类变种,甚至重构之后也是如此,ObjectInputStream 仍可以很好地将其读出来. Java Object Serialization 规范可以自动管理 ...

随机推荐

  1. Spark Task 概述

    Task的执行流程: 1. Driver端中的 CoarseGrainSchedulerBackend 给 CoarseGrainExecutorBacken 发送 LaunchTask 消息 2. ...

  2. 《OD学storm》20160828

    一.Storm项目 1. 架构 javasdk -> nginx -> 日志文件 -> flume agent(collector) -> hdfs -> kafka - ...

  3. 洛谷P1607 [USACO09FEB]庙会班车Fair Shuttle

    P1607 [USACO09FEB]庙会班车Fair Shuttle 题目描述 Although Farmer John has no problems walking around the fair ...

  4. 为什么Python如此慢

    Python当前人气暴涨.它在DevOps,数据科学,Web开发和安全领域均有使用. 但是在速度方面没有赢得美誉. 这里有关于Python比较其他语言如,Java, C#, Go, JavaScrip ...

  5. 背包DP【bzoj2287】: 【POJ Challenge】消失之物

    2287: [POJ Challenge]消失之物 Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. &q ...

  6. css3旋转立方体-_-

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. 前端 HTML-CSS 规范

    黄金定律 一个项目应该永远遵循同一套编码规范! 不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. HTML 语法 用两个空格来代替制表符(tab) – 这是唯一能保证在所有环境 ...

  8. Java start和run启动线程的区别

    我们知道,我们通过调用线程的start方法启动一个线程,那么,我们可以直接调用run方法来启动一个线程吗? 先看下面一段代码: public class Test { public static vo ...

  9. 030 Substring with Concatenation of All Words 与所有单词相关联的字串

    给定一个字符串 s 和一些长度相同的单词 words,找出 s 与 words 中所有单词(words 每个单词只出现一次)串联一起(words中组成串联串的单词的顺序随意)的字符串匹配的所有起始索引 ...

  10. Spark Mllib里如何生成KMeans的训练样本数据、生成线性回归的训练样本数据、生成逻辑回归的训练样本数据和其他数据生成

    不多说,直接上干货! 具体,见 Spark Mllib机器学习(算法.源码及实战详解)的第2章 Spark数据操作