简单的银行叫号系统 C++编程

简单的银行叫号系统 C++编程,第1张

编程是好比是两个城市之间的旅程,开发语言(C++)就好比是交通工具,其实乘坐什么工具并不重要,最重颂嫌要的是你要知道怎么走,旁山也就是整个程序的设计你要明了。废话少说,下面简单介绍一下这个系统的开发流程:

第一步,先把数据库设计好,如果是单个银行网点,可以用ACCESS或者sqllite数据库,如果是某个银行集团的多个网点,那就需考虑用大型数据库了,比如Microsoft SQL Server

数据库中最起码要包含以下几个表:

1,业务类型表:

2,取号类型表(普通号、优先号)

3,挂号表等

第二步,搭系统框架,这个是整个程序的基石,如果如果要自己设计的话,首先你要有两三年的编程经验,急不得。你可以去网上或者是学长那找一些好的模板,这样会快一点。

4,画界面

整个程序的界面包含主界面和一些基本数据的维护界面以及统计报表等,这个需要你一步一步去画。

5,基本的增删改查数据库 *** 作

界面画好之后,就要对基本数据进行处理了,程序的许多BUG也会在这个时候产生,这个也是基本功,祝你好运。

6,数据的增删改查做完之后整个程序的开发也就完成的差不多了,剩下的就是一下细节性的东西,不过此时你的旅途只完成了一半。

7,还有一半的工作就是测试测试再测试

若运樱中还有疑问,咨询HESIN排队。百度HESIN排队就可以。

#include "stdafx.h"

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>

#include <梁陵conio.h>

#define MAX_SIZE 500

struct tagCustom

{

int m_nID // 客户的编号

int m_nProcessTime// 需要橡缓戚处理业务的时间

int m_nArrivalTime// 到达时间

int m_nDepartTime // 离开时间

}

struct tagTeller

{

int m_nCustomNum// 处理的客户数

int m_nAllServiceTime // 所有服务时间

int m_nFinishServiceTime// 柜台针对一个客户服务的结束时间

bool m_bBusy// 柜台是否忙

int m_nCustomID // 正在服务的客户的ID号

}

tagTeller g_aryTellers[MAX_SIZE]

int g_nTellerNum // 柜台数量

// 用哪闭户到达数组(随机的,无序的)

tagCustom g_aryAllCustoms[MAX_SIZE]

int g_nCustomsNum

int g_nWorkTime // 经营时间

int g_nArrivalRange,g_nServiceRange

// 用户队列

tagCustom g_CustomQueue[MAX_SIZE]

int g_nHeader,g_nTail

// 队列的 *** 作

void InitQueue()

{

g_nHeader = g_nTail = -1

}

void AddToTail(tagCustom aCustom)

{

g_nTail++

g_CustomQueue[g_nTail] = aCustom

}

bool RemoveFromHeader(tagCustom* pCustom)

{

if(g_nHeader <g_nTail)

{

g_nHeader++

(*pCustom) = g_CustomQueue[g_nHeader]

return true

}

return false

}

// 功能:模拟用户的随机到来

void GenerateCustom()

{

tagCustom aCustom

for(int nCounter = 0nCounter <g_nCustomsNumnCounter++)

{

aCustom.m_nID = nCounter

aCustom.m_nArrivalTime = rand() % g_nWorkTime

aCustom.m_nProcessTime = (rand() % g_nServiceRange + 1) * 6

aCustom.m_nDepartTime = -1

g_aryAllCustoms[nCounter] = aCustom

}

}

void Init()

{

g_nTellerNum= 3

g_nWorkTime = 200

g_nCustomsNum = 30

g_nArrivalRange = 18

g_nServiceRange = 5

srand((unsigned)time(NULL))

InitQueue()

GenerateCustom()

for(int nC = 0nC <g_nTellerNumnC++)

{

g_aryTellers[nC].m_nAllServiceTime = 0

g_aryTellers[nC].m_nCustomID = -1

g_aryTellers[nC].m_bBusy = false

g_aryTellers[nC].m_nFinishServiceTime = -1

}

}

// 写了一个比较简陋的排队系统,可以参考下握判颂:

  class Program{

        static void Main(string[] args){

            ServiceWindow[] serviceWindows = new ServiceWindow[Bank.MAX]

            for (int i = 0 i < Bank.MAX i++) 

                serviceWindows[i] = new ServiceWindow() { No = (i + 1).ToString() }

            Bank bank = new Bank(serviceWindows)

            Random rand = new Random()

 冲山           // 多线程模拟顾客取号

            new Thread(() =>{

                int k = 0

                while (true){

                    Bank.Enqueue()

                    if (++k>=100) break

                    Thread.Sleep(1000)

                }

            }).Start()

            // 多线程模拟服务窗口叫号

            new Thread(() =>{

                while (true){

              段郑      bank.ServiceWindows[rand.Next(0, Bank.MAX)].Call()

                    Thread.Sleep(3000)

                }

            }).Start()

            Console.ReadKey(true)

        }

    }

    internal class Bank{

        public const int MAX = 3

        public static ConcurrentQueue<uint> queue { get set }

        public static volatile uint curNo=0

        public Bank() {

            Init()

        }

        public void Init()

        {

            queue = new ConcurrentQueue<uint>()

        }

        public Bank(ServiceWindow[] serviceWindows)

        {

            Init()

            ServiceWindows = serviceWindows

        }

        public ServiceWindow[] ServiceWindows { get set }

        public static void Enqueue()

        {

            int k = 0

            k = queue.Count()

            curNo++

            queue.Enqueue(curNo)

            Console.WriteLine("您的号码是:" + (curNo) + ",前面还有" + k + "人在等待!")

        }

    }

    internal class ServiceWindow{

        public String No { get set }

        public bool Call()

        {

            uint result=0

            bool success=false

            success = Bank.queue.TryDequeue(out result)

            if(success) Console.WriteLine(result+"号,请到"+No+"号窗口办理业务!")

            return success

        }

    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12486791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存