综合性设计性实验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机与信息技术学院综合性、设计性实验报告 专业: 计算机科学与技术 年级/班级: 10级 2011—2012学年第一学期 课程名称 数据结构 指导教师 王岁花 本组成员 学号姓名 1008114082 左雪敬 实验地点 215机房 实验时间 7、8、9周5-6节 项目名称 银行业务模拟系统的设计与实现 实验类型 综合性 问题简介: 1:假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 2.一个完整的系统应具有以下功能: 初始化(OpenForDay),模拟银行开门时各数据结构的状态。 事件驱动(EventDrived), 对客户到达和离开事件做相应处理。 下班处理(CloseForDay), 模拟银行关门时的动作,统计客户平均逗留时间 。 实验目的: 1)通过实验掌握对离散事件模拟的认识; 2)进一步理解队列的实现与应用; 3)对链表的操作有更深层次的理解; 该实验涉及到线性表的建立、插入、删除等操作,涉及到了队列的建立、插入、删除,涉及到了离散事件的应用思想,还涉及到了排序的概念。完成这个实验对线性表、队列及C语言编程等多方面的知识将是一个很好的利用,对离散事件也将有一个初步的认识。 实验仪器或设备: 计算机。 三:实验步骤: 1:整体设计。包括初始化(OpenForDay),事件驱动(EvenDrived),下班处理(CloseForDay) 初始化的代码主要完成的工作是建立一个银行工作系统的框架,把实际问题数字化,利用“事件”来描述系统程序,其中包括变量客户人数、累计时间、客户到达成为事件的一个部分,当然每个窗口看做是一个队列。 算法如下: void OpenForDay() { // 初始化操作 int i; InitList(ev); // 初始化事件链表为空 en.OccurTime=0; // 设定第一个客户到达事件 en.NType=Qu; // 到达 OrderInsert(ev,en,cmp); // 插入事件表 for(i=0;iQu;++i) // 置空队列 InitQueue(q[i]); } 接下来,客户进入,进行客户到达后的处理 要做的操作有:客户人数加1—记录到达的时刻—加入事件列表—查找队列最短的窗口—客户插入—办理业务—离开—记录办理业务需要的时间。 算法如下: void CustomerArrived() { // 处理客户到达事件,en.NType=Qu QElemType f; int durtime,intertime,i; ++CustomerNum; Random(durtime,intertime); // 生成随机数 et.OccurTime=en.OccurTime+intertime; // 下一客户到达时刻 et.NType=Qu; // 队列中只有一个客户到达事件 if(et.OccurTimeCloseTime) // 银行尚未关门,插入事件表 OrderInsert(ev,et,cmp); i=Minimum(q); // 求长度最短队列的序号,等长为最小的序号 f.ArrivalTime=en.OccurTime; f.Duration=durtime; EnQueue(q[i],f); if(QueueLength(q[i])==1) { et.OccurTime=en.OccurTime+durtime; et.NType=i; OrderInsert(ev,et,cmp); // 设定第i队列的一个离开事件并插入事件表 } } void CustomerDeparture() { // 处理客户离开事件,en.NType int i; i=en.NType; DeQueue(q[i],customer); // 删除第i队列的排头客户 TotalTime+=en.OccurTime-customer.ArrivalTime; // 累计客户逗留时间 if(!QueueEmpty(q[i])) { // 设定第i队列的一个离开事件并插入事件表

文档评论(0)

jiafang9555 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档