前言:
Qt案例,简单实现。
资源如下:
停车场管理系统https://download.csdn.net/download/m0_63288666/86541460?spm=1001.2014.3001.5503
1 项目简介
题目:停车场管理系统
系统特色:图形化操作,简便快捷。
2 需求分析
2.1 功能需求
记录车辆入场出场信息;
可视化操作;
2.2 界面需求
有按钮控制入场出场;
明确可见车位占有情况;
可调出入记录;
3 总体设计
4 详细设计与实现
4.1 各界面截图
4.1.1 截图内各个组件说明
- 窗口上方是程序名(label);
- 记录信息(label)会记录所有车辆总数;
- “细节”按钮会在新窗口展示记录信息;
- “显示”按钮显示完成流程的车辆的信息;
- “关闭”按钮关闭该窗口;
- “101,102···106”是车位(label),会显示是否有车;
- “入车”“出车”按钮指进入或退出该停车位;
- “入场”按钮登记车辆信息;
4.2 入场
bool isEn = false;
int c_id = QInputDialog::getInt(this,tr("进入车辆信息登记"),tr("请输入车辆车牌号(11111~99999)"),0,11111,99999,1,&isEn);
Ui::Widget *ui;
QVector<record> rec;
venue ven[6];
Messages *m;
car* c1 = new car;
c1->id = c_id;
record *r1 = new record;
r1->inadd(*c1);
rec.append(*r1);
QString cannelText = "登记总车辆数:"+QString().number(rec.count());
ui->label_9->clear();
ui->label_9->setText(cannelText);
4.3 入车
- 判断车位是否空&&判断记录中的车是否已经被导入过了
if(ven[0].isempty)//车位 空-》非空
{
qDebug()<<"元素遍历";
int i = 0;
bool jud = false;
for (i=0; i<rec.count(); i++)
{
if(!rec[i].isAd)
{
jud = true;//如果此时没有一辆车等待那么jud = false 直接跳过 ,不操作
break;
}
}
if(!jud){
qDebug()<<"退出";
return;
}
-
-
- 存入场地
-
ven[0].inadd(rec[i]);
-
-
- 更新文本
-
QString venueText = "101位已入车 牌号:"+QString().number(ven[0].rec_v->c_r->id);
ui->label->clear();
ui->label->setText(venueText);
4.4 出车
- 更新信息
if(!ven[0].isempty)
{
ven[0].out();
// m->rec_m[0].outadd();
m->rec_m.append(*ven[0].rec_v);
ui->label->setText("101位 空");
}
4.5 详细界面
- 调用show()
m->show();
-
-
- 显示数据,使用字符串连接“+”
-
QString messagetext = "";
for (int i=0; i<rec_m.count(); i++)
{
messagetext = messagetext + "\n 车辆数据:车牌:"+QString().number(rec_m[i].c_r->id)+"缴费:"+QString().number(rec_m[i].moneyP);
struct tm* ti;
ti = localtime(&rec_m[i].inP);
struct tm* tj;
tj = localtime(&rec_m[i].outP);
messagetext = messagetext + "入场时间:"+QString().number(ti->tm_year+1900)+"/"+QString().number(ti->tm_mon+1)+"/"+QString().number(ti->tm_mday)+" "+QString().number(ti->tm_hour)+":"+QString().number(ti->tm_min)+":"+QString().number(ti->tm_sec);
messagetext = messagetext + "出场时间:"+QString().number(tj->tm_year+1900)+"/"+QString().number(tj->tm_mon+1)+"/"+QString().number(tj->tm_mday)+" "+QString().number(tj->tm_hour)+":"+QString().number(tj->tm_min)+":"+QString().number(tj->tm_sec);
}
ui->label->setText(messagetext);
5 设计总结
结束,参上。