没有合适的资源?快使用搜索试试~ 我知道了~
首页广工数据结构银行业务模拟课设
资源详情
资源评论
资源推荐

数据结构课程设计报告
题目:
银行业务模拟
学 院 计算机学院
专 业 计算机科学与技术
年级班别
学 号
学生姓名
指导教师
成 绩 ____________________

2018 年 1 月 16 日
报告:
内容: □详细 □完整 □不完整
设计方案: □非常合理 □合理 □较差
实现: □全部实现 □部分实现 □未实现
文档格式: □规范 □基本规范 □不规范
答辩:
□理解题目透彻,问题回答流利
□理解题目较透彻,回答问题基本正确
□部分理解题目,部分问题回答正确
□未能完全理解题目,答辩情况较差
总评成绩:
□优 □良 □中 □及格 □不及格

一.需求分析
1. 程序问题描述:本程序为银行客户业务模拟,其业务模拟分为两种:第一功能是申请
从银行得到一笔资金,即取款或借款。第二功能是向银行投入一笔资金,即存款或还
款。银行有两个服务窗口,相应地有两个队列。
2. 程序具体实现的功能:
(1) 第一功能:客户到达银行后先排第一个队。处理每个客户业务时,如果属于第
一种,且申请额超出银行现存资金总额而得不到满足,则立刻排入第二个队等
候,直至满足时才离开银行;否则业务处理完后立刻离开银行。每接待完一个
第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对
能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。
(2) 第二功能:如果在此检查过程中,一旦银行资金总额少于或等于刚才第一个队
列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列
检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接
待第一个 队列的客户。任何时刻都只开一个窗口。假设检查不需要时间。营
业时间结束时所有客户立即离 开银行。
(3) 在客户到达事件中要模拟实现银行排队情况,考虑同一时刻多个客户到达银行
排队。
(4) 该程序要求实现银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行
内逗留的平均时间。
3. 演示程序以用户与计算机交互方式执行,即在计算机终端上显示“是否开始模拟”询问
信息时,由用户在键盘上输入演示程序中规定的运算命令;开始模拟后根据指令输入
相应的测试数据取值范围,得到测试结果。
4. 数据测试:
(1) 一天营业开始时银行拥有的款额为 10000(元),营业时间 600(分钟)。

(2) 客户存取款金额不大于 3000 元,这里是为了防止系统出现死循环,因为银行
开始营业的金额为 10000 元,若取款金额过大,容易出现客户一直在等待取款
的状态而无法正常办理业务。
(3) 由于模拟参量可以自定,变量 total、closetime 以及客户办理业务时间和下个客
户到达的时间间隔上下界均交互地从终端读入,这里注意测定两种极端的情况:
一是两个到达事件之间的间隔时间很短,而客户的交易时间很长,另 一个恰
好相反,设置两个到达事件的间隔时间很长,而客户的交易时间很短。
注意:为了避免出现同一时间到达客户过多,使得接待客户远少于到达人数,出现业
务问题,这里我设置同一时间到达人数不超过 3 人,这里仅是为了测试方便,可以根
据具体情况变更。测试数据均由系统随机产生。
二.概要设计
1.基本要求:利用动态存储结构实现模拟,单链表以及队列来实现。
2.ADT 定义:
ADT QEvent,*EventList {
数据对象:D={ ai | ai ElemSet, i=1,2,...,n, n≥0 } ∈
数据关系:R1={ <ai-1, ai>|ai-1, ai D, i=2,...,n } ∈
基本操作:
int InitList(); //初始化事件链表
int OrderInsert(EventList L, QEvent e); //将事件 e 按发生时间顺序插入有序链表 L 中
int ListEmpty(EventList L); //判断事件表是否为空
void DestroyList(EventList L); //销毁事件链表
} ADT QEvent, *EventList;
ADT LinkQueue {
数据对象:D={ ai | ai ElemSet, i=1,2,...,n, n≥0 } ∈
数据关系:R1={ <ai-1, ai>|ai-1, ai D, i=2,...,n } ∈
基本操作:
int InitQueue(LinkQueue *Q); //初始化队列 Q

int EmptyQueue(LinkQueue *Q); //若队列 Q 为空,返回 TRUE,否则返回 FALSE
int DelQueue(LinkQueue *Q, QEvent *memrroy);
//若队列 Q 不为空,首结点出队,用 memrroy 返回,并返回 OK;否则返回 ERROR
int EnQueue(LinkQueue *Q, QEvent e); //结点 e 入队 Q } ADT LinkQueue;
void DestroyQueue(LinkQueue *Q1,LinkQueue *Q2); //销毁队列
}ADT LinkQueue;
3. 程序模块的划分:
(1) 主函数:
Main(){
输出主界面;
选择操作:进入银行业务模拟系统/退出程序;
While(“命令”==开始){
初始化;
客户到达事件处理;
客户离开事件处理;
输出数据;
销毁客户数据,清理内存;
输出主界面;
选择操作:进入银行业务模拟系统/退出程序;
}
剩余34页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论0