《数据结构》课程设计报告。
2015-2016学年第一学期。
学生姓名: 陈宇星
学生学号: 20140902402
所在系部: 计算机工程系
班级名称:计算机科学 2014级(4)班。
实验课时: 32
指导教师: 康丽军
2024年 01月 15日。
目录。一.实习目的 3
二.问题描述 3
三.需求分析 3
四.概要设计 3
1.系统用到的抽象数据类型定义: 3
2.本程序用到的模块: 4
五.详细设计 4
1.车辆信息类型 4
2.车辆进出停车场信息类型 5
3.主函数伪码算法 8
六.使用说明 9
七.c语言实现 9
八.运行结果 15
1.汽车停车: 15
2.汽车离开: 15
3.获得当前停车信息: 16
九.参考文献: 17
了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。
设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。
该程序所做的工作的是实现停车场管理。此程序规定:
要求以顺序栈模拟停车场,以链队列模拟便道;从终端读入汽车到达或离去的数据,每组数据包括三项:①是“停车”“离开”还是“获得当前停车信息”;②汽车牌照号码;③“到达”或“离去”的时刻;
程序每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中的位置和存入时间;如果是离去的车辆,则输出其在停车场存入和离开时间和应交的费用;
程序的功能包括:
汽车进入车场。
添加车辆信息:车牌号,进车时间,如果停车场已满,则将车辆停在临时便道内。
汽车退出车场。
根据退出车辆的车牌号,进行优先推出,再根据退出时间计算停车费用。并将临时便道中的车辆停入停车厂内。
获取当前停车信息。
1)adt stack
数据对象:可以是任意类型的数据,但必须属于同一数据对象。
数据关系:栈中数据元素之间是线性关系。
基本操作:initstack (s);
push (s,x);
pop (s,x);
adt stack:
adt linkqueue
数据元素:可以是任意类型的数据,但必须属于同一个数据对象。
关系:队列中数据元素之间是线性关系。
基本操作:initqueue (q);
enterqueue (q,x);
deletequeue (q,y);
adt linkqueue
主程序模块:
void main (
声明定义。调用栈与队列的函数。
主信息。栈模块——实现栈抽象数据类型。
队列模块——实现队列抽象数据类型。
结构体模块——用于对对象及变量的管理。
各模块之间的调用关系如下:
主函数程序。
结构体模块。
栈模块。队列模块。
typedef struct
int a;
string b;
int c;
int d;
car;typedef struct
car elem [2];
int top;
seqstack;
typedef struct node
car d;
int n;
struct node *next;
lqnode;
typedef struct
lqnode *front;
lqnode *rear;
linkqueue;
void initstack (seqstack *s)
s->top=-1;
int push (seqstack *s,car x)
if (s->top==1)
return (0);
s->top++;
s->elem [s->top]=x;
return (1);
int pop (seqstack *s,car *x)
if (s->top==-1)
return (0);
elseint initqueue (linkqueue *q)
q->front= (lqnode *)malloc(sizeof (lqnode));
if (q->front!=null)
else return (0);
int enterqueue (linkqueue *q,car x)
lqnode *newnode=new lqnode;
newnode= (lqnode *)malloc(sizeof (lqnode));
if (newnode!=null)
else return (0);
int deletqueue (linkqueue *q,car *x)
lqnode *p;
if (q->front==q->rear)
return (0);
p=q->front->next;
q->front->next=p->next;
q->rear->n--;
if (q->rear==p)
*x=p->d;
delete p;
return (1);
int in (seqstack *s,linkqueue *q,car x)
if (s->top<1)
elsereturn (1);
int out (seqstack *s,seqstack *l,linkqueue *q,car a)
car x;
float money;
if (s->top==-1) else
if (if (q->rear->n!=0)
return (1);
else
int l=q->rear->n;//便道出车会打乱车次,将存有编号车辆数目信息的n备份。
linkqueue e; /定义临时便道帮助遍历便道上的车辆。
initqueue (&e);
while (deletqueue (q,&x)!=0&&
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...