7-1 sdut-List-Map--购物车

各位亲爱的小伙伴们,大家好!

欢迎来到美美自助商场,首先请建立商品信息,然后选购商品、确定购买数量,放入购物车,计算出总价格到结算中心进行结算。美美商场祝您购物愉快噢!

输入格式:

首行是美美商场的商品种类的数量N;

接下来是N行商品信息,每行商品信息为:商品编号、商品名称、生产商、商品价格、库存数量;

接下来是顾客购物操作的次数M;

最后,是M行的顾客购买商品的操作,每行购买信息为:商品编号、购买或退货的数量count(>0)、购物标志(1--购买,购物车中该商品数量增加;2--退货,购物车中该商品数量减少;3-删除商品,购物车中该商品数量清0,删除操作时count列的值无效)。

美美商场友情提示:

1、0<购买数量<商品库存数量,正常购买;购买数量>商品库存数量,只能购买现库存数量。

2、0<退货数量<购物车中商品数量时,正常退货;退货数量>购物车中商品数量,只能退现在购物车数量;

3、购物车中商品数量>0时,删除商品成功。

4、您购买商品,退货或者从购物车删除商品这些操作成功时,一定要记得同时增减购物车中商品数量和该商品的库存数量噢!

输出格式:

第一部分:购物车中的所有商品详情。

第一行是购物车中商品的数量T;若T=0,则无商品详情信息输出。

接下来是T行商品详情,按照商品编号从小到大的顺序进行输出。

每种商品占一行,详情信息包括:商品编号、商品名称、生产商、商品价格(保留2位小数)、商品最新库存数量、已购买的商品数量。数据之间用1个空格分隔。

最后一行输出:购物车中商品的总价格。(保留2位小数)

第二部分:现有商品清单信息。

第一行是商品的数量N。

接下来是N行商品详情,按照商品编号从小到大的顺序进行输出。

每种商品占一行,详情信息包括:商品编号、商品名称、生产商、商品价格(保留2位小数)、商品最新库存数量。数据之间用1个空格分隔。

输入样例:

5
1 运动鞋  Adidas  300.80   10
2 蓝球服  李宁    268.00    10
3 苹果    栖霞    5.00	     500
4 智能手表  苹果  4888.00   10
5 鼠标   罗技     120.00    50
9
1 5 1
3 5 1
4 1 1
3 2 2
5 2 1 
1 2 1
5 0 3
3 1 1
3 5 2

输出样例:

2
1 运动鞋 Adidas 300.80 3 7
4 智能手表 苹果 4888.00 9 1
6993.60
5
1 运动鞋 Adidas 300.80 3
2 蓝球服 李宁 268.00 10
3 苹果 栖霞 5.00 500
4 智能手表 苹果 4888.00 9
5 鼠标 罗技 120.00 50

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 Mb

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int N;
		int no;
		String name;
		String name1;
		double prise;
		int geshu;
		N=sc.nextInt();
		ArrayList m=new ArrayList();
		ArrayList a=new ArrayList();
		ArrayList li=new ArrayList();
		//ShangPin sp=new ShangPin();
		for(int i=0;i<N;i++) {
			no=sc.nextInt();
			name=sc.next();
			name1=sc.next();
			prise=sc.nextDouble();
			geshu=sc.nextInt();
			li.add(new ShangPin(no,name,name1,prise,geshu));
			a.add(new ShangPin(no,name,name1,prise,geshu));
		}
		/*System.out.println("=============================================");
		for(int q=0;q<a.size();q++) {
			System.out.println(li.get(q));
		}*/
		int M;
		M=sc.nextInt();
		for(int i=1;i<=M;i++) {
			int xuanze=sc.nextInt();
			int ges=sc.nextInt();
			int caozuo=sc.nextInt();
			for(int y=0;y<li.size();y++) {
				ShangPin s=(ShangPin)li.get(y);
				ShangPin s1=(ShangPin)a.get(y);
				if(s.getNo()==xuanze) {
					if(caozuo==1) {
						s.geshu=s.geshu-ges;
						
					}else if(caozuo==2) {
						if(s.geshu+ges>s1.geshu) {
							s.geshu=s1.geshu;
						}else
						s.geshu=s.geshu+ges;
					}else {
						s.geshu=s1.geshu;
					}
				}
				
			}
				
		}
		//System.out.println("=============================================");
		int index=0;
		double sum=0.0;
		for(int y=0;y<li.size();y++) {
			ShangPin s=(ShangPin)li.get(y);
			ShangPin s1=(ShangPin)a.get(y);
			if(s.geshu!=s1.geshu) {
				index++;
				sum=sum+s.prise*(s1.geshu-s.geshu);
			}
		}
		System.out.println(index);
		for(int y=0;y<li.size();y++) {
			ShangPin s=(ShangPin)li.get(y);
			ShangPin s1=(ShangPin)a.get(y);
			if(s.geshu!=s1.geshu) {
				System.out.print(s.no+" "+s.name+" "+s.name1+" ");
				System.out.printf("%.2f",s.prise);
				System.out.println(" "+s.geshu+" "+(s1.geshu-s.geshu));
			}
		}
		System.out.printf("%.2f\n",sum);
		System.out.println(li.size());
		for(int q=0;q<li.size();q++) {
			ShangPin s=(ShangPin)li.get(q);
			ShangPin s1=(ShangPin)a.get(q);
			System.out.print(s.no+" "+s.name+" "+s.name1+" ");
			System.out.printf("%.2f",s.prise);
			System.out.println(" "+s.geshu);
		}
		//System.out.println("运行结束");
	}
}
class ShangPin{
	int no;
	String name;
	String name1;
	double prise;
	int geshu;
	public ShangPin() {
		
	}
	public ShangPin(int no,String name,String name1,double prise,int geshu) {
		this.no=no;
		this.name=name;
		this.name1=name1;
		this.prise=prise;
		this.geshu=geshu;
	}
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrise() {
		return prise;
	}
	public void setPrise(double prise) {
		this.prise = prise;
	}
	public int getGeshu() {
		return geshu;
	}
	public void setGeshu(int geshu) {
		this.geshu = geshu;
	}
	
	public String getName1() {
		return name1;
	}
	public void setName1(String name1) {
		this.name1 = name1;
	}
	@Override
	public String toString() {
		return  no + " " + name + " " + name1 + " " + prise + " " + geshu
				;
	}
	
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值