VS+Qt实现银行管理系统

**

小编在大二的时候因为课设的原因,打算做一个银行管理系统。由于小编学校大一上讲c语言,大一下讲c++,小编的课设是在大二上,这期间,也没有学习一些界面友好的语言,调用一些c或c++图形库也只是简单的画彩色的圆,矩形什么的,在做一些小游戏的时候可以画简单的图形,实在无趣,可以说,当时的我需要一个革命性的图形化工具,也就是在这时候,小编认识了Qt*

至于小编是如何安装Qt在VS上的,小编就不多余说了,毕竟网上一搜,各种教程,小编就是按照网上的教程安装在VS上的(VS号称史上最强的IDE,不得不说,乐于学习C,C++的新青年怕是少有不知道他的大名的)
创建一个Qt应用以后,为了保证在编译过程不出现不必要的,各位读者最好将各种需要的文件,右键命名成与小编一样的样式(建立各种.h,.cpp,.ui,.qrc文件)
建立各种.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添加一些好看的图片进来,在对应的界面有链接图片的地方,按照我的格式,引入图片就好,应该很好做到,这是我的银行的部分样式,下一篇博客介绍如何实现。
在这里插入图片描述

在这里插入图片描述

微信打赏(开源不易,祝你好运)

在这里插入图片描述

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值