签到界面加图片java_签到功能实现,没有你想的那么复杂(二)

1 签到日历周期

签到周期: 常用的签到周期为一周或者一个月.我们的app采用的是一个月的方案.市面上的签到日历界面都大同小异,接下来我会给大家分享以月为周期的签到日历实现方案以及伴生的签到任务实现方案.

2 展示效果以及接口分析

2.1 效果图

2.2 需求分析

通过图上分析,可大致把这个界面分成四个部分头部的总积分部分

最关键的签到日历展示部分

连续签到文案配置部分

签到任务展示部分

通过分析我把这个界面分成了三个接口/signIn GET协议 用于查询头部的总积分和签到日历部分.

/signIn/configuration GET协议 查询连续签到文案配置,如果不需要后台可配置连续签到获取积分的数量和文案,此接口可省略,前端写死.

/signIn/task GET协议 用于查询签到任务,以及各个任务的完成状态.

3 查询总积分,签到日历接口

public ResponseResult selectSignIn(Integer userId, Integer year, Integer month) {

boolean signFlag = Boolean.FALSE;

String signKey = String.format(RedisKeyConstant.USER_SIGN_IN, year, userId);

LocalDate date = LocalDate.of(year, month, 1);

//这个方法前面的文章有介绍过.是查询出一个偏移值区间的位图集合

List list = cacheClient.getBit(signKey, month * 100 + 1, date.lengthOfMonth());

//查询reids中当前用户补签的hash列表 (hash列表的key为补签的日期,value存在就说明这个日期补签了)

String retroactiveKey = String.format(RedisKeyConstant.USER_RETROACTIVE_SIGN_IN, date.getMonthValue(), userId);

Set keys = cacheClient.hkeys(retroactiveKey);

TreeMap signMap = new TreeMap<>();

if (list != null && list.size() > 0) {

// 由低位到高位,为0表示未签,为1表示已签

long v = list.get(0) == null ? 0 : lis

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我们可以通过Java编写一个简单的签到程序,使用Swing实现用户界面。 首先,我们需要创建一个Java项目,并添Swing库以便使用Swing组件。 然后,我们可以创建一个JFrame窗口来作为我们的用户界面。在JFrame中,我们可以添一些Swing组件,如JLabel、JTextField、JButton等。 下面是一个简单的签到程序示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Signin extends JFrame { private JLabel nameLabel, idLabel, statusLabel; private JTextField nameField, idField; private JButton signinButton; public Signin() { // 设置窗口标题 setTitle("签到"); // 创建组件 nameLabel = new JLabel("姓名:"); idLabel = new JLabel("学号:"); statusLabel = new JLabel("请填写信息并点击签到按钮"); nameField = new JTextField(20); idField = new JTextField(20); signinButton = new JButton("签到"); // 设置布局 setLayout(new GridLayout(3, 2)); // 添组件 add(nameLabel); add(nameField); add(idLabel); add(idField); add(statusLabel); add(signinButton); // 注册事件监听器 signinButton.addActionListener(new SigninListener()); // 设置窗口大小和关闭方式 setSize(400, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } // 签到按钮事件监听器 private class SigninListener implements ActionListener { public void actionPerformed(ActionEvent event) { String name = nameField.getText(); String id = idField.getText(); if (name.isEmpty() || id.isEmpty()) { statusLabel.setText("姓名和学号不能为空"); } else { statusLabel.setText(String.format("%s %s 签到成功", name, id)); } } } public static void main(String[] args) { Signin signin = new Signin(); signin.setVisible(true); } } ``` 这个示例中,我们创建了一个JFrame窗口,并添了三个JLabel标签、两个JTextField文本框和一个JButton按钮。我们还为按钮注册了一个事件监听器,在用户点击签到按钮时会触发该监听器,从而进行签到操作。 当用户点击签到按钮时,我们会获取输入的姓名和学号,如果输入为空,则提示用户姓名和学号不能为空;否则,我们会在状态栏中显示签到成功的信息。 你可以根据自己的需求进行修改和扩展,比如添数据库连接进行数据存储等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值