数据结构课程设计大课ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计
1 教学安排 2 设计题目 3 成绩评定 4 课程设计报告 5 研究性学习与创新性实验
1 教学安排 1-1 教学目的 1-2 计划学时 1-3 学习方式 1-4 教学过程
1 教学安排
教学目的
(1)全面落实课程教学大纲 (2)提升学生软件设计实践技能 (3)鼓励学生研究性学习 (4)鼓励学生创新性实验
况,队列中的每个元素应包括顾客进门的 时刻和理发所需的时间。
链表:登录顾客进门和出门的事件。 表中的元素应包括事件类型,还应按事件 发生的先后次序有序。
排队问题仿真
事件表数据类型定义
typedef struct { //数据域 int occurTime; // 事件发生时刻 char NType; // 事件类型
1 教学安排
计划学时: 32学时 课外自主学习:32学时 自主学习与计划学时比例:1:1
1 教学安排
学习方式
(1)组建课程设计活动小组 (2)双向自愿选题 (3)课程实践(自主学习+调研) (4)上机实践(技术讨论+调试) (5)成果交流
1 教学安排
教学过程
总体分为两个阶段: (1)综合训练阶段 (2)研究性学习与创新性实验阶段
循序渐进(重点) 逐步深入(扩展与提高)
1 教学安排
具体教学过程
(1)选题与开题 (2)方案设计
(总体设计+数据结构设计) (3)详细设计(函数原型+算法设计) (4)编程与调试 (5)结题与成果交流
2 设计题目
分为三类
A类 综合训练性 B类 应用研究性 C类 创新设计性
3 成绩评定
综合评定
综合训练性 占60% 应用研究性 占20% 创新设计性 占20%
排队问题仿真
生成“顾客理发所需时间 durtime” 和 “下一顾客到达的时间间隔 intertime” 两个 随机数可从C语言的随机数函数得到。
假设当前事件发生的时刻为 occurtime, 则下一顾客进门事件发生的时刻则为 occurtime + intertime。
该顾客在当前时刻开始理发,经过 durtime 时间之后便可离开理发馆,则应发生 时刻为 occurtime + durtime 。
题目要求
编制一个事件驱动仿真程序以模拟理 发店内一天的活动,要求输出在一天的营 业时间内,到达的顾客人数、顾客在店内 的平均逗留时间和排队等候理发的平均人 数以及在营业时间内空椅子的平均数。
通过队列模拟理发店的排队现象,通 过仿真办法评估理发店的营业状况。
排队问题仿真
需求分析
“事件驱动模拟” 为计Baidu Nhomakorabea出每个顾客自进门到出门之
排队问题仿真
排队问题主算法描述
主算法是以处理顾客进门事件和顾客 离 开事件为线索进行的。 void BarberShop_Simulation( int chairNum, int closeTime ) {
假设进门事件类型为’ A’,出门事件 类型为’D’。为便于按事件发生的先后次 序顺序进行处理,事件表应按发生的“时刻 ”有序。
实际问题中,顾客进门的时刻和理发所 需要的时间都是随机的。假设第一个顾客进 门的时刻为0。之后每个顾客进门的时刻在 前一个顾客进门时设定,即以两个顾客之间 的时间间隔来确定下一个顾客的到达时间。
间在理发馆内逗留的时间,只需要在顾 客“进门”和“出门”这两个时刻进行 模拟处理。
定义在这两个时刻内发生的事情为 “事件”,整个仿真程序可以按事件发 生的先后次序逐个处理事件,这种模拟 的工作方式称为“事件驱动模拟”。
排队问题仿真
建立数据模型-数据结构设计
本题目需要两种数据结构: 链队列:登录排队等候理发的顾客情
} Link List;
typedef LinkList EventList;
//事件链表类型,定义为有序链表
排队问题仿真
等待队列定义
typedef struct { //数据域 int arrivalTime; // 顾客到达时间 int duration; // 顾客理发所需时间
} QElemType; typedef struct Qnode { //链表结点
4 课程设计报告
设计报告内容
(1)课题背景 (2)可行性与需求分析 (3)总体设计 (4)详细设计 (5)程序实现 (6)软件测试 (7)总结
4 课程设计报告
设计报告格式
(1)封面 (2)任务书 (3)目录 (4)正文 (5)附录(源代码等)
5 研究性学习与创新性实验
设计题目举例 排队问题仿真 基于STL双端队列及应用 线段树及应用
排队问题仿真
排队问题 用队列结构可以模拟现实生活中
的很多排队现象,如车站候车、医院 候诊、银行排队等都可以通过程序进 行仿真模拟,并由此预测客流等多种 经营指标。例如理发店排队问题。
排队问题仿真
问题描述
假设理发店内设有N把理发椅,可同 时为N位顾客进行理发。顾客进门,可能 有两种情况。
①若当时理发店内尚有空闲理发椅, 则该顾客可立即入座理发,他在店内的逗 留时间即为他理发所需时间;
} ElemType,Event; typedef struct Lnode { //链表结点
ElemType data; struct Lnode *next; }*Link,*Position;
排队问题仿真
事件链表结构定义
typedef struct { Link head,tail; // 头、尾指针 int length; // 链表长度 Link current; //当前指针
排队问题仿真
②否则需要排队候理,则他在店内的 逗留时间应为他理发所需时间和排队等候 的时间之和。
一旦有顾客理完发离去时,排在对头 的顾客便开始理发。顾客的到达时间和理 发所需时间均可随机生成,并约定,过了 营业时间顾客不再进门,但仍需继续为已 进入店内的顾客理发,直至最后一名顾客 离开为止。
排队问题仿真
QElemType data; struct Qnode *next; } Qnode ,*QueuePtr;
排队问题仿真
链队列结构定义
typedef struct { QueuePtr front; // 头指针 QueuePtr rear; // 尾指针
} LinkQueue;
排队问题仿真
主算法设计
1 教学安排 2 设计题目 3 成绩评定 4 课程设计报告 5 研究性学习与创新性实验
1 教学安排 1-1 教学目的 1-2 计划学时 1-3 学习方式 1-4 教学过程
1 教学安排
教学目的
(1)全面落实课程教学大纲 (2)提升学生软件设计实践技能 (3)鼓励学生研究性学习 (4)鼓励学生创新性实验
况,队列中的每个元素应包括顾客进门的 时刻和理发所需的时间。
链表:登录顾客进门和出门的事件。 表中的元素应包括事件类型,还应按事件 发生的先后次序有序。
排队问题仿真
事件表数据类型定义
typedef struct { //数据域 int occurTime; // 事件发生时刻 char NType; // 事件类型
1 教学安排
计划学时: 32学时 课外自主学习:32学时 自主学习与计划学时比例:1:1
1 教学安排
学习方式
(1)组建课程设计活动小组 (2)双向自愿选题 (3)课程实践(自主学习+调研) (4)上机实践(技术讨论+调试) (5)成果交流
1 教学安排
教学过程
总体分为两个阶段: (1)综合训练阶段 (2)研究性学习与创新性实验阶段
循序渐进(重点) 逐步深入(扩展与提高)
1 教学安排
具体教学过程
(1)选题与开题 (2)方案设计
(总体设计+数据结构设计) (3)详细设计(函数原型+算法设计) (4)编程与调试 (5)结题与成果交流
2 设计题目
分为三类
A类 综合训练性 B类 应用研究性 C类 创新设计性
3 成绩评定
综合评定
综合训练性 占60% 应用研究性 占20% 创新设计性 占20%
排队问题仿真
生成“顾客理发所需时间 durtime” 和 “下一顾客到达的时间间隔 intertime” 两个 随机数可从C语言的随机数函数得到。
假设当前事件发生的时刻为 occurtime, 则下一顾客进门事件发生的时刻则为 occurtime + intertime。
该顾客在当前时刻开始理发,经过 durtime 时间之后便可离开理发馆,则应发生 时刻为 occurtime + durtime 。
题目要求
编制一个事件驱动仿真程序以模拟理 发店内一天的活动,要求输出在一天的营 业时间内,到达的顾客人数、顾客在店内 的平均逗留时间和排队等候理发的平均人 数以及在营业时间内空椅子的平均数。
通过队列模拟理发店的排队现象,通 过仿真办法评估理发店的营业状况。
排队问题仿真
需求分析
“事件驱动模拟” 为计Baidu Nhomakorabea出每个顾客自进门到出门之
排队问题仿真
排队问题主算法描述
主算法是以处理顾客进门事件和顾客 离 开事件为线索进行的。 void BarberShop_Simulation( int chairNum, int closeTime ) {
假设进门事件类型为’ A’,出门事件 类型为’D’。为便于按事件发生的先后次 序顺序进行处理,事件表应按发生的“时刻 ”有序。
实际问题中,顾客进门的时刻和理发所 需要的时间都是随机的。假设第一个顾客进 门的时刻为0。之后每个顾客进门的时刻在 前一个顾客进门时设定,即以两个顾客之间 的时间间隔来确定下一个顾客的到达时间。
间在理发馆内逗留的时间,只需要在顾 客“进门”和“出门”这两个时刻进行 模拟处理。
定义在这两个时刻内发生的事情为 “事件”,整个仿真程序可以按事件发 生的先后次序逐个处理事件,这种模拟 的工作方式称为“事件驱动模拟”。
排队问题仿真
建立数据模型-数据结构设计
本题目需要两种数据结构: 链队列:登录排队等候理发的顾客情
} Link List;
typedef LinkList EventList;
//事件链表类型,定义为有序链表
排队问题仿真
等待队列定义
typedef struct { //数据域 int arrivalTime; // 顾客到达时间 int duration; // 顾客理发所需时间
} QElemType; typedef struct Qnode { //链表结点
4 课程设计报告
设计报告内容
(1)课题背景 (2)可行性与需求分析 (3)总体设计 (4)详细设计 (5)程序实现 (6)软件测试 (7)总结
4 课程设计报告
设计报告格式
(1)封面 (2)任务书 (3)目录 (4)正文 (5)附录(源代码等)
5 研究性学习与创新性实验
设计题目举例 排队问题仿真 基于STL双端队列及应用 线段树及应用
排队问题仿真
排队问题 用队列结构可以模拟现实生活中
的很多排队现象,如车站候车、医院 候诊、银行排队等都可以通过程序进 行仿真模拟,并由此预测客流等多种 经营指标。例如理发店排队问题。
排队问题仿真
问题描述
假设理发店内设有N把理发椅,可同 时为N位顾客进行理发。顾客进门,可能 有两种情况。
①若当时理发店内尚有空闲理发椅, 则该顾客可立即入座理发,他在店内的逗 留时间即为他理发所需时间;
} ElemType,Event; typedef struct Lnode { //链表结点
ElemType data; struct Lnode *next; }*Link,*Position;
排队问题仿真
事件链表结构定义
typedef struct { Link head,tail; // 头、尾指针 int length; // 链表长度 Link current; //当前指针
排队问题仿真
②否则需要排队候理,则他在店内的 逗留时间应为他理发所需时间和排队等候 的时间之和。
一旦有顾客理完发离去时,排在对头 的顾客便开始理发。顾客的到达时间和理 发所需时间均可随机生成,并约定,过了 营业时间顾客不再进门,但仍需继续为已 进入店内的顾客理发,直至最后一名顾客 离开为止。
排队问题仿真
QElemType data; struct Qnode *next; } Qnode ,*QueuePtr;
排队问题仿真
链队列结构定义
typedef struct { QueuePtr front; // 头指针 QueuePtr rear; // 尾指针
} LinkQueue;
排队问题仿真
主算法设计