当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Java实现微信发红包

    栏目:Linux/apache问题 时间:2019-12-11 16:10

    前言

            红包文化源远流长。从古时的红色纸包,到手机App中的手气红包,红包作为一种独特的中华文化传承至今。之前的所有内容中,综合Java这方面的知识,可以模拟发普通红包。那么这篇博客,我将整合之前介绍的所有的技术和知识,编写一个带界面版的 发红包 案例。

    需求分析

            分析并使用已给出的类,编写程序,设置红包类型。

    小贴士 红包类型:

    1.普通红包:金额均分。不能整除的,余额添加到最后一份红包中。
    2.手气红包:金额随机。各个红包金额累和与总金额相等。
    红包场景: 此案例是模拟群主给群成员发红包,群主自己打开最后一个红包的场景。

    案例实现

    环境搭建:

    1.创建项目:名称自定义,建议为 RedPacketDemo 。
    2.导入图片:将 pic 目录,导入项目中,与 src 目录平级。
    3.导入已知类:在 src 下创建一个包,名字自定义,存放编辑的类。

    1. RedPacketFrame :(界面)

    一个抽象类,包含了一些属性,是红包案例的页面。

    public abstract class RedPacketFrame extends JFrame {
     /* ownerName : 群主名称 */
     public String ownerName = "谁谁谁谁";
     /* openMode : 红包的类型 [普通红包/手气红包] */ 
     public OpenMode openMode = null;
     /**
     * 构造方法:生成红包界面. 
     * @param title 页面的标题. 
     */ 
     public RedPacketFrame(String title) {
      super(title);
      init();// 页面相关的初始化操作
     }
     /* set方法 */
     public void setOwnerName(String ownerName) {
      this.ownerName = ownerName;
     }
     public void setOpenMode(OpenMode openMode) {
      this.openMode = openMode;
     }
    }

    2. OpenMode :(类型)

    一个接口,包含一个分配方法,用来指定红包类型。

    public interface OpenMode {
     /**
     * @param totalMoney 总金额,单位是"分"。总金额为方便计算,已经转换为整数,单位为分。   
     * @param count 红包个数    
     * @return ArrayList<Integer> 元素为各个红包的金额值,所有元素的值累和等于总金额.  
     *  
     * 请将totalMoney,分成count分,保存到ArrayList<Integer>中,返回即可. 
     */ 
     public abstract ArrayList<Integer> divide(int totalMoney, int count);
    }

    3. 定义 RedPacket:

    RedPacket 类,继承 RedPacketFrame :

    public class RedPacket extends RedPacketFrame {
     public RedPacket(String title) {
      super(title);
     }
    }

    4. 定义测试类,创建 RedPacket:

    public class RedPacketTest {
     public static void main(String[] args) {
      RedPacket rp = new RedPacket("大红包");
     }
    }

    运行代码,打开一个发红包的页面。可以输入总金额,红包个数,留言信息。

    点击 塞钱进红包 按钮,跳转到下一页面。

    5. RedPacket 对象

            RedPacket对象,设置群主名称。setOwnerName(String ownerName) ,是字符串作为参数。我们只需要传递一个字符串即可。