C++项目设计报告.docx
《C++项目设计报告.docx》由会员分享,可在线阅读,更多相关《C++项目设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
C++项目设计报告
停车场管理系统
——项目设计报告
所在班级:
能源1004班
指导教师:
胡彬
项目开发分工:
组员
学号
分工
赵博文
U9
3种车辆类的设计:
存储功能设计;整体程序测试及完善。
杨小虎
U1
主函数的设计、类的设计构思、整个程序的顾问及技术支持
柳格
U2010114**
程序设计和测试;项目报告操作指南设计;项目报告整合。
雪克热提江·阿不来海
U0
主页面的设计;主函数的调整;整体程序的调试,修改;
王鹤
U8
密码类的设计,程序初步汇总;部分程序测试;项目报告设计。
一、项目分析····························································3
二、功能描述····························································3
三、概要设计报告······················································4
四、程序流程····························································4
五、程序结构图·························································5
六、操作指南····························································5
七、项目总结····························································8
八、程序代码····························································9
一、项目分析
(1)目的:
加强所学习的C++知识,进一步熟练掌握C++语言的基本知识和技能;
(2)本项目目标如下:
问题描述:
现在打部分停车场都是人工管理,在记录时比较复杂,不规范,为使停车场的的管理工作更加方便简洁,本程序将提供一个智能的管理平台。
构思:
1)将货车、客车、小轿车按不同的标准进行收费计算.
2)能按车位、车牌号、车主姓名显示、查找、增加、删除和保存所停放的车辆信息.
3)建立多个类的体系,分工完成各个类的设计,并分别增加了不同的属性和方法.
4)设计出友善、舒适的界面;
二、功能描述:
本程序系统设有一个比较精美的可视化的操作界面,并设有分级菜单与选项,可以方便的指导管理员的使用。
本系统主要用于进行货车、客车、小轿车的信息管理,重点用于实时监控停车场所停车辆的信息,包括基本信息(车位号、车牌号、车主姓名、进出站时间、停车时间、收费单价、总收费等),可以简单快捷的实现增、改、删、查功能,便于用户的储存与查询。
本系统的优点在于:
由于我们使用了文件的输出,运行程序后将在指定位置生成两个txt文件,一个是所有曾停放车辆的历史信息,另外一个为在停车辆的信息,可以对数据进行永久性的存储,不存在退出程序系统后,所有输入的内容都会消失的情况。
制作过程中我们将从实际出发,注重程序的实用性,并力求将所学内容融入其中。
三、概要设计报告:
本程序设计构想来源于宿舍出入登记簿,通过类的组合,继承与派生,再加上对函数的利用,实现不同种类的车辆信息进行增、删、改、查的管理。
为停车场管理人员提供了方便快捷管理的工具。
四、程序流程
1、选择
1、登入
2、登出
3、查找单个车辆信息
4、显示全部车辆信息
5、修改密码
6、退出
2、登入是否电脑选车位?
车牌号,车主姓名,车辆类型:
输入车位?
有->:
没有—>返回
3、登出输出车位号车牌号、停车时间、应收费用、进出时间、车位状态归零;
4、查找按车位?
输入车位:
输入车牌;
5、显示显示所有在听车辆信息;
6、修改密码请输入原密码—>输入错误/请输入新密码、请再次输入,修改成功;
7、退出
五、程序结构图
六、操作指南
1、主菜单
在打开停车场管理系统,输入正确密码后,将会进入一个欢迎菜单,也就是本程序的主菜单,在这里有如下几个选项:
根据需要选择相应的数字。
2、登入车辆
当在主菜单中选择1登入车辆时,将会进入其副菜单,有如下三个选项:
随后可根据提示,输入登记的详细内容。
3、登出车辆
当有车辆需要离开停车场时,进入登出界面,输入相应的车位号,进行登出。
此时,系统将显示停入的时间及所需费用(费用标准课根据实际情况进行修改),显示结果如下:
4、查找车辆
当有需要查找某个车辆时,我们可以在主菜单中选择“查找车辆”,在本程序中提供两种查找方式:
按车位和按车牌号,根据提示输入相应的数据即可获得相应的车辆信息,如下图所示:
5、显示全部车辆
在主菜单中按4进入显示全部车辆信息的功能页面,如下图所示:
6、密码与修改密码
主菜单中选择5进入密码修改功能,在输入原密码和两次相同的6位新密码后即可修改密码,由于本程序实现了和硬盘关联,故在下次进入时的合法密码为上次修改后的密码,所以要记住心密码哦,界面如下图所示:
七、项目总结
在经过一个学期的C++学习课程之后,共同合作完成这样一个程序的过程无疑又让我们获益匪浅,学到的不仅是细节,不仅是学习方法,不仅是团队合作精神,更是团结一心,在困难面前全力学习、互相帮助,最后战胜困难的决心和勇气。
在这一段时间里我们收获颇丰,请让我们一同来回顾这段难忘的时光。
1、在上午微积分考试一结束,我们便开始了对要做项目的讨论,包括其主题和功能。
本以为可以提前几天结束这样一个战斗,没想到却是刚刚在要求的前一天完成整个程序的编写。
有此,我们得出事事皆要早的结论。
2、我们一开始遇到的并在后续阶段一直困扰我们的问题就是文件的读写问题,把文件的读写作为我们程序的一个特色是一件很需要勇气的事,在每个人都只是接触了一点点文件的输入输出的情况下,要实现数据的灵活存储就要求重新了解该部分的内容,并进行大量的试验程序调试。
次部分从头到尾,占用了我们大部分时间。
3、作为本程序的另外一个特色,密码程序的设计同样具有挑战性。
作为第一个与磁盘文件互动的部分,此过程的突破给了我们无尽的信心和勇气,使我们坚定的向更复杂的问题冲击。
4、除了以上没有学过的内容给我们造成很大的困难之外,一些小问题也曾让我们很头疼,比如string与cin的冲突问题,两个时间点的计算问题,格式错误引起的无尽的调试过程等等。
但在最后完成项目之后,这一切都变成了我们宝贵的经验。
回顾这样一个艰苦的过程,我们有两点最为重要的收获。
一是对团队合作效率的认同,比如,当一个人自己调试程序的时候,找错总是很纠结的一件事,但是当两个人在一起共同审视程序的时候,找出错误也就变得容易多了。
二是要时刻具备克服苦难的决心与毅力,我们面对的是自己看都看不懂的内容,但是却要求我们最后能把这部分内容灵活运用到程序中。
这种感觉总是能令人抓狂,但是,最后我们做到了。
我们可以自豪的对别人说:
“IMADEIT!
”
八、程序代码
1、头文件
#include
#include<>
#include
#include
#include<>
usingnamespacestd;
doubleDiffTime(unsignedty1,unsignedth1,unsignedty2,unsignedth2)
{
structtmtm1,tm2;
time_ttt1,tt2;
floatdt;
=ty1/10000-1900;站车辆;"<cout<<"2.出站车辆;"<cout<<"3.查找信息;"<cout<<"4.显示所有车辆信息;"<cout<<"5.修改密码;"<cout<<"0.退出;"<cout<<"请选择按键(0-5):
";
sel=9;
ints1;
cin>>s1;
cout<etPos()==0&&r2[i].GetPos()==0&&r3[i].GetPos()==0)break;}
stringnum;
stringname;
intoutvalue;
cout<<"请输入车牌号:
"<cin>>num;
cout<<"请输入车主姓名:
"<cin>>name;
cout<<"请输入排量:
"<cin>>outvalue;
cout<<"登陆成功,您的车位为:
"<
"<cin>>y;
Autou(i,num,name,outvalue);
();
r1[i]=u;
vehicle++;
system("cls");
}
}
voidfun12()etPos()==0&&r2[i].GetPos()==0&&r3[i].GetPos()==0)break;}
stringnum;stringname;intcapacity;
cout<<"请输入车牌号:
"<cin>>num;
cout<<"请输入车主姓名:
"<cin>>name;
cout<<"请输入载客量:
"<cin>>capacity;
cout<<"登陆成功,您的车位为:
"<
"<chary;
cin>>y;
Carriageu(i,num,name,capacity);
();
r2[i]=u;
vehicle++;
system("cls");
}
}
voidfun13()etPos()==0&&r2[i].GetPos()==0&&r3[i].GetPos()==0)break;}
stringnum;stringname;intheavy;
cout<<"请输入车牌号:
"<cin>>num;
cout<<"请输入车主姓名:
"<cin>>name;
cout<<"请输入载重量:
"<cin>>heavy;
cout<<"登陆成功,您的车位为:
"<
"<chary;
cin>>y;
Trucku(i,num,name,heavy);
();
r3[i]=u;
vehicle++;
system("cls");
}
}
voidfun1()
{
system("cls");
ints1=1;
cout<<"欢迎进入车辆登入界面!
"<while(s1)
{
cout<<"请选择登入车辆的类型:
"<cout<<"1.小型车;"<cout<<"2.客车;"<cout<<"3.货车;"<cout<<"0.返回;"<cin>>s1;
if(s1>=0&&s1<=3)
{
switch(s1)
{
case1:
fun11();s1=0;break;
case2:
fun12();s1=0;break;
case3:
fun13();s1=0;break;
case0:
break;
}
}
else
cout<<"输入错误,请重新输入!
"<}
}
voidfun2()etPos()!
=0)
{
r1[i].SetPos();
r1[i].Ftime();
r1[i].setTime();
cout<<"您驻入的时间为:
"<cout<<"欢迎下次光临,祝您旅途愉快!
"<vehicle--;
}
if(r2[i].GetPos()!
=0)
{
r2[i].SetPos();
r2[i].Ftime();
r2[i].setTime();
cout<<"您驻入的时间为:
"<cout<<"欢迎下次光临,祝您旅途愉快!
"<vehicle--;
}
if(r3[i].GetPos()!
=0)
{
r3[i].SetPos();
r3[i].Ftime();
r3[i].setTime();
cout<<"您驻入的时间为:
"<cout<<"欢迎下次光临,祝您旅途愉快!
"<vehicle--;
}
}
voidfun31()
{
inti;
cout<<"请输入车位号:
"<cin>>i;
if(r1[i].GetPos()!
=0){cout<if(r2[i].GetPos()!
=0){cout<if(r3[i].GetPos()!
=0){cout<cout<<"返回请按0"<}
voidfun32()
{
stringm;
cout<<"请输入车牌号:
"<cin>>m;
for(inti=1;i<31;i++)
{
if(r1[i].GetNum()==m){cout<if(r2[i].GetNum()==m){cout<if(r3[i].GetNum()==m){cout<}
cout<<"返回请按0"<}
voidfun3()etPos()!
=0){r1[i].show();}
if(r2[i].GetPos()!
=0){r2[i].show();}
if(r3[i].GetPos()!
=0){r3[i].show();}
}
cout<<"确认请按Y"<chary;
cin>>y;
system("cls");
}
voidfunsave()etPos()!
=0)
in<<1000+r1[i].GetPos()<<"*"<}
for(i=1;i<31;i++)
{
if(r2[i].GetPos()!
=0)
in<<2000+r2[i].GetPos()<<"*"<}
for(i=1;i<31;i++)
{
if(r3[i].GetPos()!
=0)
in<<3000+r3[i].GetPos()<<"*"<}
cout<<"信息已储存!
"<();
}
voidread()//读取
{
vehicle=-1;
ifstreamout("");
charu[90],temp[70];
inti=0,m=0,sum=0;
while(!
())
{
(u,90);
sum+=strlen(u)+2;
(sum,ios:
:
beg);
vehicle++;
if(u[0]=='1')//Auto
{
intpos1;
stringnum1;
stringname1;
chartime11[30];
doubleoutvalue1;
i=0;
pos1=(u[2]-'0')*10+(u[3]-'0');//车位
while(u[i]!
='*'){i++;}
i++;
m=0;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
num1=temp;//车牌照
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
name1=temp;//车主名
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
strcpy(time11,temp);//time
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
char*pEnd;
outvalue1=strtod(temp,&pEnd);//outvalue
Autou(pos1,num1,name1,outvalue1);
(time11);
r1[pos1]=u;
}
if(u[0]=='2')//Carriage
{intpos1;
stringnum1;
stringname1;
chartime11[30];
intcapacity1;
doublecapacity;
i=0;
pos1=(u[2]-'0')*10+(u[3]-'0');//车位
while(u[i]!
='*'){i++;}
i++;
m=0;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
num1=temp;//车牌照
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
name1=temp;//车主名
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
strcpy(time11,temp);//time
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
char*pEnd;
capacity=strtod(temp,&pEnd);//capacity
capacity1=int(capacity);
Carriageu(pos1,num1,name1,capacity1);
(time11);
r2[pos1]=u;
}
if(u[0]=='3')//Truck
{
intpos1;
stringnum1;
stringname1;
chartime11[30];
doubleheavy;
intheavy1;
i=0;
pos1=(u[2]-'0')*10+(u[3]-'0');//车位
while(u[i]!
='*'){i++;}
i++;
m=0;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
num1=temp;//车牌照
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
name1=temp;//车主名
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
strcpy(time11,temp);//time
m=0;i++;
for(;u[i]!
='*';i++){temp[m]=u[i];m++;}
temp[m]='\0';
char*pEnd;
heavy=strtod(temp,&pEnd);
heavy1=int(heavy);//heavy
Trucku(pos1,num1,name1,heavy1);
(time11);
r3[pos1]=u;
}
}
();
}