使用类和对象、方法、循环、List、泛型来实现简单的图书管理系统
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.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 ...
- Java面向对象~类和对象&方法,类方法
面向对象 概念: 1.同一类事物的抽象描述,不是具体的 2.类和对象的关系: 类 是抽象的. 对象 是具体的. 3.对象的体征,称为"属性&q ...
- Java自学-类和对象 方法重载
什么是Java 方法重载 方法的重载指的是方法名一样,但是参数类型不一样 步骤 1 : attack方法的重载 有一种英雄,叫做物理攻击英雄 ADHero 为ADHero 提供三种方法 public ...
- 谈谈Delphi中的类和对象1---介绍几个概念 && 对象是一个地地道道的指针
参考:http://blog.163.com/liang_liu99/blog/static/88415216200952123412180/ 以下的介绍主要针对的是Delphi的面向对象的知识,可能 ...
- iOS学习10之OC类和对象
本次是OC的第一节课,主要是学习和理解类与对象 1.面向对象 1> OOP(Object Oriented Programming)面向对象编程. 面向对象以事物为中心,完成某件事情都需要哪些事 ...
- python的类和对象——类成员番外篇
学完了面向对象的三大特性,已经get了所有屌丝技能的我们也当一回文艺小青年,来看看类的成员和成员修饰符. 今天‘三’这个数字好亲和~~~类成员可以分为三类:字段.方法和属性 一.字段 首先我们来看看字 ...
- python 面向对象类成员(字段 方法 属性)
一.字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 class Province: # 静态字段 countr ...
- OC开发系列-类与对象
面向对象 面向对象思想是一种解决问题的思想, 不在是面向过程的去思考问题怎样解决.面向对象解决问题时首先要考虑需要找几个对象能解决这个问题. 常见的概念: * Object Oriented 面向对象 ...
- 《Java从入门到失业》第四章:类和对象(4.1):初识类和对象
4类和对象 在第一章曾经简单介绍过,在面向对象的世界里,一切事物皆对象,当解决一个问题的时候,我们先会考虑这个问题会涉及到哪些事物,然后把事物抽象成类,当时还画了一张图如下: 从本章开始,我们一点一点 ...
随机推荐
- 制作3D旋转视频展示区
CSS3 3D变形制作视频展示区 <!doctype html> <html lang="en"> <head> <meta charse ...
- 基本滤波算法比较 (转载http://blog.sina.com.cn/s/blog_69f2aa5a01014du5.html)
最近在做关于数据采集方面的东西,这就不免涉及到了滤波的算法,在网上找到了关于几种算法的比较. 数字滤波方法有很多种,每种方法有其不同的特点和使用范围.从大的范围可分为3类. 1.克服大脉冲干扰的数字滤 ...
- CSS概念 - 可视化格式模型(二) 定位概述(普通流、绝对定位)
2.定位概念 上一节熟悉了盒模型, 现在来看一下可视化格式模型和定位模型. 理解这两个模型的细微差异是非常重要的, 因为它们一起控制着如何在页面上布置每个元素 2.1 可视化格式模型 CSS有三种基本 ...
- Java中方法next()和nextLine()的区别
原创 Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别: next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到 ...
- DELPHI XE5 UP2 运行IOS 遇到 Wrapper init failed: (null)问题的解决办法
一.问题表现: 在MAC OSX(10.9.2)上安装了比较新的XCODE5.1 和COMMAND LINE TOOLS 在DELPHI XE5 UP2上放了一个按钮,输出到MAC OSX上,出现: ...
- 阿里 RPC 框架 DUBBO 初体验
最近研究了一下阿里开源的分布式RPC框架dubbo,楼主写了一个 demo,体验了一下dubbo的功能. 快速开始 实际上,dubbo的官方文档已经提供了如何使用这个RPC框架example代码,基于 ...
- css css预处理器
CSS预处理器(css preprocessor) 1.less: 2.sass: 3.scss: 4.stylus 参考: http://hao.jser.com/archive/2507/ htt ...
- JMeter的使用——ApacheJMeterTemporaryRootCA.crt的用法
在使用JMeter的时候,启动HTTP代理服务器弹出的那个提示框一直不知道是什么意思,刚刚弄明白了,在JMeter2.1之后,通过JMeter的代理服务器来访问https安全连接的网页的时候,浏览器会 ...
- Unity---简单单例模式的使用
单例模式特点 1.一般用在一个脚本访问另一个脚本中的数据. 2.对于使用单例模式的类,系统中只会存在唯一一个实例,减少了内存开销. Unity中继承于MonoBehaviour的单例模式 public ...
- MySQL事务及事务隔离级别 锁机制
什么是事务? 当多个用户访问同一份数据时,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据库记录的更新从一个一致性状态更改为另一个一致性状态,这样的操作过程就是事务.事务具有的AC ...