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、付费专栏及课程。

余额充值