数据结构课设——队列程序_第1页
数据结构课设——队列程序_第2页
数据结构课设——队列程序_第3页
数据结构课设——队列程序_第4页
数据结构课设——队列程序_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 成 绩 评 定 表学生姓名班级学号专 业计算机科学与技术课程设计题目计算机外部输出设备(如显示器)和的CPU处理数据的速度不同。按先来先服务的方式进行管理,设计缓冲队列,实现外设与CPU的匹配 评语组长签字:成绩日期 2015 年12 月15 日课程设计任务书学 院信息科学与工程学院专 业计算机科学与技术学生姓名班级学号课程设计题目计算机外部输出设备(如显示器)和的CPU处理数据的速度不同。按先来先服务的方式进行管理,设计缓冲队列,实现外设与CPU的匹配。实践教学要求与任务:任务:计算机外部输出设备(如显示器)和的CPU处理数据的速度不同。按先来先服务的方式进行管理,设计缓冲队列,实现外设与

2、CPU的匹配。要求:1)对相应的题目进行算法设计2)编写源代码3)上机调试4)显示调试结果5)写出实验总结工作计划与进度安排:数据结构课程设计时间安排在教学第14周、第15周内完成,按上述题目要求完成查阅资料、程序设计、调试、运行等工作。时间安排如下:1、 查阅资料、与初步设计;1-2天2、 整体功能设计、代码编码与初步调试。1-3天3、 调试和软件功能的测试和验收。1-3天4、 答辩与论文撰写。1-2天指导教师: 2015年11月28日专业负责人:2015年11月28日学院教学副院长:2015年11月28日目 录 一、题目概述(内容及要求)3二、功能分析4三、设计5四、运行与测试9五、总结1

3、1参考文献12一、 题目概述(内容及要求)1. 内容:计算机外部输出设备(如显示器)和的CPU处理数据的速度不同。按先来先服务的方式进行管理,设计缓冲队列,实现外设与CPU的匹配。2. 要求:1)对相应的题目进行算法设计2)编写源代码3)上机调试4)显示调试结果二、 功能分析1. 功能模块图主函数创建队列删除队列元素查询队列元素图2.1 功能模块图程序主要功能分为三个部分:1, 第一个部分为创建队列。创建一个尾插的链表存储数据2, 第二部分为删除队列元素,根据队列特点,应从链表头部删除元素3, 第三部分为查询队列元素,经过查询经过一系列处理后,队列中的元素。4, 在程序的主体main函数中设计

4、程序菜单,通过用户输入选择实现种种功能2.程序流程图定义变量Case3Case2Case1图2.2 程序流程图开始While(1)Switch(n)Creat()Del()Print()显示结果Main函数流程设计图:通过一个while循环来实现菜单的设计,内部用switch语句实现对不同功能的函数的调用。三、 设计根据题目要求,是要设计一个队列程序,队列的特点为先进先出。因此根据该特点我设计了一个尾插头删的链表。数据在内存中链式存储,用一个Creat()函数实现对链表的创建。Creat()函数代码如下:struct data * Creat(struct data * front, stru

5、ct data * real)struct data * p;real = (struct data *)malloc(sizeof(struct data);p = real;p -num = n + 1;printf(当前用户编号:%d n, p-num);printf(输入证件尾号和用户姓名(中间都好分隔):);scanf(%d,%s, &p -realnum, &p-name);while(p -realnum != 0)n += 1;if(n = 1)front = p;elsereal-next = p;real = p;p = (struct data *)malloc(size

6、of(struct data);p -num = n + 1;printf(当前用户编号:%d n, p-num);printf(输入证件尾号和用户姓名(中间都好分隔,输入0退出):n);scanf(%d,%s, &p -realnum, &p-name);real -next = NULL;return (front);以上函数实现了队列的后进特点,而先出特点则由del()函数实现del()函数代码如下:struct data * del(struct data * front)struct data * p = NULL;if(front != NULL)p = front -next;f

7、ront -next = NULL;printf(第%d号用户:%s业务办理完毕n, front -num, front -name);elseprintf(当前无人排队办理业务!n);return (p);最后一部分为查看队列元素函数,代码如下:void print(struct data * front)struct data * p;printf(现在排队办理业务的人有:n);p = front;if(front !=NULL)doprintf(序号:%d, 姓名:%sn, p-num, p-name);p = p-next;while(p != NULL);设计思路:首先程序采用菜单,

8、用户需要输入与操作相对应的序号选项来运行程序。其次,在输入序号选项后,程序会执行相应的函数。题目要求做一个队列程序,我把它想象作是一个排队程序。(1) 有人来挂号排队。这时候就需要创建尾插链表函数。这部分也就相当于计算机键盘录入。(2) 有人排队就需要有人处理。所以设计了一个del()函数从链表的头部删除数据。这部分就相当于计算机CPU处理数据。(3) 有时候需要查询当前还有多少人排队。所以设计个一个print()函数将队列信息打印出来。这部分相当于计算机显示器部分。以此方式来实现题目要求的队列缓冲程序。完整源代码:#include#include#include#define N 5stru

9、ct data * Creat(struct data * front, struct data * real);struct data * del(struct data * front);void print(struct data * front);struct data int num;int realnum;char nameN; struct data * next;int n = 0;/定义全局变量,记录队列长度 int main(void)struct data * front = NULL;struct data * real = NULL;while(1)printf(-n

10、);printf(- 1挂号排队 -n);printf(- 2业务办理 -n);printf(- 3查询当前办理业务的人 -n);printf(-n);int num;printf(请输入业务序号:); scanf(%d, &num);system(cls);switch(num)case 1: front = Creat(front, real); break;case 2: front = del(front);break;case 3: print(front) ; break;return 0;struct data * Creat(struct data * front, struc

11、t data * real)struct data * p;real = (struct data *)malloc(sizeof(struct data);p = real;p -num = n + 1;printf(当前用户编号:%d n, p-num);printf(输入证件尾号和用户姓名(中间都好分隔):);scanf(%d,%s, &p -realnum, &p-name);while(p -realnum != 0)n += 1;if(n = 1)front = p;elsereal-next = p;real = p;p = (struct data *)malloc(sizeo

12、f(struct data);p -num = n + 1;printf(当前用户编号:%d n, p-num);printf(输入证件尾号和用户姓名(中间都好分隔,输入0退出):n);scanf(%d,%s, &p -realnum, &p-name);real -next = NULL;return (front); struct data * del(struct data * front)struct data * p = NULL;if(front != NULL)p = front -next;front -next = NULL;printf(第%d号用户:%s业务办理完毕n,

13、front -num, front -name);elseprintf(当前无人排队办理业务!n);return (p); void print(struct data * front)struct data * p;printf(现在排队办理业务的人有:n);p = front;if(front !=NULL)doprintf(序号:%d, 姓名:%sn, p-num, p-name);p = p-next;while(p != NULL);四、运行与测试1)运行后主菜单界面图 4.1 程序运行图一经运行,程序能正确显示菜单。2)测试能否正确调用功能函数图4.2 程序运行图二3)测试算法是否

14、能够正确执行图 4.2 程序运行图二图4.3 程序运行图三图4.3 程序运行图四图4.3 程序运行图五经测试,算法能够正确执行,程序运行正确。五、总结课程设计过程中出现的技术难点和解决方法:在进行课程设计过程中对题目不能够很好的理解。题目内容略有抽象,无法直接具体实现,这需要我们将题目和显示生活进行联想。才能更好的解决问题。在课程设计中设计创建链表的程序,链表创建要实现尾插。在设计过程中,由于指针较多,出现了混乱的情况,这就需要我们对于变量名字的定义要有含义,必要的地方要有注释。在设计删除元素函数的时候,出现了只能删除第一个元素,之后的元素不能删除显示为没有队列元素可被删除。经排查这种情况出现

15、的原因为创建链表是首元素没有和后边的元素连接上。导致创建了很多节点,但在实际链表中只有一个元素。经过修改creat()函数后,问题解决。在主函数中设置了一个清屏语句。但是由于放置的位置不太合理。导致del()函数和print()函数所显示在屏幕上的内容被清除,无法观察结果。因此调整了清屏语句的位置。课程设计期间的主要收获:通过这次课程设计使我对数据结构有了更深的了解,也明白了数据结构在生活中的实际应用,每一个日常生活中的事情,都可以抽象为一种数据结构。而我们程序设计的目的就是为了解决日常生活中遇到的问题。因此学习数据结构尤为重要。通过这次课设使我对程序设计的理解更深了。对数据结构的理论知识和实现具体的程序的过程有了更多的经验,不再是单一的理论学习。算法很重要,但是也要能把算法做出程序的能力。有时我们对于算法的理解已经很透彻,但是却无法编成具体的程序。或者编出来却有各种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论