C语言综合程序设计停车场管理系统.docx
《C语言综合程序设计停车场管理系统.docx》由会员分享,可在线阅读,更多相关《C语言综合程序设计停车场管理系统.docx(20页珍藏版)》请在冰点文库上搜索。
![C语言综合程序设计停车场管理系统.docx](https://file1.bingdoc.com/fileroot1/2023-6/2/bd1cea8f-f679-4c77-8abe-2b3652837599/bd1cea8f-f679-4c77-8abe-2b36528375991.gif)
C语言综合程序设计停车场管理系统
综合性程序设计报告
设计题目:
____停车场管理系统___________
指导教师:
_______________
班级:
_____________
学号:
_______________
设计者:
_______________
成绩:
_______________
设计时间:
年月日
停车场管理系统
1.题目描述
2.功能模块分解及说明
3.数据库设计及说明
4.界面说明
5.主要算法说明
6.代码清单及注释
7.设计测试说明
8.设计体会
停车场管理系统
1.题目描述
停车场的基本概述:
用于利用计算机实现停车场的管理,包括车位调度,停车记费。
车位记录,收费管理与计算。
停车场的主要功能:
1.车位调度。
2.停车时间与费用的计算。
3.车位记录。
2.功能模块分解及说明
根据题目要求,可以用结构体实现,在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。
车辆离开要计时计费。
另外,每天开始时,停车场要初始化。
所以,这个系统可以分为:
初始化、有车进入、有车离开、退出四个模块。
菜单函数:
main()函数体内包含了界面选则部分menu(),并单独
抽出来作为一个独立函数,目的在于系统执行每部分
模块后能够方便返回到系统界面。
即main()函数写为
如下:
voidmain()/*主函数*/
{
menu();/*菜单函数*/
}
voidmenu()
{
intn,w;
do
{
puts("\t\t**************MENU**************\n\n");
puts("\t\t\t1.初始化");
puts("\t\t\t2.有车进入");
puts("\t\t\t3.有车离开");
puts("\t\t\t4.退出");
puts("\n\n\t\t*********************************\n");
printf("Pleasechoiceyournumber(1-4):
[]\b\b");
scanf("%d",&n);
if(n<1||n>4)/*对选择的数字作判断*/
{
w=1;
getchar();
}
elsew=0;
}while(w==1);
switch(n)
{
case1:
chushi();break;/*初始化函数*/
case2:
jinru();break;/*车辆进入函数*/
case3:
likai();break;/*车辆离开函数*/
case4:
exit(0);/*退出*/
}
}
车道信息
该模块是将每一天开始的停车场内和便道车位清零。
首先建立场内场外的结构体,结构体内成员即车位的状态。
用循环实现车位的致零即可。
structchangnei/*场内车道信息*/
{
intneikong;
}chn[N-1];
structchangwai/*场外车道信息*/
{
intwaikong;
}chw[M-1];
N和M分别是停车场和便道的车位预设值,用宏定义。
用户可根据实际情况改变。
#defineN100/*预设停车场有100个车位*/
#defineM100/*预设便道有100个出位*/
voidchushi()/*初始化函数*/
{
inti,j;
for(i=0;i<=N-1;i++)
chn[i].neikong=0;/*将场内车道设置为空*/
for(j=0;j<=M-1;j++)
chw[i].waikong=0;/*将便道车道设置为空*/
printf("\n\n\t\t已初始化\n\n");
menu();
}
函数出示化后将回到菜单界面。
车辆进入函数:
该模块车辆到达后,要指定车辆的停车位置。
用户根据菜单函数进入车辆进入模块。
按照每辆车的到达次序给予车辆次序号,由0号开始。
车辆信息也建立结构体。
structcar/*车辆信息*/
{
intcar_num;/*车辆次序号*/
intcar_arr;/*车辆到达时间*/
intcar_lef;/*车辆离开时间*/
intcar_stay;/*车辆停放位置*/
}car[CIXUHAO];
其中,CIXUHAO是车辆次序号的宏定义:
#defineCIXUHAO1000/*预设车辆次序号。
不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/
给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:
voidjinru()/*车辆进入函数*/
{
inti,a;
inth=0;
printf("\n\n请输入该车次序号(从0号开始):
");
scanf("%d",&a);
for(i=0;i{
if(chn[i].neikong==0);/*无车标记0*/
if(chn[i].neikong==1)/*有车标记1*/
h=h+1;
}
if(h==N)
printf("停车场内已停满,请停在便道上\n");
else
{
car[a].car_stay=h;
chn[h].neikong=1;
printf("该车应该停在停车场内第道%d(从0道开始记)\n",h);
printf("请输入该车进停车场时刻(24小时整点计时):
\n");
scanf("%d",&car[a].car_arr);
}
便道上还有车吗?
menu();
}
程序执行完后回到菜单。
车辆离开函数:
该模块一辆车要离开,则需要记
录该车的离开时间,以计算出该车
在停车场内的停车时间和应该缴纳
的费用。
该车离开后,要判断便道
上是否有车等待进入,如有,则将
便道上第一辆车停放在停车场内最
后的位置并记录好进场时间;若无,
则返回菜单.
voidlikai()/*车辆离开函数*/
{inti,k,choi,time;
doublefee;
printf("请输入离开车辆次序号[],并将此车之后的车先全部退出停车场!
");
scanf("%d",&i);
printf("\n请输入离开车辆的离开时刻(24小时整点计时):
\n");
scanf("%d",&car[i].car_lef);
fee=D*(car[i].car_lef-car[i].car_arr);
time=car[i].car_lef-car[i].car_arr;
printf("次序号为%d的车停车时间%d小时,应收费%f元\n",i,time,fee);
printf("\n\n\n请让场内退出的车再依次进场!
\n\n\n");
printf("便道上现在有车吗?
(请选择1或2)\n1.有\n2.没有\n");/*因便道上可能没有车,因此要做选择*/
scanf("%d",&choi);
if(choi==2)
{
menu();
}
if(choi==1)
{
printf("请让便道上的第一辆车进场\n");
printf("该车次序号为:
\n");
scanf("%d",&k);
printf("请输入该车进场时间:
\n");
scanf("%d",&car[k].car_arr);
menu();
}
}
D为预设停车场单位小时费用,用宏定义,便于以后修改。
#defineD1.2/*预设车辆停车费为1.2元每小时*/
3.数据库设计及说明
停车车道:
用宏定义管理数据。
N和M分别是停车场和便道的车位预设值
原因以及说明:
用户可根据实际情况改变。
预设车辆次序号:
用宏定义。
原因及说明不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/
给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:
停车费用:
用宏定义。
原因及说明:
以后便于修改。
车辆号码:
用数组。
原因及说明:
车辆数目较大,用数组更加有条理。
车道号码:
用数组。
原因及说明:
车辆数目较大,用数组更加有条理。
4.界面说明
主菜单函数
初始化操作
有车进入
以上分别举例0,1,2三个车的进场情况
有车离开
若便道上没车,则退回到主菜单
若便道上有车
5.主要算法说明
主菜单
车道是否停满。
便道上是否有车辆。
6.代码清单及注释
#include
#include
#include
#defineN100/*预设停车场有100个车位*/
#defineM100/*预设便道有100个出位*/
#defineD1.2/*预设车辆停车费为1.2元每小时*/
#defineCIXUHAO1000/*预设车辆次序号。
不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/
voidmenu();
voidchushi();
voidjinru();
voidlikai();
structcar/*车辆信息*/
{
intcar_num;/*车辆次序号*/
intcar_arr;/*车辆到达时间*/
intcar_lef;/*车辆离开时间*/
intcar_stay;/*车辆停放位置*/
}car[CIXUHAO];
structchangnei/*场内车道信息*/
{
intneikong;
}chn[N-1];
structchangwai/*场外车道信息*/
{
intwaikong;
}chw[M-1];
voidmain()/*主函数*/
{
menu();/*菜单函数*/
}
voidmenu()
{
intn,w;
do
{
puts("\t\t**************MENU**************\n\n");
puts("\t\t\t1.初始化");
puts("\t\t\t2.有车进入");
puts("\t\t\t3.有车离开");
puts("\t\t\t4.退出");
puts("\n\n\t\t*********************************\n");
printf("Pleasechoiceyournumber(1-4):
[]\b\b");
scanf("%d",&n);
if(n<1||n>4)/*对选择的数字作判断*/
{
w=1;
getchar();
}
elsew=0;
}while(w==1);
switch(n)
{
case1:
chushi();break;/*初始化函数*/
case2:
jinru();break;/*车辆进入函数*/
case3:
likai();break;/*车辆离开函数*/
case4:
exit(0);/*退出*/
}
}
voidchushi()/*初始化函数*/
{
inti,j;
for(i=0;i<=N-1;i++)
chn[i].neikong=0;/*将场内车道设置为空*/
for(j=0;j<=M-1;j++)
chw[i].waikong=0;/*将便道车道设置为空*/
printf("\n\n\t\t已初始化\n\n");
menu();
}
voidjinru()/*车辆进入函数*/
{
inti,a;
inth=0;
printf("\n\n请输入该车次序号(从0号开始):
");
scanf("%d",&a);
for(i=0;i{
if(chn[i].neikong==0);/*无车标记0*/
if(chn[i].neikong==1)/*有车标记1*/
h=h+1;
}
if(h==N)
printf("停车场内已停满,请停在便道上\n");
else
{
car[a].car_stay=h;
chn[h].neikong=1;
printf("该车应该停在停车场内第道%d(从0道开始记)\n",h);
printf("请输入该车进停车场时刻(24小时整点计时):
\n");
scanf("%d",&car[a].car_arr);
}
menu();
}
voidlikai()/*车辆离开函数*/
{inti,k,choi,time;
doublefee;
printf("请输入离开车辆次序号[],并将此车之后的车先全部退出停车场!
");
scanf("%d",&i);
printf("\n请输入离开车辆的离开时刻(24小时整点计时):
\n");
scanf("%d",&car[i].car_lef);
fee=D*(car[i].car_lef-car[i].car_arr);
time=car[i].car_lef-car[i].car_arr;
printf("次序号为%d的车停车时间%d小时,应收费%f元\n",i,time,fee);
printf("\n\n\n请让场内退出的车再依次进场!
\n\n\n");
printf("便道上现在有车吗?
(请选择1或2)\n1.有\n2.没有\n");/*因便道上可能没有车,因此要做选择*/
scanf("%d",&choi);
if(choi==2)
{
menu();
}
if(choi==1)
{
printf("请让便道上的第一辆车进场\n");
printf("该车次序号为:
\n");
scanf("%d",&k);
printf("请输入该车进场时间:
\n");
scanf("%d",&car[k].car_arr);
menu();
}
}
7.设计测试说明
8.设计体会
c语言程序设计是一门重要的专业基础课,通过这次课程设计使我了解了,c语言程序设计的思想,并且掌握了程序设计的基本方法,为后续课程打下了坚实的基础。
同时这次课程设计又是一次实践性较强的知识应用,在对我进行程序设计基础理论与技术技巧能力训练的同时,更加培养了我解决实际问题的编程能力。
在设计过程中,首先要解决的是与同学的合作,接下来分工与协商,共同探讨,大家取长补短,认清自己的不足之处和薄弱环节,加以弥补和加强,要做出一个好的程序就要有不懈追求的精神和对理想崇高的追求,有一种不完成不罢休的精神。
c语言作为一种高级编程语言具有方便灵活的特点,适合各种类型的软件开发,为我们以后学习单片机非常有用。
在设计初期,根据题目的要求和所学的知识,车库中的车辆是先进后出是栈结构,便道上的车辆是先进先出的,是一个队列,结构很明显,但是现阶段我所学的基础知识不够,掌握的不多,对应用栈和队列来解决这个问题有一定的困难,因此我在整个设计中使用了结构体数组,运用一个结构体数组来同时记录车库和便道中车辆的信息,这样也可以起到一个连续记录数据的功能,完成设计要求的任务。
课程设计为我提供了一个既动手又动脑,独立实践的机会,将课本上的知识与实践相结合起来,提高了我适应实际,实践编程的能力。
在这一系统中用到了结构体,它让我更加巩固了结构体的特点和用法,本设计最好使用的结构是栈和队列,但是我们现阶段还未作学习,使用起来不是很流畅,因此我在这个设计中使用了结构体,使用了新的思路。
总之,这次课程设计挖掘了我潜在的能力,是我更加自信,也对编程更加有兴趣,为以后的学习打下了良好的基础。