java实验:模拟手机专卖店发行的购物券进行促销

请利用内部类相关知识,编程实现:模拟手机专卖店发行内部购物券进行促销的案例。


文章目录

前言

一、实验内容

二、实验思路

三、实验代码

四、实验结果截图

总结


前言

一篇关于内部类的实验,主要用于熟练掌握内部类的使用


一、实验内容

为了促销自己的产品,某手机专卖店决定发行自己的内部购物券,其他商场不能发行该购物券。请利用内部类相关知识,编程实现:模拟手机专卖店发行内部购物券进行促销的案例。具体要求如下:

  1. 定义一个模拟手机专卖店的MobilePhoneShop类,该类有4个私有成员变量:表示手机库存量的mobilePhoneAmount(int型),表示手机市场价的mobilePhonePrice(double型),以及用内部类InHouseConpons[]声明的两个成员对象ihc1和ihc2,表示手机专卖店发行的两类内部购物券。
  2. MobilePhoneShop类提供如下的带参构造方法:

         public MobilePhoneShop(int mobilePhoneAmount, double mobilePhonePrice) {

                  // 完成成员变量mobilePhoneAmount, mobilePhonePrice的初始化;

                  // 完成两个成员对象ihc1和ihc2的初始化,需要通过new运算符调用内部类

//  InHouseConpons的带参构造方法。

         }

(3)MobilePhoneShop类提供所有成员变量mobilePhoneAmount, mobilePhonePrice的setter方法和getter方法,以及两个成员对象ihc1和ihc2的getter方法。

(4)要求在内部类InHouseConpons中定义两个私有成员变量id(int型,表示内部购物券的编号)和moneyValue(double型,表示内部购物券的价值);提供全参构造方法,对这两个成员变量进行初始化;提供如下的成员方法:

                  public void buyMobilePhone() {

                          /*  根据内部购物券的价值和手机市场价计算可以购买的手机数量,根据计算

结果,输出有关信息,当内部购物券的价值足够时,输出如下格式的信息:

恭喜!您用价值为 xxx的内部购物券(编号:xxx )购买了xxx部手机!

当内部购物券的价值不足时,输出如下格式的信息:

对不起!您的购物券(编号:xxx)价值不足!

*/

}

(5)编写测试主类TestInHouseCoupons,提供如下的main方法:

         public static void main(String[] args) {

                  /*

创建MobilePhoneShop类的对象mobileShop,对手机库存量及手机市场价进行

初始化(例如,分别赋初值100和 3500);

按照如下格式输出手机库存量和手机市场价:

                        现在手机专卖店有xxx部手机,每部手机市场价为xxx元。

            调用mobileShop的有关方法获取内部购物券对象ihc1和ihc2,并调用它们的

buyMobilePhone方法模拟手机购买行为;

按照如下格式输出手机的现有库存量:

                        现在手机专卖店还有xxx部手机!

       */

         }

  1. 运行程序,检查结果是否正确,并进行必要的程序调试。
  2. 扩展要求:编写IdGenerator类,用于自动生成内部购物券的编号,该类除了提供Random类声明的私有成员变量idGenerator和无参构造方法(使用当前已经逝去的时间作为默认种子来创建Random类的实例化对象,并用它来初始化成员变量idGenerator)外,还要提供如下的成员方法供外部调用:

         public int getNextId() {

           /*

调用idGenerator的nextInt方法向调用者返回内部购物券的一个随机编号

(0-10000000范围内的int型的随机数)。

*/

}

在此基础上,修改MobilePhoneShop类的构造方法,利用IdGenerator类的实例化对象,随机生成内部购物券的编号。完成程序的代码编写与测试。

(8)自由创作:结合你对市场上流行的各种促销手段的认识,在MobilePhoneShop类中增加更多的内部类(例如内部打折卡等),完成程序代码的修改,并进行相应的功能测试。

二、实验思路

如上文所述,运用内部类的知识,构造相关类,函数,进行调用完成实验要求

三、实验代码

public class mobilephoneshop {
    private int mobilephoneamount;//手机库存量
    private double mobliephoneprice;//价格
    private inhousecoupon [] ihc1;
    private inhousecoupon [] ihc2;
    private dazhe [] ihc3;
    //带参构造
    public mobilephoneshop(int mobilephoneamount, double mobliephoneprice) {
        this.mobilephoneamount = mobilephoneamount;
        this.mobliephoneprice = mobliephoneprice;
    }

    public int getMobilephoneamount() {
        return mobilephoneamount;
    }

    public void setMobilephoneamount(int mobilephoneamount) {
        this.mobilephoneamount = mobilephoneamount;
    }

    public double getMobliephoneprice() {
        return mobliephoneprice;
    }

    public void setMobliephoneprice(double mobliephoneprice) {
        this.mobliephoneprice = mobliephoneprice;
    }


    public inhousecoupon[] getIhc1() {
        return ihc1;
    }

    public void setIhc1(inhousecoupon[] ihc1) {
        this.ihc1 = ihc1;
    }

    public inhousecoupon[] getIhc2() {
        return ihc2;
    }

    public void setIhc2(inhousecoupon[] ihc2) {
        this.ihc2 = ihc2;
    }
    public dazhe[] getIhc3() {
        return ihc3;
    }

    public void setIhc3(dazhe[] ihc3) {
        this.ihc3 = ihc3;
    }


    //提供内部类生成购物卡的方法,要求提供购物卡的数量和金额
    public void madefirstcoupon(int num,double price){
        ihc1=new inhousecoupon[num];
        for(int i=0;i<num;i++){
            ihc1[i]=new inhousecoupon(i,price);
        }
    }
    public void madesecondcoupon(int num,double price){
        ihc2=new inhousecoupon[num];
        for(int i=0;i<num;i++){
            ihc2[i]=new inhousecoupon(idgenertor.getid(num), price);
        }
    }
    public void madethirdcoupon(int num,double price){
        ihc3= new dazhe[num];
        for(int i=0;i<num;i++){
            ihc3[i]=new dazhe(idgenertor.getid(num),price);
        }

    }
    public  class inhousecoupon{
        private int id;//购物券编号
        private double moneyvalue;//购物券面值;
        public inhousecoupon(int id,double moneyvalue){
            super();
            this.id=id;
            this.moneyvalue=moneyvalue;
        }
        public void bugmobilephone(){
            if(moneyvalue>=mobliephoneprice){
                //恭喜!你使用价值为XXX的内部购物券(编号XXX)购买了XXX部手机!
                System.out.println("恭喜!宁用价值为XXX的内部购物券("+id+"."+moneyvalue+"购买了手机,使用后还剩下"+(moneyvalue-mobliephoneprice)+"元。");
            }else {
                //对不起,宁的购物券不够购买手机,还需要支付XX元
                System.out.println("对不起!宁的内部购物券("+id+":"+moneyvalue+"不够购买手机,还需要支付"+(mobliephoneprice-moneyvalue)+"元.");
            }
            mobilephoneamount--;
        }

    }


    public class dazhe{
        private int id;//购物券编号
        private double discount;//购物券打折面值
        public  dazhe(int id,double discount){
            //super();
            this.id=id;
            this.discount=((1-discount)*mobliephoneprice);
        }
        public void bugmobilephone(){
            if(discount>=mobliephoneprice){
                //恭喜!你使用价值为XXX的内部购物券(编号XXX)购买了XXX部手机!
                System.out.println("恭喜!宁用价值为XXX的内部购物券("+id+"."+discount+"购买了手机,使用后还剩下"+(discount-mobliephoneprice)+"元。");
            }else {
                //对不起,宁的购物券不够购买手机,还需要支付XX元
                System.out.println("对不起!宁的内部购物券("+id+":"+discount+"不够购买手机,还需要支付"+(mobliephoneprice-discount)+"元.");
            }
            mobilephoneamount--;
        }
    }
    @Override
    public String toString(){
        return "现在手机专卖店有"+mobilephoneamount+",每部手机市场价为"+mobliephoneprice+"元。";
    }
}
public class testmobilephoneshop {
    public static void main(String[] args) {
        mobilephoneshop mobileshop = new mobilephoneshop(100,3500);
        System.out.println(mobileshop.toString());
        //调用外部类内的方法去获取内部购物券
        mobileshop.madefirstcoupon(1000,300);
        mobileshop.madesecondcoupon(5,5000);
        mobileshop.madethirdcoupon(10,0.7);
        //模拟手机购买
        mobileshop.getIhc1()[0].bugmobilephone();
        mobileshop.getIhc2()[0].bugmobilephone();
        //看一下商店剩余情况
        System.out.println(mobileshop);
        //第二种购物方法
        mobilephoneshop.inhousecoupon ihc=mobileshop.new inhousecoupon(1,300);
        ihc.bugmobilephone();
        System.out.println(mobileshop);
        //打折券
        mobileshop.getIhc3()[0].bugmobilephone();
        System.out.println(mobileshop);
    }
}
import java.util.Random;
public class idgenertor {
    public static int getid(int range){
        Random r = new Random();
        int id = r.nextInt(range);
        return id;

    }
}

四、实验结果截图

如上图所示,已经将实验所要求的手机购买模拟实现了出来,再加上自主创作的打折券(虽然好像还有很大的改动空间)


总结

以上,就是关于手机专卖店进行关于内部购物券的促销的全部内容了,对内部类的知识进行了练习和巩固。

猜你喜欢

转载自blog.csdn.net/m0_72471315/article/details/127642224
今日推荐