1701010202 6 years ago
commit
efc4008ea4

+ 17 - 0
.classpath

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_181">
+		<attributes>
+			<attribute name="owner.project.facets" value="java"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v8.5">
+		<attributes>
+			<attribute name="owner.project.facets" value="jst.web"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+	<classpathentry kind="output" path="build/classes"/>
+</classpath>

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+/build/

+ 31 - 0
.project

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>shopping</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>

+ 12 - 0
.settings/.jsdtscope

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="WebContent"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>

+ 7 - 0
.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8

+ 8 - 0
.settings/org.eclipse.wst.common.component

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="shopping">
+        <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
+        <property name="context-root" value="shopping"/>
+        <property name="java-output-path" value="/shopping/build/classes"/>
+    </wb-module>
+</project-modules>

+ 10 - 0
.settings/org.eclipse.wst.common.project.facet.core.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <runtime name="Apache Tomcat v8.5"/>
+  <fixed facet="jst.web"/>
+  <fixed facet="java"/>
+  <fixed facet="wst.jsdt.web"/>
+  <installed facet="java" version="1.8"/>
+  <installed facet="jst.web" version="3.1"/>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+</faceted-project>

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.container

@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.name

@@ -0,0 +1 @@
+Window

+ 3 - 0
WebContent/META-INF/MANIFEST.MF

@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

BIN
WebContent/WEB-INF/lib/jstl-1.1.0.jar


BIN
WebContent/WEB-INF/lib/standard-1.1.0.jar


+ 12 - 0
WebContent/WEB-INF/web.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
+  <display-name>shopping</display-name>
+  <welcome-file-list>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>default.html</welcome-file>
+    <welcome-file>default.htm</welcome-file>
+    <welcome-file>default.jsp</welcome-file>
+  </welcome-file-list>
+</web-app>

+ 13 - 0
WebContent/buySuccess.jsp

@@ -0,0 +1,13 @@
+<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+<title>success</title>
+</head>
+<body>
+   购买成功一共花了<td>${cart.price }</td>元
+     <a href="${pageContext.request.contextPath }/ClearCartServlet?action=1">返回主页面</a>
+</body>
+</html>

+ 33 - 0
WebContent/listBook.jsp

@@ -0,0 +1,33 @@
+<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>My JSP 'listbook.jsp' starting page</title>
+  </head>
+  <body>
+    <table border="1px" cellspacing="0" align="center">
+        <tr>
+            <td>图书ID</td>
+            <td>图书名称</td>
+            <td>图书作者</td>
+            <td>图书价格</td>
+            <td>图书描述</td>
+            <td>操作</td>
+        </tr>
+           <c:forEach var="me" items="${map }">
+            <tr>
+                <td>${me.key }</td>
+                <td>${me.value.name }</td>
+                <td>${me.value.author }</td>
+                <td>${me.value.price }</td>
+                <td>${me.value.description }</td>
+                <td>
+                    <a href="${pageContext.request.contextPath }/BuyServlet?bookid=${me.key }">购买</a>
+                </td>
+               </tr>
+           </c:forEach>
+    </table>
+  </body>
+</html>

+ 92 - 0
WebContent/listCart.jsp

@@ -0,0 +1,92 @@
+<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>My JSP 'listcart.jsp' starting page</title>
+<script type="text/javascript">
+        //删除商品
+        function clearcartitem(bookid) {
+            var result = window.confirm("您确定要删除该商品么?");
+            if(result) {
+                window.location.href = "${pageContext.request.contextPath }/CartDeleteServlet?bookid="+bookid;
+            }
+        }
+        //清空购物车
+        function clearcart() {
+            var result = window.confirm("您确定要清空购物车么?");
+            if(result) {
+                window.location.href = "${pageContext.request.contextPath }/ClearCartServlet?action=2";
+            }
+        }
+        //改变购物项数量
+        function updateCart(input,id,oldvalue) {
+            var quantity = input.value;
+            //验证非零的正整数:^\+?[1-9][0-9]*$ 
+            var reg= /^\+?[1-9][0-9]*$/;
+            var result = window.confirm("请确认改为:" + quantity);
+            //判断输入是否为正整数
+            if(!reg.test(quantity)) {
+                alert("参数不合法!");
+                input.value = oldvalue;
+                return;
+            }
+            
+            if(result) {
+                window.location.href="${pageContext.request.contextPath}/UpdateCartServlet?bookid="+id + "&quantity=" + quantity;
+            } else {
+                input.value = oldvalue;
+            }
+        }
+    </script>
+</head>
+
+<body>
+	<c:if test="${!empty(cart.map) }">
+		<table border="1px" cellspacing="0" align="center">
+			<tr>
+				<td>图书名称</td>
+				<td>图书作者</td>
+				<td>单价</td>
+				<td>数量</td>
+				<td>小计</td>
+				<td>操作</td>
+			</tr>
+			<c:forEach var="me" items="${cart.map }">
+				<tr>
+					<td>${me.value.book.name }</td>
+					<td>${me.value.book.author }</td>
+					<td>${me.value.book.price }</td>
+					<td><input type="text" name="quantity"
+						value="${me.value.quantity }" style="width: 30px"
+						onchange="updateCart(this,${me.value.book.id },${me.value.quantity })">
+					</td>
+					<td>${me.value.price }</td>
+					<td><a href="javascript:clearcartitem(${me.value.book.id })">删除</a>
+					</td>
+				</tr>
+			</c:forEach>
+			<tr>
+
+				<td colspan="4" style="display: block; text-align: center">合计</td>
+				<td>${cart.price }</td>
+				<td><a href="buySuccess.jsp">购买</a></td>
+			</tr>
+			<tr>
+				<td colspan="2"><a href="javascript:clearcart()">清空购物车</a></td>
+				<td colspan="4"><a href="/shopping/ListBookServlet"
+					>返回主页面</a></td>
+			</tr>
+		</table>
+
+	</c:if>
+
+	<c:if test="${empty(cart.map) }">
+		<p>购物车为空</p>
+		<p>
+			<a href="/shopping/ListBookServlet">返回主页面</a>
+		</p>
+	</c:if>
+</body>
+</html>

+ 12 - 0
WebContent/message.jsp

@@ -0,0 +1,12 @@
+<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="ISO-8859-1">
+<title>message</title>
+</head>
+<body>
+<p><%=request.getAttribute("message") %></p>
+</body>
+</html>

+ 25 - 0
src/Dao/BookDB.java

@@ -0,0 +1,25 @@
+package Dao;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import working.Book;
+
+public class BookDB {
+
+	private static Map<String, Book> map = new LinkedHashMap<>();
+
+    static {
+        map.put("1",new Book("1", "java", "作者1", "好书", 99));
+        map.put("2",new Book("2", "javaweb","作者2", "不好的书", 33));
+        map.put("3",new Book("3", "ajax","作者3", "一般般", 66));
+        map.put("4",new Book("4", "spring","作者4", "还行", 77));
+    }
+
+    public static Map<String, Book> getAll() {
+
+
+        return map;
+    }
+
+}

+ 15 - 0
src/Dao/BookDao.java

@@ -0,0 +1,15 @@
+package Dao;
+
+import java.util.Map;
+
+import working.Book;
+
+public class BookDao {
+    public Map getAll() {
+        return BookDB.getAll();
+    }
+    public Book find(String id) {
+        return BookDB.getAll().get(id);
+    }
+}
+

+ 19 - 0
src/Service/BookService.java

@@ -0,0 +1,19 @@
+package Service;
+
+import java.util.Map;
+
+import Dao.BookDao;
+import working.Book;
+
+public class BookService {
+	 BookDao bookDao = new BookDao();
+
+     public Map getAll() {
+
+         return bookDao.getAll();
+     }
+     public Book findBook(String id) {
+         return bookDao.find(id);
+     }
+
+}

+ 68 - 0
src/Service/CartService.java

@@ -0,0 +1,68 @@
+package Service;
+
+import java.util.Map;
+
+import Dao.BookDao;
+import working.Book;
+import working.Cart;
+import working.CartItem;
+
+public class CartService {
+    
+    BookDao bdao = new BookDao();
+    
+    /**
+     * 将图书添加到购物车中
+     * @param bookid
+     * @param cart
+     */
+    public void buybook(String bookid, Cart cart) {
+        Book book = bdao.find(bookid);
+        cart.add(book);
+    }
+
+    /**
+     * 删除购物车中指定bookid的图书
+     * @param bookid
+     * @param cart
+     * @throws CartNotFoundException
+     */
+    public void deleteBook(String bookid, Cart cart) throws ClassNotFoundException {
+        if(cart == null) {
+            throw new ClassNotFoundException("查找不到购物车!!!");
+        }
+        Map map = cart.getMap();
+        map.remove(bookid);
+    }
+
+    /**
+     * 清空购物车中所有购物项
+     * @param cart
+     * @throws CartNotFoundException
+     */
+    public void clearcart(Cart cart) throws ClassNotFoundException {
+
+        if(cart == null) {
+            throw new ClassNotFoundException("查找不到购物车!!!");
+        }
+
+        cart.getMap().clear();
+    }
+
+    /**
+     * 更新购物项数量
+     * @param cart
+     * @param bookid
+     * @param quantity
+     * @throws CartNotFoundException
+     */
+    public void updateCart(Cart cart, String bookid, int quantity) throws ClassNotFoundException {
+
+        if(cart == null) {
+            throw new ClassNotFoundException("查找不到购物车!!!");
+        }
+
+        CartItem item = cart.getMap().get(bookid);
+        item.setQuantity(quantity);
+    }
+}

+ 39 - 0
src/Servlet/BuyServlet.java

@@ -0,0 +1,39 @@
+package Servlet;
+
+import java.io.IOException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import Service.CartService;
+import working.Cart;
+
+/**
+ * Servlet implementation class BuyServlet
+ */
+@WebServlet("/BuyServlet")
+public class BuyServlet extends HttpServlet {
+	/**
+	 * ¹ºÂòµÄServlet
+	 */
+	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        String id = request.getParameter("bookid");
+        Cart cart = (Cart) request.getSession().getAttribute("cart");
+        if (cart == null) {
+            cart = new Cart();
+            request.getSession().setAttribute("cart", cart);
+        }
+        CartService cartService= new CartService();
+        cartService.buybook(id, cart);
+        request.getRequestDispatcher("/listCart.jsp").forward(request, response);
+	}
+
+
+	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+		// TODO Auto-generated method stub
+		doGet(request, response);
+	}
+
+}

+ 36 - 0
src/Servlet/CartAddServlet.java

@@ -0,0 +1,36 @@
+package Servlet;
+
+import java.io.IOException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import Service.CartService;
+import working.Cart;
+@WebServlet("/CartAddServlet")
+public class CartAddServlet extends HttpServlet {
+	/**
+	 * 添加购物车的Servlet
+	 */
+    public void doGet(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        try {
+            String bookid = request.getParameter("bookid");
+            Cart cart = (Cart) request.getSession().getAttribute("cart");
+            if (cart == null) {
+                cart = new Cart();
+                request.getSession().setAttribute("cart", cart);
+            }
+            CartService cartService = new CartService();
+            cartService.buybook(bookid, cart);
+            request.getRequestDispatcher("/listCart.jsp").forward(request, response);
+            return;
+        } catch (Exception e) {
+            request.setAttribute("message", "操作失败!");
+            request.getRequestDispatcher("/message.jsp").forward(request, response);
+            return;
+        }
+    }
+}

+ 36 - 0
src/Servlet/CartDeleteServlet.java

@@ -0,0 +1,36 @@
+package Servlet;
+
+import java.io.IOException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import Service.CartService;
+import working.Cart;
+
+/**
+ * Servlet implementation class CartDeleteServlet
+ */
+@WebServlet("/CartDeleteServlet")
+	/**
+	 * 删除购物项的Servlet
+	 */
+public class CartDeleteServlet extends HttpServlet {
+    public void doGet(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        try {
+            String bookid = request.getParameter("bookid");
+            Cart cart = (Cart) request.getSession().getAttribute("cart");
+            CartService cartService = new CartService();
+            cartService.deleteBook(bookid, cart);
+            request.getRequestDispatcher("/listCart.jsp").forward(request, response);
+        } catch (ClassNotFoundException e) {
+            request.setAttribute("message", "操作出错!");
+            request.getRequestDispatcher("/message.jsp").forward(request, response);
+        }
+    }
+}
+
+

+ 39 - 0
src/Servlet/ClearCartServlet.java

@@ -0,0 +1,39 @@
+package Servlet;
+
+import java.io.IOException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import Service.CartService;
+import working.Cart;
+
+/**
+ * Servlet implementation class ClearCartServlet
+ */
+@WebServlet("/ClearCartServlet")
+	/**
+	 * 清空购物车的Servlet
+	 */
+public class ClearCartServlet extends HttpServlet {
+    public void doGet(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        try {
+            Cart cart = (Cart) request.getSession().getAttribute("cart");
+            CartService cartService = new CartService();
+            String action = request.getParameter("action");
+            if(action.equals("1")) {
+            	cartService.clearcart(cart);
+            	request.getRequestDispatcher("/ListBookServlet").forward(request, response);
+            }else {
+	            cartService.clearcart(cart);
+	            request.getRequestDispatcher("/listCart.jsp").forward(request, response);
+            }
+        } catch (ClassNotFoundException e) {
+            request.setAttribute("message", "操作出错!!");
+            request.getRequestDispatcher("/message.jsp").forward(request, response);
+        }
+    }
+}

+ 36 - 0
src/Servlet/ListBookServlet.java

@@ -0,0 +1,36 @@
+package Servlet;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import Service.BookService;
+
+/**
+ * Servlet implementation class ListBookServlet
+ */
+@WebServlet("/ListBookServlet")
+	/**
+	 * ÏÔʾBookµÄServlet
+	 */
+public class ListBookServlet extends HttpServlet {
+    public void doGet(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        try {
+            BookService bookService = new BookService();
+            Map map = bookService.getAll();
+            request.setAttribute("map", map);
+            request.getRequestDispatcher("/listBook.jsp").forward(request, response);
+            return;
+        } catch (Exception e) {
+            request.setAttribute("message", "ÇëÇóʧ°Ü£¡");
+            request.getRequestDispatcher("/message.jsp").forward(request, response);
+            return;
+        }
+    }
+}

+ 35 - 0
src/Servlet/UpdateCartServlet.java

@@ -0,0 +1,35 @@
+package Servlet;
+
+import java.io.IOException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import Service.CartService;
+import working.Cart;
+
+/**
+ * Servlet implementation class UpdateCartServlet
+ */
+@WebServlet("/UpdateCartServlet")
+	/**
+	 * 更新购物车的Servlet
+	 */
+public class UpdateCartServlet extends HttpServlet {
+    public void doGet(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        try {
+            String bookid = request.getParameter("bookid");
+            int quantity = Integer.parseInt(request.getParameter("quantity"));
+            Cart cart = (Cart) request.getSession().getAttribute("cart");
+            CartService cartService = new CartService();
+            cartService.updateCart(cart, bookid, quantity);
+            request.getRequestDispatcher("/listCart.jsp").forward(request, response);
+        } catch (Exception e) {
+            request.setAttribute("message", "操作出错!");
+            request.getRequestDispatcher("/message.jsp").forward(request, response);
+        }
+    }
+}

+ 48 - 0
src/working/Book.java

@@ -0,0 +1,48 @@
+package working;
+
+public class Book {
+    
+    private String id;
+    private String name;
+    private String author;
+    private double price;
+    private String description;
+    public Book(String id, String name, String author, String description, double price) {
+        this.id = id;
+        this.name = name;
+        this.author = author;
+        this.description = description;
+        this.price = price;
+    }
+	public String getId() {
+		return id;
+	}
+	public void setId(String id) {
+		this.id = id;
+	}
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public String getAuthor() {
+		return author;
+	}
+	public void setAuthor(String author) {
+		this.author = author;
+	}
+	public double getPrice() {
+		return price;
+	}
+	public void setPrice(double price) {
+		this.price = price;
+	}
+	public String getDescription() {
+		return description;
+	}
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+}

+ 45 - 0
src/working/Cart.java

@@ -0,0 +1,45 @@
+package working;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class Cart {
+
+    private Map<String, CartItem> map = new LinkedHashMap();
+    private double price;
+
+    /**
+     * ĎňšşÎďłľÖĐĚíźÓÍźĘé
+     * @param book
+     */
+    public void add(Book book) {
+
+        CartItem item = map.get(book.getId());
+
+        if(item == null) {
+            item = new CartItem();
+            item.setBook(book);
+            item.setQuantity(1);
+            map.put(book.getId(), item);
+        } else {
+            item.setQuantity(item.getQuantity()+1);
+        }
+    }
+    public double getPrice() {
+        double totalprice = 0;
+        for(Map.Entry<String, CartItem> me : map.entrySet()) {
+            CartItem item = me.getValue();
+            totalprice += item.getPrice();
+        }
+        return totalprice;
+    }
+    public Map<String, CartItem> getMap() {
+        return map;
+    }
+    public void setMap(Map<String, CartItem> map) {
+        this.map = map;
+    }
+    public void setPrice(double price) {
+        this.price = price;
+    }
+}

+ 31 - 0
src/working/CartItem.java

@@ -0,0 +1,31 @@
+package working;
+
+public class CartItem {
+
+    private Book book;
+    private int quantity;
+    private double price;
+
+    /**
+     * ÖØ¹¹getPrice·½·¨
+     * @return ¹ºÎïÏî×ܼ۸ñ
+     */
+    public double getPrice() {
+        return book.getPrice() * this.quantity;
+    }
+    public Book getBook() {
+        return book;
+    }
+    public void setBook(Book book) {
+        this.book = book;
+    }
+    public int getQuantity() {
+        return quantity;
+    }
+    public void setQuantity(int quantity) {
+        this.quantity = quantity;
+    }
+    public void setPrice(double price) {
+        this.price = price;
+    }
+}