java实现图书检索系统
作者:JAVA_NO.1 发布时间:2023-08-18 20:08:50
标签:java,图书,检索
java模拟实现图书检索系统 (基础版),供大家参考,具体内容如下
练习实现3个简单的功能,没有优化,可以根据需求,自行添加想要实现的功能。
Book.java
package com.demo3;
public class Book {
private int id;
private String name;
private double price;
public Book(){}
public Book(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public void showMess() {
System.out.println("Book{" +
"编号=" + getId() +
", 书名='" + getName() +
", 价格=" + getPrice() +
'}');
}
}
Tool.java
package com.demo3;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.math.BigDecimal;
import java.util.Arrays;
public class Tools {
private Book[] books = new Book[20];
private int size;
public void init(){
Book book1 = new Book(1,"老人与海",29.8);
Book book2 = new Book(2,"狂人日记",36.7);
Book book3 = new Book(3,"玫瑰的葬礼",19.2);
Book book4 = new Book(4,"宇宙源头",19.2);
books[0]=book1;
books[1]=book2;
books[2]=book3;
books[3]=book4;
size=4;
}
public Book[] getBooks() {
return books;
}
public void setSize(int size) {
this.size = size;
}
/*根据编号查询图书*/
public void fingBookById(Book[] books,int id){
int i=0;
while(i<size){
if(books[i].getId()== id){
System.out.println("检索信息: ");
System.out.println("-------------------Content----------------------");
books[i].showMess();
System.out.println("------------------------------------------------");
break;
}
i++;
}
if(i>=size){
System.out.println("暂无信息");
}
}
/*根据价格查找图书,返回一个新的数组*/
public Book[] findBookeByPrice(Book[] books,double price){
Book[] newBooks=new Book[books.length];
int length=0;
int i=0;
int j=0;/*注意,这里添加一个j*/
while(i<size){
/*提高精度,这里用到了BigDecimal类*/
BigDecimal x1 = new BigDecimal(books[i].getPrice());
BigDecimal x2 = new BigDecimal(price);
if(x1.floatValue()==x2.floatValue()){
/*这里用到j,而不是下标i,如果是下标i的话,则就会出现nullpointerexception异常,因为if程序体中的 i的取值不是连续的*/
newBooks[j++]= books[i];
length++;
}
i++;
}
/*这里用到了Array集合类中的copyRange静态方法*/
newBooks= Arrays.copyOfRange(newBooks,0,length);
return newBooks;
}
}
BookTest.java
package com.demo3;
import java.util.Scanner;
public class BookTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/*创建工具类,对其进行初始化*/
Tools tool = new Tools();
tool.init();
prof: while(true) {
System.out.println("========图书检索系统=======");
System.out.println("1,【编号检索】 2,【价格检索】 3,【退出】");
System.out.print("【输入检索【类型】: ");
int num = scanner.nextInt();
while (true) {
switch (num) {
case 1:
System.out.println("进入图书【编号】检索:");
System.out.print("输入检索【编号】: ");
int checkId = scanner.nextInt();
tool.fingBookById(tool.getBooks(), checkId);break;
case 2:
System.out.println("进入图书【价格】检索");
System.out.print("输入检索【价格】:");
double price = scanner.nextDouble();
Book[] books = tool.findBookeByPrice(tool.getBooks(),price);
if(books.length>0){
System.out.println("-------------------Content----------------------");
for(Book book :books){
book.showMess();
}
System.out.println("------------------------------------------------");
};break;
case 3:
System.out.println("退出成功");
break prof;
};
break;
}
}
}
}
程序执行如下:
来源:https://blog.csdn.net/qq_45399396/article/details/119239512
0
投稿
猜你喜欢
- 前言: 项目有个音乐播发器功能,实现音乐在线播放,同时需要带有歌词显示功能。网上也找过,在github找到勉强能用的控件,只是效果还是差强人
- 本文实例讲述了Android使用GPS获取用户地理位置并监听位置变化的方法。分享给大家供大家参考,具体如下:LocationActivity
- 一、日志的分类1、名字分类log4j :log for java (因为for和4读音差不多,所以交log4j)logBack 日志说明注意
- 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些
- using System.Collections.Generic;using System.Text;using System;namesp
- 在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析。一、
- 在该示例中,阐述了SpringMVC如何上传文件。1、上传页面upload.jsp<body> <form
- 本文实例讲述了Jaxb2实现JavaBean与xml互转的方法。分享给大家供大家参考,具体如下:一、简介JAXB(Java Architec
- 这是进行Java Web开发必备的一个过程,仅供新手参考,高手可以忽略!JDK 和 JRE 的区别JRE(Java Runtime Envi
- INotifyPropertyChanged:该接口包含一个事件, 针对属性发生变更时, 执行该事件发生。// /
- 1.Fork/Join框架简介Fork/Join 它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并
- 我们知道,在java中,将一个非原型类型类型的对象引用,赋值给另一个对象的引用之后,这两个引用就指向了同一个对象,如:public clas
- 本文实例形式详述了Java实现一个程序运行时的启动窗口效果,如常用的Microsoft Word、 Borland JBuilder 等,这
- 总结java里面关于获取当前时间的一些方法System.currentTimeMillis()获取标准时间可以通过System.curren
- 1.流布局FlowLayout所有组件像流一样,一个一个排放,排满了一行之后排下一行,默认情况下,每个组件是居中排列的,但是也可以设置。流布
- 编程是一门艺术,大批量的改动显然是非常丑陋的做法,用心的琢磨写的代码让它变的更美观。在有些情况下,一个客户不能或者不想直接访问另一个对象,这
- SpringMVC中事务是否可以加在Controller层一般而言,事务都是加在Service层的,但是爱钻牛角尖的我时常想:事务加在Con
- 本文实例讲述了C#实现rar压缩与解压缩文件的方法。分享给大家供大家参考。具体分析如下:此程序利用 WinRAR 程序对文件进行压缩,命令行
- 我们知道,使用nginx作为文件下载服务器,可以极大地降低对后端Java服务器的负载冲击,但是nginx本身并不提供授权控制,因此好的方案是
- Sentinel数据双向同步上面实现了Nacos单向同步配置规则到Sentinel,但是只是单向的,没有实现Sentinel向Nacos同步