Java初学者,哪位友友能帮我设计一个简单的类似超市购物车的程序,参考一下~谢谢!

Java初学者,哪位友友能帮我设计一个简单的类似超市购物车的程序,参考一下~谢谢!,第1张

以前学习java又做个实例,挺值得学习的。

1首先我先列出我们所需要的java类结构。

1)Databasejava --------- 模拟存储商品的数据库。

2)McBeanjava ------------ 商品实体类,一个普通的javabean,里面有商品的基本属性。

3)OrderItemBeanjava --- 订单表。

4)ShoppingCarjava ------ 这个就是最主要的购物车,当然比较简单。

5)TestShoppingCarjava --- 这个是测试类。

2下面贴出具体代码并带关键注释。

---Databasejava

public class Database {

/采用Map存储商品数据,为什么呢?我觉得这个问题你自己需要想下。

Integer 为Map的key值,McBean为Map的value值。

/

private static Map<Integer, McBean> data = new HashMap<Integer, McBean>();

public Database() {

McBean bean = new McBean();

beansetId(1);

beansetName("地瓜");

beansetPrice(20);

beansetInstuction("新鲜的地瓜");

dataput(1, bean);//把商品放入Map

bean = new McBean();

beansetId(2);

beansetName("土豆");

beansetPrice(12);

beansetInstuction("又好又大的土豆");

dataput(2, bean);//把商品放入Map

bean = new McBean();

beansetId(3);

beansetName("丝瓜");

beansetPrice(15);

beansetInstuction("本地丝瓜");

dataput(3, bean);//把商品放入Map

}

public void setMcBean(McBean mcBean){

dataput(mcBeangetId(),mcBean);

}

public McBean getMcBean(int nid) {

return dataget(nid);

}

}

---McBeanjava

public class McBean {

private int id;//商品编号

private String name;//商品名

private double price;//商品价格

private String instuction;//商品说明

public int getId() {

return id;

}

public void setId(int id) {

thisid = id;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

thisprice = price;

}

public String getInstuction() {

return instuction;

}

public void setInstuction(String instuction) {

thisinstuction = instuction;

}

}

---ShoppingCarjava

public class ShoppingCar {

private double totalPrice; // 购物车所有商品总价格

private int totalCount; // 购物车所有商品数量

private Map<Integer, OrderItemBean> itemMap; // 商品编号与订单项的键值对

public ShoppingCar() {

itemMap = new HashMap<Integer, OrderItemBean>();

}

public void buy(int nid) {

OrderItemBean order = itemMapget(nid);

McBean mb;

if (order == null) {

mb = new Database()getMcBean(nid);

order = new OrderItemBean(mb, 1);

itemMapput(nid, order);

update(nid, 1);

} else {

ordersetCount(ordergetCount() + 1);

update(nid, 1);

}

}

public void delete(int nid) {

OrderItemBean delorder = itemMapremove(nid);

totalCount = totalCount - delordergetCount();

totalPrice = totalPrice - delordergetThing()getPrice() delordergetCount();

}

public void update(int nid, int count) {

OrderItemBean updorder = itemMapget(nid);

totalCount = totalCount + count;

totalPrice = totalPrice + updordergetThing()getPrice() count;

}

public void clear() {

itemMapclear();

totalCount = 0;

totalPrice = 00;

}

public void show() {

DecimalFormat df = new DecimalFormat("¤###");

Systemoutprintln("商品编号\t商品名称\t单价\t购买数量\t总价");

Set set = itemMapkeySet();

Iterator it = setiterator();

while (ithasNext()) {

OrderItemBean order = itemMapget(itnext());

Systemoutprintln(ordergetThing()getId() + "\t"

+ ordergetThing()getName() + "\t"

+ dfformat(ordergetThing()getPrice()) + "\t" + ordergetCount()

+ "\t" + dfformat(ordergetCount() ordergetThing()getPrice()));

}

Systemoutprintln("合计: 总数量: " + dfformat(totalCount) + " 总价格: " + dfformat(totalPrice));

Systemoutprintln("");

}

}

---OrderItemBeanjava

public class OrderItemBean {

private McBean thing;//商品的实体

private int count;//商品的数量

public OrderItemBean(McBean thing, int count) {

super();

thisthing = thing;

thiscount = count;

}

public McBean getThing() {

return thing;

}

public void setThing(McBean thing) {

thisthing = thing;

}

public int getCount() {

return count;

}

public void setCount(int count) {

thiscount = count;

}

}

---TestShoppingCarjava

package comshop;

public class TestShoppingCar {

public static void main(String[] args) {

ShoppingCar s = new ShoppingCar();

sbuy(1);//购买商品编号1的商品

sbuy(1);

sbuy(2);

sbuy(3);

sbuy(1);

sshow();//显示购物车的信息

sdelete(1);//删除商品编号为1的商品

sshow();

sclear();

sshow();

}

}

3打印输出结果

商品编号 商品名称 单价 购买数量 总价

1 地瓜 ¥2 3 ¥6

2 土豆 ¥12 1 ¥12

3 丝瓜 ¥15 1 ¥15

合计: 总数量: ¥5 总价格: ¥87

商品编号 商品名称 单价 购买数量 总价

2 土豆 ¥12 1 ¥12

3 丝瓜 ¥15 1 ¥15

合计: 总数量: ¥2 总价格: ¥27

商品编号 商品名称 单价 购买数量 总价

合计: 总数量: ¥0 总价格: ¥0

4打字太累了,比较匆忙,但是主要靠你自己领会。哪里不清楚再提出来。

首先这个需求很奇怪。

购物者买的东西 应该在超市里选的才对。

那么意思就是 万一选的东西 没库存了怎么办?

2种解决方法:

1:每次购买前或者选择的时候,都去后台查询库存,然后提示,这种效率低。但也行就是了

2:在进入这个商品详情页时候查询本商品库存,为0 那就提示没库存了。

import javautilScanner;

//看这样的行吗?

public class StoreCharge {

    public static void main(String[] args) {

     Scanner sc = new Scanner(Systemin);

     Systemoutprintln("输入应付金额:");

     double x = scnextDouble();

        Price p1 = ampayable(x);

        Systemoutprintln(p1toString());

        Systemoutprintln("输入实付金额:");

        double y = scnextDouble();

        Price p2 = ampaid(y);

        Systemoutprintln(p2toString());

        Systemoutprintln("找零:"+charge(p1,p2)toString());

        charge(p1,p2);

         

    }

    public static Price charge(Price p1,Price p2){//p1总货价 p2收款

        int c,b;

        if(p2conner<p1conner){

            b = p2conner+10-p1conner;

            p2element = p2element-1;

        }else

            b = p2conner-p1conner;

        c = p2element - p1element;

        return new Price(c,b);        

    }

    public static Price ampayable(double x){//应付金额

     Price a = new Price();

     aelement = (int)x;

     aconner  = (int)(x10 -((int)x)10);

     return a;

    }

    public static Price ampaid(double x){//实付金额

     Price a = new Price();

     aelement = (int)x;

     aconner  = (int)(x10 -((int)x)10);

     return a;

    }

 

}

class Price{

    int element;//元

    int conner;//角

    public Price(){}

    public Price(int e,int c){

        element = e;

        conner = c;

    }

    public String toString(){

     return element+"元"+conner+"角";

    }

}

我写过两次订单结算,不过都是aspnet下的,但是应该差不多吧订单结算是最后的步骤,提交订单之后需要做结算,实际上就是收钱嘛

传统来讲此时需要一个支付接口,比如说支付宝财付通快钱 网银在线之类的,他们提供接口,我们按照他们说明文档来实现就好重要的是交易记录哦!!提交订单后需要交易日志(不能从字面意义上来理解"交易",实际上跟别人讨价还价也是交易的一种不是嘛)转到接口前需要日志,接口返回信息需要日志(表结构差不多啦)这些日志,方便以后退款或者查看状态使用;

不传统来讲除支付接口外,要考虑购物网站个人钱包支付或者线下汇款之类的 建议使用策略模式

额 不知道说啥了缕一缕在纸上构思下就差不多 但一定要考虑好安全性

以上就是关于Java初学者,哪位友友能帮我设计一个简单的类似超市购物车的程序,参考一下~谢谢!全部的内容,包括:Java初学者,哪位友友能帮我设计一个简单的类似超市购物车的程序,参考一下~谢谢!、用JAVA实现超市购物功能,购物时如果购物者所需商品在超市中有则提示购物者买、如何用Java语言编写购物结算系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10218350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存