停车场管理系统课程设计报告 最终版

合集下载

停车场管理系统课程设计报告2

停车场管理系统课程设计报告2

停车场管理系统1实习目的通过本次课程设计,了解并初步掌握设计、实现系统的完整过程,包括系统分析、编码设计、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

2问题描述停车场是一条可以停放n辆车的狭窄通道,且只有一个大门汽车停放安到达时间的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场已经停满n辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。

基本要求(1)以栈模拟停车场,以队列车场外的便道,按照从终端输入的数据序列进行模拟管理。

每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、以及到达或离去的时刻。

对每一组数据进行操作后的信息为:若是车辆到达,则输出汽车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应缴纳的费用(在便道上的停留时间不收费)。

栈以顺序结构实现,队列以链表结构实现。

(2)友好性:界面要友好,输入有提示,尽量展示人性化。

(3)可读性:源程序代码清晰、有层次,必要时给出注释。

(4)健壮性:用户输入非法数据时,系统要及时给出警告信息。

(5)测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明。

3需求分析停车场是一条可以停放n辆车的狭窄通道,且只有一个大门。

汽车停放按到达时间的先后排列。

若停车场已经停满n辆车,后来的汽车在便道上等候。

一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路。

等它开出后,其他车再按照原次序开入车场,每辆停在车场的车要按时间长短缴费。

3.1设计基本要求(1)以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入的数据序列进行模拟管理。

停车场管理课程设计报告

停车场管理课程设计报告

《停车场管理系统》专业:班级:姓名:学号:指导教师:完成日期:2008年6月25日数据结构课程设计任务书一、开设数据结构课程设计的目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。

本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能,特开设此课程设计。

二、数据结构课程设计的具体内容停车场管理系统[问题描述]车辆的信息包括:车牌号、汽车到达/离去标志、到达/离去时刻等。

利用栈结构模拟停车场,用队列结构模拟等待的便道。

[基本要求]●收费:根据车辆到达和离开停车场的时间计时收费。

●查询:通过车牌号能查到该车辆在停车场或便道中的位置●调度:当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。

三、课程设计要求1、独立思考,按要求认真完成本次课程设计。

2、按照课程设计的具体要求完成几个内容。

a) 需求分析:叙述课题的功能要求;b ) 概要设计:详细说明每个部分的算法设计及过程,可以辅助流程图;,c)详细设计:算法实现的源程序(设计的具体语言不限制);d)调试分析:测试数据,时间复杂度分析,和每个模块设计和调试时存在问题的思考。

3、报告书提交(报告书的书写格式参照以下条目)●认真完成报告书,使用B5纸张,正文用小四字体, 打印。

首页为封面,要求写清楚标题、班级、姓名、指导教师、完成日期。

第二页为本任务书。

第三页为教师评语。

第四页为目录。

从第五页开始,为报告书正文。

●报告书正文具体内容包括:算法的简介、说明及分析;整个程序的功能设计与分析;程序测试与分析,附程序清单。

四、完成期限二○○八年六月二十三日~二○○七年六月二十七日指导教师:黎娅机电信息工程系二○○八年六月二十日教师评语:目录任务书 (2)教师评语 (3)目录 (4)一、数据结构内容简介 (5)二、需求分析 (5)三、算法设计 (6)1.概要设计 (7)2.详细设计 (9)四、程序功能分析 (13).源程序代码 (15)五、总结 (20)六、参考文献 (21)一、数据结构内容简介数据结构指的是数据的逻辑结构和存储结构,算法就是对数据运算的描述。

课程设计报告-- 停车场管理系统

课程设计报告-- 停车场管理系统

课程设计说明书专业:xxxxx课程名称: 数据结构课程设计班级: xxxx姓名: xxx 学号: xxxxxx设计题目: 停车场管理系统设计时间: 2012-2-27 至2012-3-9评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____________评阅教师:____________一、设计题目与要求停车场管理系统设停车场只有一个可停放几辆车的狭长通道,且只有一个大门可供汽车进出,汽车在停车场内按车辆的先后顺序依次排列,若车站内已停满汽车,则后来的汽车只能在门外的通道上等停,一旦停车场内有车开走,则排在同道上的第一辆车即可进入,当停车内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车站不能从便道上开走,试设计这样一个停车场模拟管理程序。

二、概要设计程序包括以下几个模块(包括其功能及程序实现思路与方法)1、成批车辆入站时信息的记录。

该功能则是将成批车辆入站,并且记录下信息。

已知车场为一个开口的狭长通道,所以信息采用栈来记录。

因为针对的是成批车辆,则在输入信息的时候采用循环输入,以输入特殊字符为结束符号。

在程序设计的时候,除了要完成循环,还要完成特殊字符的判断及车场是否已经停满的判断。

2、单辆车辆入站时车站的记录。

单辆车辆入站的实现思路与方法与成批入站的相差无几,主要区别在于车辆车不需要循环。

3、在车站已满的情况下,将车辆停在通道里。

车站有固定容量,当车站停满车后,车辆先放置在通道中。

通道是一个两头开口的狭长通道,而且当车站有空位时,通道中第一辆车要进入车站,则是先进先出的原则,所以采用队列的形式记录通道内车辆的信息。

(完整word版)课程设计-停车场管理系统

(完整word版)课程设计-停车场管理系统

学号1011200142数据结构课程设计设计说明书停车场管理系统起止日期:年月至年月日学生姓名班级成绩指导教师(签字)年月日停车场管理系统一、引言 (3)二、系统总体设计 (3)1、设计思路 (3)2、系统总体框架图 (5)3、系统流程图 (5)三、详细设计 (7)1、车辆停车函数及流程图 (7)2、车辆离开函数及流程图 (8)3、列表显示车场信息函数及流程图 (9)4、列表显示便道信息 (10)5列表显示菜单函数及流程图 (11)四、总结 (12)参考文献 (12)五、附录 (13)一、引言随着现代化信息技术的发展,人民生活水平快速提高,汽车的数量也飞速增长,于此同时,停车问题越来越受人们的关注,为了使停车场有效管理,停车场管理的信息化成为必然。

我们可以利用所学的知识,编写一个停车场管理系统,以提高管理的效率,提升停车场的竞争力。

本次课程设计,我运用C语言编写停车场管理系统,主要实现汽车停车,离开,收费,停车信息查询,显示等功能,主要实现方式是用栈和队列.下面对栈和队列进行一下简单介绍.栈(stack)是一种仅允许在一端进行插入和删除运算的线性表。

栈中允许插入和删除的那一端,称为栈顶(top)。

栈顶的第一个元素称为栈顶元素。

栈中不可以插入和删除的那一端称为栈底.在一个栈中插入元素,即把新元素放到当前栈顶元素的上面,使其称为新的栈顶元素,即进栈(push)。

从一个栈中删除一个元素,即把栈顶元素删除掉,使其下面的元素成为新的栈顶元素,称为出栈(pop)。

栈遵循后进先出的原则,即后进栈的元素必先出栈.其中顺序栈是利用一组地址连续的存储单元依次存放从栈底到栈顶的元素。

在C 语言中,可以用一维数组描述顺序栈中数据元素的存储区域,并预设一个数组的最大空间。

栈底设置在0下标端,栈顶随着插入和删除元素而变化,可以用一个整形变量top来指示栈顶的位置.队列是一种限定在表的一端进行插人而另一端进行删除的线性表,与栈相反,队列遵循先进先出的原则.允许删除的一端,称为队头(front)。

课程设计停车场管理系统

课程设计停车场管理系统

课程设计停车场管理系统一、课程目标知识目标:1. 让学生理解停车场管理系统的基本原理和功能需求。

2. 使学生掌握利用所学编程语言设计简单的停车场管理系统。

3. 帮助学生了解数据库在停车场管理系统中的应用。

技能目标:1. 培养学生运用所学知识,如流程图绘制、代码编写和调试等,解决实际问题的能力。

2. 提高学生团队协作、沟通表达和项目管理的能力。

情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发他们探索新技术、新方法的热情。

2. 培养学生面对实际问题时,积极思考、勇于创新的态度。

3. 增强学生的环保意识,让他们认识到智能停车场系统对缓解交通压力、提高生活质量的重要性。

课程性质:本课程为信息技术学科,以项目式教学为主,结合教材内容,使学生能够将理论知识与实际应用相结合。

学生特点:考虑到学生所在年级,他们在前期课程中已掌握了基本的编程知识和数据库应用,具备一定的自学能力和团队协作精神。

教学要求:在教学过程中,教师应注重引导学生自主探究、动手实践,鼓励学生提出问题、解决问题。

同时,关注学生的个体差异,给予个性化指导,确保每位学生都能在课程中取得实质性的进步。

通过本课程的学习,使学生能够达到以上设定的课程目标,为后续相关课程打下坚实基础。

二、教学内容1. 教学大纲:a. 停车场管理系统概述:介绍停车场管理系统的基本概念、功能和应用场景。

b. 系统需求分析:讲解如何进行需求分析,明确系统所需实现的功能和性能要求。

c. 系统设计:包括数据库设计、界面设计和模块设计,阐述各部分的设计原则和实现方法。

d. 编程实现:利用所学编程语言(如Python、Java等),实现停车场管理系统的核心功能。

e. 系统测试与优化:教授测试方法,分析测试结果,提出优化策略。

2. 教学内容安排与进度:a. 概述(1课时):引导学生了解停车场管理系统的背景和意义。

b. 需求分析(2课时):指导学生进行实际需求分析,明确系统目标。

停车场管理系统—C语言课程设计

停车场管理系统—C语言课程设计

停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。

停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。

每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

编制一程序模拟该停车场的管理。

【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。

2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。

车辆离开要计时计费。

另外,每天开始时,停车场要初始化。

3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。

4详细设计main()函数体内包含了界面选则部分menu(),并单独Array抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。

即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}菜单函数:void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。

停车管理系统课程设计

停车管理系统课程设计

停车管理系统课程设计一、课程目标知识目标:1. 让学生理解停车管理系统的作用和重要性,掌握其基本组成部分及功能。

2. 使学生掌握数据结构中与停车管理系统相关的基础知识,如队列、栈等。

3. 帮助学生了解并运用编程语言(如Python或C++)实现简单的停车管理系统。

技能目标:1. 培养学生运用数据结构解决实际问题的能力,能够设计并优化停车管理系统的数据模型。

2. 提高学生的编程能力,使其能够独立完成一个简单的停车管理系统的代码编写和调试。

3. 培养学生团队协作和沟通能力,通过小组合作完成课程项目。

情感态度价值观目标:1. 激发学生对计算机科学和信息技术领域的兴趣,培养其主动学习的态度。

2. 培养学生关注社会问题,认识到信息技术在解决实际生活中的重要作用,增强社会责任感。

3. 引导学生树立正确的价值观,认识到技术应服务于社会,遵循道德规范,保护用户隐私。

本课程针对高年级学生,已具备一定的数据结构知识和编程基础。

课程性质为实践性较强的综合应用课程,旨在通过停车管理系统这一实际案例,使学生将所学知识综合运用到实际项目中。

教学要求注重培养学生的实践能力、创新思维和团队协作能力,通过分解课程目标为具体的学习成果,使学生在完成课程后能够达到预期的知识和技能水平。

二、教学内容1. 停车管理系统概述:- 系统功能介绍- 系统在实际生活中的应用案例2. 数据结构基础:- 队列与栈的应用- 哈希表的原理与实现3. 编程语言选择与使用:- Python/C++语言基础- 编程规范与调试技巧4. 停车管理系统设计与实现:- 系统需求分析- 数据模型设计- 算法设计与优化- 代码编写与测试5. 课程项目:- 小组分工与协作- 项目进度安排与汇报- 项目评价与反馈教学内容根据课程目标,结合课本相关章节,制定以下教学大纲:第1周:停车管理系统概述,数据结构基础第2周:编程语言选择与使用,编程规范与调试技巧第3-4周:停车管理系统设计与实现(需求分析、数据模型设计、算法设计)第5-6周:停车管理系统设计与实现(代码编写与测试)第7周:课程项目启动,小组分工与协作第8周:课程项目中期汇报,项目评价与反馈第9周:课程项目总结,成果展示与分享教学内容科学系统,注重理论与实践相结合,旨在提高学生的实际操作能力和创新思维。

停车场管理课程设计报告

停车场管理课程设计报告

停车场管理一、课程设计题目内容(1)问题描述:设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列 (大门在最南端,最先到达的第一辆车停放在车场的最北端) ,若车场内已停满n 辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

试为停车场编制按上述要求进行管理的模拟程序。

基本要求:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。

对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用 (在便道上停留的时间不收费)。

栈以顺序结构实现,队列以链表结构实现。

测试数据:设n=2,输入数据为:( ‘A',1,5),( ‘A',2,10),( ‘D',1,15),( ‘A',3,20),( ‘A',4,25),(‘A ,5,30),( ‘ D ,2,35),( ‘ D ,4,40),( ‘ E' ,0,0)。

其中:‘A'表示到达(Arrival ); ‘ D'表示(Departure ); ‘ E'表示输入结束(End)。

实现提示:需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。

输入数据按到达或离去的时刻有序。

栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。

、本人完成的工作1) 定义车辆信息结构体,包括汽车的车牌号码、到达停车场时间、离开停车场时间;2) 定义顺序堆栈的结构体,用于模拟停车场;3) 定义链式队列的结构体,用于模拟车场外的停车场;4) 定义堆栈和队列的初始化函数;5) 设计汽车进入停车场、离开停车场、离开收费信息和汽车停靠情况查询等主要函数;6) 主函数:设计停车场管理菜单,通过菜单选项,调用相关的函数来实现停车场汽车到达登记、汽车离开停车场、汽车停靠查询和退出程序的操作,完成模拟汽车停车场的整个过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 实习目的 (1)2 问题描述 (1)3.1 设计基本要求 (1)3.2 停车场管理系统的主要功能 (2)4概要设计 (2)4.1设计思想 (2)4.2函数及功能要求 (3)5 详细设计 (4)5.1 数据结构的设计 (4)5.2 算法的设计思想及流程图 (5)5.2.1 主要函数的功能说明 (5)5.2.2 停车场管理系统流程图 (6)5.2.3 主要模块算法描述 (8)6 测试分析 (8)6.1 测试用例 (8)6.1.1 第一组测试用例 (8)6.1.2 第二组测试用例 (10)6.1.3 第三组测试用例 (11)6.2 测试结果分析 (12)7 使用说明 (12)8 总结 (13)参考文献 (15)附录 (16)停车场管理系统1 实习目的通过本次课程设计,了解并初步掌握设计、实现系统的完整过程,包括系统分析、编码设计、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

2 问题描述停车场是一条可以停放n辆车的狭窄通道,且只有一个大门。

汽车停放安到达时间的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场已经停满n辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。

3 需求分析停车场是一条可以停放n辆车的狭窄通道,且只有一个大门。

汽车停放按到达时间的先后排列。

若停车场已经停满n辆车,后来的汽车在便道上等候。

一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路。

等它开出后,其他车再按照原次序开入车场,每辆停在车场的车要按时间长短缴费。

3.1 设计基本要求(1) 以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入的数据序列进行模拟管理。

每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、以及到达或离去的时刻。

对每一组数据进行操作后的信息为:若是车辆到达,则输出汽车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应缴纳的费用(在便道上的停留时间不收费)。

栈以顺序结构实现,队列以链表结构实现。

(2) 友好性:界面要友好,输入有提示,尽量展示人性化。

(3) 可读性:源程序代码清晰、有层次,必要时给出注释。

(4) 健壮性:用户输入非法数据时,系统要及时给出警告信息。

(5) 测试数据:要求使用全部合法数据、整体非法数据、局部非法数据进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明。

3.2 停车场管理系统的主要功能(1) 根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。

(2) 该程序设计能够通过车牌号查到该车辆在停车场或便道中的位置。

(3) 当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。

实现停车场的调度功能。

该程序设计可以完整的模拟停车场的管理过程。

4概要设计4.1数据库设计(1)栈的抽象数据类型定义AST Stack{数据对象:D={ai|ai∈ElemSet,i=1,2,...,n, n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}约定an端为栈顶,a1端为栈底。

基本操作:InitStack(&S)操作结果:构造一个空栈S。

DestroyStack(&S)初始条件:栈S已存在。

操作结果:栈S被销毁。

ClearStack(&S)初始条件:栈S已存在。

操作结果:将栈S清为空栈。

tackEmpty(S)初始条件:栈S已存在。

操作结果:若栈S为空栈,则返回TRUE,否则FALSE。

StackLength(s)初始条件:栈S已存在。

操作结果:返回S的元素个数,既栈的长度。

GetTop(S,&e)初始条件:栈S已存在且非空。

操作结果:用e返回S的栈顶元素。

Push(&S,e)初始条件:栈S已存在。

操作结果:插入元素e为新的栈顶元素。

Pop(&S,&e)初始条件:栈S已存在且非空。

操作结果:删除S的栈顶元素,并用e返回其值。

StackTraverse(S,visit())初始条件:栈S已存在且非空。

操作结果:从栈底到栈顶依次对S的每个数据元素调用函数visit()。

一旦visit()失败,则操作失效。

}ADT Stack(2)队列的抽象数据类型定义ADT Queue{数据对象:D={ai|ai∈ElemSet,i=1,2,...,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}约定其中a1端为队列头,an为队列尾。

基本操作:InitQueue(&Q)操作结果:构造一个空队列Q。

DestroyQueue(&Q)初始条件:队列Q已存在。

操作结果:队列Q被销毁,不再存在。

ClearQueue(&Q)初始条件:队列Q已存在。

操作结果:将Q清为空队列。

QueueEmpty(Q)初始条件:队列Q已存在。

操作结果:若Q为空队列,则返回TRUE,否则FALSE。

QueueLength(Q)初始条件:队列Q已存在。

操作结果:返回Q的元素个数,即队列的长度。

GetHead(Q,&e)初始条件:Q为非空队列。

操作结果:用e返回的队头元素。

EnQueue(&Q,e)初始条件:队列Q已存在。

操作结果:插入元素e为Q的新的队尾元素。

DeQueue(&Q,&e)初始条件:Q为非空队列。

操作结果:删除Q的队头元素,并用e返回其值。

QueueTraverse(Q,visit())初始条件:Q已存在且非空。

操作结果:从队头到队尾,依次对Q的每个数据元素调用函数visit()。

一旦visit()失败,则操作失败。

}ADT Queue4.2函数及功能要求(1)此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。

在主函数中首先调用option()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的信息以及退出程序这四个函数模块。

其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。

最后,从调用的这四个函数中回到主函数结束整个程序的运行。

(2)在以上各个模块中,出现的调用的函数为:void InitStack(SeqStackCar *s);int InitQueue(LinkQueueCar *Q);option();int Arrival(SeqStackCar *Enter,LinkQueueCar *W);void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W);void PRINT(CarNode *p);void List(SeqStackCar S,LinkQueueCar W);void List1(SeqStackCar *S);void List2(LinkQueueCar *W);5 详细设计5.1 数据结构的设计程序中使用了一个类,五个结构体,两个栈(模拟停车场,其中一个为临时栈),一个队列(模拟便道)。

(1)车辆信息的表示车辆可看成是一个节点,设计成一个结构体,车辆信息包括:车牌号码,车辆的进站时间和离开停车场的时间,定义如下:typedef struct node{char num[10]; //车牌号码Time reach; //到站时间Time leave; //离开时间}CarNode;(2)时间、栈和队列的定义时间是由小时和分钟表示的,有两部分数据,设计两个变量分别存储小时和分钟,定义如下:typedef struct time{int hour;int min;}Time;停车场内用栈表示:typedef struct NODE{CarNode *stack[MAX+1]; //栈用顺序表示 int top;}SeqStackCar;SeqStackCar Enter,Temp; InitStack(&Temp)在车辆离开时,应用temp临时栈把将要离开的车辆后续车辆压入,等车辆离开后压回原栈stack。

便道上的车辆表示:typedef struct car{CarNode *data; // 便道上的车用链表表示struct car *next;}QueueNode;typedef struct Node{QueueNode *head;//设置头指针、尾指针QueueNode *rear;}LinkQueueCar;5.2 算法的设计思想及流程图5.2.1 主要函数的功能说明(1)void InitStack(SeqStackCar *);//车辆节点进栈。

即当栈未满时,就把到达的车辆进栈。

(2)int InitQueue(LinkQueueCar *);//车辆节点进队列。

即当栈已满时,车辆就进入便道上的队列中(3)int Arrival(SeqStackCar *,LinkQueueCar *);//车辆到达登记。

即车辆到达时,先登记车辆车牌号码。

然后再判断停车场有没有停满,没停满就进栈,停满了就停在便道上,即进队列。

(4)void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);//车辆离开处理。

即通过输入离开车辆的位置处理,然后调用PRINT(CarNode *p,int room);函数进行收费。

然后再判断便道上有没有车,如果有,就把便道上的车进停车场内。

(5)void List(SeqStackCar,LinkQueueCar);//显示车场内和便道上的车辆情况。

利用switch();函数选择显示车场内或是便道上的车辆情况,包括对下面两个子函数的调用: void List1(SeqStackCar *S);void List2(LinkQueueCar *W);//分别用来显示车场和便道上的车辆情况(6)void PRINT(CarNode *p,int room);//车辆离开时的收费。

即这个函数由车辆离开的函数调用,以分钟计时算费,但只能计算当天之内的费用,如果第二天的话会导致计费为负或减少。

相关文档
最新文档