Java_小项目书城

news2024/11/17 16:04:57

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) {

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt线程池

目录1、线程池是什么&#xff1f;2、Qt线程池2.1、用法例程2.2、线程池对性能的提升2.3、运行算法单线程写法线程池写法1、线程池是什么&#xff1f; 线程池是一种线程使用模式&#xff0c;它管理着一组可重用的线程&#xff0c;可以处理分配过来的可并发执行的任务。 线程池设…

2023最新一线大厂Java八股文强势开源,整整8w字,711页内容

前言 大家都知道每年的3月和4月都是互联网大厂疯狂招人的黄金期&#xff0c;也就是程序员的黄金跳槽期&#xff0c;所以被称为金三银四。 无论你是刚出校园大门的菜鸟&#xff0c;还是对跳槽蓄谋已久的老手&#xff0c;都会在这个时候找到新工作和迎来晋升涨薪的最佳时机。 而…

1.InfluxDB简介与安装

InfluxDB简介 InfluxDB是一个时序性数据库&#xff0c;适用场景数据分析&#xff0c;IoT设备数据采集&#xff0c;监控告警等。InfluxDB是采用GO语言编写&#xff0c;底层提供了大量的HTTP协议的API 其他语言的SDK都采用访问HTTP接口的形式对InfluxDB进行操作 InfluxDB官方一…

WPF学习:Slider — 冒泡显示值

想做一个下图所示的Slider&#xff0c;以冒泡的方式显示其Value值&#xff0c;该怎么做呢&#xff1f; 功能要求&#xff0c;当鼠标放在滑块上的时候&#xff0c;冒“泡”显示值&#xff1b;当滑块移动的时候&#xff0c;“泡”跟随移动。 看似简单的功能&#xff0c;但要完美…

扬帆优配“数字经济+实体经济”融合发展,行业增长空间大!

组织以为&#xff0c;数字经济已经逐步成为工业商场和资本商场的共同主题。 2月16日&#xff0c;国家发改委在《求是》杂志发表文章《努力推进经济完成质的有效提升和量的合理增加》。文章指出要加速开展数字经济&#xff0c;加速实施“东数西算”等重大工程&#xff0c;推进数…

计算机网络笔记(四)—— 数据链路层

点对点协议PPP 目前使用最广泛的点对点数据链路层协议 由以下三个部分构成&#xff1a; PPP工作状态 媒体接入控制 主要解决共享信道的协调问题 静态划分信道 复用&#xff1a;通过一条物理线路同时传输多路用户的信号 频分复用&#xff08;FDM&#xff09;&#xff1a;占用…

DataEase 制作数据可视化大屏经验分享

前言 DataEase 简介 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。DataEase 支持丰富的数据源连接&#xff0c;能够通过拖拉拽方式快速制作图表&#xff0c;并可以方便地与他人分享。 更多详细介…

ChatGPT及相关产品体验与研究

ChatGPT及相关产品体验与研究 我的Github博客仓库链接&#xff1a;ChatGPT及相关产品体验与研究 - Github 一、ChatGPT介绍 1. ChatGPT概述 一句话描述ChatGPT&#xff1a;一个能够通过对话得到你想要的答案的聊天机器人。 ChatGPT 是由 OpenAI 开发的一种基于深度学习的自然…

SPI简介与实例分析

SPI简介 SPI 协议是由Motorola提出的通讯协议 (Serial Peripheral Interface) &#xff0c;是一种高速全双工的串行通信总线。 SPI 通讯使用 3 条总线 &#xff1a;SCK、 MOSI、 MISO &#xff0c;以及若干片选线(SS、CS、NSS)。 主机要和哪个从机通信&#xff0c;就把对应的…

看板项目管理使用指南

作为一种项目管理方法&#xff0c;看板涉及创建列出任务详细信息的可视化卡片&#xff0c;并将它们组织到代表生产过程不同阶段的白板列表中。 今天&#xff0c;看板已经从工厂的白板发展到了我们电脑屏幕上的数字看板应用程序形式。现在的看板项目管理方法可帮助团队管理编辑…

CentOS Stream 8配置DNS

1&#xff1a;用CentOS搭建DNS的目的是想解析一台下载服务器&#xff0c;IP地址172.18.0.58&#xff0c;现在是用IP地址方的式访问&#xff0c;想搭建DNS服务器用域名的方式访问。 使用下面的命令查看一下当前系统的Bind版本。 yum info bind 版本是9.11.36.我的CentOS是最小…

KDGK-703S便携式综合校验仪(毫伏发生器)

一、产品简介 KDGK-703S便携式综合校验仪&#xff08;毫伏发生器&#xff09;是一种集数显式电压、电流、频率标准信号源、Pt100 铂电阻温度模拟标准信号源、数字式电压、电流、频率测量功能于一体的高精度、高分辨率、多用途的自动化仪表校准仪器。 它具有信号输出和测试功能&…

有关eclipse的使用tips

一、alt/键 会产生单词提示&#xff0c;可以提高编程速度。例如不需要辛辛苦苦的打出&#xff1a;System.out.println();整句&#xff0c;只需要在eclipse中输入syso&#xff0c;然后按住ALT/就会出来System.out.println();在alt键/不管用的情况下&#xff0c;可使用以下方法来…

HDMI AVI InfoFrame

AVI/AUDIO/VSI Infoframe都是HDMI的辅助数据类别&#xff0c;HDMI遵循CEA-861规范&#xff0c;CEA 第八章--CONTROL AND CONFIGURATION 8.2定义了三种InfoFrame。 一个InfoFrame packet载送一个InfoFrame&#xff0c;根据HDMI协议规范&#xff0c;其大小为30字节一个CheckSum。…

关于医院医用医疗隔离电源系统应用案例的分析探讨

【摘要】&#xff1a;介绍该三级医院采用安科瑞医用隔离电源柜&#xff0c;使用落地式安装方式&#xff0c;从而实现将TN系统转化为IT系统&#xff0c;同时监测系统绝缘情况。 【关键词】医用隔离电源柜&#xff1b;IT系统&#xff1b;绝缘情况&#xff1b;中西医结合医院&…

盘点Linux内核网络知识100道题,这篇就够了

计算机网络模型 1、五层因特网协议栈和七层OSI&#xff08;Open System Interconnections&#xff09;参考模型分别是什么&#xff1f; 5层&#xff1a;应用层、传输层、网络层、数据链路层、物理层 7层&#xff1a;应用层、表示层、会话层、传输层、网络层、数据链路层、物理…

Gradle安装部署与基础入门详解

【1】Gradle简介 Gradle 是一款Google 推出的基于JVM、通用灵活的项目构建工具&#xff0c;支持Maven&#xff0c;JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件&#xff0c;转而使用简洁的、支持多种语言(例如&#xff1a;java、groovy 等)的build 脚本文…

Delphi 的TZipFile压缩文件自定义(去掉盘符)

关于Delphi中的TZipFile压缩文件&#xff0c;非常方便&#xff0c;该类位于System.Zip单元中&#xff0c;压缩一个目录只需要一条命令TZipFile.ZipDirectoryContents就可以&#xff0c;但是这也有个不方便&#xff0c;就是不能动态增加文件和目录。如果想自定义增加文件或者目录…

【MyBatis】第十篇:mybatis的分页插件---pageHelper

分页无论是那个开发都是常见的使用场景&#xff0c;当然对于分页需要如果自己写的&#xff0c;不过自己写的话可能会需要想到很多&#xff1a; 比如&#xff1a;通过查询sql判断有多少数据&#xff0c;在页面显示共有多少页面。然后每页返回的数据是多少&#xff0c;上一页以及…

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

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