当前位置: 首页 > news >正文

Java_小项目书城

1.概述

书城的基本功能:

  1. 展示书籍
  2. 上新书籍
  3. 下架书籍
  4. 退出应用

书城项目所涉及到的知识点:

  1. 用户交互–键盘录入
  2. 分支结构,循环结构
  3. 面向对象的思维,封装对象
  4. 集合的使用

2.菜单的编写

这部分代码就是读取用户键盘的录入,然后执行菜单功能

package bookstorw;import java.util.Scanner;public class Test {public static void main(String[] args) {while(true) {System.out.println("欢迎来到书城:");System.out.println("1.展示书籍:");System.out.println("2.上新书籍:");System.out.println("3.下架书籍:");System.out.println("4.退出应用:");//借助Scanner类,扫描键盘输入Scanner sc = new Scanner(System.in);System.out.println("请输入整数序号。");//获取键盘输入的整数值int choice = sc.nextInt();if (choice == 1) {System.out.println("1>>>>>展示书籍");}if (choice == 2) {System.out.println("2>>>>>上新书籍");}if (choice == 3) {System.out.println("3>>>>>下架书籍");}if (choice == 4) {System.out.println("4>>>>>退出应用");break;}}}}

3.上新书籍

此处应当抽象出来一个书籍的类。每新增书籍,我们都应该实例化该类。
创建一个书籍对象,他有三个属性,书号,书籍名字还有作者名

package bookstorw;public class Book {//书籍编号private int bno;//书籍名称private String bname;//书籍作者private String bwriter;public int getBno() {return bno;}public void setBno(int bno) {this.bno = bno;}public String getBwriter() {return bwriter;}public void setBwriter(String bwriter) {this.bwriter = bwriter;}public String getBname() {return bname;}public void setBname(String bname) {this.bname = bname;}public Book() {}public Book(int bno, String bname, String bwriter) {this.bno = bno;this.bname = bname;this.bwriter = bwriter;}public static void main(String[] args) {}
}

然后重写choice==2这个分支

if (choice == 2) {System.out.println("2>>>>>上新书籍");//从键盘录入书籍信息System.out.println("请输入书籍编号:");int bNo = sc.nextInt();System.out.println("请输入书籍名字:");String bName = sc.next();System.out.println("请输入书籍作者:");String bWriter = sc.next();//创建一个书籍对象Book b = new Book();b.setBno(bNo);b.setBname(bName);b.setBwriter(bWriter);list.add(b);  }

在while循环前创建一个集合,这样这个集合的作用域更大,在choice==1的时候也可以使用
在这里插入图片描述

4.展示书籍与下架书籍

重写choice==1
for循环来遍历输出集合里的所有对象

if (choice == 1) {System.out.println("1>>>>>展示书籍");for(int i = 0;i <= list.size() - 1; i++){//获取到i之后,将他强制转换为book类型的对象Book b = (Book)(list.get(i));System.out.println(b.getBno()+"----"+b.getBname()+"-----"+b.getBwriter());}}

下架书籍
遍历整个集合对象,寻找与所输入的整型相等的书籍编号,然后删除

if (choice == 3) {System.out.println("3>>>>>下架书籍");System.out.println("录入需要下架的书籍的编号:");int deleteBook = sc.nextInt();for(int i = 0;i <= list.size() - 1; i++){//获取到i之后,将他强制转换为book类型的对象Book b = (Book)(list.get(i));if(b.getBno() == deleteBook){list.remove(b);System.out.println("书籍下架成功。");break;}}}

5.全部代码

总共两个文件
Test.java

package bookstorw;import java.util.ArrayList;
import java.util.Scanner;public class Test {public static void main(String[] args) {//创建一个集合,存放书籍对象ArrayList list = new ArrayList();while(true) {System.out.println("欢迎来到书城:");System.out.println("1.展示书籍:");System.out.println("2.上新书籍:");System.out.println("3.下架书籍:");System.out.println("4.退出应用:");//借助Scanner类,扫描键盘输入Scanner sc = new Scanner(System.in);System.out.println("请输入整数序号。");//获取键盘输入的整数值int choice = sc.nextInt();if (choice == 1) {System.out.println("1>>>>>展示书籍");for(int i = 0;i <= list.size() - 1; i++){//获取到i之后,将他强制转换为book类型的对象Book b = (Book)(list.get(i));System.out.println(b.getBno()+"----"+b.getBname()+"-----"+b.getBwriter());}}if (choice == 2) {System.out.println("2>>>>>上新书籍");//从键盘录入书籍信息System.out.println("请输入书籍编号:");int bNo = sc.nextInt();System.out.println("请输入书籍名字:");String bName = sc.next();System.out.println("请输入书籍作者:");String bWriter = sc.next();//创建一个书籍对象Book b = new Book();b.setBno(bNo);b.setBname(bName);b.setBwriter(bWriter);list.add(b);}if (choice == 3) {System.out.println("3>>>>>下架书籍");System.out.println("录入需要下架的书籍的编号:");int deleteBook = sc.nextInt();for(int i = 0;i <= list.size() - 1; i++){//获取到i之后,将他强制转换为book类型的对象Book b = (Book)(list.get(i));if(b.getBno() == deleteBook){list.remove(b);System.out.println("书籍下架成功。");break;}}}if (choice == 4) {System.out.println("4>>>>>退出应用");break;}}}}

Book.java

package bookstorw;public class Book {//书籍编号private int bno;//书籍名称private String bname;//书籍作者private String bwriter;public int getBno() {return bno;}public void setBno(int bno) {this.bno = bno;}public String getBwriter() {return bwriter;}public void setBwriter(String bwriter) {this.bwriter = bwriter;}public String getBname() {return bname;}public void setBname(String bname) {this.bname = bname;}public Book() {}public Book(int bno, String bname, String bwriter) {this.bno = bno;this.bname = bname;this.bwriter = bwriter;}public static void main(String[] args) {}
}

相关文章:

Java_小项目书城

1.概述 书城的基本功能&#xff1a; 展示书籍上新书籍下架书籍退出应用 书城项目所涉及到的知识点&#xff1a; 用户交互–键盘录入分支结构&#xff0c;循环结构面向对象的思维&#xff0c;封装对象集合的使用 2.菜单的编写 这部分代码就是读取用户键盘的录入&#xff0…...

Unreal Engine08:Pawn的实现

写在前面 Pawn继承于Actor&#xff0c;增加了一些用于控制和提供玩家视角的功能&#xff0c;这里主要是介绍一下Pawn类的实现。 一、创建一个Pawn的C类 创建的C类也是放在Source文件夹中的Public和Private文件夹中&#xff1b;选择Pawn作为继承的父类&#xff1b;头文件中除…...

408强化(二)线性表纯享版

目录 一、顺序表&#xff08;数组&#xff09;和链表总览 二、考情分析 2.1 从历年考情可以看出&#xff0c;如果一个方法出现了第2次&#xff0c;一般是以下情况&#xff1a; 2.2 没有考过的地方 三、 共同操作或考法 3.1 多指针后移 3.2 逆置 3.3 空间换时间的操作 3.…...

ubuntu下如何使用wireshark抓包,保姆级教程

Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 一、安装wireshark 打开终端&…...

世界上最健康的程序员作息表!「值得一看」

昨晚看了一篇“传说中”的“世界上最健康的作息时间表”&#xff0c;开始纠结自己还要不要5点半起床。 都说程序员这一行&#xff0c;猝死概率极高&#xff0c;究其原因还是加班太狠、作息不规律、缺乏运动… 今天和大家分享一下这篇文章&#xff0c;还是非常值得参考的&#…...

Java中多继承的实现

1 问题Java是一种面向对象的只允许单继承的语言&#xff0c;那么怎样在Java中实现多继承呢&#xff1f;2 方法多层继承如果要直接继承类&#xff0c;子类是不可以直接多继承的&#xff0c;但是可以通过多层继承来实现多继承&#xff0c;但多层继承一般不建议超过三次。接口接口…...

蓝桥杯 stm32 USART 串口发送数据

文章代码使用 HAL 库。 文章目录 前言一、串口原理图二、CubeMX 创建工程。三、串口发送函数:四、串口助手 配置:五、详细代码:注意:连续发送数据六、printf 重定向问题代码示例:实验效果:总结前言 USART : ( Universal Synchronous/Asynchronous Receiver/Transmitter…...

Spring之AOP底层源码解析

Spring之AOP底层源码解析 1、动态代理 代理模式的解释&#xff1a;为其他对象提供一种代理以控制对这个对象的访问&#xff0c;增强一个类中的某个方法&#xff0c;对程序进行扩展。 举个例子 public class UserService {public void test() {System.out.println("test.…...

人脸识别——景联文科技提供3D头模数据采集业务!

“拿起手机刷脸解锁、上下班考勤、支付订单&#xff0c;刷脸已极大地便利了我们的生活。清华大学新闻学院教授沈阳表示&#xff0c;中国人平均每天要暴露在各种摄像头下超过500次。人脸识别已成了我们生活中重要的一部分。由于2D人脸识别容易受到姿态、表情、光照等因素影响&am…...

SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka

最近做的一个项目&#xff0c;使用的是pg数据库&#xff0c;公司没有成熟的DCD组件&#xff0c;为了实现数据变更消息发布的功能&#xff0c;我使用SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka。 一、业务价值 监听数据变化&#xff0c;进行异步通知&#xf…...

酷开系统壁纸模式,将氛围感死死拿捏!

古希腊哲学家柏拉图曾经说过&#xff1a;“美感是起于视觉、听觉产生的快感&#xff0c;以人的感官所能达到的范围为极限。”而电视则恰恰就是视觉听觉的完美融合体&#xff0c;当一台开启的电视可以给我们带来视听享受的时候&#xff0c;一台待机状态下的电视又如何取悦于我们…...

第0章 一些你可能正感到迷惑的问题

操作系统是什么 操作系统是控制管理计算机系统的硬软件&#xff0c;分配调度资源的系统软件。 由操作系统把资源获取到后台给用户进程&#xff0c;但为了保护计算机系统不被损坏&#xff0c;不允许用户进程直接访问硬件资源。 操作系统相当于是一个分配资源的机构&#xff0c;…...

MYSQL实战

SQL的处理 缓存解析查询优化&#xff08;查询优化器&#xff09; 重写查询&#xff1b;表的读取顺序&#xff1b;选择索引1.不要在索引上做任何操作 表达式函数 2.尽量全值匹配 联合索引中搜素条件后会根据最优条件排序进行查询&#xff0c;联合索引尽量都使用起来。搜索条…...

少儿户外拓展北斗定位解决方案

一、项目背景户外拓展训练是指通过专业的机构&#xff0c;对久居城市的人进行的一种野外生存训练。拓展训练通常利用崇山峻岭、翰海大川等自然环境&#xff0c;通过精心设计的活动达到“磨练意志、陶冶情操、完善人格、熔炼团队”的培训目的。针对户外拓展人员安全管理存在的实…...

更换ssl证书

更换ssl证书常用证书查看以及转换网址阿里云判断流量以及配置证书判断接入点阿里云控制台配置证书WAFAzure判断流量以及配置证书&#xff1a;判断接入点Azure配置证书CDNAPP GateWay常用证书查看以及转换网址 https://www.chinassl.net/ssltools/convert-ssl.htmlhttps://myss…...

线程池源码解析项目中如何配置线程池

目录 基础回顾 线程池执行任务流程 简单使用 构造函数 execute方法 execute中出现的ctl属性 execute中出现的addWorker方法 addWorker中出现的addWorkerFailed方法 addWorker中出现的Worker类 Worker类中run方法出现的runWorker方法 runWorker中出现的getTask runWo…...

Echarts 更改K线度颜色,解释K线图4个数字意义

第019个点击查看专栏目录本示例修改K线度的颜色&#xff0c;方法参考源代码。 这里面讲一下K线图的四个数字&#xff0c;如[20, 34, 10, 38], 第一位&#xff1a;20代表开盘价格&#xff0c; 第二位&#xff1a;34代表闭盘价格&#xff0c; 第三位&#xff1a;10代表最低价&…...

JavaScript和Java两种方法实现百度地图和高德、腾讯地图的相互转换

目录一、常见的经纬度标准二、百度地图和高德、腾讯地图经纬度的转换1、前端JavaScript转换2、后端Java实现转换一、常见的经纬度标准 高德、腾讯&#xff08;使用GCJ02&#xff09; GCJ-02坐标系&#xff0c;也称火星坐标系&#xff0c;由中国国家测绘局在02年发布&#xff0…...

Vue中常见的几种组件间通信方法

1.props&#xff08;父传子&#xff09; 父组件Parent.vue <template><child :msg"message"></child> </template>父组件通过:val"value"的形式定义要传给子组件的值value绑定到val上 子组件Child.vue export default {//写法一…...

Outcome VS. Output:研发效能提升中,谁会更胜一筹?

2007 年&#xff0c;网景通信公司&#xff08;Netscape&#xff09;的联合创始人 Marc Andreessen 在博客 The Pmarca Guide to Startups 中提出 「Product/Market Fit」 &#xff0c;他写道&#xff0c; 「这意味着在一个良好的市场中&#xff0c;拥有能够满足该市场的产品。」…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...