1. 程式人生 > >用java程式碼寫一個簡單的網上購物車程式

用java程式碼寫一個簡單的網上購物車程式

需求:1、寫一個商品類,有商品編號、商品名稱、商品分類、商品單價屬性。2、寫一個商品條目資訊類,有商品和數量兩個屬性,有商品總價格方法。

3、寫一個購物車類,有新增商品方法、檢視訂單資訊,刪除商品,修改商品,清空購物車,求購物車中所有商品總金額方法。4、寫一個測試類,測試上述方法。

商品類:

public class Product {
	private int productId;// 商品編號
	private String productName;// 商品名稱
	private String category;// 商品分類
	private double price;// 單價

	public Product() {// 無參構造
		super();
	}

	public Product(int productId, String productName, String category,
			double price) {
		super();
		this.productId = productId;
		this.productName = productName;
		this.category = category;
		this.price = price;
	}

	public String toString() {
		return "Product [productId=" + productId + ", productName="
				+ productName + ", category=" + category + ", price=" + price
				+ "]";
	}

	public int getProductId() {
		return productId;
	}

	public void setProductId(int productId) {
		this.productId = productId;
	}

	public String getProductName() {
		return productName;
	}

	public void setProductName(String productName) {
		this.productName = productName;
	}

	public String getCategory() {
		return category;
	}

	public void setCategory(String category) {
		this.category = category;
	}

	public double getPrice() {
		return price;
	}

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

}
商品條目資訊類:

public class ProductItem {
	private Product product;//購買的商品
	private int count;//商品數量
	public double totalMoney(){//小計
		double price=product.getPrice();//獲取商品單價
		return price*count;
	}
	
	public ProductItem() {
		super();
	}

	public ProductItem(Product product, int count) {
		super();
		this.product = product;
		this.count = count;
	}

	public Product getProduct() {
		return product;
	}
	public void setProduct(Product product) {
		this.product = product;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	
}

購物車類:
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class ShoppingCart {//購物車
	//key:商品編號 value:商品條目
	private Map<Integer,ProductItem> map=new LinkedHashMap<Integer,ProductItem>();
	
	public void addProduct(Product p){//新增商品
		int productId=p.getProductId();
		if(map.containsKey(productId)){
			ProductItem productItem=map.get(productId);
			productItem.setCount(productItem.getCount()+1);
		}else{
			map.put(productId, new ProductItem(p,1));
		}
	}
	public void showAll(){//檢視訂單資訊
		Collection<ProductItem> productItems = map.values();
		Iterator<ProductItem> iterator = productItems.iterator();
		while(iterator.hasNext()){
			ProductItem productItem = iterator.next();
			Product product = productItem.getProduct();
			System.out.println("商品編號:"+product.getProductId()+",商品名稱:"
			+product.getProductName()+",單價:"+product.getPrice()+",數量:"+productItem.getCount()
			+",小計:"+productItem.totalMoney());
		}
	}
	public boolean deleteProduct(int productId){//刪除商品
		if(map.containsKey(productId)){
			map.remove(productId);
			return true;
		}
		return false;
	}
	public boolean modifyProduct(int productId,int count){//修改
		if(map.containsKey(productId)){
			if(count>=1){
				ProductItem productItem = map.get(productId);
				productItem.setCount(count);
				return true;
			}else if(count==0){//刪除該商品
				deleteProduct(productId);
				return true;
			}	
		}
		return false;
	}
	
	public void clearCart(){//清空購物車
		map.clear();
	}
	
	public double totalAllMoney(){//商品總錢數
		double total=0;
		Collection<ProductItem> productItems = map.values();
		Iterator<ProductItem> iterator = productItems.iterator();
		while(iterator.hasNext()){
			ProductItem productItem = iterator.next();
			double money=productItem.totalMoney();
			total+=money;
		}
		return total;
	}
}

測試類:

public class ShoppingCartTest {

	public static void main(String[] args) {
		ShoppingCart cart=new ShoppingCart();
		Product p1=new Product(101,"華碩筆記本","筆記本",4599);
		Product p2=new Product(102,"蘋果","水果",5.9);
		Product p3=new Product(103,"彩電","家電",2799);
		Product p4=new Product(104,"秋褲","服裝",128);
		Product p5=new Product(105,"華為手機","手機",2998);
		Product p6=new Product(101,"華碩筆記本","筆記本",4599);//測試買兩件商品的情況
		cart.addProduct(p1);
		cart.addProduct(p2);
		cart.addProduct(p3);
		cart.addProduct(p4);
		cart.addProduct(p5);
		cart.addProduct(p6);
		cart.showAll();
		System.out.println("############");
		boolean flag=cart.deleteProduct(p2.getProductId());
		if(flag){
			System.out.println("商品編號為:"+p2.getProductId()+"的商品刪除成功!");
		}else{
			System.out.println("刪除失敗");
		}
		cart.showAll();
		System.out.println("############");
		boolean flag2=cart.modifyProduct(p3.getProductId(), 2);
		if(flag2){
			System.out.println("商品編號為:"+p3.getProductId()+"的商品修改成功!");
		}else{
			System.out.println("修改失敗");
		}
		cart.showAll();
		
		//cart.clearCart();
		//cart.showAll();
		System.out.println("商品總價錢為:"+cart.totalAllMoney());

	}

}
執行效果圖:




相關推薦

java程式碼一個簡單網上購物車程式

需求:1、寫一個商品類,有商品編號、商品名稱、商品分類、商品單價屬性。2、寫一個商品條目資訊類,有商品和數量兩個屬性,有商品總價格方法。 3、寫一個購物車類,有新增商品方法、檢視訂單資訊,刪除商品,修改商品,清空購物車,求購物車中所有商品總金額方法。4、寫一個測試類,測試上

Java程式碼一個判斷兩個二叉樹是否相同

判斷兩個二叉樹是否相同,我覺得應該從三個方面來判斷: 1、若兩個二叉樹都是空樹,則返回true,可認為兩個二叉樹相同; 2、若兩個二叉樹一個為空,一個不為空樹,則兩個二叉樹不相同,返回false; 3、若兩個二叉樹都不為空樹,則判斷兩個節點所指的值是否相同,若相同,則用遞迴

120行Java程式碼一個自己的區塊鏈

區塊鏈是目前最熱門的話題,廣大讀者都聽說過比特幣,或許還有智慧合約,相信大家都非常想了解這一切是如何工作的。這篇文章就是幫助你使用 Java 語言來實現一個簡單的區塊鏈,用不到 120 行程式碼來揭示區塊鏈的原理! “用不到120行 Java 程式碼就能實現一個

Java GUI做一個簡單的管理系統

java 管理系統 gui 1.先完成主頁面MainUI(代碼如下)package com.pag_1; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.

python學習(8)實例:一個簡單商城購物車的代碼

商品 流程圖 index blog pen 什麽 author 數字 git 要求: 1、寫一段商城程購物車序的代碼2、用列表把商城的商品清單存儲下來,存到列表 shopping_mail3、購物車的列表為shopping_cart4、用戶首先輸入工資金額,判斷輸入為數字5

Java制作一個簡單的圖片驗證碼

err 一個 graphic opera login new pri buffer image //Java實現簡單驗證碼功能 package project; import java.awt.Color; import java.awt.Font;import java.

python語言一個簡單的計算器

ali pla ket 列表 調用 語言 括號 lac 跳出循環 假如我們有這樣一個式子: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )思

Java自己一個反轉字串的方法

     關於反轉字串的方法,Java中的StringBuffer類中有現成的方法,自己寫一個是為了提高自己的程式設計能力。     挺簡單的,主要是用了String類的構造方法,Java的自動拆裝箱機制,剩下的就是基本的迴圈了,供朋友們參考

socket一個簡單的聊天程式

服務端程式碼: # 建立socket物件:socket.socket()——>繫結IP地址和埠:bind——>監聽:listen——># 得到請求:accept——>接收請求:recv——>傳送資訊:send——>關閉close   i

android studio一個簡單並且bug奇多的計算器

思路:先佈局,在將相應的按鍵例項化,建立監聽器,計算。可以說是非常簡單了。 貼一下程式碼: 佈局程式碼: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas

C語言一個簡單的三子棋,實現玩家與電腦的對戰

原始碼: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 寫一個三子棋 */ //邏輯: //1. 畫

C語言一個簡單的掃雷小遊戲

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 語言寫一個簡單的掃雷遊戲 */ // 1.寫一個遊戲選單 M

Java 手把手一個“二叉搜尋樹”,支援泛型

一、二叉搜尋樹 先說一下二叉樹,二叉樹是一種至多隻有左右兩個子結點的樹形結構。 二叉搜尋樹是二叉樹的一種,對於任意一個結點 x,其左子樹的任一結點的值都不大於 x 的值,其右子樹的任一結點的值都不小於 x 的值。 二叉搜尋樹上的基本操作有 查詢 (search)、最小值

python進階-Tkinter/mysqldb一個簡單的酒店預定GUI介面

學了python的部分庫和基本語法後,結合資料庫操作,做一個簡單的使用者友好介面實現一個簡單的酒店預訂小系統。 準備姿勢 tkinter的元件轉換 tkinter按鈕元件詳解 Python連線資料庫操作 資料庫準備 在本地資料庫新建一個hotel_data的資料庫,建立四張表。

(3) java編譯器實現一個簡單的編譯器-語法分析

轉載地址:http://blog.csdn.net/tyler_download/article/details/50708807 視訊地址:http://study.163.com/course/courseLearn.htm?courseId=1002830012#/l

java程式碼的圖片輪播,方便呼叫

package com.sxt.view; import java.util.List; import com.sxt.net.img.ImageLoad; import android.content.Context; import android.graphics.Bi

Java程式碼刪除一個已排好序連結串列中重複的數字

題目是:一直一個已排好序的連結串列,刪除其中重複的數字,我的想法是重新建一個連結串列,存沒有重複數字並且是已排好序的數字。 演算法思想是: 首先要考慮該連結串列是否為空或者只有一個節點 重新建立一個連結串列,將原來連結串列的頭節點設為新連結串列的頭節點,然後依次比較原來連結

Java面試題:如何用java程式碼一個堆疊

原文引用自http://www.jobui.com/mianshiti/it/java/7882/點選開啟連結 public class Stack { int[] data; int maxSize; int top; public Stack(int maxSize)

C#程式碼生成一個簡單的PDF檔案(轉)

using System; using System.IO; using System.Text; using System.Collections; namespace PDFGenerator { /// /// Application : Generation of PDF file from

java se一個超市購物系統

這是一個用java se寫的超市購物系統,能夠根據客戶選擇完成一些功能,程式碼如下:package com.Test6; import java.util.Scanner; public class Test6_5 { //鍵盤錄入數字方法 public int input