银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行

上传人:206****923 文档编号:91113779 上传时间:2019-06-22 格式:DOC 页数:8 大小:37KB
返回 下载 相关 举报
银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行_第1页
第1页 / 共8页
银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行_第2页
第2页 / 共8页
银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行_第3页
第3页 / 共8页
银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行_第4页
第4页 / 共8页
银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行》由会员分享,可在线阅读,更多相关《银行业务模拟离散事件模拟数据结构严蔚敏代码程序直接运行(8页珍藏版)》请在金锄头文库上搜索。

1、/* Experiment of DataStructure file* Copyright (c) 2010-2011, htu zhuzhichao. All rights reserved.*Purpose:* 实现了模拟银行的程序设计,并且包含每一个客户离开时间及统计,以及* 窗口排队的可视化模拟.运行测试通过.* Public*2010.10朱智超 于河师大西区东一楼110宿舍*/#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef

2、 int Status;/-银行排队模拟/事件和事件表typedef struct QCuEventint OccurTime;int NType;struct QCuEvent *next;QCuEvent, *EventList;/窗口前队列元素typedef struct QCuElemint ArrivalTime;int Duration;struct QCuElem *next;QCuElem,*QEptr;/窗口指针typedef struct QEptr front;QEptr rear;QCustomerp,*QCupp;/主要操作函数Status OpenForDay(Ev

3、entList &ev, QCuEvent en, QCupp &q);/开门Status CustomerArrived(EventList &ev, QCupp &q, QCuEvent en);/顾客到达Status CustomerDeparture(EventList &ev, QCupp &q, QCuEvent en);/顾客离开void CloseForDay();/基本操作函数Status OrderInser(EventList &ev, QCuEvent en);/按时间顺序插入事件到事件表int QLength(QCustomerp qn);/求窗口队列长度int Mi

4、nCuQueue(QCupp q);/求队最短的窗口Status DelFirstEvent(EventList &ev);/删除事件表中的第一个事件Status InitCuQueue(QCustomerp &qn);/初始化窗口队列Status EnCuQueue(QCustomerp &qn,QEptr Q);/进入队列Status DeCuQueue(QCustomerp &qn,QCuElem &Q);/删除队列中的元素Status GetQHead(QCustomerp qn,QCuElem &Q);/获得队列中的第一个元素Status DestoryQueue(QCustomer

5、p qn);/销毁队列void Ptint_QStatus(QCustomerp QCu);/打印队列长度void Bank_SimulationFunc();void test(char str);#include stdio.h#include stdlib.h#include time.hint i=0,e=0,counter=0;int TotalTime=0,CustomerNum=0;/累计客户逗留时间,客户数int CloseTime;/关门时间int windowsnum = 0;/主函数void main() EventList ev; / 事件表QCuEvent en; Q

6、Cupp QCu = NULL;OpenForDay(ev, en, QCu);while (ev-next)en.NType = ev-next-NType;en.OccurTime = ev-next-OccurTime;DelFirstEvent(ev);if (en.NType = 0)CustomerArrived(ev, QCu, en);elseCustomerDeparture(ev, QCu, en);Ptint_QStatus(QCu);CloseForDay();/主要功能子函数Status OpenForDay(EventList &ev, QCuEvent en, Q

7、Cupp &q)int temp = 0;printf(请输入随机数种子(或输入0使用随机种子):);scanf(%d,&temp);if (temp=0) srand(unsigned)time(NULL);else srand(temp);printf(请输入营业时间(单位:分钟):);scanf(%d,&temp);CloseTime = temp;TotalTime = 0;CustomerNum = 0;en.OccurTime = 0;en.NType = 0;en.next = NULL;ev = (EventList) malloc(sizeof(QCuEvent);ev-ne

8、xt = NULL;OrderInser(ev, en);printf(请输入办理业务的窗口数(至少1个):);scanf(%d,&windowsnum);q = (QCustomerp *) malloc(windowsnum+1)*sizeof(QCustomerp);for (int i=1;i=windowsnum;i+)InitCuQueue(qi);return OK;Status CustomerArrived(EventList &ev, QCupp &q, QCuEvent en)test(顾客到达处理);CustomerNum +;/ 产生随机数/srand(54);int

9、 durtime = rand()%30+1;int intertime = rand()%5+1; / 插入到达事件表QCuEvent enTemp;int t = en.OccurTime + intertime;enTemp.OccurTime = t;enTemp.NType = 0;enTemp.next = NULL;if (t ArrivalTime = en.OccurTime;Q-Duration = durtime;Q-next = NULL;int i = MinCuQueue(q);EnCuQueue(qi,Q); / 插入离开事件enTemp.OccurTime =

10、en.OccurTime + durtime;enTemp.NType = i;enTemp.next = NULL;if(QLength(qi) = 1)OrderInser(ev, enTemp);return OK;Status CustomerDeparture(EventList &ev, QCupp &q, QCuEvent en)test(顾客离开处理);int i = en.NType;printf(离开时间%dn,en.OccurTime);if(en.OccurTimeCloseTime)DestoryQueue(qi);elseQCuElem customer;DeCuQ

11、ueue(qi,customer);/ 客户逗留时间TotalTime += en.OccurTime - customer.ArrivalTime;printf(总时间为%dn,TotalTime);if (qi.front-next)GetQHead(qi,customer);QCuEvent enTemp;enTemp.OccurTime = en.OccurTime + customer.Duration;enTemp.NType = i;OrderInser(ev, enTemp);return OK;void CloseForDay()printf(*n);printf(*n);p

12、rintf(* 所有顾客业务办理总时间:%d分钟n, TotalTime);printf(* 业务办理顾客数:%dn, CustomerNum);printf(* 平均每人办理时间:%fn,(float)TotalTime/(float)CustomerNum);printf(*n);printf(*n);/功能实现子函数Status OrderInser(EventList &ev, QCuEvent en)EventList entemp,qtemp;entemp = (EventList) malloc(sizeof(QCuEvent);entemp-OccurTime = en.Occ

13、urTime;entemp-NType = en.NType;entemp-next = NULL;if (!ev-next)ev-next = entemp;return OK;qtemp = ev;while(qtemp-next&qtemp-next-OccurTime next;entemp-next = qtemp-next;qtemp-next = entemp;return OK;int QLength(QCustomerp qn) QEptr qtemp;int i=0;qtemp = qn.front-next;while(qtemp)qtemp = qtemp-next;i+;ret

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号