自-停车场管理系统程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序停车场管理系统( 2013 /2014 学年第1学期)
题目:停车场管理系统
专业网络工程
组长学号姓名
组员学号姓名李洬翊B12070319
指导教师周剑
指导单位软件教学中心
日期2013年11月20日
停车场管理系统
一、课题内容和要求
(1) 管理人员根据口令进入系统;
(2) 管理车位信息(车位编号,状态)和每分钟的收费费率;
(3)停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;
(4)取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显
示在屏幕上。

二、需求分析
停车场管理系统的功能框架图如图1所示。

图1停车场管理系统功能框架图
(1)管理员登陆:其实现是在设计程序时定义一个字符串数组作为密码,在管理员想通过主菜单界面登陆到管理系统的时候,系统要求管理员输入密码,将保存的密码和管理员输入的密码进行比较,如果一致则跳出密码登陆函数进入管理界面。

(2)车位信息:可查询当前时间车库的基本停车情况。

(3)车辆驶入:进入此系统后,输入当前时间和车牌号码,若有空位则停车成功,否则显示车库已满,自动返回上一层操作系统。

(4)车辆驶离:进入此系统后,依次输入车牌号码,停车时间,当前时间,若查找到所输入的车牌信息,则显示本次停车应付金额,并显示取车成功。

若无输入的车牌号码信息,则显示取车错误并返回上层操作系统。

(5)退出系统:当程序使用结束的时候,通过该项功能即可终止程序。

......
......
三、概要设计1.用户登录
ﻩY

ﻩN
2.信息查询
3.主体程序
四、源程序代码
#include <iostream> ﻫ#include<stdio.h> ﻫ#include<string> ﻫ#include <time.h >ﻫ#include<fstream>ﻫusing namespace std; ﻫclass car
{ﻫpublic:
charno[9];
int pos;
double fee;ﻫvoid putcar();
void takecar();
};
class Timeﻫ{
public: ﻫint hour; ﻫint min;
void getime();ﻫ};
inti,poi; ﻫintposition[100]={0};//全局变量
car carin[100]; ﻫTime catime[100];ﻫint juge();
int comp();
voidsearch_no();
void search_pos();ﻫvoidmain()

/////////////////////////////////////////////用户登录
const charha[10]="hahaha";//管理员用户名
const charhb[10]="1234";//////管理员密码
char cn[10],cm[10];ﻫint ci=0; ﻫwhile(1)
{
cout<<"请输入管理员用户名:"; ﻫcin>>cn;ﻫif(strcmp(ha,cn)) ﻫ{
cout<<"输入错误!\n";ﻫci++; ﻫif(ci==3)
return;
continue;
} ﻫelse ﻫ{
cout<<"请输入密码:"; ﻫcin>>cm;
}
if(!strcmp(hb,cm))ﻫbreak;
else ﻫ{
cout<<"密码错误!\n";ﻫci++;
if(ci==3)
return;ﻫcontinue;
}ﻫ}ﻫ////////////////////////////////////////////////主程序ﻫint k;ﻫcout<<"请选择:" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎"
<<"\n\n\t◇1.停车操作◇"ﻫ<<"\n\n\t◇ 2.取车操作◇" ﻫ<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇4. 退出◇" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";
ofstream outfile("车辆信息.txt",ios::app);ﻫif(! outfile)ﻫ{cerr<<"openerror!"<<endl;
exit(1);
//ifstream infile("车辆信息.txt",ios::in);ﻫ//if(! outfile)
//{cerr<<"open error!"<<endl;ﻫ//exit(1);
}ﻫwhile(cin>>k) ﻫ{
if(k==1) ﻫ{
i=juge();
cout<<"\t车牌号:"; ﻫcin>>carin[i].no; ﻫcarin[i].putcar();
cout<<"请选择:"
<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎" ﻫ<<"\n\n\t◇1.停车操作◇" ﻫ<<"\n\n\t◇2.取车操作◇"
<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇4.退出◇" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";
string time1;ﻫtime_t t; ﻫtime(&t);
time1=ctime(&t);
cout<<time1;////////////////////////////////////导入系统时间
outfile<<carin[i].no<<""<<time1<<endl;/////////保存车辆信息。

continue;
}
if(k==2)
{
poi=comp();ﻫcarin[poi].takecar();
cout<<"请选择:"
<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎" ﻫ<<"\n\n\t◇1.停车操作◇" ﻫ<<"\n\n\t◇2.取
车操作◇" ﻫ<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇ 4. 退出◇" ﻫ<<"\n\n\t◇◎◇◎◇
◎◇◎◇◎◇◎◇◎◇◎\n\n";
continue;
}
if(k==3) ﻫ{
intx; ﻫwhile(1) ﻫ{
cout<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇"ﻫ<<"\n\n\t查询车牌号请选择1,查询车位请选择2,查询历史信息请选择3,退出请选择4:"ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇\n\n";
cin>>x;
if(x==1)
{ﻫsearch_no();break; ﻫ}
else if(x==2) ﻫ{
ﻫelse if(x==3)
search_pos();break; ﻫ}
{ﻫ
ﻫ string a,time1[100][5];////定义二维数组读取数据ﻫint i,j,m,n;
ifstream infile("车辆信息.txt",ios::in);ﻫif(! infile)ﻫ{cerr<<"open error!"<<endl;exit(1);ﻫ}
infile>>a;ﻫfor(i=0;i<5;i++)ﻫfor(m=0;m<100;m++)
infile>>time1[m][i];ﻫcout<<" ";ﻫcout<<a<<" ";ﻫfor(j=0;j<5;j++)ﻫfor(n=0;n<100;n++)
cout<<time1[n][j]<<"";///////将存储的数据用数组形式输出ﻫ}////////////////////////////////查询历史信息
elseif(x==4)

break;
}ﻫelse
cout<<"\t选择错误,请重新选择:";

cout<<"请选择:" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎"
<<"\n\n\t◇ 1.停车操作◇"
<<"\n\n\t◇2.取车操作◇" ﻫ<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇4.退出◇" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";
}
out();
}
}
int juge() ///////////////////////判断出第一个空的车位ﻫ{ﻫint j=0;
while(position[j]==1&&j<100)

j++;
}
if(j<100)ﻫposition[j]=1;ﻫreturn j;
}
ﻫcharch[9];
int comp() ﻫ{
cout<<"\t车牌号:";ﻫcin>>ch;ﻫfor(intk=0;k<100;k++)
{
ﻫif(position[carin[k].pos-1]==1)
if(!strcmp(ch,carin[k].no))ﻫ{

return (carin[k].pos-1); ﻫbreak;
ﻫ}
}ﻫ}
if(k=100) ﻫreturnk;

voidcar::putcar() ﻫ{
int t;
while(1)

cout<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎"
<<"\n\n\t货车请输入1,客车请输入2,轿车请输入3,其他请输入4: "
<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";
cin>>t;
ﻫcarin[i].fee=7.0;break; ﻫ}
if(t==1) ﻫ{
elseif(t==2) ﻫ{
carin[i].fee=5.0;break;
} ﻫelseif(t==3)ﻫ{
carin[i].fee=4.0;break;
}
else if(t==4)
{ﻫcarin[i].fee=4.0;break;ﻫ}ﻫcout<<"输入错误!请重新输入:\n";
}
ﻫif(i==100)
cout<<"对不起,车位已满!\n";
carin[i].pos=i+1;//自动输出车位号
cout<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎";
cout<<"\n\n\t车位号:"<<carin[i].pos<<endl;ﻫcatime[i].getime(); ﻫcout<<"\n\n\t 现在时间是:"<<catime[i].hour<<":"<<catime[i].min<<endl;
cout<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎"<<endl;

voidcar::takecar() ﻫ{
inthour1,min1;
double charge;
if(poi<100)
{ ﻫposition[poi]=0;//重新设置为空位
hour1=catime[poi].hour;
min1=catime[poi].min;
catime[poi].getime();ﻫhour1=catime[poi].hour-hour1;
min1=catime[poi].min-min1;
if(min1<30)//计算出停车时间ﻫcharge=carin[poi].fee*hour1+carin[poi].fee*0.5;
else
charge=carin[poi].fee*hour1+carin[poi].fee;
ﻫelse ﻫcout<<"\t无此车!\n"; cout<<"\t车费为:"<<charge<<"元.\n"; //计算出车费输出ﻫ}
} ﻫvoid Time::getime()

struct tm *newtime;//获取停车时间
time_t long_time;
time( &long_time ); ﻫnewtime = localtime( &long_time );ﻫhour=newtime->tm_hour;
min=newtime->tm_min;
}ﻫvoid search_no()
{ ﻫintpoi=comp();ﻫif(poi<100)
cout<<"\t此车已入库,车位为:"<<poi+1<<endl;
ﻫvoid search_pos() elseﻫcout<<"\t此车没有入库。

\n"; //根据车牌号查询是否入库ﻫ}
{
int loc; ﻫcout<<"\t车位号:"; ///////////根据车位查询车位状态
cin>>loc;ﻫif(position[loc-1]==1)

cout<<"\t车牌号:"<<carin[loc-1].no<<endl;
cout<<"\t停车时间:"<<catime[loc-1].hour<<":"<<catime[loc-1].min<<endl;//停车直到现在的时间ﻫ}ﻫelse ﻫcout<<"\t此车位无车!";

///////////////////////////////////////程序结束
五、测试数据及其结果分析
图1为密码和用户名输入正确后进入主程序
图1
图2为输入车牌号界面
图2
图3为车辆类型选择界面
图3
图4为取车操作界面
图4图5为查询信息界面
图5 图6为按车牌查询界面
图6
图7为按车位查询界面
图7 图8为历史信息查询界面
图8图9为查询信息的退出界面
图9 图10为存储信息的文档的截图
图10
六、调试过程中的问题
(1)各种零碎的编译错误;
(2)密码问题,没有接触过该类型的程序;
(3)函数调用问题;
(4)不同数据类型之间的兼容问题;
(5)数据的存储。

七、课程设计总结
刚开始拿到题目,我觉得无从下手,毕竟我对C语言掌握的并不多所以就用了拿手的c++,参考了网上的程序结果好多的错的,最后还是需要我自己反复修改程序、反复调试、各种查阅资料才能完成作业。

在编写程序的过程中,我思考最多的问题就是在停车过程中会发生的各种情况,这也是程序不断完善的关键。

有时,不断产生的问题会导致整过程序无法运行,所以及时保存是非常必要的。

一个能真正应用的程序是分为很多的模块,模块之间的相互联系就需要团队之间的讨论交流。

所以团队合作非常重要,但是我们小组情况有点特殊,各做各的,完成挺累的。

在这次实习之前我从未自己写过什么较长一点的程序,而且自C语言课程结束之后基本上没有看过书,忘记了相当多的知识,所以在编写程序时感觉很困难。

我觉得在之前的学习当中我根本没注意培养一种正确的编程的思维,在拿到程序题时脑海里没有一个清晰的思路。

所以经过这次实习之后我会在以后的学习当中强化对一些编程思想的学习,通过多写程序多体会来提升自己。

就我个人来说我是很希望能在编程上有所提升,我有计划准备在以后的时间里花一个学期好好强化一下C语言,然后再开始学C++,并把C++作为以后唯一学习的一门计算机编程语言来学习。

相关文档
最新文档