停车场管理系统课程设计报告Word文件下载.docx
《停车场管理系统课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《停车场管理系统课程设计报告Word文件下载.docx(34页珍藏版)》请在冰豆网上搜索。
I304/I306
起止时间
2013年1月7日~1月18日
设计内容及要求
1)问题描述
定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。
定义一个管理类,完成对停车场的管理。
停车场的具体要求:
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;
每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
2)功能要求
(1)添加功能:
程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:
可根据车牌号、车型等信息对已添加的停车场中的车辆信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;
(3)显示功能:
可显示当前系统中所有车辆的信息,每条记录占据一行。
(4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意车牌号的唯一性。
(5)删除功能:
主要实现对已添加的车辆记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!
”并返回操作。
(6)统计功能:
能统计停车场中车辆的总数、按车型、按到达时间进行统计等。
3)问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
设计
参数
(1)系统分析、设计正确。
(2)结果以图表方式显示。
(3)界面简洁、美观。
(4)报告格式规范。
进度
要求
周一:
明确设计任务,学习相关基础知识
周二:
熟悉各知识点,进行基础练习
周三:
根据题目要求,进行设计和实现
周四:
周五:
程序测试
参考资料
[1]RichardJohnsonbaugh.MartinKalin.《面向对象程序设计—C++语言描述》.机械工业出版社.2009年
[2]钱能.《C++语言程序设计教程》.清华大学出版社.2005年
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
裴仰军/伍建全/焦晓军/陈应祖2013年1月1日
1.软件需求分析说明书
主要介绍该软件具有哪些详细的功能,及软件的界面要求、数据结构要求等(要把软件的所有的功能全部写在该部分)
1.课程设计的目的和要求
1.1综合要求和目的:
C++语言课程设计的主要目的是培养学生综合运用C++语言程序设计课程所学到的知识,编写C++程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。
通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C++语言程序的基本技巧,充分理解结构化程序设计的基本方法。
C++语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C++语言程序及编写设计报告。
1.2本课程设计的目标:
1.
巩固和加深学生对C++语言课程的基本知识的理解和掌握
2.
掌握C++语言编程和程序调试的基本技能
3.
掌握利用C++语言进行软件设计的方法
4.
提高书写程序设计说明文档的能力
5.
提高运用C++语言解决实际问题的能力
1.3基本要求:
分析课程设计题目的要求
对系统功能模块进行分析,写出详细的设计说明文档
编写程序代码,代码量要求不少于300行,调试程序使其能正确运行
设计完成的软件要便于操作和使用
设计完成后提交课程设计报告
1.4设计要求
停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
车进入停车场需要输入该车的车牌信息,车的颜色,车的型号和车进入停车场的准确时间。
其中车牌信息是一辆车的标志,只有通过车牌信息才能准确的确认该车;
车的颜色是每辆的共有属性。
车的型号一共分为四种,包括小汽车,小卡,中卡,大卡。
这四种车型是用来统计车辆信息的利器,停车场管理员可以根据四辆车的型号来统计这四种车分别有多少辆。
这样才能更好的管理停车场中的所有停车。
车进入停车场的准确时间包括车进停车场的年,车进停车场的月,车进停车场的日,车进停车场的小时,车进停车场的分钟,车进停车场的秒。
只有准确的记录这些信息才能对停车的信息把握的更充分,更到位。
而且必须根据车进入停车场的时间才能在车开出停车场的时候计算出该车在停车场中所停的时间,才能通过停车时间来计算车辆应该缴纳的停车费用。
只有完全精确地输入所有的信息各种车辆才能有条不紊的进出停车场,完成停车,停车场管理员才能更加更好的完成工作。
2.系统分析与设计
2.1软件界面设计
画出软件全部输入、输出数据的界面,并对每一个界面进行详细的操作说明
首页:
图2.1-0
这是首页,接下来输入选择的操作的序号
输入1:
图2.1-1
选择1接下来输入进入停车场的车的车牌号,输完了车牌号之后会有Color、CheXing、year、mouth、day、hour、minute、second的信息输入。
输入2:
图2.1-2
选择2接下来输入要离开停车场的车的车牌号,根据车牌号可以让车辆离开停车场,并且会在确认停车场之内有该辆车之后输入离开时间,用以计算停车费用。
输入3:
图2.1-3
选择3接下来输入车牌号就可以查询停车场中是否存在该车,如果没有有两种选择,一是车辆入库,二是返回首页,接下来输入相应的操作序号,就可以达到相应效果,如果输入错误会有提示,并给出返回首页的操作。
如果停车场中有该辆车,程序就会输出该车的所有信息,并给出三种选项:
一是删除该给信息,二是修改该车信息,三是返回首页,输入相应序号可以完成相应操作,如果输入错误会有提示,并给出返回首页的操作。
输入4:
图2.1-4
接下来程序就会显示出停车场中的所有车辆信息,并且这些车辆信息会每辆汽车的信息站一列显示,这样就可以很轻松的对信息进行观察。
信息显示完了之后会有:
1.返回首页的选择操作,如果输入1就会返回首页,果输入错误会有提示,并给出返回首页的操作。
输入5:
图2.1-5
输入了5,就会程序就会显示出按总数统计和按车型统计两种选择统计方法,如果接着输入1,选择按总数统计,程序就会自动的统计出停车场中现有的停车数量。
接下来就会给出返回首页的操作,如果选择怎却就会返回首页,如果错误会有提示,并继续给出返回首页的操作。
如果输入2,选择按车型统计,程序就会自动的将四种车型在停车场中的数量分别统计其辆数,并且显示出来。
输入其它:
图2.1-6
如果输入的不是1、2、3、4、5种选项中的其中一种,二是随意乱输的一个数值,程序就会显示无此选项!
的操作并且给出返回首页重新选择的操作。
如果继续输入错误就会继续提示。
2.2软件的数据(结构)设计
对整个软件使用的文件功能、文件内部的数据格式进行说明
图2.2-1
在本课程设计中我一个用了一个txt文本来存储车辆信息,在该文本中,第一行是一个整形的数值,它的作用是显示该文本中一共存放了多少来辆车。
2.3软件的算法设计
画出整个软件的模块图、并对每一个模块图的算法用程序流程图、功是伪代码来实现
图2.3-1
3.软件的实现与测试
3.1软件的实现
3.1.1车的类型
车的属性,车包括车牌号,车色,车型,入停车场时间等属性。
车的方法,包括Set()、show()两个方法。
车的属性中车牌具有唯一性,是用来分辨各辆车的唯一标准,所以输入时一定要小心别输入错误;
色车在各种车中是可以相同的,不具有唯一性;
车型一共就只有四种,分别是xiaoqiche,xiaoka,zhognka,daka,输入时一定要注意车型;
汽车进入停车场时间用来在后面计算汽车费用是必不可少的,所以以上四种属性多很重要。
车的方法是Set(),show()其中Set()的作用是用来给车的属性赋值用的,而show()的作用是用来展示车的各种属性的。
classChe{
public:
stringID;
stringColor;
stringCheXing;
TimeaTime;
Che*Next;
Che(){}
voidSet()
{
cout<
<
"
ID="
;
cin>
>
ID;
Color="
cin>
Color;
CheXing=(xiaoqichexiaokazhongkadaka)"
endl;
CheXing;
aTime.setTime();
}
voidshow()
{
aTime.showTime();
~Che(){}
};
3.1.2时间类型
时间属性,包括year,mouth,day,hour,minute,second等属性。
时间方法,包括setTime(),showTime()两种方法。
此程序中的时间类型一共就有year,mouth,day,hour,minute,second,其中year,mouth,day,hour,minute是用来计算停车时间必不可少的因素,而second是用来确定准确时间的,所以都很重要,不容有错!
时间的方法就是setTime(),showTime()其中setTime()使用来给时间赋值的,而showTime()是用来展示时间属性的!
classTime
{
intyear;
intmouth;
intday;
inthour;
intminute;
intsecond;
voidsetTime()
Time"
year:
year;
mouth:
mouth;
day:
day;
hour:
hour;
minute:
minute;
second:
second;
voidshowTime()
year<
mouth<
day<
hour<
minute<
3.1.3首页函数
首页是一个软件的门户,首页不好看,该程序就会在客户心中有一个不好的影响,如果首页很好,那即使你的内容差一点,我相信客户也是会首先考虑你的产品的,就因为你的首页,比别的更美观,更好看,这就是一个很大的优势了,在当今社会中有时候门面就比内容更重要,好的门面就是好的开始,而首页就是这个软件的门面。
所以好的软件不能没有好的首页,接下来就是我的首页函数。
voidShouye()//首页
inti;
cout<
**************************\n"
\t"
1.汽车进停车场\n"
2.汽车出停车场\n"
3.汽车信息查询\n"
4.显示所有汽车\n"
5.汽车信息统计\n"
选择操作:
i;
switch(i)
case1:
{
system("
cls"
);
Input();
break;
}
break;
case2:
Output();
case3:
Chaxun();
case4:
Xianshi();
case5:
Tongji();
default:
cout<
无此选项!
1.返回首页从新选择"
stringh;
cin.clear();
cin>
h;
if(h=="
1"
)
{
system("
Shouye();
}
else{
Cuo1();
}
}
3.1.4车辆进入停车场
在我的课程设计中车辆进入停车场我采用了数组存放车辆数据的方式,数组中每一个空间单元存放一辆车。
在输入停车信息之前先从text文本中把其存储的车辆信息取出来放入p[]数组中,如果文本中存放的车辆数目以达到极限,则提示停车场已满。
如果文本中存放的车辆数目没到极限,则输入进入停车场的车的信息。
之后再把更新了的数组在输入到text文本中保存。
voidInput()//车辆进入停车场
ifstreamfin("
text.txt"
ios:
:
in);
if(!
fin)
文件打开失败!
fin>
停车场中已有车"
i<
辆"
Chep[MaxChe];
for(intj=0;
j<
j++)
fin>
p[j].ID>
p[j].Color>
p[j].CheXing>
p[j].aTime.year>
p[j].aTime.mouth
>
p[j].aTime.day>
p[j].aTime.hour>
p[j].aTime.minute>
p[j].aTime.second;
p[j].ID<
p[j].Color<
p[j].CheXing<
p[j].aTime.year<
-"
p[j].aTime.mouth<
<
p[j].aTime.day<
--"
p[j].aTime.hour<
p[j].aTime.minute<
p[j].aTime.second<
fin.close();
if(i<
MaxChe)
车辆可以进入停车场"
p[i].Set();
ofstreamfout("
out);
fout<
i+1<
for(intj=0;
i+1;
{
fout<
\n"
}
fout.close();
***************************************************"
1.继续停车"
2.返回首页"
inth;
if(h==1)
Input();
if(h==2)
system("
Shouye();
if(h!
=1&
&
h!
=2)
Cuo1();
else
****************************************************"
停车场已满!
1.返回首页"
else
3.1.5车辆离开停车场
在我的课程设计中车辆离开停车场我采用了数组存放车辆数据的方式,数组中每一个空间单元存放一辆车。
车辆要离开停车场,需要输入离开停车场的车辆的车牌号,在输入车牌号之前程序会先从text文本中把其存储的车辆信息取出来放入p[]数组中,如果文本中存放的车辆数目为0,则提示停车场中没有停车。
否则,则输入离开停车场的车的车牌号。
之后会用数组中的车的车牌号与输入的对比若有这辆车,则输出该车的信息,若都对不上,则提示停车场中没有该车。
最后再把更新了的数组在输入到text文本中保存。
voidOutput()//车辆离开停车场并计算停车费用
if(i!
=0)
stringcp;
按车牌查询"
离开停车场车牌:
cp;
出场时间"
TimebTime;
bTime.setTime();
i-1<
for(j=0;
if(p[j].ID==cp)
*************************************************************"
该车进入停车场时间为