《C语言 停车场管理系统.docx》由会员分享,可在线阅读,更多相关《C语言 停车场管理系统.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言停车场管理系统附件二【学生用】西北农林科技大学信息工程学院数据构造实习报告题目:停车场管理系统学号2020013200姓名阮屹专业班级电子商务111指导老师戴涛、杨会君实践日期2021-7-6至2021-7-15目录一、综合训练目的与要求(1)二、综合训练任务(1)三、总体设计(1)四、具体设计讲明(1)五、调试与测试(7)六、实习日志(13)七、实习总结(13)八、附录:核心代码清单(14)一、综合训练目的与要求正文综合训练的目的本综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完(程序设计语言(C))、(数据构造)课程后进行的一次全面的综
2、合练习。本课综合训练的目的和任务:1.稳固和加深学生对C语言、数据构造课程的基本知识的理解和把握2.把握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.把握书写程序设计讲明文档的能力5.提高运用C语言、数据构造解决实际问题的能力综合训练要求1.分析综合训练题目的要求2.写出具体设计讲明3.编写程序代码,调试程序使其能正确运行4.设计完成的软件要便于操作和使用4.设计完成后提交课程设计报告二、综合训练任务通过此系统能够实现如下功能:若是车辆到达,则输入汽车在停车场内或便道上的停车位置以及进站时间,当车子出站时,则显示在停车场内停车时间,并;应当支付的金额要求:设计合理的存储构造
3、,设计界面,设计程序完成功能;三、总体设计该程序是模拟了一个特殊车站,车站是一条直线,只要一个入口,车子要出站则他前边的车子都要为其让路,然后再回来并且覆盖出站车子原来的位置,这明显是一个要用到栈的环境。而当车站满了之后,便在一旁的便道里排队等待,先排队的当然先进车站。这是原题,我做了些许改动,设计了会员系统,会员享受9折优惠并且有会员专用便道,在车站满的情况下优先进入车站。四、具体设计讲明整体设计如上,那么如今具体分析程序。这个程序每辆车实际在内存中保存了两次,一个是在主函数中的Carc的构造体数组中,一个在栈或队列中,而不是只用栈来储存,这样方便后来的车辆的查找和程序的管理,当然这样也相对
4、好编写程序,思路相对明晰。这也是我本身对数据构造不熟练的结果。程序中用到的构造体:时间的构造体:ypedefstructinthour;intmin;time;对于每辆车的构造体:typedefstructintnum;intposition;timet;floatmoney;Car;车站,也就是栈的构造体typedefstructCarelemSIZE+1;inttop;Stack;便道,也就是队列的构造体typedefstructNodeCardata;structNode*next;CQueueNode;这个构造体包含队列的首尾指针typedefstructCQueueNode*fron
5、t;CQueueNode*rear;LinkQueue;主函数的功能以及内容:主函数包括主要构造的内存的分配,子函数的调用,子函数分为两个部分,一个是对整个程序的初始化,包括密钥的设定,程序文字、背景颜色的设定。然后就是整个大程序的循环中按选择进行不同子函数调用。包括:菜单显示子函数,车子进站的子函数调用,车子出站的子函数调用,车辆搜索的子函数调用,整个车站车子显示的子函数调用,以及屏幕保护子函数的反复调用。每一次主函数大循环子函数之间与主函数之间的联络如下列图所示:断定输入的密钥能否和设定一致一致不一致主函数中再次大循环显示菜单,并进行选择1.车辆到达5.锁机并待机4.车辆搜索3.车辆显示2
6、.车辆离开6.直接退出整个程序下面是一辆车进站和出站的完好经过流程图:车辆显示则是通过循环将栈和队列中的内容全部显示出来,由于便道还有普通和会员之分,所以一共建立了3个子函数来显示3个储存构造。voidprint1(Stack*S)/显示站内车辆intmark,a=200;车辆到达车站和便道已建立好车场未满,车进车场车场已满,车进便道输入车子到达时间,车牌号会员便道能否是会员否有车出站,优先进站是普通便道会员便道为空,有车出站则进站车进入车场有车出站有车出站,会员便道空选择出站选项,并该车被选中输入离开车辆的离开时间,进行停车费用的计算非会员会员原价*1原价*0.9车子离开此车后面的车辆退出并
7、进入临时栈Carx;printf(停车场停车情况:n);if(EmptyorNot(S)printf(当前停车场没有任何车辆!);for(mark=S-top;S-top0;S-top-)if(GetTop(S,&x)printf(车牌号%d,所在位置%d,到达时间%d:%dn,x.num,x.position,x.t.hour,x.t.min);Sleep(a);S-top=mark;voidprint2(LinkQueue*Q)/显示普通便道车辆CQueueNode*p;inta=200;p=Q-front-next;for(;p!=NULL;p=p-next)printf(普通等待车牌号
8、%d,到达时间%d:%d,p-data.num,p-data.t.hour,p-data.t.min);Sleep(a);voidprint3(LinkQueue*Q)/显示会员便道车辆CQueueNode*p;inta=200;p=Q-front-next;for(;p!=NULL;p=p-next)printf(会员等待车牌号%d,到达时间%d:%d,p-data.num,p-data.t.hour,p-data.t.min);Sleep(a);车辆搜索则是用到了顺序查找,查找的关键字就是车牌号了,由于车牌号是乱的没有规律,所以只好采用这个查找方式了,下面是查找部分:case4:/搜索车辆
9、的位置printf(n请输入车牌号:);scanf(%d,for(j=0;jprintf(管);Sleep(120);printf(理);Sleep(120);printf(系);Sleep(120);printf(统);Sleep(120);printf(!);Sleep(120);printf(按);Sleep(120);printf(任);Sleep(120);printf(意);Sleep(120);printf(键);Sleep(120);printf(退);Sleep(120);printf(出);Sleep(120);printf(屏);Sleep(120);printf(保n);Sleep(500);看起来有点长,其实内容很简单的,这个是自动反复执行的那么我们怎么做到案件就中断呢?这样循环就能够了:while(!kbhit()pingbao();Sleep(f);Sleep是让程序暂停的效果,kbhit才是真正的作用!功能就是判定能否有按键,按键返回1。!kbhit就会返回0,就中断循环了。五、调试与测试由于是测试程序,所以我定义车站只要3个位置,包括站内外所有车位不能多于10个。下边就是程序进入时的密钥设定:
限制150内