《Java SE编程365例》003: 我的电子书城
1、题目
编写一个Java程序,模拟顾客去书店选书、结算和买书的过程。
界面效果:
输出效果:
...
欢迎来到汉唐书城....
图书列表
图书编号 图书名称 图书价格 库存数量
------------------------------------------------------------
1 Java教程 30.6 30
2 JSP指南 42.1 40
3 SSM架构 47.3 15
------------------------------------------------------------
请输入图书编号选择图书:
1
书店管理员已经找到了《Java教程》的书。
书店管理员已经找到了《30.6》的书价格。
请输入购买图书的数量:
1
请继续购买图书...
请输入图书编号选择图书:
2
书店管理员已经找到了《JSP指南》的书。
书店管理员已经找到了《42.1》的书价格。
请输入购买图书的数量:
2
请继续购买图书...
请输入图书编号选择图书:
3
书店管理员已经找到了《SSM架构》的书。
书店管理员已经找到了《47.3》的书价格。
请输入购买图书的数量:
3
请继续购买图书...
您已经买了3种书
图书订单
图书订单编号:0001
图书名称 购买数量 图书单价
------------------------------------------------------------
Java教程 1 30.6
JSP指南 2 42.1
SSM架构 3 47.3
------------------------------------------------------------
订单总额:256.7Process finished with exit code 0
2、代码示例
图书:
public class Book {private String bookId;private String bookName;private Double price;private int storage;public Book(){}public String getBookId() {return bookId;}public void setBookId(String bookId) {this.bookId = bookId;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public int getStorage() {return storage;}public void setStorage(int storage) {this.storage = storage;}@Overridepublic String toString() {return "Book{" +"bookId='" + bookId + '\'' +", bookName='" + bookName + '\'' +", price=" + price +", storage=" + storage +'}';}
}
订单:
import java.util.Date;//订单
public class Order {private String orderId;private Double total;private Date date;private OrderItem[] items;public Order(){//限制只能买三本书this.items = new OrderItem[3];this.total = 0.0;}//显示订单明细public void showDetail(){System.out.println("图书订单");System.out.println("图书订单编号:" + this.orderId);System.out.println("图书名称\t购买数量\t图书单价");System.out.println("------------------------------------------------------------");for (OrderItem orderItem : items) {System.out.println(orderItem.getBookName() + "\t\t" + orderItem.getNum() + "\t\t" + orderItem.getPrice());}System.out.println("------------------------------------------------------------");}//计算总价格public void calcTotal(){for (OrderItem orderItem : items) {//System.out.println( orderItem );this.total += orderItem.getNum() * orderItem.getPrice();}System.out.println("订单总额:" + this.total);}public String getOrderId() {return orderId;}public void setOrderId(String orderId) {this.orderId = orderId;}public Double getTotal() {return total;}public void setTotal(Double total) {this.total = total;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public OrderItem[] getItems() {return items;}public void setItems(OrderItem[] items) {this.items = items;}
}
订单条目:
//订单项目
public class OrderItem {private String bookName;private double price;private int num;public OrderItem(){}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}@Overridepublic String toString() {return "OrderItem{" +"bookName='" + bookName + '\'' +", price=" + price +", num=" + num +'}';}
}
书店:
//书店
public class Shop {//书架private Book[] books;public Shop(){Book book1 = new Book();book1.setBookId("1");book1.setBookName("Java教程");book1.setPrice(30.6);book1.setStorage(30);Book book2 = new Book();book2.setBookId("2");book2.setBookName("JSP指南");book2.setPrice(42.1);book2.setStorage(40);Book book3 = new Book();book3.setBookId("3");book3.setBookName("SSM架构");book3.setPrice(47.3);book3.setStorage(15);this.books = new Book[3];books[0] = book1;books[1] = book2;books[2] = book3;}//显示书店的书public void show(){System.out.println("欢迎来到西安汉唐书城....");System.out.println("图书列表");System.out.println("图书编号\t\t\t图书名称\t\t\t图书价格\t\t\t库存数量");System.out.println("------------------------------------------------------------");for (Book book : books) {System.out.println( book.getBookId() + "\t\t\t\t" + book.getBookName() + "\t\t\t" + book.getPrice() + "\t\t\t" + book.getStorage() );}System.out.println("------------------------------------------------------------");}//根据图书编号查询书名public String findBookName(String bookId){String bookName = "";for (Book book : books) {if (book.getBookId().equals(bookId)){bookName = book.getBookName();break;}}System.out.println("书店管理员已经找到了《" + bookName + "》的书。");return bookName;}//根据图书编号查询书名public Double findBookPrice(String bookId){Double price = 0.0;for (Book book : books) {if (book.getBookId().equals(bookId)){price = book.getPrice();break;}}System.out.println("书店管理员已经找到了《" + price + "》的书价格。");return price;}}
购买场景:
import java.util.Date;
import java.util.Scanner;public class Client {public static void main(String[] args) {//扫描器Scanner scanner = new Scanner(System.in);//书店Shop shop = new Shop();shop.show();//买书Order order = new Order();order.setOrderId("0001");order.setDate( new Date() );for (int i = 0; i < order.getItems().length; i++) {//在每次购买的过程中产生一个订单条目对象OrderItem orderItem = new OrderItem();//书名System.out.println("请输入图书编号选择图书:");String bookId = scanner.next();//根据图书编号查询书名orderItem.setBookName(shop.findBookName(bookId));//单价orderItem.setPrice(shop.findBookPrice( bookId ) );//数量System.out.println("请输入购买图书的数量:");int num = 0;num = scanner.nextInt();orderItem.setNum(num);order.getItems()[i] = orderItem;System.out.println("请继续购买图书...");}System.out.println( "您已经买了" + order.getItems().length + "种书");//结算order.showDetail();order.calcTotal();}
}
《Java SE编程365例》003: 我的电子书城相关推荐
- Java经典编程300例 word 免费下载
Java经典编程300例 word 下载 其他Java全部资料 公号:纯洁的明依.回复 : 编程300例
- 汉诺塔问题java编程,Java经典编程300例之实例047 汉诺塔问题求解(递归)
实例说明 汉诺塔问题的描述如下:有A.B和C 3跟柱子,在A上从下往上按照从小到大的顺序放着64个圆盘,以B为中介,把盘子全部移动到C上.移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的 ...
- 目录——Java趣味编程100例
第1章 变幻多姿的图表( 教学视频:69分钟) 1 1.1 金字塔图案 1 1.2 九九乘法表 3 1.3 余弦曲线 5 1.4 奥运五环旗 10 1.5 杨辉三角 12 1.6 国际 ...
- java编程源代码_java经典编程300例源代码下载
java经典编程300例源代码是针对java编程的编程源代码.以基础知识为框架,介绍了各部分知识所对应的常用开发实例,并进行了透彻解代码解析和知识扩展4部分,每一部分都进行了细致的说明.__java经 ...
- Java SE 8新特性导览:使用Lambda Expression进行函数式编程
" Java SE 8新功能浏览 "系列的这篇文章将深入了解Lambda表达式 . 我将向您展示Lambda表达式的几种不同用法. 它们都具有功能接口的共同实现. 我将解释编译器如 ...
- Java SE day21_网络编程
Java SE day21_网络编程 如果一个类没有构造方法: 案例(UDP的Socket) 案例(键盘输入接受) 案例(多线程聊天) TCP连接 案例(阻塞) 案例(键盘录入-输出控制台) 案例(多 ...
- Java SE 网络编程
Java SE 网络编程 目录 Java SE 网络编程 1.计算机网络概念 2.网络通讯协议 2.2.通讯接口 3.网络分层 3.2.OSI七层协议|TCP/IP五层协议 3.3 . 封装 3.4. ...
- java集合到线程的考试_成都汇智动力-Java SE考试编程题总结
原标题:成都汇智动力-Java SE考试编程题总结 线程和进程的区别: (1)进程是运行中的程序,拥有自己独立的内存空间和资源; (2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; ...
- JAVA SE 语言编程-杨千锋-专题视频课程
JAVA SE 语言编程-3572人已学习 课程介绍 第一周: 内容包括,Java环境搭建,变量,数据类型,二进制,if/else,switch,for,while,do while等 ...
- 一个编程小白的Java SE学习日志 Ⅵ——继承【极客BOY-米奇】
文章目录 前言(转载请说明作者!)3.25~3.29编写 自我问答 任务导引:电子宠物Beta 任务UML图 继承 什么是继承? 如何实现继承? 案例 子类可以继承父类所有的成员和方法? 继承的特点 ...
最新文章
- 基于地平面的单目视觉里程计绝对尺度估计
- 计算机加入到域的注意事项
- IOS学习笔记之十七 (NSDate、NSDateFormatter、NSCalendar、NSDateComponents、NSTimer)
- vue命令行错误处理
- 小米MIX 4真机亮屏谍照曝光:四边框极窄,震撼
- 科大讯飞交通超脑荣获 2019 年大数据应用最佳实践案例 TOP10
- 基于名字自动化之原理(1)
- bzoj 1171 并查集优化顺序枚举 | 线段树套单调队列
- Vue生成条形码jsbarcode
- hp服务器修复计算机,HP(惠普)服务器 修复 Intelligent Provisioning
- Editplus 使用技巧大全
- Block-scoped declarations (let, const, function, class) not yet supported outs报错解决
- php短信接口开发demo,php短信接口DEMO-云信互联PaaS平台
- GPU显存占满但利用率却很低
- Pd虚拟机安装系统提示 “网络初始化失败 操作失败 ”的解决方案
- 竞价推广(SEM)是什么
- 网络切片技术缺点_什么是网络切片?
- Html标签——table表格
- 当年明月 Vs. 阎崇年
- 计算机等级考试基础部分试题,计算机等级考试基础部分试题