zoukankan      html  css  js  c++  java
  • 第1次任务:购物车程序的面向对象设计

    本次任务,按小组完成。每组最多2人。

    目标:

    学会使用讲故事的方式找到系统中可能包含的类与属性
    理解封装
    

    任务:

    编码规范:使用英文对类、方法、包进行命名(查英文词典,不得出现拼音)。参考JAVA编码规范,进行类命名,方法命名、包命名,合适的缩进,有意义的变量名。见参考资料1中的1.1-1.4。
    前期调查与功能设计:调查京东商城或者亚马逊商城中的购物车,体验从搜索商品、加入购物车、操作购物车、下单全过程,思考该过程可能包含的类。演示中要求图多字少。
    面向对象设计:以面向对象的方法编写购物车代码。先设计有什么类,再考虑什么方法放到那个类中合适。初期可不用完成具体功能,只要将类名、类之间的关系、方法名设计好即可。见参考资料2、3。注意学习类与类之间的关系(先重点掌握关联关系与依赖关系)。
    PPT制作或博客制作并上台演示:演示前,请务必自己在同学面前预演一遍。
    

    注意:初期将重点放在面向对象设计、命名规范。
    以上任务,请小组组长明确分工,课堂展示时教师将针对每个组员负责的部分进行提问检查。
    未完成所负责任务,考核不合格。

    分工表格示例(请组长将上述任务妥善分配):

    任务 姓名
    编码规范、前期调查与功能设计 胡旻轩
    面向对象设计、PPT制作或博客制作 卢伟杰

    1.前期调查。

    通过对京东商城的调查,商城需要具有搜索、添加购物车功能,购物车的属性有商品名、商品数量以及商品价格;且购物车需要具有添加商品、删除商品、计算商品总价格和结算生成订单功能。

    2.系统功能结构图。

    购物流程图

    购物车功能结构图

    3.系统描述:一段用来描述系统功能与流程的文字,用红色字代表可能的对象(名词)或属性,用蓝色字代表可能的方法(动词)。

    • 首先进行搜索商品,可通过商品名称或编号进行相应的搜索,然后可添加至购物车中,即可在购物车中进行商品的添加、删除、以及进行结算。

    4.UML类图:类的关键属性与方法、类与类之间的关系。每个类的功能描述。可使用ProcessOn绘制。

    5.本系统哪里体现了面向对象的封装性。

    • 商品的属性上体现了面对对象的封装,private就是一种私有化的封装。
    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;
    	}
     
    }
    

    6.项目包结构与关键代码:项目的包结构(为什么要这样设计包结构),主要功能(如网购物车添加、删除商品)的流程图与关键代码。

    • 商品的加购

    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;
     
    	}
    
    
    • 基本功能的实现:1-加入购物车,2-查询商品,3-结算,4-退出
    if (user) {
    			System.out.println("登录成功");
    			while (true) {
     
    				System.out.println("1-查看购物车" + "	" + "2-查询商品" + "
    " + "3-结算" + "	" + "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("登录失败");
    		}
     
    	}
    
    
  • 相关阅读:
    Atlas
    MHA高可用
    Mycat 读写分离
    数据库 基于GTID主从复制
    DHCP服务
    python垃圾回收机制
    深拷贝、浅拷贝、引用(总结)
    python内存管理机制
    web安全-横向越权与纵向越权
    登录功能SQL注入
  • 原文地址:https://www.cnblogs.com/eau2077/p/15376270.html
Copyright © 2011-2022 走看看