【案例3-1】(基于控制台的购书系统)

本任务要求:使用所学知识编写一个基于控制台的购书系统,实现购书功能,输出所有图书的信息,包括每本书的编号,书名,单价,库存。

顾客购买书时,根据提示输入图书编号来选需要的书,并根据提示输入购买书的数量,

购买完成后,输出顾客的订单信息,包括订单号,订单明细,订单总额。

此案例分为四个类

Book ,Order , Orderitem,Test(注意开头字母大写)

Book类

此类有四个参数,id编号 name姓名 price价格 stock库存。

1.无参构造方法

2.有参构造方法

3.getter and setter方法。

//图书类
public class Book {
    private int id;
    private String name;
    private double price;
    private int stock;
//空参数
    public Book() {
    }

    public Book(int id, String name, double price, int stock) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.stock = stock;
    }
//get and set 方法
    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 int getStock() {
        return stock;
    }

    public void setStock(int stock) {
        this.stock = stock;
    }
}

Order类

//订单类
public class Order {
private String orderId;
private OrderItem[] items=new OrderItem[3];
private double totalMoney;

    public Order() {
    }

    public Order(String orderId) {
        this.orderId = orderId;
    }

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public OrderItem[] getItems() {
        return items;
    }

    public void setItems(int i,OrderItem item ) {
       items[i]=item;
    }

    public double getTotalMoney() {
        for (int i = 0; i < items.length; i++) {
            totalMoney += items[i].getNum()*items[i].getBook().getPrice();
        }
        return totalMoney;
    }


    public void setOrderId(int i, OrderItem item) {
    }
}

OrderItem类

//订单项类
public class OrderItem {
    private Book book;
    private int num;

    public OrderItem() {
    }

    public OrderItem(Book book, int num) {
        this.book = book;
        this.num = num;
    }

    public Book getBook() {
        return book;
    }

    public void setBook(Book book) {
        this.book = book;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }
}

Test类

下列代码调用了三种方法来完成程序,

1.打印图书信息

2.购买方法

3.打印订单信息

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Book[] books=new Book[3];
        //调用打印图书信息的方法
        printBooks(books);
        //调用购买方法
        Order order = buy(books);
        //打印订单信息
        printInfo(order);
    }

    private static void printInfo(Order order) {
        System.out.println("订单编号"+order.getOrderId());
        System.out.println("图书名称\t图书单价\t购买数量");
        OrderItem[] items=order.getItems();
        for (int i = 0; i < items.length; i++) {
            System.out.println(items[i].getBook().getName()+ "\t" +items[i].getBook().getPrice()+"\t"+items[i].getNum());
        }
        System.out.println("-----------------------------------");
        System.out.println("总金额"+order.getTotalMoney());
    }

    private static Order buy(Book[] books) {
        Order order=new Order("001");
        Scanner sc=new Scanner(System.in) ;
        for (int i = 0; i < books.length; i++) {
            System.out.println("请输入图书编号");
            int id=sc.nextInt();
            System.out.println("请输入购买数量");
            int num= sc.nextInt();
            OrderItem item=new OrderItem(books[id-1],num);
            order.setItems(i,item);
        }
        return order;
    }

    private static void printBooks(Book[] books) {
        books[0]=new Book(1,"java教程图书", 10,20);
        books[1]=new Book(2,"HTML教程图书", 20,20);
        books[2]=new Book(3,"python教程书", 30,20);
        System.out.println("--------------------------------------------");
        System.out.println("图书编号\t图书名称\t\t图书单价\t图书库存");
        for (int i = 0; i < books.length; i++) {
            Book b=books[i];
            System.out.println(b.getId()+"\t\t"+b.getName()+"\t"+b.getPrice()+"\t\t"+b.getStock());
        }
    }

}


结果展示

下图没有排列整齐,(如果觉得不好看可以自己在上面输入制表符进行调节)

  • 15
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,一个基于控制台购书系统可以分为以下几个模块: 1. 用户登录/注册模块:用户可以通过输入用户名和密码进行登录或者注册新用户。 2. 书籍浏览模块:用户可以浏览系统中的所有书籍,并查看书籍的详细信息,如书名、作者、出版社、价格等。 3. 购物车模块:用户可以将自己想要购买的书籍添加到购物车中,并可以查看购物车中的所有书籍和总价。 4. 订单确认模块:用户可以确认购物车中的书籍并生成订单,包括订单号、购买时间、购买数量、总价等信息。 5. 订单查询模块:用户可以查询自己的历史订单,并查看订单的详细信息,如订单号、购买时间、购买数量、总价等。 下面是一个简单的实现示例: 1. 用户登录/注册模块: a. 用户登录:用户输入用户名和密码,系统验证后允许用户登录。 b. 用户注册:用户输入用户名和密码,系统验证后允许用户注册新账户。 2. 书籍浏览模块: a. 显示所有书籍:系统从数据库中读取所有书籍信息,并在控制台上显示出来。 b. 显示书籍详细信息:用户选择一本书籍后,系统显示该书籍的详细信息。 3. 购物车模块: a. 添加书籍到购物车:用户选择一本书籍后,可以将该书籍添加到购物车中。 b. 显示购物车中的书籍:系统显示购物车中的所有书籍和总价。 4. 订单确认模块: a. 确认购物车中的书籍:用户确认购物车中的书籍后,系统生成订单并显示订单信息。 5. 订单查询模块: a. 显示历史订单:系统从数据库中读取用户的历史订单,并在控制台上显示出来。 b. 显示订单详细信息:用户选择一个订单后,系统显示该订单的详细信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩气长存在心中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值