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();
}
}