数据结构课程设计报告

发布 2022-10-05 19:05:28 阅读 1900

设计题目: 电梯模拟系统。

院系: 计算机科学与技术学院

班级。学号。

设计者。语言:delphi

运行环境:delphi 7.0

硬件:无要求。

问题及难点所在。

本次程序的难点是处理电梯在某一时刻的状态、动作以及对下一时刻的状态和动作作出**和判断。程序的重点在于确定电梯的各个状态以及运行方向,处理各种请求,对每一个动作和状态的时间进行处理。其它的活动体如乘客则相对独立,处理起来更为容易一些。

由于电梯运**况比较复杂,所以采用面向对象的编程语言,使程序实现起来比较简单,并且界面也比较容易设计。

算法设计的思想。

1、初始化。

初始化电梯基本信息,如运动状态,所在层数,是否收到请求等。

2、响应各请求。

响应前先判断电梯对应此时刻的运动状态,若此时处于停留在某一楼层,则先判断目标运动方向是否相同,若相同,则采用就近原则,若目标运动方向不相同,则采用先请求先响应原则。若此时处于运动状态,则要考虑请求是内部请求还是外部请求。总的原则是若有内部请求,则先响应。

只有内部请求时,采用最短路程原则。在内部响应进行时,若有外部请求,则要判断其外部请求的运动方向是否与电梯运动方向相同,若相同,则响应外部请求。否则等内部请求响应完成后再响应外部请求。

3、输出信息。

通过delphi编译出可视化界面,形象地输出电梯基本信息,如运动状态,所在层数,开关门状态等。

算法的流程图。ny

ny外请求。内请求。ny

图一:算法流程图。

算法的设计与分析。

private

mshowin:boolean判断groupboxin是否可见。

mshowout:boolean判断groupboxout是否可见。

canmove:boolean用来延迟一会循环。

whichclick:integer判断是开门还是关门。

imagel:integer门**的left

imagew:integer门**的width

elet:integereleshape的top

doorready:boolean电梯门是否准备好。

elemove:boolean电梯是否运动。

movedrect:integer电梯运动方向。

elelocatefloor:integer电梯所在楼层。

nowcall:integer现在几楼要求电梯运动。

targetfloor:integer电梯运动的目标楼层。

mincallup:integer电梯外部向下运动的最低楼层。

maxcalldown:integer电梯外部向上运动的最高楼层。

targetobject:integer电梯内部要求运动的楼层。

nowtarget:integer现在电梯内部要求运动的楼层。

downarray:array[2..7] of boolean; /外部向下运动的按纽。

uparray:array[1..6] of boolean外部向上运动的按纽。

targetarray:array[1..7] of boolean; /内部运动的按纽。

procedure waittwosecond等待2秒,一等待过程,不一定是1秒。

procedure waitonesecond等待1秒,同上。

procedure dooropenclose开门关门动作。

procedure eleincall(now:integer); 电梯里面要求运动。

procedure eleoutcall(now:integer); 电梯外面要求运动。

procedure lighton(nowstate:integer); 点亮所在楼层字体。

procedure lightoff(nowstate:integer); 关掉所在楼层字体。

procedure downoff(nowstate:integer); 关掉向下按纽。

procedure upoff(nowstate:integer); 关掉向上按纽。

procedure targetoff(nowstate:integer); 关掉内部按纽。

procedure doorbitopen实现开门动作。

procedure doorbitclose实现关门动作。

procedure wait3sec实现等待3秒。

procedure waitformove用来等待shape的运动。

procedure showin用来使groupboxin可见。

procedure showout用来使groupboxout可见。

procedure lightofftarget用来是关掉内部按纽颜色。

function moverequire():integer; /运动一回合后是否还要运动。

function getnowcallup():boolean; /是否还有向上的请求。

function getnowcalldown():boolean; /是否还有向下的请求。

function getinman(sender:tobject): integer;//计算进入电梯人数。

function getoutman(sender:tobject):integer;//计算走出电梯人数。

运行结果与分析(测试)

运行成功后界面如下:

图二:初始化界面(2)

图三: 电梯运动界面(1)

图四: 电梯开门界面(3)

总结(收获与体会)

在两周内就完成了数据结构课程设计。虽然课程设计已告一段落,但是还有好多东西需要去调试,学习。通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力,熟悉了delphi语言。

我十分珍惜这次锻炼的机会,我如期的完成了自己的设计任务,但由于知识水平有限,仍然存在很多的不足之处。今后在学习其他专业课时,我会珍惜每一次上机机会,锻炼自己的动手能力,加强专业知识,以适应毕业后从事计算机等方面的工作。

附:源**。

unit unit1;

interface

useswindows, messages, sysutils, classes, graphics, controls, forms, dialogs,stdctrls, buttons, extctrls;

typetform1 = class(tform)

groupbox1: tgroupbox;

floor7: tlabel;

floor2: tlabel;

floor1: tlabel;

floor5: tlabel;

floor3: tlabel;

floor4: tlabel;

floor6: tlabel;

groupbox2: tgroupbox;

eledoorstate: tlabel;

eledown2: tbitbtn;

eleup2: tbitbtn;

eleup3: tbitbtn;

eledown3: tbitbtn;

eledown4: tbitbtn;

eleup4: tbitbtn;

eledown5: tbitbtn;

eleup5: tbitbtn;

eleup6: tbitbtn;

eledown6: tbitbtn;

eledown7: tbitbtn;

target7: tbitbtn;

target6: tbitbtn;

target1: tbitbtn;

target4: tbitbtn;

target5: tbitbtn;

target2: tbitbtn;

target3: tbitbtn;

doorclose: tbitbtn;

eleup1: tbitbtn;

doortimer: ttimer;

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...