C语言课程设计报告停车场管理系统(1)
- 格式:doc
- 大小:207.00 KB
- 文档页数:22
c语言课程设计停车场一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和编程技巧,通过编写程序实现停车场管理系统,培养学生的实际编程能力和问题解决能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本数据类型、运算符和表达式;(2)了解函数的定义和调用方法;(3)熟悉数组的声明和使用;(4)理解指针的概念和应用。
2.技能目标:(1)能够运用C语言编写简单的程序;(2)学会使用函数 modularize 代码;(3)掌握数组在程序中的应用;(4)了解指针的基本操作和内存管理。
3.情感态度价值观目标:(1)培养学生的团队合作意识和沟通能力;(2)激发学生对计算机科学的兴趣和好奇心;(3)培养学生解决问题的能力和创新精神。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言基础知识:数据类型、运算符、表达式、函数、数组、指针等;2.停车场管理系统的需求分析;3.停车场管理系统的程序设计;4.程序调试和优化。
具体安排如下:第1-2课时:C语言基础知识讲解和练习;第3-4课时:停车场管理系统的需求分析及总体设计;第5-6课时:停车场管理系统的详细设计和程序编写;第7课时:程序调试和优化。
三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用以下教学方法:1.讲授法:讲解C语言的基本语法和编程技巧;2.案例分析法:通过分析停车场管理系统的实际案例,引导学生思考和解决问题;3.实验法:让学生动手编写程序,实现停车场管理系统;4.小组讨论法:分组进行讨论和合作,培养学生的团队合作意识和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C程序设计语言》;2.参考书:《C Primer Plus》、《C和指针》;3.多媒体资料:PPT课件、教学视频、在线教程等;4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。
重庆科技学院《面向对象程序设计》课程设计报告学院:电气与信息工程学院专业班级:计科2012-05学生姓名:蒋鑫学号: 2012442101设计地点(单位)_____I313________设计题目:_ 停车场管理系统 ___完成日期: 2014 年 1月 8 日指导教师评语: ______________________ _______________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书设计题目:停车场管理系统设计学生姓名蒋鑫课程名称面向对象课程设计专业班级计科12-5班地点I313 起止时间12月30日~1月10日设计内容及要求1)问题描述定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。
定义一个管理类,完成对停车场的管理。
停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
2)功能要求(1)添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
C语言课程设计报告目录一、题目要求,需求分析二、总体设计思路与功能模块划分三、程序设计四、程序运行测试五、总结前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。
人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在本学期最后安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:一、题目要求:27.停车场管理21、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。
算法与数据结构课程设计题目:停车场管理专业班级:软件四班姓名:学号:指导教师:成绩:______________目录一、题目及要求 (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的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
停车场管理系统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语言课程设计主题停车管理系统主题停车管理系统教官颜东学生专业电子信息工程教学单位物理系(盖章)目录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语言实习报告一、实习背景在城市化进程不断加速的背景下,汽车数量急剧增长,停车难的问题日益突出,停车场管理系统成为解决这一问题的重要途径。
为了更好地了解和掌握停车场管理系统的开发过程和实现方法,我选择了该方向作为我的实习内容。
二、实习过程在实习过程中,我主要参与了停车场管理系统的需求分析、模块设计和编码实现等工作。
1.需求分析首先,我对停车场管理系统的需求进行了详细地分析和理解。
通过与公司内部相关人员的交流和讨论,我了解到停车场管理系统主要包括车辆信息管理、停车记录管理和收费管理等功能。
2.模块设计在需求分析的基础上,我开始进行停车场管理系统的模块设计工作。
根据需求,我划分出了车辆信息管理模块、停车记录管理模块和收费管理模块等多个模块。
然后,我详细地设计了这些模块的功能和数据流程,并与其他开发人员进行了交流和讨论。
3.编码实现在模块设计完成后,我开始进行停车场管理系统的编码实现工作。
首先,我选择了C语言作为开发语言,并使用了相关的开发工具。
然后,我按照设计的流程和规范进行了编码工作,并通过反复调试和测试,最终实现了一个具有基本功能的停车场管理系统。
三、实习收获通过这次实习,我对停车场管理系统的开发和实现过程有了更深入的了解和掌握。
首先,我学会了如何进行需求分析和模块设计,并将其应用于实际开发中。
其次,我通过实际编码实现了停车场管理系统,并通过调试和测试不断完善和优化。
最后,我还与其他开发人员进行了紧密的合作和协调,提高了我与他人沟通和协作的能力。
四、总结与展望通过这次实习,我对停车场管理系统有了全面的认识和了解,并学会了如何进行开发和实现。
但是,在实际工作中还存在一些不足之处,比如对一些技术的了解不够深入和对一些问题的解决不够完善。
因此,我希望今后能够进一步加强相关技术的学习和研究,提高自己的综合能力和解决问题的能力。
在未来的工作中,我将继续深入研究和学习停车场管理系统的相关技术,并通过不断地实践和探索,提高自己的专业能力和水平。
课程设计课程设计名称:课程设计专业班级:学生姓名:学号:指导教师:课程设计时间:目录1 需求分析。
.。
...。
....。
.。
...。
.。
.....。
....。
..。
.。
.。
.。
.。
.。
.....。
.。
.。
.。
....。
..。
...。
32 概要设计。
.。
.。
.。
..。
..。
.。
..。
.。
.。
.。
.。
.。
.。
.。
..。
..。
.。
..。
..。
..。
.。
....。
..。
....。
.。
.。
.33详细设计..。
..。
.。
.。
.。
.。
.。
..。
..。
.。
..。
.。
.....。
.。
.。
..。
..。
.。
..。
..。
.......。
..。
.。
...。
..。
..。
44 运行环境..。
..。
.。
..。
.。
.。
..。
.。
....。
.。
.。
..。
.。
..。
.。
..。
..。
..。
...。
..。
.。
.。
..。
..65开发环境。
.。
..。
..。
..。
..。
...。
..。
.。
...。
.。
.。
..。
.。
......。
.。
.。
.。
.。
.。
.。
66 程序设计.。
.。
..。
.。
.....。
...。
....。
.。
...。
.。
.。
.。
..。
..。
..。
..。
.。
......。
..。
.。
.。
.。
67 调试分析。
.。
...。
..。
.。
......。
.。
.。
....。
.。
.。
...。
..........。
.。
..。
..。
..。
.。
..。
.。
118 测试结果。
.。
.。
.。
.。
.。
..。
..。
.。
.。
.。
.。
...。
........。
..。
.。
..。
.。
.。
.。
...。
.。
.。
. (19)9参考文献.。
..。
....。
.。
.。
..。
.。
..。
.。
...。
.....。
..。
.。
..。
.。
.。
...。
....。
.。
(22)10心得体会。
.。
.。
.。
.。
.。
..。
.。
...。
..。
...。
......。
..。
....。
.。
....。
..。
.。
.。
.....。
.。
...。
(23)11成绩评价表。
.。
.。
..。
.。
.。
.。
..。
.。
...。
.。
.。
...。
......。
一.需求分析(1).任务:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内,按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。
若车场内已停满n辆汽车,则后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出班车场为它让路,待该车开出大门后。
其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用(在变道上停留的时间不收费)。
(2).基本要求:①以栈模拟停车场,以队列模拟车场外的便道。
②从终端读入汽车到达或离去的数据,每组包括三项:1.是“到达”还是“离去”;2.汽车牌照号码;3.“到达”或“离去”的时刻;(3).市场需求:这个软件可以合理的安排停车场车辆的存放,查询目前在停车辆,以及计费。
同时当停车场内部车辆方满之后,我们可以根据在外部等待的车辆的先来后到的顺序,当车场空闲之后,再安排等待的车辆进入。
同时在计费的反面,是按分钟计费的,较为公平。
最后收费,将小于0.1元部分四舍五入。
二.概要设计模块大致划分:界面:main函数;Memu函数(主要界面)计算函数1.进入函数GoIn();2离开函数GoOut().;查看函数3.查看车场LookChang();4.查看变道LookDao();遇到的疑难问题1.根据题目要求,停车场需要用栈,而变道要用的是列队。
由于变道的原则是先到先离开,这和列队的原理是一样的,所以变道的建立是方便的,只要实现变道(列队)和停车场(栈)之间的数据连接即可。
但是栈是后入先出的,而停车场呢的车辆的离开时没有规律的,这样删除数据是十分不方便的2.同时在车辆的离去方面有,根据题目的要求,我们要计算出车俩的停车费用。
由于时间是60进制,而车辆的停车的费用是同过车辆的的停车时长来求的,那么便是通过离去的时间减去进入的时间来得出中间的时间,最后求出来的。
C语言课程设计报告题目:泊车管理系统学院:学号:姓名:指导教师:成绩:日期:《泊车管理系统》一、课程设计的目的与要求1.目的本课程设计是学生学习完《C语言程序设计》课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用C语言进行程序设计的方法,加深对C语言特点和使用C语言进行程序设计开发过程的理解,加强动手能力。
其主要目的是:(1)进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;(2)针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
(3)掌握C语言的编程技巧和上机调试程序的方法。
(4)掌握程序设计的常用算法。
2.要求:(1)要求从所给题目中任选若干个,每个学生必须独立完成课程设计,不能互相抄袭。
(2)设计完成后,对所完成的工作进行答辩。
(3)要求写出一份详细的课程设计报告。
(4)程序设计题目,须提交相应的程序,并需提供加注释的源程序,能正常运行。
二、开发环境1.硬件环境 : 机器型号:Hewlett-Packard Compaq Presario CQ40 Notebook PC内存配置:DDR2 SDRAM SO-DIMM 2.软件环境:操作系统:jdk1.5 + tomcat6 + mysql .开发工具:Microsoft Visual C++ 6.0三、题目描述及分析题目描述:本程序属于非数值计算型算法设计,学生需要设计出一个简单的泊车模拟系统所需要的基本功能,并设计简单的界面(无需图形化)。
假定有10个车位,汽车在到来的时候首先选择车位,然后记录当前停车的时间,在取车的时候再记录取车时间,根据停了多长时间来给出费用,本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。
题目分析:(1)通过提示菜单选择可以进行的操作。
课程设计:停车场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语言课程设计随着城市化进程的加快,人们的生活质量不断提高,汽车已经成为了现代人出行的主要方式。
然而,随着汽车数量的增加,停车难题也日益凸显。
传统的停车方式已经无法满足人们的需求,因此停车场的建设和管理也变得越来越重要。
为了更好地管理停车场,本文设计了一款停车场管理系统。
二、需求分析本系统需要实现以下功能: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语言课程设计报告——停车场管理1班级:学号:*名:**指导教师:***时间:2011年6月7日C课程设计报告目录一、题目及要求二、题目及要求三、题目及要求四、题目分析五、数据结构说明六、各函数算法分析七、程序测试八、课程设计感悟与收获九、源代码一、题目及要求[要求]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆国就进入停车场。
停车场内如有某辆车要走,在它之后进来的车都必须退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且其他在便道上等待的车辆的次序不变。
编制一程序模拟停车场管理。
[提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去时刻)。
例如:(’A’,1,5)表示1号牌照车在5这个时刻到达,而(’D’,5,20)表示5号牌照车在20这个时刻离去,整个程序可以在输入信息为(’E’,0,0)时结束。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
所以可以设两个堆栈。
二、题目分析由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列。
由此很容易联想到用结构体数组来存储车库信息。
又每个汽车的车牌号都不一样,这样一来就可以根据车牌号准确找到汽车位置。
当停车场内某辆车要离开时,在他之后进入的汽车必须再按原次序进入车库。
这是一个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个结构体数组,用来暂时存放为出站汽车暂时让道的汽车车牌号。
当车库满后,继续进来的汽车需要停放在车库旁边的便道上等候,若车库满后,继续进来的汽车需要停放在车库旁边的便道上等候,若车有汽车开走,这完全是一个先进先出模型,因此可以设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。
另外,停车场是根据汽车在停车场内停放的总长来收费的,在便道上的时间不计费,因此必须记录车辆进入车库时的时间,车辆离开车库时的时间不需要记录,当从终端输入时可直接使用。
另外,题目提示中的表示方法[(’A’,1,5)表示1号牌照车在5这个时刻到达]有两点不好;一、对用户友好程度不高,用起来并不方便;二、不接近实际情况,生活中表示时间的格式为“--:--”,完全可以建立一个时间结点来实现。
因此,实际编程中将对这一方面予以优化。
三、数据结构说明根据题意,停车场中的空间分为车库和便道。
这里用结构体来模拟车库和便道,按照从端读入数据序进行管理。
模拟车库和模拟便道中分别用结构体数组和链表来存储车辆信息。
模拟车库和模拟便道的数据结构如下表1和表2所示:C课程设计报告表1 模拟车库的数据结构用C语言实现这一部分为:typedef struct time{int hour;int min;}Time; /*时间结点*/typedef struct node{char num[10];Time reach;Time leave;}CarNode;/*车辆信息结点*/typedef struct NODE{CarNode *stack[MAX+1];int top;}Moni_Cheku;typedef struct car{CarNode *data;struct car *next;}QueueNode;typedef struct Node{QueueNode *head;QueueNode *rear;}Moni_Biandao;四、各函数算法分析(1)主函数void main(){Moni_Cheku Enter,Temp;Moni_Biandao Wait;int ch;InitStack(&Enter); /*初始化车站*/InitStack(&Temp); /*初始化让路的临时链表*/InitQueue(&Wait); /*初始化便道*/printf("\n");printf(" ^_^欢迎进入停车场管理系统1!^_^\n");printf("\n");printf("提示! (1).该车库的最大容量为:%d;\n" ,MAX);printf(" (2).该车库的收费标准为:%4.2f元/(辆*分钟).\n",price);while(1){printf("********************主菜单********************\n");printf("1.车辆到达");printf(" 2.车辆离开");printf(" 3.列表显示");printf(" 4.退出系统\n");printf("**********************************************\n");printf("请选择(1-4):[ ]\b\b");while(1){scanf("%d",&ch);if(ch>=1&&ch<=4)break;else printf("错误!请重选(1-4):[ ]\b\b");}switch(ch){case 1:Arrival(&Enter,&Wait);break; /*车辆到达*/case 2:Leave(&Enter,&Temp,&Wait);break; /*车辆离开*/case 3:List(Enter,Wait);break; /*打印列表信息*/case 4:exit(0); /*退出主程序*/default: break;C课程设计报告}}}(2)车辆到达函数int Arrival(Moni_Cheku *Enter,Moni_Biandao *W) /*车辆到达*/ {CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode));flushall();printf("请输入车牌号(例如:中CUG888):");gets(p->num);if(Enter->top<MAX) /*车库未满,车进车库*/{Enter->top++;printf("该车在车库位置%d.\n",Enter->top);printf("请输入到达时间(**:**):");scanf("%d:%d",&(p->reach.hour),&(p->reach.min));Enter->stack[Enter->top]=p;return(1);}else /*车库已满,车进便道*/{printf("该车须在便道等待!\n");t=(QueueNode *)malloc(sizeof(QueueNode));t->data=p;t->next=NULL;W->rear->next=t;W->rear=t; return(1); } }(3)车辆离开函数void Leave(Moni_Cheku *Enter,Moni_Cheku *Temp,Moni_Biandao *W) /*车辆离开*/ {int i, room; CarNode *p,*t; QueueNode *q;/*判断车库内是否有车*/ if(Enter->top>0) /*有车*/ {printf("请输入车在车库的位置(1--%d):",Enter->top);/*输入车辆离开的信息*/ while(1) {scanf("%d",&room);if(room>=1&&room<=Enter->top) break; else printf("错误!请重选:"); }while(Enter->top>room) /*车辆离开*/ {Temp->top++;Temp->stack[Temp->top]=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--; }p=Enter->stack[Enter->top];C课程设计报告Enter->stack[Enter->top]=NULL;Enter->top--;while(Temp->top>=1){Enter->top++;Enter->stack[Enter->top]=Temp->stack[Temp->top];Temp->stack[Temp->top]=NULL;Temp->top--;}PRINT(p,room); /*判断通道上是否有车及车库是否已满*/if((W->head!=W->rear)&&Enter->top<MAX) /*便道的车辆进入车库*/{q=W->head->next;t=q->data;Enter->top++;printf("\n便道的%s号车进入车场第%d位置.",t->num,Enter->top);printf("\n请输入现在的时间(**:**):");scanf("%d:%d",&(t->reach.hour),&(t->reach.min));W->head->next=q->next;if(q==W->rear) W->rear=W->head;Enter->stack[Enter->top]=t;free(q);}else printf("\n便道里没有车.\n");}else printf("车库里没有车!\n"); /*没车*/}(3)列表显示函数void List(Moni_Cheku S,Moni_Biandao W){int flag,tag;flag=1;while(flag){printf("**********查看**********\n");printf("1.车库 2.便道 3.返回\n");printf("************************\n");printf("请选择(1-3):[ ]\b\b");while(1){scanf("%d",&tag);f(tag>=1&&tag<=3) break;else printf("错误!请重选(1-3):[ ]\b\b");}switch(tag){case 1:List1(&S);break;/*列表显示车库信息*/case 2:List2(&W);break; /*列表显示便到信息*/case 3:flag=0;break;default: break;}}}C课程设计报告void List1(Moni_Cheku *S) /*列表显示车库信息*/{int i;if(S->top>0) /*判断车库内是否有车*/{printf("车库:");printf("\n位置到达时间车牌号\n");for(i=1;i<=S->top;i++){printf(" %d ",i);printf(" %d:%d ",S->stack[i]->reach.hour,S->stack[i]->reach.min);puts(S->stack[i]->num);}}else printf("车库里没有车\n");}void List2(Moni_Biandao *W) /*列表显示便道信息*/ {QueueNode *p;p=W->head->next;if(W->head!=W->rear) /*判断便道上是否有车*/{printf("在便道里等待的车辆的号码为:\n");while(p!=NULL){puts(p->data->num);p=p->next;}}else printf("便道里没有车.\n");}C课程设计报告五、程序测试(1)测试系统对错误信息的处理(2)进入2辆车,车均进车库,便道上无车,并进行列表显示C课程设计报告(3)再进入3辆车,第一辆车进车库,后2辆车在便道等待,同时输出等待的提示作息,最后列表显示以查寻结果,此时车库已满,便道上有2辆车在等待。