#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//分配空间,指定父对象
tcpSocket = new QTcpSocket(this);
setWindowTitle("客户端");
QString ip = "127.0.0.1";
quint16 port =8000;
qDebug()<<ip<<"::"<<port;
//主动和服务器建立连接
tcpSocket->connectToHost(QHostAddress(ip),port);
connect(tcpSocket,&QTcpSocket::connected,[this](){
QMessageBox::information(this,"连接","成功和服务器建立连接");
qDebug()<<"连接成功";
});
connect(tcpSocket, &QTcpSocket::readyRead,this,&MainWindow::getSign);
//获取菜单信息
get_dish();
}
MainWindow::~MainWindow()
{
delete ui;
}
//发送数据
void MainWindow::seedDate(int flag, int tab)
{
Data data;
QByteArray sendTcpData;
QString str;
data.flag = flag;//标记
data.tab_num = tab;//桌号
for (int i=0;i<3;i++) {
for (int j=0;j<6;j++) {
data.food[i][j] = food[i][j];
}
}
int Len = 20*sizeof(int);
sendTcpData.resize(Len);
memcpy(sendTcpData.data(),&data,size_t(Len));
tcpSocket->write(sendTcpData);
sendTcpData.clear();
sendTcpData.squeeze();
}
//获取服务端发送的信号
void MainWindow::getSign()
{
Sign sign, *get_Sign;
QByteArray buffer;
//读取缓冲区数据
buffer = tcpSocket->readAll();
if(!buffer.isEmpty())
{
memset(&sign,0,sizeof (sign));
get_Sign = (Sign*)buffer.data(); //强转为结构体,需要用结构体指针接收
//读取数据
sign.flag_1 = get_Sign->flag_1;
sign.flag_2 = get_Sign->flag_2;
}
if(sign.flag_1==0)//入座
{
if(sign.flag_2==0)//入座失败
{
QMessageBox::information(this,"入座","入座失败,该桌已被占用");
}
else if(sign.flag_2==1)//入座成功
{
tab_num = ui->table_number->text().toInt();
tab[tab_num-1]=1;
QMessageBox::information(this,"入座","入座成功,请开始点菜");
ui->textEdit->append("入座成功");
}
}
else if(sign.flag_1==1)//下桌
{
tab[sign.flag_2-1]=0;
if(sign.flag_2==tab_num)
{
tab_num=0;
submit_flag=0;
total_price=0;
ui->table_number->setText("");
ui->total_amount->setText(QString::number(total_price));
ui->textEdit->setText("");
QMessageBox::information(this,"下桌","你已被后台强制下桌");
}
}
else if(sign.flag_1==2)//提交订单
{
if(sign.flag_2==0)//订单失败
{
QMessageBox::information(this,"订单","订单失败,选择的菜品剩余不足,\n请重新选择或呼叫服务员");
}
else if(sign.flag_2==1)//订单成功
{
submit_flag=1;//提交成功标记
Total_price();//统计价格
ui->table_number->setText(QString::number(tab_num));
QMessageBox::information(this,"订单","订单提交成功");
ui->textEdit->append("订单提交成功");
R_order();
}
}
}
//入座
void MainWindow::on_table_Button_clicked()
{
int n;
n = ui->table_number->text().toInt();
if(n>=1 && n<=8)
{
seedDate(0, n);
}
else {
QMessageBox::information(this,"桌号","入座失败,请在1~8桌入座");
}
}
//提交订单
void MainWindow::on_submit_Button_clicked()
{
if(tab_num==0)
{
QMessageBox::information(this,"提交订单","提交订单失败,请先选择桌号");
}
else {
seedDate(1, tab_num);
}
}
//合计
void MainWindow::Total_price()
{
QString str="";
int fp = 0;
str = QString::number(tab_num) + "号桌";
for (int i=0;i<3;i++) {
for (int j=0;j<6;j++) {
if(food[i][j] > 0)
{
fp = food[i][j]*price[i][j];
str = str + dish_name[i][j] + "----------------- × " + QString::number(food[i][j]) + " -- ¥ " + QString::number(fp);
total_price += fp;
}
}
}
ui->total_amount->setText(QString::number(total_price));
ui->textEdit->append(str);
ui->textEdit->append("合计:¥ " + QString::number(total_price));
}
//呼叫服务员
void MainWindow::on_call_Button_clicked()
{
seedDate(2, tab_num);
QMessageBox::information(this,"呼叫","呼叫成功");
}
//支付
void MainWindow::on_pay_Button_clicked()
{
if(submit_flag==0)
{
QMessageBox::information(this,"支付","支付失败,没有待支付订单");
}
else {//支付成功后离开
//QString str = "0" + QString::number(tab_num);//以0开同做标记
seedDate(3, tab_num);
QMessageBox::information(this,"支付","支付成功");
tab[tab_num-1]=0;
tab_num=0;
submit_flag=0;
total_price=0;
ui->table_number->setText("");
ui->total_amount->setText(QString::number(total_price));
ui->textEdit->setText("");
}
}
//获取菜品信息
void MainWindow::get_dish()
{
//获取价格
price[0][0] = ui->price1_1->text().toInt();
price[0][1] = ui->price1_2->text().toInt();
price[0][2] = ui->price1_3->text().toInt();
price[0][3] = ui->price1_4->text().toInt();
price[0][4] = ui->price1_5->text().toInt();
price[0][5] = ui->price1_6->text().toInt();
price[1][0] = ui->price2_1->text().toInt();
price[1][1] = ui->price2_2->text().toInt();
price[1][2] = ui->price2_3->text().toInt();
price[1][3] = ui->price2_4->text().toInt();
price[1][4] = ui->price2_5->text().toInt();
price[1][5] = ui->price2_6->text().toInt();
price[2][0] = ui->price3_1->text().toInt();
price[2][1] = ui->price3_2->text().toInt();
price[2][2] = ui->price3_3->text().toInt();
price[2][3] = ui->price3_4->text().toInt();
price[2][4] = ui->price3_5->text().toInt();
price[2][5] = ui->price3_6->text().toInt();
//获取菜名
dish_name[0][0] = ui->dishName1_1->text();
dish_name[0][1] = ui->dishName1_2->text();
dish_name[0][2] = ui->dishName1_3->text();
dish_name[0][3] = ui->dishName1_4->text();
dish_name[0][4] = ui->dishName1_5->text();
dish_name[0][5] = ui->dishName1_6->text();
dish_name[1][0] = ui->dishName2_1->text();
dish_name[1][1] = ui->dishName2_2->text();
dish_name[1][2] = ui->dishName2_3->text();
dish_name[1][3] = ui->dishName2_4->text();
dish_name[1][4] = ui->dishName2_5->text();
dish_name[1][5] = ui->dishName2_6->text();
dish_name[2][0] = ui->dishName3_1->text();
dish_name[2][1] = ui->dishName3_2->text();
dish_name[2][2] = ui->dishName3_3->text();
dish_name[2][3] = ui->dishName3_4->text();
dish_name[2][4] = ui->dishName3_5->text();
dish_name[2][5] = ui->dishName3_6->text();
}
//重置
void MainWindow::R_order()
{
ui->count1_1->setText(QString::number(0));
ui->count1_2->setText(QString::number(0));
ui->count1_3->setText(QString::number(0));
ui->count1_4->setText(QString::number(0));
ui->count1_5->setText(QString::number(0));
ui->count1_6->setText(QString::number(0));
ui->count2_1->setText(QString::number(0));
ui->count2_2->setText(QString::number(0));
ui->count2_3->setText(QString::number(0));
ui->count2_4->setText(QString::number(0));
ui->count2_5->setText(QString::number(0));
ui->count2_6->setText(QString::number(0));
ui->count3_1->setText(QString::number(0));
ui->count3_2->setText(QS
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计基于C++的可视化电子点菜系统源码+详细代码注释.zip
共41个文件
jpg:21个
png:6个
cpp:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 190 浏览量
2023-08-21
09:43:46
上传
评论 2
收藏 950KB ZIP 举报
温馨提示
【资源说明】 毕业设计基于C++的可视化电子点菜系统源码+详细代码注释.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 毕业设计基于C++的可视化电子点菜系统源码+详细代码注释.zip 毕业设计基于C++的可视化电子点菜系统源码+详细代码注释.zip 毕业设计基于C++的可视化电子点菜系统源码+详细代码注释.zip
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计基于C++的可视化电子点菜系统源码+详细代码注释.zip (41个子文件)
项目说明.md 298B
order
mainwindow.h 3KB
image
1_3.jpg 19KB
3_1.jpg 6KB
1_1.jpg 16KB
image.qrc 601B
2_1.jpg 8KB
dish_6.jpg 16KB
2_6.jpg 5KB
1_6.jpg 19KB
2_4.jpg 9KB
2_2.jpg 7KB
3_2.jpg 11KB
3_5.jpg 8KB
1_4.jpg 15KB
1_2.jpg 10KB
2_3.jpg 9KB
1_5.jpg 20KB
dish_5.jpg 14KB
3_4.jpg 11KB
dish_3.jpg 16KB
2_5.jpg 9KB
3_3.jpg 8KB
3_6.jpg 8KB
mainwindow.cpp 15KB
main.cpp 183B
mainwindow.ui 82KB
order.pro.user 24KB
order.pro 1KB
img.assets
009.png 28KB
001.png 24KB
008.png 547KB
005.png 9KB
007.png 83KB
002.png 18KB
server
mainwindow.h 2KB
mainwindow.cpp 9KB
main.cpp 183B
server.pro 1KB
mainwindow.ui 15KB
server.pro.user 24KB
共 41 条
- 1
资源评论
Make程序设计
- 粉丝: 5723
- 资源: 3570
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 51单片机学习(1)-软件keil下载
- 历届(第1-21届)希望杯数学竞赛初一试题及答案(最新整理).doc全国数学邀请赛(264页资料)
- 水滴.psd
- TokenPocket_V2.1.2_release.apk
- Apache-druid-kafka-rce.yaml
- 基于C#的ASP.NET数据库原理及应用技术课程指导平台的开发
- 基于ROS的智能车轨迹跟踪算法的仿真与设计源码运用PID跟踪算法.zip.zip
- Bug Bounty Tip - i春秋Self-XSS变废为宝的奇思妙想
- 1991-2015年全国初中化学竞赛复赛试题汇编(212页)(24年竞赛复赛真题).docx天原杯
- Apache Flink 未授权访问+远程代码执行.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功