《数据结构课程设计》 停车场管理系统

上传人:仙*** 文档编号:27944329 上传时间:2021-08-21 格式:DOC 页数:22 大小:687.04KB
返回 下载 相关 举报
《数据结构课程设计》 停车场管理系统_第1页
第1页 / 共22页
《数据结构课程设计》 停车场管理系统_第2页
第2页 / 共22页
《数据结构课程设计》 停车场管理系统_第3页
第3页 / 共22页
点击查看更多>>
资源描述
课 程 设 计 报 告 课程名称 数据结构课程设计 课题名称 停车场管理系统 专 业 信息管理与信息系统 班 级 信管 0901 学 号 200903110122 姓 名 指导教师 2011 年 1 月 09 日 2 湖南工程学院 课 程 设 计 任 务 书 课程名称 数据结构 课 题 停车场管理管理系统 专业班级 信 管 0901 学生姓名 学 号 200903110202 指导老师 审 批 任务书下达日期 2010 年 1 月 09 日 任 务 完 成 日 期 2011 年 1 月 20 日 3 一 、 设 计 内 容 与 设 计 要 求 1设计内容: 问题描述设停车场只有一个可停放几辆汽车的狭长通道,且只 有一个大门可供汽车进出,汽车在停车场内按车辆的先后顺序依次排列, 若车站内已停满汽车,则后来的汽车只能在门外的通道上等停,一旦停车 场内有车开走,则排在通道上的第一辆车即可进入;当停车场内某辆车要 离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车站 为它让路,待该车辆开出大门,为它让路的车辆再按原来次序进入车场。 在这里假设汽车不能从便道上开走,试设计这样一个停车场模拟管理程序。 基本功能 (1) 车辆成批入站。 当一个停车场刚开始投入运行的时候,会有很多车进来,因此,要 设计一个函数来实现车辆批量进站。并要检测车辆的数目是否超过规定的 最大容量,给出相关提示信息。 (2)单个车辆入站。 当系统正常投入运行后,会有零散的车辆进进出出,因此,设计一 个函数实现单个车辆入站。 (3)车站内信息实时显示。 车站内信息包括两个 部分:停车场内停放的车辆以及在外面通道上等停的车辆。 (4)车辆出站。 当停车场内车辆出站后,检查通道上是否有车等停,如果有,则要 把排在最前面的车调入停车场内。 2设计要求: 1) 设计正确,方案合理。 2) 界面友好,使用方便。 3) 程序精炼,结构清晰。 4) 设计报告 5000 字以上,含程序设计说明、系统的功能框图、流程图、 4 源程序清单等。 5) 实际操作过程中遇到的问题及解决方法:设计总结及心得体会。 6) 上机演示。 二、进 度 安 排 第 19 周 星期一 8 时:00 分11 时:30 分 星期二 8 时:00 分11 时:30 分 星期三 14 时:00 分17 时:30 分 星期四 14 时:00 分17 时:30 分 星期五 8 时:00 分11 时:30 分 第 20 周 星期一 8 时:00 分11 时:30 分 附: 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4 大小的 图纸及程序清单) 。 正文的格式:一级标题用 3 号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行 距为 22。 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块 图) ;三、主要功能的实现课块划画块图实(至少要有一个主要模块的流程图) ; 四、程序调试;五、总结;六、附件(所有程序的源代码,要求对程序写出必 要的注释) 。 正文总字数要求在 5000 字以上(不含程序源代码) 。 目 录 1、绪论 .6 1.1 课程设计的目的和意义 .6 2、需求分析 .6 5 2.1、课程设计的目的 .6 2.2、课程设计的任务 .6 2.4、系统总体设计图 .7 3、详细信息 .7 3.1 基本信息 .7 4、详细设计 .7 4.1 问题定义 .8 4.2、流程图及系统测试 .8 4.2.1、进停车场 .8 4.2.2 车辆离开 .8 4.3、程序运行图 .9 4.3.1、菜单栏 .9 4.3.2、输入信息栏 10 4.3.3、出车栏 .10 4.3.4、显示栏 .11 5、心得感受 .11 6、附录 .12 6.1、源程序 .12 6.2、参考文献 .21 7、评分表 .22 1、绪论 1.1 课程设计的目的和意义 当代大学生是一个特殊的团体,他们具有较高知识修养和较强综合素质,但是 他们中的大部分却不具有与他们能力相符的动手能力与就业竞争能力。大学毕 业生是新兴劳动力的组成部分,提高大学毕业生就业工作发展水平,事关我国经 济社会可持续发展的进程 ,高校作为培养大学生的摇篮,必须责无旁贷地承担 6 起提高大学生就业能力的重任。提高大学生的就业能力,不仅需要教师付出辛勤 的劳动,还需要一套科学完善的制度作为保障,而高校毕业生基本情况数据库管 理系统无疑是一个很好的尝试。本文设计的这套数据库管理系统,是综合日常管 理、实践考核、科目成绩统计、就业管理等等的综合性数据库系统。设计学生 管理这样一个系统,可以涉及到大多数 MFC 与 C 语言数据库的重要数据库对象、 重要功能和特性,例如:视图、触发器和存储过程等。由此,通过这个课程设 计可以加深学生对这些 MFC 与 C 语言数据结构知识的学习、理解,积累在实际 工程应用中运用各种数据库对象的经验,使学生掌握使用应用软件开发工具开 发数据库管理系统的基本方法。在实用性方面,学生管理系统是很普遍的一种 应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借 鉴。 2、需求分析 2.1、课程设计的目的 运用数据结构编写一个 C 语言程序,实现对停车场的管理。只要包括:车辆 到达时得信息登记,车辆离开时得信息记录及便道的车辆信息的显示功能。 2.2、课程设计的任务 该系统实现以下几个功能: 2.21、车辆到达信息登记:包括车牌号,在停车场停放的位置等; 2.22 、车辆离开信息记录; 2.23、信息显示:显示停车场内和便道内的汽车到达及位置等信息; 2.3、软件运行和开发工具 1、windows2000 以上操作系统 2、VisualC+6.0 开发环境 7 2.4、系统总体设计图 3、详细信息 3.1 基本信息 车的车牌号,到达时信息及离开时信息。 4、详细设计 使 用 Visual C+平 台 设 计 学 生 成 绩 管 理 系 统 的 主 框 架 。 4.1 问题定义 该程序主要是为了实现对车库的管理,为实现该功能先定义了一个系统菜单: 停车场管理系统 车 辆 到 达 车 辆 离 去 便 道 信 息 退 出 信 息 8 (1)添加信息 (4)查找停车信息 (5)显示全部信息 (7)显示统计数据 4.2、流程图及系统测试 4.2.1、进停车场 车辆进停车场 是否有车 进入停车场 记录信息 回主菜单 进入便道 记录信息 Y N 图4.41 进停车场流程 4.2.2 车辆离开 9 车辆进停车场 是否有车 进入停车场 记录信息 回主菜单 进入便道 记录信息 Y N 图 4.42 车辆离开 4.3、程序运行图 4.3.1、菜单栏 图 4.31 菜单栏运行图 10 4.3.2、输入信息栏 图 4.32 输入信息栏运行图 4.3.3、出车栏 11 图 4.33 出车栏运行图 4.3.4、显示栏 图 4.35 显示栏运行图 5、心得感受 开始时候的课程设计完全没有思路,感觉很迷茫,不知道从何做起。幸好 在课设之前赵老师给我们做了很详细的指点,记得在大一的时候老师就提到过 她,当时就给我们留下了深刻的印象。是一位很负责任的,很有耐心的好老师, 我们很爱戴赵老师。 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题, 锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着 科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握管理项目 的开发技术是十分重要的。 回顾起此次图书馆借书系统课程设计,至今我仍感慨颇多,的确,从选题 到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是 可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到 12 了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实 际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与 实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的 实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难 重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程 中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够 牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 在以后会有更多的课程设计,我们现在的努力是为了将来打好基础,赵老师很认真的对待 我们的答辩,这是一种很负责任的表现,这是要让我们真正的自己动手,了解和掌握一些 基本知识,在以后的工作中做到游刃有余。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在 赵老师的辛勤指导下,终于游逆而解。同时,在赵锦元老师的身上我学得到很 多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导 老师再次表示忠心的感谢! 6、附录 6.1、源程序 #include #include #include #include /常量定义 #define MAX_STOP 5 /定义停车场最大停车数 #define MAX_PLATE 10 /定义车牌号最大长度 using namespace std; /使用 std 命名空间 /定义存储汽车信息的结构体 13 typedef struct char license_plateMAX_PLATE; /汽车牌照号码,定义为一个字符指 针类型 char state; /汽车当前状态,字符 p 表示停放在停车位上, 字符 s 表示停放在便道上,每辆车的初始状态用字符 i 来进行表示 CAR; /定义模拟停车场的栈结构 typedef struct CAR STOPMAX_STOP; /汽车信息的存储空间 int top; /用来指示栈顶位置的静态指针 SeqStack; /定义模拟便道的队列结构 typedef struct node CAR WAIT; /汽车信息的存储空间 struct node *next; /用来指示队列位置的动态指针 QNode; /链队列节点的类型 /定义链队列的收尾指针 typedef struct QNode *front,*rear; LQueue; /将头尾指针封装在一起的链队 /函数声明 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); /取栈顶元素 void Car_come(SeqStack /有车到 来时的操作 14 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) /运行界面及功能选择 coutt*nn; coutt*欢迎来到王凌锋的停车场*nn; coutt| 停车场模拟管理系统 |nn; coutt|-|nn; coutt| |nn; coutt| 有车到来时请按 C 键。 |nn; coutt| 有车要走时请按 l 键。 |nn; coutt| 查看停车场请按 D 键。 |nn; coutt| 要退出系统请按 Q 键。 |nn; coutt|-|nn; coutt|*nn; cout请选择操作:; gets(choice); if(1 != strlen(choice) cout请正确输入选项!; continue; else switch(*choice) case c: case C: Car_come(parking,sidewalk);break; 15 case l: case L: Car_leave(parking,sidewalk);break; case q: case Q: flag=0;break; case d: case D: Display(parking);break; default: cout选择不正确!请重新选择!n; /有车到来时的操作 void Car_come(SeqStack /定义变量 cout请输入车辆的车牌号码:; Input_Check(license_plate); if(StackFull(parking) /判断停车场是否已满,满则 进入便道,不满进入停车场 In_LQueue(sidewalk , license_plate); /进入便道 cout停车场已满请在便道等候,您的位置为QueueLength(sidewalk) endl; else StackPush(parking , license_plate); /进入停车场 cout请进入停车场中的parking.top+1号停车位n; / Display(parking); 16 void Car_leave(SeqStack /定义临时停车场 char leave_license_plateMAX_PLATE; /要离开的车牌号 char license_plateMAX_PLATE; /存放从停车场中读出来的车牌信息 InitStack(tmpparking); /初始化临时停车场 if(StackEmpty(parking) /判断停车场中是否有车 cout当前停车场中没有车n; return; /退出子函数 cout请输入要离开的车牌照:; 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(parking , license_plate) cout牌照为license_plate 的车暂时退出停车场 parking.top+1 号位n; StackPush(tmpparking , license_plate); /停车场中的车暂时退出 进入临时停车场 StackPop(parking); /出栈 cout牌照为license_plate 的车离开停车场 parking.top+1号位n; StackPop(parking); /出栈 /将临时停车场中的车停回停车场 while(StackEmpty(tmpparking) != 1) StackTop(tmpparking , license_plate); StackPush(parking , license_plate ); cout牌照为license_plate 的车进入停车场 parking.top+1号位 n; license_plate0 = 0; 17 StackPop(tmpparking); if(parking.top+1 = MAX_STOP-1) /判断车离开前停车场是否停满 if(QueueLength(sidewalk) /如果停满则判断便道上是否有车 /便道中有车 则从便道中停入停车场 Out_LQueue(sidewalk , license_plate); /出队 StackPush(parking , license_plate); /入栈 cout在便道中牌照为license_plate 的车进入停车场 parking.top+1号位n; else /车不在停车场中 cout您的车不在停车场中!n; /初始化顺序栈 void InitStack(SeqStack /判栈空 int StackEmpty(SeqStack parking) if(parking.top = -1) return 1; else return 0; /判栈满 int StackFull(SeqStack parking) if(parking.top = MAX_STOP-1) return 1; else return 0; /入栈 void StackPush(SeqStack strcpy(parking.STOPparking.top.license_plate , license_plate); parking.STOPparking.top.state = p; 18 /出栈 返回栈顶指针 int StackPop(SeqStack else return parking.top-; /取栈顶元素 int StackTop(SeqStack parking , char *license_plate ) if(StackEmpty(parking) return 0; else strcpy(license_plate , parking.STOPparking.top.license_plate); return 1; /显示所有 void Display(SeqStack parking) if(parking.top = -1) printf(停车场为空n); else while(parking.top != -1) cout车牌号为:parking.STOPparking.top.license_plate; cout,停在parking.top + 1 front=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-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) i+; p=p-next; return i; /出队 成功返回 1 队空返回 0 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); /取出队头元 素 20 if(sidewalk-front = sidewalk-rear) /队中只有一个元素 sidewalk-front = sidewalk-rear=NULL; /删除元素 else sidewalk-front = sidewalk-front-next; /队头指针后移 free(car_on_sidewalk); /释放指针 return 1; /检查离开的车是否在停车场中 返回车在停车场中位置 不在则返回 0 int LeaveCheck(SeqStack parking,char *license_plate) int flag = parking.top+1; /定义变量记录当前车在停车 场中位置 if(StackEmpty(parking) return 0; else /查找离开车所在位置 while(parking.top != -1 parking.top-; return flag; /检验输入的车牌是否合法 void Input_Check(char *license_plate) int flag = 1; int i; string tmpstr; while(flag) cintmpstr; getchar(); if(tmpstr.length()MAX_PLATE) for(i=0;i10;i+) license_platei = tmpstr.c_str()i; flag = 0; else cout输入有误,请重新输入:; 21 7、评分表 计算机与通信学院课程设计评分表 课程名称: 数据结构 项 目 评 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩 教师签名: 日 期: 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 22
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!