相信大家肯定都在电商网站买过东西,当我们看中一件喜欢又想买的东西时,这时候你又不想这么快结账,这时候你就可以放入购物车;

就像我们平时去超市买东西一样,会推着购物车去买东西;

那么我们接下来看看java怎么实现购物车的功能,其实原理很简单,java的特点就是面向对象,并且有着封装继承多态三大特性;

java实现这个购物车功能是通过内存来实现的而不是将数据添加到数据库中

首先是item类,一个item就代表购物车里面的一行数据

package com.wxd.shopping;

public class item {

private int id; //商品id

private string name;//商品名称

private string city;//商品产地

private double price;//商品价格

private int number;//商品数量

private string picture;//商品图片地址

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 string getcity() {

return city;

}

public void setcity(string city) {

this.city = city;

}

public double getprice() {

return price;

}

public void setprice(double price) {

this.price = price;

}

public int getnumber() {

return number;

}

public void setnumber(int number) {

this.number = number;

}

public string getpicture() {

return picture;

}

public void setpicture(string picture) {

this.picture = picture;

}

/**

* 重写hashcode方法,使得在购物车添加商品的时候,如果id和名称相同就判定为同一件商品

* @return

*/

@override

public int hashcode() {

return (this.getid()+this.getname()).hashcode();

}

/**

* 重写equals方法,判断是否为同一个对象

* @param obj

* @return

*/

@override

public boolean equals(object obj) {

if(this==obj){

return true;

}

if(obj instanceof item){

item i= (item) obj;

if(this.getid()==i.getid()&&this.getname().equals(i.getname())){

return true;

}else{

return false;

}

}else{

return false;

}

}

@override

public string tostring() {

return "item{" +

"id=" + id +

", name='" + name + '\'' +

", city='" + city + '\'' +

", price=" + price +

", number=" + number +

", picture='" + picture + '\'' +

'}';

}

//有参构造

public item(int id, string name, string city, double price, int number, string picture) {

this.id = id;

this.name = name;

this.city = city;

this.price = price;

this.number = number;

this.picture = picture;

}

//无参构造

public item() {

}

}

购物车类分装了item和数量的一个集合,还有商品的总金额

下面是购物车类的详细代码以及测试方法:

package com.wxd.shopping;

import java.util.hashmap;

import java.util.iterator;

import java.util.map;

import java.util.set;

//购物车

public class cart {

//购买商品的集合

private hashmap goods;

//购物车的总金额

private double totalprice;

//构造方法初始化数据

public cart(){

goods=new hashmap();

totalprice=0.0;

}

public hashmap getgoods() {

return goods;

}

public void setgoods(hashmap goods) {

this.goods = goods;

}

public double gettotalprice() {

return totalprice;

}

public void settotalprice(double totalprice) {

this.totalprice = totalprice;

}

//添加商品进购物车的方法

public boolean addgoodsincart(item item,int number){

if(goods.containskey(item)){

goods.put(item,goods.get(item)+number);

}else{

goods.put(item,number);

}

caltotalprice();//重新计算购物车的总金额

return true;

}

//删除商品的方法

public boolean removegoodsfromcart(item item){

goods.remove(item);

caltotalprice();//重新计算购物车的总金额

return true;

}

//统计购物车的总金额

public double caltotalprice(){

double sum=0.0;

set keys=goods.keyset();

iterator iterator = keys.iterator();

while (iterator.hasnext()){

item i = iterator.next();

sum+=i.getprice()*goods.get(i);

}

this.settotalprice(sum);//设置购物车的总金额

return this.gettotalprice();

}

//测试的main方法

public static void main(string[] args) {

//先创建两个商品对象

item i1=new item(1,"耐克","温州",300.0,500,"001.jpg");

item i2=new item(2,"阿迪","广州",500.0,500,"001.jpg");

item i3=new item(1,"耐克","温州",300.0,500,"001.jpg");

cart c=new cart();

c.addgoodsincart(i1,1);

c.addgoodsincart(i2,2);

//再次购买耐克鞋

c.addgoodsincart(i3,3);

//遍历购买商品的集合

hashmap goods = c.getgoods();

set> entries = goods.entryset();

for(map.entry itementry:entries){

system.out.println(itementry.tostring());

}

system.out.println("购物车总金额:"+c.gettotalprice());

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

java购物车后台_JavaWeb后台购物车类实现代码详解相关推荐

  1. java中math的方法_Java中Math类常用方法代码详解

    近期用到四舍五入想到以前整理了一点,就顺便重新整理好经常见到的一些四舍五入,后续遇到常用也会直接在这篇文章更新... public class Demo{ public static void mai ...

  2. java 自定义异常实例分析_Java自定义异常类的实例详解

    Java自定义异常类的实例详解 为什么要自己编写异常类?假如jdk里面没有提供的异常,我们就要自己写.我们常用的类ArithmeticException,NullPointerException,Ne ...

  3. java编程数据溢出问题_Java数据溢出代码详解

    Java数据溢出代码详解 发布时间:2020-10-05 15:08:31 来源:脚本之家 阅读:103 作者:Pony小马 java是一门相对安全的语言,那么数据溢出时它是如何处理的呢? 看一段代码 ...

  4. java语言写购物车_JavaWeb后台购物车类实现代码详解

    相信大家肯定都在电商网站买过东西,当我们看中一件喜欢又想买的东西时,这时候你又不想这么快结账,这时候你就可以放入购物车: 就像我们平时去超市买东西一样,会推着购物车去买东西: 那么我们接下来看看jav ...

  5. java rowmapper 通用实现_springmvc工具类封装RowMapper详解

    springmvc通常是先写实体,在数据库查询,最后增删改差,最感觉代码很冗余,自己在封装了一下. 常见的结构是: entity:如 package com.liuxinquan.entiry; /* ...

  6. java处理字符串Patter与Matcher类与其方法详解

    1.使用Patter与Matcher类 Pattern 类表示编译的正则表达式. 使用 Pattern 类的静态方法 compile() 获取 Pattern 类引用. 以下代码段用于创建 Patte ...

  7. java excel导出 jxl_Java中用JXL导出Excel代码详解

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支 ...

  8. java example 去重_Java中mybatis关于example类的使用详解

    这几天刚接触example,很多内容都是破碎的,写一篇博文加深理解. 一.什么是example类 mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的 ...

  9. java 重启线程_java 可重启线程及线程池类的设计(详解)

    了解JAVA多线程编程的人都知道,要产生一个线程有两种方法,一是类直接继承Thread类并实现其run()方法:二是类实现Runnable接口并实现其run()方法,然后新建一个以该类为构造方法参数的 ...

最新文章

  1. python程序的输入输出(acm的几个小程序)
  2. 【企业管理】摆脱三个依赖
  3. 《Head First设计模式》第七章-适配器模式、外观模式
  4. C/C++—— #include“stdafx.h”详解
  5. 实践设计模拟计算机,个体化股骨假体的计算机辅助设计实践及模拟力学实验
  6. 【数据结构与算法】算法的空间复杂度
  7. Docker生产环境配置——设置direct-lvm模式
  8. 左对齐 latex_初学者关于Latex的一些总结(持续更新中...)
  9. python 通过逗号分割字符串_「Python 秘籍」使用多个界定符分割字符串
  10. 手机签名工具_iOS越狱神器复活!自签工具 ReProvision 又可以愉快使用了
  11. 锐龙4500和4600哪个好 r5 4500和r5 4600的区别
  12. bandizip修改压缩文件内容_BandiZip如何进行解压缩文件?BandiZip解压缩流程
  13. python多条件求和_数据的多条件求和
  14. php解压7z,linux解压7z文件命令
  15. PC机上常用 EDA 软件
  16. ES异常 : Validation Failed: 1: no requests added
  17. canvas画三角形
  18. 根据地理位置获取经纬度
  19. dicom是指_DCM是什么文件
  20. 接口电路——原理,应用,分类,处理过程

热门文章

  1. ubuntu下JDK的自动安装和手动安装
  2. SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
  3. Spark家族:Win10系统下搭建Scala开发环境
  4. 总结一些最优化算法(ADMM/FISTA)代码网站
  5. Excel VBA 词根管理工具
  6. 再问数据中台 - 数据中台里的数据质量应该如何保障?
  7. Spring MVC 实践 - Base
  8. 本地也能运行AWS?是的,AWS开始进军混合云领域了
  9. Python 加密解密
  10. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理