ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:120.58KB ,
资源ID:11816845      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11816845.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(停车场管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

停车场管理系统.docx

1、停车场管理系统 课 程 设 计 报 告课程设计名称:数据结构课程设计 系 别 : 学 生 姓 名 : 班 级 : 学 号 : 成 绩 : 指 导 教 师 : 开 课 时 间 :2013-2014学年第一学期设计题目一:停车场管理系统一、 实习目的 通过学习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、编码集成以及调试分析,熟练掌握数据结构的选择、设计、实现、以及操作方法,为进一步的开发应用打好基础。二、 问题描述实现功能:车辆进入,车辆离开,计费,统计停车场的车辆,统计候车场中的车辆,查询车辆,统计今日车流量。三、 需求分析 该程序所做的工作是对停车场车辆的管理,为人们

2、进行车辆的计费、查询提供方便。此程序规定: 1.在车辆进入停车场时,需要输入以数字组成的车号; 2.输入错误的指令时会弹出警告窗口,按确定可以继续进行操作;3.程序的功能主要包括:车辆进入,车辆离开,计费,统计停车场的车辆,查询车辆,统计候车场中的车辆,统计今日车流量。四、 概要设计系统用到的数据有:#define N 4 /停车场最多停放的停车数#define M 3 /后车场最多停放的停车数#define Price 2 /每分钟停车费用用到的主要函数:void InitStack(SqStack *&s); /初始化一个停车场bool StackEmpty(SqStack *s); /

3、判断停车场是否有车bool StackFull(SqStack *s); /判断停车场是否满了bool Push(SqStack *&s,int e1,int e2); /车辆进入停车场bool Pop(SqStack *&s,int &e1,int &e2); /车辆离开停车场void DispStack(SqStack *s); /显示停车场中的车辆void InitQueue(SqQueue *&q); /初始化一个候车场bool QueueEmpty(SqQueue *q); /判断候车场是否有车bool QueueFull(SqQueue *q); /判断候车场是否为满bool en

4、Queue(SqQueue *&q,int e); /进入候车场bool deQueue(SqQueue *&q,int &e ); /离开停车场void DispQueue(SqQueue *q); /显示候车场中的车辆int SumQueue(SqQueue *q); /总计今日停车数量int Caidan(SqQueue *q); /菜单函数五、 详细设计(要有注释)#includedecl.hvoid InitStack(SqStack *&s) /初始化一个停车场 s=(SqStack *)malloc(sizeof(SqStack); s-top=-1;bool StackEmpt

5、y(SqStack *s) / 判断停车场是否有车 return (s-top=-1);bool StackFull(SqStack *s) /判断停车场是否满状态 return (s-top=N-1);bool Push(SqStack *&s,int e1,int e2) /进入停车场 if(s-top=N-1) return false; s-top+; s-CarNos-top=e1; s-CarTimes-top=e2; return true;bool Pop(SqStack *&s,int &e1,int &e2) /离开停车场 if(s-top=-1) return false

6、; e1=s-CarNos-top; e2=s-CarTimes-top; s-top-; return true;void DispStack(SqStack *s) /显示停车场中的车辆 int i; for(i=s-top;i=0;i-) printf(%d ,s-CarNoi); printf(n);void InitQueue(SqQueue *&q) /初始化一个候车场 q=(SqQueue *)malloc(sizeof(SqQueue); q-front=q-rear=0;bool QueueEmpty(SqQueue *q) /判断候车场是否有车 return (q-fron

7、t=q-rear);bool QueueFull(SqQueue *q) /判断候车场是否满了 return (q-rear+1)%(M)=q-front);bool enQueue(SqQueue *&q,int e) /进入候车场 if(q-rear+1)%(M)=q-front) return false; q-rear=(q-rear+1)%(M); q-CarNoq-rear=e; return true;bool deQueue(SqQueue *&q,int &e ) /离开候车场 if(q-front=q-rear) return false; q-front=(q-front

8、+1)%(M); e=q-CarNoq-front; return true;void DispQueue(SqQueue *q) /显示候车场中的车辆 int i; i=(q-front+1)%(M); printf( %d,q-CarNoi); while(q-rear-i+M)%(M)0) i=(i+1)%(M); printf( %d,q-CarNoi); printf(n);int SumQueue(SqQueue *q) /总计今日停车数量 return(q-num);int Caidan(SqQueue *q) system(color f0); /DOS指令,将背景改为白色,字

9、的颜色改为黑色 system(title 停车场管理系统); /DOS指令,把标题栏改成停车场管理系统 MessageBox(NULL, 按确定开始使用, 本停车场收费标准每分钟2元,欢迎使用, MB_OK); /弹出标题为欢迎使用本停车场管理系统的窗口,提示开始操作 int comm; int Carwei=0; int no,e1,ti,e2; int i,j; SqStack *St,*St1; SqQueue *Qu; InitStack(St); InitStack(St1); InitQueue(Qu); Qu-num=0; printf(t*欢迎使用停车场管理系统*nnn); p

10、rintf(tttt小组组长: nn); printf(ttt小组成员: nnn); printf(t1:车辆到达nt2:车辆离开nt3:显示停车场中的车辆nt4:显示后车场中的候车场nt5: 查询车辆nt6: 显示今日车流量nt0:退出系统:n); printf(请输入指令:); do scanf(%d,&comm); if(comm=1) Qu-num+; switch(comm) case 1: /汽车到达 printf( 车号:); scanf(%d,&no); for(i=0;itop&St-CarNoi!=no;i+); if(St-CarNoi=no) printf(该车牌号已存

11、在!请重新输入:n); printf(请输入指令:); else if(!StackFull(St) /停车场不满 time_t rawtime; /定义一个时间变量 struct tm *timeinfo; /定义时间指针 time(&rawtime); /获取时间,以秒计,从1970年1月一日起算,存于rawtime timeinfo = localtime ( &rawtime ); /转为当地时间,tm 时间结构 printf ( 进入本停车站时间为:%4d-%02d-%02d %02d:%02d:%02dn,1900+timeinfo-tm_year, 1+timeinfo-tm_m

12、on,timeinfo-tm_mday,timeinfo-tm_hour,timeinfo-tm_min,timeinfo-tm_sec); ti=timeinfo-tm_hour*60+timeinfo-tm_min; /记入进来时间 Push(St,no,ti); /将信息压入栈中的 printf( 停车场车位号:%dn,St-top+1); Carwei=St-top; printf(请输入指令:); else /停车场满 if(!QueueFull(Qu) /候车场不满 time_t rawtime; /定义一个时间变量 struct tm *timeinfo; /定义时间指针 tim

13、e(&rawtime); /获取时间,以秒计,从1970年1月一日起算,存于rawtime timeinfo = localtime ( &rawtime ); /转为当地时间,tm 时间结构 printf ( 进入本停车站时间为:%4d-%02d-%02d %02d:%02d:%02dn,1900+timeinfo-tm_year, 1+timeinfo-tm_mon,timeinfo-tm_mday,timeinfo-tm_hour,timeinfo-tm_min,timeinfo-tm_sec); ti=timeinfo-tm_hour*60+timeinfo-tm_min; /记入进入

14、时间 enQueue(Qu,no); /停车场满了之后,进入候车场 printf( 候车场车位号:%dn,Qu-rear); else printf( 候车场已满,不能停车n); printf(请输入指令:); break; case 2: /汽车离开 printf( 车号:); scanf(%d,&no); for(i=0;itop&St-CarNoi!=no;i+); if(itop) time_t rawtimes; /定义一个时间变量 struct tm *timeinfoo; /定义时间指针 time(&rawtimes); /获取时间,以秒计,从1970年1月一日起算,存于rawt

15、ime timeinfoo = localtime ( &rawtimes ); /转为当地时间,tm 时间结构 printf ( 离开本停车场的时间为:%4d-%02d-%02d %02d:%02d:%02dn,1900+timeinfoo-tm_year, 1+timeinfoo-tm_mon,timeinfoo-tm_mday,timeinfoo-tm_hour,timeinfoo-tm_min,timeinfoo-tm_sec); ti=timeinfoo-tm_hour*60+timeinfoo-tm_min; /记录离开时间 for(i=0;itop&St-CarNoi!=no;i

16、+); if(iSt-top) printf( 未找到该编号的汽车n); printf(t请输入指令:); else for(j=i+1;jtop;) Pop(St,e1,e2); Push(St1,e1,e2); /倒车到临时栈St1中 Pop(St,e1,e2); /该汽车离开 printf( 车号为%d汽车停车时间:%dn,no,ti-e2); printf( 车号为%d汽车停车费用:%dn,no,(ti-e2)*Price); char str10 = 0; int a =(ti-e2)*Price; sprintf(str, 请付%d块钱, a); /格式化停车费用,以便放入Mess

17、ageBox MessageBox(NULL,str, 账单, MB_OK); /弹出一个窗口指示收费 printf(请输入指令:); while(!StackEmpty(St1)/将临时栈St1重新回到St中 Pop(St1,e1,e2); Push(St,e1,e2); if(!QueueEmpty(Qu) /队不空时,将队头进栈St deQueue(Qu,e1); Push(St,e1,ti); /以当前时间开始计费 break; case 3: /显示停车场情况 if(!StackEmpty(St) printf( 停车场中的车辆:);/输出停车场中的车辆 DispStack(St);

18、 else printf( 停车场中无车辆n); printf(请输入指令:); break; case 4: /显示候车场情况 if(!QueueEmpty(Qu) printf( 候车场中的车辆:);/输出候车场中的车辆 DispQueue(Qu); else printf( 候车场中无车辆n); printf(请输入指令:); break; case 5: /按车牌号查询 printf(输入您所需要查找的车牌号:); scanf(%d,&no); for(i=0;itop&St-CarNoi!=no;i+); if(itop) printf(车牌号为%d的车位号:%dn,no,i+1);

19、 else if(Qu-frontrear) for(j=Qu-front;j=Qu-front&jrear&Qu-CarNoj!=no;j+); if(jrear&jQu-front) printf(车牌号为%d在候车场,其位置为:%d,no,j); else for(j=0;(j=Qu-front|jrear)&Qu-CarNoj!=no;j+); if(j=Qu-front|jrear) printf(车牌号为%d在候车场,其位置为:%d,no,j); else printf(没有该辆车!n); printf(请输入指令:); break; case 6: printf(今日车流量为:%

20、dn,Qu-num); printf(请输入指令:); break; case 0: /结束 if(!StackEmpty(St) printf( 停车场中的车辆:);/输出停车场中的车辆 DispStack(St); if(!QueueEmpty(Qu) printf( 候车场中的车辆:);/输出候车场中的车辆 DispQueue(Qu); printf(nnn); printf(t*谢谢使用!*nn); break; default: /其他情况 MessageBox(NULL, 输入指令错误!, NULL, MB_OK); /弹出窗口,警告输入错误 printf(请输入指令:); bre

21、ak; while(comm!=0); return 0;六、 测试分析七、 使用说明 首先运行程序,包括六个选项,0.退出系统. 1.车辆到达 2.车辆离开. 3.显示停车场中的车辆4.显示候车场中的车辆 5.查询车辆6.显示今日车流量 然后可以根据不同的需要选择不同的选项进行操作 最后退出程序。八、 运行程序过程中产生的问题及采取的措施 在这次编程中,我们组遇到最大的问题就是时间这个变量,虽然在网上查找到了怎样运用系统时间的代码,但是始终都是记录的第一辆车的时间,车子离开后,也是记录的车子进来的时间,后来翻阅了很多书和在网上查了很多原因,后来突发奇想在队的内部加一个变量,用来记入车流量,还

22、有在头文件出加一个time.h;在考虑到人性化和操作环境的美观性,是我考虑的,在网上找到了代码,可是始终行不通,后来看书才知道要加windows.h头文件;还有一个问题就是候车场车辆的查询问题,主要还是对循环队列的运用问题。九、 总结和展望(400字以上)一个星期多的课程设计结束了,这次我们是以小组为单位,共同完成一个程序,很多人认为我们这样的编程的安排很不好,会参杂着很多抄袭,但是我认为,这样更有利于我们互相取长补短,更好的把自己一学期所学的东西运用到上面。这次编程分工明确,有效率的完成了程序,并花了大量时间去美化程序,大家互相讨论,指出可以通过修改能够更好的使程序运行后变得很醒目。在修改的

23、时候,大家虽然想法很好,但是动手操作起来都不是很娴熟,要去翻翻书,这可能就是温故而知新吧。大家通知次课程设计也很好的掌握了以前的知识。在答辩过程中,老师表扬我们程序有很多值得大家去学习的东西,我们感到很高兴,我们通过自己的努力能够获得老师的肯定觉得很开心。其实在社会现实中,很多好的编程都是通过很多人在一起商讨研究出来的,只要大家心往一处想,力往一处使,没有完不成的。其实,在这次编程中最让我体会很深的是,我们在遇到难题时,大家没有把这个问题留给一个人去想,而是大家一起去讨论,一起去查阅书籍,一起去解决,这是团结的力量,让我们的程序得以很好的展示给大家。通过这次课程设计,我对自己以后的编程生涯有了更好的展望,我觉得编一个很大的代码不是很困难的,只要你用心去编,渴望把它编好,带着一份学习的心去编写,这样会很好的去便边学边完成,这样受益匪浅.,还有最大的就是耐心,耐心能让我们把事做的更好。希望我的耐心能使我以后的学习更加好。十、参考文献1 李建学等著.数据结构课程设计案例精编.清华大学出版社,20072 唐宁九等主编.数据结构与算法(C+版)实验和课程设计教程. 清华大学出版社,2008

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1