篮球记分计时系统实训

我使用的版本是QT Creator 5.12.10.具体实现效果:

  实训任务

利用Qt-Creator编程设计一个篮球记分计时界面开发系统,实现24秒一节次的倒计时篮球记

分牌。

  实训要求

1、基本要求

(1)按照题目要求使用Qt编程,独立设计系统所需界面,实现24秒倒计时的篮球记分计

时界面开发系统。

(2)通过按钮控件实现“运行/暂停”功能,同时还可通过按钮或其它控件实现A,B两队加

分操作,犯规减分操作。

(3)停表计时就是:比赛开始后,犯规,罚球,暂停,都要停表。累计时间到24秒后,该

节次结束,共4节次。

2、扩展部分

(1)扩展多位数据显示,能实现.99的显示。

(2)加时操作功能。

(3)真实场景仿真展示等。

  实训题目原理

       倒计时设计的原理框图如图3所示。

图3 倒计时系统框图

说明:同学们可以改变方案,只要满足要求即可。

  实训步骤

1、认真分析任务要求,根据功能初步设计Qt图像化编程界面。

2、对照任务编写相应程序模块,逐步调试,实现各部分功能。

3、整体联调,并优化程序,完成其它部分和发挥部分。

4、撰写实训报告(包括设计与调试的全过程,附上相关资料和心得体会)。

  实训报告格式

1、任务题目;

2、性能、指标、要求;

3、方案设计:

(1)方案论证

(2)工作原理

(3)Qt界面图

(4)流程图

4、程序设计与调试测试过程;

5、实训心得体会。

test0.cpp文件代码:

#include "test10.h"
#include "ui_test10.h"

Test10::Test10(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Test10)
{
    ui->setupUi(this);
    setFixedSize(650, 500);
    setWindowTitle("杰若不是");
    ui->lcdNumber_3->display(countdown);
    ui->label_5->setAlignment(Qt::AlignCenter); // 设置文本居中对齐
    ui->label_5->setStyleSheet("font-size: 40px;"); // 设置字体大小为 40 像素
    ui->label_6->setStyleSheet("font-size: 40px;");
    countdownTimer = new QTimer(this); // 创建倒计时器
    countdownTimer1 = new QTimer(this); // 创建倒总时间计时器
    connect(countdownTimer, &QTimer::timeout, this, &Test10::updateCountdown); // 将倒计时器的timeout信号连接到updateCountdown槽函数
    connect(countdownTimer1, &QTimer::timeout, this, &Test10::updateCountdown1);
}

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


void Test10::on_pushButton_5_clicked()
{
    ui->lcdNumber_3->display(countdown); // 在标签上显示倒计时的剩余时间
    countdownTimer1->start(1000);
    countdownTimer->start(1000); // 每秒触发一次timeout信号,即每秒更新一次倒计时

}
void Test10::updateCountdown()
{
    countdown--; // 倒计时的剩余时间减1
    ui->lcdNumber_3->display(countdown); // 在QLCDNumber上显示更新后的倒计时剩余时间

    if (countdown == 0) {// 如果倒计时结束
        countdown = 24;
        ui->lcdNumber_3->display(countdown);
        countdownTimer->stop(); // 停止倒计时器
        countdownTimer1->stop();
    }
}

void Test10::on_pushButton_6_clicked()
{
    countdownTimer->stop();
    countdownTimer1->stop();
}

void Test10::on_pushButton_7_clicked()
{
    countdown = 24;
    ui->lcdNumber_3->display(countdown);
    countdownTimer1->stop();
    countdownTimer->stop();
}

void Test10::on_pushButton_clicked()
{
    Adefeng++;
    ui->lcdNumber->display(Adefeng);
}

void Test10::on_pushButton_3_clicked()
{
    Adefeng--;
    if (Adefeng < 0){
        Adefeng = 0;
    }
    ui->lcdNumber->display(Adefeng);
}

void Test10::on_pushButton_2_clicked()
{
    Bdefeng++;
    ui->lcdNumber_2->display(Bdefeng);

}

void Test10::on_pushButton_4_clicked()
{
    Bdefeng--;
    if (Bdefeng < 0){
        Bdefeng = 0;
    }
    ui->lcdNumber_2->display(Bdefeng);

}

void Test10::on_pushButton_8_clicked()
{
    Afa++;
    if (Afa == 6){
        Afa = 5;
    }
    ui->label_3->setText("犯规次数:" + QString::number(Afa));
}

void Test10::on_pushButton_9_clicked()
{
    Afa--;
    if (Afa == -1){
        Afa =0;
    }
    ui->label_3->setText("犯规次数:" + QString::number(Afa));
}

void Test10::on_pushButton_10_clicked()
{
    Bfa++;
    if (Bfa == 6){
        Bfa = 5;
    }
    ui->label_4->setText("犯规次数:" + QString::number(Bfa));
}

void Test10::on_pushButton_11_clicked()
{
    Bfa--;
    if (Bfa == -1){
        Bfa =0;
    }
    ui->label_4->setText("犯规次数:" + QString::number(Bfa));
}

void Test10::on_pushButton_12_clicked()
{
    if (jie == 6){
        ui->label_6->setText("加时赛\t" + QString::number(feng) + " : " + QString::number(miao));
    }else{
        ui->label_6->setText("第 " + QString::number(jie) + " 节" + "\t" + QString::number(feng) + " : " + QString::number(miao));
    }
    countdownTimer->start(1000);
    countdownTimer1->start(1000);
}

void Test10::updateCountdown1()
{

    miao--;
    if (miao == -1){
        feng--;
        miao = 59;
    }
    if (jie == 6){
        ui->label_6->setText("加时赛\t" + QString::number(feng) + " : " + QString::number(miao));
    }else{
        ui->label_6->setText("第 " + QString::number(jie) + " 节" + "\t" + QString::number(feng) + " : " + QString::number(miao));
    }
    if (miao==0&&feng==0){
        jie++;
        if (jie == 5 || jie == 6){
            ui->label_6->setText("比赛结束");
        }
        countdownTimer1->stop();
        countdownTimer->stop();
    }
}

void Test10::on_pushButton_13_clicked()
{
    feng = 5;
    miao = 0;
    jie = 6;
    ui->label_6->setText("加时赛\t" + QString::number(feng) + " : " + QString::number(miao));
    countdown = 24;
    ui->lcdNumber_3->display(countdown);
    countdownTimer1->stop();
    countdownTimer->stop();
}

void Test10::on_pushButton_14_clicked()
{
    Adefeng=Adefeng+2;
    ui->lcdNumber->display(Adefeng);
}

void Test10::on_pushButton_15_clicked()
{
    Adefeng=Adefeng+3;
    ui->lcdNumber->display(Adefeng);
}

void Test10::on_pushButton_16_clicked()
{
    Bdefeng=Bdefeng+2;
    ui->lcdNumber_2->display(Bdefeng);
}

void Test10::on_pushButton_17_clicked()
{
    Bdefeng=Bdefeng+3;
    ui->lcdNumber_2->display(Bdefeng);
}

main.cpp代码如下:

#include "test10.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Test10 w;
    w.show();
    return a.exec();
}

test10.h代码如下:

#ifndef TEST10_H
#define TEST10_H
#include <QMainWindow>
#include <QLabel>
#include <QPushButton>
#include <QTimer>
#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Test10; }
QT_END_NAMESPACE

class Test10 : public QWidget
{
    Q_OBJECT

public:
    Test10(QWidget *parent = nullptr);
    ~Test10();

private slots:
    void on_pushButton_5_clicked();//开启24秒倒计时
    void updateCountdown();
    void updateCountdown1();

    void on_pushButton_6_clicked();

    void on_pushButton_7_clicked();

    void on_pushButton_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_8_clicked();

    void on_pushButton_9_clicked();

    void on_pushButton_10_clicked();

    void on_pushButton_11_clicked();

    void on_pushButton_12_clicked();

    void on_pushButton_13_clicked();

    void on_pushButton_14_clicked();

    void on_pushButton_15_clicked();

    void on_pushButton_16_clicked();

    void on_pushButton_17_clicked();

private:
    Ui::Test10 *ui;
    QTimer *countdownTimer; // 倒计时器
    QTimer *countdownTimer1; // 总时间
    QPushButton pushButton_5;
    int countdown = 24;
    int Adefeng = 0;
    int Bdefeng = 0;
    int Afa = 0;
    int Bfa = 0;
    int jie = 1;//定义接数
    int feng = 9;
    int miao = 60;
};
#endif // TEST10_H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值