1、 0 课课 程程 设设 计计 学生跳舞搭配学生跳舞搭配 课程设计名称:课程设计名称: 数据结构课程设计 专专 业业 班班 级级 : 学学 生生 姓姓 名名 : 学学 号号 : 指指 导导 教教 师师 : 课程设计时间:课程设计时间: 1 计算机应用技术计算机应用技术 专业课程设计任务书专业课程设计任务书 学生姓名学生姓名 专业班级专业班级 学号学号 题题 目目 跳舞搭配 课题性质课题性质 A 课题来源课题来源 D 指指导教师导教师 同组姓名同组姓名 无 主要内容主要内容 学习掌握并熟练运用 C 语言进行程序设计; 针对具体应用问题,选择、设计和实现合适的抽象数据类型; 进行简单的需求分析,给出
2、设计方案。 任务要求任务要求 综合运用和融化所学理论知识,提高分析和解决实际问题的能力,达到培养良 好程序设计能力和习惯的目的, 为开发满足问题要求的小型应用软件奠定基础, 达到软件工程的综合性基础训练的目的。 完成需求分析报告,报告中对关键部分给出图表说明。要求格式规范,工作量 饱满。 参考文献参考文献 数据结构(C 语言版)严蔚敏 清华大学出版社 C 语言程序设计(第三版)谭浩强 清华大学出版社 2 审查意见审查意见 指导教师签字:指导教师签字: 教研室主任教研室主任签字:签字: 年年 月月 日日 一、一、 需求分析需求分析: (2)设计内容 一班有m个女生,有n个男生(m不等于n),现要
3、开一个舞会. 男女生分别编号坐在舞池 的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配 对者坐着等待下一曲找舞伴. 请设计一系统模拟动态地显示出上述过程,要求如下: 1) 输出每曲配对情况 2) 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第 K曲配对跳舞的 情况. 至少求出 K 的两个值. 3) 尽量设计出多种算法及程序,可视情况适当加分 2.需求 本课题要对数目不等的男生女生跳舞进行搭配,设计需要解决每一首曲子 男生女生的搭配情况,要采用循环队列的模式来解决,男生和女生各在两个循环 的队列中,每首曲子开始,便在两个队首各取一人成功配对跳舞,并进入队
4、尾, 等待下一次配对。 例如: (3 男 5 女情况) 第一首:男 1 和女 1 第二首:男 2 和女 2 . 第四首:男 1 和女 4 二 概要设计 3 1.各模块函数介绍: 1)class cirularQueue 作用:定义一个一个循环队列 2)cirularQueue() 作用:定义析构函数,使对象在撤销时释放 3)bool IsFull() 作用:判断队列是否已满 4)bool IsEmpty() 作用:判断队列是否为空,用于出队列前使用 5)void push(T info) 作用:入队。每对舞伴跳完舞之后,做入队处理,到达队尾,等待下次跳舞。 6)void Pop(T 作用:初始
5、化队列 9)void display(int,int); 作用:根据男生和女生的人数和曲目的数目,来判断每曲歌的男女配对情况 10)void charge(int,int); 作用:判断指定组合能否配对成功 2.本程序包含三个模块: 1)主程序模块: void main() 初始化; do 4 接受命令; 处理命令; while(“命令”=”退出”) 2)集合单元模块实现集合的各个函数模块 3)结点结构单元模块定义集合的结点结构 3 主函数调用关系图 图 main() 主函数 k 曲配对 每曲配对 数据输入 输出 编号 class cirularQueue cirularQueue() void Pop(T int front; /头指针 int rear; /尾指针 T *data; public: cirularQueue(int MaxLength) MaxSize=MaxLength; front=rear=0; data=new TMaxLength; cirularQueue() /定义析构函数,使对象在撤销时释放 front=rear=0; delete data; void Initqueue() /队列的申明 for(int i=0;im)|(bn) /如果输入错误 printf(“输