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

C程序课程设计停车场管理系统

XXXXXXC程序设计课程设计说明书设计(论文)题目:停车场管理系统所在院:信息工程学院专业班级: 14通信工程2班学生姓名:学号:201451032指导教师:XXX2016年3月7日一、问题描述某停车场有20车位(1-20号),车辆信息包括:车位号,车牌号,进入时间,离开时间,计费(按每天20元收费)。

编程实现如下菜单驱动的停车场管理系统:(1)查找空车位并显示车位号。

(2)车辆进入(判断有没有空车位,如果有,允许车辆进入,同时记录车位号,车牌号及辆进入时间)。

(3)查找车辆并显示车辆信息。

(4)车辆离开(按照车位号查找车辆,如果在车位,计费,同时让车辆离开)。

(5)显示所有在位车辆信息。

二、设计要求1. 界面清晰,美观大方。

2. 要求使用菜单的形式描述功能项,菜单设计美观大方、实用,可仿照课程说明书模板或自行设计。

3. 模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现。

4. 程序以缩进格式书写,要求清晰、易懂。

5. 各功能模块要求必须有准确描述函数功能的注释,重要语句最好也加上注释,以更好地让读者理解。

6. 要求对2-3个重要功能模块进行描述。

7. 课程设计题目选择要求一个班最多有两人可选择同一题目,但要求不得抄袭,最终每个人(即使题目相同)内容都是独立的。

8. 课程设计至少包含5-10个功能模块,若题目中不够5-10个功能项,请自行设计功能项(5-10个功能项数目不同,得分也不同)。

9. 可以选择老师提供的参考选题,也可以自选,如果自选,需要将自选题目的详细内容以及实现要求提供给老师,老师批准后方可采用。

10. 要求利用结构化程序设计方法以及C的编程思想来完成系统的设计。

11. 编辑平台选用Microsoft Visual C++ 6.0。

三、分析与实现本程序采用模块化设计,主函数清晰、明了,各功能分别在不同模块中实现。

共有七个功能模块,每个功能模块以函数的形式表示,实现了有关停车场管理的七项功能。

具体实现如下:首先声明必要的变量及数据结构。

//相关头文件#include <stdio.h>#include <string.h>#include <stdlib.h>//符号常量定义struct Garage{char carnum[8]; /*车牌号*/int lay; /*层号*/intgaragenum; /*车位号*/int time; /*停车时间*/intisempty; /*该车位是否为空,1表示空0表示有车*/};void Instruction(){printf("停车场管理系统使用说明\n");printf("停车请输入1 \n");printf("取车请输入2 \n");printf("查看全部车辆的信息请输入3 \n");printf("退出请输入0 \n");}/*初始化停车场信息初始状态为第一层已经停有4辆车, *其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 */voidInit(struct Garage gar[][6]){int i, j; /*给所有的车位的层号车位号初始化停车时间初始化为0停车位全都初始化为空*/for (i=0; i<2; i++){for (j=0; j<6; j++){gar[i][j].lay = i+1;gar[i][j].garagenum= j+1;gar[i][j].time = 0;gar[i][j].isempty = 1;}}/*第一层的1-4号车位停车*/for (i=0; i<4; i++){gar[0][i].isempty =0;}strcpy(gar[0][0].carnum, "0000"); /*初始化的车牌号*/gar[0][0].time = 20;strcpy(gar[0][1].carnum,"1111"); gar[0][1].time = 15;strcpy(gar[0][2].carnum, "2222");gar[0][2].time = 10;strcpy(gar[0][3].carnum, "3333");gar[0][3].time = 5;}/*新停入的汽车后将在此之前的所有车的停车时间加5*/ voidAddTime(struct Garage gar[][6]){int i, j;for (i=0; i<2; i++){for (j=0; j<6; j++){if (gar[i][j].isempty == 0){gar[i][j].time += 5;}}}}/*停车模块*/void Park(struct Garage gar[][6]){int i;charnum[8];printf("请输入车牌号");scanf("%s", num); /*查找空车位*/for (i=0; i<6; i++){if (gar[0][i].isempty == 1){printf("第一层第%d号车位空着请在此处停车\n", i+1);strcpy(gar[0][i].carnum, num);printf("车牌号%s 层号 1 车位号%d \n", num, i+1);AddTime(gar); /*在此之前停车的所有汽车时间加5*/gar[0][i].isempty = 0; /*表示该车为已经停车*/gar[0][i].time = 5; /*将时间设为5*/return;}}printf("第一层已经没有空车位\n");for (i=0; i<6; i++){if (gar[1][i].isempty == 1){printf("第二层第%d号车位空着请在此处停车\n", i+1);strcpy(gar[1][i].carnum, num);printf("车牌号%s 层号 2 车位号%d \n", num ,i+1);AddTime(gar); /*在此之前停车的所有汽车时间加5*/gar[1][i].isempty = 0; /*表示该车位已经停车*/gar[1][i].time = 5; /*将时间设为5*/return;}}printf("对不起 1 2层都没有空车位您现在不能在此停车\n");}/*查看所有车辆信息*/void Information(struct Garage gar[][6]){int i, j;printf(" 车牌号层号车位号停车时间\n");for (i=0; i<2; i++){for(j=0; j<6; j++){if (gar[i][j].isempty == 0)printf(" %s%8d%8d%8d\n", gar[i][j].carnum, gar[i][j].lay,gar[i][j].garagenum, gar[i][j].time);}}printf("\n");}/*取车模块*/double Leave(struct Garage gar[2][6]){int i, j;charnum[8];double charge = 0;printf("请输入要取的车牌号");scanf("%s", num);for (i=0; i<2; i++){for (j=0; j<6; j++){if (!strcmp(gar[i][j].carnum, num)){printf("您在%d层%d车位停车%d分钟\n", gar[i][j].lay,gar[i][j].garagenum, gar[i][j].time);charge = gar[i][j].time/5*0.2;printf("停车费用为每5分钟0.2元您需交%.2lf元\n", charge);gar[i][j].isempty = 1;return charge;}}}printf("没有您输入的车号。

\n\n");return charge;}/*是否查看总收入*/voidIsPrintTotal(double total){charch;printf("是否查看停车收费总计Y/N");scanf("%c", &ch);while (ch!='y' &&ch!='Y' &&ch!='n' &&ch!='N'){printf("请输入Y或N ");scanf("%c", &ch);printf("\n");}switch (ch){case 'Y':case 'y':printf("停车收费总计为%.2lf元\n", total);break;case 'N':case 'n':break;}}/*主函数模块*/main(){int choice;double total = 0;struct Garage gar[2][6];Init(gar); /*初始化第一层已经停有的4辆车*/while (1){Instruction();printf("请输入要进行的操作:");scanf("%d", &choice);while (choice<0 || choice>3){printf("输入的不合法请输入0-3选择");scanf("%d", &choice);}switch (choice){case 1:Park(gar);break;case 2:total += Leave(gar);IsPrintTotal(total);break;case 3:Information(gar);break;case 0:exit(0);}}return 0;}四、运行与测试五、总结与思考两个星期的努力终于总算把课程设计给完成了。

相关主题