Qt分组神器

在这里插入图片描述
在这里插入图片描述
这个就是一个分组神器,可以根据输入的总人数 ,以及想设定的每组人数,把这些人随机分成小组,很适合班级分组使用
头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QImage>
#include <QMessageBox>
#include <QPalette>//调色板
#include <QPixmap>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_btn_F_clicked();

    void on_btn_C_clicked();

    void on_btn_R_clicked();

private:
    Ui::Widget *ui;
private:
    int NumPeople;
    int NumGroup;


private:



};

#endif // WIDGET_H

cpp:

#include "widget.h"
#include "ui_widget.h"
#include <typeinfo>
#include <QByteArray>
#include <QColorDialog>
#include <QPalette>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setFixedSize(this->width(),this->height());
    QImage image(":\\image\\star.png");
    setWindowTitle("分组神器");

    QPixmap pix;
        pix.load(":/image/5.jpg","jpg");
        QPalette pal;
        pal=this->palette();
        pal.setBrush(QPalette::Background,QBrush(pix));
        this->setPalette(pal);

        setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
        setMouseTracking(true);
        setFixedSize(this->width(),this->height());




}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_btn_F_clicked()
{



    if(ui->Person_Edit->text()==""||ui->Group_Edit->text()==""){
        QMessageBox::StandardButton result=QMessageBox::critical(this, "注意","输入不能为空");
    }
    int flag=1;
    QString str;
    //记录第几组
    int count=1;
    NumPeople=ui->Person_Edit->text().toInt();
    NumGroup=ui->Group_Edit->text().toInt();
    int i,j;
    char *name[]={
        "南添松 ", "柳嘉豪 ", "史明坤 ", "凌丰骏 ",
        "刘旖玏 ",  "罗浩 ",  "郑宇航 ",  "刘世杰 ",
        "李风序 ",  "童文彦 ",  "安康 ",  "张奥伟 ",
        "韩朝晖 ",  "白少航 ",  "王阳 ",  "殷秀晨 ",
        "刘夏颖 ",  "方俊杰 ",  "姚飞 ",  "杨文婷 ",
        "程露娜 ",  "赵庆 ",  "张展鹏 ",  "刘旺海 ",
        "张倩 ",  "张奇 ",  "赵源敏 ",  "尹浩 ",
        "惠晨卓 ",  "李国栋 ",  "李宇博 ",  "张雅倩 ",
        "杨坤 ",  "冯晨露 ",  "唐静博 ",  "王一雄 ",
        "苏乐 "
    };

    srand( (unsigned)time(NULL) );  //以系统时间来设置随机数种子的函数,与rand函数一起使用
    int last = NumPeople-1;
    for(j=0; j<NumPeople-1; j++)
    {
        int index = rand()%NumPeople;
        char *tmp=name[last];
        name[last]=name[index];
        name[index]=tmp;
        last--;
    }

    for( i=0; i<NumPeople; i++)
    {
        if(flag==1){
            str.append("第1组:");
            flag=0;
        }
        str.append(name[i]);
        str.append("");

        if( (i+1)%NumGroup==0 ){
            count++;
            qDebug()<<count;
            str.append("\n\n");
            str.append(QString("第%1组:").arg(count));
        }
        ui->textBrowser->setText(str);
    }
}

void Widget::on_btn_C_clicked()
{
    on_btn_F_clicked();
}

void Widget::on_btn_R_clicked()
{
    if(ui->Person_Edit->text()==""||ui->Group_Edit->text()==""){
        QMessageBox::StandardButton result=QMessageBox::critical(this, "注意","输入不能为空");
    }
    ui->textBrowser->clear();
    ui->Person_Edit->clear();
    ui->Group_Edit->clear();
}

主要就是这样的逻辑,核心就是把生成数组下标随机数,交换数组内容,很简单,适合入门看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值