题目:篮球记分计时系统
一 实训任务
利用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);
}
}
资料包括:
需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。
纷传点击用微信打开即可,过程有点繁琐请见谅。