经济管理学院本科课程设计**。
数据结构课程设计。
学号: 1005170130
姓名: 于正平。
班级: 管理101
专业: 信息管理与信息系统
系别管理系
指导教师孙鸿飞
2011 年 12 月 30日吉林。
停车场系统旨在建立一个方便停车、计费的系统。程序能输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和他在停车场停留的时间。
停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。停车场内已停了 n 辆汽车,后来的汽车只能在门外的便道上等候,一旦有车开走,排在通道上的第一辆车即可开入;当停车场内每辆车要离开时,在它之后进入的车辆必须先退出停车场为其让路,待该辆车开出大门,其他车辆再按原次序进入停车场。为停车场编写按上述要求进行管理的模拟程序。
课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让个人对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。
数据结构课程设计,要求个人在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
停车场是一条可以停放 n 辆车的狭窄通道,且只有一个大门汽车停放安到达时间的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场已经停满 n 辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。要求:以栈模拟停车场,以队列车场外的便道,按照从终端输入的数据序列进行模拟管理。
每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、以及到达或离去的时刻。对每一组数据进行操作后的信息为:
若是车辆到达,则输出汽车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应缴纳的费用(在便道上的停留时间不收费)。栈以顺序结构实现,队列以链表结构实现。
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项;汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费) 。
栈以顺序结构实现,队列以链表结构实现。测试数据: 设 n=2, 输入数据为:
(a’,1,5),(a’,2,10),(d’,1,15)(‘a’,3,20),(a’,4,25),(a’,5,30),(d’,2,35),(d’,4,40),(e’,0,0)。其中:'a'表示到达(arrival);'d'表示离去(departure);'e'表示输出(end)。
需要另设一个栈,临时停放为离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
(1)用户到来时,选择停车,并输入车牌号和当前时间,程序实现:计算并输出停车位置
(2)用户离开时,选择离开,同样输入车牌号和当前时间,程序实现:计算所要付的费用,若便道上有车,将第一位置的车辆停在车位上。
(3)在此过程中,不断
保存记录,通过重载运算符实现,为程序下次运行提供必要的数据
(4)在程序开始运行时,首先读取文件中的记录,为程序运行提供必要的历史数据记录。
(5)程序中还提供退出操作:
图2—1 停车场俯瞰图。
由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,我设计用顺序存储结构来存储停车场内的车辆信息,并给车辆按进栈顺序编号,当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车。
当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素设计成汽车的车牌号,并以链表的形式存储。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间和车辆离开停车场时的时间,然后计算、显示费用情况。
adt stack
数据关系:r1=
基本操作:
initstack(&s)
操作结果:构造一个空栈 s。
destroystack(&s)
初始条件:栈 s 已经存在。
操作结果:操作结果:销毁栈 s。
claerstack(&s)
初始条件:栈 s 已经存在。
操作结果:将 s 清空为空栈。
stacklength(&s)
初始条件:栈 s 已经存在。
操作结果:返回栈 s 的长度。
stackempty(&s)
初始条件:栈 s 已经存在。
操作结果:若 s 为空栈,则返
回 ture,否则返回 false。
gettop(s,&e)
初始条件:栈 s 已经存在。
操作结果:若栈 s 不空,则以 e 返回栈顶元素。
push(&s,e)
初始条件:栈 s 已经存在。
操作结果:在栈 s 的栈顶插入新的栈顶元素 e。
pop(&s,&e)
初始条件:栈 s 已经存在。
操作结果:删除 s 的栈顶元素,并以 e 返回其值。
stacktr**erse(s,visit())
初始条件:栈 s 已经存在。
操作结果:从栈底到栈顶依次对 s 中的每个元素调用函数 visit( )
adt stack
typedef struct qnodeqnode,queueptr;
typedef struct
数据关系:r1=
约定中端为队列头,后端为队列尾。
基本操作:
initqueue(&q)
操作结果:构造一个空队列 q。
destroyqueue(&q)
初始条件:队列 q 已经存在。
操作结果:队列 q 被销毁,不再存在。
clearqueue(&q)
初始条件:队列 q 已经存在。
操作结果:将 q 清为空队列。
queueempty(q)
初始条件:队列 q 已经存在。
操作结果:若 q 为空队列,则返回 true,否则 false。
queuelength(q)
初始条件:队列 q 已经存在。
操作结果:返回 q 的元素个数,即队列的长度。
gethead(q,&e)
初始条件:q 为非空队列。
操作结果:用 e 返回的 e 队头元素。
enqueue(&q,e)
初始条件:队列 q 已经存在。
操作结果:插入元素 e 为 q 的新的队尾元素。
dequeue(&q,&e)
初始条件:q 为非空队列。
操作结果:删除 q 的队头元素,并用 e 返回其值。
queuetr**erse(q,visit())
初始条件:q 已经存在且非空。
操作结果:从队头到队尾,依次对 q 的每个数据元素调用函数 visit()。一旦 visit()失败, 则操作失败。
adt queue
图3—1 程序流程图。
图3—2 程序流程。
main(){
初始化 while(重复条件){
接受命令;
switch(调用条件)
case 调用条件’a’ 到达处理;break;
case 调用条件’d’ 离开处理;break;
case 调用条件’e’ 退出处理;
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...