建设银行招聘官方网站,郴州seo网络优化,wordpress保存菜单,免保证金入驻电商平台#x1f4da;博客主页#xff1a;爱敲代码的小杨.
✨专栏#xff1a;《Java SE语法》|《数据结构与算法》
❤️感谢大家点赞#x1f44d;#x1f3fb;收藏⭐评论✍#x1f3fb;#xff0c;您的三连就是我持续更新的动力❤️
#x1f64f;小杨水平有限#xff0c;欢…
博客主页爱敲代码的小杨.
✨专栏《Java SE语法》|《数据结构与算法》
❤️感谢大家点赞收藏⭐评论✍您的三连就是我持续更新的动力❤️
小杨水平有限欢迎各位大佬指点相互学习进步 文章目录 1. 设计背景2.要求3. 设计思路4. 代码演示4.1 Book类的实现4.2 OrderItem类实现4.3 Order类实现4.4 Main类 5. 整体效果测试 1. 设计背景
伴随互联网的蓬勃发展,网络购书系统作为电子商务的一种形式 正以其高效、低成本的优势逐步成为新兴的经营模式,互联网的用途也不再局限于信息的浏览和发布人们能够充分享受互联网带来的更多便利。网络购书系统正是适应了当今社会快节奏的生活,使顾客足不出户便可以方便、快捷、轻松地选购自己喜欢的图书。
2.要求
本案例要求使用所学知识编写一个基于控制台的购书系统 实现购书功能。程序输出所有图书的信息包括每本书的编号、书名、单价、库存。
顾客购书时根据提示输人图书编号选购需要的书并根据提示输人需要购买的书的数量。购买完毕输出顾客的订单信息包括订单号、订单明细、订单总额。
3. 设计思路
由题可知我们需要先创建3个类分别是书类、订单类以及订单中的订单信息购买的书名、购买的数量、书的单价——订单项类。 书类(Book) 属性书的编号、书名、书的价格、书的库存 订单类(Order) 属性订单号、订单总额、订单项数组 订单项类(OrderItem) 属性购买的数量、购买的书名、所购图书的价格
另外我们在系统中还需要将订单项里的内容添加到订单中还需要在订单中获取所购买的书的各项信息因此我们需要在订单类里构造以上这些方法。
4. 代码演示
4.1 Book类的实现
书籍类的属性有图书的编号书名、图书价格、图书库存 我们结合封装性将属性设置为private权限并提供相应的get方法和set方法空参构造器以及带有全部参数的构造器。代码实现如下
package book;// 图书类
public class Book {private String id;// 图书编号private String name;// 书名private double price;// 价格private int nums;// 库存public Book() {}public Book(String id, String name, double price, int nums) {this.id id;this.name name;this.price price;this.nums nums;}// get方法和set方法public String getId() {return id;}public void setId(String 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 getNums() {return nums;}public void setNums(int nums) {this.nums nums;}
}
4.2 OrderItem类实现
订单项类的属性有购买的书名购买书籍的数量书籍的价格我们结合封装性将属性设置为private权限并提供相应的get方法和set方法空参构造器以及带有全部参数的构造器。代码实现如下
package order;// 订单项类
public class OrderItem {private String name;// 购买的书名private int nums;// 购买的数量private double price;// 价格public OrderItem() {}public OrderItem(String name, int nums, double price) {this.name name;this.nums nums;this.price price;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getNums() {return nums;}public void setNums(int nums) {this.nums nums;}public double getPrice() {return price;}public void setPrice(double price) {this.price price;}
}
4.3 Order类实现
订单类的属性有订单号订单总价订单项数组(对添加的订单进行存储)
订单类主要提供添加订单项的方法以及打印订单信息的方法,具体代码实现如下
package order;// 订单类
public class Order {private String OrderId; // 订单号private double total; // 订单总价OrderItem[] items new OrderItem[100];public Order() {}public Order(String OrderId) {this.OrderId OrderId;}// 添加订单项的方法public void AddOrderItem(OrderItem item){// 在数组空的位置插入for (int i 0; i items.length; i) {// 找数组中空的位置插入if (items[i] null){// 当前位置为空items[i] item;return;}}}// 打印订单信息public void printOrder() {System.out.println();System.out.println(订单号: OrderId);System.out.println(书名\t\t单价\t\t数量);for (OrderItem item: items) {if (item ! null) {System.out.println(item.getName()\t\t item.getPrice() \t\t item.getNums());// 计算总价total total item.getPrice() * item.getNums();}}System.out.println(总价 total);}
}
4.4 Main类
此时我们所有的框架都已经搭建好了只需要在Main类中添加main方法进行测试即可代码如下
import book.Book;
import order.Order;
import order.OrderItem;import java.util.Scanner;public class Main {public static void main(String[] args) {Book[] books new Book[3];books[0] new Book(001,数据结构,59.80,20);books[1] new Book(002,程序设计,48.80,2);books[2] new Book(003,信息技术,25.4,12);Order order new Order(2023001);// 生成订单号Scanner input new Scanner(System.in);while (true) {// 打印订单信息System.out.println(编号\t\t书名\t\t\t单价\t\t库存\t);for (int i 0; i books.length; i) {System.out.println(books[i].getId() \t\t books[i].getName() \t\tbooks[i].getPrice() \t books[i].getNums());}System.out.println(请输入您要购买书的编号);String inputId input.next();System.out.println(请输入购买数量);int inputNum input.nextInt();switch (inputId) {case 001:if (inputNum books[0].getNums()){ // 购买的的数量大于库存System.out.println(库存不足请重新输入);System.out.println(当前库存为 books[0].getNums());break;}else {books[0].setNums(books[0].getNums() - inputNum);// 剩余库存//order.AddOrderItem(new OrderItem(books[0].getName(),inputNum,books[0].getPrice()));break;}case 002:if (inputNum books[1].getNums()){ // 购买的的数量大于库存System.out.println(库存不足请重新输入);System.out.println(当前库存为 books[1].getNums());break;}else {books[1].setNums(books[1].getNums() - inputNum);order.AddOrderItem(new OrderItem(books[1].getName(),inputNum,books[1].getPrice()));break;}case 003:if (inputNum books[2].getNums()){ // 购买的的数量大于库存System.out.println(库存不足请重新输入);System.out.println(当前库存为 books[2].getNums());break;}else {books[2].setNums(books[2].getNums() - inputNum);// 剩余库存order.AddOrderItem(new OrderItem(books[2].getName(),inputNum,books[2].getPrice()));break;}}System.out.println(是否继续购书请选择Yes/No);String next input.next();if (next.equals(No)){break;}}order.printOrder();}
}5. 整体效果测试