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

合集下载

数据结构课程设计停车场管理系统设计报告2

数据结构课程设计停车场管理系统设计报告2

数据结构课程设计停车场管理系统设计报告2停车场管理系统设计报告一、引言停车场管理系统是一种用于管理和控制停车场内停车位的软件系统。

本报告旨在详细描述设计一个停车场管理系统的过程,并介绍系统的功能、架构、模块设计以及相关技术细节。

二、系统概述本停车场管理系统旨在提供一个高效、智能化的停车场管理解决方案,以便实现停车场资源的合理利用和车辆流量的有效管理。

系统主要包括以下功能模块:1. 车辆入场管理:记录车辆的入场时间、车牌号码等信息,并分配合适的停车位。

2. 车辆出场管理:记录车辆的出场时间,计算停车费用,并提供支付方式。

3. 停车位管理:实时监测和管理停车位的占用情况,提供可用停车位的查询功能。

4. 数据统计与分析:根据车辆进出记录,生成报表,分析车流量、停车时长等数据。

5. 系统设置:包括管理员账号管理、停车场信息设置等。

三、系统架构本停车场管理系统采用三层架构,包括表现层、业务逻辑层和数据访问层。

1. 表现层:用户通过图形界面与系统进行交互,输入车辆信息、查询停车位、支付停车费用等。

2. 业务逻辑层:负责处理用户请求,实现车辆入场、出场管理,停车位管理以及数据统计与分析功能。

3. 数据访问层:负责与数据库进行交互,实现数据的存取和管理。

四、模块设计1. 车辆入场管理模块该模块主要包括车辆信息录入、停车位分配和入场记录保存等功能。

用户在系统界面输入车辆信息后,系统将分配一个合适的停车位,并将车辆信息和入场时间保存至数据库中。

2. 车辆出场管理模块该模块主要包括出场记录查询、停车费用计算和支付功能。

用户通过输入车牌号码查询出场记录,系统将根据停车时间计算停车费用,并提供多种支付方式供用户选择。

3. 停车位管理模块该模块实时监测和管理停车位的占用情况,提供可用停车位的查询功能。

系统将通过查询数据库中的停车位信息,实时更新停车位的占用状态,并在系统界面显示可用停车位的数量。

4. 数据统计与分析模块该模块根据车辆进出记录,生成报表,分析车流量、停车时长等数据。

《数据结构》停车场系统设计报告--停车场管理系统_

《数据结构》停车场系统设计报告--停车场管理系统_

《数据结构》停车场系统设计报告--停车场管理系统_一、系统总体原则1.1、系统的安全性:停车场管理系统要求引入多重安全措施,确保其系统数据的安全,以防止非法黑客进行攻击;系统本身要具备安全保护机制,确保核心系统重要功能不能被破坏。

1.2、系统功能:停车场管理系统要具备通行证管理,车辆管理,收费管理,维修管理,系统权限控制和固定车位管理等多种功能。

1.3、系统数据管理:停车场管理系统要实现对用户信息,车辆信息,收费信息,维修信息和工作日志等数据的便捷管理;支持数据注入,报表输出,日志查询,备份恢复等。

二、系统数据结构2.1、用户信息结构:用户类型、用户名、密码、真实姓名、联系电话、优惠折扣比、优惠申请次数等2.2、车辆信息结构:车牌号、车牌颜色、停放位置、停放时间、收费金额等2.3、收费信息结构:收费时间、车牌号、应缴金额、实缴金额、优惠金额、收费员等2.4、维修信息结构:维修时间、车牌号、维修内容、维修费用、维修人等2.5、工作日志结构:日志类型、生成时间、触发时间、操作内容、操作人等三、系统模块设计通行证管理模块:能够管理停车场的客户信息,支持优惠折扣的设置,支持多种客户角色的分配及权限管理。

车辆管理模块:能够管理停车场的车辆信息,支持分配停车位、跟踪车辆停放时间以及出入位置,以实现计算停车费用。

收费管理模块:能够实现车辆停放费用的计费与收取,支持优惠计算功能,支持收费记录的查询与管理。

维修管理模块:能够管理停车场的车辆维修信息,能够针对每辆车的维修记录进行查询、录入和管理。

系统权限控制模块:支持可根据多种角色分配权限,以实现系统模块及功能的控制,保证信息安全性。

固定车位管理模块:能够支持固定车位信息的管理,可支持用户管理固定车位,以便系统自动识别用户并提供优惠处理。

四、系统实现方案4.1 前端 : 对停车场系统进行交互式操作,支持web,客户端,短信等界面,实现用户的操作及查询;前端应用可跨平台进行。

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

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

停车场管理系统数据结构课程设计随着社会的发展和经济的快速增长,城市的交通压力越来越大,停车位的需求也越来越高。

而如何有效地管理停车场,提高停车位的利用率,成为了当今社会普遍关注的问题。

因此,本文将以停车场管理系统数据结构课程设计为主题,探讨停车场管理系统的数据结构设计。

一、需求分析停车场管理系统主要需要实现以下功能:1.车辆进入停车场时的记录;2.车辆离开停车场时的记录;3.计算停车费用;4.查询车辆信息;5.管理员管理停车场信息。

二、数据结构设计1.车辆信息结构体在车辆进入停车场时,需要记录车辆的信息,包括车牌号、车辆类型、进入时间等。

因此,我们可以定义一个车辆信息结构体,如下所示:struct CarInfo{string plateNumber; //车牌号string carType; //车辆类型string enterTime; //进入时间int parkingTime; //停车时间float parkingFee; //停车费用};2.停车场结构体停车场是一个重要的管理对象,需要记录停车场的信息,包括停车场容量、当前停车量、车位状态等。

因此,我们可以定义一个停车场结构体,如下所示:struct ParkingLot{int capacity; //停车场容量int currentCount; //当前停车量bool *parkingStatus; //车位状态CarInfo *parkingCar; //停车车辆信息};其中,parkingStatus数组表示每个车位的状态,true表示该车位已经被占用,false表示该车位空闲;parkingCar数组存储每个车位停放的车辆信息。

3.查询车辆信息结构体管理员需要查询车辆信息,因此我们可以定义一个查询车辆信息结构体,如下所示:struct QueryCarInfo{string plateNumber; //车牌号string enterTime; //进入时间string leaveTime; //离开时间float parkingFee; //停车费用};4.管理员结构体管理员需要管理停车场信息,包括设置停车场容量、添加车辆、删除车辆等。

数据结构课程设计报告书 停车场管理系统

数据结构课程设计报告书 停车场管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 100/*预设停车场有100个车位*/#define D 1.2/*预设车辆停车费为1.2元每小时*/ #define NUMBER 100void menu();void start();void parkingplace();void drive();struc car{int carnumber;int cararrave;int carleave;int carplace;}car[NUMBER];struct park;{int null;}parkingplace[N-1];void main (){menu();/*菜单*/}void menu(){int n;do{puts("****MENU***");puts("1、停车");puts("2、开车");puts("3、退出");puts("4、初始化");printf("请选择你需要的服务(1-4):");scanf("%d",&n);}switch(n){case 1:parking;break;/*停车函数*/case 2:drive;brea ;/*开车函数*/case 3:exit;break;/*退出*/case 4:start;break;/*初始化*/}}void start()/*初始化*/{int i,j;for(i=0;j<N;i++)parking[i].null=0;/*停车场设置为空*/printf("已初始化");menu();}void parkingplace()/*车辆进入函数*/{int i,a,h=0;printf(“请输入该车系序号(从0开始):”);scanf(“%d”,&a);for(i=0;i<N;i++){if(parking[i].park==0)/*无车标记*/if(parking[i].park==1)/*有车标记*/h=h+1;}if(h==N)printf(“停车场内已满!”);else{car[a].carplace=h;parkingplace[h].null=1;printf(“该车应该停在停车场内”);printf(“请输入该车进停车场时间:”);scanf(“d%”,&car[a].cararrave);}void drive()/*车辆离开函数*/{int i,k,time;double(“请输入车辆次序号【】”);scanf(“%d”,&i);printf(“请输入离开时间:”);scanf(“%d”,&car[i]carleave);fee=D*(car[i].carleave-car[i].cardrrave);time=car[i].carleave-car[i].cardrrave;printf(“次序号为%d的车停时间%d小时,应收费%f元”,i,time,fee); }。

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

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

算法与数据结构课程设计题目:停车场管理专业班级:软件四班姓名:学号:指导教师:成绩:______________目录一、题目及要求 (2)二、题目分析 (3)三、数据结构说明 (4)四、各函数算法分析 (5)(1)主函数 (5)(2)车辆到达函数 (7)(3)车辆离开函数 (8)(4)列表显示函数 (10)五、程序测试 (14)(1)测试信息对错误的处理 (14)(2)列表显示 (15)(3)同时输出等待的提示作息 (16)(4)计算它们的应交费用 (17)六、课程设计感悟与收获 (18)七、源代码 (19)八、参考文献 (25)一、题目及要求[要求]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

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

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

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

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

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

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

[提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去时刻)。

例如:(’A’,1,5)表示1号牌照车在5这个时刻到达,而(’D’,5,20)表示5号牌照车在20这个时刻离去,整个程序可以在输入信息为(’E’,0,0)时结束。

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

根据题目要求,停车场可以用一个长度为n的堆栈来模拟。

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

数据结构课程设计 停车场模拟管理系统报告(含源码)

数据结构课程设计 停车场模拟管理系统报告(含源码)

数据结构课程设计停车场模拟管理系统报告(含源码)《数据结构课程设计》报告专业:软件工程班级: T1123-03学号:姓名: XXX课设题目:停车场模拟管理系统指导教师:马春江成绩:2013-07-03目录一、设计题目 (1)二、设计目的 (1)三、总体设计 (1)(一)问题描述 (1)(二)设计要求 (2)(三)数据结构 (2)四、详细设计 (2)(一)分析与实现 (2)(二)系统模块设计 (3)(三)界面设计 (4)五、设计结果与分析 (6)六、总结(收获和不足) (6)(一)课设的不足 (6)(二)课设的收获 (7)附录程序源码 (7)参考文献: (19)指导教师意见 (20)一、设计题目停车场模拟管理系统。

二、设计目的利用所学的知识,模拟设计一个停车场管理系统。

通过程序设计,了解停车场的工作情况以及是怎么实现停车的,模拟车辆的进入停车场、离开停车场的情况,和收费情况。

三、总体设计(一)问题描述假设停车场可以停放n辆车的狭长通道,而且只有一个入口出口,汽车进入停车场的停放按照先进先放的顺序,依次排满车道。

当停车场已经停满时(已存放了n辆汽车),想进入停车场的车就只能在便道上等待,等到停车有车离开时,便道上的第一辆车进入停车场。

当停车场内的某辆车要离开时,在它后面的车必须离开让出一条道路来,待车开走后,让路的车依次进入停车场,车辆离开时,按时间缴纳费用。

(二)设计要求用栈模拟停车场,用队列模拟停车场外面的等车便道,按照终端输入数据的方式进行模拟管理。

输入1,表示车辆到达;输入2,表示车辆离开;输入3,表示列表显示停车场内外情况;输入4,表示系统帮助;输入5,表示查询车辆;输入0,表示退出程序。

车辆进入停车时,要输入车牌号码和到达时间;车辆离开时,要输入停车场车位号和离开时间,并显示应收费额;车辆查询时,要输入车牌号码;系统帮助,则是一些关于本系统的操作介绍。

(三)数据结构本课程设计使用的数据结构有:顺序栈和链式队列。

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

课程设计课程设计名称:课程设计专业班级:学生姓名:学号:指导教师:课程设计时间:目录1 需求分析。

.。

...。

....。

.。

...。

.。

.....。

....。

..。

.。

.。

.。

.。

.。

.....。

.。

.。

.。

....。

..。

...。

32 概要设计。

.。

.。

.。

..。

..。

.。

..。

.。

.。

.。

.。

.。

.。

.。

..。

..。

.。

..。

..。

..。

.。

....。

..。

....。

.。

.。

.33详细设计..。

..。

.。

.。

.。

.。

.。

..。

..。

.。

..。

.。

.....。

.。

.。

..。

..。

.。

..。

..。

.......。

..。

.。

...。

..。

..。

44 运行环境..。

..。

.。

..。

.。

.。

..。

.。

....。

.。

.。

..。

.。

..。

.。

..。

..。

..。

...。

..。

.。

.。

..。

..65开发环境。

.。

..。

..。

..。

..。

...。

..。

.。

...。

.。

.。

..。

.。

......。

.。

.。

.。

.。

.。

.。

66 程序设计.。

.。

..。

.。

.....。

...。

....。

.。

...。

.。

.。

.。

..。

..。

..。

..。

.。

......。

..。

.。

.。

.。

67 调试分析。

.。

...。

..。

.。

......。

.。

.。

....。

.。

.。

...。

..........。

.。

..。

..。

..。

.。

..。

.。

118 测试结果。

.。

.。

.。

.。

.。

..。

..。

.。

.。

.。

.。

...。

........。

..。

.。

..。

.。

.。

.。

...。

.。

.。

. (19)9参考文献.。

..。

....。

.。

.。

..。

.。

..。

.。

...。

.....。

..。

.。

..。

.。

.。

...。

....。

.。

(22)10心得体会。

.。

.。

.。

.。

.。

..。

.。

...。

..。

...。

......。

..。

....。

.。

....。

..。

.。

.。

.....。

.。

...。

(23)11成绩评价表。

.。

.。

..。

.。

.。

.。

..。

.。

...。

.。

.。

...。

......。

javaweb停车场管理系统课程设计

一、概述现代社会的快速发展已经改变了人们的生活方式,私家车逐渐成为人们出行的主要工具之一。

随着汽车数量的不断增加,停车场管理系统的需求也日益显著。

为了提高停车场的管理效率和服务质量,设计一个高效、稳定、安全的javaweb停车场管理系统成为当务之急。

二、系统需求分析1. 业务功能:系统应该支持汽车入场、出场管理、收费管理、查询统计等功能。

2. 技术要求:系统使用Java作为开发语言,采用web技术实现。

数据库选择MySQL,同时要求有良好的界面交互体验和高效的性能。

3. 安全性要求:系统应具备用户权限管理、安全登入、数据加密等功能,保障用户数据的安全性。

4. 用户友好性:系统应该具有良好的用户操作体验,界面简洁明了,易于使用。

5. 扩展性:系统应支持多个停车场的管理,并能够方便扩展其他功能模块。

三、系统设计1. 系统架构设计:采用B/S结构,通过浏览器访问,分为前端和后端两部分,前端使用HTML、CSS、JavaScript实现网页交互,后端使用Java语言实现业务逻辑,与数据库进行交互。

2. 数据库设计:根据需求分析设计数据库结构,包括车辆信息、停车场信息、收费信息等表结构。

3. 用户权限设计:设计用户角色、权限控制等功能,实现不同用户角色的权限控制。

4. 界面设计:设计用户界面,包括登入界面、主页面、查询统计页面等,保证界面简洁明了,易于操作。

四、系统实现1. 开发环境:选择合适的开发工具、框架和库,如Eclipse、Spring 框架、MyBatis框架、Tomcat服务器等。

2. 功能实现:按照系统需求设计的功能模块进行逐步实现,包括车辆入场管理、出场管理、收费管理、统计查询等功能。

3. 安全性实现:添加登入认证、权限控制等相关功能模块,保障系统的安全性。

4. 性能测试:对系统进行性能测试,保证系统的稳定性和高效性。

五、系统部署1. 部署环境:选择合适的服务器,安装操作系统、数据库软件、Java运行环境等。

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

重庆科技学院《面向对象程序设计》课程设计报告学院:_ 电气与信息工程学院_ 专业班级:计科12-04 学生姓名:田园学号: 442095设计地点(单位)________计算机自主学习中心 ___ _____设计题目:_____ _ 停车场管理系统__ ____完毕日期:年1月18日指引教师评语:______________________ __ ________________________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _成绩(五级记分制):______ __________指引教师(签字):________ ________摘要当今社会,停车场管理电脑化已经成为了停车场管理不可缺少一项重要内容,随着停车车辆不断增长,停车场对停车管理越来越复杂,因此要实现对停车对的管理是必不可少。

本次课程设计就是为了对停车基本信息及其停车费用管理做一种简朴体现,重要实现对停车信息录入,修改,删除,显示,添加,查找等几种方面功能。

而要实现这些功能,一方面要建一种数组,将所有停车信息都统筹起来,并且通过C++建立类方式完毕这些过程,并且能精确明显显示每辆停车基本信息和对其资费管理。

通过如此对停车管理,可以达到对停车信息精确管理。

核心词:停车场管理数组 C++ 类重庆科技学院课程设计任务书设计题目:停车场管理系统设计1月1日目录1.软件需求分析阐明书重要简介该软件具备哪些详细功能,及软件界面规定、数据构造规定等(要把软件所有功能所有写在该某些)1.课程设计目和规定1.1 综合规定和目:C++语言课程设计重要目是培养学生综合运用C++语言程序设计课程所学到知识,编写C++程序解决实际问题能力,以及严谨工作态度和良好程序设计习惯。

数据结构课程设计停车管理系统实验报告【范本模板】

数据结构课程设计报告项目名称:停车管理系统姓名:鉏飞祥学号:E21414018专业:软件工程2016-6-28安徽大学计算机科学与技术学院1 .需求分析1.1问题描述停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用.试为停车场编制按上述要求进行管理的模拟程序.1。

2基本要求(1)输入的形式和输入值的范围;七位字符车牌号空格时间(12:30)如:A123456 12:30(2)输出的形式;车牌号时间如:A123456 12:30(3)程序所能达到的功能.模拟车子排队和进出车库的情况,并且根据时间计费,随时显示当前车库车辆情况。

2. 概要设计(1)数据结构每个汽车的基本元素:struct car{char id[8];int h;/*时*/int m;/*分*/struct car *next;};栈的基本元素:struct sqstack{struct car *base;struct car *top;int stacksize;};(2)程序模块void intstack(struct sqstack &S)/*构造栈*/void push_stack(struct sqstack &S,struct car *e) /*e入栈*/void pop_stack(struct sqstack &S,struct car *e)/*出栈顶元素到e*/void creat_q()/*创建队列*/void push_q(struct car *p)/*车辆入队*/struct car * pop_q()/*车辆出队*/void come_in()/*车辆离开*/void go_out()/*车辆进入*/void interface()/*主菜单*/(4)各模块之间的调用关系以及算法设计3. 详细设计流程图及模块调用如下:4. 测试与分析主界面如下:车库中假设最多停三辆车,加入进入四辆车abcd,则d需要在便道排队:此时若b车开走,显示费用信息,则在便道的d车进入车库:若此时有车进入,则继续在便道排队:5。

  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函数及功能要求 (2)5 详细设计 (3)5.1 数据结构的设计 (3)5.2 算法的设计思想及流程图 (4)5.2.1 主要函数的功能说明 (4)5.2.2 停车场管理系统流程图 (5)5.2.3 主要模块算法描述 (6)6 测试分析 (6)6.1 测试用例 (6)6.1.1 第一组测试用例 (6)6.1.2 第二组测试用例 (8)6.1.3 第三组测试用例 (9)6.2 测试结果分析 (10)7 使用说明 (11)8 总结 (12)参考文献 (14)附录 (15)停车场管理系统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);//车辆离开时的收费。

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

相关文档
最新文档