停车管理系统程序设计实验报告Word文档格式.docx
《停车管理系统程序设计实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《停车管理系统程序设计实验报告Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
![停车管理系统程序设计实验报告Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/1/aa356c8c-756b-48c1-a795-13a35daa5f38/aa356c8c-756b-48c1-a795-13a35daa5f381.gif)
时按一小时计算)并显示在屏幕上。
可以随时根据车牌查询是否入库。
可以随时根据车位
查询该位置上的相关信息。
可以将录入的信息储存到文件内并且能够随时查询信息。
2.1程序模块描述
本程序主要有一下几个模块构成:
1)1)用户登陆模块。
该模块中定义了全局变量,输入的信息即为事先设置的用户名和密码,输出的是停车场系统。
(无选择项可以改变,只有修改程序才能修改,用户名和密码事先存入文档“用户名和密码.txt”中),用户名和密码共有三次输入机会,正确则登陆停车场系统,错误则提示重新输入,如果三次都错误则自动退出停车场系统。
2)程序登陆后的选择模块以及信息存储模块。
该模块给出四个选项(1.泊车操作2.
取车操作3.查询信息4.退出),在停车模块中要输入车牌号,车辆类型,自动输出停车位以及停车时的系统时间;
在取车模块中,输入的为任意车牌号,输出的为停车费;
在查询
模块中,输入车牌号或者车位号,输出的为车位号或者车牌号;
其余选项无输入项,输出项
为回到系统或跳出系统(退出)。
在本模块中添加对录入信息的储存模块,其中加入记录系统时间的模块,在用户的选择中进入下一个模块的操作,其中第一个操作的信息将存储并保
存进“车辆信息.txt”。
3)信息查询模块。
在这个模块中要将之前存储的信息“车辆信息.txt”中的信息输出
到运行界面中,我利用二维数组来将信息从文件中输出,该模块中其他的选项为输出当前的
车位状态以及根据车牌查询信息。
4)计时收费模块。
该模块中,定义系统时间函数,在本模块之前定义车辆分类收费模
块,将这两个模块结合求出车费输出到界面,其中小于30分钟的按半小时计算,大于30
小于60分钟按一小时算。
该模块中处理信息都是自动的。
其中输入项是开始的时间,为自动计时,输出的就是车辆收费。
2.2程序算法
用if语句判断函数,continue
1)登陆函数中比较麻烦的用户名和密码做了提前的处理,
函数进入程序界面。
ofstream函数存储停车信息,
2)在这个模块中,涉及的算法和函数比较多,首先是
以及后面的ifstream函数读取存储的信息;
用string函数导入了系统时间,用if函数做
选择项以及车辆类型的选择,以及数组定义timel在ifstream函数中导出时间。
3)这个模块中的函数与第二模块相同,不再详说。
4)这个模块中,主要是用position将时间设置为空,建立新的时间函数hourl和mini,
用structtm*newtime获取新的系统时间,再做判断。
2.3流程逻辑
1主体程序
开始
用户登陆
退出
查询信息查询信息
查询车牌号
查询历史信息
查询车位
取车操作
泊车操作
2、用户登陆
3、信息查询
图3.5.2
选择输入1/2/3/4
导入存储的信息
从录入信息中输出
输出信息
2.4接口函数描述
此部分程序有一个主函数和一下子函数:
1intmain主函数
2voidputcar();
停车函数
3voidtakecar();
取车函数
6intjuge
判断车位函数
7doublecharge
收费函数
8voidsearch_pos
车位查询函数
、详细设计
3.1数据文件存储说明
本程序只用到了两个数据文件:
“用户名和密码.txt”、“车辆信息.txt”,其中“用户名
“车辆信
和密码.txt”文档中的信息为提前输入的,使用者用于输入账号和密码进入系统,息.txt”文档为系统自动生成的文档,用于存放和读取车辆信息,进行查询使用。
3.2注释设计
注释主要是利于自己和别人来了解程序编写的思路以及运行方法,下面说一下本程序中
的注释:
1)在登陆模块加的注释为了提醒大家开始了用户登陆界面的设计,以及其中用户名和密码的定义。
2)主程序开始时用注释提示了一下,在录入信息模块是用到了系统信息,加入了注释,
方便理解,以及保存车辆信息时的函数也加入注释,方便自己改错和理解。
3)在查询信息模块里,主要注释提示了存储数据的输出形式,用到了二维数组,以及
查询历史信息的函数。
4)最后的模块中用注释解释了全局变量的清空以及停车时间和车费计算函数的提示,
最后是查询函数的注释。
#include<
iostream>
//输入输出流的头文件
stdio.h>
//标准输入输出的同文件
#include<
string>
〃字符串处理的头文件
#include<
time.h>
#include<
fstream>
〃输入输出文件流类的头文件usingnamespacestd;
/得入名称空间classcar//定义类carpublic:
charno[9];
intpos;
doublefee;
voidputcar();
voidtakecar();
//定义字符型数组车牌号
//定义整形变量车位号
//定义双精度变量费用
//声明函数停车
//声明函数取车
//用户登录
constcharha[10]="
zhanghe"
;
//管理员用户名constcharhb[10]="
1314"
〃管理员密码
charcn[10],cm[10];
intci=0;
while
(1)
{
cout<
<
"
请输入管理员用户名:
cin»
cn;
if(strcmp(ha,cn))
输入错误!
\n"
ci++;
if(ci==3)
return;
continue;
}
else
请输入密码:
cin>
>
cm;
if(!
strcmp(hb,cm))
break;
密码错误!
//主程序
intk;
1.泊车操作"
endl;
2.取车操作"
3.查询信息"
4.退出"
k;
ofstreamoutfile("
车辆信息.txt"
ios:
:
app);
//以追加形式从硬盘内存读取车辆信息
outfile)//如果不在内存中
{cerr<
openerror!
endl;
〃输出打开错误
exit
(1);
//非正常运行退出程序
//ifstreaminfile("
in);
〃以追加形式从内存到硬盘存车辆信息
//if(!
outfile)
//{cerr<
openerror!
//exit
(1);
while(cin>
k)
if(k==1)
i=juge();
〃返回值付给i
\t车牌号:
carin[i].no;
carin[i].putcar();
i;
stringtimel;
time_tt;
//取地址
〃导入系统时间
II保存车辆信息。
time(&
t);
time1=ctime(&
time1;
outfile<
carin[i].no<
"
time1<
if(k==2)poi=comp();
carin[poi].takecar();
cout<
if(k==3)
1,查询车牌号请选择"
2,查询车位请选择"
3,查询历史信息请选择"
4,退出请选择"
intx;
cin>
>
x;
〃选择查询方式
if(x==1)
search_no();
elseif(x==2)
search_pos();
elseif(x==3)
100列5
stringa,time1[100][5];
//定义二维数组读取数据行
inti,j,m,n;
ifstreaminfile("
infile)
infile>
a;
for(i=0;
i<
5;
i++)for(m=0;
m<
100;
m++)
time1[m][i];
a<
for(j=0;
j<
j++)
for(n=0;
n<
n++)cout<
time1[n][j]<
〃将存储的数据用数组形式输出
}//查询历史信息
elseif(x==4)
\t选择错误谓重新选择:
}outfile.close();
intjuge()//判断出第一个空的车位
intj=0;
while(position[j]==1&
&
100)
j++;
if(j<
position[j]=1;
returnj;
intcomp()
charch[9];
\t车牌号:
;
ch;
for(intk=O;
k<
1OO;
k++)
strcmp(ch,carin[k].no))
if(position[carin[k].pos-1]==1)
return(carin[k].pos-1);
if(k=100)
returnk;
voidcar:
putcar()//putcar是car类的成员函数
intt;
1,货车请输入"
2,客车请输入"
3,轿车请输入"
4,其他请输入"
t;
if(t==1)
carin[i].fee=7.0;
elseif(t==2)
carin[i].fee=5.0;
elseif(t==3)
carin[i].fee=4.0;
elseif(t==4)
输入错误!
请重新输入:
\n"
if(i==100)
对不起,车位已满!
carin[i].pos=i+1;
//自动输出车位号
车牌号"
车位号:
carin[i].pos<
catime[i].getime();
现在时间是:
catime[i].hour<
catime[i].min<
takecar()
inthour1,min1;
doublecharge;
if(poi<
position[poi]=0;
〃重新设置为空位
hour1=catime[poi].hour;
min1=catime[poi].min;
catime[poi].getime();
hour仁catime[poi].hour-hour1;
min1=catime[poi].min-min1;
if(min1<
30)〃计算出停车时间
charge=carin[poi].fee*hour1+carin[poi].fee*0.5;
charge=carin[poi].fee*hour1+carin[poi].fee;
\t车费为:
charge<
元.\n"
〃计算出车费输出
\t无此车!
voidTime:
getime()
structtm*newtime;
//获取停车时间
time_tIong_time;
time(&
long_time);
newtime=localtime(&
hour=newtime->
tm_hour;
min=newtime->
tm_min;
voidsearch_no()
intpoi=comp();
\t此车已入库,车位为:
poi+1<
\t此车没有入库。
〃根据车牌号查询是否入库
voidsearch_pos()
intloc;
\t车位号:
〃根据车位查询车位状态
loc;
if(position[loc-1]==1)
carin[loc-1].no<
停车直到现在的时
\t停车时间:
catime[loc-1].hour<
catime[loc-1].mi*<
//间
\t此车位无车r:
//程序结束。
四、调试分析
1.运行程序
E青输入管理员用户名匕
2用户名和密码正确进入系统
■'
E:
\C+4-Debug\123.exe"
FTP1
员:
1
理码乍禺tuswis-
3•输入车牌号的界面
•TEr\C++^g\DebugV^3.exeF
理码^心THwn
n
创
h
■■
戸4
用31
4•车辆类型选择界面
5•取车操作界面
■:
■:
斗:
iHl冃青青
轄入入入入
^■IF”日T
他货
号号时,
1U
现
4
H
1-H
一泊矍
atDec0814:
25:
282012
6•查询信息界面
择择®
If'
迤t号主逗佔s唇史选奎历请询.询询.出****Bi234
7•按车牌查询界面
择择迦青迦息05<
s屠史选亠辜SiS査蚕查退1234
iftl
R1234
£
车位为ii
8•按车位查询界面
「查询车牌号宀
位逋选择
3・章询历刘言息漬选择乳退出请选羁
2
9历史信息查询界面
:
!
•查诳车牌号请选择
SatDec0814:
10查询信息的退出界面
请
睪
4J
选
氢冃
-g.E-TK
息S理峯
土冃亠一一口睪位史选车餐询询岀查杳一退
11收费界面
3-
12元
B5吉2_
■■■■
号为
车
泊矍
■S«
五、课程总结
经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言
程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。
通过C++课程设计,一方面是为了检查这一个学期来计算机语言的学习成果,另一方面也是为了让我们进一步掌握和熟练地运用它,与此同时,也能够让我们认清自己在C++学习
方面的不足之处和薄弱环节,并加以弥补和巩固。
通过对教学管理系统的程序设计,进一步
的巩固了用C++语言编写程序的能力,并且利于更好的掌握C++语言!
在为期近两周的C++课程设计中,我体会颇多,学到了很多东西。
我懂得了用MicrosoftVisualC++6.0对程序进行调试,我加强了对C++程序设计这门课程的认识,并且复习了自
己以前学习到的知识,自己的逻辑思考能力也提高不少。
这些都使得我对计算机语言的学习
有了更深入的认识!
总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工
作带来很大的好处。
最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了
能做一些小型程序。
整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通
过课程设计,既复习了以前的旧知识,又学到了一些新的知识。
像停车场管理系统这样的应
用程序的设计和创建,经历了平时在课堂和考试中不会出现的难题和考验。
而这些问题,又
都是课本上很少提到的、更深一层的实践与知识相结合的问题,这并不是我们平时只靠课本,
就可以轻易解决的。
所以,锻炼了我们面对难题,学会用已掌握的知识去解决具体问题的能
力,进一步培养了独立思考问题和解决问题的能力。
特别是学会了在VisualC++中如何调试