📄 cd3_4u.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "cd3_4u.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
#define max 4 //设置队列存储元素
String queue[max];
int front=0; //队列数据前端
int rear=0; //队列数据后端
int tpr=0; //temporary,暂存数据记数变量
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender) //可在窗体上绘制图案的事件
{
Canvas->Pen->Color=clBlue; //设置笔划颜色
Canvas->Brush->Color=clWhite; //设置填满颜色
Canvas->Ellipse(50,50,250,250); //设置边界(左上与右下端点)绘制一圆形
Canvas->MoveTo(150,250); //设置两点绘制线段点:(X,Y)
Canvas->LineTo(150,50);
Canvas->MoveTo(50,150);
Canvas->LineTo(250,150);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::endClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::binClick(TObject *Sender)
{
int ret;
if(front!=(rear+1)%max) //加入数据的限制
{
rear=(rear+1)%max; //加1并取余数,以达到计数循环累加的目的
queue[rear]=InputBox("队列数据输入框 ","请输入数据 "," ");
switch(rear) //后端计数器显示变化的选择决策
{
case 0:
q0->Caption=queue[0];
r3->Visible=false;
r0->Visible=true;
break;
case 1:
q1->Caption=queue[1];
r0->Visible=false;
r1->Visible=true;
break;
case 2:
q2->Caption=queue[2];
r1->Visible=false;
r2->Visible=true;
break;
case 3:
q3->Caption=queue[3];
r2->Visible=false;
r3->Visible=true;
break;
}
emp->Visible=false; //有数据加入,队列就不可能为空
sp->Brush->Color=clMenu;
}
else //不能满足加入条件就不能再加入数据
{
full->Visible=true; //显示数据已满
sp->Brush->Color=clRed;
if(front==(rear+1)%max) //设置暂存区,弥补一般环型队列牺牲前端空间的不足
{
if(tpr==1) //如果已有暂存纪录
{
ret=Application->MessageBox("您是否要取代暂存数据"
,"这一笔为暂存数据",308);
tpr=0; //决策过后,暂存计数器还原为0
if(ret==7) //如果决策返回值为7,表示拒绝取代暂存数据
goto c; //跳过暂存数据对话框
}
queue[front]=InputBox("前端数据暂存设计","请输入数据 "," ");
tpr=1;
c:
switch(front) //显示前端暂存数据
{
case 0:
q0->Caption=queue[0];
break;
case 1:
q1->Caption=queue[1];
break;
case 2:
q2->Caption=queue[2];
break;
case 3:
q3->Caption=queue[3];
break;
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::outClick(TObject *Sender)
{
if(front==rear) //当前端与后端位置相同时的显示设置
{
sp->Brush->Color=clBlue;
emp->Visible=true;
lout->Caption=queue[front]; //取出前端暂存的数据
queue[front]="";
q0->Caption="";
q1->Caption="";
q2->Caption="";
q3->Caption="";
}
else // 位置不同表示还有数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -