文档库 最新最全的文档下载
当前位置:文档库 › 课程设计报告 停车场

课程设计报告 停车场

课程设计报告 停车场
课程设计报告 停车场

淮阴工学院

数据结构课程设计报告

选题名称:停车场管理(1)

系(院):计算机工程系

专业:计算机科学与技术

班级:网络1071

姓名:陈绍平学号: 1071304104 指导教师:张亚红张勇军

学年学期:2008 ~ 2009 学年第 2 学期2009 年 6 月20 日

设计任务书

摘要

随着私家车的愈来愈多,在各个公共场所的各式各样的停车场也应运而生,在这样的情况下,停车场的管理就显得尤为重要。本文介绍运用数据结构中所学的链表、栈等知识,在Visual C++6.0环境下开发一个行之有效的停车场管理系统,要求实现的功能的有:车辆到达是的信息登记,车辆离开时的信息记录及停车费用的计算和停车场及便道的车辆信息的显示等功能。

关键词:数据结构;停车场管理;栈;链表;

1. 需求分析 (1)

1.1课程设计的目的 (1)

1.2基本要求 (1)

1.3课程设计的任务 (1)

1.4软件运行和开发工具 (1)

1.5课程设计的思想 (1)

2. 概要设计 (1)

2.1程序整体描述 (1)

2.2结构描述 (1)

2.3 栈描述 (3)

2.4函数描述 (3)

2.5数据结构与算法描述 (3)

2.5功能模块 (4)

3. 详细设计和实现 (4)

3.1车辆到达登记 (4)

3.2车辆离开记录 (5)

3.3车辆信息显示 (8)

4. 调试及操作说明 (9)

总结 (12)

致谢 (13)

参考文献 (14)

1.需求分析

1.1课程设计的目的

运用数据结构编写一个C++程序,实现对停车场的管理。主要包括:车辆到达是的信息登记,车辆离开时的信息记录及停车费用的计算和停车场及便道的车辆信息的显示等功能。

1.2基本要求

设计好算法,使该系统能实现对停车场有效的进行管理。

1.3课程设计的任务

该系统主要实现以下几个功能:

a)车辆到达信息登记:包括车牌号,到达时间,在停车场停放的位置等;

b)车辆离开记录:包括离开时间,停车费用等;

c)信息显示:显示停车场内和便到内的汽车到达时机急位置等基本信息;

1.4软件运行和开发工具

1.Windows2000以上操作系统

2.Visual C++6.0开发环境

1.5课程设计的思想

该程序应用栈来完成的汽车进停车场和出停车场就是一个数据进栈和出栈的过程。如果停车场(栈)满了,就将车辆放在便到(临时的栈)里;在车辆离开时计算出使用费用,并将便到第一辆车停到该车位置。

2.概要设计

2.1程序整体描述

程序用了一个类,五个结构,两个栈(其中一个为临时栈),除主函数外用了八个函数;

2.2结构描述

结构:Time-建立时间结点

CarNode-建立车辆信息结点

SeqStackCar-模拟车站QueueNode

LinkQueueCar-模拟便道typedef struct time

{

int hour;

int min;

}Time;

typedef struct node

{

char num[10];

Time reach;

Time leave;

}CarNode;

typedef struct NODE

{

CarNode *stack[MAX+1]; int top;

}SeqStackCar;

typedef struct car

{

CarNode *data;

struct car *next;

}QueueNode;

typedef struct Node

{

QueueNode *head;

QueueNode *rear;

}LinkQueueCar;

2.3 栈描述

(1)、在SeqStackCar中定义创建一个栈

CarNode *stack[MAX+1];

int top;

(2)、SeqStackCar Enter,Temp

InitStack(&Temp)

在车辆离开时,应用temp临时把将要离开的车辆后续车辆压入,等车辆离开后压回原栈stack

void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)

2.4 函数描述

函数:

(1)、int Arrival(SeqStackCar *Enter,LinkQueueCar *W)

(2)、int InitQueue(LinkQueueCar *Q)

(3)、void InitStack(SeqStackCar *s)

(4)、void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) (5)、void List(SeqStackCar S,LinkQueueCar W)

(6)、void List1(SeqStackCar *S)

(7)、void List2(LinkQueueCar *W)

(8)、void PRINT(CarNode *p,int room)

2.5数据结构与算法描述

(1)、在SeqStackCar中定义创建一个栈

CarNode *stack[MAX+1];

int top;

(2)、SeqStackCar Enter,Temp

InitStack(&Temp)

在车辆离开时,应用temp临时把将要离开的车辆后续车辆压入,等车辆离开后压回原栈stack

void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)

2.5功能模块

图2.1功能模块

3.详细设计和实现

按照功能模块的描述主要实现三个功能

3.1车辆到达登记

int Arrival(SeqStackCar *Enter,LinkQueueCar *W)

{

CarNode *p;

QueueNode *t;

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

flushall();

printf("\n请输入车牌号(例:豫B1234):");

gets(p->num);

if(Enter->top

{

Enter->top++;

printf("\n车辆在车场第%d位置.",Enter->top);

printf("\n车辆到达时间:");

scanf("%d:%d",&(p->reach.hour),&(p->reach.min));

Enter->stack[Enter->top]=p;

return(1);

}

else

{

printf("\n该车须在便道等待!有车位时进入车场");

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

t->data=p;

t->next=NULL;

W->rear->next=t;

W->rear=t;

return(1);

}

}

进停车场时候必须先判断停车场是不是满了,如果满了车就必须在便道里等候,等有空车位是才能进去。

图3.1进停车场流程

3.2车辆离开记录

void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) {

int room;

CarNode *p,*t;

QueueNode *q;

if(Enter->top>0)

{

while(1)

{

printf("\n请输入车在车场的位置/1--%d/:",Enter->top);

scanf("%d",&room);

if(room>=1&&room<=Enter->top) break;

}

while(Enter->top>room)

{

Temp->top++;

Temp->stack[Temp->top]=Enter->stack[Enter->top];

Enter->stack[Enter->top]=NULL;

Enter->top--;

}

p=Enter->stack[Enter->top];

Enter->stack[Enter->top]=NULL;

Enter->top--;

while(Temp->top>=1)

{

Enter->top++;

Enter->stack[Enter->top]=Temp->stack[Temp->top];

Temp->stack[Temp->top]=NULL;

Temp->top--;

}

PRINT(p,room);

if((W->head!=W->rear)&&Enter->top

{

q=W->head->next;

t=q->data;

Enter->top++;

printf("\n便道的%s号车进入车场第%d位置.",t->num,Enter->top);

printf("\n请输入%s号车进入车场的时间:");

scanf("%d:%d",&(t->reach.hour),&(t->reach.min));

W->head->next=q->next;

if(q==W->rear) W->rear=W->head;

Enter->stack[Enter->top]=t;

free(q);

}

else printf("\n便道里没有车.\n");

}

else printf("\n车场里没有车.");

}

离开的时候先判断停车场里有没有车。有车:输入离开的车的车位号,计算使用费用,同时释放该车位。在判读便道里有没有车,有的话就将便道里的第一辆车停到该车位。

图3.2车辆离开流程

3.3车辆信息显示

void List1(SeqStackCar *S)

{

int i;

if(S->top>0)

{

printf("\n车场:");

printf("\n 位置到达时间车牌号\n");

for(i=1;i<=S->top;i++)

{

printf(" %d ",i);

printf(" %d:%d ",S->stack[i]->reach.hour,S->stack[i]->reach.min);

puts(S->stack[i]->num);

}

}

else printf("\n车场里没有车");

}

void List2(LinkQueueCar *W)

{

QueueNode *p;

p=W->head->next;

if(W->head!=W->rear)

{

printf("\n等待车辆的号码为:");

while(p!=NULL)

{

puts(p->data->num);

p=p->next;

}

}

else printf("\n便道里没有车.");

}

由于车辆可能在停车场或便道两个地方,所以,车辆信息的现实也有两个函数用来分别显示停车场和便道的车辆在停车场的基本信息

4.调试及操作说明

执行程序后进入主菜单:

图4.1主菜单

选择“1”进入进停车场登记

图4.2车辆达到登记

选择“3”进入车辆显示,在选择“1”显示停车场车辆信息

图4.3车辆信息显示选择“2”进入车辆离开管理

图4.4车辆离开

总结

本次课程设计我学会了很多知识,不仅在对数据结构这门课上有了一定的知识上的了解与认识,同时,也是巩固了C++的知识。

我所选择的课程设计是停车场的设计,这个课题在实用性与开放性上上有很多的扩张与发展空间。

在课程设计的时候,我遇到了很多的问题,在代码运行的时候问题则是更为集中,这体现出我在这门课上的学习过程中存在着许多的不足。虽然,在过程中得到了老师与同学的帮助后,程序是完成了,但是许多的主要问题都是依靠老师与同学才得以完成,自己完成的很少。希望自己能在这反面有所突破与改观。

本次课程设计的总体收获了解栈的应用,使我有效地、深刻地理解课程内容,体会理论、方法和设计原则;培养了我分析实际应用系统和设计设计实际应用系统的能力,提高了进行实际系统的设计的能力。

课程设计题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。经过这么多天的努力发现,做课程设计不仅修补了以前学习的漏洞,也知道了一个道理:做事一定要有耐心和信心。课程设计不仅培养人们的自学能力,而且能让自己的思维灵活。同时我也学到了人生哲理,就是在困难面前不要低头,要勇敢面对,始终坚信阳光总在风雨后,彩虹一定会出现的。课程设计就要结束了,收获相当多,不得不说这是最后的胜利,我们也有一次品尝到了胜利的滋味,那时非常甜蜜的。相信在以后的课程设计中,我们会做的更好。

致谢

经过一周的忙碌,本次课程设计已经接近尾声,虽然是第二次参与课程设计,第二次写课程设计报告,但是还是感觉经验匮乏,难免有许多考虑不周全的地方,如果没有指导老师的督促指导,以及一起做这个设计的同学们的支持和帮助,想要完成这个设计是很难的。

在做课程设计的过程中,得到了老师的亲切关怀和耐心的指导。对于我们所犯的错误,不论是多么的幼稚,老师都耐心的给我们讲解,直至我们完全理解。老师们严肃的教学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到设计的最终完成,老师都始终给予我细心的指导和不懈的支持。老师的专业水平和治学严谨以及科学研究的精神是我永远学习的榜样,并将积极影响我今后的学习和工作。在此谨向各位指导老师致以诚挚的谢意和崇高的敬意。还有和我一起做这个设计的同学们,他们给了我帮助,在这里表达我诚挚的谢意!同时感谢参考文献原作者的无私奉献!另外一直深于幕后给我们提供优雅、便利的实验环境的实验室管理人员以及在我做设计的过程中给予我帮助的朋友们,请允许我在这里说一声:谢谢你们!

最后我还要感谢淮阴工学院、计算机工程系提供的这次实践机会。俗话说:“学习的最好方法是实践,实践才能出真知。”通过这次实践,让我对所学的知识有了更进一步的认识,以及了解到更多我们课堂上没有讲到的东西。

参考文献

1.殷人昆.数据结构(用面向对象的方法与C++语言描述) .清华大学出版社 2008

2.揣锦华.面向对象程序设计与C++实践 .西安电子科技大学出版社 2004

3.苏仕华.数据结构课程设计 .机械工业出版社2005

4.周云静.数据结构习题解析与上机指导 . 冶金工业出版社 2006

相关文档