您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C语言课程设计报告停车场管理系统
兰州理工大学软件学院2011级毕业生算法与数据结构课程设计题目:停车场管理专业班级:软件四班姓名:孙健龙学号:11700503指导教师:王连相成绩:______________C课程设计报告1目录一、题目及要求............................................................................................................2二、题目分析................................................................................................................3三、数据结构说明........................................................................................................4四、各函数算法分析....................................................................................................5(1)主函数...........................................................................................................5(2)车辆到达函数...............................................................................................7(3)车辆离开函数...............................................................................................8(4)列表显示函数.............................................................................................10五、程序测试..............................................................................................................14(1)测试信息对错误的处理.............................................................................14(2)列表显示.....................................................................................................15(3)同时输出等待的提示作息.........................................................................16(4)计算它们的应交费用.................................................................................17六、课程设计感悟与收获..........................................................................................18七、源代码..................................................................................................................19八、参考文献..............................................................................................................25C课程设计报告2一、题目及要求[要求]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆国就进入停车场。停车场内如有某辆车要走,在它之后进来的车都必须退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且其他在便道上等待的车辆的次序不变。编制一程序模拟停车场管理。[提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去时刻)。例如:(’A’,1,5)表示1号牌照车在5这个时刻到达,而(’D’,5,20)表示5号牌照车在20这个时刻离去,整个程序可以在输入信息为(’E’,0,0)时结束。基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交的费用和它在停车场内停留的时间。C课程设计报告3根据题目要求,停车场可以用一个长度为n的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。所以可以设两个堆栈。二、题目分析由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到用结构体数组来存储车库信息。又每个汽车的车牌号都不一样,这样一来就可以根据车牌号准确找到汽车位置。当停车场内某辆车要离开时,在他之后进入的汽车必须再按原次序进入车库。这是一个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个结构体数组,用来暂时存放为出站汽车暂时让道的汽车车牌号。当车库满后,继续进来的汽车需要停放在车库旁边的便道上等候,若车库满后,继续进来的汽车需要停放在车库旁边的便道上等候,若车有汽车开走,这完全是一个先进先出模型,因此可以设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场是根据汽车在停车场内停放的总长来收费的,在便道上的时间不计费,因此必须记录车辆进入车库时的时间,车辆离开车库时的时间不需要记录,当从终端输入时可直接使用。另外,题目提示中的表示方法[(’A’,1,5)表示1号牌照车在5C课程设计报告4这个时刻到达]有两点不好;一、对用户友好程度不高,用起来并不方便;二、不接近实际情况,生活中表示时间的格式为“--:--”,完全可以建立一个时间结点来实现。因此,实际编程中将对这一方面予以优化。三、数据结构说明根据题意,停车场中的空间分为车库和便道。这里用结构体来模拟车库和便道,按照从端读入数据序进行管理。模拟车库和模拟便道中分别用结构体数组和链表来存储车辆信息。模拟车库和模拟便道的数据结构如下表1和表2所示:Moni_cheku结构体CarNode*stack[MAX+1]结构体数组charnum[10]Timereach结构体inthourintminTimeleave结构体inthourintmininttop表1模拟车库的数据结构Moni_biandao结构体QueueNode*head链表CarNode*data数组charnum[10]Timereach结构体inthourintminTimeleave结构体inthourintminStructcar*nextQueueNode*rear链表CarNode*data数组charnum[10]Timereach结构体inthourintminTimeleave结构体inthourintminStructcar*next表2模拟便道的数据结构C课程设计报告5用C语言实现这一部分为:typedefstructtime{inthour;intmin;}Time;/*时间结点*/typedefstructnode{charnum[10];Timereach;Timeleave;}CarNode;/*车辆信息结点*/typedefstructNODE{CarNode*stack[MAX+1];inttop;}Moni_Cheku;typedefstructcar{CarNode*data;structcar*next;}QueueNode;typedefstructNode{QueueNode*head;QueueNode*rear;}Moni_Biandao;四、各函数算法分析(1)主函数voidmain(){Moni_ChekuEnter,Temp;Moni_BiandaoWait;intch;InitStack(&Enter);/*初始化车站*/InitStack(&Temp);/*初始化让路的临时链表*/InitQueue(&Wait);/*初始化便道*/C课程设计报告6printf(\n);printf(^_^欢迎进入停车场管理系统1!^_^\n);printf(\n);printf(提示!(1).该车库的最大容量为:%d;\n,MAX);printf((2).该车库的收费标准为:%4.2f元/(辆*分钟).\n,price);while(1){printf(********************主菜单********************\n);printf(1.车辆到达);printf(2.车辆离开);printf(3.列表显示);printf(4.退出系统\n);printf(**********************************************\n);printf(请选择(1-4):[]\b\b);while(1){scanf(%d,&ch);if(ch=1&&ch=4)break;elseprintf(错误!请重选(1-4):[]\b\b);}switch(ch){case1:Arrival(&Enter,&Wait);break;/*车辆到达*/case2:Leave(&Enter,&Temp,&Wait);break;/*车辆离开*/case3:List(Enter,Wait);break;/*打印列表信息*/case4:exit(0);/*退出主程序*/default:break;}}}车辆离开函数列表显示函数退出函数错误处理车辆到达函数1234其它枪主菜单C课程设计报告7(2)车辆到达函数intArrival(Moni_Cheku*Enter,Moni_Biandao*W)/*车辆到达*/{CarNode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode));flushall();printf(请输入车牌号(例如:中CUG888):);gets(p-num);if(Enter-topMAX)/*车库未满,车进车库*/{Enter-top++;printf(该车在车库位置%d.\n,Enter-top);printf(请输入到达时间(**:**):);scanf(%d:%d,&(p-reach.hour),&(p-reach.min));Enter-stack[Enter-top]=p;return(1);}else/*车库已满,车进便道*/{printf(该车须在便道等待!\n);t=(QueueNode*)malloc(sizeof(QueueNode))
本文标题:C语言课程设计报告停车场管理系统
链接地址:https://www.777doc.com/doc-4436967 .html