车辆综合业务管理系统说明书.doc_第1页
车辆综合业务管理系统说明书.doc_第2页
车辆综合业务管理系统说明书.doc_第3页
车辆综合业务管理系统说明书.doc_第4页
车辆综合业务管理系统说明书.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0 * 实践教学实践教学 * 兰州理工大学兰州理工大学 计算机与通信学院 2011 年秋季学期 面面 向向 对对 象象 课程设计课程设计 题 目: 车辆综合业务管理系统 专业班级: 10 级计算机科学与技术四班 姓 名: 郭 绯 学 号: 10240404 指导教师: 张 其 文 成 绩: 1 目 录 摘 要 1 序 言2 一流程调查3 二函数的调用关系图 4 三.调试分析 5 1.调试过程中的主要问题.5 2.测试结果及主要操作6 四总 结10 五主要参考文献11 六致 谢12 附录13 源程序代码(带注释): 13 2 摘摘 要要 循环队列是一种环状的队列并且对头元素指向队尾元 素,车辆综合管理系统问题是典型的采用循环队列和栈解决 的问题,再综合与类和结构,实验表明该算法的空间复杂度 优于其他算法。该车辆综合管理系统就是采用的这种算法。 关键词: 车辆综合管理;空间复杂度;循环队列;栈 3 序序 言言 在人们的生活中,机动车辆是我们每天都离不开的交通工 具,因此,我们要想能更好的使用它们,充分的发挥它们的作 用,使其能更好的服务于社会,就应该有一个良好的车辆管理 系统。车辆综合业务管理系统的主要作用是对于一个中等规模 的、独立运营的车队实现车辆调度和车队综合业务的有效管理。 在对某车队的车辆调度、驾驶员管理、车辆管理以及业务管理 的深入调研后,力争开发出一个实用性较强的车辆综合业务管 理软件,基本上可以满足正常的车辆管理。 通过本软件的设计、开发,使学生初步得到软件工程的训 练,全面培养软件开发过程中的分析、设计、编码、测试及文 档规范书写的能力 4 一、一、 流程调查流程调查 机动车辆是我们每天都离不开的交通工具,因此,我们要 想能更好的使用它们,充分的发挥它们的作用,使其能更好的 服务于社会,就应该有一个良好的车辆管理系统。 车辆综合业务管理系统的主要作用是对于一个中等规模的、 独立运营的车队实现车辆调度和车队综合业务的有效管理。在 对某车队的车辆调度、驾驶员管理、车辆管理以及业务管理。 深入调研后,通过实践,本程序可以实现车队的车辆调度、 驾驶员管理、车辆管理及派出去的功能。 5 二函数的调用关系图二函数的调用关系图 主函数 用户界面 车辆回来车辆派出结束 ArrivalLeave车场 List PRINT 便道 List 主函数 结束 返回 Leave 返回 车辆查看驾驶员查看 驾驶员 6 三调试分析三调试分析 1. 调试过程中的主要问题 由于此停车场管理系统是分模块设计的,而且在程序的实现过 程中又使用了清屏函数,所以,运行时用户选择任务并且执行完任 务后,又会回到供用户选择功能的主界面,因此整个程序从整体上 来讲结构清晰,使用方便。本程序的调试运行,总体上情况良好, 但中间也出现了一些小问题。其中比较有代表性的主要问题有: 当车场已经达到最大容量,但仍有车辆进入停车场的时候,运 行界面上没有出现或者说出现了但又跳掉了“停车场已满,该车辆 需在便道上等待!”的提示信息。我们小组成员经过反复商量讨论, 并且在查阅了多种资料后,在那一个 cin 语句后加了一个 cin,此时, 程序运行结果就符合要求了。要将驾驶员信息存入文本后,必须和 读出的文本名称一致,否者讲初相乱码;设计更加合理,更加人性 化,更加方面用户使用,同时也提高了用户的操作效率。调试中遇 到的问题及对问题的解决方法 1.问题:字符和括号的输写错误 解决方法:把中文输入字母切换成英文输入 2.问题:括号的对应 解决方法:一个一个的补充括号和调整括号 7 2.调试程序 车辆管理界面; 1 有车辆回来,录入信息; 8 查看驾驶员界面; 派出任务的车辆; 4 9 车库满界面; 车库情况界面; 10 退出系统界面; 7 11 四总四总 结结 通过这两周的课程设计,加深了我对C+面向对象这门课程所学内容 的进一步的理解与掌握;同时,通过对车辆管理系统的开发,使得我将计算机 课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中,培养了 我开发一个中小型程序的能力。在这次对停车场管理系统的开发过程中,有过 程序功能成功实现时的欣喜,也有遇到问题、解决问题时的执着以及迷茫。在 这次课程设计中,使得我很好地了解了在开发程序过程中合作的重要性。 从课题的布置到完成课程设计,按时完成了相关任务。通过这次课程设计, 我学习到了很多算法与数据结构的知识,同时对本学期的课本所学知识有了进 一步巩固,特别是对栈和队列等的熟练运用。 这次课程设计之后,我发现,动手比看书更能获取实际有用的知识。很多 知识,在书本上看似很有道理,可是这些知识在与实际情况结合起来往往就会 出现书本上没有见过的情况,或者说之前的理解与实际的使用是截然不同的。 所以,真理是从实践中得知的,而且也只有实践才能检验真理。而这次课设也 加强了我们这些方面的理解能力,对书面上的东西实际操作在具体项目上有了 一个更加清晰的认识。我们还意识到一个大的程序,在写代码前,一定要有良 好的需求分析和结构设计,应该占整个程序设计的大部分时间,一个好的程序, 分析设计应该要非常充分,这样才不至于代码写了一半才发现很多错误。在具 体代码操作之前的设计规划与构建才是一个优秀的程序设计的灵魂。 设计过程中,我另一个大的体会就是要及时参考图书馆借来的书,通过教 程,大大的提高了工作的效率。同时我也发现自己的不足之处。对于很多自己 以为很熟悉的东西,在细节上的把握有许多不足:有些想当然,认为它应该是 这样,而忽略的事实。这也让我明白,做事细心是必须的,所谓细节决定成败! 程序还有好多不足,在今后的日子里,我会虚心向老师同学请教,尽自己 最大的努力做到最好。 12 五主要参考文献五主要参考文献 1C+面向对象 程序设计教程陈维兴、林小茶编著,清华大学 出本社。 2Jeraod V.Post.数据库管理系统(英文版.第三版)美清华大 学出版社,2006.1 3张海藩,李劲,谢兆阳.SQL Server2000 数据库设计与系统管理 M.北京:清华大学出版社,2000.9 13 六致六致 谢谢 首先感谢我的指导老师张其文老师在我的课程设计过程中提出 了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在 面对从书本到实际应用的鸿沟之时有了一座坚固的桥。 感谢我的数据结构老师张永老师和 C+语言老师刘嘉老师在以往 的基础课学习中为我打下良好的基础,这是我这次课程设计能够顺 利完成的前提。 我的同学在设计过程及完成后的测试中起到了相当重要的作用, 没有他们,我就不能发现后期测试过程出现的错误和漏洞,在此一 并表示感谢。 14 附录附录 源程序代码(带注释): #include #include #include #include #include /常量定义 #define MAX_STOP 6 /定义停车场最大停车数 #define MAX_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 struct /定义模拟停车场的栈结构 CAR STOPMAX_STOP; /汽车信息的存储空间 int top; /用来指示栈顶位置的静态指针 SeqStack; typedef struct node /定义模拟便道的队列结构 CAR WAIT; /汽车信息的存储空间 struct node *next; /用来指示队列位置的动态指针 QNode; /链队列节点的类型 typedef struct/定义链队列的收尾指针 15 QNode *front,*rear; LQueue; /将头尾指针封装在一起的链队 int write();/函数声明 int read(); int Empty_LQueue(LQueue *q); /判队空 /检查离开的车是否在停车场中 int LeaveCheck(SeqStack parking , char *license_plate); int QueueLength(LQueue *q); /判队长度 int Out_LQueue(LQueue * /出队操作 int StackEmpty(SeqStack parking); /判断栈是否为空 int StackFull(SeqStack parking); /判断栈是否为满 int StackPop(SeqStack /出栈操作 int StackTop(SeqStack parking , char *license_plate , int /取栈顶元素 void Car_come(SeqStack /有车到来时的操作 void Car_leave(SeqStack /有车离开的操作 void Display(SeqStack parking); /显示停车场内的所有信息 调试时用 void InitStack(SeqStack /初始化栈 void InitList(LQueue * /初始化队列 void In_LQueue(LQueue * /进队操作 void Input_Check(char *license_plate); /检验输入的车牌是否合法 void StackPush(SeqStack /进栈操作 void main() SeqStack parking; /定义变量 LQueue *sidewalk = NULL; char *choice = new char; int flag = 1; /定义一个变量 判断是否退出 InitStack(parking);/初始化一个为空的停车场 InitList(sidewalk);/初始化一个为空的便道 while(flag)/运行界面及功能选择 16 coutfront=sidewalk-rear = NULL; void In_LQueue(LQueue * car_on_sidewalk = (QNode *)malloc(sizeof(QNode); /为新节点开辟新空间 strcpy(car_on_sidewalk-WAIT.license_plate , license_plate); /将数据写入节点 car_on_sidewalk-WAIT.state = s; /写入停车信息 car_on_sidewalk-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)/判队空 if(q-front = NULL) return 1; else return 0; int QueueLength(LQueue *q)/判队长度 返回队长 QNode *p=q-front; int i=0; while(p != NULL) 23 i+; p=p-next; return i; int Out_LQueue(LQueue * if(Empty_LQueue(sidewalk) /如果队空返回 0 return 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)/检查离开的车是否在停车场中 返回车在停 车场中位置 不在则返回 0 int flag = parking.top+1; /定义变量记录当前车在停车场中位置 if(StackEmpty(parki

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论