Java_小项目书城
1.概述
书城的基本功能:
- 展示书籍
- 上新书籍
- 下架书籍
- 退出应用
书城项目所涉及到的知识点:
- 用户交互–键盘录入
- 分支结构,循环结构
- 面向对象的思维,封装对象
- 集合的使用
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.概述 书城的基本功能: 展示书籍上新书籍下架书籍退出应用 书城项目所涉及到的知识点: 用户交互–键盘录入分支结构,循环结构面向对象的思维,封装对象集合的使用 2.菜单的编写 这部分代码就是读取用户键盘的录入࿰…...
Unreal Engine08:Pawn的实现
写在前面 Pawn继承于Actor,增加了一些用于控制和提供玩家视角的功能,这里主要是介绍一下Pawn类的实现。 一、创建一个Pawn的C类 创建的C类也是放在Source文件夹中的Public和Private文件夹中;选择Pawn作为继承的父类;头文件中除…...
408强化(二)线性表纯享版
目录 一、顺序表(数组)和链表总览 二、考情分析 2.1 从历年考情可以看出,如果一个方法出现了第2次,一般是以下情况: 2.2 没有考过的地方 三、 共同操作或考法 3.1 多指针后移 3.2 逆置 3.3 空间换时间的操作 3.…...
ubuntu下如何使用wireshark抓包,保姆级教程
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 一、安装wireshark 打开终端&…...
世界上最健康的程序员作息表!「值得一看」
昨晚看了一篇“传说中”的“世界上最健康的作息时间表”,开始纠结自己还要不要5点半起床。 都说程序员这一行,猝死概率极高,究其原因还是加班太狠、作息不规律、缺乏运动… 今天和大家分享一下这篇文章,还是非常值得参考的&#…...
Java中多继承的实现
1 问题Java是一种面向对象的只允许单继承的语言,那么怎样在Java中实现多继承呢?2 方法多层继承如果要直接继承类,子类是不可以直接多继承的,但是可以通过多层继承来实现多继承,但多层继承一般不建议超过三次。接口接口…...
蓝桥杯 stm32 USART 串口发送数据
文章代码使用 HAL 库。 文章目录 前言一、串口原理图二、CubeMX 创建工程。三、串口发送函数:四、串口助手 配置:五、详细代码:注意:连续发送数据六、printf 重定向问题代码示例:实验效果:总结前言 USART : ( Universal Synchronous/Asynchronous Receiver/Transmitter…...
Spring之AOP底层源码解析
Spring之AOP底层源码解析 1、动态代理 代理模式的解释:为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的某个方法,对程序进行扩展。 举个例子 public class UserService {public void test() {System.out.println("test.…...
人脸识别——景联文科技提供3D头模数据采集业务!
“拿起手机刷脸解锁、上下班考勤、支付订单,刷脸已极大地便利了我们的生活。清华大学新闻学院教授沈阳表示,中国人平均每天要暴露在各种摄像头下超过500次。人脸识别已成了我们生活中重要的一部分。由于2D人脸识别容易受到姿态、表情、光照等因素影响&am…...
SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka
最近做的一个项目,使用的是pg数据库,公司没有成熟的DCD组件,为了实现数据变更消息发布的功能,我使用SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka。 一、业务价值 监听数据变化,进行异步通知…...
酷开系统壁纸模式,将氛围感死死拿捏!
古希腊哲学家柏拉图曾经说过:“美感是起于视觉、听觉产生的快感,以人的感官所能达到的范围为极限。”而电视则恰恰就是视觉听觉的完美融合体,当一台开启的电视可以给我们带来视听享受的时候,一台待机状态下的电视又如何取悦于我们…...
第0章 一些你可能正感到迷惑的问题
操作系统是什么 操作系统是控制管理计算机系统的硬软件,分配调度资源的系统软件。 由操作系统把资源获取到后台给用户进程,但为了保护计算机系统不被损坏,不允许用户进程直接访问硬件资源。 操作系统相当于是一个分配资源的机构,…...
MYSQL实战
SQL的处理 缓存解析查询优化(查询优化器) 重写查询;表的读取顺序;选择索引1.不要在索引上做任何操作 表达式函数 2.尽量全值匹配 联合索引中搜素条件后会根据最优条件排序进行查询,联合索引尽量都使用起来。搜索条…...
少儿户外拓展北斗定位解决方案
一、项目背景户外拓展训练是指通过专业的机构,对久居城市的人进行的一种野外生存训练。拓展训练通常利用崇山峻岭、翰海大川等自然环境,通过精心设计的活动达到“磨练意志、陶冶情操、完善人格、熔炼团队”的培训目的。针对户外拓展人员安全管理存在的实…...
更换ssl证书
更换ssl证书常用证书查看以及转换网址阿里云判断流量以及配置证书判断接入点阿里云控制台配置证书WAFAzure判断流量以及配置证书:判断接入点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线度的颜色,方法参考源代码。 这里面讲一下K线图的四个数字,如[20, 34, 10, 38], 第一位:20代表开盘价格, 第二位:34代表闭盘价格, 第三位:10代表最低价&…...
JavaScript和Java两种方法实现百度地图和高德、腾讯地图的相互转换
目录一、常见的经纬度标准二、百度地图和高德、腾讯地图经纬度的转换1、前端JavaScript转换2、后端Java实现转换一、常见的经纬度标准 高德、腾讯(使用GCJ02) GCJ-02坐标系,也称火星坐标系,由中国国家测绘局在02年发布࿰…...
Vue中常见的几种组件间通信方法
1.props(父传子) 父组件Parent.vue <template><child :msg"message"></child> </template>父组件通过:val"value"的形式定义要传给子组件的值value绑定到val上 子组件Child.vue export default {//写法一…...
Outcome VS. Output:研发效能提升中,谁会更胜一筹?
2007 年,网景通信公司(Netscape)的联合创始人 Marc Andreessen 在博客 The Pmarca Guide to Startups 中提出 「Product/Market Fit」 ,他写道, 「这意味着在一个良好的市场中,拥有能够满足该市场的产品。」…...
拓扑优化避坑指南:SIMP算法在MATLAB里跑不收敛?可能是这5个参数没调对
SIMP算法参数调优实战:解决拓扑优化中的收敛难题 当你第一次在MATLAB中运行SIMP算法时,那种期待与兴奋可能很快就被现实击碎——迭代曲线像过山车一样上下波动,最终结构布满棋盘格,边界模糊不清。这不是算法本身的问题,…...
跨境服务数字化转型 JAVA 国际版打手俱乐部陪玩系统完整开发教程
以下是基于JAVA开发国际版打手俱乐部陪玩系统的完整开发教程,涵盖技术选型、核心功能实现、安全合规及部署方案:一、技术选型与架构设计后端框架:Spring Boot 3.2 Spring Cloud Alibaba:提供微服务拆分能力,支持Nacos…...
在 React 中,useRef、ref 属性以及 forwardRef 是处理“引用”(访问 DOM 节点或组件实例)的核心概念
在 React 中,useRef、ref 属性以及 forwardRef 是处理“引用”(访问 DOM 节点或组件实例)的核心概念。它们经常一起使用,但职责完全不同。以下是它们的核心区别、使用方法及组合示例:1. 核心概念与区别特性ref (属性)u…...
告别Charles/Fiddler抓包失败:用Magisk TrustUserCerts模块搞定安卓HTTPS拦截
安卓HTTPS抓包全攻略:从Magisk证书安装到防御绕过实战 移动应用安全测试中,HTTPS流量拦截是基础却关键的环节。随着Android系统安全机制的不断升级,传统的抓包方法在Android 7.0及更高版本上频频失效。本文将系统性地介绍基于Magisk的解决方案…...
Java中高效移除文本文件标点符号的实用指南
本教程详细阐述了在Java中从文本文件中有效删除标点符号的方法。我们将使用Java NIO的Files.lines()结合Streamm API,重点介绍正则表达式p{Punct}强大的功能,以简单、强大的方式实现文本清洁,避免传统硬编码的局限性,从而提高文本…...
SEO_从入门到精通,掌握SEO的核心操作步骤
<h2>SEO从入门到精通,掌握SEO的核心操作步骤</h2> <p>在当今的互联网时代,搜索引擎优化(SEO)已经成为任何网站或网页希望获得高流量、高曝光的关键技能。无论你是一个初学者,还是已经有一些SEO基础的…...
SpringBoot+Vue 毕业设计效率提升实战:从脚手架到自动化部署的全链路优化
SpringBootVue 毕业设计效率提升实战:从脚手架到自动化部署的全链路优化 毕业设计是每个计算机相关专业学生必须跨越的一道坎。回想我自己的经历,以及身边同学的故事,一个普遍的现象是:大家往往在技术选型和环境搭建上就耗费了大量…...
OpenClaw飞书机器人配置指南:百川2-13B-4bits量化模型对话触发
OpenClaw飞书机器人配置指南:百川2-13B-4bits量化模型对话触发 1. 为什么选择OpenClaw飞书百川2的组合? 去年我接手了一个小团队的日报自动化项目,需要每天收集5个成员的进度更新并生成汇总报告。最初尝试用Python脚本钉钉机器人࿰…...
功能关键词 AI 短剧爆发:Sora、Pixverse、可灵视频重构影视行业(中外模型对比)
c.myliang.cn深耕 AI 内容创作与 SEO 优化多年,聚焦 2026 年百度 SEO/GEO 关键词布局,结合 AI 短剧行业爆发趋势,帮影视从业者快速掌握 Sora、Pixverse、可灵视频等中外模型实操技巧,适配百度算法与行业需求,低成本打造…...
【递归算法】全排列 Ⅱ
题目链接 文章摘要: 本文解析了LeetCode上"全排列II"问题,要求在包含重复数字的数组中返回所有不重复的全排列。通过分析决策树,指出需在标准全排列解法基础上增加剪枝策略,避免重复结果。详细讲解了两种剪枝思路&#…...
