新华东交通大学数据结构课程设计银行模拟系统副本.docx

上传人:b****6 文档编号:4482785 上传时间:2022-12-01 格式:DOCX 页数:8 大小:18.68KB
下载 相关 举报
新华东交通大学数据结构课程设计银行模拟系统副本.docx_第1页
第1页 / 共8页
新华东交通大学数据结构课程设计银行模拟系统副本.docx_第2页
第2页 / 共8页
新华东交通大学数据结构课程设计银行模拟系统副本.docx_第3页
第3页 / 共8页
新华东交通大学数据结构课程设计银行模拟系统副本.docx_第4页
第4页 / 共8页
新华东交通大学数据结构课程设计银行模拟系统副本.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

新华东交通大学数据结构课程设计银行模拟系统副本.docx

《新华东交通大学数据结构课程设计银行模拟系统副本.docx》由会员分享,可在线阅读,更多相关《新华东交通大学数据结构课程设计银行模拟系统副本.docx(8页珍藏版)》请在冰豆网上搜索。

新华东交通大学数据结构课程设计银行模拟系统副本.docx

新华东交通大学数据结构课程设计银行模拟系统副本

新华东交通大学数据结构课程设计(银行模拟系统)(副本)-

课程设计(论文)任务书

软件学院XXXX专业12月XX日至12月XX日课程设计(论文)定位:

XXXX培训中心4、课程设计(论文)内容要求:

1。

本课程设计

(1)的目的是让学生掌握抽象数据类型的组织和定义;

(2)使学生掌握数据类型的定义和实现;(3)培养学生组织和分析数据的能力;

(4)培养学生分析和应用基于不同数据结构的算法的能力;(5)提高学生科技论文的写作能力2.基本要求:

每个学生可以选择下列题目之一(打勾)并独立完成课程设计:

□稀疏矩阵运算:

实现稀疏矩阵的输入、输出、加法、减法和乘法运算

□关键路径:

找出至少需要多长时间来完成整个项目以及整个项目中的关键活动

(1)能够输入和存储描述项目的AOE网络;

(1)对于输入的AOE网络,应判断其是否能够顺利进行;

(2)如果项目能够顺利进行,输出完成整个项目至少需要多长时间,以及每个关键活动所附加的两个顶点,最早发生时间和最晚发生时间。

□银行业务模拟:

参见数据结构P683.课程设计论文的写作要求为

(1)按照稿件的规格打印并抄录课程设计报告;

(2)报告分为四个部分:

封面、任务书(本文件)、正文、课程设计经验和参考文献。

学生签名:

日期

课程设计(论文)复习意见

(1)话题分析

(XXXX日期

文本

1,数据结构定义

1。

抽象数据类型

本设计中使用的数据结构ADT定义如下:

ADT队列{

数据对象:

d={ai|ai∈elemset,i=1,2,...,n,n≥0}数据关系:

r1={|ai-1,ai∈d,i=2,...,n}基本操作:

voidinit_Q(队列操作结果:

构造空队列QintQ_empty(队列Q);初始条件:

队列Q中存在

操作结果:

如果Q为空,返回真,否则返回假整数Q_length(队列Q);初始条件:

队列Q有

个操作结果:

返回到队列Q的元素数,即队列长度intgethead_Q(队列Q);初始条件:

队列q有

个操作结果:

队列头元素void_q返回到队列q(队列初始条件:

队列q有

个操作结果:

插入带有元素eq的新队列结束元素队列初始条件:

队列Q有

个操作结果:

删除队列Q的队列头元素}ADTqueue

3

2。

存储结构定义

数据存储结构的c语言定义如下:

typedefint状态;

//-银行排队模拟//事件和事件表typedefstructqcu事件{intoccurtimeint类型;

structQCuevent*next;

}QCuEvent,*EventListwindowtypedef结构elem{intarrivaltime之前的队列元素。

持续时间;

结构QCuElem*next

}QCuElem,*QEptr。

//窗口指针typedef结构{QEptrfront

QEptr后部;

}QCustomerp,*QCupp。

4

3。

基本操作

数据结构的基本操作实现如下:

//基本操作功能

状态顺序插入器(事件列表//按时间顺序将事件插入到事件表中。

//查找窗口队列长度intmincuqueue(qcpq);//查找最短队列窗口

状态队列事件(事件列表//删除第一个事件状态队列(QCUSTOMERRP//初始化窗口队列状态队列(QCUSTOMERRP//进入队列

状态队列(QCUSTOMERRP//删除元素状态集合QHead(QCUSTOMERRPQn,QCUELEM//获取队列中的第一个元素状态队列(QCUSTOMERRPQn));//销毁队列voidptint_qstatus([qcustomerpqcu])。

//打印队列长度无效库_模拟函数();空隙试验([);

2,问题解决过程

1。

问题分解

问题应主要实现以下功能:

1)。

应实现数据输入;

2)。

从各种窗口访问和输出数据;

3)当前窗口中人员分布的动态显示4)存储结构:

队列存储结构

5)实现模拟银行的程序设计,包括每个客户的出发时间和统计,以及窗口排队的可视化模拟。

运行测试通过。

 

6)测试数据:

1。

需要所有法律数据;2.全部非法数据;3.本地非法数据进行程序测试以确保程序的稳定性。

2。

模块结构

系统主要由2个模块组成。

它们是:

①主程序模块

②队列模块——实现队列抽象数据类型

的模块之间的结构如下:

每个模块相互调用如下:

主程序模块

队列模块

3。

解决方案

每个模块的实施步骤是

(1)。

实施步骤

首先,分析问题需求,划分实施模块,绘制总体流程图,并定义基本数据类型,如结构、队列等。

其次,考虑基本操作,例如开门时间、顾客到达时提供的服务以及顾客离开时的操作。

6

再次,实现上述基本操作所需的具体操作,具体实现每个环节所需的基本操作,即具体编写每个小函数的实现函数;

最后,编写主函数按需调用每个实现并实现操作

(2)。

流程图

开始客户到达

选择服务窗口

是窗口繁忙

队列

服务和扩展无队列空队列以获得客户

窗口空闲处理和不留时间到

结束图-1事件流程图

7

结束输出队列空开始主()客户实现

代码和注释#定义确定1#定义真1#定义假0#定义错误0

8

#定义不可行-1#定义溢出-2

typedefint状态;

//-银行排队模拟//事件和事件表typedefstructqcu事件{intoccurtimeint类型;

structQCuevent*next;

}QCuEvent,*EventListwindowtypedef结构elem{intarrivaltime之前的队列元素。

持续时间;

结构QCuElem*next

}QCuElem,*QEptr。

//窗口指针typedef结构{QEptrfront

QEptr后部;

}QCustomerp,*QCupp。

//主操作功能

9

statuspenday(事件列表//开门状态客户到达//客户到达状态客户部门(事件列表//客户离开无效关闭日期();//基本操作函数

statusorderinser(eventlist//按时间顺序将事件插入事件表intQLength(QcustomerPqn);//查找窗口队列长度intmincuqueue(qcpq);//查找最短队列窗口

状态队列事件(事件列表//删除第一个事件状态队列(QCUSTOMERRP//初始化窗口队列状态队列(QCUSTOMERRP//进入队列

状态队列(QCUSTOMERRP//删除元素状态集合QHead(QCUSTOMERRPQn,QCUELEM//获取队列中的第一个元素状态队列(QCUSTOMERRPQn));//销毁队列voidptint_qstatus([qcustomerpqcu])。

//打印队列长度无效库_模拟函数();空隙试验([);

#include\#include\#include\

intI=0,e=0,counter=0;

intTotalTime=0,CustomerNum=0;//累计客户停留时间,客户数量

10

9积分时间;//关闭时间intwindowsnum=0;//main函数intmain(){EventListev;//事件表QCuEventenQCu=空;OpenForDay(ev,en,Qcu);而(ev->next){en。

NYPe=ev->下一个->NYPe;恩。

出现时间=ev->下一个->出现时间;delfirstevent(ev);if(en。

NType==0)自定义(ev,QCu,en);

else

customerdeparture(ev,QCu,en);ptint_QStatus(Qcu);

}

CloseForDay();

}

//mainfunctionsubfunction

statusopenday(eventlist

printf(\请输入一个随机数种子(或输入0以使用随机种子):

\scanf(\

if(temp==0)srand((无符号)time(null));elsesrand(温度);

printf(\请以分钟为单位输入工作时间):

\scanf(\CloseTime=temp;

TotalTime=0;customernum=0;恩。

出现时间=0;恩。

NType=0;en.next=空;

ev=(EventList)malloc(sizeof(QCuEvent));ev->next=空;OrderInser(ev,en)。

printf(\请输入窗口数(至少一个):

\scanf(\

q=(qcustomerorp*)malloc((windowsnum+1)*sizeof(qcustomerorp));对于(intI=1;iArrivalTime=en。

出现时间;

13

Q->持续时间=持续时间;Q->下一个=空;intI=MinCuqueue(q);[一世;//插入出发事件

entamp.incomingtime=en.incomingtime+durtime;恩泰普。

n类型=I;下一个=空;

if(qLength(q[I))==1)OrderInser(ev,EnTemp);返回“确定”;

}

状态客户部门(eventlist

printf(\出发时间%d\\n\if(en.occuringtime>closetime){destoryqueue(q[I]);

}其他{QCuElem客户;顾客排队(q[I);

//客户停留时间14

totaltime+=en.occuringtime-customer.arrivaltime;Printf(\总时间为%d\\n\if(q[一)。

前台->下一个){客户(q[I);QCuEventenTemp

enTemp。

出现时间=en。

出现时间+客户。

持续时间;恩泰普。

n类型=I;OrderInser(ev,EnTemp);

}

}

返回“确定”;

}

无效关闭日(){printf(\printf(\

printf(\所有客户交易的总时间:

%d分钟\\n\printf(\客户交易数:

%d\\n\

printf(\每人平均处理时间:

%f\\n\printf(\

printf(\

)entamp->ReconTime=en。

出现时间;enteMP->NYPE=en。

NTypeentemp->next=空;如果(!

ev->next){ev->next=entamp;返回“确定”;

}

qtemp=ev。

while(qtemp->next)

entamp->next=qtemp->next;qtemp->next=entamp;返回“确定”;

}

intQLength(QcustomerPqn){

16

QePTrqteMP。

intI=0;

qtemp=qn.front->next;while(qtemp){qtemp=qtemp->next;i++;

}返回I;

}

intMinCuqueue(Qcuppq){intI,min

(I=1,min=1;不精确=p->下一个;免费(p);返回“确定”;

}

状态初始化队列(QCustomerpqn.front->next=空;qn.后=qn.前;返回“确定”;

}

状态编码队列(Qcustomerpqn.rear=Q;返回“确定”;

}

状态十字形队列(Qcustomerp

qtemp=qn.front->next;

Q。

ArrivalTiME=qtemp->ArrivalTiME;18

问持续时间=qtemp->持续时间;qn.front->next=qtemp->next;if(qn.rear==qtemp)qn.rear=qn.front;自由(qteMP);返回“确定”;

}

状态获取QHead(QCustomerpqn,QcuelemQ.Duration=qn.front->next->Duration;返回“确定”;

}

状态设计队列(QcustomerPqn){Qeptrp;

while(qn.front->next){p=qn.front->next;qn.front->next=p->next;免费(p);

}

qn.front->next=NULL;

qn.后=qn.前;

19

返回正常;

}

voidPtint_QStatus(QcustomerpQcu[)){intl;

(intI=1;i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1