设计电商类,其中包含商品类,商品类属性(名称、价格、介绍、厂家、生产地址),继承类有食品类、电气类、服装类、玩具类。
食品类属性:有效时长、重量
电气类属性:电压、功率、重量
服装类属性:材质、面料、成分
玩具类属性:材质、分类、适用年龄
要求:
- 设计商品类,封装商品信息
- 设计继承类,继承商品类,封装继承商品信息
- 设计商城,商城中有一个各类商品的集合,客户可以看到所有商品,也可以根据不同继承类查询商品,每类商品不少以五种
- 查询商城中价格超过100元的商品
- 查询生产地是“北京”的商品
- 根据商品价格给商城排序,价格从高到低
- 设计购物车,购物车包括商品名称和商品数量,输入商品名称,显示商品信息,输入数量,加入购物车,完成添加后,输入“结账”,计算所有商品价格。
- 设计抽奖功能,查询所有商品,生成随机数,随机数范围0到商品集合长度,生成随机数后,通过下标获取商品,显示商品信息
// 父类 商品类
package nightpractice;
public class ShangPin implements Comparable<ShangPin>{
private String name;//名称
private double price;//价格
private String introduce;//介绍
private String factory;//厂家
private String address;//生产地址
public ShangPin() {
}
public ShangPin(String name, double price, String introduce, String factory, String address) {
super();
this.name = name;
this.price = price;
this.introduce = introduce;
this.factory = factory;
this.address = address;
}
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 String getIntroduce() {
return introduce;
}
public void setIntroduce(String introduce) {
this.introduce = introduce;
}
public String getFactory() {
return factory;
}
public void setFactory(String factory) {
this.factory = factory;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public int compareTo(ShangPin o) {
//按照当前的类作为参照对象,与方法中传入的参数进行对比
//如果返回为正数,则表示大,为负数,则表示小,为0,则表示相等
if(this.price>o.getPrice()){
return -1;
}else if(this.price<o.getPrice()){
return 1;
}else{
return 0;
}
}
}
// 子类 食品类
package nightpractice;
public class ShiPin extends ShangPin{
private int day;//有效时常
private int weight;//重量
public ShiPin(int day, int weight) {
super();
this.day = day;
this.weight = weight;
}
public ShiPin() {
}
public ShiPin(String name, double price, String introduce, String factory, String address) {
super(name, price, introduce, factory, address);
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
// 子类 电气类
package nightpractice;
public class DianQi extends ShangPin{
private String dianYa;//电压
private String gongLv;//功率
private String zhongLiang;//重量
public DianQi(String dianYa, String gongLv, String zhongLiang) {
super();
this.dianYa = dianYa;
this.gongLv = gongLv;
this.zhongLiang = zhongLiang;
}
public DianQi() {
super();
}
public DianQi(String name, double price, String introduce, String factory, String address) {
super(name, price, introduce, factory, address);
}
public String getDianYa() {
return dianYa;
}
public void setDianYa(String dianYa) {
this.dianYa = dianYa;
}
public String getGongLv() {
return gongLv;
}
public void setGongLv(String gongLv) {
this.gongLv = gongLv;
}
public String getZhongLiang() {
return zhongLiang;
}
public void setZhongLiang(String zhongLiang) {
this.zhongLiang = zhongLiang;
}
}
// 子类 服装类
package nightpractice;
public class FuZhuang extends ShangPin{
private String caiZhi;//材质
private String mianLiao;//面料
private String chengFen;//成分
public FuZhuang() {
super();
}
public FuZhuang(String name, double price, String introduce, String factory, String address) {
super(name, price, introduce, factory, address);
}
public FuZhuang(String caiZhi, String mianLiao, String chengFen) {
super();
this.caiZhi = caiZhi;
this.mianLiao = mianLiao;
this.chengFen = chengFen;
}
public String getCaiZhi() {
return caiZhi;
}
public void setCaiZhi(String caiZhi) {
this.caiZhi = caiZhi;
}
public String getMianLiao() {
return mianLiao;
}
public void setMianLiao(String mianLiao) {
this.mianLiao = mianLiao;
}
public String getChengFen() {
return chengFen;
}
public void setChengFen(String chengFen) {
this.chengFen = chengFen;
}
}
// 子类 玩具类
package nightpractice;
public class wanJv extends ShangPin{
private String caiZhi;//材质
private String fenLei;//分类
private String age;//适用年龄
public wanJv() {
super();
}
public wanJv(String name, double price, String introduce, String factory, String address) {
super(name, price, introduce, factory, address);
}
public wanJv(String caiZhi, String fenLei, String age) {
super();
this.caiZhi = caiZhi;
this.fenLei = fenLei;
this.age = age;
}
public String getCaiZhi() {
return caiZhi;
}
public void setCaiZhi(String caiZhi) {
this.caiZhi = caiZhi;
}
public String getFenLei() {
return fenLei;
}
public void setFenLei(String fenLei) {
this.fenLei = fenLei;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
// 测试类
package nightpractice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
List<ShangPin> shangpin=new ArrayList<ShangPin>();
ShangPin shipin1=new ShiPin("香肠一号",10.0,"熟食,可直接吃","长春食品厂","九台区");
ShangPin shipin2=new ShiPin("香肠二号",12.0,"熟食,可直接吃","长春食品厂","九台区");
ShangPin shipin3=new ShiPin("香肠三号",14.0,"熟食,可直接吃","长春食品厂","九台区");
ShangPin shipin4=new ShiPin("香肠四号",16.0,"熟食,可直接吃","长春食品厂","九台区");
ShangPin shipin5=new ShiPin("香肠五号",18.0,"熟食,可直接吃","长春食品厂","九台区");
shangpin.add(shipin1);
shangpin.add(shipin2);
shangpin.add(shipin3);
shangpin.add(shipin4);
shangpin.add(shipin5);
ShangPin dianqi1=new DianQi("电视机1代",1000,"可以看电视节目","长春电器厂","北京");
ShangPin dianqi2=new DianQi("电视机2代",900,"可以看电视节目","长春电器厂","北京");
ShangPin dianqi3=new DianQi("电视机3代",800,"可以看电视节目","长春电器厂","北京");
ShangPin dianqi4=new DianQi("电视机4代",700,"可以看电视节目","长春电器厂","北京");
ShangPin dianqi5=new DianQi("电视机5代",600,"可以看电视节目","长春电器厂","北京");
shangpin.add(dianqi1);
shangpin.add(dianqi2);
shangpin.add(dianqi3);
shangpin.add(dianqi4);
shangpin.add(dianqi5);
ShangPin fuzhuang1=new FuZhuang("外套第一版",100,"可以穿","长春服装厂","朝阳区");
ShangPin fuzhuang2=new FuZhuang("外套第二版",120,"可以穿","长春服装厂","朝阳区");
ShangPin fuzhuang3=new FuZhuang("外套第三版",140,"可以穿","长春服装厂","朝阳区");
ShangPin fuzhuang4=new FuZhuang("外套第四版",160,"可以穿","长春服装厂","朝阳区");
ShangPin fuzhuang5=new FuZhuang("外套第五版",180,"可以穿","长春服装厂","朝阳区");
shangpin.add(fuzhuang1);
shangpin.add(fuzhuang2);
shangpin.add(fuzhuang3);
shangpin.add(fuzhuang4);
shangpin.add(fuzhuang5);
ShangPin wanjv1=new wanJv("惨叫鸡1代",10.0,"可以叫","长春玩具厂","南关区");
ShangPin wanjv2=new wanJv("惨叫鸡5代",9.0,"可以叫","长春玩具厂","南关区");
ShangPin wanjv3=new wanJv("惨叫鸡3代",8.0,"可以叫","长春玩具厂","南关区");
ShangPin wanjv4=new wanJv("惨叫鸡4代",7.0,"可以叫","长春玩具厂","南关区");
ShangPin wanjv5=new wanJv("惨叫鸡5代",6.0,"可以叫","长春玩具厂","南关区");
shangpin.add(wanjv1);
shangpin.add(wanjv2);
shangpin.add(wanjv3);
shangpin.add(wanjv4);
shangpin.add(wanjv5);
for(ShangPin s:shangpin){
System.out.println(s.getName()+"的价格是:"+s.getPrice()+",功能是:"+s.getIntroduce()+",厂家是:"+s.getFactory()+",地址是:"+s.getAddress());
}
// 商品大于100的商品查询:
System.out.println();
System.out.println("*******商品大于100查询:*******");
for(ShangPin s:shangpin){
if(s.getPrice()>100){
System.out.println(s.getName()+"的价格是:"+s.getPrice()+",功能是:"+s.getIntroduce()+",厂家是:"+s.getFactory()+",地址是:"+s.getAddress());
}
}
// 产地是北京的查询:
System.out.println();
System.out.println("*******产地是北京的查询:*******");
for(ShangPin s:shangpin){
if("北京".equals(s.getAddress())){
System.out.println(s.getName()+"的价格是:"+s.getPrice()+",功能是:"+s.getIntroduce()+",厂家是:"+s.getFactory()+",地址是:"+s.getAddress());
}
}
// 商品价格排序:
System.out.println();
System.out.println("*******商品价格排序:*******");
Collections.sort(shangpin);
for(ShangPin s:shangpin){
System.out.println(s.getName()+"的价格是:"+s.getPrice()+",功能是:"+s.getIntroduce()+",厂家是:"+s.getFactory()+",地址是:"+s.getAddress());
}
//购物车显示
List<ShangPin> shangpin1=new ArrayList<ShangPin>();
System.out.println();
System.out.println("*******购物车显示:*******");
System.out.println("请输入商品名称:");
String name1=new Scanner(System.in).nextLine();
for(ShangPin s:shangpin){
if(name1.equals(s.getName())){
System.out.println("请输入商品的数量:");
int num=new Scanner(System.in).nextInt();
switch (name1) {
case "香肠一号":
for(int i=0;i<num;i++){
shangpin1.add(shipin1);
}
break;
case "香肠二号":
for(int i=0;i<num;i++){
shangpin1.add(shipin2);
}
break;
case "香肠三号":
for(int i=0;i<num;i++){
shangpin1.add(shipin3);
}
break;
case "香肠四号":
for(int i=0;i<num;i++){
shangpin1.add(shipin4);
}
break;
case "香肠五号":
for(int i=0;i<num;i++){
shangpin1.add(shipin5);
}
break;
case "电视机1代":
for(int i=0;i<num;i++){
shangpin1.add(dianqi1);
}
break;
case "电视机2代":
for(int i=0;i<num;i++){
shangpin1.add(dianqi2);
}
break;
case "电视机3代":
for(int i=0;i<num;i++){
shangpin1.add(dianqi3);
}
break;
case "电视机4代":
for(int i=0;i<num;i++){
shangpin1.add(dianqi4);
}
break;
case "电视机5代":
for(int i=0;i<num;i++){
shangpin1.add(dianqi5);
}
break;
case "外套第一版":
for(int i=0;i<num;i++){
shangpin1.add(fuzhuang1);
}
break;
case "外套第二版":
for(int i=0;i<num;i++){
shangpin1.add(fuzhuang2);
}
break;
case "外套第三版":
for(int i=0;i<num;i++){
shangpin1.add(fuzhuang3);
}
break;
case "外套第四版":
for(int i=0;i<num;i++){
shangpin1.add(fuzhuang4);
}
break;
case "外套第五版":
for(int i=0;i<num;i++){
shangpin1.add(fuzhuang5);
}
break;
case "惨叫鸡1代":
for(int i=0;i<num;i++){
shangpin1.add(wanjv1);
}
break;
case "惨叫鸡2代":
for(int i=0;i<num;i++){
shangpin1.add(wanjv2);
}
break;
case "惨叫鸡3代":
for(int i=0;i<num;i++){
shangpin1.add(wanjv3);
}
break;
case "惨叫鸡4代":
for(int i=0;i<num;i++){
shangpin1.add(wanjv4);
}
break;
case "惨叫鸡5代":
for(int i=0;i<num;i++){
shangpin1.add(wanjv5);
}
break;
default:
System.out.println("商品输入错误,请重新输入!");
break;
}
}
}
double sum=0;
for(ShangPin s1:shangpin1){
System.out.println(s1.getName()+"的价格是:"+s1.getPrice()+",功能是:"+s1.getIntroduce()+",厂家是:"+s1.getFactory()+",地址是:"+s1.getAddress());
sum+=s1.getPrice();
System.out.println("总金额是:"+sum);
}
// 抽奖功能
System.out.println();
System.out.println("************抽奖**********");
System.out.println("全部奖品是:");
for(ShangPin s:shangpin){
System.out.println(s.getName()+"的价格是:"+s.getPrice()+",功能是:"+s.getIntroduce()+",厂家是:"+s.getFactory()+",地址是:"+s.getAddress());
}
System.out.println();
System.out.println("您抽到的奖品是:");
int numb=(int)(Math.random()*shangpin.size());
// System.out.println(shangpin.get(numb).getName());
System.out.println(shangpin.get(numb).getName()+"的价格是:"+shangpin.get(numb).getPrice()+",功能是:"+shangpin.get(numb).getIntroduce()+",厂家是:"+shangpin.get(numb).getFactory()+",地址是:"+shangpin.get(numb).getAddress());
}
}
运行结果: