java_1126_购物车

直接一个文件页(除了Goods和Price两个类)无封装解决需求功能粗暴版

源代码如下:

Goods类:

package org.jsoft.test2;

class Goods {
    private String name;

    Goods(String name) {
        this.name = name;

    }

    String getName() {
        return name;
    }

    void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return this.name;
    }

}

Price类:

package org.jsoft.test2;

 class Price {
    private double price;

    Price ( double price) {
        this.price = price;
    }

    double getPrice() {
        return price;
    }

    void setPrice(double price) {
        this.price = price;
    }

    public String toString() {
    
        return this.price+"" ;//double+String类型转换成String类型,由此方便返回price数值
    }
}
 

 

主要实现类ShoppingCar_List_Version:

package org.jsoft.test2;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class ShoppingCar_List_Version {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int number;// 下面将要用到的商品的对应号码
        double amount;// 要购买对应商品的数量
        double sum = 0;// 购买完成后,对应当前购物车中所有商品所有商品的金额
        List l1 = new ArrayList();// 创建集合的List接口类型的实现类ArrayList类l1(L1),用以储存Goods类的对象(即为各个商品的名称)
        List l2 = new ArrayList();// 创建适合的List接口类型的实现类ArrayList类l2(L2),用以储存Price类的对象(即为各类商品名称所对应的单价)
        Goods g[] = new Goods[11]; // 首先创建Goods类对象数组并对其大小进行初始化,此次购物市场里将有十一类商品,则长度初始化为11
        g[0] = new Goods("苹果");// 对其进行逐一的动态赋值
        g[1] = new Goods("香蕉");
        g[2] = new Goods("草莓");
        g[3] = new Goods("鸡肉");
        g[4] = new Goods("牛肉");
        g[5] = new Goods("羊肉");
        g[6] = new Goods("面包");
        g[7] = new Goods("牛奶");
        g[8] = new Goods("奶酪");
        g[9] = new Goods("啤酒");
        g[10] = new Goods("红酒");
        Price p[] = new Price[11];// 同理
        p[0] = new Price(12);// 同理,此处为对应的单价
        p[1] = new Price(6);
        p[2] = new Price(20);
        p[3] = new Price(40);
        p[4] = new Price(50);
        p[5] = new Price(70);
        p[6] = new Price(10);
        p[7] = new Price(12);
        p[8] = new Price(20);
        p[9] = new Price(6);
        p[10] = new Price(188);
        Map m1 = new LinkedHashMap();// 创建Map接口的实现类LinkedHashMap(此处LinkedHashMap与HashMap不同的地方为,前者按存入对象的先后顺序进行排序,后者无序)
                                        // 将在下面进行将Goods类和Price类的对象进行键、值对应的存入操作,而且将根据用户的输入所需要的商品的数量amount进行对应存入value
        System.out
                .println("*********************************************************");
        System.out.println("欢迎来到57号超市,请问您有什么需要吗?");
        System.out
                .println("*********************************************************");

        while (true) {// 此处为了用户能持续进行多种操作,使用死循环
            System.out.println("");// 空行
            System.out.println("1-开始购物/继续购物" + '\n' + "2-查看购物车" + '\n'
                    + "3-清空购物车" + '\n' + "4-结算付款");

            int i = in.nextInt();// 接收用户的选项

            if (i > 4 || i < 1) {// 异常输入处理
                System.out.println("输入有误,请您重新输入选择:");

            } else if (i == 1) {// 购物开始
                System.out
                        .println("*********************************************************");
                System.out.println("");
                System.out.println("商品名称" + "                        "
                        + "单价(元/KG/瓶/包)");
                for (int i1 = 0; i1 < g.length; i1++) {// 将先前创建的各种对象按数字顺序对应存入l1和l2
                    l1.add(g[i1]);// 此二者的[i1]数值相同即为商品名称和单价的对应
                    l2.add(p[i1]);
                    System.out.println((i1 + 1) + "-" + l1.get(i1)
                            + "————————————————" + l2.get(i1));// 商品对应号码、商品名称以及商品单价的遍历
                }

                System.out.println("请您输入需要商品的号码以及购买数量:");// 顾客购物操作开始
                number = in.nextInt();// 用以接收储存顾客需要的商品
                amount = in.nextDouble();// 用以接收储存顾客需要的数量
                switch (number) {// number即为顾客对商品进行的选择,由于商品种类较多,所以此处使用switch语句进行筛选和处理
                case 1:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());// 输出确认顾客自身的选择,以及选择的商品种类、数量以及所需要支付的金额
                    sum += amount * p[number - 1].getPrice();// 使用sum对当前购物车金额进行储存
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);// 此处为重点,使用m1对其进行key-value的对应储存,后者的value不仅仅是单价而是单价加上当前顾客的商品选择的数量
                    break;// 跳出
                // 下列case仅为不同的商品的种类,其余同理
                case 2:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 3:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 4:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 5:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 6:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 7:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 8:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 9:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "       " + amount);
                    break;
                case 10:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "      " + amount);
                    break;
                case 11:
                    System.out.print("您选择的商品是:" + l1.get(number - 1) + "单价为:"
                            + l2.get(number - 1) + '\t' + "总额为:" + amount
                            * p[number - 1].getPrice());
                    sum += amount * p[number - 1].getPrice();
                    m1.put(g[number - 1], p[number - 1] + "      " + amount);
                    break;
                default:
                    System.out.println("输入有误,请您重新输入");// 异常不在选择范围内输入的处理
                    break;

                }
                System.out.println('\n' + "您还要进行的操作是:");// 提示顾客可以继续进行多种选择

            } else if (i == 2) {// 查看购物车内先前挑选好的商品种类、对应单价以及所选择好的数量
                System.out.println("您的购物车中放置的商品情况如下:");
                System.out.println("#################################");
                System.out.println("商品" + "        " + "单价" + "   "
                        + "数量(/KG/瓶/包)");
                Iterator it = m1.entrySet().iterator();// 使用Iterator和entrySet()对先前顾客选择好的存入购物车(m1)中的key(商品种类)、value(商品单价和顾客选择的需要的数量)进行遍历
                while (it.hasNext()) {//此处为遍历具体实行语句
                    Entry e = (Entry) it.next();
                    System.out.println(e.getKey() + "————" + e.getValue());
                }//e.getKey()即为商品的种类,e.getValue()却不仅仅是商品对应的单价,还加上了顾客选择的商品的数量
                System.out.println("金额为:" + sum);//再次输出购物车内商品的总金额
                System.out.println("#################################");
                System.out.println('\n' + "您还要进行的操作是:");
            } else if (i == 3) {//此处为清空购物车操作
                m1.clear();//m1即为购物车,清空购物车即为清空m1.内的所有,移除所有的key-value
                sum=0;//同时对购物车内的总金额进行归零操作;
            } else {//此处即为顾客输入i==4 ,结算付款
                if (sum != 0) {
                    System.out.println("你应付的金额是:" + sum);
                    System.out.println("请您选择支付方式:" + '\n' + "1-支付宝支付" + '\n'
                            + "2-微信支付" + '\n' + "3-现金支付");
                    int pay = in.nextInt();
                    System.out.println("支付完成,期待您的再次光临!再见~~~");
                    break;
                } else {//如果顾客购物车为空,提醒顾客不需要付款
                    System.out.println("您尚未购物,不需要结算付款,请您在购物后再进行结算付款操作");
                }
            
            }

        }

    }
}
 

 

 

测试效果图如下:

完整购物流程:

212759_pa5P_3715016.png

212822_2E8a_3715016.png

212852_3wdt_3715016.png212938_UZmQ_3715016.png

213001_wE37_3715016.png

 

 

清空购物车操作以及异常输入规避:

 

 

 

213315_45Vl_3715016.png

213331_LuoT_3715016.png

213344_247b_3715016.png

 

两个文件页封装版(学生感觉没有处理好,其实就是把主函数实现部分换到父类,但最终还是实现效果和上面一个文件页没有封装的实现效果一样)

源代码图:

Goods类和Price类不变

子类页:

220330_ljD8_3715016.png

父类页:

220347_ebKZ_3715016.png

220408_wllj_3715016.png

220420_pYyd_3715016.png

220433_LbQp_3715016.png

220455_UcTc_3715016.png

220505_FOz4_3715016.png

 

 

转载于:https://my.oschina.net/u/3715016/blog/1581817

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值