• 嵌入式操作系统--篮球记分计时系统


    题目:篮球记分计时系统

      实训任务

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

    分牌。

      实训要求

    1、基本要求

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

    时界面开发系统。

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

    分操作,犯规减分操作。

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

    节次结束,共4节次。

    2、扩展部分

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

    (2)加时操作功能。

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

      实训题目原理

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

     

    图3 倒计时系统框图

    部分程序:

    #include "countboard.h"
    #include "ui_countboard.h"
    #include
    #include
    CountBoard::CountBoard(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::CountBoard)
    {
        ui->setupUi(this);
        time=24;                                            //设置倒计时初始值
        jieshu=1;                                           //总共四节,初始值为1
        state=0;                                            //设置比赛状态初始值,为0表示暂停
        range=24;                                           //倒计时范围初始值为24秒

        jieshuzhuangtai=0;                                  //比赛初始结束状态为0
        haomiaojishi=1000;                                  //毫秒计时器的初始值
        break1=break2=0;                                    //犯规次数初始值
        timer=new QTimer(this);                             //初始定时器
        timer2=new QTimer(this);

        connect(timer,SIGNAL(timeout()),this,SLOT(jishiqi()));
        connect(timer2,SIGNAL(timeout()),this,SLOT(haomiao()));
        ui->haomiaojishiqi->setDigitCount(4);                   //设置毫秒计时器设备显示位数
        ui->label_6->setText("Section"+QString::number(jieshu));//显示这是第几节比赛,总共四节
        teamonescore=teamtwoscore=0;                            //初始化两个队伍的初始比分为0;
        timer2->start(1);                                       //定时器2开始工作,间隔为1毫秒
    }

    CountBoard::~CountBoard()                                   //析构函数,释放资源,防止资源内耗泄露
    {
        delete ui;
    }

    void CountBoard::haomiao()
    {
        if(state==1)                                            //比赛状态为1,(正在比赛)
        {
            haomiaojishi--;                                     //毫秒计时的数值-1
            if(haomiaojishi==0)                                 //如果毫秒计时参数为0,执行
            {
                haomiaojishi=1000;                              //让毫秒计时参数重新变为1000
                ui->haomiaojishiqi->display(haomiaojishi);      //显示在计时器控件上
            }
            ui->haomiaojishiqi->display(haomiaojishi);          //显示
        }
    }
    void CountBoard::jishiqi()
    {
        time--;//倒计时-1
        ui->daojishi->display(time);
        if(time==0)//如果倒计时到了0,执行
        {
            timer->stop();//计时器停止工作,每一节比赛完等待重新开始比赛
            timer2->stop();
            //timer3->stop();
            ui->textEdit->setText("STOP");//在空间上显示比赛暂停的标志stop
            state=0;//把比赛状态参数改为0,以便通知其他函数执行该参数为0状态下的情况
            time=range;//重置倒计时
            haomiaojishi=1000;
            ui->haomiaojishiqi->display(haomiaojishi);
            jieshu++;//每一节结束就加一节
            if(jieshu>=5&&teamonescore==teamtwoscore)       //如果第4节以后结束的时队伍一和队伍二比分相同,进入加时赛
            {
                ui->label_6->setText("Addgame!");           //在空间上显示正在加时赛

            }
            else if(jieshu>=5&&teamonescore!=teamtwoscore)//如果第4节以后结束的时队伍一和队伍二比分不相同,结束比赛
            {
                ui->textEdit->setText("Over!!!");           //显示比赛结束
                jieshuzhuangtai=1;                          //结束状态设置为1,以便节数+1函数识别是否可执行
                haomiaojishi=1000;
                ui->haomiaojishiqi->display(haomiaojishi);

            }else{
                ui->label_6->setText("Section"+QString::number(jieshu));
            }

        }
    }


    void CountBoard::on_lone_clicked()
    {
        if(state==1)    //比赛状态为1,(正在比赛时),执行
        {
            teamonescore=teamonescore+1; //队伍1比分加1

            ui->teamoneboard->display(teamonescore);//显示
        }
    }

    void CountBoard::on_ltwo_clicked()
    {
        if(state==1)
        {
            teamonescore=teamonescore+2;//队伍1比分加2

            ui->teamoneboard->display(teamonescore);
        }
    }

    void CountBoard::on_lthree_clicked()
    {
        if(state==1)
        {
            teamonescore=teamonescore+3;//队伍1比分加3
            ui->teamoneboard->display(teamonescore);
        }
    }
     

    资料包括:

     

    需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

    纷传点击用微信打开即可,过程有点繁琐请见谅。

  • 相关阅读:
    myArm 全新七轴桌面型机械臂
    Go栈内存管理源码解读
    Java开发手册①
    C语言IO操作fread/fwrite/fflush
    java编程计算机网页项目jsp高校体育竞技赛系统myeclipse开发Mysql数据库web结构
    low power-upf-vcsnlp(二)
    Linux系统调优详解(一)——系统调优概述与Top命令详解
    Java进阶(十五)XML、XML解析、设计模式
    adb&monkey
    Spring Cloud Feign 如何使用对象参数
  • 原文地址:https://blog.csdn.net/qq_63964231/article/details/127760863