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

合集下载

c语言停车场课程设计

c语言停车场课程设计

c语言停车场 课程设计一、课程目标知识目标:1. 理解C语言中数组、函数和指针的基本概念,并能运用这些知识解决实际问题。

2. 学会使用C语言编写简单的停车场管理系统,掌握基本的编程技巧和逻辑思维能力。

3. 了解停车场管理系统的基本功能,如车位分配、查询、车辆进出等。

技能目标:1. 能够运用数组、函数和指针等C语言知识,设计并实现一个简单的停车场管理系统。

2. 培养学生分析问题、解决问题的能力,以及编程实践和调试技巧。

3. 提高学生的团队协作能力和沟通能力,通过小组合作共同完成课程项目。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学生主动探索新知识的精神。

2. 引导学生认识到编程在实际生活中的应用价值,提高学生对信息技术的重视程度。

3. 培养学生的责任感和使命感,使他们认识到停车场管理系统在现代社会中的重要性。

课程性质:本课程为实践性较强的学科,结合实际生活中的停车场管理系统,培养学生运用C语言编程解决问题的能力。

学生特点:考虑到学生所在年级,已具备一定的C语言基础,对数组、函数和指针等概念有初步了解,但实际应用能力有待提高。

教学要求:注重理论与实践相结合,强调动手实践,培养学生实际编程能力。

通过小组合作,提高学生的团队协作能力和沟通能力。

在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能在课程中学有所获。

二、教学内容1. C语言基础知识回顾:数组、函数和指针的基本概念及其应用。

2. 停车场管理系统需求分析:介绍停车场管理系统的基本功能,如车位分配、查询、车辆进出等。

3. 系统设计:- 数据结构设计:数组、结构体等。

- 函数设计:功能模块划分,如车位分配、查询、车辆进出等。

- 指针应用:动态内存分配、函数指针等。

4. 编程实践:- 编写主程序框架,实现系统初始化。

- 编写功能模块,如车位分配、查询、车辆进出等。

- 整合各功能模块,形成完整的停车场管理系统。

5. 调试与优化:分析程序运行过程中可能出现的错误,进行调试和优化。

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

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

重庆科技学院《面向对象程序设计》课程设计报告学院:电气与信息工程学院专业班级:计科2012-05学生姓名:蒋鑫学号: 2012442101设计地点(单位)_____I313________设计题目:_ 停车场管理系统 ___完成日期: 2014 年 1月 8 日指导教师评语: ______________________ _______________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书设计题目:停车场管理系统设计学生姓名蒋鑫课程名称面向对象课程设计专业班级计科12-5班地点I313 起止时间12月30日~1月10日设计内容及要求1)问题描述定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。

定义一个管理类,完成对停车场的管理。

停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

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

2)功能要求(1)添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

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

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

C语言课程设计报告目录一、题目要求,需求分析二、总体设计思路与功能模块划分三、程序设计四、程序运行测试五、总结前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。

因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。

如今,高等教育的计算机教育发展十分迅速。

十多年前,只有部分理工科专业开设计算机课程。

今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。

人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。

而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。

计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。

一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。

根据我们专业的性质和要求,则应侧重于上机操作运用。

为此,学校特意在本学期最后安排了32个学时的上机实习。

现将一星期的实习内容及结果分析分列如下:一、题目要求:27.停车场管理21、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。

2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。

即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。

3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。

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

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

2014-2015学年第二学期《高级语言程序设计》课程设计报告题目:停车场管理系统的设计专业:计算机科学与技术班级:13级(3)班姓名:指导教师:**成绩:计算机与信息工程系二0一五年月日目录1、设计内容及要求2、整体设计停车模块车辆信息浏览模块取车模块3、运行与测试报告4、设计感想5、源程序代码设计目的:通过设计一个停车场管理系统,进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具,同时也掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。

设计内容:1.有一个两层的停车场,每层有6个车位,当第一层车位停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共四项,其中停车时间按分钟计算。

2.假设停车场初始状态为第二层已经有四辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。

即先将这四辆车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)3.停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件“car.dat”中,并将在此之前的停车时间加5。

(此题简化时间的处理:当有一辆车进入时才对别的车加时间5分钟)4.收费管理(取车):当有车开走时,输入其车牌号,先按其停车时间计算费用,每5分钟2毛钱。

同时从文件“car.dat”k 删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组清零)。

按用户的选择来判断是否要输出停车收费的总计。

5.输出停车场中全部车辆的信息。

6.退出系统。

需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车开走时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。

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的堆栈来模拟。

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

停车场管理系统—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);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。

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

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

c语言课程设计主题停车管理系统主题停车管理系统教官颜东学生专业电子信息工程教学单位物理系(盖章)目录1设计能力和设计要求1.1系统功能简介1.2系统运行环境2功能划分,模块详细说明3程序流程图4操作和操作说明4.1系统的运行4.2操作说明摘要5......5......6......7......8......9 (9)附件:源程序列表1设计能力和设计要求1.1系统功能介绍⏹该系统具有简洁的菜单界面,用户通过输入简单的选项即可完成相应的工作。

⏹用户可以选择1、2、3、4进行相应的操作,统一查看,统一输出。

⏹这个停车场管理系统(1)停车场为两层,每层6个车位。

只有一楼住满了,二楼才能用。

(停车场可以用二维数组实现,每个数组元素存储一个车牌号。

)每辆车的来信(2)假设停车场的初始状态是一层停了4辆车,车位为1-4个,停车时间为20、15、10、5。

即这四辆车的信息会先存储在文件“car.dat”中(数组的对应元素也会被赋值)。

(3)停车操作:当一辆车进入停车场时,先输入其车牌号,然后分配给它一个楼层号和一个车位号(分配前检查车位的使用情况,如果一楼空着就停在一楼),停车时间设置为5。

最后,将新停放的汽车的信息添加到文件“car.dat”中,在此之前所有汽车的停放时间加5。

(4)收费管理(取车):汽车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。

(设置一个变量可以节省停车费),同时从文件“car.dat”中删除该车的信息,将该车对应的车位设置为可用状态(即二维数组的对应元素被重置)。

根据用户的选择,判断是否输出停车费。

(5)输出停车场所有车辆的信息。

(6)退出系统。

⏹1.2系统运行环境⏹运行在C++6.0,对硬件基本没有要求。

现在,大多数计算机系统都可以运行这个系统。

4系统的操作和描述4.1系统的操作系统初始运行时,会显示如图4-1所示的输入界面,用户可以根据提示做出相应的选择,完成系统提供的各种功能。

停车场c语言课程设计

停车场c语言课程设计

停车场c语言课程设计一、课程目标知识目标:1. 学生能理解C语言在现实问题解决中的应用,特别是停车场管理系统中的编程实现。

2. 学生能够掌握C语言中数组、结构体、函数等基本概念,并将其应用于停车场系统的设计。

3. 学生能够运用C语言中的条件语句和循环语句,实现对停车场车位的管理逻辑。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的停车场管理系统。

2. 学生通过课程实践,培养问题分析、程序设计、编码调试的能力。

3. 学生能够进行团队合作,共同完成课程设计任务,提高沟通与协作技巧。

情感态度价值观目标:1. 学生在课程实践中,培养对编程的兴趣,增强解决实际问题的信心。

2. 学生通过课程学习,认识到编程在现代社会中的重要作用,激发对计算机科学的热爱。

3. 学生在学习过程中,培养认真负责、严谨细致的学习态度,树立正确的价值观。

课程性质:本课程为信息技术学科的高年级课程,以C语言编程为核心,结合停车场管理系统实例,旨在提高学生的编程能力和实际问题解决能力。

学生特点:学生已具备一定的C语言基础,具有较强的逻辑思维能力,对实际应用有较高的兴趣。

教学要求:课程设计需贴近实际,引导学生主动探究,注重培养学生的动手能力和团队协作精神,提高学生的编程综合素质。

通过分解课程目标为具体学习成果,使学生在实践中达成预期目标,为后续教学设计和评估提供依据。

二、教学内容1. C语言基础知识回顾:数组、结构体、函数、指针、文件操作等。

- 教材章节:第二章数组、第三章函数、第四章结构体与联合、第六章指针、第七章文件操作。

2. 停车场管理系统需求分析:- 功能要求:车位管理、车辆进出管理、费用计算等。

- 教学大纲:第一节介绍停车场管理系统背景,第二节分析系统需求。

3. 停车场管理系统设计与实现:- 教学内容:系统架构设计、模块划分、代码编写与调试。

- 教材章节:第五章项目设计与实现。

4. C语言编程实践:- 教学内容:编写停车场管理系统相关功能模块,如车位分配、车辆查询、费用支付等。

C语言课程设计智能停车管理系统

C语言课程设计智能停车管理系统

目录摘要 (I)第一章绪论 (1)第二章系统分析 (3)2.1 停车场发展趋势分析 (3)2.2 智能停车管理系统功能需求 (4)2.3 系统菜单的主要功能 (6)第三章总体设计与详细设计 (7)3.1 算法分析 (7)3.2 系统流程图 (7)第四章编码实现 (10)4.1 判断便道是否拥挤 (10)4.2 判断该车是否在泊 (10)4.3 取车 (10)4.4 主函数 (11)第五章调试与测试 (12)5.1 存车 (12)5.2 取车 (13)总结与心得 (14)附录 (16)1 源代码 (16)2 参考资料 (22)摘要智能停车管理系统作为智能交通系统的一部分,其主要功能是从静态交通方面改善和缓解城市交通拥堵。

随着停车难和停车场泊位利用效率相对较低的矛盾日益突出,本文在分析现代智能停车管理系统功能需求、停车特性及有效泊位变化规律的基础上,提出了高效泊位诱导系统和停车场有效泊位短时预测方法,以充分发挥静态交通系统在改善城市动态交通方面的作用。

了解国内外停车管理系统发展趋势,结合国内停车管理需求和停车特性,提出完善的系统设计方案,在此基础上对泊车系统做出深入研究。

利用C语言和数据库开发技术实现泊位仿真演示系统。

分析研究停车场历史数据,此次停车时间以及费用。

关键词:智能停车管理;C语言;数据库第一章绪论随着经济发展和城市化进程的加快,我国城市机动车保有量得到了迅速增长,导致停车泊位和机动车数量增长的矛盾日益突出,但停车问题未受到应有的重视,随着城市交通和停车需求的不断增长,其势必将成为解决城市交通拥挤的瓶颈。

为满足日益增长的交通需求,改善交通设施现状和提高交通设施利用率迫在眉睫,具有诱人前景的“停车经济”必将蓬勃发展。

而随着大型停车场的不断兴建,旨在提高停车场运营效率的智能停车管理系统也将随之发展。

针对当前停车管理技术水平较低的现状,规划实施智能停车管理系统有利于对城市停车实现信息化、智能化、网络化的科学管理,通过合理配置、科学诱导,使驾驶员能够快速、准确、安全地停车,减少车辆因寻找泊位而产生对道路的占用,降低车辆尾气排放和噪声,缓解城市交通拥堵状况,同时最大程度地提高停车设施的利用率,减少违章停车现象,确保交通畅通、安全,具有很高的社会和经济效益。

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

C语言课程设计停车场管理
数据加密:确保用户数据安全 权限管理:限制不同用户访问权限 备份与恢复:定期备份数据,确保数据安全 监控与报警:实时监控系统运行情况,及时发现并处理异常情况
感谢您的观看
汇报人:
校等。
停车场管理系统的功能
车辆识别:自动识别车牌号码,记录车辆信息 车位管理:实时更新车位使用情况,显示剩余车位数量 收费管理:自动计算停车费用,支持多种支付方式 车辆引导:提供车辆引导服务,帮助车主快速找到空闲车位 安全监控:实时监控停车场内车辆和人员活动,保障停车场安全 数据分析:统计停车场使用情况,为停车场管理提供决策支持
错误处理:使用if、else、switch等语句进行错误处理,如处理输场管理系统中的优势
易于理解和学习:C语言语法简单,易于理解和学习,适合初学者使用。
强大的功能:C语言具有强大的功能,可以处理复杂的数据结构和算法,适合停车场管理系统 的需求。
高效的运行速度:C语言编译后的程序运行速度快,适合停车场管理系统对实时性的要求。
和性能。
停车场管理系统优化与改进
优化算法:提高系统运行效率,降低资源消耗 增加功能:如车位预约、停车引导、停车支付等 提高安全性:加强数据加密,防止数据泄露 优化用户体验:简化操作流程,提高用户满意度
06
停车场管理系统应用与 维护
停车场管理系统的部署与安装
硬件需求:服务器、网络设备、监控设备等 软件需求:停车场管理系统软件、数据库管理系统等 安装步骤:硬件安装、软件安装、系统调试等 维护与更新:定期检查硬件设备、软件更新、数据备份等
可移植性:C语言具有良好的可移植性,可以在不同的操作系统和硬件平台上运行,适合停车 场管理系统在不同环境下的运行需求。
04 停车场管理系统设计
停车场管理系统需求分析

c停车收费管理系统课程设计

c停车收费管理系统课程设计

c 停车收费管理系统课程设计一、教学目标本课程旨在通过学习C停车收费管理系统的设计与实现,使学生掌握停车场管理系统的基本原理、设计方法和实际应用。

在知识目标方面,要求学生了解停车场管理系统的相关概念、组成部分和工作原理;掌握C语言编程基础,能够运用C语言进行简单的系统开发。

在技能目标方面,要求学生能够运用所学的知识,独立设计并实现一个简单的停车场收费管理系统;具备一定的编程能力和问题解决能力。

在情感态度价值观目标方面,培养学生对计算机科学的兴趣和热情,提高学生运用计算机技术解决实际问题的意识。

二、教学内容本课程的教学内容主要包括停车场管理系统的理论知识、C语言编程基础以及停车场收费管理系统的具体设计。

具体安排如下:1.停车场管理系统的理论知识:介绍停车场管理系统的概念、组成部分、工作原理和分类,使学生了解停车场管理系统的整体框架。

2.C语言编程基础:讲解C语言的基本语法、数据类型、运算符、控制结构等,为学生实现停车场收费管理系统提供编程基础。

3.停车场收费管理系统的具体设计:引导学生运用所学的C语言知识,设计并实现一个简单的停车场收费管理系统,包括车位信息的录入、查询、停车费计算等功能。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。

包括:1.讲授法:讲解停车场管理系统的理论知识、C语言编程基础等,使学生掌握基本概念和原理。

2.案例分析法:分析实际停车场收费管理系统的案例,使学生了解停车场管理系统的应用场景和实际问题。

3.实验法:学生进行编程实践,设计并实现一个简单的停车场收费管理系统,提高学生的动手能力和问题解决能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供停车场管理系统的基本理论和C语言编程知识。

2.参考书:提供相关的参考书籍,为学生深入学习提供更多资料。

3.多媒体资料:制作精美的课件、教学视频等,提高学生的学习兴趣和效果。

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

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

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

.。

...。

....。

.。

...。

.。

.....。

....。

..。

.。

.。

.。

.。

.。

.....。

.。

.。

.。

....。

..。

...。

32 概要设计。

.。

.。

.。

..。

..。

.。

..。

.。

.。

.。

.。

.。

.。

.。

..。

..。

.。

..。

..。

..。

.。

....。

..。

....。

.。

.。

.33详细设计..。

..。

.。

.。

.。

.。

.。

..。

..。

.。

..。

.。

.....。

.。

.。

..。

..。

.。

..。

..。

.......。

..。

.。

...。

..。

..。

44 运行环境..。

..。

.。

..。

.。

.。

..。

.。

....。

.。

.。

..。

.。

..。

.。

..。

..。

..。

...。

..。

.。

.。

..。

..65开发环境。

.。

..。

..。

..。

..。

...。

..。

.。

...。

.。

.。

..。

.。

......。

.。

.。

.。

.。

.。

.。

66 程序设计.。

.。

..。

.。

.....。

...。

....。

.。

...。

.。

.。

.。

..。

..。

..。

..。

.。

......。

..。

.。

.。

.。

67 调试分析。

.。

...。

..。

.。

......。

.。

.。

....。

.。

.。

...。

..........。

.。

..。

..。

..。

.。

..。

.。

118 测试结果。

.。

.。

.。

.。

.。

..。

..。

.。

.。

.。

.。

...。

........。

..。

.。

..。

.。

.。

.。

...。

.。

.。

. (19)9参考文献.。

..。

....。

.。

.。

..。

.。

..。

.。

...。

.....。

..。

.。

..。

.。

.。

...。

....。

.。

(22)10心得体会。

.。

.。

.。

.。

.。

..。

.。

...。

..。

...。

......。

..。

....。

.。

....。

..。

.。

.。

.....。

.。

...。

(23)11成绩评价表。

.。

.。

..。

.。

.。

.。

..。

.。

...。

.。

.。

...。

......。

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

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

停车场管理系统一、需求分析设计一个停车场管理系统,停车场管理系统功能包括:车辆到达,车辆离开,查询车辆信息等。

具体要求如下:(1)、车辆到达:根据车辆到达查询停车场是否有空位:若尚有空位,则让车辆进停车场,输入车牌号和车辆进停车场的时间;若停车场已满则可进入通道等候。

(2)、车辆离开:根据客户提供的情况,为客户办理离开车场手续,并计算和打印该车辆停车需要的费用。

然后查询通道是否有车辆排队,首先查询排在第一车辆,若满足则车进场。

(3)、查询车辆信息:根据客户的要求可以打印停车场和便道的车辆信息,包括:车牌号,车辆到达时间。

根据题目要求可知本题目的是按照从读文件读取的数据序列进行模拟管理。

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

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

二、概要设计(二)、本程序主要分四个模块实现功能(1)、以栈模拟停车场,以队列模拟车场外的通道,按照从终端读入的输入数据序列进行模拟管理。

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

InitStack(SqStackCar *s)操作结果:初始化栈,构造空的模拟车站SqStackCar 。

Push(SqStackCar *s,CarNode *e)操作结果:进站函数,车辆进站。

Pop(SqStackCar *s,CarNode *e)操作结果:出站函数,车辆出站。

StackEmpty(SqStackCar s)操作结果:判断车站是否为空。

InitQueue(LinkQueueCar *Q)操作结果:初始化通道,构造空的队列。

QueueEmpty(LinkQueueCar Q)操作结果:判断通道是否为空。

EnQueue(LinkQueueCar *Q,CarNode *e)操作结果:车辆进队列,即进通道。

大学-C语言-停车场管理系统-设计c语言课程设计-(含调试图)

大学-C语言-停车场管理系统-设计c语言课程设计-(含调试图)

Xxxxx大学xxxxxxxxxxx系20xx-20xx学年第一学期《C程序设计》课程设计题目名称:停车场管理系统设计姓名:学号:班级:指导教师:编写日期: 20 年1月5日—20 年1月31日成绩:目录(一)需求分析 (3)1-1停车 (3)1-2取车 (3)1-3功能的选择 (3)(二)总体设计(程序设计组成框图) (3)2-1停车模块 (3)2-2取车模块 (3)2-3车辆信息浏览模块 (4)2-4程序设计组成框图 (4)(三)详细设计 (4)3-1停车场分析 (4)3-2停车操作 (4)3-3收费管理(取车) (5)3-4车辆信息 (5)3-5退出系统 (5)(四)程序运行结果测试与分析 (5)(五)结论与心得 (7)(六)参考文献 (7)(七)致谢 (8)附录: (8)(一)需求分析1-1停车车辆信息要用文件存储,因而要提供文件的输入输出操作。

1-2取车当车离开时,要删除文件中该车的信息,因而要提供文件的删除操作。

1-3功能的选择提供现实操作和用键盘式菜单实现功能选择。

(二)总体设计(程序设计组成框图)2-1停车模块对车辆信息赋值,分配前检查车位使用情况(按行查找park 数组,元素为0 表示车位为空,则允许分配)。

把新添加的车辆信息以追加的方式写入汽车信息文件,并更改汽车信息文件中其他汽车信息的停车时间(停车时间加5)。

2-2取车模块计算费用(停车费用=停车时间*0.2 元),从文件中删除该车信息。

并将该车位对应的二位数组变量设为0,表示该车位可用。

输出提示信息:是否输出停车费用总计?(Y/N)如果选择Y,则输出停车费用,否则回到上级菜单。

2-3车辆信息浏览模块输出车辆信息文件中的记录。

另外,用户按Esc 键退出系统。

2-4程序设计组成框图(三)详细设计3-1停车场分析有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层。

( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.dat”中。

数据结构c语言版课程设计停车场管理系统

数据结构c语言版课程设计停车场管理系统

课程设计:停车场c语言版本的数据结构课程设计,规定用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译#include <stdio.h>//#include <stdlib.h> //malloc#include <time.h> //获取系统时间所用函数#include <conio.h> //getch()#include <windows.h> //设立光标信息mallco#define MaxSize 5 /*定义停车场栈长度*/#define PRICE 0.05 /*每车每分钟收费值*/#define BASEPRICE 0.5 //基础停车费#define Esc 27 //退出系统#define Exit 3 //结束对话#define Stop 1 //停车#define Drive 2 //取车int jx=0,jy=32; //全局变量日记打印位置typedef struct{int hour;int minute;}Time,*PTime; /*时间结点*/typedef struct /*定义栈元素的类型即车辆信息结点*/ {int num ; /*车牌号*/Time arrtime; /*到达时刻或离区时刻*/}CarNode;typedef struct /*定义栈,模拟停车场*/{CarNode stack[MaxSize];int top;}SqStackCar;typedef struct node /*定义队列结点的类型*/{int num; /*车牌号*/struct node *next;}QueueNode;typedef struct /*定义队列,模拟便道*/{QueueNode *front,*rear;}LinkQueueCar;/*函数声明*/PTime get_time();CarNode getcarInfo();void qingping(int a);void gotoxy(int x,int y);void printlog(Time t,int n,int io,char ab,int po,double f);void printstop(int a,int num,int x0,int y0);void printleave(int a,int po,int num);/*初始化栈*/void InitSeqStack(SqStackCar *s){s->top=-1;}/* push入站函数*/int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈{if(s->top==MaxSize-1)return(0); //假如栈满,返回0 else{s->stack[++s->top]=x; //栈不满,到达车辆入栈return(1);}}/*栈顶元素出栈*/CarNode pop(SqStackCar *s){CarNode x;if(s->top<0){x.num=0;x.arrtime.hour=0;x.arrtime.minute=0;return(x); //假如栈空,返回空值}else{s->top--;return(s->stack[s->top+1]); //栈不空,返回栈顶元素}}/*初始化队列*/void InitLinkQueue(LinkQueueCar *q){q->front=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点,作头结点if(q->front!=NULL){q->rear=q->front;q->front->next=NULL;q->front->num=0; //头结点的num保存队列中数据元素的个数}}/*数据入队列*/void EnLinkQueue(LinkQueueCar *q,int x){QueueNode *p;p=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点p->num=x;p->next=NULL;q->rear->next=p; //新结点入队列q->rear=p;q->front->num++; //队列元素个数加1}/*数据出队列*/int DeLinkQueue(LinkQueueCar *q){QueueNode *p;int n;if(q->front==q->rear) //队空返回0return(0);else{p=q->front->next;q->front->next=p->next;if(p->next==NULL)q->rear=q->front;n=p->num;free(p);q->front->num--;return(n); //返回出队的数据信息}}/********************* 车辆到达***************************/ //参数:停车栈停车队列车辆信息//返回值:空//功能:对传入的车辆进行入栈栈满则入队列void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x){int f;f=push(stop,x); //入栈if (f==0) //栈满{EnLinkQueue(lq,x.num); //入队printstop(1,lq->front->num,0,23);printlog(x.arrtime,x.num,1,'B',lq->front->num,0);qingping(0); printf("您的车停在便道%d号车位上\n",lq->front->num); //更新对话}else{printstop(0,stop->top+1,0,23);printlog(x.arrtime,x.num,1,'P',stop->top+1,0);qingping(0); printf("您的车停在停车场%d号车位上\n",stop->top+1); //更新对话}qingping(1); printf("按任意键继续");getch();}/************************** 车辆离开*************************************///参数:停车栈指针s1,暂存栈指针s2,停车队列指针p,车辆信息x//返回值:空//功能:查找栈中s1的x并出栈,栈中没有则查找队p中并出队,打印离开收费信息void Leave(SqStackCar *s1,SqStackCar *s2,LinkQueueCar *p,CarNode x){double fee=0;int position=s1->top+1; //车辆所在车位int n,f=0;CarNode y;QueueNode *q;while((s1->top > -1)&&(f!=1)) //当栈不空且未找到x{y=pop(s1);if(y.num!=x.num){n=push(s2,y);position--;}elsef=1;}if(y.num==x.num) //找到x{gotoxy(33,17);printf("%d:%-2d",(x.arrtime.hour-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute) );fee=((x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute))*PRICE+BASEP RICE;gotoxy(48,17); printf("%2.1f元\n",fee);qingping(0); printf("确认您的车辆信息");qingping(1); printf("按任意键继续");getch();while(s2->top>-1){ y=pop(s2);f=push(s1,y);}n=DeLinkQueue(p);if(n!=0){y.num=n;y.arrtime=x.arrtime;f=push(s1,y);printleave(p->front->num+1,position,s1->top+1); //出栈动画ji队列成员入栈printlog(x.arrtime,x.num,0,'P',position,fee);printlog(y.arrtime,y.num,1,'P',s1->top+1,0);}else{printleave(0,position,s1->top+2);printlog(x.arrtime,x.num,0,'P',position,fee);}}else //若栈中无x{while(s2->top > -1) //还原栈{y=pop(s2);f=push(s1,y);}q=p->front;f=0;position=1;while(f==0&&q->next!=NULL) //当队不空且未找到xif(q->next->num!=x.num){q=q->next;position++;}else //找到x{q->next=q->next->next;p->front->num--;if(q->next==NULL)p->rear=p->front;gotoxy(33,17); printf("0:0");gotoxy(48,17); printf("0元");qingping(0); printf("您的车将离便道");qingping(1); printf("按任意键继续");getch();printleave(-1,position,p->front->num+1); //出队动画printlog(x.arrtime,x.num,0,'B',position,0);f=1;}if(f==0) //未找到x{qingping(0); printf("停车场和便道上均无您的车");qingping(1); printf("按任意键继续");getch();}}}/*获取系统时间*///返回PTime类型PTime get_time(){Time *t;t=new Time;time_t timer;struct tm *tblock;timer=time(NULL);tblock=localtime(&timer);t->minute=tblock->tm_min;t->hour=tblock->tm_hour;return t;}/*移动光标*///蒋光标移动到(x,y)点void gotoxy(int x,int y){COORD coord;coord.X=x;coord.Y=y+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); }/*画图*///画出系统界面void panitPL(){gotoxy(20,4);printf("****************对话框****************");int x=18,y=6; //起始点int a[2][4]={2,0,0,1,-2,0,0,-1}; //方向for(int i=0;i<2 ;i++){for(int j=0; j<20; j++){x+=a[i][0]; y+=a[i][1];gotoxy(x,y);printf("═");}x+=a[i][0]; y+=a[i][1];gotoxy(x,y);if(i==0)printf("╗");elseprintf("╚");for(j=0; j<12; j++){x+=a[i][2]; y+=a[i][3];gotoxy(x,y);printf("║");}x+=a[i][2]; y+=a[i][3];gotoxy(x,y);if(i==0)printf("╝");elseprintf("╔");}gotoxy(22,8);printf("小王:");gotoxy(22,11);printf("顾客:");gotoxy(22,14); printf("*********** 停车信息***********");gotoxy(23,15); printf("车牌号:");gotoxy(42,15); printf("时间:");gotoxy(23,17); printf("停车时长:");gotoxy(42,17); printf("收费:");}/*清屏函数*///更新对话框前将原对话晴空void qingping(int a){if(a==0) //清空小王的对话{gotoxy(28,8); printf(" ");gotoxy(28,9); printf(" ");gotoxy(28,8);}else if(a==1) //清空顾客的对话{gotoxy(28,11); printf(" ");gotoxy(28,12); printf(" ");gotoxy(28,13); printf(" ");gotoxy(28,11);}else //清空车辆信息{gotoxy(31,15); printf(" ");gotoxy(48,15); printf(" ");gotoxy(33,17); printf(" ");gotoxy(48,17); printf(" ");gotoxy(31,15);}}//用上下键移动选择int getkey(){char c;int x=28,y=11;while(1){gotoxy(x,11); printf(" ");gotoxy(x,12); printf(" ");gotoxy(x,13); printf(" ");gotoxy(x,y); printf(">>");c=getch();if(c==13) return y-10; //enter键返回当前选项if(c!=-32)continue; //不是方向键进行下次循环c=getch();if(c==72) if(y>11) y--; //上if(c==80) if(y<13) y++; //下}}//输入车辆信息CarNode getcarInfo(){PTime T;CarNode x;qingping(0); printf("请输入您的车牌号\n");qingping(1); printf("在下面输入车辆信息");qingping(2);scanf("%d",&(x.num));T=get_time();x.arrtime=*T;gotoxy(48,15); printf("%d:%d",x.arrtime.hour,x.arrtime.minute);getch();return x;}//打印停车场void printcar(){gotoxy(0,20); //╔ ╗╝╚═║printf("═══════════════════════════════════════╗");printf(" 出场暂放区║ 1 2 3 4 5 ║");printf("---------------------------------------------------------------------- ║");printf(" 主车道║");printf("---------------------------------------------------------------------- ║");printf(" 12 11 10 9 8 7 6 5 4 3 2 1 ║");printf("═══════════════════════════════════╗ ║");printf(" ↑ ╔══════════════╝ ║");printf(" 便道停车区→ ║ 1 2 3 4 5 ║");printf(" ╚══════════════════╝");printf(" 停车场管理日记\n\n");printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) "); }//打印日记记录void printlog(Time t,int n,int io,char ab,int po,double f){jy++;gotoxy(jx,jy);// printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) ");if(io==0)printf("/ %2.1f",f);gotoxy(jx,jy);printf(" / %d / %c:%d",io,ab,po);gotoxy(jx,jy);printf(" %d:%d / %d",t.hour,t.minute,n);}void printstop(int a,int num,int x0,int y0){static char *car="【█】";// int x0=0,y0=23;int x=0,y=28;if(a==0){x=(num+6)*6;for(;x0<72;x0++){gotoxy(x0,y0); printf("%s",car); Sleep(30);gotoxy(x0,y0); printf(" ");}for(;y0<y;y0++){gotoxy(x0,y0); printf("%s",car); Sleep(100);gotoxy(x0,y0); printf(" ");}for(;x0>x;x0--){gotoxy(x0,y0); printf("%s",car); Sleep(50);gotoxy(x0,y0); printf(" ");}gotoxy(x,y);printf("%s",car);}else{x=(12-num)*6;y=y-3;for(;x0<x;x0++){gotoxy(x0,y0); printf("%s",car); Sleep(30);gotoxy(x0,y0); printf(" ");}gotoxy(x,y);printf("%s",car);}}void printleave(int a,int po,int num){static char *car="【█】";int x0=0,y0=23;int x=0,y=28;int i;if(a==-1){x=(12-po)*6;y=y-3;gotoxy(x,y); printf(" ");gotoxy(x,y-2); printf("%s",car);Sleep(100);if(12>num){gotoxy((12-num)*6,y);printf(" ");}gotoxy(x,y); printf("%s",car);for(;x>x0;x--){gotoxy(x,y-2); printf("%s",car); Sleep(30);gotoxy(x,y-2); printf(" ");}}else{i=num+1;for(;num>po;num--){x=(num+6)*6; y=28;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y>21;y--){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>(i-num+6)*6;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}gotoxy(x,y); printf("%s",car);}x=(po+6)*6; y=28;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y>23;y--){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>0;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}num++;for(;i-num>0;num++){x=(i-num+6)*6; y=21;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y<28;y++){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>(num-1+6)*6;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}gotoxy(x,y); printf("%s",car);}if(a>0){x=66;y=25;gotoxy(x,y); printf(" ");gotoxy(x,y-2); printf("%s",car); Sleep(100);if(12>a){gotoxy((12-a)*6,y);printf(" ");}if(a>1){gotoxy(x,y); printf("%s",car);}printstop(0,i-1,x,y-2);}}}/************************************************************ main ********************************************************/int main(void){SqStackCar s1,s2; //停车栈和暂存栈LinkQueueCar p; //队列InitSeqStack(&s1);InitSeqStack(&s2);InitLinkQueue(&p);printf(" 停车场管理系统\n\n");printf("************************* 欢(=^_^=)迎***************************\n");printf(" 收费标准:基础费0.5元,每分钟收取0.05元,收费精确到0.1元\n");printf(" PS:车牌号由阿拉伯数字组成");panitPL();printcar(); gotoxy(0,-3);char c=0; //接受按键while(1) //按ESC退出系统{for(int i=2;i>-1 ;i--) //初始化对话框qingping(i);printf("按ESC退出系统,其它键开始对话");c=getch();if(c==Esc){qingping(0);break;}while(1){qingping(2);gotoxy(28,8); printf("欢迎来到停车场!我是管理员小王。

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

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

停车场管理系统c语言课程设计随着城市化进程的加快,人们的生活质量不断提高,汽车已经成为了现代人出行的主要方式。

然而,随着汽车数量的增加,停车难题也日益凸显。

传统的停车方式已经无法满足人们的需求,因此停车场的建设和管理也变得越来越重要。

为了更好地管理停车场,本文设计了一款停车场管理系统。

二、需求分析本系统需要实现以下功能:1. 停车位管理:实现对停车位的管理,包括停车位的添加、删除、修改和查询等操作。

2. 车辆管理:实现对车辆的管理,包括车辆的进入、离开、查询和计费等操作。

3. 收费管理:实现对车辆的计费管理,包括按小时计费和按天计费。

4. 报表统计:实现对停车场的报表统计,包括车位使用情况、收入情况等。

三、系统设计1. 数据结构设计本系统主要包括两个数据结构:停车位和车辆。

停车位包括编号、位置、状态等信息;车辆包括车牌号、进入时间、离开时间、停车位等信息。

2. 界面设计本系统的界面采用命令行界面,用户可以通过输入命令来完成对系统的操作。

界面包括以下命令:添加停车位:add_space删除停车位:del_space修改停车位:mod_space查询停车位:query_space车辆进入:car_in车辆离开:car_out查询车辆:query_car计费管理:charge报表统计:report退出系统:exit3. 算法设计本系统的算法主要包括车辆进入、离开和计费等算法。

车辆进入:当车辆进入停车场时,系统需要检查是否有空闲停车位,如果有则将车辆停放在该停车位上,并记录车辆信息;如果没有则提示用户无法停车。

车辆离开:当车辆离开停车场时,系统需要计算停车时长并根据收费标准计算费用,并将车辆信息从停车位中删除。

计费管理:系统需要根据停车时长和收费标准计算车辆的费用,包括按小时计费和按天计费。

四、实现过程本系统采用C语言实现,主要包括以下模块:1. 停车位管理模块:实现对停车位的添加、删除、修改和查询等操作。

C语言课设之停车场管理系统

C语言课设之停车场管理系统

C语言课程设计实习报告目录一. 题目要求二. 需求分析三.总体设计四. 具体程序五. 上机操作及使用说明六. 存在问题与不足七. 学习心得停车场管理一. 题目要求1.设计一个停车场用长度为N的堆栈来模拟。

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

2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。

二. 需求分析根据题目要求首先设计一个堆栈,以堆栈来模拟停车场,又每辆汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素设计成汽车的车牌号。

当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。

这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。

当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。

另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。

由于时间不像汽车一样需要让道,可设计了一个顺序表来存放时间。

又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。

三. 总体设计四. 具体程序#include <stdio.h>#include <malloc.h> #define SIZE 3#define NULL 0 typedef struct{ int hour;int min;} time;typedef struct{ int num;int position;time t;float money;} Car;typedef struct{ Car elem[SIZE+1]; int top;} Stack;typedef struct Node { Car data;struct Node *next; }CQueueNode;typedef struct{ CQueueNode *front;CQueueNode *rear;}LinkQueue;void InitStack(Stack *S){ S->top=0; }void Push(Stack *S,Car *r){ S->top++;S->elem[S->top].num=r->num;r->position=S->elem[S->top].position=S->top;S->elem[S->top].t.hour=r->t.hour;S->elem[S->top].t.min=r->t.min;}int IsEmpty(Stack* S){ return(S->top==0?1:0); }int IsFull(Stack *S){ return(S->top==SIZE?1:0); }int GetTop(Stack *S,Car *n){ n->num=S->elem[S->top].num;n->position=S->elem[S->top].position;n->t.hour=S->elem[S->top].t.hour;n->t.min=S->elem[S->top].t.min;return 1;}void InitQueue(LinkQueue *Q){ Q->front=(CQueueNode*)malloc(sizeof(CQueueNode)); if(Q->front!=NULL){ Q->rear=Q->front;Q->front->next=NULL; }}int EnterQueue(LinkQueue *Q,Car *t){ CQueueNode *NewNode;NewNode=(CQueueNode*)malloc(sizeof(CQueueNode)); if(NewNode!=NULL){NewNode->data.num=t->num;NewNode->data.t.hour=t->t.hour;NewNode->data.t.min=t->t.min;NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;return 1;}else return 0;}{ CQueueNode *p;if(Q->front==Q->rear)return 0;p=Q->front->next;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;x->num=p->data.num;x->t.hour=p->data.t.hour;x->t.min=p->data.t.min;free(p);return 1;}void print1(Stack *S){int tag;Car x;printf("停车场停车情况:\n");if(IsEmpty(S))printf("无车!");for(tag=S->top;S->top>0;S->top--)if(GetTop(S,&x))printf("车牌号%d,所在位置%d,到达/离开时间 %d:%d\n",x.num,x.position,x.t.hour,x.t.min);S->top=tag;}void print2(LinkQueue *Q){ CQueueNode *p;p=Q->front->next;for(;p!=NULL;p=p->next)printf("等待车牌号%d, 到达/离开时间 %d:%d",p->data.num,p->data.t.hour,p->data.t.min);}void TaM(Car *r,int h,int m){ if(m>r->t.min){r->t.min+=60;r->t.hour-=1;}h=r->t.hour-h;m=r->t.min-m;printf("\n停车 %d小时 %d 分钟\n",h,m);printf("每小时收费30元\n");h=h*60;m=h+m;r->money=0.5*m;printf("请支付金额%.2f元\n",r->money);}{if(IsFull(S)){ printf("车库已满,请等待!");EnterQueue(Q,r);}else{Push(S,r);printf("\n您现在所在位置 %d",r->position);}}void Out(Stack *S,Stack *S0,Car *r,LinkQueue *Q){ int tag=S->top;Car x;if(IsEmpty(S)) printf("没有此车!");else{ for(;r->num!=S->elem[tag].num&&tag>0;tag--){ Push(S0,&S->elem[tag]);S->top--;}if(r->num==S->elem[tag].num){ TaM(r,S->elem[tag].t.hour,S->elem[tag].t.min);S->top--;for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);if(S->top<SIZE && Q->front!=Q->rear){ DeleteQueue(Q,&x);Push(S,&x);}}else if(tag==0){ printf("未进入停车场应支付金额 0元!");for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);}}}void print(){printf("\n***********************************欢迎光临*************************************\n");printf("\n 请选择:\n");printf("\n 1 :到达");printf("\n 2 :离开");printf("\n 3 :搜索");printf("\n 4 :退出\n");printf("\n");}int main(){ int n,m,i=1,j,flag=0;Car c[10];Car x;Stack S,S0;LinkQueue Q;InitStack(&S);InitStack(&S0);InitQueue(&Q);while(1){ print();scanf("%d",&m);switch(m){case 1:printf("\n请输入车牌号:");scanf("%d",&c[i].num);printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[i].t.hour,&c[i].t.min); In(&S,&Q,&c[i]);i++;break;case 2:printf("\n请输入车牌号:");scanf("%d",&n);for(j=0;j<10;j++)if(n==c[j].num) break;printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[j].t.hour,&c[j].t.min); Out(&S,&S0,&c[j],&Q); break;case 3: print1(&S);print2(&Q);break;case 4: flag=1; break;default:printf("\n输入错误,请输入 1,2,3 或4"); }if(flag)break;} return 0;}五. 上机操作及使用说明运行Microsoft Visual C++,进入运行状态:1.主菜单:根据页面提示,输入相应数字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
停车场管理系统
1
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进 出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到
达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆 只能在停车场大门外的便道上等待, 一旦停车场内有车开走,则排在便道上的第 一辆车就进入停车站。停车站内如有某辆车要开走,在它之后进入停车场的车都 必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。 每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。 如果停留 在便道上的车未进停车场就要离去, 允许其离去,不收停车费,并且仍然保持在 便道上等待的车辆的次序。编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及
某辆车离开停车场是的停车时间及它应该交的费用。
2
根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中, 需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要 计时计费。另外,每天开始时,停车场要初始化。
给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:
未满,指定停车场位置
void jinru()/*车辆进入函数*/
{
int i,a;
int h=0;
printf("\n\n请输入该车次序号(从0号开始):");
sea nf("%d",&a);
for(i=0;i<N;i++)
{
if(ehn[i].neikong==0);/*无车标记0*/
struct car/*车辆信息*/
{
int car_num;/*车辆次序号*/ int car_arr;/*车辆到达时间*/ int car_lef;/*车辆离开时间*/
int car_stay;/*车辆停放位置*/ }car[CIXUHAO];
其中,CIXUHAO是车辆次序号的宏定义:
#define CIXUHAO 1000/*预设车辆次序号。不管车辆到达时停在场内或便道, 均 依次设置一个次序号,由0开始*/
fee=D*(car[i].car_lef-car[i].car_arr);
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);/*退出*/
chn[i].neikong=0;/*将场内车道设置为空*/
for(j=0;j<=M-1;j++)
chw[i].waikong=0;/*将便道车道设置为空*/
printf("\n\n\t\t已初始化\n\n");
menu();
}函数出示化后将回到菜单界面。
车辆进入函数:
【需求分析】
车辆到达后,要指定车辆的停车位置。 用户根据菜单函数进入车辆进入模块 按照每辆车的到达次序给予车辆次序号,由0号开始。车辆信息也建立结构体
if(ehn[i].neikong==1)/*有车标记1*/ h=h+1;
}
if(h==N)
printf("停车场内已停满,请停在便道上\n");
else
{
car[a].car_stay=h;
chn[ h]. neik on g=1;
printf("该车应该停在停车场内第道%d(从0道开始记)\n",h); printf("请输入该车进停车场时刻(24小时整点计时):\n");
}
结束
菜单函数:void menu(){
int n,w; do
puts("\t\t**************MENU**************\n\n");
puts("\t\t\t1.初始化");
puts("\t\t\t2.有车进入");
puts("\t\t\t3.有车离开");
puts("\t\t\t4.退出");
void likai()/*车辆离开函数*/
{ int i,k,choi,time;
double fee;
printf("请输入离开车辆次序号[
sca nf("%d",&i);
printf("\n请输入离开车辆的离开时刻(24小时整点计时):\n");
sca nf("%d",&car[i].car_lef);
{
int waikong;
}chw[M-1];
N和M分别是停车场和便道的车位预设值,用宏定义。用户可根据实际情况改 变。
#define N100/*预设停车场有100个车位*/
#define M100/*预设便道有100个出位*/
void chushi()/*初始化函数*/
{
int i,j;
for(i=0;i<=N-1;i++)
3
这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4
mai n()函数体内包含了界面选则部分men u(),并单独 抽出来作为一个独立函数,目的在于系统执行每部分 模块后能够方便返回到系统界面。即ma in()函数写为
如下:
void mai n()/*主函数*/
{
menu();/*菜单函数*/
}
}
初始化模块设计:
【需求分析】
该模块是将每一天开始的停车场内和便道车位清零。 首先建立场内场外的结
构体,结构体内成员即车位的状态。用循环实现车位的致零即可。
struct changnei/*场内车道信息*/
{
int neikong;
}chn[N-1];
struct changwai/*场外车道信息*/
sea nf("%d",&car[a].car_arr);
} 回到菜单。
车辆离开函数:
【需求分析】
若有一辆车要离开,则需要记 录该车的离开时间,以计算出该车 在停车场内的停车时间和应该缴纳 的费用。该车离开后,要判断便道 上是否有车等待进入,如有,则将 便道上第一辆车停放在停车场内最 后的位置并记录好进场时间;若无, 则返回菜单。
相关文档
最新文档