山东理工大学计算机学院课程设计任务书及成绩评定34706.docx

上传人:you****now 文档编号:49633368 上传时间:2022-10-09 格式:DOCX 页数:38 大小:341.98KB
返回 下载 相关 举报
山东理工大学计算机学院课程设计任务书及成绩评定34706.docx_第1页
第1页 / 共38页
山东理工大学计算机学院课程设计任务书及成绩评定34706.docx_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《山东理工大学计算机学院课程设计任务书及成绩评定34706.docx》由会员分享,可在线阅读,更多相关《山东理工大学计算机学院课程设计任务书及成绩评定34706.docx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、山东理工大大学计算算机学院院课 程 设 计(数据结构构)班 级级姓 名名学 号号 指导教师师二一一年年一月二十日课程设计任任务书及及成绩评评定课题名称 银银行业务务模拟系系统、题目的的目的和和要求: 1、设设计目的的巩固和加深深对数据据结构的的理解,通通过上机机实验、调调试程序序,加深深对课本本知识的的理解,最最终使学学生能够够熟练应应用数据据结构的的知识写写程序。(1)通过过本课程程的学习习,能熟熟练掌握握几种基基本数据据结构的的基本操操作。(2)能针针对给定定题目,选选择相应应的数据据结构,分分析并设设计算法法,进而而给出问问题的正正确求解解过程并并编写代代码实现现。2、设计题题目要求求:

2、 1.客户户业务分分为两种种:第一种种是申请请从银行行得到一一笔资金金,即取款款或借款;第二种种是向银银行投入入一笔资资金,即存款款或还款款。2.银行行有两个个服务窗窗口,相应地地有两个个队列。客户到到达银行行后先排第第一个队队。处理每每个客户户业务时时,如果属属于第一一种,且申请请额超出出银行现现存资金金总额而而得不到到满足时时,则立即排入入第二个个队等候候,直至满满足时才才离开银银行, 否则则业务处处理完后后立即离开开银行。3.每接接待完一一个第二二种业务务的客户户,则顺序序检查和和处理第第二个队队列中的的客户,对能满满足的申申请者予予以满足足,不能满满足者重重新排到到第二个个队列的的队尾

3、。4.假设检检查不需需要时间间,在此此检查过过程中,一旦银银行资金金总额少少于或等等于刚才才第一个个队列中中最后一一个客户户(第二二种业务务)被接接待之前的数数额,或者本本次已将将第二个个队列检检查或处处理了一一遍,就停止止检查(因因为此时时已不可可能还有有满足者者),转转而继续续接待第第一个队队列的客客户。 5.任何何时刻都都只开一一个窗口口,营业业时间结结束时所所有客户户立即离离开银行行。通过过离散的的模拟方方法求出出客户在在银行内内逗留的的平均时时间。、设计进进度及完完成情况况日 期内 容容1.10-1.11选取参考书书,查阅阅有关文文献资料料,完成成资料搜搜集和系系统分析析工作。1.1

4、21.14创建相关数数据结构构,录入入源程序序。1.171.19调试程序并并记录调调试中的的问题,初初步完成成课程设设计报告告。1.201.21上交课程设设计报告告打印版版并进行行课程设设计答辩辩,要求求每个同同学针对对自己的的设计回回答指导导教师33-4个个问题。考核结束后后将课程程设计报报告和源源程序的的电子版版交班长长统一刻刻光盘上上交。、主要参参考文献献及资料料1 严严蔚敏 数据结结构(CC语言版版)清华华大学出出版社 199992 严严蔚敏 数据结结构题集集(C语语言版)清清华大学学出版社社 199993 谭谭浩强 C语语言程序序设计 清华华大学出出版社4 与与所用编编程环境境相配套

5、套的C语语言或CC+相相关的资资料、成绩评评定:设计成绩: (教师师填写)指导老师: (签字字)二一一 年 一 月 二 十一 日目 录第一章 概概述1第二章 系系统分析析2第三章 概概要设计计3第四章 详详细设计计6第五章 运运行与测测试24第六章 总总结与心心得28参考文献:29 第一章 概概述课程设计是是实践性性教学中中的一个个重要环环节,它它以某一一课程为为基础,可可以涉及及和课程程相关的的各个方方面,是是一门独独立于课课程之外外的特殊殊课程。课课程设计计是让同同学们对对所学的的课程更更全面的的学习和和应用,理理解和掌掌握课程程的相关关知识。数数据结构构是一一门重要要的专业业基础课课,是

6、计计算机理理论和应应用的核核心基础础课程。数据结构课课程设计计,要求求学生在在数据结结构的逻逻辑特性性和物理理表示、数数据结构构的选择择和应用用、算法法的设计计及其实实现等方方面,加加深对课课程基本本内容的的理解。同同时,在在程序设设计方法法以及上上机操作作等基本本技能和和科学作作风方面面受到比比较系统统和严格格的训练练。在这次的课课程设计计中我选选择的题题目是银银行业务务模拟系系统。一一般某个个银行在在某个地地区营业业前,都都要进行行市场调查查与分析析。通过过调查,分析开多少个窗口使效率最高,而且不会产生较大的冗余。做此项调查通常要花费大量的人力物力,因此我借助计算机系统产生的随机数(时间间

7、隔,每个客户办理的款数以及处理时间)对银行客户的离散事件进行预测,通过银行业务模拟系统计算出客户在银行逗留的总时间并计算出客户在银行的平均逗留时间。通过计算机模拟的方法减少实际调查的劳动量,资金及时间耗费,轻松的得到高效的方法。第二章 系系统分析析1银行业业务模拟拟程序的的主要处处理对象象是“事件”,事件件的主要要信息是是事件的的类型和和事件的的发生时时刻。算算法中处处理的事事件有两两类:一一类是客客户到达达事件;另一类类是客户户离开事事件。前前一类事事件发生生的时刻刻随客户户的到来来自然形形成;后后一类事事件发生生的时刻刻由客户户办理业业务所需需时间和和等待时时间而定定。由于于程序驱驱动是按

8、按事件发发生时刻刻的先后后顺序进进行的,所所以事件件表应是是有序表表,其主主要操作作是插入入和删除除事件,用用一个单单链表表表示。2银行业业务模拟拟程序中中需要的的另一数数据结构构是表示示客户排排队的队队列,由由于假设设银行有有2个窗口口,因此此程序中中需要22个队列列,队列列中有关关客户的的信息是是客户到到达的时时间和客户户办理业业务所需需要的时时间。队队列中的的队头客客户即为为正在窗窗口办理理事务的的客户,他他办完业业务离开开队列的的时刻影影响着即即将发生生的客户户离开事事件的时时刻,我我们要记记录前一一客户的的离开时时间。这这就是说说,对每每个队头头客户都都存在一一个将要要驱动的的客户离

9、离开事件件。因此此在任何何时刻即即将发生生的事伯伯只有44种可能能:1)新新的客户户到达;2)队队列1队队头客户户办完业业务离开开;3)队列列1取款款客户由由于得不不到满足足而转至至队列22;4)队队列2队队头客户户办完业业务离开开; 3. 为了使使编写的的程序具具有通用用性,在在编程序序时将银银行的营营业时间间、初始始存款客户办理业业务的最最长时间间及两个个客户到到达的最最大时间间间隔都都设置成成程序运运行时动动态输入入,但是是客户办办理业务务的时间间和两个个客户到到达的时时间间隔隔用随机机函数产产生的随随机数表表示。这这样可以以对程序序进行理理性的分分析,从从而实现现真正离离散事件件的模拟

10、拟。4. 测试试数据。 客户的的存取款款金额,不大于于50000元客户办理理业务所所要时间间,不大大于20分钟钟下个客户户到达的的时间间间隔,不不大于330分钟钟当然,系统统的模拟拟性能完完全不受受这些规规定的限限制,用用户完全全可以根根据实际际需要作作简单的的修改和和调整而且以以上各模模拟量均均由随机机函数给给出,符符合离散散事件要要求第三章 概概要设计计1、 银行业务模模拟程序序流程图图结束进入队列1排队服务并离开能否满足客户服务并离开进队2等待接待1个存款业务顺序检查队2能否满足取队头队头是否存在时间到?开始客户到达 否 否否 是是 是 否 2、 本本程序包包含三个个模块主程序序模块:v

11、oid maiin() 输出主界面面;选择操作:进入银银行业务务模拟系系统退退出程序序;Whilee(进入入银行业务务模拟窗窗口)OpenFForDDay();进进行初始始化操作作;输出格式控控制; 银行行业务模模拟: whiile(有要处处理的事事件时) /有有事件可可处理 DeeQueeue11(); /队队列1出出队列,并用een返回回值 if(客户到到达) CCusttomeerArrrivved(); /处处理客户户到达事事件 ellse CCusttomeerDeeparrturre(); /处理客客户离开开事件 计算算出客户户的平均均逗留时时间并输输出返回主界面面:选择操作:继续

12、进进行业务务模拟退出程程序;If(选择择的是退退出)退出程序;客户到达达事件处处理模块块实现现客户信信息队列列的抽象象数据类类型客户离开开事件处处理模块块实现现有序事事件链表表的抽象象数据类类型3、 函函数调用用关系如图所示:主函数调用客户到达事件处理模块调用客户到达事件处理模块4、 设设定客户户信息队队列的抽抽象数据据类型定定义:ADT LinnkQuueuee 数据对象: D=aii|aiiQueeueEElemm,i=1,22,nn, nn0数据关系: R11=|ai-1,aaiQueeueEElemm ,ii=2,3, ,n 基本操作:InitQQueuue(&Q)操作结结果:构构造一

13、个个空队列列。destrroyqqueuue(&Q)初始条件件:队列列已存在在。操作结果果:销毁毁队列,此此队列不不再存在在。EnQueeue(&Q,en )初始条件件:队列列已存在在。操作结果果:新元元素enn入队列列。DeQueeue(&Q,&enn)初始条件件:队列列已存在在。操作结果果:队头头元素出出队列,并并以enn返回其其值。QueueeLenngthh(Q)初始条件:队列已已存在。操作结果:返回队队列中元元素的个个数,即即队列长长度。 ADTT LLinkkQueeue 第四章 详详细设计计 1源文件件中所包包含的头头文件#inclludee #inclludee#incllud

14、ee #inclludee2.宏定义义#defiine MONNEY 50000 /个人人业务值值,交易易额上限限 #defiine OK 11 #defiine ERRROR 0 #defiine OVEERFLLOW -2 typeddef intt sttatuus;3.定义的的结构体体typeddef strructt intt arrrivvetiime; /到达时时间 intt OcccurrTimme; /事事件发生生时间 intt NTTypee; /事件件类型,00表示到到达事件件,1表表示离开开事件。同同时用11表示存存款,22表示取取款。 intt duurattionn

15、; /办理理业务时时间 lonng iint monney;/交交易金额额Evennt,EElemmTyppe1;typeddef strructt /等待待队列元元素 intt arrrivvetiime; /到达时时间 intt duurattionn; /办办理业务务时间 lonng iint monney; /交易金金额waitt,EllemTTypee2;typeddef strructt QNNodee1ElemmTyppe1 datta;struuct QNoode11 *nnextt;QNodde1,*Quueuee1;typeddef strructt QNNodee2Ele

16、mmTyppe2 datta;struuct QNoode22 *nnextt;QNodde2,*Quueuee2;typeddef strructt Queeue11 frrontt; Queeue11 reear;LinkkQueeue11;typeddef strructt Queeue22 frrontt; Queeue22 reear;LinkkQueeue22;4.全局变变量long intt tootall_mooneyy; /银行行现存资资金总额额int ttotaal_ttimee; /客户逗逗留总时时间int uuse_timme;/每个个顾客所所用时间间int mmone

17、ey;/每个个顾客办办理的款款数int cclossetiime;/银银行营业业时间int IINTEERTIIME; /下一用用户到达达的时间间间隔int DDURAATIOON; /办办理业务务所需时时间int nnumbber; /办办理业务务的次序序int ttimee1; /系统现现在时间间LinkQQueuue1 Q1;LinkQQueuue2 Q2;Eventt enn; /事事件wait en11; /列表表2元素素5.初始化化队列11statuus IInittQueeue11()Q1.ffronnt=QQ1.rrearr=(QQueuue1)malllocc(siizeoo

18、f(QQNodde1); iif(!Q1.froont)exiit(OOVERRFLOOW); QQ1.ffronnt-nexxt=NNULLL; rretuurn OK;6.初始化化队列22statuus IInittQueeue22()Q2.ffronnt=QQ2.rrearr=(QQueuue2)malllocc(siizeoof(QQNodde2); iif(!Q2.froont)exiit(OOVERRFLOOW); QQ2.ffronnt-nexxt=NNULLL; rretuurn OK;7.销毁队队列1statuus ddesttroyyqueeue11()whille(QQ1

19、.ffronnt) Q1.reaar=QQ1.ffronnt-nexxt; freee(QQ1.ffronnt); Q1.froont=Q1.reaar; retuurn OK;8.销毁队队列2statuus ddesttroyyqueeue22()whille(QQ2.ffronnt) Q2.reaar=QQ2.ffronnt-nexxt; freee(QQ2.ffronnt); Q2.froont=Q2.reaar; retuurn OK;9.队列11入队列列statuus EEnQuueuee1() Queeue11 p,r,rr1; p=(QQueuue1)malllocc(siize

20、oof(QQNodde1); if(!p)eexitt(OVVERFFLOWW); p-ddataa.arrrivvetiime=en.arrriveetimme; p-ddataa.OcccurrTimme=een.OOccuurTiime; p-ddataa.NTTypee=enn.NTTypee; p-ddataa.duurattionn=enn.duurattionn; p-ddataa.mooneyy=enn.mooneyy; r=Q11.frrontt-nnextt; whille(rr)if(p-datta.aarriivettimee datta.aarriivettimee)

21、 iff(r=Q11.frrontt-nnextt) p-neext=r; Q11.frrontt-nnextt=p; elsserr1-nexxt=pp; pp-nnextt=r; rr1=rr;r=r-nexxt;if(!rr) if(Q1.froont-neext=NUULL) Q11.frrontt-nnextt=p; Q11.reear=p; Q11.reear-neext=NULLL; elssepp-nnextt=NUULL; QQ1.rrearr-nnextt=p; QQ1.rrearr=p; returrn OOK;10.队列列2入队队列statuus EEnQuueuee2

22、()Queuue2 p; p=(QQueuue2)malllocc(siizeoof(QQNodde2); if(!p)eexitt(OVVERFFLOWW); p-ddataa.arrrivvetiime=en11.arrrivvetiime; p-ddataa.duurattionn=enn1.dduraatioon; p-ddataa.mooneyy=enn1.mmoneey; p-nnextt=NUULL; Q2.rrearr-nnextt=p; Q2.rrearr=p; retuurn OK;11.若队队列1不不空,则则删除QQ1的队队头元素素,并用用en返返回其值值statuus

23、DDeQuueuee1() Quueuee1 pp; if(Q1.froont=Q11.reear) reeturrn EERROOR; p=Q11.frrontt-nnextt; en.aarriivettimee=p-daata.arrriveetimme; en.OOccuurTiime=p-datta.OOccuurTiime; en.NNTyppe=pp-ddataa.NTTypee; en.dduraatioon=pp-ddataa.duurattionn; en.mmoneey=pp-ddataa.mooneyy; Q1.ffronnt-nexxt=pp-nnextt; if(Q

24、Q1.rrearr=pp) QQ1.rrearr=Q11.frrontt; /只有一一个人时时 freee(p); retuurn OK;12.若队队列2不不空,则则删除QQ2的队队头元素素,并用用en11返回其其值statuus DDeQuueuee2() Queeue22 p;if(Q22.frrontt=QQ2.rrearr)reeturrn EERROOR; p=Q22.frrontt-nnextt; en1.arrriveetimme=pp-ddataa.arrrivvetiime; en1.durratiion=p-datta.dduraatioon; en1.monney=p-d

25、atta.mmoneey; Q2.ffronnt-nexxt=pp-nnextt; if(QQ2.rrearr=pp) QQ2.rrearr=Q22.frrontt; /只只有一个个人时 freee(p);returrn OOK;13.营业业时间结结束,全全部客户户离开银银行void frree_sysstemm() ddesttroyyqueeue11(); ddesttroyyqueeue22(); 14.产生生随机数数statuus rrandd_arr(innt *intterttimee,loong intt *mmoneey, intt *dduraatioon,iint *NTT

26、ypee)*intterttimee=raand()%IINTEERTIIME+1; /下下个客户户到达的的时间间间隔,不不大于IINTEERTIIME *monney=rannd()%MOONEYY+1; /每每个顾客客办理的的款数,不不大于MMONEEY *durratiion=rannd()%DUURATTIONN+1; /客客户办理理业务所所要时间间,不大大于DUURATTIONN *NTyype=rannd()%2; /事事件类型型分为00和1两两种 rretuurn OK;15.初始始化操作作void OpeenFoorDaay() prinntf( 请请输入银银行的初初始存款款:

27、); sscannf(%d,&ttotaal_mmoneey); pprinntf( 请请输入银银行的营营业时间间(分钟钟):); sscannf(%d,&cclossetiime); pprinntf( 请请输入最最大到达达时间间间隔(分分钟):); sscannf(%d,&IINTEERTIIME); pprinntf( 请请输入最最大的处处理时间间(分钟钟):); sscannf(%d,&DDURAATIOON); ttotaal_ttimee=0; /客户户逗留总总时间(初初始值) nnumbber=0; /办理业业务的次次序(初初始值) IInittQueeue11(); /初初始化

28、队队列1 IInittQueeue22(); /初初始化队队列2 een.aarriivettimee=0; /到到达时间间 een.OOccuurTiime=0; /事件件发生时时间 een.NNTyppe=00; /事件件类型,暂暂时值en.mmoneey=00; /交易易金额,暂暂时值en.dduraatioon=00; /办理业业务时间间,暂时时值EnQuueuee1(); /事件件进队列列16.查找找上一离离开事件件的发生生时间int ffindd_leeavee() Queeue11 p; intt i=0; p=QQ1.ffronnt-nexxt;whille(pp!=NNULL

29、L) if(p-datta.NNTyppe!=0) i=pp-ddataa.OcccurrTimme; p=pp-nnextt; retuurn i;17.处理理客户到到达事件件void CusstommerAArriivedd()int intterttimee;int i;timee1=een.OOccuurTiime;randd_arr(&iinteertiime,&(een.mmoneey), &(en.durratiion),&(en.NTyype);/设置置一离开开事件插插入事件件表en.NNTyppe+; /0变11,1变变2i=fiind_leaave(); /查查找上一一离开

30、事事件的发发生时间间if(ii=00) /第一一位顾客客 een.OOccuurTiime=en.arrriveetimme+een.dduraatioon; ellse if(i=en.arrriveetimme)/本事事件到达达时上一一事件还还未离开开 een.OOccuurTiime=i+een.dduraatioon; /则则此事件件的离开开时间=上一事事件的离离开时间间+本事事件处理理时间 eelsee /上一一事件离离开之后后,本事事件才到到达 enn.OcccurrTimme=een.aarriivettimee+enn.duurattionn;/则此事事件的离离开时间间=本事事

31、件到达达时间+本事件件处理时时间 EnnQueeue11(); /设置下下一用户户到达事事件插入入队列11 een.aarriivettimee=enn.arrrivvetiime+intterttimee; /下一一客户到到达时间间 enn.OcccurrTimme=een.aarriivettimee; enn.NTTypee=0; /暂时值值 enn.mooneyy=0; /暂时值值 enn.duurattionn=0; /暂暂时值 EnnQueeue11();18.返回回队列22的长度度int ggetllongg_q22()int i=00; Queuue2 p; p=Q22.frr

32、ontt-nnextt; whille(pp) ii+; pp=p-neext; retuurn i;19.顺序序检查队队列2是是否有满满足条件件者statuus cchecck_qq2() int i,jj,z=0; i=geetloong_q2(); /用ii返回队队列2长长度 for(j=11;j=i;j+) DDeQuueuee2(); /队列列2出队队,用een1返返回其值值 iif(een1.monney=tootall_mooneyy) /若队队列2出出队元素素的要交交易的金金额cclossetiime) pprinntf(-tt%ddtt%ddtt%ddtt%ddt%dnn,z

33、z,usse_ttimee,nuumbeer,zz,(een1.arrriveetimme),en11.mooneyy); eelsee ttimee1=ttimee1+een1.durratiion; /更更新系统统当前时时间 uuse_timme=ttimee1-een1.arrriveetimme; ttotaal_ttimee+=uuse_timme; /更新新逗留时时间 ttotaal_mmoneey-=en11.mooneyy; /更新资资金总额额 nnumbber+; /更新新实现交交易的客客户数 pprinntf(%lldttt%dttt%dttt%dttt%dtt-%ddn,

34、tootall_mooneyy,usse_ttimee,nuumbeer,ttimee1,(en11.arrrivvetiime),(een1.monney); elsee /若队队列2出出队元素素的要交交易的金金额银银行现存存金额,不不能办理理if(timme1cloosettimee) priintff(-ttt%dttt%dttt%dttt%dtt%dn,z,uuse_timme,nnumbber,z,(en11.arrrivvetiime),enn1.mmoneey); ellse EnnQueeue22(); /继继续插入入队列22的队尾尾,继续续等待 retuurn OK;20.队

35、列列1离开开事件减减durratiion(办办理业务务时间) int ccut_durratiion(intt e) /e即形形参办理理业务的的时间 Queuue1 p,qq,r; ElemmTyppe1 en; p=Q11.frrontt-nnextt; r=Q11.frrontt; if(pp) iif(pp-ddataa.NTTypee!=00) q=pp-nnextt; r-nexxt=qq; /删删除结点点 en.arrriveetimme=pp-ddataa.arrrivvetiime; /到到达时间间 en.OcccurTTimee=p-daata.OcccurTTimee-e;

36、 /事事件发生生时间 en.NTyype=p-datta.NNTyppe; /事件件类型 en.durratiion=p-datta.dduraatioon; /办理理业务时时间 en.monney=p-datta.mmoneey; /数额额 freee(pp); EnQQueuue1(); retuurn OK;21.处理理客户离离开事件件void CusstommerDDepaartuure() iint i; ii=enn.NTTypee; /业务类类型,11表示存存款,22表示取取款 ttimee1=een.OOccuurTiime-en.durratiion; iif(ii=OOK)

37、 /是否是是办理存存款 if(en.OcccurTTimeeclloseetimme) /营营业结束束,全部部客户离离开银行行 ffreee_syysteem(); eelsee /营业业时间没没有结束束,继续续办理 usse_ttimee=enn.OcccurrTimme-een.aarriivettimee; tootall_tiime+=usse_ttimee; /更新新逗留的的总时间间 tootall_mooneyy=tootall_mooneyy+enn.mooneyy;/更新资资金总额额 nuumbeer+; /更新服服务的客客户数 tiime11=enn.OcccurrTimme; /更新系系统当前前时间 prrinttf(%lddtt%ddtt%ddtt%ddtt%ddt%dnn,ttotaal_mmoneey,uuse_timme,nnumbber,en.OcccurTTimee,enn.arrrivvetiime,en.monney); chheckk_q22(); /检查队队列2是是否有满满足条件件者

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

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁