【Java案例】基于控制台的购书系统

这篇具有很好参考价值的文章主要介绍了【Java案例】基于控制台的购书系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

案例介绍:

(1)输出所有图书的信息:包括每本书的编号、书名、单价、库存。

(2)顾客购买书时,根据提示输入购买书的数量。

(3)购买完毕后输出顾客的订单信息,包括:订单号、订单明细、订单总额。

基于控制台的购书系统,java

 运行结果:

基于控制台的购书系统,java

//Book

class Book{ //Book类,用于存放图书的基本信息
    private int id; //编号
    private String name; //书名
    private double price; //价格
    private int storage; //库存
    //有参构造函数
    public Book(int id,String name,double price,int storage)
    {
        this.id = id;
        this.name = name;
        this.price = price;
        this.storage = storage;
    }
    public int getId() //获取书籍编号
    {
        return id;
    }
    public String getName() //获取书名
    {
        return name;
    }
    public double getPrice() //获取价格
    {
        return price;
    }
    public int getStorage() //获取库存
    {
        return storage;
    }
    public int decreaseStorage(int decrement) //获取实际购买数量
    {
        if(this.storage < decrement)
        {
            decrement = this.storage;
        }
        this.storage -= decrement;
        return decrement;
    }
}

//OrderItem

class OrderItem{
    private Book book; //图书Book类对象
    private int num; //订购数量
    //有参构造函数
    public OrderItem(Book book,int num)
    {
        this.book = book;
        this.num = num;
    }
    public Book getBook() //获取图书对象
    {   
        return book;    
    }   
    public int getNum() //获取订购图书数量
    {   
        return num;    
    }   
}

//Order

//Order类,用于存放订单信息
class Order{
    private String orderID; //订单ID
    private OrderItem[] items; //订单项数组
    private double total; //订单总额
    //构造函数
    public Order(String orderID)
    {
        this.orderID = orderID;
        this.items = new OrderItem[3];
    }
    public String getOrderID() //获取订单号     
    {   
        return orderID; 
    }   
    public OrderItem[] getItems() //获取订单列表  
    {   
        return items;   
    }   
    public double getTotal() //获取订单总额
    {
        calTotal();
        return total;
    }
    public void setItem(OrderItem item,int i) //指定一个订单项
    {
        this.items[i] = item;
    }
    public void calTotal() //计算订单总额
    {
        double total = 0;
        for(OrderItem item :items)
        {
            total += item.getNum() * item.getBook().getPrice();
        }
        this.total = total;
    }
}

//BuyBooks:outBooks()、buyBooks()、outOrder()

public class BuyBooks {
    public static void main(String[] args)
    {
        Book[] books = new Book[3];
        outBooks(books); //模拟从数据库中读取图书信息并输出
        Order order = buyBooks(books); //顾客购买图书
        outOrder(order); //输出订单信息
    }
    //模拟从数据库中读取图书信息并输出
    public static void outBooks(Book[] books)
    {
        books[0] = new Book(1,"Java教程",30.6,30);
        books[1] = new Book(2,"JSP教程",42.1,40);
        books[2] = new Book(3,"SSH架构",47.3,15);
        System.out.println("\t图书列表");
        System.out.println("图书编号\t图书名称\t\t图书单价\t库存数量");
        System.out.println("---------------------------------------");
        for(Book book : books)
        {
            System.out.println(book.getId()+"\t\t"+book.getName()+"\t\t"+book.getPrice()+"\t\t"+book.getStorage());
        }
        System.out.println("---------------------------------------");
    }
    //顾客购买图书
    public static Order buyBooks(Book[] books)
    {
        Scanner scanner = new Scanner(System.in);

        Order order = new Order("00001");
        OrderItem item = null;
        for(int i=0;i<3;i++)
        {
            System.out.print("请输入购买 "+books[i].getName()+" 图书数量:");
            int buyNum = scanner.nextInt();
            if(buyNum<0)
            {
                buyNum=0;
                System.out.println("购买数量输入错误,实际购买数量为 0");
            }
            else if (buyNum>books[i].getStorage())
            {
                System.out.println("购买数量超出库存,实际购买数量为 "+books[i].getStorage());
            }
            buyNum = books[i].decreaseStorage(buyNum);
            item = new OrderItem(books[i],buyNum);
            order.setItem(item,i);
            if(i<2)
            {
                System.out.println("请继续购买图书。");
            }
        }
        return order;
    }
    //输出订单信息
    public static void outOrder(Order order)
    {
        System.out.println("\n\t图书订单");
        System.out.println("图书订单号:"+order.getOrderID());
        System.out.println("图书名称\t购物数量\t图书单价");
        System.out.println("---------------------------------------");
        OrderItem[] items = order.getItems();
        for(OrderItem item : items)
        {
            System.out.println(item.getBook().getName()+"\t\t"+item.getNum()+"\t"+item.getBook().getPrice());
        }
        System.out.println("---------------------------------------");
        System.out.println("订单总额:\t\t"+order.getTotal());
    }
}

完整代码:文章来源地址https://www.toymoban.com/news/detail-720528.html

import java.util.Scanner;

class Book{ //Book类,用于存放图书的基本信息
    private int id; //编号
    private String name; //书名
    private double price; //价格
    private int storage; //库存
    //有参构造函数
    public Book(int id,String name,double price,int storage)
    {
        this.id = id;
        this.name = name;
        this.price = price;
        this.storage = storage;
    }
    public int getId()          {   return id;      }   //获取书籍编号
    public String getName()     {   return name;    }   //获取书名
    public double getPrice()    {   return price;   }   //获取价格
    public int getStorage()     {   return storage; }   //获取库存

    public int decreaseStorage(int decrement) //获取实际购买数量
    {
        if(this.storage < decrement)
        {
            decrement = this.storage;
        }
        this.storage -= decrement;
        return decrement;
    }
}
class OrderItem{
    private Book book; //图书Book类对象
    private int num; //订购数量
    //有参构造函数
    public OrderItem(Book book,int num)
    {
        this.book = book;
        this.num = num;
    }
    public Book getBook()   {   return book;    }   //获取图书对象
    public int getNum()     {   return num;     }   //获取订购图书数量
}
//Order类,用于存放订单信息
class Order{
    private String orderID; //订单ID
    private OrderItem[] items; //订单项数组
    private double total; //订单总额
    //构造函数
    public Order(String orderID)
    {
        this.orderID = orderID;
        this.items = new OrderItem[3];
    }
    public String getOrderID()      {   return orderID; }   //获取订单号
    public OrderItem[] getItems()   {   return items;   }   //获取订单列表
    public double getTotal() //获取订单总额
    {
        calTotal();
        return total;
    }
    public void setItem(OrderItem item,int i) //指定一个订单项
    {
        this.items[i] = item;
    }
    public void calTotal() //计算订单总额
    {
        double total = 0;
        for(OrderItem item :items)
        {
            total += item.getNum() * item.getBook().getPrice();
        }
        this.total = total;
    }
}

public class BuyBooks {
    public static void main(String[] args)
    {
        Book[] books = new Book[3];
        outBooks(books); //模拟从数据库中读取图书信息并输出
        Order order = buyBooks(books); //顾客购买图书
        outOrder(order); //输出订单信息
    }
    //模拟从数据库中读取图书信息并输出
    public static void outBooks(Book[] books)
    {
        books[0] = new Book(1,"Java教程",30.6,30);
        books[1] = new Book(2,"JSP教程",42.1,40);
        books[2] = new Book(3,"SSH架构",47.3,15);
        System.out.println("\t图书列表");
        System.out.println("图书编号\t图书名称\t\t图书单价\t库存数量");
        System.out.println("---------------------------------------");
        for(Book book : books)
        {
            System.out.println(book.getId()+"\t\t"+book.getName()+"\t\t"+book.getPrice()+"\t\t"+book.getStorage());
        }
        System.out.println("---------------------------------------");
    }
    //顾客购买图书
    public static Order buyBooks(Book[] books)
    {
        Scanner scanner = new Scanner(System.in);

        Order order = new Order("00001");
        OrderItem item = null;
        for(int i=0;i<3;i++)
        {
            System.out.print("请输入购买 "+books[i].getName()+" 图书数量:");
            int buyNum = scanner.nextInt();
            if(buyNum<0)
            {
                buyNum=0;
                System.out.println("购买数量输入错误,实际购买数量为 0");
            }
            else if (buyNum>books[i].getStorage())
            {
                System.out.println("购买数量超出库存,实际购买数量为 "+books[i].getStorage());
            }
            buyNum = books[i].decreaseStorage(buyNum);
            item = new OrderItem(books[i],buyNum);
            order.setItem(item,i);
            if(i<2)
            {
                System.out.println("请继续购买图书。");
            }
        }
        return order;
    }
    //输出订单信息
    public static void outOrder(Order order)
    {
        System.out.println("\n\t图书订单");
        System.out.println("图书订单号:"+order.getOrderID());
        System.out.println("图书名称\t购物数量\t图书单价");
        System.out.println("---------------------------------------");
        OrderItem[] items = order.getItems();
        for(OrderItem item : items)
        {
            System.out.println(item.getBook().getName()+"\t\t"+item.getNum()+"\t"+item.getBook().getPrice());
        }
        System.out.println("---------------------------------------");
        System.out.println("订单总额:\t\t"+order.getTotal());
    }
}

到了这里,关于【Java案例】基于控制台的购书系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java程序设计入门教程--控制台输入数据

    控制台输入数据常用类 Scanner类        在 很多情况下,我们需要 Java 程序能够对我们指定的值进行计算,这样的话就需要我们的 Java 程序能够读取我们所输入的值。我们可以使用 Java 自带的 Scanner 类来从控制台获取 输入 。        Scanner 类在包 java.util 里。我们一般在程

    2024年02月07日
    浏览(41)
  • 基于JavaSE+JDBC使用控制台操作的简易购物系统【源码+数据库】

    本项目是一套基于JavaSE+JDBC使用控制台操作的简易购物系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保可以运行! JavaSE+JDBC+idea+mysql 用户角色:

    2024年02月04日
    浏览(52)
  • 手把手教你写代码——基于控制台的通讯录管理系统(单表)

    本栏目专为入门java学习者设计的一些简单的入门项目 本项目为简单的基于控制台的通讯录管理系统,所需要的环境仅仅为jdk以及mysql(版本不限)!只有一个简单的eclipse软件以及我们的mysql可视化工具(视频使用navicat) 本项目数据库表仅有一个,单表操作,方便学习! 本项

    2024年02月15日
    浏览(44)
  • SpringBoot整合Redis:java.io.IOException: 远程主机强迫关闭了一个现有的连接。或者控制台报连接超时异常

    场景: 项目启动过后 Redis 连接过一会就会断开,报如下问题: 问题1: 问题2: 问题3: 一、解决 1、设置连接空闲超过 N(秒或毫秒)后关闭,0为禁用:redis.timeout: 60s(这里设置和tcp-keepalive的值一致) 2、设置 redis 服务端的配置文件 redis.conf 中 tcp-keepalive 的时间为60(单位秒

    2024年02月13日
    浏览(38)
  • 基于JAVA的网上购书系统(附:源码 论文 项目运行视频)

    摘要 在当今的社会中, 随着社会经济的快速发展以及计算机网络技术和通讯技术的快速成长,网络应用领域也一天天扩大,网络中的新鲜事物层出不穷。电子商务的发展增加了许多商业交易的平台,借助于这种互联网平台,人们进行商品宣传、业务交易等多种行为,进而使

    2024年02月10日
    浏览(35)
  • python控制台学生管理系统

    设计初始界面 设计学生信息录入 【数据校准】录入判断 学生姓名不能为空,并且不成超过4个字 【数据校准】录入判断年龄在0-120 需要进行判断 【数据校准】录入需要判断学号是否为空与学号是否在10位数 【数据校准】录入需要判断成绩是否在0-100之间、并判断录入成绩为

    2024年02月09日
    浏览(41)
  • #Fortigate#LDAP 如何设置同步LDAP用户作为系统登录控制台的管理员账号

    1、首先创建一个LDAP用户服务器,在用户与认证--LDAP里面选择新建  先添加LDAP自定义名称、服务器IP、服务器端口(默认389)  然后填写common name标识符,常用标识符有三种:cn (常用名)、sAMAccountName (远程登录名)、uid (用户ID)。默认为cn。 a、当标识符为cn时,我们需要知道用户

    2024年02月07日
    浏览(60)
  • 浏览器控制台调试代码和JavaScript控制台方法介绍

    浏览器控制台调试代码 浏览器控制台(Console)是浏览器提供的一个开发工具,用于在浏览器中执行和调试 JavaScript 代码。它提供了一个交互式环境,可以输入 JavaScript 代码,并立即看到代码执行结果或输出信息。 在大部浏览器中,可以通过按下 F12 键或右键点击网页并选择

    2024年02月03日
    浏览(95)
  • docker rabbitmq控制台访问失败,rabbitmq控制台访问不了

    1. docker-compose配置内容: 2. 映射文件夹一定要赋予权限 不然程序启动无法写入数据:     3. log日志: 4. 日志看着已经启动了, 其实还没有。手动进入容器,启动管理插件 5. 命令:  6. 再次访问:      虚拟机:虚拟机ip:15672     本地则是:127.0.0.1:15672

    2024年01月18日
    浏览(62)
  • 控制台卸载绿盾加密终端后,重启电脑就蓝屏错误代码0xc0000001,安全模式进不了,不重装系统如何修复?

    联想 E14笔记本 绿盾v6.50.220325.SC USB固态硬盘盒/Win PE Win10 官方镜像文件 控制台卸载绿盾加密终端后,重启电脑就蓝屏错误代码0xc0000001,安全模式进不了,不重装系统如何修复? 重启电脑就蓝屏错误代码0xc0000001 错误代码:0xc0000001表示设备可能存在某些问题,系统注册表文件

    2024年02月13日
    浏览(158)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包