学习日记Day3:购物车的实现

这个博客展示了如何使用Java Swing构建一个简单的购物车系统。实现了购物车的基本架构,包括页面设计,商品添加(首次及继续购买)以及数据显示。代码中使用了接口类、接口实现类和实体类来协同工作,确保购物车状态的正确维护。当点击'继续购买'按钮时,会关闭当前购物车窗口并打开新的商品选择窗口。
摘要由CSDN通过智能技术生成

1、实现购物车的基本架构,对购物车进行简单的页面设计

2、实现第一次商品添加,能够在购物车窗体显现出来

3、实现继续购买的功能,使购物车能持续添加商品

代码要配合接口类、接口实现类、实体类等配合使用,无法单独编译出来


package com.yc.frame;

import java.awt.*;
import java.awt.event.*;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import com.yc.entire.CartItem;
import com.yc.entire.Shop;
import com.yc.entire.User;
public class ShopCartFrame extends JFrame {
	User loginUser;
	Shop shop;
	public static Map<String,CartItem> carts=new Hashtable<String,CartItem>();//购物车
	//static保证购物车不改变;否则new一次改变一次
	DefaultTableModel dtm;
	JTable table;
	String []heads=new String[] {"ISBN","商品名称","金额","购买数量","总金额"};//设计页面
	Object [][]datas;//定义一个二维数组,使其能存放购物车页面的信息
	JScrollPane sp;//滚动面板 用来放置购物车表
	
	JButton  btnConinue1=new JButton("继续购买");
	JButton  btnChechout=new JButton("支付");
	
	Container cont=this.getContentPane();
	//private String n;
	
	
	public ShopCartFrame(User loginUser,Shop shop,int num) {//实现购物车窗体
		super("购物车窗体");
		this.loginUser=loginUser;
		this.shop=shop;
		
		
		
		//if() {
			if(carts.containsKey(shop.getIsbn())) {
				carts.put(shop.getIsbn(),new CartItem(shop,carts.get(shop.getIsbn()).getNum()+num));
			}else
				carts.put(shop.getIsbn(),new CartItem(shop,num));
			
		//}else
			//JOptionPane.showConfirmDialog(cont,"请输入购买数量");
			
		
		//下面是把购物车内容放到窗体上
		datas=new Object[carts.size()][5];//实例化二维数组 用来存放购物车的内容
		//遍历Map取到购物车的内容 放到二维数组里
		//首先得到所有键
		Set<String> isbns=carts.keySet();
		Iterator<String> it=isbns.iterator();
		int i=0;
		while(it.hasNext()) {
			String isbn=it.next();//得到isbn
			CartItem ci=carts.get(isbn);//通过键得到值 购物车明细
			Shop shop1=ci.getShop();
			int num1=ci.getNum();
			datas[i][0]=isbn;
			datas[i][1]=shop1.getShopName();
			datas[i][2]=shop1.getPrice();
			datas[i][3]=num1;
			datas[i][4]=num1*shop.getPrice();
			i++;
			
		}
		dtm=new DefaultTableModel(datas,heads);//表格模型实例化对象
		table=new JTable(dtm);
		sp=new JScrollPane(table);
		cont.add(sp);//将滚动面板放到窗体上
		
		
		
		JPanel p=new JPanel();
		p.add(btnConinue1);
		btnConinue1.addActionListener(new ActionListener() {//定义一个事件监听器
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				AllShopsFrame asf=new AllShopsFrame(loginUser);
				ShopCartFrame.this.dispose();//关闭当前窗体
			}
		});
		
		p.add(btnChechout);
		cont.add(p,BorderLayout.SOUTH);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体
		this.setSize(700,400);
		this.setLocation(60, 60);
		this.setVisible(true);
	}
}

/**
*@auther:
*@Time:2022年6月9日 上午9:11:40
*/

效果图

 

点击继续购买:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值