用C语言编银行叫号系统

【问题描述】
模拟银行叫号系统:当客户到达银行时,先取号(显示当前的客户号,以及正在等待的客户人数),此时,若有窗口空闲,则显示信息:请XXXX号客户到YY号窗口办理;否则客户等待。当有窗口空闲时,若有等待的客户,则显示信息:请XXXX号客户到YY号窗口办理。
【测试数据】
假设有3个窗口,前后共6个客户。

a)需求分析:
在该部分中叙述,每个模块的功能要求
b)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明。
c)详细设计
各个算法实现的源程序。要结构清晰,重点函数、重点变量、重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果,每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。

第1个回答  2013-09-20
#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 = 0; nCounter < g_nCustomsNum; nCounter++)
{
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 = 0; nC < g_nTellerNum; nC++)
{
g_aryTellers[nC].m_nAllServiceTime = 0;
g_aryTellers[nC].m_nCustomID = -1;
g_aryTellers[nC].m_bBusy = false;
g_aryTellers[nC].m_nFinishServiceTime = -1;
}
}
第2个回答  2013-09-20
这个貌似有难度 我学的是c++
刚刚学到面向对象
过几个月估计能帮你解决

银行排队系统叫号,怎么样使各个窗口同时工作,c语言
设置一个标志,工作时置为1 然后while循环检测时间, 到时间了就置为0,然后跳出while循环 调用窗口的时候先检测该窗口的这个状态,如果为1就接着检测下个窗口,直到该窗口状态为0,就为其服务

C语言用编程做一个餐厅叫号系统。包括用户登录,叫号,选桌(大小桌),统 ...
include <stdio.h> include <stdlib.h> char g_uniqueKey[24] = {0};void ShowMainDlg(){ system("cls");printf("===XX餐厅===\\n");printf("1-取号 2-叫号 3-退号 4-退出系统\\n");printf("===\\n");printf("请选择对应菜单(1~4):");} void ShowAddDlg(){ syste...

C语言程序设计---一个医院挂号系统包括哪些内容啊,不要回答我什么查找修...
这个根据它的流程来看啊,应该有:时间管理,叫号管理,价格,科室这一类似的吧,其实看一张挂号单就行了,里面基本是一个选项对应一个模块

c语言队列操作
pq->rear->next = pnew这个代码从队列的尾部增加新节点,然后pq->rear = pnew更新队列尾部指针。队列的数据结构形式就是由一个头front指针,一个尾rear指针来表征,items的设计是用空间换时间,涉及队列大小的操作会非常方便。队列的特征是先进先出,你给出的链式实现,其实就跟一个链表一样,链表的...

单片机工程应用技术目录
项目9“银行排队叫号系统综合设计”,通过系统设计流程、硬件和软件设计,展示了单片机在实际工程应用中的综合能力,特别是解决实际问题的系统设计方法。附录部分提供了C51相关知识、库函数介绍、ASCII码表、MCS-51指令集等基础知识,为读者提供了学习和参考的资源。综上所述,《单片机工程应用技术》不仅系统地...

用C语言和数据结构编写一个简单的程序(求源代码)
以下程序在VC++6.0中编译通过.\/ include <stdio.h> include <string.h> define MAX_NUMBER 6 \/\/修改这个参数来允许最大的位数,现设为6位 void GetZhe (const char * preStr,const char * strNum){ char newPreStr[MAX_NUMBER];char tmpStr[MAX_NUMBER];int i,j,k,iCnt;k = strlen...

沈阳海联科技有限公司创始人简介
他参与完成的项目包括:1985年采用C语言完成的某木材一级站计算机管理系统,1987年完成的白酒蒸馏计算机控制系统,1989年完成的炭黑反应炉控制系统,1989年完成的长话叫号LED显示系统,1993年完成的新型的磁翻转显示系统、LED显示系统等,并在此后的十余年间先后完成各类LED显示屏的研制。陈海林的科研成果曾...

九五至尊有哪些内幕?
你好的!很多新手都觉得按照某个大小进行跟号就可以!其实这是大错特错的!你每次跟号码都需要倍投吧。简单的计算一下2^10就将近两千块钱。但是你赢一次就2块钱不到,那么问题来了怎么能保证1000次都能跟住?所以,在概率下面没有什么人是赢家!最终只有平台赢了手续费!上面说的是平台没有什么猫腻...

2018年济南槐荫区教师招聘技能面试答辩考什么
2018年济南市槐荫区教育系统所属事业单位公开招聘人员面试学科为中小学英语、小学音乐、小学体育、小学美术、小学信息技术、幼儿教育,各学科面试相关要求如下:中小学英语岗位(第8组、第9组、第10组)面试内容:朗读英文文章,并用英文进行答辩,两项各占50分。一、准备。考生在准备室根据要求准备。时间...

相似回答