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

Python011

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

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

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

1)Database.java --------- 模拟存储商品的数据库。

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

3)OrderItemBean.java --- 订单表。

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

5)TestShoppingCar.java --- 这个是测试类。

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

---Database.java

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()

bean.setId(1)

bean.setName("地瓜")

bean.setPrice(2.0)

bean.setInstuction("新鲜的地瓜")

data.put(1, bean)//把商品放入Map

bean = new McBean()

bean.setId(2)

bean.setName("土豆")

bean.setPrice(1.2)

bean.setInstuction("又好又大的土豆")

data.put(2, bean)//把商品放入Map

bean = new McBean()

bean.setId(3)

bean.setName("丝瓜")

bean.setPrice(1.5)

bean.setInstuction("本地丝瓜")

data.put(3, bean)//把商品放入Map

}

public void setMcBean(McBean mcBean){

data.put(mcBean.getId(),mcBean)

}

public McBean getMcBean(int nid) {

return data.get(nid)

}

}

---McBean.java

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) {

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 String getInstuction() {

return instuction

}

public void setInstuction(String instuction) {

this.instuction = instuction

}

}

---ShoppingCar.java

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 = itemMap.get(nid)

McBean mb

if (order == null) {

mb = new Database().getMcBean(nid)

order = new OrderItemBean(mb, 1)

itemMap.put(nid, order)

update(nid, 1)

} else {

order.setCount(order.getCount() + 1)

update(nid, 1)

}

}

public void delete(int nid) {

OrderItemBean delorder = itemMap.remove(nid)

totalCount = totalCount - delorder.getCount()

totalPrice = totalPrice - delorder.getThing().getPrice() * delorder.getCount()

}

public void update(int nid, int count) {

OrderItemBean updorder = itemMap.get(nid)

totalCount = totalCount + count

totalPrice = totalPrice + updorder.getThing().getPrice() * count

}

public void clear() {

itemMap.clear()

totalCount = 0

totalPrice = 0.0

}

public void show() {

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

System.out.println("商品编号\t商品名称\t单价\t购买数量\t总价")

Set set = itemMap.keySet()

Iterator it = set.iterator()

while (it.hasNext()) {

OrderItemBean order = itemMap.get(it.next())

System.out.println(order.getThing().getId() + "\t"

+ order.getThing().getName() + "\t"

+ df.format(order.getThing().getPrice()) + "\t" + order.getCount()

+ "\t" + df.format(order.getCount() * order.getThing().getPrice()))

}

System.out.println("合计: 总数量: " + df.format(totalCount) + " 总价格: " + df.format(totalPrice))

System.out.println("**********************************************")

}

}

---OrderItemBean.java

public class OrderItemBean {

private McBean thing//商品的实体

private int count//商品的数量

public OrderItemBean(McBean thing, int count) {

super()

this.thing = thing

this.count = count

}

public McBean getThing() {

return thing

}

public void setThing(McBean thing) {

this.thing = thing

}

public int getCount() {

return count

}

public void setCount(int count) {

this.count = count

}

}

---TestShoppingCar.java

package com.shop

public class TestShoppingCar {

public static void main(String[] args) {

ShoppingCar s = new ShoppingCar()

s.buy(1)//购买商品编号1的商品

s.buy(1)

s.buy(2)

s.buy(3)

s.buy(1)

s.show()//显示购物车的信息

s.delete(1)//删除商品编号为1的商品

s.show()

s.clear()

s.show()

}

}

3.打印输出结果

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

1 地瓜 ¥2 3 ¥6

2 土豆 ¥1.2 1 ¥1.2

3 丝瓜 ¥1.5 1 ¥1.5

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

**********************************************

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

2 土豆 ¥1.2 1 ¥1.2

3 丝瓜 ¥1.5 1 ¥1.5

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

**********************************************

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

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

**********************************************

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

import java.awt.*

import java.awt.event.*

class ShopFrame extends Frame implements ActionListener

{ Label label1,label2,label3,label4

Button button1,button2,button3,button4,button5

TextArea text

Panel panel1,panel2

static float sum=0.0f

ShopFrame(String s)

{ super(s)

setLayout(new BorderLayout())

label1=new Label("面纸:3元",Label.LEFT)

label2=new Label("钢笔:5元",Label.LEFT)

label3=new Label("书:10元",Label.LEFT)

label4=new Label("袜子:8元",Label.LEFT)

button1=new Button("加入购物车")

button2=new Button("加入购物车")

button3=new Button("加入购物车")

button4=new Button("加入购物车")

button5=new Button("查看购物车")

text=new TextArea("商品有:"+"\n",5,10)

text.setEditable(false)

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{ System.exit(0)

}

}

)

button1.addActionListener(this)

button2.addActionListener(this)

button3.addActionListener(this)

button4.addActionListener(this)

button5.addActionListener(this)

panel1=new Panel()

panel2=new Panel()

panel1.add(label1)

panel1.add(button1)

panel1.add(label2)

panel1.add(button2)

panel1.add(label3)

panel1.add(button3)

panel1.add(label4)

panel1.add(button4)

panel2.setLayout(new BorderLayout())

panel2.add(button5,BorderLayout.NORTH)

panel2.add(text,BorderLayout.SOUTH)

this.add(panel1,BorderLayout.CENTER)

this.add(panel2,BorderLayout.SOUTH)

setBounds(100,100,350,250)

setVisible(true)

validate()

}

public void actionPerformed(ActionEvent e)

{ if(e.getSource()==button1)

{ text.append("一个面纸、")

sum=sum+3

}

else if(e.getSource()==button2)

{ text.append("一只钢笔、")

sum=sum+5

}

else if(e.getSource()==button3)

{ text.append("一本书、")

sum=sum+10

}

else if(e.getSource()==button4)

{ text.append("一双袜子、")

sum=sum+8

}

else if(e.getSource()==button5)

{

text.append("\n"+"总价为:"+"\n"+sum)

}

}

}

public class Shopping {

public static void main(String[] args) {

new ShopFrame("购物车")

}

}

我没用Swing可能显示不出来你的效果。不满意得话我在给你编一个。