面向对象设计大作业:购物车(第一次)

目录

1. 人员分工

成员 任务分工
张文娟 完成项目包括结构和关键代码的编写,前期调查,解释封装性的体现
王宇坤 完成系统描述和功能设计,博客的编写,代码规范

2. 前期调查

我们以京东商城为例,演示从查找商品、选择商品并加入购物车,然后在购物车内进行查看、添加、删除、结算的全过程。

  1. 查找商品


2. 选择商品及商品数量并加入购物车


3. 在购物车内进行查看、添加、删除、结算的全过程

3. 系统描述

购物车系统能够满足买家和店家的不同需求:

店家:可以添加、删除、更改可供买家选购的商品信息(编号、名称、价格、数量)

买家:可以根据卖家提供出的商品信息来选购商品的编号、名称、价格、数量,然后添加到购物车中

在购物车中可以更改、添加、删除已经选购的商品信息,最后会核算出选购的商品的总价格

4. 系统功能流程图

5. UML类图

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

class Goods{
	private Integer id;
	private String name;
	private Double price;
	private Integer number;

7. 关键代码

购物车系统(cart)

package supermarket;

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class Cart {
	
	public static void Choose() {
		System.out.println("请选择您的身份哦~");
		System.out.println("1----我是店主");
		System.out.println("2----我是买家");
		Scanner sc=new Scanner(System.in);
		int choose=sc.nextInt();
		if(choose==1) {
			System.out.println("请输入6位密码");
			int password=sc.nextInt();
			
			if(password==220022) {
				System.out.println("密码输入正确,今天上班也要积极哦!!!");
				Manager.Show();
			}
			else {System.out.println("很抱歉,密码输入错误");
			      Choose();
			}
		}
		else if(choose==2)User.userMenu();
		else System.out.println("没有这个选项哦,请重新选择");
	}
	//选择身份
	
	Map<Integer,Goods> al=new HashMap<Integer,Goods>();
	//添加进主菜单
	public void Content1() {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入商品的ID");
		Integer id = sc.nextInt();
		Goods m=new Goods();
		if(al.containsKey(id)) {
			al.get(id).setNumber((al.get(id).getNumber()+1));
		}
		else {
			m.setId(id);
			System.out.println("请输入商品的名字");
			String name = sc.next();
			m.setName(name);
			System.out.println("请输入商品的价格");
			double price2 = sc.nextDouble();
			m.setPrice(price2);
			m.setNumber(1);
			al.put(id, m);
		}
//	sc.close();
	}
	//添加商品
	
	
public void showMenu() {
	//Scanner sc = new Scanner(System.in);
	for (int i = 0; i < 10; i++) {
		Goods m = new Goods();
		switch (i) {
			case 0:
				m.setId(i);
				m.setName("铅笔");
				m.setPrice(2.00);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 1:
				m.setId(i);
				m.setName("橡皮");
				m.setPrice(1.00);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 2:
				m.setId(i);
				m.setName("明信片");
				m.setPrice(10.00);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 3:
				m.setId(i);
				m.setName("笔记本");
				m.setPrice(6.00);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 4:
				m.setId(i);
				m.setName("小台灯");
				m.setPrice(20.00);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 5:
				m.setId(i);
				m.setName("卡通小杯子");
				m.setPrice(25.00);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 6:
				m.setId(i);
				m.setName("水晶球");
				m.setPrice(15.00);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 7:
				m.setId(i);
				m.setName("水性笔");
				m.setPrice(1.50);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 8:
				m.setId(i);
				m.setName("口罩");
				m.setPrice(0.50);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 9:
				m.setId(i);
				m.setName("便利贴");
				m.setPrice(2.5);
				m.setNumber(10);
				al.put(i,m);
				break;
			case 10:
				m.setId(i);
				m.setName("书签");
				m.setPrice(2.00);
				m.setNumber(10);
				al.put(i,m);
				break;

		}
	}
}

	//查看店内商品
	public void viewOne() {
		System.out.println("请输入要查看商品的ID");
		Scanner sc=new Scanner(System.in);
		Integer id = sc.nextInt();
		System.out.println("Id\t名字\t价格\t数量");
		System.out.println(al.get(id).getId()+"\t"+al.get(id).getName()+"\t"+al.get(id).getPrice()+"\t"+al.get(id).getNumber());
		//sc.close();
	}
	//查看指定商品
	
	public void Delete(){
		System.out.println("请输入要删除的商品的ID");
		Scanner sc=new Scanner(System.in);
		Integer id = sc.nextInt();
		if(al.containsKey(id)) {
			al.remove(id);
			System.out.println("删除成功!");
		}else {
			System.out.println("没有这个商品!");
		}
		
		//sc.close();
	}
	//删除指定商品
	
	public void viewCart() {
		for(Goods g:al.values()) {
			System.out.println("ID\t名字\t价格\t数量");
			System.out.println(g.getId()+"\t"+g.getName()+"\t"+g.getPrice()+"\t"+g.getNumber());
		}
	}
	//查看购物车信息
	
	
	
	public static void main(String[] args) {
		Cart myg=new Cart();
		Scanner sc =new Scanner(System.in);
			//myg.menu();
			myg.Choose();
			/*Integer it = sc.nextInt();
			switch(it) {
			case 0: myg.showmenu();
					myg.viewcart();
					break;
			case 1: myg.cun();
					break;
			case 2:myg.viewone();
					break;
			case 3:myg.delete();
					break;
			case 4:myg.viewcart();
					break;
			case 5:
				myg.allmoney();
				break;
				
			case 6:
				myg.endmenu();
				break;

				default:System.out.println("您的输入有误,还请重新输入哦");
			break;
			}*/
	}
}

class Goods{
	private Integer id;
	private String name;
	private Double price;
	private Integer number;
	Goods(){}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id=id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name=name;
	}
	public Double getPrice() {
		return price;
	}
	public void setPrice(Double price) {
		this.price = price;
	}
	public Integer getNumber() {
		return number;
	}
	public void setNumber(Integer number) {
		this.number=number;
	}
	public Goods(Integer id, String name, Double price, Integer number) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.number = number;
	}
}

店主(manager)

package supermarket;

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class Manager {
	public static void Show() {
		
		Cart man = new Cart();
		man.showMenu();
		Scanner sc = new Scanner(System.in);
		do {
			System.out.println("请按照指示选择功能~");
			System.out.println("0----查看店内所有商品");
			System.out.println("1----添加商品的库存或种类");
			System.out.println("2----查看指定商品信息");
			System.out.println("3----删除店内的商品");
			System.out.println("4----退出登录");
			Integer a = sc.nextInt();
		if (a == 0) {
			//man.showMenu();
			
			man.viewCart();
		} 
		else if (a == 1)
			man.Content1();
		else if(a==2)man.viewOne();
		else if (a == 3)
			man.Delete();
		else if (a == 4)
			Back();
		else
			System.out.println("并没有这个选项哦");
		}while(true);
	}
	// manager的操作流程

	public static void Back() {
		System.out.println("您真的要退出了吗?");
		System.out.println("1----确认退出");
		System.out.println("2----再看看吧");
		Scanner sb = new Scanner(System.in);
		Integer b = sb.nextInt();
		if (b == 1) {
			System.out.println("请确认今天的工作都准确无误哦!");
			System.out.println("下次也不要忘了来店里看看商品种类和库存啊主人!");
			Cart.Choose();
		} 
		else if (b == 2)
			Manager.Show();
		else {
			System.out.println("输错啦输错啦");
			Manager.Show();
		}
	}

}

//结束菜单

买家(user)

package supermarket;

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class User {
	private static Cart use2;
	public static  void userMenu()
	{
		User use1=new User();
		use2=new Cart();
		use2.showMenu();
		do {
		System.out.println("------------------------------------------------");
		System.out.println("欢迎来到张望网上购物中心~");
		System.out.println("------------------------------------------------");
		System.out.println("来看看喜欢什么呀!");
		System.out.println("请按照以下的序号选择想要做的事哦~");
		System.out.println("[0]看看店里都有啥");
		System.out.println("[1]查看指定商品详情");
		System.out.println("[2]添加该商品到购物车");
		System.out.println("[3]从购物车中删除该商品");
		System.out.println("[4]查看购物车中的所有商品");
		System.out.println("[5]结算购物车总价");
		System.out.println("[6]清除购物车");
		System.out.println("[7]离开本店");
		Scanner sd=new Scanner(System.in);
		Integer c=sd.nextInt();
		if(c==0) {
			use2.viewCart();
		}
		else if(c==1)use2.viewOne();
		else if(c==2)use1.Content2();
		else if(c==3)use1.deleteCart();
		else if(c==4)use1.showCart();
		else if(c==5)use1.Calculate();
		else if(c==6)use1.Clear();
		else if(c==7)endMenu();
	}while(true);
	}
	//主菜单
	
	Map<Integer, Goods> a2=new HashMap<Integer,Goods>();
	
	public void Content2() {
		Scanner sc=new Scanner(System.in);
		Goods n=new Goods();
		System.out.println("请输入想要添加商品的ID");
		Integer id = sc.nextInt();
		System.out.println("请问您确定要添加该商品吗?");
		System.out.println("0----再想想");
		System.out.println("1----确认添加");
		Integer answer=sc.nextInt();
		if(answer==0)userMenu();
		else if(answer==1) {
			if(a2.containsKey(id)) {
				System.out.println("购物车中已有该商品,商品数量+1");
				a2.get(id).setNumber((a2.get(id).getNumber()+1));
			}
			else {
				n.setId(id);
				n.setName(use2.al.get(id).getName());
				n.setPrice(use2.al.get(id).getPrice());
				n.setNumber(1);
				a2.put(id,n);
				System.out.println("添加成功!");
			}
		}
		else {
			System.out.println("对不起,没有这个选项哦");
			userMenu();
		}
		}
	
	
	public void deleteCart() {
		System.out.println("请输入想要从购物车中删除的商品的ID");
		Scanner sc=new Scanner(System.in);
		Integer id = sc.nextInt();
		if(a2.containsKey(id)) {
			a2.remove(id);
			System.out.println("删除成功!");
		}else {
			System.out.println("没有这个商品!");
		}
	}
	
	public void Calculate()
	{
		int i;
		double sum=0;
		for(Map.Entry<Integer, Goods> entry : a2.entrySet()){
            sum+=entry.getValue().getPrice()*entry.getValue().getNumber();
        }
		System.out.println("购物车总价为"+sum);
	}
	
	public void showCart() {
		for(Goods k:a2.values()) {
			System.out.println("ID\t名字\t价格\t数量");
			System.out.println(k.getId()+"\t"+k.getName()+"\t"+k.getPrice()+"\t"+k.getNumber());
		}
	}
	
	public void Clear()
	{
		System.out.println("请问您确认要删除购物车吗?");
		System.out.println("0----再想想");
		System.out.println("1----确定删除");
		Scanner sc=new Scanner(System.in);
		int cleara;
		cleara=sc.nextInt();
		if(cleara==0)userMenu();
		else if(cleara==1) {a2.clear();
		                    System.out.println("删除成功!");
		}
		else {System.out.println("对不起,没有这个选项哦");
		      userMenu();
		}
	}
	
	public static void endMenu()
	{
		System.out.println("------------------------------------------------");
		System.out.println("希望本次购物愉快!!!");
		System.out.println("欢迎下次光临~");
		System.out.println("------------------------------------------------");
		Cart.Choose();
	}
}

8. 运行结果展示

主菜单

店主

买家

店主页面及功能

查看店内所有商品

添加商品库存或种类



查看指定商品信息

删除店内的商品

退出登录

买家页面及功能

看看店里都有啥

查看指定商品详情

添加该商品到购物车

从购物车中删除该商品

查看购物车中的所有商品并结算购物车总价

清除购物车

离开本店

posted @ 2021-10-22 01:45  且是无欢  阅读(134)  评论(0)    收藏  举报