课程设计停车场管理系统.docx
《课程设计停车场管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计停车场管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
课程设计停车场管理系统
软件工程课程设计
停车场管理系统
姓名
冯玉颠李晓梅
学号
学号
班级
计本《1》班
成绩
指导教师(签字)
年月日
停车场管理系统
一、前言
三、需求分析
六、代码开发
七、软件测试
一、引言
随着现代化信息技术的发展,人民生活水平快速提高,汽车的数量也飞速增长,于此同时,停车问题越来越受人们的关注,为了使停车场有效管理,停车场管理的信息化成为必然。
我们可以利用所学的知识,编写一个停车场管理系统,以提高管理的效率,提升停车场的竞争力。
本次课程设计,我运用C语言编写停车场管理系统,主要实现汽车停车,离开,收费,停车信息查询,显示等功能,主要实现方式是用栈和队列。
下面对栈和队列进行一下简单介绍。
栈(stack)是一种仅允许在一端进行插入和删除运算的线性表。
栈中允许插入和删除的那一端,称为栈顶(top)。
栈顶的第一个元素称为栈顶元素。
栈中不可以插入和删除的那一端称为栈底。
在一个栈中插入元素,即把新元素放到当前栈顶元素的上面,使其称为新的栈顶元素,即进栈(push)。
从一个栈中删除一个元素,即把栈顶元素删除掉,使其下面的元素成为新的栈顶元素,称为出栈(pop)。
栈遵循后进先出的原则,即后进栈的元素必先出栈。
其中顺序栈是利用一组地址连续的存储单元依次存放从栈底到栈顶的元素。
在C语言中,可以用一维数组描述顺序栈中数据元素的存储区域,并预设一个数组的最大空间。
栈底设置在0下标端,栈顶随着插入和删除元素而变化,可以用一个整形变量top来指示栈顶的位置。
队列是一种限定在表的一端进行插人而另一端进行删除的线性表,与栈相反,队列遵循先进先出的原则。
允许删除的一端,称为队头(front)。
允许插入的一端称为队尾(rear)。
向队列中插入新的元素称为入队,新元素进队后就成为了新的队尾元素;从队列中删除元素,称为出队,元素离队后,其后继元素就成为了新的队头元素。
其中链队列就是用链表表示的队列,需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)。
为了操作方便,给链队列添加一个头结点,并令头指针指向头结点,尾指针指向队尾元素结点,判断队列为空的条件是头指针和尾指针均指向头结点。
停车场的管理系统正好利用栈和队列的这些特点来实现模拟停车场和便道。
停车场管理主要实现以下几个功能:
(1)、停车场车位的划分。
(2)、车辆进出管理及收费功能。
(3)、停车场车辆信息查询功能。
(4)、退出系统。
二、项目开发前的准备工作
1、课程设计的目的
(1)要求学生能够熟练掌握C++语言的基本知识和技能。
(2)基本掌握面向对象程序设计的基本思路和方法。
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、课程设计的背景和意义
(1)、课程设计的背景
1.理论研究基础
(1)分析系统流程,并会画出流程图;
(2)熟练掌握C++程序设计语言。
2.技术层面的支持
C++面向对象程序设计中的类的声明与对象定义的熟练使用;以及继承、派生的熟练使用。
(2)课程设计的意义
在经过了一个学期对C++程序设计的学习,课程设计可以很好的检验所学知识,对自身来说,是个查漏补缺的好时机,可以将所学知识进行复习与巩固,将前面所有知识综合起来,很好的联系在一起,有机结合,形成知识网络体系,将知识融会贯通,可以让自己进一步熟练掌握程序设计语言,并能熟练运用。
3、课程设计环境
软件:
WindosXP系统,MicrosoftVisualC++6.0编译器。
硬件:
联想双核处理器,二G内存,二G独立显卡,80G硬盘。
三、需求分析
(1)问题描述
系统中的车辆主要有大客车、小轿车和卡车。
每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。
大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等信息。
本系统主要是运用面对对象C语言编写的程序,在本系统中主要定义了
一个Car类,此类为系统的基本类,再由此类派生出三个子类。
整个系统的所有功能基本是围绕这三个子类编写的。
在这三个子类的基础上再加以辅助的函数及基本实现了整个系统的功能。
(2)基本要求和目的
1)添加车辆:
主要完成车辆信息的添加,要求编号唯一。
当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。
2)查询车辆:
可按照三种方式来查询物品,分别为:
按车辆制造公司查询:
输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!
”;
按编号查询:
输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!
”;
按类别查询:
输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!
”;
3)显示车辆信息库:
输出当前车辆信息库中所有车辆信息,每条记录占据一行。
4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除车辆:
主要完成车辆信息的删除。
如果当前车辆信息库为空,则提示“车辆信息库为空!
”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。
6)统计信息
输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。
(3)软件需求
本程序主要是运用C++语言编写的系统。
其功能是对在库的车辆信息进行有效的管理,所以该系统主要面对的是停车场管理员。
停车场管理员可以根据本系统的操作提示完成对所需要管理的对象进行有效的管理。
在本系统中有很多功能,例如可以输入新的车辆信息,包括车辆的车牌号码、购买时间、制作公司、车型、日常所需的费用以及油费等等。
所以本系统不失为一个管理车辆的有效系统,尤其是面对对车辆需要有效管理的停车场、车站、二手车交易市场等等。
四、系统总体设计
1、设计思路
停车场采用栈式结构,便道采用队列结构(即便道就是等候队列)。
停车场的管理流程如下:
(1)当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如果停车场已满,则车辆进入等候队列(车辆进入便道等待)。
(2)当车辆要求出栈时,该车到栈顶的那些车先出栈(在它之后进入的车辆必须先退出车场为它让路),在让该车出栈,其他车辆再按原次序进栈(进入车场)。
当车辆出栈完毕后,检查等候队列(便道)中是否有车,有车则从队头取出,压入栈中。
用栈模拟停车场,用队列模拟便道,按照从终读入的输人数据序列的进行模拟管理,每一组输入数据包含三个数据项:
汽车到达或汽车离去的信息,汽车车牌号以及汽车到达或离去的时刻。
每次输完,进行输出操作:
若是车辆到达,输出汽车在停车场内或者便道上停车的信息;若是车辆离去,输出停留时间和需缴纳的费用(在便道上停留的时间不收费),其中栈以顺序结构实现,队列以链表结构实现。
2、系统总体框架图
主函数流程图
图1系统总体框图
3、
系统流程图
实现对一级菜单:
模拟停车场,便道,实现车辆停车、离开、列表显示停车场信息、退出系统功能的控制,调用各个子函数。
程序流程图如图2所示。
图2主函数流程图
五、详细设计
1、车辆停车函数及流程图
车辆停车函数实现:
记录停车信息包括车辆车牌号、停车时刻、停车车位等。
其流程如图3所示
图3车辆停车流程图
2、车辆离开函数及流程图
车辆离开函数主要实现:
记录车辆离开的信息,以及便道上的车是否进入车库中。
其流程如图4所示。
图4车辆离开流程图
3、列表显示车场信息函数及流程图
该函数主要判断停车场是否有车,如果有车就显示停车场车辆的信息,没车显示无车。
其流程如图5所示。
图5列表显示停车场信息流程图
4、列表显示便道信息
判断便道上是否有车,如果有车,输出车辆的车牌号,如果没有车,显示无车,其流程如图6所示
图6列表显示便道信息
5列表显示菜单函数及流程图
示实现列表显示功能的控制,调用显示停车场信息、便道信息的函数,程序流程图如图7所示
图7列表显示菜单及流图
六、代码开发
七、软件测试
1、
2、
3、
4、
5、
6、
7、
8、
八、总结
通过本次课程设计,我对数据结构的理解进一步加深,我理解和掌握了每一段程序代码的功能及含义,并且能够实现模拟停车场管理的主要功能:
利用栈实现车的入库问题,利用队列完成车在便道上停放的问题,主要是通过栈和队列的初始化,调用等函数来模拟停车问题。
学习数据结构,我学会如何将所学的知识运用到实际中,解决一些实际的问题,这才是学习的根本。
当然在实验中我也遇到了不少实际性的问题,比如车辆停车的时间hour限制在24小时,min限制在60分钟之内,如果加入日期计算就更好了;在便道上等待的车辆,车主不可能无限制的等待,应该编写一个便道上车辆离开的函数更合理些。
编写的程度要与实际有联系,这就不能只依赖于课本,还要联系实际多多思考,重复调试,不断改进,才能编出一个符合实际的有价值的系统。
参考文献
[1]冯燕,陈越.数据结构课程设计[M].第一版.浙江大学出版社,2007
[2]李春葆,尹为民,李蓉蓉.数据结构教程上机指导.第三版.清华大学出版社,2008