




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
停车场管理系统 项目设计报告 所在班级:能源1004班 指导教师: 胡 彬项目开发分工:组员学 号分 工赵博文U2010114593种车辆类的设计:存储功能设计;整体程序测试及完善。杨小虎U201011461主函数的设计、类的设计构思、整个程序的顾问及技术支持柳格U2010114*程序设计和测试;项目报告操作指南设计;项目报告整合。雪克热提江阿不来海U201011460主页面的设计;主函数的调整;整体程序的调试,修改;王鹤U201011458密码类的设计,程序初步汇总;部分程序测试;项目报告设计。目录一、项目分析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的冲突问题,两个时间点的计算问题,格式错误引起的无尽的调试过程等等。但在最后完成项目之后,这一切都变成了我们宝贵的经验。回顾这样一个艰苦的过程,我们有两点最为重要的收获。一是对团队合作效率的认同,比如,当一个人自己调试程序的时候,找错总是很纠结的一件事,但是当两个人在一起共同审视程序的时候,找出错误也就变得容易多了。二是要时刻具备克服苦难的决心与毅力,我们面对的是自己看都看不懂的内容,但是却要求我们最后能把这部分内容灵活运用到程序中。这种感觉总是能令人抓狂,但是,最后我们做到了。我们可以自豪的对别人说:“I MADE IT!”八、程序代码1、头文件#include #include#include#include #include using namespace std;double DiffTime(unsigned ty1,unsigned th1,unsigned ty2,unsigned th2)struct tm tm1,tm2;time_t tt1,tt2;float dt;tm1.tm_year = ty1/10000 - 1900; /得到年2008tm1.tm_mon = (ty1%10000)/100; /得到月09tm1.tm_mday = (ty1%10000)%100; /得到日11tm1.tm_hour = th1/10000; /得到时11tm1.tm_min = (th1%10000)/100; /得到分12tm1.tm_sec = (th1%10000)%100; /得到秒03tm2.tm_year = ty2/10000 - 1900; /得到年2008tm2.tm_mon = (ty2%10000)/100; /得到月09tm2.tm_mday = (ty2%10000)%100; /得到日13tm2.tm_hour = th2/10000; /得到时11tm2.tm_min = (th2%10000)/100; /得到分12tm2.tm_sec = (th2%10000)%100; /得到秒01tt1 = mktime(&tm1);tt2 = mktime(&tm2);dt = (double)(difftime(tt2,tt1)/3600; /得到相差的小时数return dt;class Car /基类protected:int Pos;string Num;string Name;double Time;double Money;public:char time130,time230;Car(int pos=0,string num=0,string name=No name)Pos=pos;Num=num;Name=name;time130=0;time230=0;Time=0;Money=0;int GetPos()return Pos;string GetNum()return Num;string GetName()return Name; double GetTime()return Time;void SetPos()Pos=0;void show()cout车位Pos Num Name time1endl;void SetStime(char a)strcpy(time1,a);void Stime() /初始时间time_t t = time(0); strftime(time1,sizeof(time1),%Y/%m/%d %X %A,localtime(&t);void Ftime() /结束时间time_t t = time(0); strftime(time2,sizeof(time2),%Y/%m/%d %X %A,localtime(&t);void setTime() /计算经过时间unsigned ty1,th1,ty2,th2;ty1=10000000*(time10-0)+1000000*(time11-0)+100000*(time12-0)+10000*(time13-0)+1000*(time15-0)+100*(time16-0)+10*(time18-0)+(time19-0);th1=100000*(time111-0)+10000*(time112-0)+1000*(time114-0)+100*(time115-0)+10*(time117-0)+(time118-0);ty2=10000000*(time20-0)+1000000*(time21-0)+100000*(time22-0)+10000*(time23-0)+1000*(time25-0)+100*(time26-0)+10*(time28-0)+(time29-0);th2=100000*(time211-0)+10000*(time212-0)+1000*(time214-0)+100*(time215-0)+10*(time217-0)+(time218-0);coutDiffTime(ty1,th1,ty2,th2)endl;Time=DiffTime(ty1,th1,ty2,th2);class Auto:public Car /小型车类private:double prize;double Outvalue;public:Auto(int pos=0,string num=0,string name=No name,double outvalue=0):Car(pos,num,name)Outvalue=outvalue;prize=Outvalue*3;double Outmoney()Money=Time*prize;return Money;double GetOutvalue()return Outvalue;double Getprize()return prize;class Carriage:public Car /客车类private:int Capacity;double prize;public:Carriage(int pos=0,string num=0,string name=No name,int capacity=0):Car(pos,num,name)Capacity=capacity;prize=sqrt(Capacity); double Outmoney()Money=Time*prize;return Money;double Getprize()return prize;int GetCapacity()return Capacity;class Truck:public Car /货车类private:int Heavy;double prize;public:Truck(int pos=0,string num=0,string name=No name,int heavy=0):Car(pos,num,name)Heavy=heavy;prize=Heavy*2;double Outmoney()Money=Time*prize;return Money;double Getprize()return prize;double GetHeavy()return Heavy;2、code源文件#include #include#include #include #include void code()ifstream infile(code.txt,ios:in|ios:nocreate);if(!infile)cout未找到密码文件,请重新确认n;exit(1);char c6=0,d6=0;int sel=1,i;infile.getline(d,8);cout请输入密码(初始密码为000000):endl;while(sel)for(i=0;i=0&ci=a&ci=A&ci=Z) putchar(*); coutendl;if(c0=d0&c1=d1&c2=d2&c3=d3&c4=d4&c5=d5)coutendlendlendlendlendl 密码通过!endl;Beep(523,200);Beep(659,300);Beep(784,300);Beep(1060,300);sel=0;elsecout密码错误,请重新输入:endl;infile.close(); system(cls);void codechange()system(cls);char c6=0,d6=0;int sel=1,i;ifstream infile(code.txt,ios:in|ios:nocreate);infile.getline(d,8);cout请输入原密码:endl;for(i=0;i=0&ci=a&ci=A&ci=Z) putchar(*); if(c0=d0&c1=d1&c2=d2&c3=d3&c4=d4&c5=d5)coutendl 原密码正确endl;char count16,count26;cout 请输入新密码:endl;for(i=0;i=0&count1i=a&count1i=A&count1i=Z) putchar(*); coutendl 请再次输入心密码:endl;for(i=0;i=0&count2i=a&count2i=A&count2i=Z) putchar(*); coutendl;if(count10=count20&count11=count21&count12=count22&count13=count23&count14=count24&count15=count25) infile.close();ofstream dfile(code.txt);for(i=0;i6;i+)dfilecount1i;dfile.close();cout密码修改成功!endl; system(cls);Beep(523,200);Beep(659,300);Beep(784,300);Beep(1060,300);sel=0;else cout密码修改失败,两次输入不一致endl;else cout密码错误,密码修改失败endl;3、main#include #include#include#include#include #include#include #include#include#include #includecar.husing namespace std;Auto r131;Carriage r231;Truck r331;int vehicle;void fun11();void fun12();void fun13();void fun1();void fun2();void fun3();void fun31();void fun32();void fun3();void fun4();void codechange(); void code();void funsave();void read();int main() code();int sel=1;read();while(sel)cout-endl;cout* *endl;cout 欢迎进入停车场管理程序 endl;cout* *endl;cout-endl;coutendlendl;cout请选择您的操作:endlendl;cout 1.进站车辆;endl;cout 2.出站车辆;endl;cout 3.查找信息;endl;cout 4.显示所有车辆信息;endl;cout 5.修改密码;endl;cout 0.退出;endl;couts1;cout=0 & s1=5) switch(s1)case 1:fun1();break; /增加车辆case 2:fun2();break; /出站车辆case 3:fun3();break; /查找信息case 4:fun4();break; /显示所有case 5:codechange();break; /修改密码case 0:funsave();sel=0;break; /退出elsecout输入错误,请重新输入!endl;system(cls);return 0;void fun11() /轿车类 if(vehicle=30)cout车位已满endl;elseint i;char y;for(i=1;i31;i+)if(r1i.GetPos()=0&r2i.GetPos()=0&r3i.GetPos()=0)break;string num;string name;int outvalue; cout请输入车牌号:num;cout请输入车主姓名:name;cout请输入排量:outvalue;cout登陆成功,您的车位为:i 确认请按Y:y;Auto u(i,num,name,outvalue);u.Stime();r1i=u;vehicle+;system(cls);void fun12() /客车if(vehicle=30)cout车位已满endl;elseint i;for(i=1;i31;i+)if(r1i.GetPos()=0&r2i.GetPos()=0&r3i.GetPos()=0)break; string num;string name;int capacity; cout请输入车牌号:num;cout请输入车主姓名:name;cout请输入载客量:capacity;cout登陆成功,您的车位为:i 确认请按Y:y;Carriage u(i,num,name,capacity);u.Stime();r2i=u;vehicle+;system(cls);void fun13() /货车if(vehicle=30)cout车位已满endl;elseint i;for(i=1;i31;i+)if(r1i.GetPos()=0&r2i.GetPos()=0&r3i.GetPos()=0)break;string num;string name;int heavy; cout请输入车牌号:num;cout请输入车主姓名:name;cout请输入载重量:heavy;cout登陆成功,您的车位为:i 确认请按Y:y;Truck u(i,num,name,heavy);u.Stime();r3i=u;vehicle+;system(cls);void fun1() system(cls);int s1=1;cout 欢迎进入车辆登入界面!endlendl;while(s1)cout 请选择登入车辆的类型:endl;cout 1.小型车;endl;cout 2.客车;endl;cout 3.货车;endl;cout 0.返回;s1;if(s1=0 & s1=3)switch(s1)case 1:fun11();s1=0;break;case 2:fun12();s1=0;break;case 3:fun13();s1=0;break;case 0:break;elsecout输入错误,请重新输入!endl;void fun2() /登出int i;system(cls); cout欢迎进入登出界面endlendl;cout请输入车位号i; if(r1i.GetPos()!=0)r1i.SetPos();r1i.Ftime();r1i.setTime();cout您驻入的时间为:r1i.GetTime()小时 需缴费int(r1i.Outmoney()元endl;cout欢迎下次光临,祝您旅途愉快!endl;vehicle-;if(r2i.GetPos()!=0)r2i.SetPos();r2i.Ftime();r2i.setTime();cout您驻入的时间为:r2i.GetTime()小时 需缴费int(r2i.Outmoney()元endl;cout欢迎下次光临,祝您旅途愉快!endl;vehicle-;if(r3i.GetPos()!=0)r3i.SetPos();r3i.Ftime();r3i.setTime();cout您驻入的时间为:r3i.GetTime()小时 需缴费int(r3i.Outmoney()元endl;cout欢迎下次光临,祝您旅途愉快!endl;vehicle-;void fun31()int i;cout请输入车位号:i; if(r1i.GetPos()!=0)coutendl;r1i.show(); if(r2i.GetPos()!=0)coutendl;r2i.show(); if(r3i.GetPos()!=0)coutendl;r3i.show();cout 返回请按0endl;void fun32() string m;cout请输入车牌号:m;for(int i=1;i31;i+)if(r1i.GetNum()=m)coutendl;r1i.show();if(r2i.GetNum()=m)coutendl;r2i.show();if(r3i.GetNum()=m)coutendl;r3i.show();cout 返回请按0endl;void fun3() /查找int s1=1;system(cls);cout欢迎进入查找界面endl; cout请选择查找方式:endl;cout1、按车位查找;endl;cout2、按车牌号查找;endl;cout0、退出;s1; switch(s1)case 1:fun31();break;case 2:fun32();break;case 0:break;system(cls);void fun4() /显示所有system(cls);int i=0;for(i=1;i31;i+)if(r1i.GetPos()!=0)r1i.show();if(r2i.GetPos()!=0)r2i.show();if(r3i.GetPos()!=0)r3i.show();cout确认请按Yy; system(cls);void funsave() /信息的保存 fstream in(myfile.txt); if(!in)coutwrongendl; int i;for(i=1;i31;i+)if(r1i.GetPos()!=0)in1000+r1i.GetPos()*r1i.GetNum()*r1i.GetName()*r1i.time1*r1i.GetOutvalue()*r1i.Getprize()*endl;for(i=1;i31;i+)if(r2i.GetPos()!=0)in2000+r2i.GetPos()*r2i.GetNum()*r2i.GetName()*r2i.time1*r2i.GetCapacity()*r2i.Getprize()*endl;for(i=1;i31;i+)if(r3i.GetPos()!=0)in3000+r3i.GetPos()*r3i.GetNum()*r3i.GetName()*r3i.time1*r3i.GetHeavy()*r3i.Getprize()*endl; cout信息已储存!endl;in.close(); void read() /读取vehicle=-1;ifstream out(myfile.txt);char u90,temp70;int i=0,m=0,sum=0; while(!out.eof()out.getline(u,90);sum+=strlen(u)+2;out.seekg(sum,ios:beg);vehicle+;if(u0=1) /Autoint pos1;string num1;string name1;char time1130;double outvalue1;i=0;pos1=(u2-0)*10+(u3-0); / 车位while(ui!=*)i+;i+; m=0;for(;ui!=*;i+)tempm=ui;m+;tempm=0;num1=temp; /车牌照m=0; i+;for(;ui!=*;i+)tempm=ui;m+; tempm=0;name1=temp; /车主名m=0;i+; for(;ui!=*;i+)tempm=ui;m+; tempm=0;strcpy(time11,temp); /timem=0;i+; for(;ui!=*;i+)tempm=ui;m+; tempm=0;char *pEnd; outvalue1=strtod(temp,&pEnd); /outvalueAuto u(pos1,num1,name1,outvalue1);u.SetStime(time11);r1pos1=u;if(u0=2) /Carriageint pos1;string num1;string name1;char time1130;int capacity1;double capacity;i=0;pos1=(u2-0)*10+(u3-0); / 车位while(ui!=*)i+;i+; m=0;for(;ui!=*;i+)tempm=ui;m+;tempm=0;num1=temp; /车牌照m=0; i+;for(;ui!=*;i+)tempm=ui;m+; tempm=0;name1=temp; /车主名m=0;i+; for(;ui!=*;i+)tempm=ui;m+; tempm=0;strcpy(time11,temp); /timem=0;i+; for(;ui!=*;i+)tempm=ui;m+; tempm=0;char *pEnd; capacity=strtod(temp,&pEnd); /capacitycapacity1=int(capacity);Carriag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现场工人培训课件
- 2025年海上风力发电场运维管理设备故障诊断与创新技术探索报告
- 2025年基因检测在遗传性肿瘤流行病学调查中的应用前景报告
- 2025年家具制造业个性化定制生产模式下的定制家具行业市场风险与应对策略研究
- 2025年环境影响评价公众参与政策法规解读与应用报告
- 现代礼仪知识培训课件
- 2026届上海市鲁迅中学化学高一第一学期期中学业质量监测模拟试题含解析
- 现代殡葬知识培训课件
- 浙江省温州市苍南县巨人中学2026届高三化学第一学期期中质量跟踪监视试题含解析
- 2025年英语四六级考试听力对话理解专项训练模拟试卷
- 微电网的总体结构
- DB53-T 1119-2022石林彝族(撒尼)刺绣技法-(高清最新)
- 辽宁省盘锦市各县区乡镇行政村村庄村名居民村民委员会明细
- 喷砂检验报告
- 原材料来料检验报告
- 相关方需求和期望分析表
- PCB板来料检验规范
- 诺如病毒感染暴发调查和预防控制技术指南(2023版)
- 教师入职审批登记表
- 教案《冷冲压工艺及模具设计》
- 《职业病危害告知卡》
评论
0/150
提交评论