数据结构课程设计报告及源代码Word文档格式.docx

上传人:b****4 文档编号:7900592 上传时间:2023-05-09 格式:DOCX 页数:14 大小:119.61KB
下载 相关 举报
数据结构课程设计报告及源代码Word文档格式.docx_第1页
第1页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第2页
第2页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第3页
第3页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第4页
第4页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第5页
第5页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第6页
第6页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第7页
第7页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第8页
第8页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第9页
第9页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第10页
第10页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第11页
第11页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第12页
第12页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第13页
第13页 / 共14页
数据结构课程设计报告及源代码Word文档格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计报告及源代码Word文档格式.docx

《数据结构课程设计报告及源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告及源代码Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。

数据结构课程设计报告及源代码Word文档格式.docx

汽车“到达”或“离去”信息,汽车牌照号码及到达或离去的时间

3、该系统完成以下功能:

若是车辆到达,则输出汽车在停车场内或便道上的停车位置;

若是离去,则输出汽车在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)

4、要求栈以顺序结构实现,队列以链表实现

三、设计要求

1、独立完成全部代码的设计、编写、调试与部署,运行正确无误

2、编写设计报告书

设计报告书应包括:

(1)问题描述和系统要求

(2)系统主要功能模块设计

(3)设计中遇到的问题及其解决方法

(4)系统运行报告

(5)总结

问题描述:

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。

每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

编制一程序模拟该停车场的管理。

基本要求:

要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。

实现提示:

汽车的模拟输入信息格式可以是:

(到达/离去,汽车牌照号码,到达/离去的时刻)。

例如,(‘A’,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,5,20)表示5号牌照车在20这个时刻离去。

整个程序可以在输入信息为(‘E’,0,0)时结束。

本题可用栈和队列来实现。

四、运行环境

1.MicrosoftVisualC++6.0

2.WindowsXP操作系统

五、实验步骤(绘制相应的流程图)

六、实验过程原始代码

#include<

stdio.h>

stdlib.h>

string.h>

#defineMAX3/*车库容量*/

#defineprice3/*每车每时刻费用*/

typedefstructnode

{intnum;

intreachtime;

intleavetime;

}CarNode;

/*车辆信息结点*/

typedefstructNODE

{CarNode*stack[MAX+1];

inttop;

}SeqStackCar;

/*模拟车站*/

typedefstructcar

{CarNode*data;

structcar*next;

}QueueNode;

typedefstructNode

{QueueNode*head;

QueueNode*rear;

}LinkQueueCar;

/*模拟通道*/

/*---------------------------------------------------------------------------*//*函数声明部分*/

voidInitStack(SeqStackCar*);

/*初始化栈*/

intInitQueue(LinkQueueCar*);

/*初始化便道*/

intArrival(SeqStackCar*,LinkQueueCar*);

/*车辆到达*/

voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);

/*车辆离开*/

voidList(SeqStackCar,LinkQueueCar);

/*显示存车信息*/

voidPRINT(CarNode*p);

/*---------------------------------------------------------------------------*/voidoption()

{

charchoice;

printf("

\n\t\t\t项目:

停车场管理系统"

);

\n\t\t\t专业:

信息管理与信息系统"

printf("

\n\t\t\t班级:

B080502"

\n\t\t\t学号:

B08050210"

\n\t\t\t姓名:

蒙开华"

\n\t**********************************************************\n"

\t1.车辆到达--12.车辆离开--23.车辆信息--34.退出程序--4\n"

\t**********************************************************\n"

\t\t\t是否进入该系统(y/n)?

"

choice=getchar();

if(choice=='

N'

||choice=='

n'

exit(0);

}

voidmain()

{SeqStackCarEnter,Temp;

LinkQueueCarWait;

intch;

option();

InitStack(&

Enter);

/*初始化车站*/

InitStack(&

Temp);

/*初始化让路的临时栈*/

InitQueue(&

Wait);

/*初始化通道*/

while

(1)

{

\n\n\t\t\t1.车辆到达请选择1"

\n\n\t\t\t2.车辆离开请选择2"

\n\n\t\t\t3.车辆信息请选择3"

\n\n\t\t\t4.退出程序请选择4"

\n\n\t\t\t现在请选择以上信息:

while

(1)

{scanf("

%d"

&

ch);

\n"

if(ch>

=1&

&

ch<

=4)break;

else

\n\t\t\t错误!

请再次做出选择!

\n\n\t\t\t"

switch(ch)

{case1:

Arrival(&

Enter,&

break;

case2:

Leave(&

Temp,&

case3:

List(Enter,Wait);

/*列表打印信息*/

case4:

exit(0);

/*退出主程序*/

default:

/*------------------------------------------------------------------------------*/

voidInitStack(SeqStackCar*s)/*初始化栈*/

{inti;

s->

top=0;

for(i=0;

i<

=MAX;

i++)

stack[s->

top]=NULL;

}

intInitQueue(LinkQueueCar*Q)/*初始化便道*/

{Q->

head=(QueueNode*)malloc(sizeof(QueueNode));

if(Q->

head!

=NULL)

head->

next=NULL;

Q->

rear=Q->

head;

return

(1);

return(-1);

voidPRINT(CarNode*p)/*打印出站车的信息*/

{intA1,A2;

\n\t\t\t请输入离开时间:

scanf("

(p->

leavetime));

\n\t\t\t离开车辆的车牌号:

%d"

p->

num);

\n\n\t\t\t离开车辆到达时间:

%d"

reachtime);

\n\n\t\t\t离开车辆离开时间:

leavetime);

A1=p->

reachtime;

A2=p->

leavetime;

\n\n\t\t\t停车场管理费用:

(A2-A1)*price);

free(p);

intArrival(SeqStackCar*Enter,LinkQueueCar*W)/*车辆到达*/

{CarNode*p;

QueueNode*t;

p=(CarNode*)malloc(sizeof(CarNode));

flushall();

\t\t\t请输入到达车辆车牌号:

num));

if(Enter->

top<

MAX)/*车场未满,车进车场*/

{Enter->

top++;

\n\t\t\t该车辆在停车场的位置是:

%d\n"

Enter->

top);

\n\t\t\t请输入该车辆到达的时间:

reachtime));

Enter->

stack[Enter->

top]=p;

else/*车场已满,车进便道*/

{printf("

\n\t\t\t停车场已满该车辆需在便道上等待!

"

getchar();

t=(QueueNode*)malloc(sizeof(QueueNode));

t->

data=p;

W->

rear->

next=t;

rear=t;

voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)/*车辆离开*/

{inti,room;

CarNode*p,*t;

QueueNode*q;

/*判断车场内是否有车*/

top>

0)/*有车*/

{while

(1)/*输入离开车辆的信息*/

\t\t\t停车场里停放的车辆总数:

\n\n\t\t\t请输入要离开车辆的位置:

room);

if(room>

room<

=Enter->

top)

while(Enter->

room)/*车辆离开*/

{Temp->

Temp->

stack[Temp->

top]=Enter->

top];

top--;

p=Enter->

while(Temp->

=1)

top]=Temp->

PRINT(p);

/*判断通道上是否有车及车站是否已满*/

if((W->

=W->

rear)&

Enter->

MAX)/*便道的车辆进入车场*/

{q=W->

next;

t=q->

data;

\n\n\t\t\t便道的%d号车进入车场第%d位置."

t->

num,Enter->

\n\n\t\t\t请输入现在的时间:

(t->

next=q->

if(q==W->

rear)

rear=W->

top]=t;

free(q);

\n\n\t\t\t便道里没有车.\n"

\n\n\t\t\t车场里没有车."

/*没车*/

voidList1(SeqStackCar*S)/*列表显示车场信息*/

if(S->

0)/*判断车站内是否有车*/

\n\t\t\t车场:

\n\n\t\t\t位置到达时间车牌号\n"

for(i=1;

=S->

top;

%26d"

i);

%6d"

S->

stack[i]->

%10d"

else

\n\t\t\t车场里没有车"

voidList2(LinkQueueCar*W)/*列表显示便道信息*/

{QueueNode*p;

p=W->

if(W->

rear)/*判断通道上是否有车*/

\n\t\t\t等待车辆的号码为:

while(p!

%-10d"

data->

p=p->

\n\t\t\t便道里没有车."

voidList(SeqStackCarS,LinkQueueCarW)

{intflag,tag;

flag=1;

while(flag)

\n\t\t\t请选择1|2|3:

\n\n\t\t\t1.车场\n\n\t\t\t2.便道\n\n\t\t\t3.返回\n\n\t\t\t"

tag);

if(tag>

=1||tag<

=3)break;

elseprintf("

switch(tag)

List1(&

S);

break;

/*列表显示车场信息*/

List2(&

W);

/*列表显示便道信息*/

flag=0;

七、实验结果及分析

系统初始化页面

进入系统选择菜单页面

车辆到达页面

停车场已满,进入便道等待页面

车辆离开页面

停车场已满,当有车离开时,便道上的车进入停车场页面

查看车辆信息页面

八、实验体会与收获

(自己的体会,200字以上;

每人一份)

这个停车场管理系统是利用栈来完成车的入库问题,利用队列完成车在便道上的停放问题,在

查看车场内的车辆信息页面

查看便道内的车辆信息页面

本次课程设计使我受益非浅,在老师的带领下,我能够系统地去了解每一部分功能模块,了解每一段程序代码,并能够完成停车场模拟管理的主要功能,并利用栈完成车的入库问题,利用队列完成车在便道上的停放问题,在学习数据结构的时候,对栈和队列的使用,初始化,调用等问题,如何把它们实际化,运用其去解决一些生活中的实际问题,从而加深理解,通过这次课程设计,是对课本一次系统的复习和实践,是对系统开发的一次体验,一次学习,也可以说是对C语言的一次复习和运用,把学习数据结构知识,运用到程序算法中去,完善程序,优化程序,以解决实际问题。

在设计的过程中,遇到了很多问题,车牌的类型,当设为字符型,只能输出单个字符,并不能输出字符串,例如:

输入“陕A666”当按%s输出时,程序运行遇到问题关闭,当按%c输出时,只能输出一个字符,前面关于车牌的定义类型为“char”型。

因此在这个程序里面车牌号设为int型,只能输入数字。

通过画流程图,进一步加深和熟悉了功能图,算法图的描述与制作,为代码的编写提供了良好的依据。

在老师悉心的指导下,我顺利地完成了本次课程设计,并取得了很大的收获,对以后的软件开发奠定了一定的基础!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2