一.标准JavaBean
JavaBean:
- JavaBean也可以称为实体类,其对象可以用于在程序中封装数据
- 用来描述一类事物的类,专业叫做:JavaBean类。
- 在JavaBean类中,是不写main方法的。
- 在以前,编写main方法的类,叫做测试类。
- 我们可以在测试类中创建JavaBean类的对象并进行赋值调用。
标准JavaBean必须满足如下书写要求:
- 成员变量使用private修饰。
- 提供成员变量对应的setter(),getter()方法。
- 必须提供一个无参构造器,有参数构造器是可写可不写的。
二.使用标准JavaBean模拟购物车模块
// 定义商品类,用于后期创建商品对象
public class Goods {
// 1.成员变量使用private修饰
private int id; // 编号
private String name; // 名称
private double price; // 价格
private int buyNumber; // 购买数量
// 2.必须提供一个无参构造器
// 无参构造器
public Goods(){
}
// 有参构造器
public Goods(int id,String name,double price,int buyNumber){
this.id = id;
this.name = name;
this.price = price;
this.buyNumber = buyNumber;
}
// 3.提供成员变量对应的setter,getter方法
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setPrice(double price){
this.price = price;
}
public double getPrice(){
return price;
}
public void setBuyNumber(int buyNumber){
this.buyNumber = buyNumber;
}
public int getBuyNumber(){
return buyNumber;
}
}
import java.util.Scanner;
public class ShopCarTest {
public static void main(String[] args) {
// 1.定义商品类,用于后期创建商品对象
// 2.定义购物车对象,使用一个数组表示
Goods[] shopCar = new Goods[100];
// 3.搭建操作架构
while (true) {
System.out.println("请您选择如下命令进行操作:");
System.out.println("添加商品到购物车:add");
System.out.println("查询购物车商品展示:query");
System.out.println("修改商品购买数量:update");
System.out.println("结算商品购买金额:pay");
Scanner sc = new Scanner(System.in);
System.out.println("请您输入命令:");
String command = sc.next();
switch (command) {
case "add":
addGoods(shopCar, sc);
break; // 结束当前所在switch分支的执行
case "query":
queryGoods(shopCar);
break;
case "update":
updateGoods(shopCar,sc);
break;
case "pay":
payGoods(shopCar);
break;
default:
System.out.println("您输入的命令有误~~~");
}
}
}
/** 1.
* 添加商品到购物车的功能
* @param shopCar:存放商品的购物车数组
* @param sc:扫描器对象
*/
public static void addGoods(Goods[] shopCar, Scanner sc) {
// 1.录入用户购买商品的信息
System.out.println("请您输入购买商品的编号(不重复):");
int id = sc.nextInt();
System.out.println("请您输入购买商品的名称:");
String name = sc.next();
System.out.println("请您输入购买商品的价格:");
double price = sc.nextDouble();
System.out.println("请您输入商品的购买数量:");
int buyNumber = sc.nextInt();
// 2.把这个商品的信息封装成一个对象
Goods g = new Goods();
g.setId(id);
g.setName(name);
g.setPrice(price);
g.setBuyNumber(buyNumber);
// 3.把这个商品对象添加到购物车数组中去
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] == null) { // 此位置没有元素存入
shopCar[i] = g;
break; // 跳出并结束当前for循环,因为商品已经成功存入了,不需要再找了
}
}
System.out.println("您的商品:" + g.getName() + "添加到购物车完成!");
}
/** 2.
* 查询购物车中的商品对象信息,并展示出来
* @param shopCar:传进来的购物车数组
*/
public static void queryGoods(Goods[] shopCar) {
System.out.println("=============查询购物车信息如下============");
System.out.println("编号\t\t名称\t\t\t价格\t\t购买数量");
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null) { // 商品对象不为空,展示这个商品对象
System.out.println(g.getId() + "\t\t" + g.getName() + "\t\t" + g.getPrice() + "\t\t" + g.getBuyNumber());
} else { // 商品对象为空,遍历结束
break; // 遍历结束,跳出并结束当前for循环
}
}
}
/** 3.
* 修改购物车商品购买数量的方法
* @param shopCar:传进来的购物车数组
* @param sc:扫描器对象
*/
public static void updateGoods(Goods[] shopCar, Scanner sc) {
// 让用户输入要修改商品的id,根据商品的id查询出要修改的商品对象
while (true) {
System.out.println("请您输入要修改商品的id:");
int id = sc.nextInt();
Goods g = getGoodsById(shopCar,id);
if(g == null){
// 没有该商品
System.out.println("对不起,没有购买该商品!");
}else{
// 说明存在该商品对象,可以修改它了
System.out.println("请您输入" + g.getName() + "的最新购买数量:");
int buyNumber = sc.nextInt();
g.setBuyNumber(buyNumber);
System.out.println("修改完成!");
queryGoods(shopCar);
break; // 跳出并结束当前死循环
}
}
}
/** 4.
* 根据商品的id查询出商品对象
* @param shopCar:封装商品对象的购物车数组
* @param id:要查询的商品id
* @return:返回查询出的商品对象
*/
public static Goods getGoodsById(Goods[] shopCar, int id) {
for(int i = 0;i < shopCar.length;i++){
Goods g = shopCar[i];
if(g.getId() == id){
return g;
}
}
return null;
}
/** 5.
* 结算商品购买金额的方法
* @param shopCar:封装商品的购物车数组
*/
public static void payGoods(Goods[] shopCar){
queryGoods(shopCar);
// 1.定义一个求和变量累加金额
double money = 0;
// 2.遍历数组,累加单价 * 购买数量
for(int i = 0;i < shopCar.length;i++){
Goods g = shopCar[i];
if(g != null){
money += g.getPrice() * g.getBuyNumber();
}else{
break; // 商品为空,跳出并结束当前for循环
}
}
System.out.println("订单总金额为:" + money + "元!");
}
}