当前位置:文档之家› C语言综合程序设计 停车场管理系统

C语言综合程序设计 停车场管理系统

综合性程序设计报告设计题目:____停车场管理系统___________指导教师: _______________班级: _____________学号: _______________设计者: _______________成绩: _______________设计时间: 年月日停车场管理系统目录1.题目描述2.功能模块分解及说明3.数据库设计及说明4.界面说明5.主要算法说明6.代码清单及注释7.设计测试说明8.设计体会停车场管理系统1.题目描述停车场的基本概述:用于利用计算机实现停车场的管理,包括车位调度,停车记费。

车位记录,收费管理与计算。

停车场的主要功能:1.车位调度。

2.停车时间与费用的计算。

3.车位记录。

2.功能模块分解及说明根据题目要求,可以用结构体实现,在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。

车辆离开要计时计费。

另外,每天开始时,停车场要初始化。

所以,这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。

○1菜单函数:main()函数体内包含了界面选则部分menu(),并单独抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。

即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4) /*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break; /*初始化函数*/case 2:jinru();break; /*车辆进入函数*/case 3:likai();break; /*车辆离开函数*/case 4:exit(0); /*退出*/}}○2车道信息该模块是将每一天开始的停车场内和便道车位清零。

首先建立场内场外的结构体,结构体内成员即车位的状态。

用循环实现车位的致零即可。

struct changnei/*场内车道信息*/{int neikong;}chn[N-1];struct changwai/*场外车道信息*/{int waikong;}chw[M-1];N和M分别是停车场和便道的车位预设值,用宏定义。

用户可根据实际情况改变。

#define N 100/*预设停车场有100个车位*/#define M 100/*预设便道有100个出位*/void chushi()/*初始化函数*/{int i,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();}函数出示化后将回到菜单界面。

○3车辆进入函数:该模块车辆到达后,要指定车辆的停车位置。

用户根据菜单函数进入车辆进入模块。

按照每辆车的到达次序给予车辆次序号,由0号开始。

车辆信息也建立结构体。

struct car/*车辆信息*/{int car_num;/*车辆次序号*/int car_arr;/*车辆到达时间*/int car_lef;/*车辆离开时间*/int car_stay;/*车辆停放位置*/}car[CIXUHAO];其中,CIXUHAO是车辆次序号的宏定义:#define CIXUHAO 1000/*预设车辆次序号。

不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:void jinru()/*车辆进入函数*/{int i,a;int h=0;printf("\n\n请输入该车次序号(从0号开始):");scanf("%d",&a);for(i=0;i<N;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();}程序执行完后回到菜单。

○4车辆离开函数:该模块一辆车要离开,则需要记录该车的离开时间,以计算出该车在停车场内的停车时间和应该缴纳的费用。

该车离开后,要判断便道上是否有车等待进入,如有,则将便道上第一辆车停放在停车场内最后的位置并记录好进场时间;若无,N Y 则返回菜单.void likai()/*车辆离开函数*/{ int i,k,choi,time;double fee;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为预设停车场单位小时费用,用宏定义,便于以后修改。

#define D 1.2/*预设车辆停车费为1.2元每小时*/3.数据库设计及说明○1停车车道:用宏定义管理数据。

N和M分别是停车场和便道的车位预设值原因以及说明:用户可根据实际情况改变。

○2预设车辆次序号:用宏定义。

原因及说明不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/ 给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:○3停车费用:用宏定义。

原因及说明:以后便于修改。

○4车辆号码:用数组。

原因及说明:车辆数目较大,用数组更加有条理。

○5车道号码:用数组。

原因及说明:车辆数目较大,用数组更加有条理。

4.界面说明○1主菜单函数○2初始化操作○3有车进入以上分别举例0,1,2三个车的进场情况○4有车离开○5若便道上没车,则退回到主菜单○6若便道上有车5.主要算法说明○1.主菜单○2车道是否停满。

场内是否已满 已满,将车停在便道 未满,指定停车场位置开始显示一系列选项功能 输入n ,判断n 是不是1-4? 根据n 的值调用各功能模块函数 结束Y N○3便道上是否有车辆。

6.代码清单及注释#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 100/*预设停车场有100个车位*/#define M 100/*预设便道有100个出位*/#define D 1.2/*预设车辆停车费为1.2元每小时*/#define CIXUHAO 1000/*预设车辆次序号。

不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/void menu();void chushi();void jinru();void likai();struct car/*车辆信息*/{int car_num;/*车辆次序号*/int car_arr;/*车辆到达时间*/int car_lef;/*车辆离开时间*/int car_stay;/*车辆停放位置*/}car[CIXUHAO];struct changnei/*场内车道信息*/{int neikong;}chn[N-1];struct changwai/*场外车道信息*/{int waikong;}chw[M-1];void main()/*主函数*/{menu();/*菜单函数*/}void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}void chushi()/*初始化函数*/{int i,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();}void jinru()/*车辆进入函数*/{int i,a;int h=0;printf("\n\n请输入该车次序号(从0号开始):");scanf("%d",&a);for(i=0;i<N;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();}void likai()/*车辆离开函数*/{ int i,k,choi,time;double fee;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语言程序设计的思想,并且掌握了程序设计的基本方法,为后续课程打下了坚实的基础。

相关主题