课程设计(论文)任务书
软件 学院 XXXX 专业 201XX- X 班 一、课程设计(论文)题目 数据结构课程设计
二、课程设计(论文)工作自 20XX 年 12月 XX日起至 20XX 年 12月 XX日止。 三、课程设计(论文) 地点: XXXX实训中心 四、课程设计(论文)内容要求: 1.本课程设计的目的
(1)使学生熟练掌握抽象数据类型的组织和定义; (2)使学生熟练掌握数据类型的定义和实现; (3)培养学生组织和分析数据的能力;
(4)培养学生分析和应用基于不同数据结构的算法的能力; (5)提高学生的科技论文写作能力。 2.基本要求:
每位同学在以下题目中任选一题(在方框中打勾),独立完成课程设计: □ 稀疏矩阵运算:实现稀疏矩阵的输入、输出、加减乘的运算。
□ 关键路径:求出完成整项工程至少需要多少时间以及整项工程中的关键活动。 (1)能够输入并存储一个描述工程的AOE网; (1)对输入的AOE网,应判断其是否能够顺利进行;
(2)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动 所依附的两个顶点、最早发生时间、最迟发生时间。
□ 银行业务模拟:参见《数据结构》教材P68。 3.课程设计论文编写要求
(1)要按照书稿的规格打印誊写课设报告;
(2)报告分为封面、任务书(本文档)、正文、课程设计体会和参考文献四部分;
学生签名:
年 月 日
课程设计(论文)评审意见
(1)题目分析
(20分):优( )、良( )、中( )、一般( )、差( );
(2)流程分析 (30分):优( )、良( )、中( )、一般( )、差( ); (3)数据定义 (30分):优( )、良( )、中( )、一般( )、差( ); (4)代码编写 (10分):优( )、良( )、中( )、一般( )、差( ); (5)创新能力 (10分):优( )、良( )、中( )、一般( )、差( ); (6)格式规范性、设计态度及考勤是否降等级:是( )、否( )
评阅人: 职称: 讲 师
年 月 日
正 文
一、 数据结构定义
1. 抽象数据类型
本设计中用到的数据结构ADT定义如下:
ADT Queue{
数据对象:D={ ai | ai∈ElemSet, i=1,2,...,n, n≥0 } 数据关系:R1={ |ai-1, ai∈D, i=2,...,n } 基本操作:
void init_Q(Queue &Q); 操作结果:构造空队列Q int Q_empty(Queue Q); 初始条件:队列Q存在
操作结果:若Q为空队列,则返回TRUE,否则FALSE int Q_length(Queue Q); 初始条件:队列Q存在
操作结果:返回队列Q的元素个数,即队列长度 int gethead_Q(Queue Q); 初始条件:队列Q存在
操作结果:返回队列Q的队头元素 void en_Q(Queue &Q,int e); 初始条件:队列Q存在
操作结果:插入元素e为Q的新的队尾元素。 void de_Q(Queue &Q,int &e); 初始条件:队列Q存在
操作结果:删除Q的队头元素。 }ADT Queue
3
2. 存储结构定义
数据存储结构的C语言定义如下: typedef int Status;
//-----------------银行排队模拟 //事件和事件表 typedef struct QCuEvent { int OccurTime; int NType;
struct QCuEvent *next;
}QCuEvent, *EventList; //窗口前队列元素 typedef struct QCuElem { int ArrivalTime; int Duration;
struct QCuElem *next;
}QCuElem,*QEptr; //窗口指针 typedef struct { QEptr front;
QEptr rear;
}QCustomerp,*QCupp;
4
3. 基本操作
数据结构的基本操作实现如下: //基本操作函数
Status OrderInser(EventList &ev, QCuEvent en);//按时间顺序插入事件到事件表 int QLength(QCustomerp qn);//求窗口队列长度 int MinCuQueue(QCupp q);//求队最短的窗口
Status DelFirstEvent(EventList &ev);//删除事件表中的第一个事件 Status InitCuQueue(QCustomerp &qn);//初始化窗口队列 Status EnCuQueue(QCustomerp &qn,QEptr Q);//进入队列
Status DeCuQueue(QCustomerp &qn,QCuElem &Q);//删除队列中的元素 Status GetQHead(QCustomerp qn,QCuElem &Q);//获得队列中的第一个元素 Status DestoryQueue(QCustomerp qn);//销毁队列 void Ptint_QStatus(QCustomerp QCu[]);//打印队列长度 void Bank_SimulationFunc(); void test(char str[]);
二、 解题过程
1. 问题分解
该问题主要应实现以下功能:
1).实现数据的输入;
2).各个窗口数据的访问和输出;
3)当前窗口的人员分布情况动态显示。 4)存储结构:队列存储结构
5)实现了模拟银行的程序设计,并且包含每一个客户离开时间及统计,以及 窗口排队的可视化模拟.运行测试通过.
5