java 面向对象 购物车
一个商城包括多个商品、多个用户。拥有销售商品、展示商品和查找商品功能。
2) 一个用户拥有一个购物车,购物车具有结算功能。
3) 商城具有名称,静态字符串类型
4) 用户类是抽象类,两个子类,售货员和顾客。购买商品作为抽象方法,售货员购买享八折优惠。
5) 商品和用户不再用二维数组,而是用类集来表示。
package tang;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.xml.soap.SAAJResult;
/*
*
* 基于上一个实验,建立商品类、购物车类、用户类、商城类,实现同样的功能。
1) 一个商城包括多个商品、多个用户。拥有销售商品、展示商品和查找商品功能。
2) 一个用户拥有一个购物车,购物车具有结算功能。
3) 商城具有名称,静态字符串类型
4) 用户类是抽象类,两个子类,售货员和顾客。购买商品作为抽象方法,售货员购买享八折优惠。
5) 商品和用户不再用二维数组,而是用类集来表示。
* */
public class work {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
shangping sp1 = new shangping(1001, "巧克力", 120, 5, "食品");
shangping sp2 = new shangping(1002, "牛奶", 100, 3, "食品");
shangping sp3 = new shangping(1003, "火腿肠", 500, 2, "食品");
shangping sp4 = new shangping(1004, "毛衣", 10, 1000, "衣服");
shangping sp5 = new shangping(1005, "裤子", 20, 999, "衣服");
shangping sp6 = new shangping(1006, "鞋子", 999, 200, "衣服");
gouwuche gu1 = new gouwuche(sp1, 2);
gouwuche gu2 = new gouwuche(sp2, 4);
gouwuche gu3 = new gouwuche(sp3, 2);
// 购物车
List<gouwuche> gous1 = new ArrayList<gouwuche>();
gous1.add(gu1);
gous1.add(gu2);
List<gouwuche> gous2 = new ArrayList<gouwuche>();
gous2.add(gu3);
gous2.add(gu2);
// 商品列表
List<shangping> shangpings1 = new ArrayList<shangping>();
shangpings1.add(sp1);
shangpings1.add(sp2);
shangpings1.add(sp6);
// 用户
guke g1 = new guke("xiaohua", "123456", 0, gous1);
guke g2 = new guke("laowang", "123456", 0, gous2);
List<yonghu> yonghus = new ArrayList<yonghu>();
yonghus.add(g1);
yonghus.add(g2);
// 商城
shangcheng sc = new shangcheng(yonghus, shangpings1);
System.out.println("请输入用户名");
String name = input.next();
System.out.println("请输入密码");
String mima = input.next();
boolean user = userhave(name, mima, sc);
// 1-加入购物车,2-查询商品,3-结算,4-退出”
if (user) {
System.out.println("登录成功");
while (true) {
System.out.println("1-查看购物车" + "\t" + "2-查询商品" + "\n" + "3-结算" + "\t" + "4-退出");
int a = input.nextInt();
yonghu loginuser = getuser(name, sc);
if (a == 1) {
showgou(loginuser);
} else if (a == 2) {
System.out.println("请输入查询商品信息:");
String searchname = input.next();
int i = chaxun(searchname, sc);
if (i == -1) {
System.out.println("没有此商品");
} else {
System.out.println("是否加入购物车 是/否");
String jiagou = input.next();
if (jiagou.equals("是")) {
jiagou(loginuser, i, sc);
} else {
continue;
}
}
} else if (a == 3) {
showgou(loginuser);
System.out.println();
System.out.println(jiesuan(loginuser));
} else {
break;
}
}
} else {
System.out.println("登录失败");
}
}
private static void jiagou(yonghu loginuser, int i, shangcheng sc) {
// TODO Auto-generated method stub
gouwuche gou = new gouwuche(sc.getShangpings().get(i), 1);
sc.getShangpings().get(i).setShuliang(sc.getShangpings().get(i).getShuliang() - 1);
loginuser.getGouwuches().add(gou);
}
private static int chaxun(String searchname, shangcheng sc) {
// TODO Auto-generated method stub
int s = -1;
for (int i = 0; i < sc.getShangpings().size(); i++) {
if (sc.getShangpings().get(i).getName().equals(searchname)) {
System.out.println("编号:" + sc.getShangpings().get(i).getBianhao());
System.out.println("名称:" + sc.getShangpings().get(i).getName());
System.out.println("价格:" + sc.getShangpings().get(i).getJiage());
System.out.println("库存:" + sc.getShangpings().get(i).getShuliang());
System.out.println("类别:" + sc.getShangpings().get(i).getLeibie());
s = i;
}
}
return s;
}
private static double jiesuan(yonghu loginuser) {
// TODO Auto-generated method stub
double sum = 0;
for (int i = 0; i < loginuser.getGouwuches().size(); i++) {
sum += loginuser.getGouwuches().get(i).getShuliang()
* loginuser.getGouwuches().get(i).getShangping().getJiage();
}
return sum;
}
private static void showgou(yonghu loginuser) {
// TODO Auto-generated method stub
System.out.println("商品编号" + " " + "商品名称" + " " + "商品价格" + " " + "商品数量");
for (int i = 0; i < loginuser.getGouwuches().size(); i++) {
System.out.print(loginuser.getGouwuches().get(i).getShangping().getBianhao() + " ");
System.out.print(loginuser.getGouwuches().get(i).getShangping().getName() + " ");
System.out.print(loginuser.getGouwuches().get(i).getShangping().getJiage() + " ");
System.out.print(loginuser.getGouwuches().get(i).getShuliang() + " ");
System.out.println();
}
System.out.println();
}
private static yonghu getuser(String name, shangcheng sc) {
// TODO Auto-generated method stub
for (int i = 0; i < sc.getYonghus().size(); i++) {
if (sc.getYonghus().get(i).getUsername().equals(name)) {
return sc.getYonghus().get(i);
}
}
return null;
}
private static boolean userhave(String name, String mima, shangcheng sc) {
// TODO Auto-generated method stub
for (int i = 0; i < sc.getYonghus().size(); i++) {
if (sc.getYonghus().get(i).getUsername().equals(name)) {
if (sc.getYonghus().get(i).getPassword().equals(mima))
return true;
}
}
return false;
}
}
//分别有商品编号、商品名称、商品数量、商品价格和商品类别。
class shangping {
private long bianhao;
private String name;
private int shuliang;
private double jiage;
private String leibie;
public long getBianhao() {
return bianhao;
}
public void setBianhao(long bianhao) {
this.bianhao = bianhao;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getShuliang() {
return shuliang;
}
public void setShuliang(int shuliang) {
this.shuliang = shuliang;
}
public double getJiage() {
return jiage;
}
public void setJiage(double jiage) {
this.jiage = jiage;
}
public String getLeibie() {
return leibie;
}
public void setLeibie(String leibie) {
this.leibie = leibie;
}
@Override
public String toString() {
return "shangping [bianhao=" + bianhao + ", name=" + name + ", shuliang=" + shuliang + ", jiage=" + jiage
+ ", leibie=" + leibie + "]";
}
public shangping(long bianhao, String name, int shuliang, double jiage, String leibie) {
super();
this.bianhao = bianhao;
this.name = name;
this.shuliang = shuliang;
this.jiage = jiage;
this.leibie = leibie;
}
}
class gouwuche {
private shangping shangping;
private int shuliang;
public shangping getShangping() {
return shangping;
}
public void setShangping(shangping shangping) {
this.shangping = shangping;
}
public int getShuliang() {
return shuliang;
}
public void setShuliang(int shuliang) {
this.shuliang = shuliang;
}
public gouwuche(tang.shangping shangping, int shuliang) {
super();
this.shangping = shangping;
this.shuliang = shuliang;
}
// List thinglist= new ArrayList<>();
// public List<shangping> getShangpings() {
// return shangpings;
// }
// public gouwuche(List<shangping> shangpings) {
// super();
// this.shangpings = shangpings;
// }
// public void setShangpings(List<shangping> shangpings) {
// this.shangpings = shangpings;
// }
//
//
// public double jiesuan(List<shangping> shangpings) {
// double sum=0;
// for(int i=0;i<shangpings.size();i++) {
// sum+=shangpings.get(i).getJiage();
// }
// return sum;
//
// }
}
abstract class yonghu {
private String username;
private String password;
private double yue;
private List<gouwuche> gouwuches;
public List<gouwuche> getGouwuches() {
return gouwuches;
}
public void setGouwuches(List<gouwuche> gouwuches) {
this.gouwuches = gouwuches;
}
public void goumai() {
}
public double getYue() {
return yue;
}
public void setYue(double yue) {
this.yue = yue;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "yonghu [username=" + username + ", password=" + password + ", yue=" + yue + ", gouwuches=" + gouwuches
+ "]";
}
public yonghu(String username, String password, double yue, List<gouwuche> gouwuches) {
super();
this.username = username;
this.password = password;
this.yue = yue;
this.gouwuches = gouwuches;
}
// public double jiesuan() {
// double sum=0;
// for (int i = 0; i < gouwuches.size(); i++) {
// sum+=gouwuches.get(i).getShangping().getJiage();
//
// }
// return sum;
// }
}
class guke extends yonghu {
public guke(String username, String password, double yue, List<gouwuche> gouwuches) {
super(username, password, yue, gouwuches);
// TODO Auto-generated constructor stub
}
}
class xiaoshou extends yonghu {
public xiaoshou(String username, String password, double yue, List<gouwuche> gouwuches) {
super(username, password, yue, gouwuches);
// TODO Auto-generated constructor stub
}
}
class shangcheng {
private static String name;
List<yonghu> yonghus = new ArrayList<yonghu>();
List<shangping> shangpings = new ArrayList<shangping>();
public shangcheng(List<yonghu> yonghus, List<shangping> shangpings) {
super();
this.yonghus = yonghus;
this.shangpings = shangpings;
}
public static String getName() {
return name;
}
public static void setName(String name) {
shangcheng.name = name;
}
public List<yonghu> getYonghus() {
return yonghus;
}
public void setYonghus(List<yonghu> yonghus) {
this.yonghus = yonghus;
}
public List<shangping> getShangpings() {
return shangpings;
}
public void setShangpings(List<shangping> shangpings) {
this.shangpings = shangpings;
}
}
更多java学习资料可关注:itheimaGZ获取(公冢号)
java 面向对象 购物车的更多相关文章
- Java面向对象课程设计——购物车
Java面向对象课程设计——购物车 小组成员:余景胜.刘格铭.陈国雄.达瓦次仁 一.前期调查 流程 客人(Buyer)先在商城(Mall)中浏览商品(Commidity),将浏览的商品加入购物车(Sh ...
- JAVA面向对象
JAVA面向对象 对象 我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象 只要是对象--属性和行为(方法) 属性 对象有什么 例如:学生有姓名.学 ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java实现购物车功能:方式一:存放在session中.方式二:存储在数据库中
//将购物车产品加入到cookie中,方式同浏览记录.Java实现购物车,方式一(简易版):存储在session中.这种方式实现还不严谨,大家看的时候看思路即可.(1). JSP页面中,选择某一款产品 ...
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- 谈谈Java面向对象的三大特性
Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
随机推荐
- Django2.0——模板渲染(一)
在前面的介绍中我们都是用简单的 django.http.HttpResponse来把内容显示到网页上,本节将讲解如何使用渲染模板的方法来显示内容,即调用精美的HTML页面.模板的创建既可以在项目下创建 ...
- 扫描转换算法——DDA、中点画线画圆、椭圆
我的理解:在光栅图形学中,由于每一个点的表示都只能是整数值,所以光栅图形学实际只是对对实际图形的近似表示. 数值微分法(DDA):以下PPT截图来自北京化工大学李辉老师 代码实现: import ma ...
- 总结一些常用的训练 GANs 的方法
众所周知,GANs 的训练尤其困难,笔者自从跳入了 GANs 这个领域(坑),就一直在跟如何训练 GANs 做「对抗训练」,受启发于 ganhacks,并结合自己的经验记录总结了一些常用的训练 GAN ...
- 配置window下python3环境
功能介绍 整理生信小知识库,一些技巧一些知识. 昨天 以下配置环境基于window操作系统,安装python3版本为例,推荐基础版配置. ! METHOD 1 (基础版) 官网下载对应电脑版本的p ...
- Ambiguous HTTP method Actions require an explicit HttpMethod binding for Swagger 2.0 异常
网上看了很多关于此异常的解决方案,但是大多数都是不能用的,今天把正确的解决方案记录下来,以帮助需要的人 问题:有些接口没有设置HttpPost或HttpGet,非接口设置访问权限为private,控制 ...
- 吴裕雄--天生自然深度学习TensorBoard可视化:监控指标可视化
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 1. 生成变量监控信息并定义生 ...
- JavaSE--jdom解析之bom
参考:http://www.cnblogs.com/findumars/p/3620078.html org.jdom2.input.JDOMParseException: Error on line ...
- [NOI2014]魔法森林(LCT)
蒟蒻又发现自己还没写过LCT…… 首先显然按照权值a从小到大排序,维护b的最小生成树.然后直接扫,代价是加入b的最大值,然后动态加边,因为有边权,所以在lct中边应该理解为点.每次连接(u,v)时,若 ...
- UI Automation编程辅助工具Inspect的下载和使用
UIAutomation微软提供的UI自动化库,主要用AutomationElement类来表示UI 自动化目录树中的一个UI自动化元素,.NET Windows的窗体应用程序和WPF应用程序. In ...
- SEO优化技巧
一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时,然后得到结果.深究其背后的故事,搜索引擎做了很多事情. 在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量的关 ...