您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C语言停车场管理系统课程设计
0课程设计课程设计名称:课程设计专业班级:学生姓名:学号:指导教师:课程设计时间:1目录1需求分析.............................................................................................32概要设计..........................................................................................33详细设计.............................................................................................44运行环境............................................................................................65开发环境.............................................................................................66程序设计.............................................................................................67调试分析...........................................................................................118测试结果...........................................................................................199参考文献.............................................................................................2210心得体会........................................................................................2311成绩评价表....................................................................................242计算机应用技术专业课程设计任务书学生姓名专业班级学号题目停车场管理系统课题性质课题来源指导教师同组姓名主要内容学习掌握并熟练运用C语言进行程序设计;针对具体应用问题,选择、设计和实现合适的抽象数据类型;进行简单的需求分析,给出设计方案。任务要求综合运用和融化所学理论知识,提高分析和解决实际问题的能力,达到培养良好程序设计能力和习惯的目的,为开发满足问题要求的小型应用软件奠定基础,达到软件工程的综合性基础训练的目的。完成需求分析报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。参考文献《数据结构(C语言版)》严蔚敏清华大学出版社《C语言程序设计》(第三版)谭浩强清华大学出版社审查意见指导教师签字:教研室主任签字:年月日3一、需求分析设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。设计要求:1.模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。2.从终端读入汽车到达或离去的数据,每组数据包括三项:(1)是“到达”还是“离开”;(2)汽车牌照号码;(3)“到达”或“离开”的时刻。3.与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。二、概要设计1.数据结构说明(1)用到两个堆栈:一个为车场栈;另一个为临时栈temptypedefstructNODE{CarNode*stack[MAX+1];inttop;}SeqStackCar;/*模拟车场*/(2)一个队列结构,存储便道车辆信息:typedefstructNode{QueueNode*head;QueueNode*rear;4}LinkQueueCar;/*模拟便道*/2.算法说明(1)功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示停车场系统车辆到达车辆离开列表显示321图1(2)以模块为单位分析算法1、“到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图2。车辆到达停车场是否满结束进入停车场进入便道是否图252.“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。车辆离开停车场是否空结束车辆离开提示没有车是否否便道是否有车是车进入车场图33.“显示”模块:显示模块有两个显示选项,即:车场与便道。如图4。列表显示判断输入值结束显示车场列表显示便道列表2.便道1.车场图463.运行环境1)软件环境操作系统:Windows72)硬件环境处理器:IntelPentium166MX或更高内存:32MB以上硬盘空间:1GB以上显卡:SVGA显示适配4开发工具和编程语言MicrosoftvisualC++C语言5详细设计#includeconio.h#includemalloc.h#includestdio.h#includestdlib.h#includewindows.h//清空当前屏幕#defineClearScreen()system(cls)//显示字符串szPrompt并等待用户按下任意键7#definePause(szPrompt)printf(%s,szPrompt),getch()typedefstructcarinformation//车辆信息{charszRegistrationMark[64];//车牌号charszArrivalTime[16];//到达时间charszEntranceTime[16];//进入停车场(开始计费)时间charszDepartureTime[16];//离开时间}TCARINFORMATION,*LPTCARINFORMATION;typedefstructcarstack{LPTCARINFORMATIONlpCarInformation;//车辆信息intnTop;//栈顶元素下标intnStackSize;//栈容量}TCARSTACK,*LPTCARSTACK;//初始化栈lpCarStack,将其容量设置为nSizevoidInitStack(LPTCARSTACK&lpCarStack,intnSize){lpCarStack=(LPTCARSTACK)malloc(sizeof(TCARSTACK));lpCarStack-lpCarInformation=(LPTCARINFORMATION)malloc(nSize*sizeof(TCARINFORMATION));lpCarStack-nTop=-1;lpCarStack-nStackSize=nSize;}8//车辆信息carinfo入栈lpCarStackvoidPush(LPTCARSTACK&lpCarStack,TCARINFORMATIONcarinfo){lpCarStack-nTop++;lpCarStack-lpCarInformation[lpCarStack-nTop]=carinfo;}//车辆信息从栈lpCarStack中弹出并存入carinfovoidPop(LPTCARSTACK&lpCarStack,TCARINFORMATION&carinfo){carinfo=lpCarStack-lpCarInformation[lpCarStack-nTop];lpCarStack-nTop--;}//若栈lpCarstack空,返回TRUE;否则,返回FALSEBOOLIsStackEmpty(LPTCARSTACKlpCarStack){returnlpCarStack-nTop==-1;}//若栈lpStackFull满,返回TRUE;否则,返回FALSEBOOLIsStackFull(LPTCARSTACKlpCarStack){returnlpCarStack-nTop==(lpCarStack-nStackSize-1);}9//销毁栈lpCarStack,将指针lpCarStack置为NULLvoidDestroyStack(LPTCARSTACK&lpCarStack){free(lpCarStack-lpCarInformation);free(lpCarStack);lpCarStack=NULL;}typedefstructcarnode//链队结点信息{TCARINFORMATIONcarinfo;//车辆信息structcarnode*lpNext;//指向下一个元素的指针}TCARNODE,*LPTCARNODE;typedefstructcarqueue//链队{LPTCARNODElpHead;//头结点LPTCARNODElpRear;//指向当前队尾的指针intnEffectiveSize;//当前队中元素个数}TCARQUEUE,*LPTCARQUEUE;//初始化链队lpCarQueuevoidInitQueue(LPTCARQUEUE&lpCarQueue){lpCarQueue=(LPTCARQUEUE)malloc(sizeof(TCARQUEUE));lpCarQueue-lpHead=(LPTCARNODE)malloc(sizeof(TCARNODE));10lpCarQueue-lpHead-lpNext=NULL;lpCarQueue-lpRear=lpCarQueue-lpHead;lpCarQueue-nEffectiveSize=0;}//车辆信息carinfo入队lpCarQueuevoidEnQueue(LPTCARQUEUE&lpCarQueue,TCARINFORMATIONcarinfo){LPTCARNODElpCarNode=(LPTCARNODE)malloc(sizeof(carnode));lpCarNode-carinfo=carinfo;lpCarNode-lpNext=NULL;lpCarQueue-lpRear-lpNext=lpCarNode;lpCarQueue-lpRear=lpCarQueue-lpRear-lpNext;lpCarQueue-nEffectiveSize++;}//队头元素从链队lpCarQueue中出队并存入carinfovoidDeQueue(LPTCARQUEUE&lpCarQueue,TCARINFORMATION&carinfo){LPTCARNODElpTemp=lpCarQueue-lpHead-lpNext;carinfo=lpTemp-carinfo;lpCarQueue-lpHead-lpNext=lpTemp-lpNext;free(lpTemp);lpCarQueue-nEffectiveSize--;}//若链队lpCarQueue为
本文标题:C语言停车场管理系统课程设计
链接地址:https://www.777doc.com/doc-6495997 .html