停车场管理系统的设计与实现数据结构课程设计.docx

上传人:b****3 文档编号:13088874 上传时间:2023-04-22 格式:DOCX 页数:30 大小:410.33KB
下载 相关 举报
停车场管理系统的设计与实现数据结构课程设计.docx_第1页
第1页 / 共30页
停车场管理系统的设计与实现数据结构课程设计.docx_第2页
第2页 / 共30页
停车场管理系统的设计与实现数据结构课程设计.docx_第3页
第3页 / 共30页
停车场管理系统的设计与实现数据结构课程设计.docx_第4页
第4页 / 共30页
停车场管理系统的设计与实现数据结构课程设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

停车场管理系统的设计与实现数据结构课程设计.docx

《停车场管理系统的设计与实现数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《停车场管理系统的设计与实现数据结构课程设计.docx(30页珍藏版)》请在冰豆网上搜索。

停车场管理系统的设计与实现数据结构课程设计.docx

停车场管理系统的设计与实现数据结构课程设计

《数据结构》课程设计

题目:

停车场管理系统

班级:

网络工程

******

学号:

E********

完成日期:

2015年11月15日

 

一.需求分析

1.停在便道;

2.停在车库;

3.从车库移到便道;

4.从便道移到车库;

5.从车库取车;

6.从便道取车;

综上所述可知,总共有4种停车方式。

1.若一直停在便道中,需要在进入便道时以浮点数输入进入时间,当选择6取车时,需要输入在便道中停车的时间。

在便道中提车时会显示进入的时间,以及是否需要发票,在计算完停车费用后退出主菜单。

2.若一直停在车库中,会在进入时检测车库是否满,若不满,允许进入,同样提示输入到达时间,当选择5取车时,需要输入在车库停车时间。

提车时,会显示进入的时间,以及是否需要发票,在计算完停车费用后退到主菜单。

3.若先在车库停车后又转到便道停车,则会先检测车库是否满了,这是这个情况满足的最大前提,之后需要输入到达车库时间,其实这也没什么用,因为最后计算费用时,只会加上转移位置的20元费用和在便道停的费用。

在提车时会显示有在本停车场转移位置的信息。

4.若先在便道上停车,后又到车库停,原理同3,在此不再赘述。

 

二.概要设计

1.由于栈的特殊出栈入栈顺序,所以所有进入车库的车辆必须遵守“先进后出”的顺序来停车和提车,由于栈是顺序结构,所以在进入车库时需要检测车库是否饱和,在提车时也需要检测车库是否为空;

2.同时,队列需要满足“先进先出”的思想,但此次试验用的链式结构,一般来说,不存在饱和情况,但在提车时候需要检测便道是否有车。

3.栈的数据域存放进入车库的时间,车牌,队列节点数据域存放进入便道的时间车牌,设置标记是否在停车场内更改停车位置,有更改则置为1,否则为0。

4.如果一辆车车库移到便道,除了更换进入便道的时间外,车牌号从链表的数据里得到,从便道移到车库也类似。

另外,更改位置前停放费用不计入最后的费用。

5.除了要输入进入时间,在更换停车位置时需要输入进入时间,在最后提车时需要输入离开时间,方便计算总费用。

 

三.详细设计

1.主函数设置两个选择:

最外层的选择显示是用户自己选择停车还是系统选择停车位置,最里层的选择为主菜单。

2.进入车库(入栈)

();

进入车库时间

;车牌号

显示是否更改过停车位置

3.离开车库(出栈)

();

将后面三个形参设置为引用调用是为了得到数据域里的数据,供主函数使用

4.进入便道

();

5.离开便道

();

将后面三个形参设置为引用调用是为了得到数据域里的数据,供主函数使用。

(其实在主函数传地址给调用函数也可以,但是不知道为什么没有试验成功。

6.()和()都是显示菜单函数

7.

8.();

函数是计算费用函数,是在最近一个停车位置的停车时间,在主函数已经由离开时间减去进入时间计算好,为标志位,为1,需要多支付20元的管理费用,是需要发票的标志,需要为1,则最后费用为原有费用的基础上增加%15,同时用一个浮点型的返回值返回给主函数使用,同时主函数用%.2f来控制最后只显示小数点最后两位。

 

四.源程序

/*

2015年11月15日21:

21:

37

本次试验主要熟悉栈和队列的存储方式,同时结合顺序表和链表知识

具体试验要求见代码底部

*/

#<>

#<>

#<>

#<>

<>

车库

{

;到达在车库时间

;汽车牌照

;标记位置,在车库为1,在便道为0

};

1便道

{

;到达便道上的时间,以小时为单位(下同)

;汽车牌照

;

1*;

}1;

顺序栈

{

*;栈顶指针

*;栈底指针

};此次代码形参与实参之间是引用调用,故不需要传地址

链式队列

{

1*;队头指针

1*;队尾指针

};

 

(z);计算停车费用

();初始化车库的顺序栈!

();

();

();

();

();

();

();

();

();

();计费函数

()

{

;在停车场的时间

;到达便道上的时间,以小时为单位(下同)

;离开便道世间

;到达在车库时间

;离开车库时间

;汽车牌照

;是否需要发票,需要为1,不需要为0

((0));

;

;

;

;

1;

1;

;

();初始化车库

;

();初始化便道

2;

();

(""2);

(2'Q'2'q')

{

(2)

{

'p':

'P':

1;

();

(""1);

(10)

{

(1)

{

1:

("欢迎您到便道停车,我们将竭诚为您服务!

\n");

("请输入到达时间:

\n");

("");

("请输入车牌照(阿拉伯数字)");

("");

(,0);

("恭喜!

牌照为的车主在便道停车成功!

");

;

2:

("欢迎您到车库停车,我们将竭诚为您服务!

\n");

(())

{

("车道已经停满,请选择便道停车!

");

}

{

("请输入到达车库时间:

\n");

("");

("请输入车牌照(阿拉伯数字)");

("");

(,0);

("恭喜!

牌照为的车主在车库停车成功!

");

}

;

3:

("欢迎您更换到便道停车!

\n");

(())

{

("车库里没有车,你的选择有误!

");

}

{

();

("您的爱车到达车库时间是\n");

("您的爱车牌照是:

\n");

("请输入到达便道的时间:

\n");

("");

(,1);

("恭喜!

您的车辆已经移动到便道!

");

}

;

4:

("欢迎您更换到车库停车!

\n");

()

{

("便道上没有车,您的选择有误!

");

}

{

(11);

("您的爱车到达便道时间是\n");

("您的爱车牌照是:

\n"1);

("请输入到达车库的时间:

\n");

("");

(1,1);

("恭喜!

您的车辆已经移动到车库!

");

}

;

5:

("欢迎您到车库取车!

\n");

(())

{

("车库里没有车,你的选择有误!

");

}

{

();

("牌照是:

的车主您好,您的车到达车库时间是\n");

(1)

("您的车在停车场中有更换停放位置!

\n");

("请输入您的爱车的离开时间:

");

("");

=-;

("请选择是否需要发票1:

表示需要发票,0表示不需要发票");

("");

(1)

{

("您好,请缴费%.2f元\n"(,1));

("请保管好您的发票!

\n");

("感谢您使用本系统,祝您一路顺风!

\n");

}

{

("您好,请缴费%.2f元\n"(,0));

("感谢您使用本系统,祝您一路顺风!

\n");

}

}

;

6:

("欢迎您到便道取车!

\n");

()

{

("便道上没有车,您的选择有误!

");

}

{

(11);

("牌照是:

的车主您好,您的车到达便道时间是\n"1);

(11)

("您的车在停车场中有更换停放位置!

\n");

("请输入您的爱车的离开时间:

");

("");

=-;

("请选择是否需要发票1:

表示需要发票,0表示不需要发票");

("");

(1)

{

("您好,请缴费%.2f元\n"(,1)/2);

("请保管好您的发票!

\n");

("感谢您使用本系统,祝您一路顺风!

\n");

}

{

("您好,请缴费%.2f元\n"(,0)/2);

("感谢您使用本系统,祝您一路顺风!

\n");

}

}

 

}结束大括号

("\n");

("\n");

("下面是菜单,请继续选择或者按0退出!

");

();

(""1);

}结束大括号

;自主选择菜单结束

's':

'S':

("您好,已经由系统为您做出了选择!

\n");

1=()%2+1;

(10)

{

(1)

{

1:

("欢迎您到便道停车,我们将竭诚为您服务!

\n");

("请输入到达时间:

\n");

("");

("请输入车牌照(阿拉伯数字)");

("");

(,0);

("恭喜!

牌照为的车主在便道停车成功!

");

;

2:

("欢迎您到车库停车,我们将竭诚为您服务!

\n");

(())

{

("车道已经停满,请选择便道停车!

");

}

{

("请输入到达车库时间:

\n");

("");

("请输入车牌照(阿拉伯数字)");

("");

(,0);

("恭喜!

牌照为的车主在车库停车成功!

");

}

;

3:

("欢迎您更换到便道停车!

\n");

(())

{

("车库里没有车,你的选择有误!

");

}

{

();

("您的爱车到达车库时间是\n");

("您的爱车牌照是:

\n");

("请输入到达便道的时间:

\n");

("");

(,1);

("恭喜!

您的车辆已经移动到便道!

");

}

;

4:

("欢迎您更换到车库停车!

\n");

()

{

("便道上没有车,您的选择有误!

");

}

{

(11);

("您的爱车到达便道时间是\n");

("您的爱车牌照是:

\n"1);

("请输入到达车库的时间:

\n");

("");

(1,1);

("恭喜!

您的车辆已经移动到车库!

");

}

;

5:

("欢迎您到车库取车!

\n");

(())

{

("车库里没有车,你的选择有误!

");

}

{

();

("牌照是:

的车主您好,您的车到达车库时间是\n");

(1)

("您的车在停车场中有更换停放位置!

\n");

("请输入您的爱车的离开时间:

");

("");

=-;

("请选择是否需要发票1:

表示有发票,0表示不需要发票");

("");

(1)

{

("您好,请缴费%.2f元\n"(,1));

("请保管好您的发票!

\n");

("感谢您使用本系统,祝您一路顺风!

\n");

}

{

("您好,请缴费%.2f元\n"(,0));

("感谢您使用本系统,祝您一路顺风!

\n");

}

}

;

6:

("欢迎您到便道取车!

\n");

()

{

("便道上没有车,您的选择有误!

");

}

{

(11);

("牌照是:

的车主您好,您的车到达便道时间是\n"1);

(11)

("您的车在停车场中有更换停放位置!

\n");

("请输入您的爱车的离开时间:

");

("");

=-;

("请选择是否需要发票1:

表示有发票,0表示不需要发票");

("");

(1)

{

("您好,请缴费%.2f元\n"(,1)/2);

("请保管好您的发票!

\n");

("感谢您使用本系统,祝您一路顺风!

\n");

}

{

("您好,请缴费%.2f元\n"(,0)/2);

("感谢您使用本系统,祝您一路顺风!

\n");

}

}

 

}结束大括号

("\n");

("\n");

("下面是菜单,请继续选择或者按0退出!

");

();

(""1);

}结束大括号

;

}最外层结束大括号

(""2);

();

}最外层大括号

 

0;

}

 

()初始化车库的顺序栈!

{

=(*)(()*100);

()

{

("动态内存分配失败!

\n");

(-1);

}

{

=;

}

}

()

{

()

{

;栈空是返回

}

;

}

()

{

(->=100)

{

;栈满是返回

}

;

}

 

()

{

(())

{

("车库已满,请退出!

");

(-1);

}

{

>=;

>=;

>=;

;

}

}

()

{

(())

{

("车库已空,您的选择有错误!

");

(-1);

}

{

;

=>;

=>;

=>;

}

}

()

{

==(1*)(

(1));

()

(-1);

>=;

}

()

{

1*p;

p=(1*)(

(1));

()

(-1);

{

>=;

>=;

>=;

}

>=;

>=p;指向新进入便道的车

=p;

}

()

{

1*p;

()队列为空,无法出队

(-1);

p=>;

=>;

=>;

=>;

(p)

=;

(p);

}

()

{

("\n");

("******************************************************\n");

("*************请输入P或S来进行选择(不分大小写)*********\n");

("\t\.自助选择停车地点\n");

("\t\.系统为您选择\n");

("\t\.退出系统\n");

("******************************************************\n");

}

()

{

("\n");

("*****************************************\n");

("*************请输入0~6来进行选择*********\n");

("\t\t1.停在便道\n");

("\t\t2.停在车库\n");

("\t\t3.从车库移到便道\n");

("\t\t4.从便道移到车库\n");

("\t\t5.从车库取车\n");

("\t\t6.从便道取车\n");

("\t\t0.退出系统\n");

("*****************************************\n");

}

()

{

;

(1)需要发票,需要在原有基础上加上%15的费用

{

(1)中途有更改停车地点

{

(<0.1)小于10分钟

=(0+20)*1.15;

(<0.5)

=(5+20)*1.15;

(<1)

=(8+20)*1.15;

(()<12)

=((()1)*6+8+20)*1.15;

=((()-12)*5+8+11*6+20)*1.15;

}

一直停在车库中

{

(<0.1)小于10分钟

=(0+20);

(<0.5)

=(5+20);

(<1)

=(8+20);

(()<12)

=(()1)*6+8+20;

=(()-12)*5+8+11*6+20;

}

}

不需要发票,不需要20的管理费

{

(1)中途有更改停车地点

{

(<0.1)小于10分钟

=0*1.15;

(<0.5)

=5*1.15;

(<1)

=8*1.15;

(()<12)

=((()1)*6+8)*1.15;

=((()-12)*5+8+11*6)*1.15;

}

一直停在车库中

{

(<0.1)小于10分钟

=0;

(<0.5)

=5;

(<1)

=8;

(()<12)

=(()1)*6+8;

=(()-12)*5+8+11*6;

}

}

;

}

 

/*

停车场管理系统的设计与实现

问题描述:

设计一个停车场管理系统,模拟停车场的运作,此程序应具备以下功能:

(1)若车辆到达,则显示汽车在停车场车库内或便道上的停车位置;

(2)若车辆离去,则显示汽车在停车场内停留的时间和应交纳的费用。

总费用应为在便道上的费用加上在停车场车库内的费用。

基本要求:

(1)要求以栈模拟停车场车库,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理;

(2)a.车主进入停车场后,若车库和便道都有空闲,则由车主选择具体停在车库还是便道上;b.在车库和便道都有空闲的情况下,车辆停放位置也可应车主的要求选择更换(如原先停放在便道中的车辆,车主可以要求停在车库内);

c.若车主没有特别要求,则按照栈和队列的顺序由系统自动分配位子。

(3)要求处理的数据元素包括的数据项为:

汽车"到达"和"离去"的时间信息(包括在便道上和车库内的时间)、汽车牌号等;

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

测试数据:

自行设计一组在停车场车库内停车的数据和在便道上停车的数据。

实现提示:

(1)该停车场车库能容纳车辆的数量,便道上的停车数量。

(2)车辆到达对应栈或队列的"入"操作,车辆离去对应栈或队列的"出"操作。

(3)费用计算问题:

a.应分等级收取费用,对于停在车库的车辆,十分钟以内免费,半小时内5元,第一个小时8元,以后每超过一个小时6元。

b.停留12小时以上者另加每小时5元的托管费(前12小时不收托管费)。

d.对索要发票者,另加总费用15%的税费。

e.对车主更换位置的车辆,收取20元的系统维护费。

f.在便道上停留的时间按照半价收取。

*/

 

五.用户手册

请根据主菜单操作,注意括号内的提示内容即可。

 

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

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1