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

上传人:第*** 文档编号:56896085 上传时间:2018-10-16 格式:DOC 页数:26 大小:218.44KB
返回 下载 相关 举报
华东交通大学数据结构课程设计(银行模拟系统)_第1页
第1页 / 共26页
华东交通大学数据结构课程设计(银行模拟系统)_第2页
第2页 / 共26页
华东交通大学数据结构课程设计(银行模拟系统)_第3页
第3页 / 共26页
华东交通大学数据结构课程设计(银行模拟系统)_第4页
第4页 / 共26页
华东交通大学数据结构课程设计(银行模拟系统)_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《华东交通大学数据结构课程设计(银行模拟系统)》由会员分享,可在线阅读,更多相关《华东交通大学数据结构课程设计(银行模拟系统)(26页珍藏版)》请在金锄头文库上搜索。

1、课程设计(论文)任务书软件软件 学院 XXXX 专业 201XX- X 班 一、课程设计(论文)题目 数据结构课程设计数据结构课程设计 二、课程设计(论文)工作自 20XX20XX 年 1212 月 XX 日起至 20XX20XX 年 1212 月 XXXX 日止。 三、课程设计(论文) 地点: XXXX 实训中心实训中心 四、课程设计(论文)内容要求: 1本课程设计的目的本课程设计的目的(1)使学生熟练掌握抽象数据类型的组织和定义; (2)使学生熟练掌握数据类型的定义和实现; (3)培养学生组织和分析数据的能力;(4)培养学生分析和应用基于不同数据结构的算法的能力;(5)提高学生的科技论文写

2、作能力。2基本要求:基本要求:每位同学在以下题目中任选一题(在方框中打勾) ,独立独立完成课程设计: 稀疏矩阵运算:稀疏矩阵运算:实现稀疏矩阵的输入、输出、加减乘的运算。 关键路径:关键路径:求出完成整项工程至少需要多少时间以及整项工程中的关键活动。(1)能够输入并存储一个描述工程的 AOE 网;(1)对输入的 AOE 网,应判断其是否能够顺利进行;(2)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活 动所依附的两个顶点、最早发生时间、最迟发生时间。 银行业务模拟:银行业务模拟:参见数据结构教材 P68。3课程设计论文编写要求课程设计论文编写要求(1)要按照书稿的规格打

3、印誊写课设报告;(2)报告分为封面、任务书(本文档) 、正文、课程设计体会和参考文献四部分;学生签名: 年 月 日课程设计课程设计( (论文论文) )评审意见评审意见(1)题目分析(20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (2)流程分析 (30 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (3)数据定义 (30 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ;(4)代码编写 (10 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ;(5)创新能力 (10 分):优( ) 、良( ) 、中( )

4、、一般( ) 、差( ) ;(6)格式规范性、设计态度及考勤是否降等级:是( ) 、否( )评阅人: 职称: 讲 师 年 月 日4正正 文文一、数据结构定义1. 抽象数据类型抽象数据类型本设计中用到的数据结构 ADT 定义如下:ADT Queue数据对象:D ai | aiElemSet, i=1,2,.,n, n0 数据关系:R1 |ai-1, aiD, i=2,.,n 基本操作: void init_Q(Queue 操作结果:构造空队列 Q int Q_empty(Queue Q); 初始条件:队列 Q 存在 操作结果:若 Q 为空队列,则返回 TRUE,否则 FALSE int Q_le

5、ngth(Queue Q); 初始条件:队列 Q 存在 操作结果:返回队列 Q 的元素个数,即队列长度 int gethead_Q(Queue Q); 初始条件:队列 Q 存在 操作结果:返回队列 Q 的队头元素 void en_Q(Queue 初始条件:队列 Q 存在 操作结果:插入元素 e 为 Q 的新的队尾元素。 void de_Q(Queue 初始条件:队列 Q 存在 操作结果:删除 Q 的队头元素。 ADT Queue52. 存储结构定义存储结构定义数据存储结构的 C 语言定义如下:typedef int Status;/-银行排队模拟/事件和事件表typedef struct QC

6、uEventint OccurTime;int NType;struct QCuEvent *next;QCuEvent, *EventList;/窗口前队列元素typedef struct QCuElemint ArrivalTime;int Duration;struct QCuElem *next;QCuElem,*QEptr;/窗口指针typedef struct QEptr front;QEptr rear;QCustomerp,*QCupp;63. 基本操作基本操作数据结构的基本操作实现如下:/基本操作函数Status OrderInser(EventList /按时间顺序插入事件

7、到事件表int QLength(QCustomerp qn);/求窗口队列长度int MinCuQueue(QCupp q);/求队最短的窗口Status DelFirstEvent(EventList /删除事件表中的第一个事件Status InitCuQueue(QCustomerp /初始化窗口队列Status EnCuQueue(QCustomerp /进入队列Status DeCuQueue(QCustomerp /删除队列中的元素Status GetQHead(QCustomerp qn,QCuElem /获得队列中的第一个元素Status DestoryQueue(QCustom

8、erp qn);/销毁队列void Ptint_QStatus(QCustomerp QCu);/打印队列长度void Bank_SimulationFunc();void test(char str);二、解题过程1. 问题分解问题分解该问题主要应实现以下功能:1).实现数据的输入; 2).各个窗口数据的访问和输出; 3)当前窗口的人员分布情况动态显示。4)存储结构:队列存储结构 5)实现了模拟银行的程序设计,并且包含每一个客户离开时间及统计,以及窗口排队的可视化模拟.运行测试通过.76)测试数据:要求使用 1、全部合法数据;2、整体非法数据;3、局部非法数据。 进行程序测试,以保证程序的稳

9、定。 2. 模块结构模块结构系统主要由 2 个模块组成,分别是:1 主程序模块 2 队列模块实现队列抽象数据类型模块之间的结构如下:各模块相互调用关系如下:各模块相互调用关系如下:主程序模块主程序模块队列模块队列模块3. 解题思路解题思路各模块的实现步骤为(1). 实现步骤首先,分析题目要求划分实现模块、画出大致的流程图,定义基本数据类型,诸如结构体、队列等;其次,考虑基本大致的操作,比如要拟定开门的时间、顾客到来为其提供服务以及离开时的操作等;8再次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能;最后,编写主函数对每个实现进行按需

10、调用,实现操作。(2). 流程图是否否 图-1 事件流程图排队开始客户到达窗口忙选择服务窗口服务并展开窗口闲置时间到结束队列空处理并离开队头取客户9图-2 主函数流程图三、实现代码及注释#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0开始结束Customerarrive()进入 or 离开CutomDepation() ()main()队列是否为空输出结果10#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;/-银行排队模拟/事件和事件表typedef struc

11、t QCuEventint OccurTime;int NType;struct QCuEvent *next;QCuEvent, *EventList;/窗口前队列元素typedef struct QCuElemint ArrivalTime;int Duration;struct QCuElem *next;QCuElem,*QEptr;/窗口指针typedef struct QEptr front;QEptr rear;QCustomerp,*QCupp;/主要操作函数11Status OpenForDay(EventList /开门Status CustomerArrived(Even

12、tList /顾客到达Status CustomerDeparture(EventList /顾客离开void CloseForDay();/基本操作函数Status OrderInser(EventList /按时间顺序插入事件到事件表int QLength(QCustomerp qn);/求窗口队列长度int MinCuQueue(QCupp q);/求队最短的窗口Status DelFirstEvent(EventList /删除事件表中的第一个事件Status InitCuQueue(QCustomerp /初始化窗口队列Status EnCuQueue(QCustomerp /进入队

13、列Status DeCuQueue(QCustomerp /删除队列中的元素Status GetQHead(QCustomerp qn,QCuElem /获得队列中的第一个元素Status DestoryQueue(QCustomerp qn);/销毁队列void Ptint_QStatus(QCustomerp QCu);/打印队列长度void Bank_SimulationFunc();void test(char str);#include “stdio.h“#include “stdlib.h“#include “time.h“int i=0,e=0,counter=0;int Tot

14、alTime=0,CustomerNum=0;/累计客户逗留时间,客户数12int CloseTime;/关门时间int windowsnum = 0;/主函数int main() EventList ev; / 事件表QCuEvent en; QCupp QCu = NULL;OpenForDay(ev, en, QCu);while (ev-next)en.NType = ev-next-NType;en.OccurTime = ev-next-OccurTime;DelFirstEvent(ev);if (en.NType = 0)CustomerArrived(ev, QCu, en)

15、;elseCustomerDeparture(ev, QCu, en);Ptint_QStatus(QCu);CloseForDay();/主要功能子函数Status OpenForDay(EventList printf(“请输入随机数种子(或输入 0 使用随机种子):“);scanf(“%d“,if (temp=0) srand(unsigned)time(NULL);else srand(temp);printf(“请输入营业时间(单位:分钟):“);scanf(“%d“,CloseTime = temp;TotalTime = 0;CustomerNum = 0;en.OccurTime = 0;en.NType = 0;en.next = NULL;ev = (EventList) malloc(sizeof(QCuEvent);ev-next = NULL;OrderInser(ev, en);printf(“请输入办理业务的窗口数(至少 1 个):“);scanf(“%d“,q = (QCustomerp *) malloc(windowsnum+1)*sizeof(QCustomerp);for (int i=1;iArrivalTime = en.O

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号