Java超详细教你写一个网络购书系统案例
一、购书系统
1.前言
伴随着互联网的飞速发展,网络购书系统作为电子商务的一种形式,正以其高效、低成本的优势逐步成为新兴的经营模式,人们已经不再满足互联网的用途仅仅局限于信息的浏览和发布,更渴望着能够充分享受互联网所带来的更多便利。网络购书系统正适应了当今社会的快节奏生活,使更多顾客可以足不出户就能方便快捷地购买自己喜欢的图书。
2.功能介绍
使用Java语言编写一个基于控制台的购书系统,实现购书功能。输出所有图书的信息:每本书的编号、书名、单价、库存。
在顾客购买书时,根据提示输入图书编号来选购需要的书,并根据提示输入购买书的数量。 购买完毕后输出顾客的订单信息,包括:订单号、订单明细、订单总额。
3.分析
- 需要创建三个实体类:图书类、订单项类、订单类。
- 由于购买图书时,需要选择图书的数量,所以需要在订单项类里定义获取图书对象以及图书数量的方法。
- 由于需要指定订单项以及获取订单的订单列表、订单号、订单总额等信息,所以需要有订单列表、订单号、订单总额指定订单项等方法。
二、图书类(Book)
1.类名及属性
- 图书编号(id)
- 图书名称(name)
- 图书单价(price)
- 库存数量(storage)
2.代码示例
/* 定义图书类 */ 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; } 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; } }
三、订单项类(OrderItem)
1.类名及属性
- 图书(book)
- 购买数量(num)
2.代码示例
/* 定义订单项类 */ 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; } }
四、订单类(Order)
1.类名及属性
- 订单号(orderID)
- 订单总额(total)
- 订单项列表(items)
2.代码示例
/* 订单类 */ 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; } }
五、测试类(Test)
1.编写打印图书信息的方法
/* 打印图书信息的方法 */ private static void printBooks(Book[] books) { books[0]=new Book(1,"Java2实用教程",10,20); books[1]=new Book(2,"计算机网络原理",20,20); books[2]=new Book(3,"概率论数理统计",30,20); System.out.println("图书编号\t图书名称\t\t\t图书单价\t图书库存"); for (int i = 0; i < books.length; i++) { Book b=books[i]; System.out.println("\t"+b.getId() +"\t\t"+b.getName()+"\t\t"+b.getPrice()+"\t\t"+b.getStock()); } }
2.编写购买图书的方法
/* 购买图书的方法 */ 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; }
3.编写打印订单信息方法
/* 打印订单信息方法 */ private static void printInfo(Order order) { System.out.println("订单编号:"+order.getOrderID()); System.out.println("图书名称\t\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\t"+items[i].getNum()); } System.out.println("----------------------------------"); System.out.println("总金额:"+order.getTotalMoney()); }
4.编写main方法
public static void main(String[] args) { Book[] books = new Book[3]; //调用打印图书信息的方法 printBooks(books); //调用购买图书的方法 Order order = buy(books); //调用打印订单信息方法 printInfo(order); }
六、总结
通过本实例学会分析“基于控制台的购书系统”程序任务实现的逻辑思路,掌握并理解面向对象的程序设计,包和访问控制修饰符的使用。
到此这篇关于Java超详细教你写一个购书系统案例的文章就介绍到这了,更多相关Java 购书系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
深入学习Java单元测试(Junit+Mock+代码覆盖率)
在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。下面我们就来详细学习下java单元测试吧2019-06-06spring应用中多次读取http post方法中的流遇到的问题
这篇文章主要介绍了spring应用中多次读取http post方法中的流,文中给大家列举处理问题描述及解决方法,需要的朋友可以参考下2018-11-11logback EvaluatorFilter实现同时记录多个level级别的日志
这篇文章主要介绍了logback EvaluatorFilter实现同时记录多个level级别的日志方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-11-11
最新评论