Book.java


import java.util.List;
import java.util.Scanner;
public class Book { private String name;
private String author; Scanner scanner = new Scanner(System.in);
// List booklist = new ArrayList(); 这句没有 因为如果有了 我book中函数查的booklist和主函数是两个list public boolean select(String findname, List booklist) { boolean a = true;
for (Object book : booklist) { if (((Book)book).name.equals(findname)) { a = false;
System.out.println("找到了书籍!");
return !a;
} }
if (a) { System.out.println("此书不存在!");
return !a;
} else {
return a;
}
} public Book() {
} public Book(String name, String author) {
this.name = name;
this.author = author;
} @Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
'}';
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
} }

MainClass.java


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MainClass { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
Book booksystem = new Book();
List booklist = new ArrayList(); //新建booklist while (true){ 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 i = scanner.nextInt();
if (i == 1){ System.out.println("请输入新的书名");
String bookname = scanner.next(); //获取输入的书名 System.out.println("请输入书的作者");
String bookauthor = scanner.next(); //获取输入的作者名 Book newbook = new Book(bookname,bookauthor); booklist.add(newbook); System.out.println("添加成功"); } else if (i == 2){ System.out.println("请输入想要查找的书名");
String findname = scanner.next(); //获取想要查找的名 booksystem.select(findname,booklist); } else if (i == 3){ System.out.println("请输入想要修改的书名");
String wantname = scanner.next(); boolean bool = booksystem.select(wantname,booklist); if (bool){ for (Book book : booklist) { if (book.getName().equals(wantname)){ System.out.println("请输入图书的新名字:");
String altername = scanner.next(); book.setName(altername);
System.out.println("此书已修改!!"); break;
}
}
}
}
else if (i == 4){ System.out.println("请输入想要删除的书名");
String deletename = scanner.next(); boolean bool = booksystem.select(deletename,booklist); if (bool){ for (Book book : booklist) { if (book.getName().equals(deletename)){ booklist.remove(book);
System.out.println("此书已删除!!");
break;
}
} }
}
else if (i == 5){ for (Object o : booklist) { System.out.println(o);
} } else if (i == 6){
System.out.println("----------您已退出系统----------");
break;
}
}
}
}

删除的标准写法:迭代器

我的写法 不规范 会有问题 建议使用迭代器


public void deleteBooks() {
System.out.println("请输入要删除的书籍名:");
String delName = this.input.next();
Iterator bookIterator = this.bookList.iterator(); while(bookIterator.hasNext()) {
Book book = (Book)bookIterator.next();
if (book.getName().equals(delName)) {
System.out.println("找到图书");
bookIterator.remove();
System.out.println("成功删除!");
}
}
}

样例测试

添加



查找

修改

删除

列出

退出

大仁哥的样例jar包

链接:https://pan.baidu.com/s/1zaZ6wvN0BT71svERI0d_0g

提取码:8der

jar包的反编译器

链接:https://pan.baidu.com/s/1GMi1ZVM4y02n_Pjp3s4nhg

提取码:duva

操作方式:解压后双击exe文件打开——文件——反编译jar——选择jar包

使用类和对象、方法、循环、List、泛型来实现简单的图书管理系统的更多相关文章

  1. 1.import和include区别 2.NSLog 和printf区别 3.创建对象做的事情 4. 类和对象方法比较 5 匿名对象优缺点 6. 封装 7.作用域范围 8.id和instancetype 9.自定义构造方法规范 10.nil和Nil及NULL、NSNull区别

    1.import和include的区别: import可以防止头文件的重复包含 2.NSLog 和printf的区别: 1,NSLog可以自动换行, 输出调试信息, printf不能. 2,NSLog ...

  2. Java面向对象~类和对象&方法,类方法

    面向对象 概念:     1.同一类事物的抽象描述,不是具体的    2.类和对象的关系:        类 是抽象的.        对象 是具体的.    3.对象的体征,称为"属性&q ...

  3. Java自学-类和对象 方法重载

    什么是Java 方法重载 方法的重载指的是方法名一样,但是参数类型不一样 步骤 1 : attack方法的重载 有一种英雄,叫做物理攻击英雄 ADHero 为ADHero 提供三种方法 public ...

  4. 谈谈Delphi中的类和对象1---介绍几个概念 && 对象是一个地地道道的指针

    参考:http://blog.163.com/liang_liu99/blog/static/88415216200952123412180/ 以下的介绍主要针对的是Delphi的面向对象的知识,可能 ...

  5. iOS学习10之OC类和对象

    本次是OC的第一节课,主要是学习和理解类与对象 1.面向对象 1> OOP(Object Oriented Programming)面向对象编程. 面向对象以事物为中心,完成某件事情都需要哪些事 ...

  6. python的类和对象——类成员番外篇

    学完了面向对象的三大特性,已经get了所有屌丝技能的我们也当一回文艺小青年,来看看类的成员和成员修饰符. 今天‘三’这个数字好亲和~~~类成员可以分为三类:字段.方法和属性 一.字段 首先我们来看看字 ...

  7. python 面向对象类成员(字段 方法 属性)

    一.字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 class Province: # 静态字段 countr ...

  8. OC开发系列-类与对象

    面向对象 面向对象思想是一种解决问题的思想, 不在是面向过程的去思考问题怎样解决.面向对象解决问题时首先要考虑需要找几个对象能解决这个问题. 常见的概念: * Object Oriented 面向对象 ...

  9. 《Java从入门到失业》第四章:类和对象(4.1):初识类和对象

    4类和对象 在第一章曾经简单介绍过,在面向对象的世界里,一切事物皆对象,当解决一个问题的时候,我们先会考虑这个问题会涉及到哪些事物,然后把事物抽象成类,当时还画了一张图如下: 从本章开始,我们一点一点 ...

随机推荐

  1. canvas基础学习笔记

    canvas基本用法 1.什么是canvas(画布)  <canvas> 是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形,例如,它可以用于绘制图形,创建动 ...

  2. 黑盒测试实践--Day1 11.25

    黑盒测试实践--Day1 今天完成任务情况: 晚上得到老师布置的本周小组作业--黑盒测试的基本要求,然后小组在上周作业建立的微信群里开了个在线的短会,主要内容如下: 组长小靳带领大家学习了这个要求 计 ...

  3. oracle数据库列的操作

    本章和大家分享一下如何在数据库中进行列的一些相关操作. 1.增加列名 (我们先来看一个原始版本) 下面我们增加一个列名tel  记住,增加列时需要把列对应的数据类型要说明,不然会报错. alter t ...

  4. HTML5拓扑3D机房,电力工控Web SCADA

    http://www.hightopo.com/cn-index.html 一套丰富的JavaScript界面类库, 提供完整的基于HTML5图形界面组件库.使用HT for Web您可以轻松构建现代 ...

  5. C# int?

    int?:表示可空类型,就是一种特殊的值类型,它的值可以为null用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0int??:用于判断并赋值,先判断当前变量是否为null,如果是就 ...

  6. xmlreader与xmlwriter里的几个坑与解决方案

    加载超过100M的xml文件时(可能不是很常见),XmlDocument这种全部加载到内存里的模式就有点不友好了,耗时长.内存高. 这时用xmlreader就会有自行车换超跑的感觉,但其间遇到几个坑, ...

  7. c#winform pictureBox使用url加载图片

    string url = "http://b.hiphotos.baidu.com/image/pic/item/03087bf40ad162d93b3a196f1fdfa9ec8b13cd ...

  8. WinForm中ListView的使用

    每一行是一个ListViewItem对象,每一项是一个ListViewSubItem对象 样式 整行选择:this.lvDataSourceSearchHistory.FullRowSelect = ...

  9. 在成员函数中调用虚函数(关于多态的注意事项)------新标准c++程序设计

    类的成员函数之间可以互相调用.在成员函数(静态成员函数.构造函数和析构函数除外)中调用其他虚成员函数的语句是多态的.例如: #include<iostream> using namespa ...

  10. 第十一篇 logging模块

    logging模块是Python中内置的很强大的一个日志模块,它可以帮我们记录程序运行的情况,对于后续排错有很好的帮助. logging模块定义了下表所示的日志级别,按照严重程度由低到高排列: 级别 ...