Java上机作业

Java上机作业

定义一个商品类Goods,要求如下。
属性:名称、数量、单价(都是private的访问权限)
方法:(都是public访问权限)
构造方法:2个参数(名称、单价),数量取0,调用3个参数的构造方法进行赋值;
构造方法:3个参数(名称、数量、单价),根据参数的值给对应属性赋值;
分别定义名称、数量、单价的getter、setter访问器;
buy方法:1个参数(购买数量n),把商品的数量加n
sale方法:1个参数(销售数量n),先判断商品数量是否足够销售,如果可以则把数量减n
print方法:输出商品信息。

public class Goods {
	private String name;
	private int num;
	private double price;
	//分别定义名称、数量、单价的getter、setter
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	//2个参数构造方法
	public Goods(String name,double price) {
		this(name, 0, price);
	}
	//3个参数构造方法
	public Goods(String name,int num,double price) {
		this.name=name;
		this.num=num;
		this.price=price;
	}
	public int buy(int n) {
		return num+n;
	}
	public int sale(int n) {
		if(n<num) {
			return num-n;
		}
		else
			return 0;
	}
	public void print() {
		System.out.println(name+"的单价为"+price+"还剩下"+num+"件!");
	}

}

定义GoodsManage类,要求如下:
属性:商品数组(Goods类型的数组)
方法:构造方法:1个参数(商品数组长度n),根据参数的值创建商品数组,然后循环遍历数组,输入每个商品的名称、数量、单价等信息,并调用Goods类的构造方法为每个数组元素创建Goods对象。
search方法: 1个参数(名称),在商品数组中查找是否包含与参数名称相同的商品,如果有则调用其print方法输出商品信息,返回其下标。否则输出查找失败信息,返回-1。
search方法: 2个参数(最低价格、最高价格),在商品数组中查找商品价格在最低价格和最高价格之间的所有商品,若查找成功则依次输出这些商品信息,返回true。若查找失败则输出错误信息,返回false。
buyGoods方法:两个参数(商品名称、购买数量),在商品数组中根据名称参数查找到对应的商品对象,并调用其buy方法实现购买操作。
saleGoods方法:两个参数(商品名称、销售数量),在商品数组中根据名称参数查找到对应的商品对象,并调用其sale方法实现销售操作。
total方法:遍历商品数组,求解数组所有商品的总价(注意:单个商品也要算总价=数量*单价)。
printAll方法:遍历数组,输出每个商品的信息。

import java.util.Scanner;

public class GoodsManage {
	Goods[] goods;
	Scanner s=new Scanner(System.in);
	public GoodsManage(int n) {
		goods=new Goods[n];
		
		for(int i=0;i<goods.length;i++) {
			goods[i]=new Goods(s.next(),s.nextInt(),s.nextDouble());
		}
		
	}
	public int search(String name) {
		
		for(int i=0;i<goods.length;i++) {
			if(name.equals(goods[i].getName())) {
				goods[i].print();
				return 0;
			}
		}
		System.out.println("没有该商品!");
		return -1;
	}
	public boolean search(double min,double max) {
		int j=0;
		System.out.println("价格在"+min+"至"+max+"的有:");
		for(int i=0;i<goods.length;i++) {
			if(goods[i].getPrice()>min&&goods[i].getPrice()<max) {
				goods[i].print();
				j++;
			}
		}
		if(j==0) {
			System.out.println("输出错误信息!");
			return false;
		}
		return true;
	}
	public void buyGoods(String name,int n) {
		for(int i=0;i<goods.length;i++) {
			if(name.equals(goods[i].getName())) {
				goods[i].setNum(goods[i].buy(n));
				
			}
		}
	}
	public void saleGoods(String name,int n) {
		for(int i=0;i<goods.length;i++) {
			if(name.equals(goods[i].getName())) {
				goods[i].setNum(goods[i].sale(n));
			}
		}
	}
	public double total() {
		double t=0,single=0;
		for(int i=0;i<goods.length;i++) {
			single=goods[i].getNum()*goods[i].getPrice();
			t=t+single;
		}
		return t;
	}
	public void printAll() {
		for(int i=0;i<goods.length;i++) {
			goods[i].print();
		}
	}

}

编写测试类GoodsDemo,包含main方法,在main方法中执行以下操作:创建GoodsManage类的对象
调用其printAll、total、buyGoods、saleGoods、search等方法实现多个商品的输出、汇总、购买、销售、查询。

public class GoodsDemo {

	public static void main(String[] args) {
		GoodsManage c=new GoodsManage(3);
		c.printAll();
		System.out.println("======================");
		System.out.println("全部商品的价值为"+c.total());
		System.out.println("======================");
		c.buyGoods("棒棒糖",100);
		System.out.println("======================");
		c.saleGoods("牛肉干",60);
		System.out.println("======================");
		c.search("薯片");
		System.out.println("======================");
		c.search(30.0,60.0);
		System.out.println("======================");
		c.printAll();

	}

}
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值