**
小编在大二的时候因为课设的原因,打算做一个银行管理系统。由于小编学校大一上讲c语言,大一下讲c++,小编的课设是在大二上,这期间,也没有学习一些界面友好的语言,调用一些c或c++图形库也只是简单的画彩色的圆,矩形什么的,在做一些小游戏的时候可以画简单的图形,实在无趣,可以说,当时的我需要一个革命性的图形化工具,也就是在这时候,小编认识了Qt*
至于小编是如何安装Qt在VS上的,小编就不多余说了,毕竟网上一搜,各种教程,小编就是按照网上的教程安装在VS上的(VS号称史上最强的IDE,不得不说,乐于学习C,C++的新青年怕是少有不知道他的大名的)
创建一个Qt应用以后,为了保证在编译过程不出现不必要的,各位读者最好将各种需要的文件,右键命名成与小编一样的样式(建立各种.h,.cpp,.ui,.qrc文件)
下一步就是复制各种源文件,头文件,加载几张图片
MainWindow.cpp
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_ImageProcessing.h"
#include"childWindow.h"
#include"work.h"
extern Bank B;
extern Bank_stochastic M_B;
class ImageProcessing : public QMainWindow
{
Q_OBJECT
public:
//ImageProcessing1 *new_win;
explicit ImageProcessing(QWidget* parent = Q_NULLPTR);
~ImageProcessing();
void helloWorld(); // 函数声明
void startTimer();
// friend DWORD WINAPI fun(); // 线程函数
//friend void Windows();
private:
Ui::ImageProcessingClass ui;
QTimer* m_pTimer;
private slots: // 槽函数
void iSlot();
void buttonshow();
};
MainWindow.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_ImageProcessing.h"
#include"childWindow.h"
#include"work.h"
extern Bank B;
extern Bank_stochastic M_B;
class ImageProcessing : public QMainWindow
{
Q_OBJECT
public:
//ImageProcessing1 *new_win;
explicit ImageProcessing(QWidget* parent = Q_NULLPTR);
~ImageProcessing();
void helloWorld(); // 函数声明
void startTimer();
// friend DWORD WINAPI fun(); // 线程函数
//friend void Windows();
private:
Ui::ImageProcessingClass ui;
QTimer* m_pTimer;
private slots: // 槽函数
void iSlot();
void buttonshow();
};
main.cpp
#include "MainWindow.h"
#include "childWindow.h"
#include <QtWidgets/QApplication>
//#include<windows.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);//创建一个QApplication对象
CreateThread(0, 0, fun, &B, 0, 0); // 建立线程,线程调用fun函数
ImageProcessing w;
w.startTimer();
w.show();
return a.exec();
}
childWindow.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_ImageProcessing.h"
#include"MainWindow.h"
class ImageProcessing1 : public QMainWindow
{
Q_OBJECT
public:
ImageProcessing1(QWidget* parent = Q_NULLPTR);
~ImageProcessing1();
void helloWorld(); // 函数声明
void helloWorld1();
void helloWorld2();
void helloWorld3();
void helloWorld4();
void helloWorld5();
private slots: // 槽函数
void close();
void iSlot();
void buttonshow();
void js_iSlot();
void jd_iSlot();
void ckjd_iSlot();
void mn_iSlot();
signals:
void sendsignal();
private:
Ui::ImageProcessingClass ui;
};
childWindow1.cpp
#include <QMainWindow>
#include <QtGui>
#include <QtWidgets>
#include<string>
#include "childWindow.h"
#include"yw_work.h"
#include"mn_work.h"
using namespace std;
#pragma execution_character_set("utf-8") // 解决汉字乱码问题,注意!!!
ImageProcessing1::ImageProcessing1(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
// QWidget mainWidget = new QWidget;
this->resize(700, 700); // 改变主窗口大小
this->setStyleSheet("border-image:url(:/ImageProcessing/Resources/flower.jpg);");//设置主窗口的背景图片
helloWorld(); //主窗口的函数,可以显示在主窗口上
helloWorld1(); //主窗口的函数,可以显示在主窗口上
helloWorld2(); //主窗口的函数,可以显示在主窗口上
helloWorld3(); //主窗口的函数,可以显示在主窗口上
helloWorld4(); //主窗口的函数,可以显示在主窗口上
helloWorld5(); //主窗口的函数,可以显示在主窗口上
}
ImageProcessing1::~ImageProcessing1()
{
this->setAttribute(Qt::WA_DeleteOnClose, 1);
}
void ImageProcessing1::helloWorld() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("业务输入")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
//button->setGeometry(10, 10, 200, 200);
button->move(140, 200); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(buttonshow())); // 连接信号与槽
}
void ImageProcessing1::helloWorld1() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("计算平均用时")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(140, 300); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(js_iSlot())); // 连接信号与槽
}
void ImageProcessing1::helloWorld2() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("接待客户数")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(340, 300); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(jd_iSlot())); // 连接信号与槽
}
void ImageProcessing1::helloWorld3() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("随机业务模拟")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(340, 200); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(mn_iSlot())); // 连接信号与槽
}
void ImageProcessing1::helloWorld4() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("返回")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(140, 400); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(close())); // 连接信号与槽
}
void ImageProcessing1::helloWorld5() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("各窗口办理业务数")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(340, 400); // 重设按钮位置
//button->setGeometry(340, 400, 300, 300);
button->resize(150, 30);
connect(button, SIGNAL(clicked()), this, SLOT(ckjd_iSlot())); // 连接信号与槽
}
void ImageProcessing1::iSlot() // 槽函数
{
QWidget* p = new QWidget;
QMessageBox::information(p, tr("hello"), tr("Hello World!"));
}
void ImageProcessing1::close()
{
this->hide();
}
void ImageProcessing1::buttonshow()
{
yw_work* new_win = new yw_work;
new_win->show();
}
void ImageProcessing1::js_iSlot()
{
QWidget* p = new QWidget;
int av = B.Average();
int man = B.Emptya();
char a[30];
char b[30];
itoa(man, a, 10);
itoa(av, b, 10);
char a1[50],b1[50];
strcpy(a1, "当日共有:");
strcat(a1,a);
strcat(a1, "人");
strcpy(b1, "当日用户平均所用时间为:");
strcat(b1,b);
strcat(b1, "分钟");
QMessageBox::information(p, tr(a1), tr(b1));
}
void ImageProcessing1::jd_iSlot()
{
B.Client(a);
for (int i = 0; i < 4; i++)
{
QWidget* p = new QWidget;
int av = i+1;
int man = a[i];
char a1[50];
char b1[50];
itoa(man, a1, 10);
itoa(av, b1, 10);
char a2[50], b2[50];
strcat(b1,"号窗口接待的业务数是:");
strcat(b1, a1);
QMessageBox::information(p, tr("你好"), tr(b1));
}
}
void ImageProcessing1::ckjd_iSlot()
{
B.Business(b);
char a1[50],b1[50];
for (int i = 0; i < 4; i++)
{ int av = i + 1;
itoa(av, a1, 10);
strcat(a1, "号窗口");
for (int j = 0; j< 4; j++)
{
QWidget* p = new QWidget;
int man =b[i][j];
char b1[50];
char b2[10];
if (j == 0)
{
strcpy(b1, "存款业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
else if (j == 1)
{
strcpy(b1, "取款业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
else if (j == 2)
{
strcpy(b1, "挂失业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
else
{
strcpy(b1, "还贷业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
QMessageBox::information(p, tr(a1), tr(b1));
}
}
}
void ImageProcessing1::mn_iSlot()
{
mn_work* new_win = new mn_work;
new_win->show();
}
mn_work.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_ImageProcessing.h"
#include"childWindow.h"
#include"work.h"
#include"MainWindow.h"
class mn_work : public QMainWindow
{
Q_OBJECT
public:
mn_work(QWidget* parent = Q_NULLPTR);
~mn_work();
void helloWorld(); // 函数声明
void helloWorld1(); // 函数声明
void helloWorld2();
private:
Ui::ImageProcessingClass ui;
private slots: // 槽函数
void iSlot();
void buttonshow();
void close();
void sz_iSlot();
void ck_iSlot();
};
mn_work.cpp
#include <QMainWindow>
#include <QtGui>
#include <QtWidgets>
#include"mn_work.h"
#pragma execution_character_set("utf-8") // 解决汉字乱码问题,注意!!!
mn_work::mn_work(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
// QWidget mainWidget = new QWidget;
this->resize(700, 700); // 改变主窗口大小,后续教程中还有其他方式可以设置
this->setStyleSheet("border-image:url(:/ImageProcessing/Resources/flower.jpg);");
helloWorld();
helloWorld1();
helloWorld2();
}
mn_work::~mn_work()
{
}
void mn_work::helloWorld() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("模拟输入")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
//button->setGeometry(10, 10, 200, 200);
button->move(300, 100); // 重设按钮位置
//connect(button, SIGNAL(clicked()), this, SLOT(iSlot())); // 连接信号与槽
connect(button, SIGNAL(clicked()), this, SLOT(sz_iSlot())); // 连接信号与槽
}
void mn_work::helloWorld1() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("窗口情况")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
//button->setGeometry(10, 10, 200, 200);
button->move(300, 200); // 重设按钮位置
//connect(button, SIGNAL(clicked()), this, SLOT(iSlot())); // 连接信号与槽
connect(button, SIGNAL(clicked()), this, SLOT(ck_iSlot())); // 连接信号与槽
}
void mn_work::helloWorld2() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("返回")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
//button->setGeometry(10, 10, 200, 200);
button->move(300, 300); // 重设按钮位置
//connect(button, SIGNAL(clicked()), this, SLOT(iSlot())); // 连接信号与槽
connect(button, SIGNAL(clicked()), this, SLOT(close())); // 连接信号与槽
}
void mn_work::iSlot() // 槽函数
{
QWidget* p = new QWidget;
QMessageBox::information(p, tr("hello"), tr("Hello World!"));
}
void mn_work::buttonshow()
{
ImageProcessing1* new_win = new ImageProcessing1;
new_win->show();
}
void mn_work::close()
{
this->hide();
}
void mn_work::sz_iSlot()
{
M_B.Stochastic(M_B);
M_B.Stochastica(M_B);
M_B.Windows(M_B);
QWidget* p = new QWidget;
QMessageBox::information(p, tr("模拟完成"), tr("可以查看"));
}
void mn_work::ck_iSlot()
{
double n = M_B.Stay();
double k = M_B.Count();
char a[50],a1[10], c[50], c1[10];
strcpy(a, "共有客户");
itoa(k, a1, 10);
strcat(a, a1);
strcpy(c, "客户平均办理用时:");
itoa(n, c1, 10);
strcat(c, c1);
strcat(c, "分钟");
QWidget* p = new QWidget;
QMessageBox::information(p, tr(a), tr(c));
M_B.Business(b);
for (int i = 0; i < 4; i++)
{
int av = i + 1;
itoa(av, a1, 10);
strcat(a1, "号窗口");
for (int j = 0; j < 4; j++)
{
QWidget* p = new QWidget;
int man = b[i][j];
char b1[50];
char b2[10];
if (j == 0)
{
strcpy(b1, "存款业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
else if (j == 1)
{
strcpy(b1, "取款业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
else if (j == 2)
{
strcpy(b1, "挂失业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
else
{
strcpy(b1, "还贷业务数为: ");
itoa(man, b2, 10);
strcat(b1, b2);
}
QMessageBox::information(p, tr(a1), tr(b1));
}
}
}
work.h
#pragma once
#include<windows.h>
#include <QtWidgets/QMainWindow>
#include "ui_ImageProcessing.h"
#pragma execution_character_set("utf-8") // 解决汉字乱码问题,注意!!!
#define MIN 1 //随机数产生的范围
#define MAX 4
extern int a[4];
extern int b[4][4];
class Bank
{
protected:
int data[20]; // 排队队列
int count, ct, counta; // 计数器
int front, rear; // 排队指针
int ave;
int client[4]; // 每个窗口的客户数
int business[4][4]; // 每个窗口的业务数
public:
Bank();
~Bank();
void Enqueue(int x); // 入队函数
int Dequeue(); // 出队函数
int Empty(); // 判断排队人数
int Emptya();
void Count(int x);
double Average();
void Client(int a[4]);
void Business(int a[4][4]);
int num = 0;
// 每个窗口的客户数
friend DWORD WINAPI fun(LPVOID Bks); // 线程函数
friend void Windows(Bank& Bk);
};
// 随机类 ***************************************
class Bank_stochastic
{
public:
Bank_stochastic();
~Bank_stochastic();
void Stochastic(Bank_stochastic& Bks); // 随机客户函数
void Stochastica(Bank_stochastic& Bks); // 随机时间函数
void Enqueue(int x); // 入队函数
void Enqueuea(int x); // 入队时间函数
int Dequeue(); // 出队函数
int Dequeuea(); // 出队时间函数
void Windows(Bank_stochastic& Bks); // 窗口函数
int set_time(); // 时间修改函数
double Stay(); // 客户逗留时间
int Count(); // 总人数函数
void Client(); // 窗口客户数
void Business(int a[4][4]); // 窗口业务数
protected:
int data[100];
int work[100];
int f, r; // 随机时间工作指针
int front, rear;
int count; // 总客户数
int ct[4]; // 判断是否为8小时
int timeadd; // 时间加法器
int business[4][4]; // 每个窗口的业务数
int client[4];
};
work.cpp
#include"work.h"
#include<stdio.h>
#include<string>
#include<ctime>
#include<stdlib.h>
#include<iostream>
#include <time.h>
#include<string>
using namespace std;
int a[4] = { 0 };
int b[4][4] = { 0 };
Bank::Bank()
{
rear = front = 19;
count = -4;
ct = 0;
ave = 0;
counta = 0;
int i, j;
for (i = 0; i < 4; i++)
{
client[i] = 0; //每个窗口的客户数
for (j = 0; j < 4; j++)
{
business[i][j] = 0; //每个窗口的业务数
}
}
}
Bank::~Bank()
{
}
void Bank::Enqueue(int x)
{
if ((rear + 1) % 20 == front)
throw "error";
rear = (rear + 1) % 20;
data[rear] = x;
count++;
ct++;
}
int Bank::Dequeue()
{
if (rear == front)
throw "error";
front = (front + 1) % 20;
count--; //判断队列中有没有人
return data[front];
}
int Bank::Empty()
{
return count;
}
int Bank::Emptya()
{
return ct;
}
void Bank::Count(int x)
{
ave = ave + x;
counta++;
}
double Bank::Average()
{
double p;
p = 0;
if (ave != 0 && counta != 0)
{
p = ave / counta;
}
return p;
}
void Bank::Business(int b[4][4])
{
int i;
for (i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
b[i][j] = business[i][j];
}
}
}
void Bank::Client(int a[4])
{
/*for (int i = 0; i < 4; i++)
{
QWidget* p = new QWidget;
int man = this->client[i];
// int man1 = i + 1;
char a[30];
char a1[50];
itoa(i + 1, a, 10);
itoa(man, a, 10);
strcpy(a1, a);
strcat(a1, " 号窗口接待客户为:");
strcat(a1, a);
QMessageBox::information(p, tr("你好"), tr(a1));
}*/
int i;
for (i = 0; i < 4; i++)
{
a[i] = client[i];
}
}
void Windows(Bank& Bk)
{
int i, m, Min, p, h, k = 0;
int Take[4];
h = 0;
while (1)
{
Min = Bk.Empty(); //判断排队人数
if (Min >= 4)
{
break;
}
}
Sleep(1000);
for (i = 0; i < 4; i++)
{
Take[i] = Bk.Dequeue();
Bk.client[i] = Bk.client[i] + 1; //每个窗口的客户数
if (Take[i] == 1)
{
Bk.business[i][0] = Bk.business[i][0] + 1; 每个窗口的业务数
}
else if (Take[i] == 2)
{
Bk.business[i][1] = Bk.business[i][1] + 1;
}
else if (Take[i] == 3)
{
Bk.business[i][2] = Bk.business[i][2] + 1;
}
else if (Take[i] == 4)
{
Bk.business[i][3] = Bk.business[i][3] + 1;
}
}
while (1)
{
if (h > 0)
{
while (1)
{
Min = Bk.Empty(); //判断排队人数
if (Min >= 4)
{
break;
}
}
Sleep(1000);
for (i = 0; i < 4; i++)
{
Take[i] = Bk.Dequeue();
Bk.client[i] = Bk.client[i] + 1; //每个窗口的客户数
if (Take[i] == 1)
{
Bk.business[i][0] = Bk.business[i][0] + 1; 每个窗口的业务数
}
else if (Take[i] == 2)
{
Bk.business[i][1] = Bk.business[i][1] + 1;
}
else if (Take[i] == 3)
{
Bk.business[i][2] = Bk.business[i][2] + 1;
}
else if (Take[i] == 4)
{
Bk.business[i][3] = Bk.business[i][3] + 1;
}
}
h = 0;
}
//在这里添加
m = 100000;
for (i = 0; i < 4; i++)
{
if (Take[i] > 0)
{
if (m > Take[i])
{
m = Take[i];
}
}
}
Sleep(3000 * m);
for (i = 0; i < 4; i++)
{
if (Take[i] - m == 0)
{
cout << " " << i + 1 << "号窗口已办理完成!!" << endl;
}
}
for (i = 0; i < 4; i++)
{
p = Bk.Empty();
Take[i] = Take[i] - m;
if (Take[i] == 0 && p != -4)
{
Take[i] = Bk.Dequeue();
Bk.client[i] = Bk.client[i] + 1;
if (Take[i] == 1)
{
Bk.business[i][0] = Bk.business[i][0] + 1;
}
else if (Take[i] == 2)
{
Bk.business[i][1] = Bk.business[i][1] + 1;
}
else if (Take[i] == 3)
{
Bk.business[i][2] = Bk.business[i][2] + 1;
}
else if (Take[i] == 4)
{
Bk.business[i][3] = Bk.business[i][3] + 1;
}
}
else if (Take[i] == 0 && p == 4)
{
Take[i] = -1;
}
}
for (i = 0; i < 4; i++)
{
if (Take[i] < 0)
{
k++;
}
if (k == 4)
{
//cout << endl;
//cout << " 窗口全部办理完毕! 目前无人排队!" << endl;
k = 0;
h = 1;
}
}
}
}
DWORD WINAPI fun(LPVOID Bks)
{
Bank* Bk = (Bank*)Bks;
Windows(*Bk);
return 0;
}
// 随机类的随即函数 ********************************
Bank_stochastic::Bank_stochastic()
{
int i, j;
front = 1;
rear = 1;
f = 1;
r = 1;
count = 0;
timeadd = 0;
for (i = 0; i < 4; i++)
{
ct[i] = 0;
}
for (i = 0; i < 4; i++)
{
client[i] = 0;
for (j = 0; j < 4; j++)
{
business[i][j] = 0;
}
}
}
Bank_stochastic::~Bank_stochastic()
{
}
void Bank_stochastic::Client()
{
int i;
for (i = 0; i < 4; i++)
{
//cout << " " << i + 1 << " 号窗口接待客户为:" << client[i] << endl;
}
}
void Bank_stochastic::Business(int b[4][4])
{
int i;
for (i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
b[i][j] = business[i][j];
}
}
}
int Bank_stochastic::Count()
{
int n;
n = count;
return n;
}
double Bank_stochastic::Stay()
{
double n, m;
double y;
n = (double)timeadd;
m = (double)count;
y = n / m;
return y;
}
void Bank_stochastic::Stochastic(Bank_stochastic& Bks)
{
int st; // 随机数生成
int i;
srand((unsigned)time(0)); //获取系统时间来产生随机数
for (i = 0; i < 80; i++)
{
st = MIN + (int)MAX * rand() / (RAND_MAX + 1); //MIN的值为1MAX的值为4而且RAND_MAX是C中stdlib.h中宏定义的一个字符常量:
Bks.Enqueue(st);
}
} //随机产生一个1-4之间的数字
void Bank_stochastic::Windows(Bank_stochastic& Bks) //随机模拟办理各种业务,输出办理业务的种类
{
int i, j;
j = 0;
timeadd = 0;
int Take[4];
int m=0;
for (i = 0; i < 4; i++)
{
Take[i] = Bks.Dequeue(); //Take的值是Dequeue()的返回值
client[i] = client[i] + 1;
if (Take[i] == 1)
{
business[i][0] = business[i][0] + 1; //每个银行办理各种业务的数量
}
else if (Take[i] == 2)
{
business[i][1] = business[i][1] + 1;
}
else if (Take[i] == 3)
{
business[i][2] = business[i][2] + 1;
}
else if (Take[i] == 4)
{
business[i][3] = business[i][3] + 1;
}
timeadd = m+ timeadd; //timeadd是类中的的数字 ,Dequeuea返回一个整形的数字
count++;
ct[i] = ct[i] + Take[i];
}
while (1)
{
m = 10;
for (i = 0; i < 4; i++) //这里的m是用来干什么的呢?
{
if (m > Take[i])
{
m = Take[i];
}
}
for (i = 0; i < 4; i++)
{
Take[i] = Take[i] - m;
timeadd = m + timeadd;
if (Take[i] == 0)
{
Take[i] = Bks.Dequeue();
client[i] = client[i] + 1;
if (Take[i] == 1)
{
business[i][0] = business[i][0] + 1;
}
else if (Take[i] == 2)
{
business[i][1] = business[i][1] + 1;
}
else if (Take[i] == 3)
{
business[i][2] = business[i][2] + 1;
}
else if (Take[i] == 4)
{
business[i][3] = business[i][3] + 1;
}
count++;
ct[i] = ct[i] + Take[i];
}
}
for (i = 0; i < 4; i++)
{
if (ct[i] >= 50)
{
j = 1;
break;
}
}
if (j == 1)
{
break;
}
}
}
void Bank_stochastic::Stochastica(Bank_stochastic& Bks)
{
int sta; // 随机数生成
int i;
srand((unsigned)time(0));
for (i = 0; i < 80; i++)
{
sta = MIN + (int)MAX * rand() / (RAND_MAX + 1);
Bks.Enqueuea(sta);
}
}
void Bank_stochastic::Enqueuea(int x) /// 入队时间函数
{
//if ((r + 1) % 100== f)
//throw "error";
r = (r + 1) % 100;
work[r] = x;
}
int Bank_stochastic::Dequeuea() //出队时间函数
{
//if (r == f)
// throw "error";
f = (f + 1) % 100;
return work[f];
}
void Bank_stochastic::Enqueue(int x) //入队函数
{
//if ((rear + 1) % 100 == front)
// throw "error";
rear = (rear + 1) % 100;
data[rear] = x;
}
int Bank_stochastic::Dequeue() //出队函数
{
//if (rear == front)
// throw "error";
front = (front + 1) % 100;
return data[front];
}
int Bank_stochastic::set_time() // 时间修改函数
{
time_t time_seconds = time(0);
struct tm now_time;
localtime_s(&now_time, &time_seconds);
return 0;
}
yw_work.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_ImageProcessing.h"
#include"MainWindow.h"
class yw_work : public QMainWindow
{
Q_OBJECT
public:
yw_work(QWidget* parent = Q_NULLPTR);
~yw_work();
void helloWorld(); // 函数声明
void helloWorld1();
void helloWorld2();
void helloWorld3();
void helloWorld4();
private slots: // 槽函数
void close();
void iSlot();
void ck_iSlot();
void qk_iSlot();
void hd_iSlot();
void gs_iSlot();
signals:
void sendsignal();
private:
Ui::ImageProcessingClass ui;
};
yw_work.cpp
#include <QMainWindow>
#include <QtGui>
#include <QtWidgets>
#include"yw_work.h"
#pragma execution_character_set("utf-8") // 解决汉字乱码问题,注意!!!
yw_work::yw_work(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
// QWidget mainWidget = new QWidget;
this->resize(700, 700); //设置窗口的大小
this->setStyleSheet("border-image:url(:/ImageProcessing/Resources/flower.jpg);");
helloWorld();
helloWorld1();
helloWorld2();
helloWorld3();
helloWorld4();
}
yw_work::~yw_work()
{
this->setAttribute(Qt::WA_DeleteOnClose, 1);
}
void yw_work::helloWorld() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("存款")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
//button->setGeometry(10, 10, 200, 200);
button->move(140, 200); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(ck_iSlot())); // 连接信号与槽
}
void yw_work::helloWorld1() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("取款")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(140, 300); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(qk_iSlot())); // 连接信号与槽
}
void yw_work::helloWorld2() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("还贷")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(340, 300); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(hd_iSlot())); // 连接信号与槽
}
void yw_work::helloWorld3() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("挂失")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(340, 200); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(gs_iSlot())); // 连接信号与槽
}
void yw_work::helloWorld4() // 函数定义
{
QFrame* frame = new QFrame;
QPushButton* button = new QPushButton(this); // QPushButton是QT的按钮类
button->setText(tr("返回")); // 按钮显示的文本
button->setStyleSheet("border-image:url(:/ImageProcessing/Resources/white.png);");
button->move(140, 400); // 重设按钮位置
connect(button, SIGNAL(clicked()), this, SLOT(close())); // 连接信号与槽
}
void yw_work::iSlot() // 槽函数
{
QWidget* p = new QWidget;
QMessageBox::information(p, tr("hello"), tr("Hello World!"));
}
void yw_work::close()
{
this->hide();
}
void yw_work::ck_iSlot()
{
B.num++;//标记编号
SYSTEMTIME sys;
GetLocalTime(&sys);
/* printf(" ┣ %4d/%02d/%02d %02d:%02d:%02d 星期%1d ┫", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wDayOfWeek);*/
int t = sys.wYear;
char a[150], a1[10];
strcpy(a, "到达时间 ");
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "年");
strcat(a, "-");
t = sys.wMonth;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "月");
strcat(a, "-");
t = sys.wDay;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "日");
strcat(a, "-");
t = sys.wHour;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "时");
strcat(a, "-");
t = sys.wMinute;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "分");
strcat(a, "-");
t = sys.wSecond;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "秒");
strcat(a, "-");
strcat(a, "星期-");
t = sys.wDayOfWeek;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "编号:");
t = B.num;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "办理业务:存款");
QWidget* p1 = new QWidget;
QMessageBox::information(p1, tr("hello"), tr(a));
B.Enqueue(1);
B.Count(1);
int k = B.Empty();
if (k <= 0)
{
QWidget* p = new QWidget;
QMessageBox::information(p, tr("hello"), tr(" 当前无人排队!"));
}
else
{
QWidget* p = new QWidget;
int k_s = k;
char a[30];
itoa(k_s, a, 10);
QMessageBox::information(p, tr(" 当前排队人数:" ), tr(a));
}
}
void yw_work::qk_iSlot()
{
B.num++;//标记编号
SYSTEMTIME sys;
GetLocalTime(&sys);
/* printf(" ┣ %4d/%02d/%02d %02d:%02d:%02d 星期%1d ┫", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wDayOfWeek);*/
int t = sys.wYear;
char a[150], a1[10];
strcpy(a, "到达时间 ");
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "年");
strcat(a, "-");
t = sys.wMonth;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "月");
strcat(a, "-");
t = sys.wDay;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "日");
strcat(a, "-");
t = sys.wHour;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "时");
strcat(a, "-");
t = sys.wMinute;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "分");
strcat(a, "-");
t = sys.wSecond;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "秒");
strcat(a, "-");
strcat(a, "星期-");
t = sys.wDayOfWeek;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "编号:");
t = B.num;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "办理业务:取款");
QWidget* p1 = new QWidget;
QMessageBox::information(p1, tr("hello"), tr(a));
B.Enqueue(2);
B.Count(2);
int k = B.Empty();
if (k <= 0)
{
QWidget* p = new QWidget;
QMessageBox::information(p, tr("hello"), tr(" 当前无人排队!"));
}
else
{
QWidget* p = new QWidget;
int k_s = k;
char a[30];
itoa(k_s, a, 10);
QMessageBox::information(p, tr(" 当前排队人数:"), tr(a));
}
}
void yw_work::hd_iSlot()
{
B.num++;//标记编号
SYSTEMTIME sys;
GetLocalTime(&sys);
/* printf(" ┣ %4d/%02d/%02d %02d:%02d:%02d 星期%1d ┫", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wDayOfWeek);*/
int t = sys.wYear;
char a[150], a1[10];
strcpy(a, "到达时间 ");
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "年");
strcat(a, "-");
t = sys.wMonth;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "月");
strcat(a, "-");
t = sys.wDay;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "日");
strcat(a, "-");
t = sys.wHour;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "时");
strcat(a, "-");
t = sys.wMinute;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "分");
strcat(a, "-");
t = sys.wSecond;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "秒");
strcat(a, "-");
strcat(a, "星期-");
t = sys.wDayOfWeek;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "编号:");
t = B.num;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "办理业务:还贷");
QWidget* p1 = new QWidget;
QMessageBox::information(p1, tr("hello"), tr(a));
B.Enqueue(3);
B.Count(3);
int k = B.Empty();
if (k <= 0)
{
QWidget* p = new QWidget;
QMessageBox::information(p, tr("hello"), tr(" 当前无人排队!"));
}
else
{
QWidget* p = new QWidget;
int k_s = k;
char a[30];
itoa(k_s, a, 10);
QMessageBox::information(p, tr(" 当前排队人数:"), tr(a));
}
}
void yw_work::gs_iSlot()
{
B.num++;//标记编号
SYSTEMTIME sys;
GetLocalTime(&sys);
/* printf(" ┣ %4d/%02d/%02d %02d:%02d:%02d 星期%1d ┫", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wDayOfWeek);*/
int t = sys.wYear;
char a[150], a1[10];
strcpy(a, "到达时间 ");
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "年");
strcat(a, "-");
t = sys.wMonth;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "月");
strcat(a, "-");
t = sys.wDay;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "日");
strcat(a, "-");
t = sys.wHour;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "时");
strcat(a, "-");
t = sys.wMinute;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "分");
strcat(a, "-");
t = sys.wSecond;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "秒");
strcat(a, "-");
strcat(a, "星期-");
t = sys.wDayOfWeek;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "编号:");
t = B.num;
itoa(t, a1, 10);//将数字转换为字符
strcat(a, a1);
strcat(a, "办理业务:挂失");
QWidget* p1 = new QWidget;
QMessageBox::information(p1, tr("hello"), tr(a));
B.Enqueue(4);
B.Count(4);
int k = B.Empty();
if (k <= 0)
{
QWidget* p = new QWidget;
QMessageBox::information(p, tr("hello"), tr(" 当前无人排队!"));
}
else
{
QWidget* p = new QWidget;
int k_s = k;
char a[30];
itoa(k_s, a, 10);
QMessageBox::information(p, tr(" 当前排队人数:"), tr(a));
}
}
代码部分算是完了,打开如下
点击Add添加一些好看的图片进来,在对应的界面有链接图片的地方,按照我的格式,引入图片就好,应该很好做到,这是我的银行的部分样式,下一篇博客介绍如何实现。
微信打赏(开源不易,祝你好运)