火车调度.pdf
《火车调度.pdf》由会员分享,可在线阅读,更多相关《火车调度.pdf(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 山东理工大学计算机学院 课 程 设 计 (数据结构)班 级 姓 名 学 号 指导教师 2013年 1 月 7日 课程设计任务书及成绩评定 课题名称 火车调度问题 、题目的目的和要求:巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。、设计进度及完成情况 日 期 内 容 1 月 7 日 选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。1 月 9 日 创建相关
2、数据结构,录入源程序。1 月 11 日 调试程序并记录调试中的问题,初步完成课程设计报告。1 月 15 日 上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师 3-4个问题。1 月 16 日 考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料 1 严蔚敏 数据结构(C 语言版)清华大学出版社 1999 2 严蔚敏 数据结构题集(C 语言版)清华大学出版社 1999 3 谭浩强 C语言程序设计 清华大学出版社 4 与所用编程环境相配套的C 语言或 C+相关的资料 、成绩评定:设计成绩:(教师填写)指导老师:(签字)二零一三 年 一 月
3、 七 日 目 录 第一章 概述1 第二章 系统分析2 第三章 概要设计 第四章 详细设计 第五章 运行与测试 第六章 总结与心得 参考文献 1 第一章 概述 课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学
4、作风方面受到比较系统和严格的训练。在这次的课程设计中我选择的题目是车厢调度。车厢调度问题主要是一个针对火车站,出站进站的几种方案。首先统计出所有的可能的方案,其次就是把这些方案都能转换成“出站”“进站”这种显示形式,最后要提供一个查找功能,核对某种进出站的顺序是否是正确的。2 第二章 系统分析 1.车厢调度就是模拟车厢调度站的工作,与数据结构中栈的存储结构类似,故而栈的基本操作为本程序的核心基础,本程序要求:(1)在程序中输入待进站的车厢序列时,不需要输入所有的车厢编号,只需要输入首列车厢的编号和尾列车厢的编号即可。需要分别输入两个整型数据。(2)程序的输出信息主要是:车厢出站的所有序列,或查
5、找序列的可行性,对于可行性的输出。可附带输出车厢的进出序列。(一连串的:出入出入)(3)程序的功能包括:对栈的数据结构的基本操作,如入栈,出栈等。以及对车厢进站,出站的操作。2.演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言是转化。系统中子程序及功能要求:(1).in(SqStack*s1,SqStack*s2,int first,int final,int num):对车厢进行入站操作。并记录操作的次数。题目要求的一对整形数据的输入 (2)show(SqStack*s,int way):所有进站,出站完成后对输出序列进行输出。(3)out(SqStack*s1
6、,SqStack*s2,int first,int final,int num):对车厢行出站操作。并记录操作次数。(4)Control(SqStack*s1,SqStack*s2,int first,int final,int num):对 I n和 out函数进行调用。在 in 和 out函数里间接递归。题目要求的递归在这里可以自然的实现 程序的调用过程如下:主函数可调用子程序 1,3,4;子程序 3 可调用子程序 4,2;子程序 1 可调用子程序 4;子程序 4 可调用子程序 1,3;3.程序执行时的命令:本程序为了使用时的方便,更加大众化,采用菜单式的方式来完成程序的演示,在程序执行过
7、程中不需要什么指令,只需按提示输入相应的内容即可。(提醒:注意输入时格式,否者可能会引起一些错误).4.测试数据。1 2 3 4 5 第三章 概要设计 3 1、数据机构的设计 在实验中,主要采用了栈的数据结构,因为栈的先进后出的特点是和题目中要求的车厢的进出类似的。栈的操作比较,适合递归算法的使用。2、系统中用到的基本抽象数据定义如下:ADT Stack 数据元素:可以是任意类型的数据,但必须属于同一个数据对象。数据关系:栈中数据元素之间是线形关系。基本操作:(1)Initstack(&s);(2)IsEmpty(&s);(3)IsFull(&s);(4)Push(&s,x);(5)Pop(&
8、s,&x);(6)ClearStack(&s);(7)GetTop(&s,x);ADT Stack 3、各部分的功能实现和伪代码如下:(1)、车厢入站的函数编写,伪代码实现如下:void in(SqStack*s1,SqStack*s2,int first,int final,int num)if(首列车厢号!=尾列车厢号+1)输出进出序列的字符串加入一个“入”;进站 总操作次数减一:if(首列车厢号 尾列车厢号+1)首列车厢号+;Control(s1,s2,first,final,num);(2)、车厢的出站的函数编写,伪代码实现如下:Status out(SqStack*s1,SqStac
9、k*s2,int first,int final,int num)if(剩下的操作次数=0)输出车厢序列;return 1;if(栈是空的)return 1;int exchange;进出序列字符串加上“出”;出栈一;4 进栈二;总操作次数-;Control(s1,s2,first,final,num);return 1;(3)控制函数的实现,主要是协调车厢出站和入站的函数,伪代码实现如下:int Control(SqStack*s1,SqStack*s2,int first,int final,int num)复制一份栈一的数据;复制一份栈二的数据;复制一份进出序列字符串数据;in(s1,s
10、2,first,final,num);搬回两个栈的复制数据 搬回字符串的数据;out(s1,s2,first,final,num);return 1;(4)输出函数的实现,这一个模块的任务主要是把结果呈现在屏幕上,方面用户使用,伪代码实现如下:void show(SqStack*s,int way)if(way=0)输出是第几个序列;for(int i=0;itop;i+)输出栈中的数据;coutendl;else if(way=1)int sign=1;for(int i=0;itop;i+)if(栈中的数据!=要查找的数据)sign=0;break;if(sign=1)cout已成功查找到
11、序列:;5 number+;for(int i=0;itop;i+)输出栈的数据;coutendl;cout车厢的进出序列为:top=-1;return 0;Status StackEmpty(SqStack*s)/判空 if(s-top=-1)return 1;else return 0;Status StackFull(SqStack*s)/判断栈满 if(s-top=Stack_Size-1)return 1;else return 0;Status Push(SqStack*s,SElemType e)/入栈 if(s-top=Stack_Size-1)return 0;s-top+;
12、s-elems-top=e;return 1;Status Pop(SqStack*s,SElemType*e)/出栈 if(s-top=-1)return 0;else *e=s-elems-top;s-top-;return 1;(2)车厢入站函数的详细代码 Status in(SqStack*s1,SqStack*s2,int first,int final,int num)7/对车厢进行入队操作,并且纪录次数 if(num0)system(pause);if(first!=final+1)myString=myString+入站;Push(s1,first);num-;if(first
13、final+1)first+;Control(s1,s2,first,final,num);return 0;(3)车厢出站函数的详细代码 Status out(SqStack*s1,SqStack*s2,int first,int final,int num)/对所有车厢出站,并且记录次数 if(num=0)show(s2,outWay);return 1;if(StackEmpty(s1)return 1;int exchange;myString=myString+出站;Pop(s1,&exchange);Push(s2,exchange);num-;Control(s1,s2,firs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 火车 调度
限制150内