版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学* 兰州理工大学计算机与通信学院2011年秋季学期 面 向 对 象 课程设计题 目: 车辆综合业务管理系统专业班级: 10级计算机科学与技术四班 姓 名: 郭 绯 学 号: 10240404 指导教师:张 其 文 成 绩:目 录摘 要1序 言2一流程调查3二函数的调用关系图4三.调试分析51.调试过程中的主要问题.5 2.测试结果及主要操作6四总 结10五主要参考文献11六致 谢12附录13源程序代码(带注释):13摘 要循环队列是一种环状的队列并且对头元素指向队尾元素,车辆综合管理系统问题是典型的采用循环队列和栈解决的问题,再综合与类和结构,实验表明该算法的空间复杂度优于其他算法。
2、该车辆综合管理系统就是采用的这种算法。关键词:车辆综合管理;空间复杂度;循环队列;栈序 言在人们的生活中,机动车辆是我们每天都离不开的交通工具,因此,我们要想能更好的使用它们,充分的发挥它们的作用,使其能更好的服务于社会,就应该有一个良好的车辆管理系统。车辆综合业务管理系统的主要作用是对于一个中等规模的、独立运营的车队实现车辆调度和车队综合业务的有效管理。在对某车队的车辆调度、驾驶员管理、车辆管理以及业务管理的深入调研后,力争开发出一个实用性较强的车辆综合业务管理软件,基本上可以满足正常的车辆管理。通过本软件的设计、开发,使学生初步得到软件工程的训练,全面培养软件开发过程中的分析、设计、编码、
3、测试及文档规范书写的能力一、流程调查机动车辆是我们每天都离不开的交通工具,因此,我们要想能更好的使用它们,充分的发挥它们的作用,使其能更好的服务于社会,就应该有一个良好的车辆管理系统。车辆综合业务管理系统的主要作用是对于一个中等规模的、独立运营的车队实现车辆调度和车队综合业务的有效管理。在对某车队的车辆调度、驾驶员管理、车辆管理以及业务管理。深入调研后,通过实践,本程序可以实现车队的车辆调度、驾驶员管理、车辆管理及派出去的功能。二函数的调用关系图主函数用户界面结束驾驶员查看车辆查看车辆派出车辆回来驾驶员Leave车场ListLeaveArrival便道ListPRINT返回返回主函数结束三调试
4、分析1. 调试过程中的主要问题由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清屏函数,所以,运行时用户选择任务并且执行完任务后,又会回到供用户选择功能的主界面,因此整个程序从整体上来讲结构清晰,使用方便。本程序的调试运行,总体上情况良好,但中间也出现了一些小问题。其中比较有代表性的主要问题有:当车场已经达到最大容量,但仍有车辆进入停车场的时候,运行界面上没有出现或者说出现了但又跳掉了“停车场已满,该车辆需在便道上等待!”的提示信息。我们小组成员经过反复商量讨论,并且在查阅了多种资料后,在那一个cin语句后加了一个cin,此时,程序运行结果就符合要求了。要将驾驶员信息存入文本
5、后,必须和读出的文本名称一致,否者讲初相乱码;设计更加合理,更加人性化,更加方面用户使用,同时也提高了用户的操作效率。调试中遇到的问题及对问题的解决方法1.问题:字符和括号的输写错误解决方法:把中文输入字母切换成英文输入2.问题:括号的对应解决方法:一个一个的补充括号和调整括号2.调试程序车辆管理界面;有车辆回来,录入信息;查看驾驶员界面; 派出任务的车辆;车库满界面;车库情况界面;退出系统界面;四总 结通过这两周的课程设计,加深了我对C+面向对象这门课程所学内容的进一步的理解与掌握;同时,通过对车辆管理系统的开发,使得我将计算机课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中,培
6、养了我开发一个中小型程序的能力。在这次对停车场管理系统的开发过程中,有过程序功能成功实现时的欣喜,也有遇到问题、解决问题时的执着以及迷茫。在这次课程设计中,使得我很好地了解了在开发程序过程中合作的重要性。从课题的布置到完成课程设计,按时完成了相关任务。通过这次课程设计,我学习到了很多算法与数据结构的知识,同时对本学期的课本所学知识有了进一步巩固,特别是对栈和队列等的熟练运用。这次课程设计之后,我发现,动手比看书更能获取实际有用的知识。很多知识,在书本上看似很有道理,可是这些知识在与实际情况结合起来往往就会出现书本上没有见过的情况,或者说之前的理解与实际的使用是截然不同的。所以,真理是从实践中得
7、知的,而且也只有实践才能检验真理。而这次课设也加强了我们这些方面的理解能力,对书面上的东西实际操作在具体项目上有了一个更加清晰的认识。我们还意识到一个大的程序,在写代码前,一定要有良好的需求分析和结构设计,应该占整个程序设计的大部分时间,一个好的程序,分析设计应该要非常充分,这样才不至于代码写了一半才发现很多错误。在具体代码操作之前的设计规划与构建才是一个优秀的程序设计的灵魂。设计过程中,我另一个大的体会就是要及时参考图书馆借来的书,通过教程,大大的提高了工作的效率。同时我也发现自己的不足之处。对于很多自己以为很熟悉的东西,在细节上的把握有许多不足:有些想当然,认为它应该是这样,而忽略的事实。
8、这也让我明白,做事细心是必须的,所谓细节决定成败!程序还有好多不足,在今后的日子里,我会虚心向老师同学请教,尽自己最大的努力做到最好。五主要参考文献1C+面向对象 程序设计教程陈维兴、林小茶编著,清华大学出本社。2Jeraod V.Post.数据库管理系统(英文版.第三版)美清华大学出版社,2006.13张海藩,李劲,谢兆阳.SQL Server2000数据库设计与系统管理M.北京:清华大学出版社,2000.9六致谢首先感谢我的指导老师张其文老师在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在面对从书本到实际应用的鸿沟之时有了一座坚固的桥。感谢我的数据结构老师
9、张永老师和C+语言老师刘嘉老师在以往的基础课学习中为我打下良好的基础,这是我这次课程设计能够顺利完成的前提。我的同学在设计过程及完成后的测试中起到了相当重要的作用,没有他们,我就不能发现后期测试过程出现的错误和漏洞,在此一并表示感谢。附录源程序代码(带注释):#include <iostream>#include <malloc.h>#include <string>#include <fstream>#include <windows.h>/常量定义#define MAX_STOP 6 /定义停车场最大停车数#define MAX_
10、PLATE 10 /定义车牌号最大长度#define TIME_COUNT "秒" /定义时间单位#define TIME_MS_TO_CONUT 1000 /定义时间进制using namespace std; /使用std命名空间typedef struct /数据结构定义,定义存储汽车信息的结构体 char license_plateMAX_PLATE; /汽车牌照号码,定义为一个字符指针类型 char state; /汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上 int time; /汽车停入停车场时的时间,用来计时收费CAR;typedef st
11、ruct /定义模拟停车场的栈结构 CAR STOPMAX_STOP; /汽车信息的存储空间 int top; /用来指示栈顶位置的静态指针SeqStack;typedef struct node /定义模拟便道的队列结构 CAR WAIT; /汽车信息的存储空间 struct node *next; /用来指示队列位置的动态指针QNode; /链队列节点的类型typedef struct/定义链队列的收尾指针 QNode *front,*rear;LQueue; /将头尾指针封装在一起的链队int write();/函数声明int read(); int Empty_LQueue(LQueu
12、e *q); /判队空/检查离开的车是否在停车场中int LeaveCheck(SeqStack parking , char *license_plate); int QueueLength(LQueue *q); /判队长度int Out_LQueue(LQueue *&sidewalk , char *license_plate); /出队操作int StackEmpty(SeqStack parking); /判断栈是否为空int StackFull(SeqStack parking); /判断栈是否为满int StackPop(SeqStack &parking);
13、/出栈操作int StackTop(SeqStack parking , char *license_plate , int &time);/取栈顶元素void Car_come(SeqStack &parking , LQueue *&sidewalk); /有车到来时的操作void Car_leave(SeqStack &parking , LQueue *&sidewalk); /有车离开的操作void Display(SeqStack parking); /显示停车场内的所有信息 调试时用void InitStack(SeqStack &
14、parking); /初始化栈void InitList(LQueue *&sidewalk); /初始化队列void In_LQueue(LQueue *&sidewalk , char *license_plate); /进队操作void Input_Check(char *license_plate); /检验输入的车牌是否合法void StackPush(SeqStack &parking , char *license_plate , int stop_time);/进栈操作void main() SeqStack parking; /定义变量 LQueue
15、*sidewalk = NULL; char *choice = new char; int flag = 1; /定义一个变量 判断是否退出 InitStack(parking);/初始化一个为空的停车场 InitList(sidewalk);/初始化一个为空的便道 while(flag)/运行界面及功能选择 cout<<"nt 欢迎使用车辆管理系统 nn" cout<<"tnn" cout<<"t 有车回来时请按 C 键。 nn" cout<<"t 查看驾驶员请按 K 键。
16、 nn" cout<<"t 要派出车辆请按 l 键。 nn" cout<<"t 查看停车场请按 D 键。 nn" cout<<"t 要退出系统请按 Q 键。 nn" cout<<"tnn" cout<<"请选择操作:" gets(choice); if(1 != strlen(choice) cout<<"请正确输入选项!" continue; else switch(*choice) case
17、 'c': case 'C': Car_come(parking,sidewalk);break; case 'l': case 'L': Car_leave(parking,sidewalk);break; case 'q': case 'Q': flag=0;break; case 'd': case 'D': Display(parking);break; case 'k': case 'K': read();break; def
18、ault: cout<<"选择不正确!请重新选择!n" /有车到来时的操作void Car_come(SeqStack &parking , LQueue *&sidewalk) /定义变量 char license_plateMAX_PLATE; cout<<"请输入车辆的车牌号码:" Input_Check(license_plate); write(); /判断停车场是否已满,满则进入便道,不满进入停车场 if(StackFull(parking) In_LQueue(sidewalk , license_p
19、late); /进入便道 cout<<"停车场已满请在便道等候,您的位置为"<<QueueLength(sidewalk) <<endl; else StackPush(parking , license_plate , GetTickCount(); /进入停车场 cout<<"请进入停车场中的"<<parking.top+1<<"号停车位n" void Car_leave(SeqStack &parking , LQueue *&sidewal
20、k)/有车离开时的操作 SeqStack tmpparking; /定义临时停车场 /定义变量 char leave_license_plateMAX_PLATE; /要离开的车牌号 char license_plateMAX_PLATE; /存放从停车场中读出来的车牌信息 int time; InitStack(tmpparking); /初始化临时停车场 if(StackEmpty(parking)/判断停车场中是否有车 cout<<"当前停车场中没有车n" return; /退出子函数 cout<<"请输入要离开的车牌照:"
21、 Input_Check(leave_license_plate); cout<<"当前停车场中有"<<parking.top+1<<"辆车n" if(LeaveCheck(parking , leave_license_plate) /判断车是否在停车场中 cout<<"您的车在"<<LeaveCheck(parking , leave_license_plate)<<"号车位上n" /车在停车场中 while(StackTop(parkin
22、g , license_plate , time) && (strcmp(parking.STOPparking.top.license_plate , leave_license_plate) != 0) strcpy(parking.STOPparking.top.license_plate , license_plate); cout<<"牌照为"<<license_plate<<"的车暂时退出停车场"<<parking.top+1<<"号位n" Sta
23、ckPush(tmpparking , license_plate , time); /停车场中的车暂时退出 进入临时停车场 StackPop(parking); /出栈 cout<<"牌照为"<<license_plate<<"的车离开停车场"<<parking.top+1<<"号位n" cout<<"您在停车场中停了"<<(GetTickCount()-time)/TIME_MS_TO_CONUT<<TIME_COU
24、NT <<endl<<endl; /输出所停时间信息 StackPop(parking); /出栈 while(StackEmpty(tmpparking) != 1)/将临时停车场中的车停回停车场 StackTop(tmpparking , license_plate , time); StackPush(parking , license_plate , time); cout<<"牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<
25、<"号位n" license_plate0 = '0' StackPop(tmpparking); if(parking.top+1 = MAX_STOP-1) /判断车离开前停车场是否停满 if(QueueLength(sidewalk) /如果停满则判断便道上是否有车 Out_LQueue(sidewalk , license_plate); /便道中有车 则从便道中停入停车场 /出队 StackPush(parking , license_plate , GetTickCount(); /入栈 cout<<"在便道中牌照为&
26、quot;<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位n" else cout<<"您的车不在停车场中!n" /车不在停车场中void InitStack(SeqStack &parking)/初始化顺序栈 parking.top = -1;int StackEmpty(SeqStack parking)/判栈空 if(parking.top = -1) return 1; else return 0;int Stack
27、Full(SeqStack parking)/判栈满 if(parking.top = MAX_STOP-1) return 1; else return 0;void StackPush(SeqStack &parking , char *license_plate , int stop_time)/入栈 parking.top+; strcpy(parking.STOPparking.top.license_plate , license_plate); parking.STOPparking.top.state = 'p' parking.STOPparking.
28、top.time = stop_time;int StackPop(SeqStack &parking)/出栈 返回栈顶指针 if(StackEmpty(parking) return 0; else return parking.top-;int StackTop(SeqStack parking , char *license_plate , int &time)/取栈顶元素 if(StackEmpty(parking) return 0; else strcpy(license_plate , parking.STOPparking.top.license_plate);
29、 time = parking.STOPparking.top.time; return 1; void Display(SeqStack parking)/显示所有 if(parking.top = -1) printf("停车场为空n"); else while(parking.top != -1) cout<<"车牌号为:"<<parking.STOPparking.top.license_plate; cout<<endl; read(); / cout<<",停在"<&l
30、t;parking.top + 1 <<"号车位上" cout<<",已停"<<(GetTickCount()-parking.STOPparking.top.time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl; parking.top-; void InitList(LQueue *&sidewalk)/初始化队列 sidewalk = (LQueue *)malloc(sizeof(LQueue); sidewalk->front=sidewalk
31、->rear = NULL;void In_LQueue(LQueue *&sidewalk,char *license_plate)/入队 QNode *car_on_sidewalk; car_on_sidewalk = (QNode *)malloc(sizeof(QNode); /为新节点开辟新空间 strcpy(car_on_sidewalk->WAIT.license_plate , license_plate); /将数据写入节点 car_on_sidewalk->WAIT.state = 's' /写入停车信息 car_on_sidew
32、alk->WAIT.time = GetTickCount(); /写入停车时间 car_on_sidewalk->next = NULL; if(Empty_LQueue(sidewalk) /队空则创建第一个节点 sidewalk->front = sidewalk->rear = car_on_sidewalk; else sidewalk->rear->next = car_on_sidewalk; /队非空插入队尾 sidewalk->rear = car_on_sidewalk; int Empty_LQueue(LQueue *q)/判队
33、空 if(q->front = NULL) return 1; else return 0;int QueueLength(LQueue *q)/判队长度 返回队长 QNode *p=q->front; int i=0; while(p != NULL) i+; p=p->next; return i; int Out_LQueue(LQueue *&sidewalk,char *license_plate)/出队 成功返回1 队空返回0 QNode *car_on_sidewalk; if(Empty_LQueue(sidewalk) /如果队空返回0 return
34、 0; car_on_sidewalk = sidewalk->front; strcpy(license_plate , car_on_sidewalk->WAIT.license_plate);/取出队头元素 if(sidewalk->front = sidewalk->rear) /队中只有一个元素 sidewalk->front = sidewalk->rear=NULL; /删除元素 else sidewalk->front = sidewalk->front->next; /队头指针后移 free(car_on_sidewalk); /释放指针 return 1; int LeaveCheck(SeqStack parking,char *license_plate)/检查离开的车是否在停车场中 返回车在停车场中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景德镇艺术职业大学《配合物化学》2023-2024学年第一学期期末试卷
- 辽宁大学《嵌入式技术》2023-2024学年第一学期期末试卷
- 江苏海事职业技术学院《口腔科学》2023-2024学年第一学期期末试卷
- 黑龙江工程学院昆仑旅游学院《建筑施工组织》2023-2024学年第一学期期末试卷
- 重庆三峡职业学院《食品仪器分析原子吸收测定水中钙(标准曲线法)》2023-2024学年第一学期期末试卷
- 浙江越秀外国语学院《漆画表现灰料新语言》2023-2024学年第一学期期末试卷
- 浙江海洋大学《GIS气象应用与开发》2023-2024学年第一学期期末试卷
- 中国计量大学《生物信息学入门(双语)》2023-2024学年第一学期期末试卷
- 中央财经大学《工程建筑制图》2023-2024学年第一学期期末试卷
- 小学德育工作的管理制度
- 新人教版九年级化学第三单元复习课件
- 北师大版四年级数学上册口算天天练题卡2
- 滑模施工计算书及相关图纸
- DB11T 2279-2024 社会单位消防安全评估规范
- 《电力电缆试验》课件
- JJF 2122-2024 机动车测速仪现场测速标准装置校准规范
- 充电桩四方协议书范本
- 2024年南京铁道职业技术学院单招职业技能测试题库及答案解析
- 2023年信息处理技术员教程
- 稽核管理培训
- 电梯曳引机生锈处理方案
评论
0/150
提交评论