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

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

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

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

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

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

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

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

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

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

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

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

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

11、否否 是 是是 否2、本程程序包含含三个模模块主程程序模块块:voidd maain() 输出主界界面;选择操作作:进入入银行业务务模拟系系统退退出程序序;Whille(进进入银行行业务模模拟窗口口)OpennForrDayy();进行初初始化操操作;输出格式式控制; 银银行业务务模拟:whille(有有要处理理的事件件时) /有事事件可处处理 DeQuueuee1(); /队列11出队列列,并用用en返返回值 if(客客户到达达)CusttomeerArrrivved(); /处处理客户户到达事事件 elsee CusttomeerDeeparrturre(); /处理客客户离开开事件 计计

12、算出客客户的平平均逗留留时间并并输出返回主界界面:选择操作作:继续续进行业业务模拟拟退出出程序;If(选选择的是是退出)退出程序序;客户到到达事件件处理模模块实现客客户信息息队列的的抽象数数据类型型客户离离开事件件处理模模块实现有有序事件件链表的的抽象数数据类型型3、函数数调用关关系如图所示示:主函数调用客户到达事件处理模块调用客户到达事件处理模块4、设定定客户信信息队列列的抽象象数据类类型定义义:ADT LiinkQQueuue 数据对象象: DD=aai|aaiQueeueEElemm,i=1,22,nn, nn0数据关系系: RR1=|aii-1,aiQueeueEElemm ,ii=2

13、,3, ,n 基本操作作:InittQueeue(&Q)操作结果果:构造造一个空空队列。desttroyyqueeue(&Q)初始条条件:队队列已存存在。操作结结果:销销毁队列列,此队队列不再再存在。EnQuueuee(&QQ,enn)初始条条件:队队列已存存在。操作结结果:新新元素een入队队列。DeQuueuee(&QQ,&een)初始条件件:队列列已存在在。操作结结果:队队头元素素出队列列,并以以en返返回其值值。QueuueLeengtth(QQ)初始条件件:队列列已存在在。操作结果果:返回回队列中中元素的的个数,即队列列长度。 ADDT LinnkQuueuee 第四章 详细设设计1

14、源文文件中所所包含的的头文件件#inccludde #inccludde#inccludde #inccludde2.宏定定义#deffinee MOONEYY 550000 /个个人业务务值,交交易额上上限 #deffinee OKK 1 #deffinee ERRRORR 00 #deffinee OVVERFFLOWW -22 typeedeff innt sstattus;3.定义义的结构构体typeedeff sttrucct innt aarriivettimee; /到达达时间 innt OOccuurTiime; /事件发发生时间间 innt NNTyppe; /事事件类型型,

15、0表表示到达达事件,1表示示离开事事件。同同时用11表示存存款,22表示取取款。 innt dduraatioon; /办办理业务务时间 loong intt mooneyy;/交易金金额Eveent,EleemTyype11;typeedeff sttrucct /等等待队列列元素 innt aarriivettimee; /到达达时间 innt dduraatioon; /办理业业务时间间 loong intt mooneyy; /交易易金额waiit,EElemmTyppe2;typeedeff sttrucct QQNodde1EleemTyype11 daata;strructt Q

16、NNodee1 *nexxt;QNoode11,*QQueuue1;typeedeff sttrucct QQNodde2EleemTyype22 daata;strructt QNNodee2 *nexxt;QNoode22,*QQueuue2;typeedeff sttrucct Quueuee1 ffronnt; Quueuee1 rrearr;LinnkQuueuee1;typeedeff sttrucct Quueuee2 ffronnt; Quueuee2 rrearr;LinnkQuueuee2;4.全局局变量longg innt ttotaal_mmoneey; /银银行现存存

17、资金总总额int tottal_timme; /客户户逗留总总时间int usee_tiime;/每每个顾客客所用时时间int monney;/每每个顾客客办理的的款数int cloosettimee;/银行营营业时间间int INTTERTTIMEE; /下一一用户到到达的时时间间隔隔int DURRATIION; /办理业业务所需需时间int nummberr; /办理业业务的次次序int timme1; /系统统现在时时间LinkkQueeue11 Q11;LinkkQueeue22 Q22;Evennt een; /事件waitt enn1; /列列表2元元素5.初始始化队列列1sta

18、ttus IniitQuueuee1()Q1.froont=Q1.reaar=(Queeue11)maallooc(ssizeeof(QNoode11); if(!Q11.frrontt)exxit(OVEERFLLOW); Q1.froont-neext=NULLL; retturnn OKK;6.初始始化队列列2stattus IniitQuueuee2()Q2.froont=Q2.reaar=(Queeue22)maallooc(ssizeeof(QNoode22); if(!Q22.frrontt)exxit(OVEERFLLOW); Q2.froont-neext=NULLL; re

19、tturnn OKK;7.销毁毁队列11stattus desstrooyquueuee1()whiile(Q1.froont) Q11.reear=Q1.froont-neext; frree(Q1.froont); Q11.frrontt=Q11.reear; retturnn OKK;8.销毁毁队列22stattus desstrooyquueuee2()whiile(Q2.froont) Q22.reear=Q2.froont-neext; frree(Q2.froont); Q22.frrontt=Q22.reear; retturnn OKK;9.队列列1入队队列stattus E

20、nQQueuue1() Quueuee1 pp,r,r1; p=(Queeue11)maallooc(ssizeeof(QNoode11); if(!p)exiit(OOVERRFLOOW); p-datta.aarriivettimee=enn.arrrivvetiime; p-datta.OOccuurTiime=en.OcccurTTimee; p-datta.NNTyppe=een.NNTyppe; p-datta.dduraatioon=een.dduraatioon; p-datta.mmoneey=een.mmoneey; r=QQ1.ffronnt-nexxt; whiile(

21、r)iff(p-daata.arrriveetimme daata.arrriveetimme) iif(rr=QQ1.ffronnt-nexxt) pp-nnextt=r; QQ1.ffronnt-nexxt=pp; ellser1-neext=p; p-nexxt=rr; r1=r;rr=r-neext;if(!r) iff(Q11.frrontt-nnextt=NNULLL) QQ1.ffronnt-nexxt=pp; QQ1.rrearr=p; QQ1.rrearr-nnextt=NUULL; ellsep-nexxt=NNULLL; Q1.reaar-nexxt=pp; Q1.rea

22、ar=pp; retuurn OK;10.队队列2入入队列stattus EnQQueuue2()Queeue22 p; p=(Queeue22)maallooc(ssizeeof(QNoode22); if(!p)exiit(OOVERRFLOOW); p-datta.aarriivettimee=enn1.aarriivettimee; p-datta.dduraatioon=een1.durratiion; p-datta.mmoneey=een1.monney; p-nexxt=NNULLL; Q2.reaar-nexxt=pp; Q2.reaar=pp; retturnn OKK;1

23、1.若若队列11不空,则删除除Q1的的队头元元素,并并用enn返回其其值stattus DeQQueuue1() QQueuue1 p; iff(Q11.frrontt=QQ1.rrearr) rretuurn ERRROR; p=QQ1.ffronnt-nexxt; en.arrriveetimme=pp-ddataa.arrrivvetiime; en.OcccurTTimee=p-daata.OcccurTTimee; en.NTyype=p-datta.NNTyppe; en.durratiion=p-datta.dduraatioon; en.monney=p-datta.mmone

24、ey; Q1.froont-neext=p-nexxt; if(Q1.reaar=p) Q1.reaar=QQ1.ffronnt; /只有有一个人人时 freee(pp); retturnn OKK;12.若若队列22不空,则删除除Q2的的队头元元素,并并用enn1返回回其值stattus DeQQueuue2() Quueuee2 pp;if(QQ2.ffronnt=Q2.reaar)rretuurn ERRROR; p=QQ2.ffronnt-nexxt; en11.arrrivvetiime=p-datta.aarriivettimee; en11.duurattionn=p-daata

25、.durratiion; en11.mooneyy=p-daata.monney; Q2.froont-neext=p-nexxt; if(Q2.reaar=p) Q2.reaar=QQ2.ffronnt; /只有一一个人时时 freee(pp);retuurn OK;13.营营业时间间结束,全部客客户离开开银行voidd ffreee_syysteem() desstrooyquueuee1(); desstrooyquueuee2(); 14.产产生随机机数stattus rannd_aar(iint *innterrtimme,llongg innt *monney, innt *dur

26、ratiion,intt *NNTyppe)*innterrtimme=rrandd()%INTTERTTIMEE+1; /下个客客户到达达的时间间间隔,不大于于INTTERTTIMEE *mooneyy=raand()%MMONEEY+11; /每个顾顾客办理理的款数数,不大大于MOONEYY *duurattionn=raand()%DDURAATIOON+11; /客户办办理业务务所要时时间,不不大于DDURAATIOON *NTTypee=raand()%22; /事件类类型分为为0和11两种 retturnn OKK;15.初初始化操操作voidd OppenFForDDay() p

27、riintff( 请输入入银行的的初始存存款:); scaanf(%dd,&tottal_monney); priintff( 请输入入银行的的营业时时间(分分钟):); scaanf(%dd,&cloosettimee); priintff( 请输入入最大到到达时间间间隔(分钟):); scaanf(%dd,&INTTERTTIMEE); priintff( 请输入入最大的的处理时时间(分分钟):); scaanf(%dd,&DURRATIION); tottal_timme=00; /客客户逗留留总时间间(初始始值) nummberr=0; /办理理业务的的次序(初始值值) IniitQu

28、ueuee1(); /初始化化队列11 IniitQuueuee2(); /初始化化队列22 en.arrriveetimme=00; /到达时时间 en.OcccurTTimee=0; /事事件发生生时间 en.NTyype=0; /事事件类型型,暂时时值en.monney=0; /交交易金额额,暂时时值en.durratiion=0; /办理理业务时时间,暂暂时值EnQQueuue1(); /事事件进队队列16.查查找上一一离开事事件的发发生时间间int finnd_lleavve() Quueuee1 pp; innt ii=0; p=Q1.froont-neext;whiile(p!=

29、NULLL) iff(p-daata.NTyype!=0) i=p-datta.OOccuurTiime; p=p-nexxt; retturnn i;17.处处理客户户到达事事件voidd CuustoomerrArrriveed()intt innterrtimme;intt i;timme1=en.OcccurTTimee;rannd_aar(&intterttimee,&(en.monney), &(enn.duurattionn),&(enn.NTTypee);/设设置一离离开事件件插入事事件表en.NTyype+; /0变变1,11变2i=ffindd_leeavee(); /查找

30、上上一离开开事件的的发生时时间if(i=0) /第第一位顾顾客 en.OcccurTTimee=enn.arrrivvetiime+en.durratiion; eelsee iff(i=enn.arrrivvetiime)/本本事件到到达时上上一事件件还未离离开 en.OcccurTTimee=i+en.durratiion; /则此事事件的离离开时间间=上一一事件的的离开时时间+本本事件处处理时间间 elsse /上上一事件件离开之之后,本本事件才才到达 een.OOccuurTiime=en.arrriveetimme+een.dduraatioon;/则此此事件的的离开时时间=本本事件

31、到到达时间间+本事事件处理理时间 EEnQuueuee1(); /设置置下一用用户到达达事件插插入队列列1 een.aarriivettimee=enn.arrrivvetiime+intterttimee; /下一一客户到到达时间间 een.OOccuurTiime=en.arrriveetimme; een.NNTyppe=00; /暂时时值 een.mmoneey=00; /暂时时值 een.dduraatioon=00; /暂时值值 EEnQuueuee1();18.返返回队列列2的长长度int gettlonng_qq2()intt i=0; Queeue22 p; p=QQ2.ff

32、ronnt-nexxt; whiile(p) i+; p=pp-nnextt; retturnn i;19.顺顺序检查查队列22是否有有满足条条件者stattus cheeck_q2() intt i,j,zz=0; i=ggetllongg_q22(); /用用i返回回队列22长度 forr(j=1;jj=ii;j+) DeQQueuue2(); /队队列2出出队,用用en11返回其其值 if(en11.mooneyy=ttotaal_mmoneey) /若若队列22出队元元素的要要交易的的金额cloosettimee) priintff(-ttt%dttt%dttt%dttt%dtt%dn

33、,z,uuse_timme,nnumbber,z,(en11.arrrivvetiime),enn1.mmoneey); elsse timme1=timme1+en11.duurattionn; /更新系系统当前前时间 usee_tiime=timme1-en11.arrrivvetiime; tottal_timme+=usee_tiime; /更更新逗留留时间 tottal_monney-=enn1.mmoneey; /更新新资金总总额 nummberr+; /更更新实现现交易的的客户数数 priintff(%ldttt%dttt%dttt%dttt%dt-%dnn,ttotaal_mm

34、oneey,uuse_timme,nnumbber,timme1,(enn1.aarriivettimee),(en11.mooneyy); elsse /若若队列22出队元元素的要要交易的的金额银行现现存金额额,不能能办理iff(tiime11clloseetimme) prrinttf(-ttt%dttt%dttt%dttt%dt%ddn,z,usee_tiime,nummberr,z,(enn1.aarriivettimee),een1.monney); eelsee EEnQuueuee2(); /继续插插入队列列2的队队尾,继继续等待待 retturnn OKK;20.队队列1离离开

35、事件件减duurattionn(办理理业务时时间) int cutt_duurattionn(innt ee) /e即即形参办办理业务务的时间间 Queeue11 p,q,rr; EleemTyype11 enn; p=QQ1.ffronnt-nexxt; r=QQ1.ffronnt; if(p) if(p-datta.NNTyppe!=0) q=p-nexxt; r-neext=q; /删除结结点 enn.arrrivvetiime=p-datta.aarriivettimee; /到达时时间 enn.OcccurrTimme=pp-ddataa.OcccurrTimme-ee; /事件发发

36、生时间间 enn.NTTypee=p-daata.NTyype; /事事件类型型 enn.duurattionn=p-daata.durratiion; /办办理业务务时间 enn.mooneyy=p-daata.monney; /数数额 frree(p); EnnQueeue11(); retturnn OKK;21.处处理客户户离开事事件voidd CuustoomerrDeppartturee() intt i; i=een.NNTyppe; /业务务类型,1表示示存款,2表示示取款 timme1=en.OcccurTTimee-enn.duurattionn; if(i=OK) /是否

37、否是办理理存款 iff(enn.OcccurrTimmecclossetiime) /营业结结束,全全部客户户离开银银行 freee_ssysttem(); elsse /营营业时间间没有结结束,继继续办理理 uuse_timme=een.OOccuurTiime-en.arrriveetimme; ttotaal_ttimee+=uuse_timme; /更更新逗留留的总时时间 ttotaal_mmoneey=ttotaal_mmoneey+een.mmoneey;/更新新资金总总额 nnumbber+; /更新新服务的的客户数数 ttimee1=een.OOccuurTiime; /更新新

38、系统当当前时间间 pprinntf(%lldttt%dttt%dttt%dttt%dtt%dn,tottal_monney,usee_tiime,nummberr,enn.OcccurrTimme,een.aarriivettimee,enn.mooneyy); cchecck_qq2(); /检查查队列22是否有有满足条条件者 elsse /办理理取款 if(en.monneytottal_monney) /办理取取款,当当申请金金额不能能满足时时,离开开队列11进入队队列2等等待 cutt_duurattionn(enn.duurattionn);/从队队列1中中删除该该结点 enn1.aarriivettimee=enn.arr

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

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

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

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