您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C语言课程设计-停车场管理系统
1开始显示一系列选项功能输入n,判断n是不是1-4?Y根据n的值调用各功能模块函数结束停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要计时计费。另外,每天开始时,停车场要初始化。3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。4详细设计main()函数体内包含了界面选则部分menu(),并单独抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。即main()函数写为如下:voidmain()/*主函数*/{menu();/*菜单函数*/}菜单函数:N2voidmenu(){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(n1||n4)/*对选择的数字作判断*/{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];3structchangwai/*场外车道信息*/{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开始*/给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:4场内是否已满已满,将车停在便道未满,指定停车场位置记录该车离开时间得到停车时间和费用便道上还有车吗?N返回主菜单Y令其进场输入次序号和进场时间voidjinru()/*车辆进入函数*/{inti,a;inth=0;printf(\n\n请输入该车次序号(从0号开始):);scanf(%d,&a);for(i=0;iN;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();}程序执行完后回到菜单。车辆离开函数:【需求分析】若有一辆车要离开,则需要记录该车的离开时间,以计算出该车在停车场内的停车时间和应该缴纳有车离开5的费用。该车离开后,要判断便道上是否有车等待进入,如有,则将便道上第一辆车停放在停车场内最后的位置并记录好进场时间;若无,则返回菜单。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();}}6D为预设停车场单位小时费用,用宏定义,便于以后修改。#defineD1.2/*预设车辆停车费为1.2元每小时*/5上机操作(1)主菜单函数(2)初始化操作7(3)有车进入以上分别举例0,1,2三个车的进场情况(4)有车离开8若便道上没车,则退回到主菜单若便道上有车96总结通过该实例的实习,要求大家进一步理解和运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试较长的程序,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。7原程序代码#includestdio.h#includestdlib.h#includestring.h#defineN100/*预设停车场有100个车位*/#defineM100/*预设便道有100个出位*/10#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);11if(n1||n4)/*对选择的数字作判断*/{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;iN;i++){if(chn[i].neikong==0);/*无车标记0*/if(chn[i].neikong==1)/*有车标记1*/h=h+1;}if(h==N)printf(停车场内已停满,请停在便道上\n);else{12car[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(
本文标题:C语言课程设计-停车场管理系统
链接地址:https://www.777doc.com/doc-6112925 .html