加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

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

09/11 16:45
457
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

题目:篮球记分计时系统

  实训任务

利用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<QTimer>
#include<QtGui>
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);
}
}
资料包括:

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

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

  • 有需要资料的可了解一下.docx

相关推荐

电子产业图谱