第一步,先把数据库设计好,如果是单个银行网点,可以用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
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)